xref: /utopia/UTPA2-700.0.x/modules/mbx/drv/mbx/api_mbx/mbx.h (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1 //#include "apiMBX.h"
2 #include "drvMBX.h"
3 
4 #include "MsTypes.h"
5 enum {
6 	MDrv_CMD_MBX_RegisterMSGWithCallBack,
7 	MDrv_CMD_MBX_RegisterMSG,
8 	MDrv_CMD_MBX_SendMsg,
9 	MDrv_CMD_MBX_RecvMsg,
10 	MDrv_CMD_MBX_Enable,
11 	MDrv_CMD_MBX_QueryClass,
12 } eMbxIoctlOpt;
13 
14 //private data
15 typedef struct _MBX_PRIVATE_PARAM_RegisterMSGWithCallBack
16 {
17     MBX_Class		eMsgClass;
18 	MS_U16			u16MsgQueueSize;
19 	MBX_MAIL_ARRIVE_NOTIFY_FUNC		notifier;
20 }MBX_PRIVATE_PARAM_RegisterMSGWithCallBack;
21 
22 typedef struct _MBX_PRIVATE_PARAM_RegisterMSG
23 {
24     MBX_Class		eMsgClass;
25 	MS_U16			u16MsgQueueSize;
26 }MBX_PRIVATE_PARAM_RegisterMSG;
27 
28 
29 typedef struct _MBX_PRIVATE_PARAM_SendMsg
30 {
31     MBX_Msg 		*pMsg;
32 }MBX_PRIVATE_PARAM_SendMsg;
33 
34 typedef struct _MBX_PRIVATE_PARAM_RecvMsg
35 {
36     MBX_Class 		eTargetClass;
37 	MBX_Msg 		*pMsg;
38 	MS_U32 			u32WaitMillSecs;
39 	MS_U32 			u32Flag;
40 }MBX_PRIVATE_PARAM_RecvMsg;
41 
42 typedef struct _MBX_PRIVATE_PARAM_Enable
43 {
44     MS_BOOL 		bEnable;
45 }MBX_PRIVATE_PARAM_Enable;
46 
47 typedef struct _MBX_PRIVATE_PARAM_QClass
48 {
49 	MBX_ROLE_ID eRoleID;
50     char name[50];
51 	MS_U8 mbx_class;
52 }MBX_PRIVATE_PARAM_QClass;
53 
54 typedef union _MBX_RESOURCE_PRIVATE
55 {
56 	MBX_PRIVATE_PARAM_RegisterMSGWithCallBack		privateRegisterMSGWithCallBack;
57 	MBX_PRIVATE_PARAM_RegisterMSG					privateRegisterMSG;
58 	MBX_PRIVATE_PARAM_SendMsg						privateSendMsg;
59 	MBX_PRIVATE_PARAM_RecvMsg						privateRecvMsg;
60 	MBX_PRIVATE_PARAM_Enable						privateEnable;
61 	MBX_PRIVATE_PARAM_QClass						privateQClass;
62 } MBX_RESOURCE_PRIVATE;
63 
64 //instant private function
65 typedef MBX_Result (*IOCTL_RegisterMSGWithCallBack)(MBX_Class , MS_U16 , MBX_MAIL_ARRIVE_NOTIFY_FUNC );
66 typedef MBX_Result (*IOCTL_RegisterMSG) (MBX_Class , MS_U16 );
67 typedef MBX_Result (*IOCTL_SendMsg)(MBX_Msg * );
68 typedef MBX_Result (*IOCTL_RecvMsg)(MBX_Class , MBX_Msg *, MS_U32 , MS_U32 );
69 typedef MBX_Result (*IOCTL_Enable)(MS_BOOL  );
70 typedef MBX_Result (*IOCTL_QueryDynamicClass) (MBX_ROLE_ID , char *, MS_U8 *);
71 
72 
73 typedef struct _MBX_INSTANT_PRIVATE
74 {
75     IOCTL_RegisterMSGWithCallBack			fpRegisterMSGWithCallBack;
76 	IOCTL_RegisterMSG						fpRegisterMSG;
77 	IOCTL_SendMsg						  	fpSendMsg;
78 	IOCTL_RecvMsg       					fpRecvMsg;
79 	IOCTL_Enable							fpEnable;
80 	IOCTL_QueryDynamicClass					fpQueryDynamicClass;
81 }MBX_INSTANT_PRIVATE;
82 
83 
84 //instant
85 typedef struct _MBX_INSTANT_ATTRIBUTE
86 {
87     MBX_CPU_ID		eHKCPU;
88 	MBX_ROLE_ID		eHostRole;
89 	MS_U32       	u32TimeoutMillSecs;
90 }MBX_INSTANT_ATTRIBUTE;
91 
92 
93 void MBXRegisterToUtopia(FUtopiaOpen ModuleType);
94 
95 MS_U32 MBXOpen(void** ppInstance, MS_U32 u32ModuleVersion, void* pAttribute);
96 MS_U32 MBXClose(void** pInstantTmp);
97 MS_U32 MBXIoctl(void** pInstantTmp, MS_U32 u32Cmd, MS_U32* pu32Args);
98 
99 
100