| | |
| | | /* |
| | | * Copyright (c) 2020-2021 Shanghai Panchip Microelectronics Co.,Ltd. |
| | | * Copyright (c) 2020-2025 Shanghai Panchip Microelectronics Co.,Ltd. |
| | | * |
| | | * SPDX-License-Identifier: Apache-2.0 |
| | | */ |
| | | |
| | | #include "soc_api.h" |
| | | #include "app_log.h" |
| | | #include "signal_slot_manager.h" |
| | | #include <stdlib.h> |
| | | |
| | | #define SS_MAX_EVENTS_PAIRED 6 |
| | | |
| | | ss_manager_t m_ss_manager[SS_MAX_EVENTS_PAIRED]; |
| | | |
| | | void ss_connect(uint8_t priority, signal_handler_t sig, slot_handler_t slot) |
| | | { |
| | | m_ss_manager[priority].sig = sig; |
| | | m_ss_manager[priority].slot = slot; |
| | | m_ss_manager[priority].sig = sig; |
| | | m_ss_manager[priority].slot = slot; |
| | | } |
| | | |
| | | void ss_events_handle(void) |
| | | { |
| | | for (uint8_t i = 0; i < SS_MAX_EVENTS_PAIRED; i++) { |
| | | if (m_ss_manager[i].sig == NULL) { /*skip this loop, cause the function point equals to zero */ |
| | | continue; |
| | | } |
| | | |
| | | if (m_ss_manager[i].sig()) { |
| | | m_ss_manager[i].slot(); |
| | | } |
| | | } |
| | | for (uint8_t i = 0; i < SS_MAX_EVENTS_PAIRED; i++) { |
| | | if (m_ss_manager[i].sig == NULL) { /*skip this loop, cause the function point equals to zero */ |
| | | continue; |
| | | } |
| | | |
| | | if (m_ss_manager[i].sig()) { |
| | | m_ss_manager[i].slot(); |
| | | } |
| | | } |
| | | } |