You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
#pragma once
#include <functional>
#include <list>
#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<void(zchip_tim_t *)> ontimirq_t; typedef function<void(uart_irq_t irq_type, uart_irq_data_t data)> on_uart_irq_t;
list<ontimirq_t> m_ontimirqs; list<on_uart_irq_t> 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
|