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