1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-17 21:35:44 +03:00

Removed OSD_SLAVE defines.

This commit is contained in:
mikeller 2018-08-23 23:03:22 +12:00
parent a02e1dd384
commit 6a77c5f576
9 changed files with 23 additions and 216 deletions

View file

@ -61,9 +61,7 @@
#include "sensors/battery.h" #include "sensors/battery.h"
#include "sensors/gyro.h" #include "sensors/gyro.h"
#ifndef USE_OSD_SLAVE
pidProfile_t *currentPidProfile; pidProfile_t *currentPidProfile;
#endif
#ifndef RX_SPI_DEFAULT_PROTOCOL #ifndef RX_SPI_DEFAULT_PROTOCOL
#define RX_SPI_DEFAULT_PROTOCOL 0 #define RX_SPI_DEFAULT_PROTOCOL 0
@ -89,7 +87,6 @@ PG_RESET_TEMPLATE(systemConfig_t, systemConfig,
.boardIdentifier = TARGET_BOARD_IDENTIFIER .boardIdentifier = TARGET_BOARD_IDENTIFIER
); );
#ifndef USE_OSD_SLAVE
uint8_t getCurrentPidProfileIndex(void) uint8_t getCurrentPidProfileIndex(void)
{ {
return systemConfig()->pidProfileIndex; return systemConfig()->pidProfileIndex;
@ -109,7 +106,6 @@ uint16_t getCurrentMinthrottle(void)
{ {
return motorConfig()->minthrottle; return motorConfig()->minthrottle;
} }
#endif // USE_OSD_SLAVE
void resetConfigs(void) void resetConfigs(void)
{ {
@ -122,7 +118,6 @@ void resetConfigs(void)
static void activateConfig(void) static void activateConfig(void)
{ {
#ifndef USE_OSD_SLAVE
loadPidProfile(); loadPidProfile();
loadControlRateProfile(); loadControlRateProfile();
@ -139,7 +134,6 @@ static void activateConfig(void)
accInitFilters(); accInitFilters();
imuConfigure(throttleCorrectionConfig()->throttle_correction_angle, throttleCorrectionConfig()->throttle_correction_value); imuConfigure(throttleCorrectionConfig()->throttle_correction_angle, throttleCorrectionConfig()->throttle_correction_value);
#endif // USE_OSD_SLAVE
#ifdef USE_LED_STRIP #ifdef USE_LED_STRIP
reevaluateLedConfig(); reevaluateLedConfig();
@ -148,7 +142,7 @@ static void activateConfig(void)
static void validateAndFixConfig(void) static void validateAndFixConfig(void)
{ {
#if !defined(USE_QUAD_MIXER_ONLY) && !defined(USE_OSD_SLAVE) #if !defined(USE_QUAD_MIXER_ONLY)
// Reset unsupported mixer mode to default. // Reset unsupported mixer mode to default.
// This check will be gone when motor/servo mixers are loaded dynamically // This check will be gone when motor/servo mixers are loaded dynamically
// by configurator as a part of configuration procedure. // by configurator as a part of configuration procedure.
@ -177,7 +171,6 @@ static void validateAndFixConfig(void)
featureDisable(FEATURE_GPS); featureDisable(FEATURE_GPS);
} }
#ifndef USE_OSD_SLAVE
if (systemConfig()->activeRateProfile >= CONTROL_RATE_PROFILE_COUNT) { if (systemConfig()->activeRateProfile >= CONTROL_RATE_PROFILE_COUNT) {
systemConfigMutable()->activeRateProfile = 0; systemConfigMutable()->activeRateProfile = 0;
} }
@ -304,7 +297,6 @@ static void validateAndFixConfig(void)
removeModeActivationCondition(BOXGPSRESCUE); removeModeActivationCondition(BOXGPSRESCUE);
} }
} }
#endif // USE_OSD_SLAVE
#if defined(USE_ESC_SENSOR) #if defined(USE_ESC_SENSOR)
if (!findSerialPortConfig(FUNCTION_ESC_SENSOR)) { if (!findSerialPortConfig(FUNCTION_ESC_SENSOR)) {
@ -409,7 +401,6 @@ static void validateAndFixConfig(void)
#endif #endif
} }
#ifndef USE_OSD_SLAVE
void validateAndFixGyroConfig(void) void validateAndFixGyroConfig(void)
{ {
#ifdef USE_GYRO_DATA_ANALYSE #ifdef USE_GYRO_DATA_ANALYSE
@ -511,13 +502,10 @@ void validateAndFixGyroConfig(void)
} }
} }
} }
#endif // USE_OSD_SLAVE
bool readEEPROM(void) bool readEEPROM(void)
{ {
#ifndef USE_OSD_SLAVE
suspendRxSignal(); suspendRxSignal();
#endif
// Sanity check, read flash // Sanity check, read flash
bool success = loadEEPROM(); bool success = loadEEPROM();
@ -526,9 +514,7 @@ bool readEEPROM(void)
activateConfig(); activateConfig();
#ifndef USE_OSD_SLAVE
resumeRxSignal(); resumeRxSignal();
#endif
return success; return success;
} }
@ -537,15 +523,11 @@ void writeEEPROM(void)
{ {
validateAndFixConfig(); validateAndFixConfig();
#ifndef USE_OSD_SLAVE
suspendRxSignal(); suspendRxSignal();
#endif
writeConfigToEEPROM(); writeConfigToEEPROM();
#ifndef USE_OSD_SLAVE
resumeRxSignal(); resumeRxSignal();
#endif
} }
void writeEEPROMWithFeatures(uint32_t features) void writeEEPROMWithFeatures(uint32_t features)
@ -580,7 +562,6 @@ void saveConfigAndNotify(void)
beeperConfirmationBeeps(1); beeperConfirmationBeeps(1);
} }
#ifndef USE_OSD_SLAVE
void changePidProfile(uint8_t pidProfileIndex) void changePidProfile(uint8_t pidProfileIndex)
{ {
if (pidProfileIndex < MAX_PROFILE_COUNT) { if (pidProfileIndex < MAX_PROFILE_COUNT) {
@ -590,4 +571,3 @@ void changePidProfile(uint8_t pidProfileIndex)
beeperConfirmationBeeps(pidProfileIndex + 1); beeperConfirmationBeeps(pidProfileIndex + 1);
} }
#endif

View file

@ -127,13 +127,11 @@ void HardFault_Handler(void)
{ {
LED2_ON; LED2_ON;
#ifndef USE_OSD_SLAVE
// fall out of the sky // fall out of the sky
uint8_t requiredStateForMotors = SYSTEM_STATE_CONFIG_LOADED | SYSTEM_STATE_MOTORS_READY; uint8_t requiredStateForMotors = SYSTEM_STATE_CONFIG_LOADED | SYSTEM_STATE_MOTORS_READY;
if ((systemState & requiredStateForMotors) == requiredStateForMotors) { if ((systemState & requiredStateForMotors) == requiredStateForMotors) {
stopMotors(); stopMotors();
} }
#endif
#ifdef USE_TRANSPONDER #ifdef USE_TRANSPONDER
// prevent IR LEDs from burning out. // prevent IR LEDs from burning out.

View file

@ -551,11 +551,11 @@ void init(void)
cmsInit(); cmsInit();
#endif #endif
#if (defined(USE_OSD) || (defined(USE_MSP_DISPLAYPORT) && defined(USE_CMS)) || defined(USE_OSD_SLAVE)) #if (defined(USE_OSD) || (defined(USE_MSP_DISPLAYPORT) && defined(USE_CMS)))
displayPort_t *osdDisplayPort = NULL; displayPort_t *osdDisplayPort = NULL;
#endif #endif
#if defined(USE_OSD) && !defined(USE_OSD_SLAVE) #if defined(USE_OSD)
//The OSD need to be initialised after GYRO to avoid GYRO initialisation failure on some targets //The OSD need to be initialised after GYRO to avoid GYRO initialisation failure on some targets
if (featureIsEnabled(FEATURE_OSD)) { if (featureIsEnabled(FEATURE_OSD)) {
@ -570,15 +570,6 @@ void init(void)
} }
#endif #endif
#if defined(USE_OSD_SLAVE) && !defined(USE_OSD)
#if defined(USE_MAX7456)
// If there is a max7456 chip for the OSD then use it
osdDisplayPort = max7456DisplayPortInit(vcdProfile());
// osdInit will register with CMS by itself.
osdSlaveInit(osdDisplayPort);
#endif
#endif
#if defined(USE_CMS) && defined(USE_MSP_DISPLAYPORT) #if defined(USE_CMS) && defined(USE_MSP_DISPLAYPORT)
// If BFOSD is not active, then register MSP_DISPLAYPORT as a CMS device. // If BFOSD is not active, then register MSP_DISPLAYPORT as a CMS device.
if (!osdDisplayPort) if (!osdDisplayPort)

View file

@ -119,16 +119,6 @@ static void taskMain(timeUs_t currentTimeUs)
#endif #endif
} }
#ifdef USE_OSD_SLAVE
static bool taskSerialCheck(timeUs_t currentTimeUs, timeDelta_t currentDeltaTimeUs)
{
UNUSED(currentTimeUs);
UNUSED(currentDeltaTimeUs);
return mspSerialWaiting();
}
#endif
static void taskHandleSerial(timeUs_t currentTimeUs) static void taskHandleSerial(timeUs_t currentTimeUs)
{ {
UNUSED(currentTimeUs); UNUSED(currentTimeUs);
@ -145,11 +135,7 @@ static void taskHandleSerial(timeUs_t currentTimeUs)
return; return;
} }
#endif #endif
#ifndef OSD_SLAVE
bool evaluateMspData = ARMING_FLAG(ARMED) ? MSP_SKIP_NON_MSP_DATA : MSP_EVALUATE_NON_MSP_DATA; bool evaluateMspData = ARMING_FLAG(ARMED) ? MSP_SKIP_NON_MSP_DATA : MSP_EVALUATE_NON_MSP_DATA;
#else
bool evaluateMspData = osdSlaveIsLocked ? MSP_SKIP_NON_MSP_DATA : MSP_EVALUATE_NON_MSP_DATA;;
#endif
mspSerialProcess(evaluateMspData, mspFcProcessCommand, mspFcProcessReply); mspSerialProcess(evaluateMspData, mspFcProcessCommand, mspFcProcessReply);
} }
@ -163,7 +149,6 @@ static void taskBatteryAlerts(timeUs_t currentTimeUs)
batteryUpdateAlarms(); batteryUpdateAlarms();
} }
#ifndef USE_OSD_SLAVE
static void taskUpdateAccelerometer(timeUs_t currentTimeUs) static void taskUpdateAccelerometer(timeUs_t currentTimeUs)
{ {
accUpdate(currentTimeUs, &accelerometerConfigMutable()->accelerometerTrims); accUpdate(currentTimeUs, &accelerometerConfigMutable()->accelerometerTrims);
@ -190,7 +175,6 @@ static void taskUpdateRxMain(timeUs_t currentTimeUs)
updateRcCommands(); updateRcCommands();
updateArmingStatus(); updateArmingStatus();
} }
#endif
#ifdef USE_BARO #ifdef USE_BARO
static void taskUpdateBaro(timeUs_t currentTimeUs) static void taskUpdateBaro(timeUs_t currentTimeUs)
@ -248,11 +232,7 @@ void fcTasksInit(void)
setTaskEnabled(TASK_BATTERY_VOLTAGE, useBatteryVoltage); setTaskEnabled(TASK_BATTERY_VOLTAGE, useBatteryVoltage);
const bool useBatteryCurrent = batteryConfig()->currentMeterSource != CURRENT_METER_NONE; const bool useBatteryCurrent = batteryConfig()->currentMeterSource != CURRENT_METER_NONE;
setTaskEnabled(TASK_BATTERY_CURRENT, useBatteryCurrent); setTaskEnabled(TASK_BATTERY_CURRENT, useBatteryCurrent);
#ifdef USE_OSD_SLAVE
const bool useBatteryAlerts = batteryConfig()->useVBatAlerts || batteryConfig()->useConsumptionAlerts;
#else
const bool useBatteryAlerts = batteryConfig()->useVBatAlerts || batteryConfig()->useConsumptionAlerts || featureIsEnabled(FEATURE_OSD); const bool useBatteryAlerts = batteryConfig()->useVBatAlerts || batteryConfig()->useConsumptionAlerts || featureIsEnabled(FEATURE_OSD);
#endif
setTaskEnabled(TASK_BATTERY_ALERTS, (useBatteryVoltage || useBatteryCurrent) && useBatteryAlerts); setTaskEnabled(TASK_BATTERY_ALERTS, (useBatteryVoltage || useBatteryCurrent) && useBatteryAlerts);
#ifdef USE_TRANSPONDER #ifdef USE_TRANSPONDER
@ -263,9 +243,6 @@ void fcTasksInit(void)
setTaskEnabled(TASK_STACK_CHECK, true); setTaskEnabled(TASK_STACK_CHECK, true);
#endif #endif
#ifdef USE_OSD_SLAVE
setTaskEnabled(TASK_OSD_SLAVE, osdSlaveInitialized());
#else
if (sensors(SENSOR_GYRO)) { if (sensors(SENSOR_GYRO)) {
rescheduleTask(TASK_GYROPID, gyro.targetLooptime); rescheduleTask(TASK_GYROPID, gyro.targetLooptime);
setTaskEnabled(TASK_GYROPID, true); setTaskEnabled(TASK_GYROPID, true);
@ -284,21 +261,27 @@ void fcTasksInit(void)
#ifdef USE_BEEPER #ifdef USE_BEEPER
setTaskEnabled(TASK_BEEPER, true); setTaskEnabled(TASK_BEEPER, true);
#endif #endif
#ifdef USE_GPS #ifdef USE_GPS
setTaskEnabled(TASK_GPS, featureIsEnabled(FEATURE_GPS)); setTaskEnabled(TASK_GPS, featureIsEnabled(FEATURE_GPS));
#endif #endif
#ifdef USE_MAG #ifdef USE_MAG
setTaskEnabled(TASK_COMPASS, sensors(SENSOR_MAG)); setTaskEnabled(TASK_COMPASS, sensors(SENSOR_MAG));
#endif #endif
#ifdef USE_BARO #ifdef USE_BARO
setTaskEnabled(TASK_BARO, sensors(SENSOR_BARO)); setTaskEnabled(TASK_BARO, sensors(SENSOR_BARO));
#endif #endif
#if defined(USE_BARO) || defined(USE_GPS) #if defined(USE_BARO) || defined(USE_GPS)
setTaskEnabled(TASK_ALTITUDE, sensors(SENSOR_BARO) || featureIsEnabled(FEATURE_GPS)); setTaskEnabled(TASK_ALTITUDE, sensors(SENSOR_BARO) || featureIsEnabled(FEATURE_GPS));
#endif #endif
#ifdef USE_DASHBOARD #ifdef USE_DASHBOARD
setTaskEnabled(TASK_DASHBOARD, featureIsEnabled(FEATURE_DASHBOARD)); setTaskEnabled(TASK_DASHBOARD, featureIsEnabled(FEATURE_DASHBOARD));
#endif #endif
#ifdef USE_TELEMETRY #ifdef USE_TELEMETRY
if (featureIsEnabled(FEATURE_TELEMETRY)) { if (featureIsEnabled(FEATURE_TELEMETRY)) {
setTaskEnabled(TASK_TELEMETRY, true); setTaskEnabled(TASK_TELEMETRY, true);
@ -311,27 +294,35 @@ void fcTasksInit(void)
} }
} }
#endif #endif
#ifdef USE_LED_STRIP #ifdef USE_LED_STRIP
setTaskEnabled(TASK_LEDSTRIP, featureIsEnabled(FEATURE_LED_STRIP)); setTaskEnabled(TASK_LEDSTRIP, featureIsEnabled(FEATURE_LED_STRIP));
#endif #endif
#ifdef USE_TRANSPONDER #ifdef USE_TRANSPONDER
setTaskEnabled(TASK_TRANSPONDER, featureIsEnabled(FEATURE_TRANSPONDER)); setTaskEnabled(TASK_TRANSPONDER, featureIsEnabled(FEATURE_TRANSPONDER));
#endif #endif
#ifdef USE_OSD #ifdef USE_OSD
setTaskEnabled(TASK_OSD, featureIsEnabled(FEATURE_OSD) && osdInitialized()); setTaskEnabled(TASK_OSD, featureIsEnabled(FEATURE_OSD) && osdInitialized());
#endif #endif
#ifdef USE_BST #ifdef USE_BST
setTaskEnabled(TASK_BST_MASTER_PROCESS, true); setTaskEnabled(TASK_BST_MASTER_PROCESS, true);
#endif #endif
#ifdef USE_ESC_SENSOR #ifdef USE_ESC_SENSOR
setTaskEnabled(TASK_ESC_SENSOR, featureIsEnabled(FEATURE_ESC_SENSOR)); setTaskEnabled(TASK_ESC_SENSOR, featureIsEnabled(FEATURE_ESC_SENSOR));
#endif #endif
#ifdef USE_ADC_INTERNAL #ifdef USE_ADC_INTERNAL
setTaskEnabled(TASK_ADC_INTERNAL, true); setTaskEnabled(TASK_ADC_INTERNAL, true);
#endif #endif
#ifdef USE_PINIOBOX #ifdef USE_PINIOBOX
setTaskEnabled(TASK_PINIOBOX, true); setTaskEnabled(TASK_PINIOBOX, true);
#endif #endif
#ifdef USE_CMS #ifdef USE_CMS
#ifdef USE_MSP_DISPLAYPORT #ifdef USE_MSP_DISPLAYPORT
setTaskEnabled(TASK_CMS, true); setTaskEnabled(TASK_CMS, true);
@ -339,18 +330,20 @@ void fcTasksInit(void)
setTaskEnabled(TASK_CMS, featureIsEnabled(FEATURE_OSD) || featureIsEnabled(FEATURE_DASHBOARD)); setTaskEnabled(TASK_CMS, featureIsEnabled(FEATURE_OSD) || featureIsEnabled(FEATURE_DASHBOARD));
#endif #endif
#endif #endif
#ifdef USE_VTX_CONTROL #ifdef USE_VTX_CONTROL
#if defined(USE_VTX_RTC6705) || defined(USE_VTX_SMARTAUDIO) || defined(USE_VTX_TRAMP) #if defined(USE_VTX_RTC6705) || defined(USE_VTX_SMARTAUDIO) || defined(USE_VTX_TRAMP)
setTaskEnabled(TASK_VTXCTRL, true); setTaskEnabled(TASK_VTXCTRL, true);
#endif #endif
#endif #endif
#ifdef USE_CAMERA_CONTROL #ifdef USE_CAMERA_CONTROL
setTaskEnabled(TASK_CAMCTRL, true); setTaskEnabled(TASK_CAMCTRL, true);
#endif #endif
#ifdef USE_RCDEVICE #ifdef USE_RCDEVICE
setTaskEnabled(TASK_RCDEVICE, rcdeviceIsEnabled()); setTaskEnabled(TASK_RCDEVICE, rcdeviceIsEnabled());
#endif #endif
#endif
} }
cfTask_t cfTasks[TASK_COUNT] = { cfTask_t cfTasks[TASK_COUNT] = {
@ -373,14 +366,8 @@ cfTask_t cfTasks[TASK_COUNT] = {
[TASK_SERIAL] = { [TASK_SERIAL] = {
.taskName = "SERIAL", .taskName = "SERIAL",
.taskFunc = taskHandleSerial, .taskFunc = taskHandleSerial,
#ifdef USE_OSD_SLAVE
.checkFunc = taskSerialCheck,
.desiredPeriod = TASK_PERIOD_HZ(100),
.staticPriority = TASK_PRIORITY_REALTIME,
#else
.desiredPeriod = TASK_PERIOD_HZ(100), // 100 Hz should be enough to flush up to 115 bytes @ 115200 baud .desiredPeriod = TASK_PERIOD_HZ(100), // 100 Hz should be enough to flush up to 115 bytes @ 115200 baud
.staticPriority = TASK_PRIORITY_LOW, .staticPriority = TASK_PRIORITY_LOW,
#endif
}, },
[TASK_BATTERY_ALERTS] = { [TASK_BATTERY_ALERTS] = {
@ -421,17 +408,6 @@ cfTask_t cfTasks[TASK_COUNT] = {
}, },
#endif #endif
#ifdef USE_OSD_SLAVE
[TASK_OSD_SLAVE] = {
.taskName = "OSD_SLAVE",
.checkFunc = osdSlaveCheck,
.taskFunc = osdSlaveUpdate,
.desiredPeriod = TASK_PERIOD_HZ(60), // 60 Hz
.staticPriority = TASK_PRIORITY_HIGH,
},
#else
[TASK_GYROPID] = { [TASK_GYROPID] = {
.taskName = "PID", .taskName = "PID",
.subTaskName = "GYRO", .subTaskName = "GYRO",
@ -621,5 +597,4 @@ cfTask_t cfTasks[TASK_COUNT] = {
.staticPriority = TASK_PRIORITY_IDLE .staticPriority = TASK_PRIORITY_IDLE
}, },
#endif #endif
#endif
}; };

View file

@ -147,9 +147,7 @@ typedef struct pidProfile_s {
uint8_t abs_control_error_limit; // Limit to the accumulated error uint8_t abs_control_error_limit; // Limit to the accumulated error
} pidProfile_t; } pidProfile_t;
#ifndef USE_OSD_SLAVE
PG_DECLARE_ARRAY(pidProfile_t, MAX_PROFILE_COUNT, pidProfiles); PG_DECLARE_ARRAY(pidProfile_t, MAX_PROFILE_COUNT, pidProfiles);
#endif
typedef struct pidConfig_s { typedef struct pidConfig_s {
uint8_t pid_process_denom; // Processing denominator for PID controller vs gyro sampling rate uint8_t pid_process_denom; // Processing denominator for PID controller vs gyro sampling rate

View file

@ -142,8 +142,6 @@ enum {
static uint8_t rebootMode; static uint8_t rebootMode;
#ifndef USE_OSD_SLAVE
typedef enum { typedef enum {
MSP_SDCARD_STATE_NOT_PRESENT = 0, MSP_SDCARD_STATE_NOT_PRESENT = 0,
MSP_SDCARD_STATE_FATAL = 1, MSP_SDCARD_STATE_FATAL = 1,
@ -162,7 +160,6 @@ typedef enum {
} mspFlashFsFlags_e; } mspFlashFsFlags_e;
#define RATEPROFILE_MASK (1 << 7) #define RATEPROFILE_MASK (1 << 7)
#endif //USE_OSD_SLAVE
#define RTC_NOT_SUPPORTED 0xff #define RTC_NOT_SUPPORTED 0xff
@ -242,9 +239,7 @@ static void mspRebootFn(serialPort_t *serialPort)
{ {
UNUSED(serialPort); UNUSED(serialPort);
#ifndef USE_OSD_SLAVE
stopPwmAllMotors(); stopPwmAllMotors();
#endif
switch (rebootMode) { switch (rebootMode) {
case MSP_REBOOT_FIRMWARE: case MSP_REBOOT_FIRMWARE:
@ -270,7 +265,6 @@ static void mspRebootFn(serialPort_t *serialPort)
while (true) ; while (true) ;
} }
#ifndef USE_OSD_SLAVE
static void serializeSDCardSummaryReply(sbuf_t *dst) static void serializeSDCardSummaryReply(sbuf_t *dst)
{ {
#ifdef USE_SDCARD #ifdef USE_SDCARD
@ -434,7 +428,6 @@ static void serializeDataflashReadReply(sbuf_t *dst, uint32_t address, const uin
} }
} }
#endif // USE_FLASHFS #endif // USE_FLASHFS
#endif // USE_OSD_SLAVE
/* /*
* Returns true if the command was processd, false otherwise. * Returns true if the command was processd, false otherwise.
@ -469,14 +462,10 @@ static bool mspCommonProcessOutCommand(uint8_t cmdMSP, sbuf_t *dst, mspPostProce
#else #else
sbufWriteU16(dst, 0); // No other build targets currently have hardware revision detection. sbufWriteU16(dst, 0); // No other build targets currently have hardware revision detection.
#endif #endif
#ifdef USE_OSD_SLAVE
sbufWriteU8(dst, 1); // 1 == OSD
#else
#if defined(USE_OSD) && defined(USE_MAX7456) #if defined(USE_OSD) && defined(USE_MAX7456)
sbufWriteU8(dst, 2); // 2 == FC with OSD sbufWriteU8(dst, 2); // 2 == FC with OSD
#else #else
sbufWriteU8(dst, 0); // 0 == FC sbufWriteU8(dst, 0); // 0 == FC
#endif
#endif #endif
// Board communication capabilities (uint8) // Board communication capabilities (uint8)
// Bit 0: 1 iff the board has VCP // Bit 0: 1 iff the board has VCP
@ -523,11 +512,7 @@ static bool mspCommonProcessOutCommand(uint8_t cmdMSP, sbuf_t *dst, mspPostProce
case MSP_ANALOG: case MSP_ANALOG:
sbufWriteU8(dst, (uint8_t)constrain(getBatteryVoltage(), 0, 255)); sbufWriteU8(dst, (uint8_t)constrain(getBatteryVoltage(), 0, 255));
sbufWriteU16(dst, (uint16_t)constrain(getMAhDrawn(), 0, 0xFFFF)); // milliamp hours drawn from battery sbufWriteU16(dst, (uint16_t)constrain(getMAhDrawn(), 0, 0xFFFF)); // milliamp hours drawn from battery
#ifdef USE_OSD_SLAVE
sbufWriteU16(dst, 0); // rssi
#else
sbufWriteU16(dst, getRssi()); sbufWriteU16(dst, getRssi());
#endif
sbufWriteU16(dst, (int16_t)constrain(getAmperage(), -0x8000, 0x7FFF)); // send current in 0.01 A steps, range is -320A to 320A sbufWriteU16(dst, (int16_t)constrain(getAmperage(), -0x8000, 0x7FFF)); // send current in 0.01 A steps, range is -320A to 320A
break; break;
@ -699,7 +684,7 @@ static bool mspCommonProcessOutCommand(uint8_t cmdMSP, sbuf_t *dst, mspPostProce
case MSP_OSD_CONFIG: { case MSP_OSD_CONFIG: {
#define OSD_FLAGS_OSD_FEATURE (1 << 0) #define OSD_FLAGS_OSD_FEATURE (1 << 0)
#define OSD_FLAGS_OSD_SLAVE (1 << 1) //#define OSD_FLAGS_OSD_SLAVE (1 << 1)
#define OSD_FLAGS_RESERVED_1 (1 << 2) #define OSD_FLAGS_RESERVED_1 (1 << 2)
#define OSD_FLAGS_RESERVED_2 (1 << 3) #define OSD_FLAGS_RESERVED_2 (1 << 3)
#define OSD_FLAGS_OSD_HARDWARE_MAX_7456 (1 << 4) #define OSD_FLAGS_OSD_HARDWARE_MAX_7456 (1 << 4)
@ -708,9 +693,6 @@ static bool mspCommonProcessOutCommand(uint8_t cmdMSP, sbuf_t *dst, mspPostProce
#if defined(USE_OSD) #if defined(USE_OSD)
osdFlags |= OSD_FLAGS_OSD_FEATURE; osdFlags |= OSD_FLAGS_OSD_FEATURE;
#endif #endif
#if defined(USE_OSD_SLAVE)
osdFlags |= OSD_FLAGS_OSD_SLAVE;
#endif
#ifdef USE_MAX7456 #ifdef USE_MAX7456
osdFlags |= OSD_FLAGS_OSD_HARDWARE_MAX_7456; osdFlags |= OSD_FLAGS_OSD_HARDWARE_MAX_7456;
#endif #endif
@ -769,38 +751,6 @@ static bool mspCommonProcessOutCommand(uint8_t cmdMSP, sbuf_t *dst, mspPostProce
return true; return true;
} }
#ifdef USE_OSD_SLAVE
static bool mspProcessOutCommand(uint8_t cmdMSP, sbuf_t *dst)
{
switch (cmdMSP) {
case MSP_STATUS_EX:
case MSP_STATUS:
sbufWriteU16(dst, getTaskDeltaTime(TASK_SERIAL));
#ifdef USE_I2C
sbufWriteU16(dst, i2cGetErrorCounter());
#else
sbufWriteU16(dst, 0);
#endif
sbufWriteU16(dst, 0); // sensors
sbufWriteU32(dst, 0); // flight modes
sbufWriteU8(dst, 0); // profile
sbufWriteU16(dst, constrain(averageSystemLoadPercent, 0, 100));
if (cmdMSP == MSP_STATUS_EX) {
sbufWriteU8(dst, 1); // max profiles
sbufWriteU8(dst, 0); // control rate profile
} else {
sbufWriteU16(dst, 0); // gyro cycle time
}
break;
default:
return false;
}
return true;
}
#else
static bool mspProcessOutCommand(uint8_t cmdMSP, sbuf_t *dst) static bool mspProcessOutCommand(uint8_t cmdMSP, sbuf_t *dst)
{ {
bool unsupportedCommand = false; bool unsupportedCommand = false;
@ -1435,16 +1385,11 @@ static bool mspProcessOutCommand(uint8_t cmdMSP, sbuf_t *dst)
} }
return !unsupportedCommand; return !unsupportedCommand;
} }
#endif // USE_OSD_SLAVE
static mspResult_e mspFcProcessOutCommandWithArg(uint8_t cmdMSP, sbuf_t *src, sbuf_t *dst, mspPostProcessFnPtr *mspPostProcessFn) static mspResult_e mspFcProcessOutCommandWithArg(uint8_t cmdMSP, sbuf_t *src, sbuf_t *dst, mspPostProcessFnPtr *mspPostProcessFn)
{ {
#if defined(USE_OSD_SLAVE)
UNUSED(dst);
#endif
switch (cmdMSP) { switch (cmdMSP) {
#if !defined(USE_OSD_SLAVE)
case MSP_BOXNAMES: case MSP_BOXNAMES:
{ {
const int page = sbufBytesRemaining(src) ? sbufReadU8(src) : 0; const int page = sbufBytesRemaining(src) ? sbufReadU8(src) : 0;
@ -1457,7 +1402,6 @@ static mspResult_e mspFcProcessOutCommandWithArg(uint8_t cmdMSP, sbuf_t *src, sb
serializeBoxReply(dst, page, &serializeBoxPermanentIdFn); serializeBoxReply(dst, page, &serializeBoxPermanentIdFn);
} }
break; break;
#endif
case MSP_REBOOT: case MSP_REBOOT:
if (sbufBytesRemaining(src)) { if (sbufBytesRemaining(src)) {
rebootMode = sbufReadU8(src); rebootMode = sbufReadU8(src);
@ -1555,34 +1499,6 @@ static void mspFcDataFlashReadCommand(sbuf_t *dst, sbuf_t *src)
} }
#endif #endif
#ifdef USE_OSD_SLAVE
static mspResult_e mspProcessInCommand(uint8_t cmdMSP, sbuf_t *src)
{
UNUSED(cmdMSP);
UNUSED(src);
switch(cmdMSP) {
case MSP_RESET_CONF:
resetEEPROM();
readEEPROM();
break;
case MSP_EEPROM_WRITE:
if (featureMaskIsCopied) {
writeEEPROMWithFeatures(featureMaskCopy);
} else {
writeEEPROM();
}
readEEPROM();
break;
default:
// we do not know how to handle the (valid) message, indicate error MSP $M!
return MSP_RESULT_ERROR;
}
return MSP_RESULT_ACK;
}
#else
static mspResult_e mspProcessInCommand(uint8_t cmdMSP, sbuf_t *src) static mspResult_e mspProcessInCommand(uint8_t cmdMSP, sbuf_t *src)
{ {
uint32_t i; uint32_t i;
@ -2403,7 +2319,6 @@ static mspResult_e mspProcessInCommand(uint8_t cmdMSP, sbuf_t *src)
} }
return MSP_RESULT_ACK; return MSP_RESULT_ACK;
} }
#endif // USE_OSD_SLAVE
static mspResult_e mspCommonProcessInCommand(uint8_t cmdMSP, sbuf_t *src, mspPostProcessFnPtr *mspPostProcessFn) static mspResult_e mspCommonProcessInCommand(uint8_t cmdMSP, sbuf_t *src, mspPostProcessFnPtr *mspPostProcessFn)
{ {
@ -2507,7 +2422,7 @@ static mspResult_e mspCommonProcessInCommand(uint8_t cmdMSP, sbuf_t *src, mspPos
batteryConfigMutable()->currentMeterSource = sbufReadU8(src); batteryConfigMutable()->currentMeterSource = sbufReadU8(src);
break; break;
#if defined(USE_OSD) || defined (USE_OSD_SLAVE) #if defined(USE_OSD)
case MSP_SET_OSD_CONFIG: case MSP_SET_OSD_CONFIG:
{ {
const uint8_t addr = sbufReadU8(src); const uint8_t addr = sbufReadU8(src);
@ -2581,7 +2496,7 @@ static mspResult_e mspCommonProcessInCommand(uint8_t cmdMSP, sbuf_t *src, mspPos
#else #else
return MSP_RESULT_ERROR; return MSP_RESULT_ERROR;
#endif #endif
#endif // OSD || USE_OSD_SLAVE #endif // OSD
default: default:
return mspProcessInCommand(cmdMSP, src); return mspProcessInCommand(cmdMSP, src);
@ -2630,7 +2545,6 @@ void mspFcProcessReply(mspPacket_t *reply)
UNUSED(src); // potentially unused depending on compile options. UNUSED(src); // potentially unused depending on compile options.
switch (reply->cmd) { switch (reply->cmd) {
#ifndef OSD_SLAVE
case MSP_ANALOG: case MSP_ANALOG:
{ {
uint8_t batteryVoltage = sbufReadU8(src); uint8_t batteryVoltage = sbufReadU8(src);
@ -2648,50 +2562,10 @@ void mspFcProcessReply(mspPacket_t *reply)
#endif #endif
} }
break; break;
#endif
#ifdef USE_OSD_SLAVE
case MSP_DISPLAYPORT:
{
osdSlaveIsLocked = true; // lock it as soon as a MSP_DISPLAYPORT message is received to prevent accidental CLI/DFU mode.
const int subCmd = sbufReadU8(src);
switch (subCmd) {
case 0: // HEARTBEAT
osdSlaveHeartbeat();
break;
case 1: // RELEASE
break;
case 2: // CLEAR
osdSlaveClearScreen();
break;
case 3:
{
#define MSP_OSD_MAX_STRING_LENGTH 30 // FIXME move this
const uint8_t y = sbufReadU8(src); // row
const uint8_t x = sbufReadU8(src); // column
sbufReadU8(src); // reserved
char buf[MSP_OSD_MAX_STRING_LENGTH + 1];
const int len = MIN(sbufBytesRemaining(src), MSP_OSD_MAX_STRING_LENGTH);
sbufReadData(src, &buf, len);
buf[len] = 0;
osdSlaveWrite(x, y, buf);
}
break;
case 4:
osdSlaveDrawScreen();
break;
}
}
break;
#endif
} }
} }
void mspInit(void) void mspInit(void)
{ {
#ifndef USE_OSD_SLAVE
initActiveBoxIds(); initActiveBoxIds();
#endif
} }

View file

@ -44,7 +44,6 @@
#include "pg/piniobox.h" #include "pg/piniobox.h"
#ifndef USE_OSD_SLAVE
// permanent IDs must uniquely identify BOX meaning, DO NOT REUSE THEM! // permanent IDs must uniquely identify BOX meaning, DO NOT REUSE THEM!
static const box_t boxes[CHECKBOX_ITEM_COUNT] = { static const box_t boxes[CHECKBOX_ITEM_COUNT] = {
{ BOXARM, "ARM", 0 }, { BOXARM, "ARM", 0 },
@ -343,4 +342,3 @@ int packFlightModeFlags(boxBitmask_t *mspFlightModeFlags)
// return count of used bits // return count of used bits
return mspBoxIdx; return mspBoxIdx;
} }
#endif // USE_OSD_SLAVE

View file

@ -166,11 +166,7 @@ static const displayPortVTable_t max7456VTable = {
displayPort_t *max7456DisplayPortInit(const vcdProfile_t *vcdProfile) displayPort_t *max7456DisplayPortInit(const vcdProfile_t *vcdProfile)
{ {
if ( if (
#ifdef USE_OSD_SLAVE
!max7456Init(max7456Config(), vcdProfile, false)
#else
!max7456Init(max7456Config(), vcdProfile, systemConfig()->cpu_overclock) !max7456Init(max7456Config(), vcdProfile, systemConfig()->cpu_overclock)
#endif
) { ) {
return NULL; return NULL;
} }

View file

@ -104,9 +104,6 @@ typedef enum {
#ifdef USE_OSD #ifdef USE_OSD
TASK_OSD, TASK_OSD,
#endif #endif
#ifdef USE_OSD_SLAVE
TASK_OSD_SLAVE,
#endif
#ifdef USE_BST #ifdef USE_BST
TASK_BST_MASTER_PROCESS, TASK_BST_MASTER_PROCESS,
#endif #endif