/**************************************************************************** Copyright(c) 2019 by Aerospace C.Power (Chongqing) Microelectronics. ALL RIGHTS RESERVED. This Information is proprietary to Aerospace C.Power (Chongqing) Microelectronics and MAY NOT be copied by any method or incorporated into another program without the express written consent of Aerospace C.Power. This Information or any portion thereof remains the property of Aerospace C.Power. The Information contained herein is believed to be accurate and Aerospace C.Power assumes no responsibility or liability for its use in any way and conveys no license or title under any patent or copyright and makes no representation or warranty that this Information is free from patent or copyright infringement. ****************************************************************************/ #ifndef _MAILBOX_H_ #define _MAILBOX_H_ #ifdef __cplusplus extern "C" { #endif /** * @brief iot_mb_msg_cb() - 当某个core收到数据时,该函数被自动调用 * @param core_id: 表示数据是从哪个core发来的 */ typedef void(*iot_mb_msg_cb)(int core_id); /** * @brief iot_mb_open() - 打开mailbox并注册中断回调函数 * @param cb: 接收到数据时的回调函数,该函数要完成数据的读取和处理 */ uint32_t iot_mb_open(iot_mb_msg_cb cb); /** * @brief iot_mb_close() - 关闭mailbox */ uint32_t iot_mb_close(void); /** * @brief iot_mb_write() - 向其他core发送数据 * @param core_id: 指示发送给哪个core,注意不能发送给自己 * @param data : 要发送的数据 */ uint32_t iot_mb_write(uint32_t core_id, uint32_t data); /** * @brief iot_mb_read() - 读取其他core发来的数据 * @param core_id: 指示从哪个core读取数据 * @param p_data : 内存地址 */ uint32_t iot_mb_read(uint32_t core_id, uint32_t *p_data); /** * @brief iot_mb_get_read_space() - 获取指定的core向本core发了多少字节的数据,单位WORD * @param core_id: 指示获取哪个core */ uint32_t iot_mb_get_read_space(uint32_t core_id); /** * @brief iot_mb_get_write_space() - 获取指定的core还能接收多少字节的数据,单位WORD * @param core_id: 指示获取哪个core */ uint32_t iot_mb_get_write_space(uint32_t core_id); /** * @brief iot_mb_init() - 初始化mailbox */ void iot_mb_init(void); uint32_t iot_mb_mask(); uint32_t iot_mb_unmask(); #ifdef __cplusplus } #endif #endif