IRDA: Use DMA for async TX (#608)

This commit is contained in:
Albert Kharisov
2021-08-06 00:11:35 +03:00
committed by GitHub
parent 9c38efd4ef
commit ba399abb5d
9 changed files with 657 additions and 162 deletions

View File

@@ -190,19 +190,19 @@ void irda_worker_start(IrdaWorker* instance) {
furi_thread_start(instance->thread);
instance->worker_handle = furi_thread_get_thread_id(instance->thread);
api_hal_irda_rx_irq_init();
api_hal_irda_rx_timeout_irq_init(IRDA_WORKER_RX_TIMEOUT);
api_hal_irda_rx_irq_set_callback(irda_worker_rx_callback, instance);
api_hal_irda_rx_timeout_irq_set_callback(irda_worker_rx_timeout_callback, instance);
api_hal_irda_async_rx_start();
api_hal_irda_async_rx_set_timeout(IRDA_WORKER_RX_TIMEOUT);
api_hal_irda_async_rx_set_capture_isr_callback(irda_worker_rx_callback, instance);
api_hal_irda_async_rx_set_timeout_isr_callback(irda_worker_rx_timeout_callback, instance);
}
void irda_worker_stop(IrdaWorker* instance) {
furi_assert(instance);
furi_assert(instance->worker_handle);
api_hal_irda_rx_timeout_irq_set_callback(NULL, NULL);
api_hal_irda_rx_irq_set_callback(NULL, NULL);
api_hal_irda_rx_irq_deinit();
api_hal_irda_async_rx_set_timeout_isr_callback(NULL, NULL);
api_hal_irda_async_rx_set_capture_isr_callback(NULL, NULL);
api_hal_irda_async_rx_stop();
xTaskNotify(instance->worker_handle, IRDA_WORKER_EXIT, eSetBits);