1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-12 19:10:32 +03:00

Optimize timer index lookup and fix CLI DMA option boundaries

This commit is contained in:
kedeng 2025-07-10 15:09:11 +08:00
parent 80fdbc17fc
commit 4e9fd6550b
5 changed files with 12 additions and 32 deletions

View file

@ -5418,29 +5418,29 @@ static void optToString(int optval, char *buf)
static int getDmaOptDisplayNumber(dmaoptEntry_t *entry, int index)
{
if (entry->peripheral == DMA_PERIPH_TIMUP) {
int uiIndex = timerGetNumberByIndex(index);
if (!(TIM_N(uiIndex) & entry->presenceMask)) {
const int dispNum = timerGetNumberByIndex(index);
if (!(TIM_N(dispNum) & entry->presenceMask)) {
return -1;
}
return uiIndex;
return dispNum;
}
return DMA_OPT_UI_INDEX(index);
}
static int displayNumberToDmaOptIndex(dmaoptEntry_t *entry, int index)
static int displayNumberToDmaOptIndex(dmaoptEntry_t *entry, int dispNum)
{
if (index <= 0) {
if (dispNum < 0) {
return -1;
}
if (entry->peripheral == DMA_PERIPH_TIMUP) {
if (!(entry->presenceMask & TIM_N(index))) {
if (!(entry->presenceMask & TIM_N(dispNum))) {
return -1;
}
return timerGetIndexByNumber(index);
return timerGetIndexByNumber(dispNum);
}
return index > entry->maxIndex ? -1 : index - 1;
return dispNum > entry->maxIndex ? -1 : dispNum - 1;
}
static int dmaOptIndexToPeripheralMappingIndex(dmaoptEntry_t *entry, int index)

View file

@ -286,12 +286,7 @@ int8_t timerGetNumberByIndex(uint8_t index)
int8_t timerGetIndexByNumber(uint8_t number)
{
for (int i = 0; i < USED_TIMER_COUNT; i++) {
if (timerNumbers[i] == number) {
return i;
}
}
return -1;
return TIM_N(number) & USED_TIMERS ? popcount((TIM_N(number) - 1) & USED_TIMERS) : -1;
}
int8_t timerGetTIMNumber(const TMR_TypeDef *tim)

View file

@ -285,12 +285,7 @@ int8_t timerGetNumberByIndex(uint8_t index)
int8_t timerGetIndexByNumber(uint8_t number)
{
for (int i = 0; i < USED_TIMER_COUNT; i++) {
if (timerNumbers[i] == number) {
return i;
}
}
return -1;
return TIM_N(number) & USED_TIMERS ? popcount((TIM_N(number) - 1) & USED_TIMERS) : -1;
}
int8_t timerGetTIMNumber(const tmr_type *tim)

View file

@ -294,12 +294,7 @@ int8_t timerGetNumberByIndex(uint8_t index)
int8_t timerGetIndexByNumber(uint8_t number)
{
for (int i = 0; i < USED_TIMER_COUNT; i++) {
if (timerNumbers[i] == number) {
return i;
}
}
return -1;
return TIM_N(number) & USED_TIMERS ? popcount((TIM_N(number) - 1) & USED_TIMERS) : -1;
}
int8_t timerGetTIMNumber(const TIM_TypeDef *tim)

View file

@ -276,12 +276,7 @@ int8_t timerGetNumberByIndex(uint8_t index)
int8_t timerGetIndexByNumber(uint8_t number)
{
for (int i = 0; i < USED_TIMER_COUNT; i++) {
if (timerNumbers[i] == number) {
return i;
}
}
return -1;
return TIM_N(number) & USED_TIMERS ? popcount((TIM_N(number) - 1) & USED_TIMERS) : -1;
}
int8_t timerGetTIMNumber(const TIM_TypeDef *tim)