1
0
Fork 0
mirror of https://github.com/iNavFlight/inav.git synced 2025-07-25 17:25:18 +03:00

Add extra MSP message to get outputs with timer ids

Timer ids are needed to correctly replicate pwm allocation logic in the configurator
This commit is contained in:
Marcelo Bezerra 2023-08-30 23:59:38 +02:00
parent cada1cca14
commit 0d16352fb8
4 changed files with 27 additions and 2 deletions

View file

@ -38,8 +38,20 @@
timHardwareContext_t * timerCtx[HARDWARE_TIMER_DEFINITION_COUNT];
uint8_t timer2id(const HAL_Timer_t *tim)
{
for(int i = 0; i < HARDWARE_TIMER_DEFINITION_COUNT; ++i)
{
if(timerDefinitions[i].tim == tim)
return i;
}
return (uint8_t)-1;
}
#if defined(AT32F43x)
uint8_t lookupTimerIndex(const tmr_type *tim)
uint8_t lookupTimerIndex(const HAL_Timer_t *tim)
{
int i;
@ -54,7 +66,7 @@ uint8_t lookupTimerIndex(const tmr_type *tim)
}
#else
// return index of timer in timer table. Lowest timer has index 0
uint8_t lookupTimerIndex(const TIM_TypeDef *tim)
uint8_t lookupTimerIndex(const HAL_Timer_t *tim)
{
int i;

View file

@ -25,6 +25,8 @@
#include "drivers/rcc_types.h"
#include "drivers/timer_def.h"
#include "platform.h"
#define CC_CHANNELS_PER_TIMER 4 // TIM_Channel_1..4
typedef uint16_t captureCompare_t; // 16 bit on both 103 and 303, just register access must be 32bit sometimes (use timCCR_t)
@ -231,3 +233,5 @@ void timerPWMStopDMA(TCH_t * tch);
bool timerPWMDMAInProgress(TCH_t * tch);
volatile timCCR_t *timerCCR(TCH_t * tch);
uint8_t timer2id(const HAL_Timer_t *tim);

View file

@ -1516,6 +1516,14 @@ static bool mspFcProcessOutCommand(uint16_t cmdMSP, sbuf_t *dst, mspPostProcessF
}
break;
case MSP2_INAV_OUTPUT_MAPPING_EXT:
for (uint8_t i = 0; i < timerHardwareCount; ++i)
if (!(timerHardware[i].usageFlags & (TIM_USE_PPM | TIM_USE_PWM))) {
sbufWriteU8(dst, timer2id(timerHardware[i].tim));
sbufWriteU8(dst, timerHardware[i].usageFlags);
}
break;
case MSP2_INAV_MC_BRAKING:
#ifdef USE_MR_BRAKING_MODE
sbufWriteU16(dst, navConfig()->mc.braking_speed_threshold);

View file

@ -31,6 +31,7 @@
#define MSP2_INAV_OUTPUT_MAPPING 0x200A
#define MSP2_INAV_MC_BRAKING 0x200B
#define MSP2_INAV_SET_MC_BRAKING 0x200C
#define MSP2_INAV_OUTPUT_MAPPING_EXT 0x200D
#define MSP2_INAV_MIXER 0x2010
#define MSP2_INAV_SET_MIXER 0x2011