📄 zj_datapublic.h
字号:
typedef struct _ZJCAEmailContent{
unsigned long m_nEmailId; /*邮件标识号*/
unsigned char m_tSendTime[4]; /*发送时间*/
char m_sSenderInfo[ZJCA_MAX_EMAIL_SENDER_LEN]; /*发送者姓名*/
unsigned short m_nEmailLength; /*邮件内容长度*/
unsigned char m_sEmail[ZJCA_MAX_EMAIL_CONTENT_LEN]; /*邮件内容*/
}ZJCAEmailContent;
typedef struct _ZJStreamFilter{
short m_nPid; /*需要过滤的流的PID */
unsigned char sFilter[ZJCA_MAX_FILTER_LEN]; /*过滤器的值,为一个64个字节的数组,对应于滤取到的负载的前64个字节*/
unsigned char sMask[ZJCA_MAX_FILTER_LEN]; /*过滤器的掩码,为一个64个字节的数组,与过滤器字节一一对应,
bit位为0时szFilter里对应的bit位无效,可为任意值,bit位为1时szFilter里对应的bit位有效,数据包头中与该位相同的数据可认为匹配;
当sMask对应位被设置为无效时,该位不受pModePattern字段(如存在)影响。*/
ZJ_FILTER_TYPE filterType; /*过滤器类型,当取值为ZJ_FILTER_TYPE_NORMAL,时代表该过滤器属基本型过滤器,不支持反向过滤,pModePattern为无效字段。
当取值为ZJ_FILTER_TYPE_NEG_MATCH_MODE可支持反向过滤模式,并由pModePattern字段指明对应位的过滤模式。
对于另两种后缀为_CONTINUE的类型,表明滤取类型为对应类型的连续滤取类型,即连续获取数据知道停止函数被调用;
而无后缀过滤类型,当收到一个符合条件的包后,过滤停止*/
unsigned char* pModePattern; /*当过滤器类型取值为ZJ_FILTER_TYPE_NEG_MATCH_MODE时,该字段指示对应的每一个sFilter字段应使用正向过滤(取值为1)还是反向过滤(取值为0);
字段取值长度为ZJCA_MAX_FILTER_LEN,后缀为_CONTINUE类型与无后缀时类型功能对应,此时sMask仍然有效。
当设置正向过滤时,获取的数据为与sFilter对应位相同的数据;
当设置为反向过滤时,获取的数据为与sFilter对应位不相同的数据*/
long nTimeout; /*过滤器接收数据的最长等待时间单位为毫秒,0为无限等待*/
}ZJStreamFilter;
typedef struct _ZJCATerminalInfo_{
unsigned long m_nSerioNo; /*终端序列号*/
unsigned long m_nHardVersion; /*终端硬件版本号*/
unsigned long m_nSoftVersion; /*终端软件版本号*/
} ZJCATerminalInfo;
typedef struct _ZJProgramEPG_ {
char m_sDayDescription[ZJ_MAX_DAY_EPG][ZJ_MAX_DAY_CHAR]; /*每一天的描述信息,该字串可直接用于显示*/
char * m_pEventDescription[ZJ_MAX_DAY_EPG]; /*每一天节目的描述信息,该信息字段的解析参见附录A*/
} ZJProgramEPG;
typedef struct _ZJProgram_{
unsigned long m_nProgramID; /*当前节目的节目号,由系统维护,并唯一*/
char m_sProgramName[MAX_PROGRAMNAME_LENGTH]; /*节目名称*/
bool m_bIsEnc; /*当前节目是否加密;false-未加密;true-加密*/
char m_sProgramDescription[256]; /*当前节目的描述*/
unsigned char * m_pSdpInfo; /* SDP信息 */
ZJProgramEPG * m_pProgramEpg; /*指向本节目一周指南的指针*/
unsigned short m_nType; /*当前节目的类型*/
} ZJProgram;
typedef struct _ZJLiveEPG_ {
long m_nProgramNum; /*当前的节目数*/
unsigned long m_nVersion; /*当前EPG的版本号,其取值从0到0xffff */
ZJProgram * m_pProgramList; /*当前节目信息的描述数组指针,其中所包含的ZJProgram个数由m_nProgramNum决定*/
} ZJLiveEPG;
typedef void (*ZJEpgUpdateFUNC)(long); /*更新通知函数原型定义*/
/************************************************************************/
typedef struct _ZJAACData_ {
unsigned long m_nClockRate;
unsigned char m_sHexConfig[2];
unsigned long m_nTimeStamp;
unsigned long m_nFrameLength;
unsigned char *m_pFrameData;
}ZJAACData;
typedef struct _ZJMp4VData_ {
unsigned long m_nClockRate;
unsigned short m_nConfigLength;
unsigned char m_sHexConfig[200];
unsigned long m_nTimeStamp;
unsigned long m_nFrameLength;
unsigned char *m_pFrameData;
}ZJMp4VData;
typedef struct _ZJMiscData_
{
unsigned long m_nDataLength;
unsigned char * m_pData;
}ZJMiscData;
typedef struct _ZJStreamData_ {
unsigned long m_nProgramId;
unsigned short m_nStreamType; /*当前的流数据类型;该类型定义后8bit遵循ISO/IEC 13818标准*/
ZJ_AV_DATA_TYPE m_tDataType;
union {
ZJAACData m_aacData;
ZJMp4VData m_mp4VData;
ZJMiscData m_miscData; /* IP、UDP、ISMA或者ITS格式的数据 */
}m_StreamData;
}ZJStreamData;
typedef void (*ZJStreamDataProcFUNC)(ZJStreamData*); /*流数据接收通知函数原型定义*/
/************************************************************************/
typedef struct _ZJFramerTimeTag_ { /*系统参考时钟值*/
unsigned short m_nCounter0;
unsigned short m_nCounter1;
unsigned short m_nCounter2;
} ZJFramerTimeTag;
typedef struct _ZJResourceRight_{
unsigned short m_nRightType; /*资源的授权类型: 0为无限制类型;1为限制分发类型; 2为有限使用次数;0xFFFF未知授权类型;其他保留*/
union {
unsigned long m_nUseTime; /*当权利类型为2时,代表资源剩余的使用次数*/
}m_Right;
long m_nCharge; /*当前资源授权的收费额度,如为已获得的授权,该项值为0,该值为-1表示当前无收费信息*/
} ZJResourceRight;
typedef enum _ZJResourceType_{ /*资源类型定义*/
ZJ_MP2, /*MPEG音频,第一二层*/
ZJ_MP3, /*MPEG音频,第三层*/
ZJ_A_AVS, /*AVS音频文件*/
ZJ_WMA, /*WMA音频文件*/
ZJ_TXT, /*纯文本格式*/
ZJ_MPEG, /*MPEG2视频文件*/
ZJ_MP4, /*MPEG4视频文件*/
ZJ_V_AVS, /*AVS视频文件*/
ZJ_JPG, /*JPEG图像文件*/
ZJ_PNG, /*PNG图像文件*/
ZJ_GIF, /*GIF图像文件*/
ZJ_BMP, /*BMP图像文件*/
ZJ_MP2_IFRAME, /*MPEG2 I帧图像文件*/
ZJ_FLASH, /*FLASH文件*/
ZJ_HTML, /*html文件*/
ZJ_XML /*xml文件*/
} ZJResourceType;
typedef struct _ZJResourceProperty_{
LARGE_INT m_nSize; /*当前资源的大小*/
char m_sVersion[16]; /*资源版本,暂未使用,权做保留*/
ZJResourceType m_nType; /*资源类型,终端可根据该类型选择能支持的类型呈现给用户*/
bool m_bIsFree; /*当前资源是否加密;false-加密;true-不加密*/
bool m_bIsAuthored; /*当前资源是否已有授权;false-无授权;true-已有授权*/
ZJResourceRight* m_pRight; /*可为空;如m_bIsAuthored为true,指针指向有效数据,为当前资源已获得的使用权限;如m_bIsAuthored为false,指针指向有效数据,为当前资源可获得的使用权限;*/
unsigned short m_nPathLen; /*资源路径的长度*/
char m_nPath[255]; /*资源路径,指示当前资源在整个资源树下的位置。如/资讯/日常/天气预报/广东,表示在“资讯”资源的“日常”类中的“天气预报”节点下的“广东”资源。资源之间采用“/”来分隔,最后一个“/”后的字符串标识资源名称,它被用来直接呈现给用户。*/
} ZJResourceProperty;
typedef struct _ZJResource_{
unsigned long m_nID; /*资源的资源号,由系统维护,并唯一*/
char m_sDescription[256]; /*当前资源的描述*/
ZJResourceProperty m_pProperty; /*资源属性*/
} ZJResource;
typedef struct _ZJDownloadEPG_ {
long m_nResourceNum; /*当前的下载资源数*/
unsigned long m_nVersion; /*当前EPG的版本号,其取值从0到0xffff */
ZJResource * m_pResourceList; /*当前下载资源信息的描述数组指针,其中所包含的ZJResource个数由m_nResourceNum决定*/
} ZJDownloadEPG;
typedef struct _ZJResourceData_ {
unsigned long m_nID; /* 当前的数据块所属的资源ID */
unsigned long m_nTotalBlock; /* 该资源总的数据块数 */
unsigned long m_nBlockNumber; /* 当前数据块在总数据块中的序号 */
unsigned long m_nLength; /* 当前数据块的长度 */
unsigned char * m_nData; /* 资源的数据块 */
} ZJResourceData;
typedef struct _ZJFileAttribute_ { /*文件属性*/
unsigned long m_nSize; /*文件大小*/
unsigned char m_sLasModifiedTime[5]; /*文件最后修改时间 MJD + UTC*/
} ZJFileAttribute;
typedef struct _ZJ_T2ZRegFunction
{
typedef ZJRESULT (*zj_Z2T_SetRetrieveFilter)(unsigned long requestId, ZJStreamFilter filter);
typedef ZJRESULT (*zj_Z2T_StopRetrieve)(unsigned long requestId);
zj_Z2T_SetRetrieveFilter m_zj_Z2T_SetRetrieveFilter;
zj_Z2T_StopRetrieve m_zj_Z2T_StopRetrieve;
}ZJ_T2ZRegFunction;
typedef void (*ZJResourceDataProcFUNC)(ZJResourceData*); /*资源数据接收通知函数原型定义*/
#ifdef __cplusplus
}
#endif
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -