Files
kunlun/driver/inc/mailbox.h
2024-09-28 14:24:04 +08:00

78 lines
2.4 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/****************************************************************************
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