MXC-A36_2024.04.17/MXC-Screen_display/components/modules/rpmsg-lite/lib/include/rpmsg.h

93 lines
2.8 KiB
C
Raw Normal View History

2024-02-28 16:45:49 +08:00
#ifndef _RPMSG_H
#define _RPMSG_H
#include <stdint.h>
#include "rpmsg_lite.h"
/* Exported macro ------------------------------------------------------------*/
#define RPMSG_MSG_TYPE_MASTER_READY 0x00000001
#define RPMSG_MSG_TYPE_REMOTE_READY 0x00000002
#define RPMSG_MSG_TYPE_SYNC_INVOKE 0x00000003
#define RPMSG_MSG_TYPE_SYNC_RETURN 0x00000004
#define RPMSG_MSG_TYPE_ASYNC_MSG 0x00000005
#define RPMSG_SYNC_FUNC_MSG(type, sub_type) (((type)<<16) | (sub_type))
#define RPSMG_SYNC_FUNC_TYPE(func_id) ((func_id)>>16)
#define RPSMG_SYNC_FUNC_SUB_TYPE(func_id) ((func_id) & 0xffff)
#define RPMSG_SYNC_FUNC_TYPE_TEST 0x0001
#define RPMSG_SYNC_FUNC_TYPE_DSP 0x0002
#define RPMSG_SYNC_FUNC_TYPE_AUDIO 0x0003
#define RPMSG_SYNC_FUNC_TYPE_LVGL 0x0004
#define RPMSG_SYNC_FUNC_TYPE_FREETYPE 0x0005
#define RPMSG_SYNC_FUNC_SUM RPMSG_SYNC_FUNC_MSG(RPMSG_SYNC_FUNC_TYPE_TEST, 0x0001)
/** @addtogroup rpmsg syncronize invoke message definations
* @{
*/
struct rpmsg_sync_msg_sum_t {
uint32_t x;
uint32_t y;
};
/**
* @}
*/
/** @addtogroup rpmsg asyncronize message definations
* @{
*/
struct rpmsg_async_msg_t {
uint32_t msg_id;
union {
void *param;
uint32_t dsp_req_frq;
} p;
};
/**
* @}
*/
struct rpmsg_msg_t {
uint32_t msg_type;
union {
struct {
uint32_t func_id;
void *param;
} sync_func;
struct {
uint32_t status;
uint32_t result;
} sync_ret;
struct rpmsg_async_msg_t async_msg;
} p;
};
/*-----------------------------------------------------------------------------------*/
/* Exported functions ---------------------------------------------------------------*/
/*-----------------------------------------------------------------------------------*/
uint32_t rpmsg_sync_invoke(struct rpmsg_lite_instance *rpmsg, uint32_t func_id, void *param, uint32_t *ret);
uint32_t rpmsg_send_async(struct rpmsg_lite_instance *rpmsg, struct rpmsg_async_msg_t *async_msg);
uint32_t rpmsg_send_sync_ret(struct rpmsg_lite_instance *rpmsg, uint32_t status, uint32_t ret);
struct rpmsg_lite_instance *rpmsg_master_init(void (*recv)(struct rpmsg_lite_instance *rpmsg, struct rpmsg_msg_t *msg));
struct rpmsg_lite_instance *rpmsg_remote_init(void (*recv)(struct rpmsg_lite_instance *rpmsg, struct rpmsg_msg_t *msg));
void rpmsg_wait_master_ready(struct rpmsg_lite_instance *rpmsg);
void rpmsg_destroy(struct rpmsg_lite_instance *rpmsg);
uint32_t rpmsg_recv_msg(struct rpmsg_lite_instance *rpmsg, struct rpmsg_msg_t **msg, uint32_t *msg_len);
struct rpmsg_lite_instance *rpmsg_get_remote_instance(void);
struct rpmsg_lite_instance *rpmsg_get_master_instance(void);
void rpmsg_remote_recover(void);
#endif // _RPMSG_H