FuriHal, Infrared, Protobuf: various fixes and improvements (#2845)

* Infrared: fix crash caused by null-ptr dereference in interrupt call. FuriHal: callback checks in interrupt handlers. Protobuf: bump to latest.

* DesktopSettings: allow application browser as favourite

* Format sources

* FuriHal: fix pvs warnings
This commit is contained in:
あく
2023-07-05 22:56:52 +09:00
committed by GitHub
parent 08bafc478e
commit 97fbd84e08
4 changed files with 30 additions and 13 deletions

View File

@@ -373,9 +373,6 @@ static void furi_hal_infrared_configure_tim_pwm_tx(uint32_t freq, float duty_cyc
LL_TIM_EnableAllOutputs(INFRARED_DMA_TIMER);
LL_TIM_DisableIT_UPDATE(INFRARED_DMA_TIMER);
LL_TIM_EnableDMAReq_UPDATE(INFRARED_DMA_TIMER);
NVIC_SetPriority(TIM1_UP_TIM16_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(), 5, 0));
NVIC_EnableIRQ(TIM1_UP_TIM16_IRQn);
}
static void furi_hal_infrared_configure_tim_cmgr2_dma_tx(void) {

View File

@@ -62,7 +62,7 @@ const IRQn_Type furi_hal_interrupt_irqn[FuriHalInterruptIdMax] = {
__attribute__((always_inline)) static inline void
furi_hal_interrupt_call(FuriHalInterruptId index) {
furi_assert(furi_hal_interrupt_isr[index].isr);
furi_check(furi_hal_interrupt_isr[index].isr);
furi_hal_interrupt_isr[index].isr(furi_hal_interrupt_isr[index].context);
}
@@ -127,16 +127,15 @@ void furi_hal_interrupt_set_isr_ex(
uint16_t priority,
FuriHalInterruptISR isr,
void* context) {
furi_assert(index < FuriHalInterruptIdMax);
furi_assert(priority < 15);
furi_assert(furi_hal_interrupt_irqn[index]);
furi_check(index < FuriHalInterruptIdMax);
furi_check(priority < 15);
if(isr) {
// Pre ISR set
furi_assert(furi_hal_interrupt_isr[index].isr == NULL);
furi_check(furi_hal_interrupt_isr[index].isr == NULL);
} else {
// Pre ISR clear
furi_assert(furi_hal_interrupt_isr[index].isr != NULL);
furi_check(furi_hal_interrupt_isr[index].isr != NULL);
furi_hal_interrupt_disable(index);
furi_hal_interrupt_clear_pending(index);
}