78 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			78 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
|  | /****************************************************************************
 | |||
|  | 
 | |||
|  | 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
 |