/************************************************* Copyright (C) 2020-2020 ZheJiang XinSheng Electronic Technology CO.,LTD. 文件名: xs9922_commm.h 作 者: chen_li(34308) 版 本: 1.0.0 日 期: 2020-07-24 描 述: 此处为文件具体描述,包括主要功能 1、使用说明 xx 2、局限性 xx 修订历史: 1. 日 期: 修订版本: 作 者: 修订备注: 2. 日 期: 修订版本: 作 者: 修订备注: *************************************************/ #ifndef __NI_COMM_H__ #define __NI_COMM_H__ #include "ni_type.h" #include "ni_errno.h" #ifdef __cplusplus #if __cplusplus extern "C"{ #endif #endif /* End of #ifdef __cplusplus */ #define NI_ID_NI (0x22) #define NI_ERR_NI_INVALID_DEVID NI_DEF_ERR(NI_ID_NI, NI_EN_ERR_LEVEL_ERROR, NI_ERR_INVALID_DEVID) #define NI_ERR_NI_INVALID_CHNID NI_DEF_ERR(NI_ID_NI, NI_EN_ERR_LEVEL_ERROR, NI_ERR_INVALID_CHNID) #define NI_ERR_NI_ILLEGAL_PARAM NI_DEF_ERR(NI_ID_NI, NI_EN_ERR_LEVEL_ERROR, NI_ERR_ILLEGAL_PARAM) #define NI_ERR_NI_NULL_PTR NI_DEF_ERR(NI_ID_NI, NI_EN_ERR_LEVEL_ERROR, NI_ERR_NULL_PTR) #define NI_ERR_NI_NOT_CONFIG NI_DEF_ERR(NI_ID_NI, NI_EN_ERR_LEVEL_ERROR, NI_ERR_NOT_CONFIG) #define NI_ERR_NI_NOT_SUPPORT NI_DEF_ERR(NI_ID_NI, NI_EN_ERR_LEVEL_ERROR, NI_ERR_NOT_SUPPORT) #define NI_ERR_NI_NOT_PERM NI_DEF_ERR(NI_ID_NI, NI_EN_ERR_LEVEL_ERROR, NI_ERR_NOT_PERM) #define NI_MAX_CHIPS (1) #define NI_MAX_LANE_NUMS (4) #define NI_MAX_CHNS (4) #define NI_MAX_LINEIN_CHNS (5) /*定义消息类型*/ typedef enum tagNiMsgType { NI_MSG_TYPE_SILENT, /*静默方式*/ NI_MSG_TYPE_ERR, /*错误级别*/ NI_MSG_TYPE_WARN, /*警告级别*/ NI_MSG_TYPE_INFO, /*信息级别*/ NI_MSG_TYPE_DEBUG, /*调试级别*/ NI_MSG_TYPE_BUTT }NI_MSG_TYPE_E; /*错误码类型*/ typedef enum tagNiErrId { NI_ERRID_SUCCESS = 0, /*正常状态*/ NI_ERRIF_FAILED, /*通用错误*/ NI_ERRID_TIMEOUT, /*超时错误*/ NI_ERRID_INVPARAM, /*参数错误*/ NI_ERRID_NOINIT, /*未初始化*/ NI_ERRID_INVPOINTER, /*空指针*/ NI_ERRID_UNSUPPORT, /*不支持*/ NI_ERRID_UNKNOW, /*未知错误*/ } NI_ERR_ID_E; typedef enum tagNiVideoFormat { NI_CVI_1280x720_25HZ, //0 NI_CVI_1280x720_30HZ, //1 NI_CVI_1280x720_50HZ, //2 NI_CVI_1280x720_60HZ, //3 NI_CVI_1920x1080_25HZ, //4 NI_CVI_1920x1080_30HZ, //5 NI_CVI_1280x720_30HZ_V20, //6 NI_CVI_1280x720_60HZ_V20, //7 NI_CVI_1920x1080_30HZ_V20, //8 NI_AHD_1280x720_25HZ, //9 NI_AHD_1280x720_30HZ, //10 NI_AHD_1280x720_50HZ, //11 NI_AHD_1280x720_60HZ, //12 NI_AHD_1920x1080_25HZ, //13 NI_AHD_1920x1080_30HZ, //14 NI_TVI_1280x720_25HZ, //15 NI_TVI_1280x720_30HZ, //16 NI_TVI_1280x720_50HZ, //17 NI_TVI_1280x720_60HZ, //18 NI_TVI3_1280x720_25HZ, //19 NI_TVI3_1280x720_30HZ, //20 NI_TVI_1920x1080_25HZ, //21 NI_TVI_1920x1080_30HZ, //22 NI_SD_NTSC_JM, //23 NI_SD_NTSC_443, //24 NI_SD_PAL_M, //25 NI_SD_PAL_60, //26 NI_SD_PAL_CN, //27 NI_SD_PAL_BGHID, //28 NI_VIDEO_FMT_BUTT }NI_VIDEO_FORMAT_E; typedef struct tagNiImgAdj { NI_BOOL bUserColor; /*用户调节color使能*/ NI_U8 u8Brightness; /*亮度,取值范围:[0,0xff];默认值:0x00*/ NI_U8 u8Contrast; /*对比度,取值范围:[0,0xff];默认值:0x80*/ NI_U8 u8Saturation; /*饱和度,取值范围:[0,0xff];默认值:0x80*/ NI_U8 u8Hue; /*色调,取值范围:[0,0xff];默认值:0x00*/ NI_U8 u8Gain; /*增益,不开放*/ NI_U8 u8WhiteBalance; /*白电平,不开放*/ NI_U8 u8Sharpness; /*锐度,取值范围:[0,0x1f];默认值:0x00*/ }NI_IMG_ADJ_S; typedef struct tagNiImgOffset { NI_BOOL bUserCofig; /*用户配置或者默认配置选择*/ NI_U8 u8HorToward; /*水平偏移方向,[0:向左; 1:向右]*/ NI_U8 u8HorOffset; /*水平偏移量,取值范围:[0,0x7f]*/ NI_U8 u8VerToward; /*垂直偏移方向,[0:向上; 1:向下]*/ NI_U8 u8VerOffset; /*垂直偏移量,取值范围:[0,0x7f]*/ }NI_IMG_OFFSET_S; typedef struct tagNiImgAttr { NI_IMG_ADJ_S stImgAdj; /*调整图像参数*/ NI_IMG_OFFSET_S stImgOffset; /*调整图像偏移*/ }NI_IMG_ATTR_S; typedef enum tagNiCableType { NI_CABLE_TYPE_COAXIAL, /*同轴线缆*/ NI_CABLE_TYPE_UTP_10OHM, /*10 ohm阻抗双绞线*/ NI_CABLE_TYPE_AVIATION, /*航空头车载线缆*/ NI_CABLE_TYPE_BUTT } NI_CABLE_TYPE_E; /*视频状态*/ typedef enum { NI_VIDEO_CONNECT = 0, /*视频正常接入*/ NI_VIDEO_LOST = 1, /*视频丢失*/ NI_VIDEO_BUT, }NI_VIDEO_STATUS_E; typedef struct tagNiVideoStatusInfo { NI_VIDEO_STATUS_E enVideoLost; /*1视频丢失,0 视频恢复*/ NI_VIDEO_FORMAT_E enVideoOutFormat; /*当前视频输出制式*/ NI_VIDEO_FORMAT_E enVideoInFormat; /*当前检测到的视频制式*/ }NI_VIDEO_STATUS_INFO_S; typedef enum tagNiNetraMode { NI_NETRA_MODE_DOUBLE, /*双头格式*/ NI_NETRA_MODE_SINGLE, /*单头格式*/ NI_NETRA_MODE_BUTT }NI_NETRA_MODE_E; typedef enum tagNiChnIdPos { NI_CHN_ID_POS_NOID, /*ID号不加*/ NI_CHN_ID_POS_HBLANK, /*ID号加在行消隐区*/ NI_CHN_ID_POS_HEADINFO, /*ID号加在头信息中*/ NI_CHN_ID_POS_BOTH, /*ID号同时出现在行消隐区和头信息中*/ NI_CHN_ID_POS_BUTT }NI_CHN_ID_POS_E; typedef enum tagNiChnIdVal { NI_CHN_ID_VAL_0, /*通道ID 0*/ NI_CHN_ID_VAL_1, /*通道ID 1*/ NI_CHN_ID_VAL_2, /*通道ID 2*/ NI_CHN_ID_VAL_3, /*通道ID 3*/ NI_CHN_ID_VAL_BUTT, }NI_CHN_ID_VAL_E; typedef struct tagNiVoIdAttr { NI_CHN_ID_POS_E enChnIdPos; /*选择通道ID在数据流中的位置*/ NI_CHN_ID_VAL_E enChnId; /*视频输出通道对应的ID号码*/ }NI_VO_ID_ATTR_S; typedef enum tagNiInputChn { NI_INPUT_CHN_0, /*通道0*/ NI_INPUT_CHN_1, /*通道1*/ NI_INPUT_CHN_2, /*通道2*/ NI_INPUT_CHN_3, /*通道3*/ NI_INPUT_CHN_BUTT, }NI_INPUT_CHN_E; typedef struct tagNiVoTdmInfo { NI_INPUT_CHN_E enFirstInputChn; /*第一路信号源自*/ NI_INPUT_CHN_E enSecondInputChn; /*第二路信号源自*/ }NI_VO_TDM_INFO_S; typedef enum tagNiVoBitMode { NI_VO_MODE_BT1120, /*BT1120*/ NI_VO_MODE_BT656, /*BT656*/ NI_VO_MODE_BUTT }NI_VO_BIT_MODE_E; typedef enum tagNiVoHdGmMode { NI_VO_HD_GM_CLOSE = 0, /*消隐区不压缩*/ NI_VO_HD_GM_OPEN, /*消隐区压缩*/ NI_VO_HD_GM_MODE_BUTT, }NI_VO_HD_GM_MODE_E; typedef enum tagNiVoSdFmt { NI_VO_SD_MODE_720H, /*720H*/ NI_VO_SD_MODE_960H, /*960H*/ NI_VO_SD_MODE_BUTT }NI_VO_SD_FMT_E; typedef enum tagNiVoClkEdge { NI_VO_CLK_EDGE_RISING, /*上升沿采集*/ NI_VO_CLK_EDGE_DUAL, /*上下边沿采集模式*/ NI_VO_CLK_EDGE_BUTT }NI_VO_CLK_EDGE_E; typedef enum tagNiVoBufMode { NI_VO_BUF_DEFAULT = 0, /*默认延时,内部设置*/ NI_VO_BUF_MANUAL, /*手动配置延时*/ NI_VO_BUF_BUTT } NI_VO_BUF_MODE_E; typedef struct tagNiVoBuf { NI_VO_BUF_MODE_E enVoBufMode; /*视频输出延时编码模式选择*/ NI_U16 u16VoBufValue; /*视频输出设置启动编码的延时时间,取值范围:[0,0x1fff];默认值:0x00*/ }NI_VO_BUF_S; typedef enum tagNiVoClkMode { NI_CLK_MODE_37_125 = 0, /*Half模式输出37.125M时钟*/ NI_CLK_MODE_74_25 = 1, /*Half模式输出74.25M时钟*/ NI_CLK_MODE_148_5 = 2, /*Half模式输出148.5M时钟*/ NI_CLK_MODE_144 = 3, /*Half模式输出144M时钟*/ NI_CLK_MODE_BUT, }NI_VO_CLK_MODE_E; //typedef struct tagNiVoHalfAttr //{ // NI_BOOL bHalfEn; /*视频输出Half模式使能*/ // NI_VO_CLK_MODE_E enClkMode; /*Half模式输出时钟选择*/ //} NI_VO_HALF_ATTR_S; typedef struct tagNiVoAttr { NI_BOOL bDataSeqInv; /*VO输出数据按bit位反转*/ NI_BOOL bDataSwapEn; /*VO输出数据按Byt位反转*/ NI_NETRA_MODE_E enNetraMode; /*高清视频输入头格式选择*/ NI_VO_ID_ATTR_S stChnIdAttr; /*通道ID配置*/ NI_VO_TDM_INFO_S stVoTdmInfo; /*视频输出在2x模式下通道信号源选择*/ NI_VO_BIT_MODE_E enVoBitMode; /*输出模式选择*/ NI_VO_HD_GM_MODE_E enGmMode; /*当前VO通道GM模式配置*/ NI_VO_SD_FMT_E enSdFormat; /*VO标清输出分辨率配置*/ NI_VO_CLK_EDGE_E enVoClkEdge; /*选择时钟边沿采模式*/ NI_VO_BUF_S stVoBuffer; /*当前VO通道延时编码配置*/ NI_INPUT_CHN_E enChnDataSrc; /*当前VO通道映射的输入数据端口*/ NI_BOOL bHalfEn; /*视频输出Half模式使能*/ NI_VO_CLK_MODE_E enClkMode; /*Half模式输出时钟选择*/ }NI_VO_ATTR_S; typedef enum tagNiFreeRunColor { NI_FREERUN_COLOR_WHITE, /*白色*/ NI_FREERUN_COLOR_YELLOW, /*黄色*/ NI_FREERUN_COLOR_CYAN, /*青色*/ NI_FREERUN_COLOR_GREEN, /*绿色*/ NI_FREERUN_COLOR_MAGENTA, /*洋红色*/ NI_FREERUN_COLOR_RED, /*红色*/ NI_FREERUN_COLOR_BLUE, /*蓝色*/ NI_FREERUN_COLOR_BLACK, /*黑色*/ NI_FREERUN_COLOR_BUTT }NI_FREERUN_COLOR_E; typedef struct tagNiFreeRunAttr { NI_FREERUN_COLOR_E enFreeRunColor; /*Freerun单色品颜色*/ NI_VIDEO_FORMAT_E enFreeRunFormat; /*Freerun单色品制式*/ }NI_FREERUN_ATTR_S; typedef struct tagNiVideoAttr { NI_VO_ATTR_S stVoAttr; /*VO参数配置*/ NI_FREERUN_ATTR_S stFreeRunAttr; /*Freerun配置*/ }NI_VIDEO_ATTR_S; typedef enum tagNiCoAudMode { NI_COAUD_MODE_OLD, /*同轴音频老方案*/ NI_COAUD_MODE_NEW, /*同轴音频新方案*/ NI_COAUD_MODE_BUTT }NI_COAUD_MODE_E; typedef enum tagNiAudSampleRate { NI_AUD_SAMPLERATE_8K, /*8K采样频率*/ NI_AUD_SAMPLERATE_16K, /*16K采样频率*/ NI_AUD_SAMPLERATE_32K, /*32K采样频率*/ NI_AUD_SAMPLERATE_48K, /*48K采样频率*/ NI_AUD_SAMPLERATE_44_1K, /*44.1K采样频率*/ NI_AUD_SAMPLERATE_BUTT }NI_AUD_SAMPLERATE_E; typedef enum tagNiAudClkMode { NI_AUD_CLK_MODE_MASTER, /*主模式*/ NI_AUD_CLK_MODE_SLAVE, /*从模式*/ NI_AUD_MODE_BUTT }NI_AUD_CLK_MODE_E; typedef enum tagNiAudIntfMode { NI_AUD_INTF_MODE_IIS, /*I2S模式*/ NI_AUD_INTF_MODE_DSP, /*DSP模式*/ NI_AUD_INTF_MODE_BUTT }NI_AUD_INTF_MODE_E; typedef enum tagNiAudEncSrc { NI_AUD_SRC_LINEIN, /*模拟音频输入*/ NI_AUD_SRC_COAXIAL, /*同轴音频输入*/ NI_AUD_SRC_BUTT }NI_AUD_ENC_SRC_E; typedef enum tagNiAudDataWidth { NI_AUD_DATA_16BIT, /*16bit位宽*/ NI_AUD_DATA_20BIT, /*20bit位宽*/ NI_AUD_DATA_24BIT, /*24bit位宽*/ NI_AUD_DATA_BUTT }NI_AUD_DATA_WIDTH_E; typedef enum tagNiAudDecFreq { NI_AUD_DEC_FREQ_32, /*位同步与帧同步频率的倍数关系:32*/ NI_AUD_DEC_FREQ_64, /*位同步与帧同步频率的倍数关系:64*/ NI_AUD_DEC_FREQ_128, /*位同步与帧同步频率的倍数关系:128*/ NI_AUD_DEC_FREQ_256, /*位同步与帧同步频率的倍数关系:256*/ NI_AUD_DEC_FREQ_BUTT }NI_AUD_DEC_FREQ_E; typedef enum tagNiAudDacSrc { NI_AUD_DAC_SRC_IIS, /*音频数据来自I2S*/ NI_AUD_DAC_SRC_ADC1, /*音频数据来自LINE_IN1*/ NI_AUD_DAC_SRC_ADC2, /*音频数据来自LINE_IN2*/ NI_AUD_DAC_SRC_ADC3, /*音频数据来自LINE_IN3*/ NI_AUD_DAC_SRC_ADC4, /*音频数据来自LINE_IN4*/ NI_AUD_DAC_SRC_ADC5, /*音频数据来自LINE_IN5*/ NI_AUD_DAC_SRC_BUTT }NI_AUD_DAC_SRC_E; typedef enum tagNiAudAdcInputSelMode { NI_AUD_ADC_SEL_MODE_LINEIN, /*通道选择LINEIN输入*/ NI_AUD_ADC_SEL_MODE_MIC, /*通道选择MIC输入*/ NI_AUD_ADC_SEL_MODE_BUTT }NI_AUD_ADC_INPUT_SEL_MODE_E; typedef enum tagNiAudAdcInputSelLine { NI_AUD_ADC_SEL_LINE_1, /*音频数据来自LINE_1*/ NI_AUD_ADC_SEL_LINE_2, /*音频数据来自LINE_2*/ NI_AUD_ADC_SEL_LINE_3, /*音频数据来自LINE_3*/ NI_AUD_ADC_SEL_LINE_BUTT }NI_AUD_ADC_INPUT_SEL_LINE_E; typedef struct tagNiAudCasMode { NI_U8 u8CasNum; /*级联数目*/ NI_U8 u8CasPos; /*级联位置*/ }NI_AUD_CAS_MODE_S; typedef struct tagNiCoaudAttr { NI_BOOL bRecEn; /*同轴音频接收使能*/ NI_BOOL bCheckEn; /*同轴新音频校验使能*/ NI_U8 u8AudioGain; /*同轴音频数字增益,取值范围:[0,0xff];默认值:0x80*/ NI_COAUD_MODE_E enCoaudMode; /*同轴音频新老方案选择*/ } NI_COAUD_ATTR_S; typedef struct tagNiAudEncAttr { NI_BOOL bEncEn; /*编码使能*/ NI_AUD_DATA_WIDTH_E enEncDataWidth; /*编码数据位宽*/ NI_AUD_CLK_MODE_E enEncClkMode; /*编码时钟主从模式选择,应与enDecClkMode一致*/ NI_AUD_INTF_MODE_E enEncIntfMode; /*音频接口模式*/ NI_AUD_ENC_SRC_E aenEncSrc[NI_MAX_CHNS]; /*数据源选择*/ }NI_AUD_ENC_ATTR_S; typedef struct tagNiAudDecAttr { NI_BOOL bDecEn; /*解码模块使能*/ NI_U8 u8DecOutpSel; /*解码通道输入源选择*/ NI_U8 u8DecChsel; /*编码输出左右通道选择0:右,1:左*/ NI_AUD_CLK_MODE_E enDecClkMode; /*解码时钟主从模式选择,应与enEncClkMode一致*/ NI_AUD_INTF_MODE_E enDecIntfMode; /*音频接口模式*/ NI_AUD_DATA_WIDTH_E enDecDataWidth; /*解码数据位宽*/ }NI_AUD_DEC_ATTR_S; typedef struct tagNiAudDacAttr { NI_BOOL bDacEn; /*模拟音频输出使能*/ NI_U8 u8DacGain; /*模拟音频输出增益,取值范围:[0,0x1f];默认值:0x1b*/ NI_AUD_DAC_SRC_E enAudDacSrc; /*模拟音频输出数据源选择*/ }NI_AUD_DAC_ATTR_S; typedef struct tagNiAudAdcAttr { NI_BOOL bAdcEn; /*输入使能*/ NI_U8 u8PgaGain; /*PGA 增益,取值范围:[0,0xf];默认值:0x8*/ NI_U8 u8DigtalGain; /*Digital 增益,取值范围:[0,0xf];默认值:0x8*/ NI_AUD_ADC_INPUT_SEL_MODE_E enInputSelMode; /*CHN0-3模拟音频输入模式选择*/ NI_AUD_ADC_INPUT_SEL_LINE_E enInputSelLine; /*CHN4-5模拟音频输入LINE选择*/ }NI_AUD_ADC_ATTR_S; typedef struct tagNiAudioAttr { NI_AUD_SAMPLERATE_E enAudSamplerate; /*音频采样率*/ NI_AUD_CAS_MODE_S stAudCasMode; /*音频级联模式*/ NI_COAUD_ATTR_S stCoAudAttr[NI_MAX_CHNS]; /*同轴音频配置*/ NI_AUD_ENC_ATTR_S stAudEncAttr; /*音频编码配置*/ NI_AUD_DEC_ATTR_S stAudDecAttr; /*音频解码配置*/ NI_AUD_DAC_ATTR_S stAudDacAttr; /*模拟音频输出配置*/ NI_AUD_ADC_ATTR_S stAudAdcAttr[NI_MAX_LINEIN_CHNS]; /*模拟音频输入配置*/ }NI_AUDIO_ATTR_S; typedef enum tagNiWorkMode { NI_WORK_MODE_1Multiplex, /*1x模式*/ NI_WORK_MODE_2Multiplex, /*2x模式*/ NI_WORK_MODE_4Multiplex, /*4x模式*/ NI_WORK_MODE_BUTT }NI_WORK_MODE_E; typedef struct tagNiCo485Attr { NI_BOOL bSendEn; /*反向485数据发送使能*/ NI_BOOL bSendCheckEn; /*向485数据奇偶校验位使能*/ NI_BOOL bRecEn; /*正向485数据接收使能*/ NI_BOOL bUtoEn; /*正向传输超时使能*/ NI_U16 u16UtoTime; /*正向传输,设定超时目标时间(秒)*/ NI_U16 u8IntLevel; /*正向传输,设定中断水位(数据长度)*/ } NI_CO485_ATTR_S; typedef struct tagNiCo485Buf { NI_U8 *pu8485Buf; /*485数据指针*/ NI_U8 u8BufLength; /*数据长度*/ }NI_CO485_BUF_S; typedef struct tagNiDevAttr { NI_WORK_MODE_E enWorkMode; /*Video Out多通道复用模式选择*/ NI_VIDEO_ATTR_S astVideoAttr[NI_MAX_CHNS]; /*视频输出属性设置*/ NI_AUDIO_ATTR_S stAudioAttr; /*音频属性设置*/ NI_CO485_ATTR_S astCo485Attr[NI_MAX_CHNS]; /*CO485配置*/ }NI_DEV_ATTR_S; typedef enum tagNiVideoProtocol { NI_VIDEO_PROTOCOL_AUTO, /*自动模式*/ NI_VIDEO_PROTOCOL_CVI, /*CVI协议*/ NI_VIDEO_PROTOCOL_AHD, /*AHD协议*/ NI_VIDEO_PROTOCOL_TVI, /*TVI协议*/ NI_VIDEO_PROTOCOL_SD, /*标清*/ NI_VIDEO_PROTOCOL_BUTT }NI_VIDEO_PROTOCOL_E; typedef enum tagNiDetectMode { NI_DETECT_NORMAL_MODE, /*正常识别模式,识别速度一般*/ NI_DETECT_FAST_MODE, /*快速识别模式,识别速度较快*/ NI_DETECT_BUTT }NI_DETECT_MODE_E; typedef struct tagNiDetectOpt { NI_BOOL bUseDetectOptEn; /*选择使用用户配置使能*/ NI_DETECT_MODE_E enDetectMode; /*自适应模式选择*/ NI_CABLE_TYPE_E enCableType; /*传输线缆选择*/ NI_VIDEO_FORMAT_E enVideoFormat; /*强制配置视频制式*/ NI_VIDEO_PROTOCOL_E enVideoProtocol; /*强制配置视频协议*/ NI_BOOL bReLockEn; /*检测时进行重新锁定*/ NI_BOOL bEqEn; /*EQ自适应使能*/ }NI_DETECT_OPT_S; typedef struct tagNiDevInfo { NI_U8 u8I2cDev; /*iic设备号*/ NI_U8 u8DevAddr; /*器件地址*/ }NI_DEV_INFO_S; typedef struct tagNiRegFunc { NI_S32 (*NI_WriteByte)(NI_U8 u8I2cDev, NI_U8 u8DevAddr, NI_U16 u16RegAddr, NI_U8 u8RegValue); NI_S32 (*NI_ReadByte)(NI_U8 u8I2cDev, NI_U8 u8DevAddr, NI_U16 u16RegAddr, NI_U8 *pu8RegValue); NI_VOID (*NI_MSleep)(NI_U8 u8MsDly); NI_VOID (*NI_Printf)(NI_CHAR *pszStr); NI_VOID (*NI_GetLock)(NI_VOID); NI_VOID (*NI_ReleaseLock)(NI_VOID); }NI_REG_FUNC_S; typedef enum tagNiMipiLaneNum { NI_MIPI_LANE_MODE_1, /*lane_num=1*/ NI_MIPI_LANE_MODE_2, /*lane_num=2*/ NI_MIPI_LANE_MODE_4, /*lane_num=4*/ NI_MIPI_LANE_MODE_BUTT }NI_MIPI_LANE_NUM_E; typedef struct tagNiMipiLaneAttr { NI_MIPI_LANE_NUM_E stMipiLaneNum; /*Mipi lane num*/ NI_BOOL bMipiLanePnSwap[NI_MAX_LANE_NUMS]; /*Mipi lane swap pn*/ NI_U16 u16MipiLaneFreq; /*Mipi lane freq(Mbps) 必须为100的倍数 默认为1.5G*/ }NI_MIPI_LANE_ATTR_S; typedef enum tagNiChipPack { NI_CHIP_PACK_BT, /*BT输出*/ NI_CHIP_PACK_MIPI, /*MIPI输出*/ NI_CHIP_PACK_BUTT }NI_CHIP_PACK_E; typedef struct tagNiRegInfo { NI_CHIP_PACK_E enChipPack[NI_MAX_CHIPS]; /*芯片类型*/ NI_MIPI_LANE_ATTR_S stMipiLaneAttr; /*Mipi lane属性*/ NI_BOOL bCheckChipId; /*效验芯片的ID*/ NI_U8 u8AdCount; /*芯片个数*/ NI_DEV_INFO_S astNiDevInfo[NI_MAX_CHIPS]; /*记录每个芯片的I2C信息*/ NI_REG_FUNC_S stNiRegFunc; /*用户函数注册*/ }NI_REG_INFO_S; #ifdef __cplusplus #if __cplusplus } #endif #endif /* __cplusplus */ #endif /*__NI_COMM_H__*/