#pragma once #include #include #include "basic/base.hpp" namespace iflytop { using namespace std; class ZIRQDispatcher { public: typedef enum { konHAL_UARTEx_RxEventCallback, konHAL_UART_TxCpltCallback, konHAL_UART_TxHalfCpltCallback, konHAL_UART_RxCpltCallback, konHAL_UART_RxHalfCpltCallback, konHAL_UART_ErrorCallback, konHAL_UART_AbortCpltCallback, konHAL_UART_AbortTransmitCpltCallback, konHAL_UART_AbortReceiveCpltCallback, } uart_irq_t; typedef struct { UART_HandleTypeDef *huart; uint16_t Size; } uart_irq_data_t; public: typedef function ontimirq_t; typedef function on_uart_irq_t; list m_ontimirqs; list m_onuartirqs; public: static ZIRQDispatcher &instance(); void regTimIrqListener(ontimirq_t listener); void regUartIrqListener(on_uart_irq_t cb); public: void _callOnTimIrq(zchip_tim_t *tim); void _callOnUartIrq(uart_irq_t irq_type, uart_irq_data_t data); }; } // namespace iflytop