2.4. 数据类型

2.4.1. CVI_IPCM_CUST_VUART_PORT

【说明】

虚拟串口使用的客制化通信port号

【定义】

#define CVI_IPCM_CUST_VUART_PORT 0

【注意事项】

【相关数据类型及接口】

2.4.2. CVI_IPCM_CUST_MSG_PORT

【说明】

参数解析使用的客制化通信port号

【定义】

#define CVI_IPCM_CUST_MSG_PORT 1

【注意事项】

【相关数据类型及接口】

2.4.3. CVI_IPCM_CUST_KER_PORT_ST

【说明】

linux端内核态可以使用的起始port号,支持内核态注册;

在linux端,port号大于或等于CVI_IPCM_CUST_KER_PORT_ST的消息会被内核态先接收,调用内核态的callback;

存在以下情况:

  1. 用户态和内核态都注册了callback,则alios的msg会先到内核态;

内核态处理完毕后,如果callback返回1,则用户态不会再收到msg,即用户态callback不会被调用

内核态处理完毕后,如果callback返回0,则msg会继续往用户态发送,即用户态callback也会被调用

  1. 内核态注册了callback,用户态没有注册callback,则msg只会在内核态处理

  2. 内核态没有注册callback,用户态注册了callback,则msg只会在用户态处理

  3. 用户态和内核态都没有注册callback,则msg不会被处理,会打印err

【定义】

#define CVI_IPCM_CUST_KER_PORT_ST 64

【注意事项】

【相关数据类型及接口】

2.4.4. IPCM_MSG_TYPE_E

【说明】

定义msg的类别

【定义】

typedef enum _IPCM_MSG_TYPE_E {
  IPCM_MSG_TYPE_SHM = 0,      // msg_param is share memory addr
  IPCM_MSG_TYPE_RAW_PARAM,    // msg_param is the param
} IPCM_MSG_TYPE_E;

【成员】

成员名称

描述

IPCM_MSG_TYPE_SHM

msg长 度超过4byte,callback返回的是IPCM_CUST_SHM_DATA_S(share memory pool的addr和size)

IPCM_MSG_TYPE_RAW_PARAM

msg内容不超过4bytes ,callback返回的是msg param

【注意事项】

【相关数据类型及接口】

2.4.5. IPCM_CUST_SHM_DATA_S

【说明】

当msg长度超过4byte,定义share memory pool的addr和size

【定义】

typedef struct _IPCM_CUST_SHM_DATA_S {
    CVI_VOID *pData;
    CVI_U32 u32Size;
} IPCM_CUST_SHM_DATA_S;

【成员】

成员名称

描述

pData

share memory的地址

u32Size

share memory数据的size

【注意事项】

【相关数据类型及接口】

2.4.6. IPCM_CUST_MSG_S

【说明】

定义ipcm cust消息结构体,注册cust handler后,如果收到cust消息,handler会返回该结构体的指针

【定义】

typedef struct _IPCM_CUST_MSG_S {
  CVI_U8 u8PortID;
  CVI_U8 u8MsgID : 7;
  CVI_U8 u8DataType : 1;
  union {
    IPCM_CUST_SHM_DATA_S stData; // while u8DataType is 0
    CVI_U32 u32Param; // while u8DataType is 1
  };
} IPCM_CUST_MSG_S;

【成员】

成员名称

描述

u8PortID;

port号

u8MsgID

msg号

u8DataType

msg数据类型

0: 返回 stData

1: 返回 u32Param

【注意事项】

【相关数据类型及接口】

2.4.7. IPCM_CUST_MSGPROC_FN

【说明】

定义ipcm cust的handler

【定义】

typedef CVI_S32 (*IPCM_CUST_MSGPROC_FN)(CVI_VOID *pPriv, IPCM_CUST_MSG_S *pstData);

【成员】

成员名称

描述

pPriv

用户数据指 针;注册handle时传入的数据指针

pstData

接收到的msg指针

【注意事项】

【相关数据类型及接口】