⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 repid.h

📁 有线电视系统前端设备复用器原代码。 用语接受卫星信号
💻 H
📖 第 1 页 / 共 2 页
字号:
/*------------------------------------------------------------------*/
/* 宏定义,用于定义各寄存器的地址                                   */
/*------------------------------------------------------------------*/
#define PID_REMAP_REG                     *(unsigned char *)0x04020B03

#define PSI_FIFO_BASE_ADDR                                  0x04020022
#define PSI_FRAME_END_REG_BASE_ADDR                         0x04020024  

/*-------------------------------------------------------------------*/
/* FIFO_FLAG_REG 的位定义:                                          */
/* D0:1--不空,可以取一个包;0:空                                  */
/* D1:1--不半满                                                     */
/* D2:1--不满,0:满                                                */
/*-------------------------------------------------------------------*/
#define PSI_FIFO_PACKET_END_REG_BASE_ADDR                   0X04020024
#define PSI_FIFO_FLAG_REG_BASE_ADDR                         0X04020025

#define PSI_FIFO_RESET_REG_BASE_ADDR                        0X04020026
/*-------------------------------------------------------------------*/
/* 操作时没有先后顺序                                                */
/*-------------------------------------------------------------------*/
#define HIGH_INDEX_ADDR_REG_L_BASE_ADDR                     0X04020003
#define HIGH_INDEX_ADDR_REG_H_BASE_ADDR                     0X04020004 

#define HIGH_INDEX_REG_BASE_ADDR                            0X04020005

#define PID_DATA_L_REG_BASE_ADDR                            0X04020006
#define PID_DATA_H_REG_BASE_ADDR                            0X04020007

#define LOW_INDEX_REG_BASE_ADDR                             0X04020008

#define PSI_PID_L_REG_BASE_ADDR                             0X04020009
#define PSI_PID_H_REG_BASE_ADDR                             0X0402000A


#define STREAM_TYPE_PMT                                     0x99
#define STREAM_TYPE_PCR                                     0xAA
#define STREAM_TYPE_EMM                                     0xBB
#define STREAM_TYPE_ECM                                     0xCC

#define DES_LENGTH                                          0x20

#pragma	pack(1,1)

typedef struct STRUCT_TS_TAG
{
	/*-------------------------------------------------*/
	/* TS Packet Head(4 bytes)                         */
	/*-------------------------------------------------*/
	unsigned char  Sync_byte;                         /*      固定为0x47*/
	unsigned short Transport_err_indicator      :1 ;  /* = 0; 没有不可纠正错误*/
	unsigned short Payload_unit_start_indicator :1 ;  /* = 1; 负载中包含一个PAT首部*/
	unsigned short Transport_priority           :1 ;  /* = 0; 普通优先级*/
	unsigned short PID                          :13;  /* = 0; 0表示PAT分组类型*/
	unsigned char  Transport_scambling_control  :2 ;  /* = 0; 0:未加密*/
	unsigned char  Adaption_field_control       :2 ;  /* = 1; 无调整字段,只有有效字段*/
	unsigned char  Continuity_counter           :4 ;
}TS_TAG;

typedef struct STRUCT_SECTION_TAG
{
	unsigned char  TableID;                           /* PAT=0x00*/
	unsigned short Section_syntax_indicator  : 1 ;    /* 固定,置为1*/
	unsigned short Zero                      : 1 ;    /* = 0  */
	unsigned short Reserved1                 : 2 ;    /* */
	unsigned short SectionLength             : 12;    /* 长度固定,取13*/
}SECTION_TAG;

typedef struct STRUCT_PAT_SECTION_TAG
{
	unsigned char  TableID;                           /* PAT=0x00*/
	unsigned short Section_syntax_indicator  : 1 ;    /* 固定,置为1*/
	unsigned short Zero                      : 1 ;    /* = 0  */
	unsigned short Reserved1                 : 2 ;    /* */
	unsigned short SectionLength             : 12;    /* 长度固定,取13*/
	unsigned short Transport_stream_id;               /* 传送流ID,设置为0*/
	unsigned char  Reserved2                 : 2;     /* */
	unsigned char  Version_number            : 5;
	unsigned char  Current_next_indicator    : 1;     /* = 1;本PAT当前有效*/
	unsigned char  Section_number;
	unsigned char  Last_section_number;
}PAT_SECTION_TAG;

typedef struct STRUCT_CAT_SECTION_TAG
{
	unsigned char  TableID;                           /* PAT=0x00*/
	unsigned short Section_syntax_indicator  : 1 ;    /* 固定,置为1*/
	unsigned short Zero                      : 1 ;    /* = 0  */
	unsigned short Reserved1                 : 2 ;    /* */
	unsigned short SectionLength             : 12;    /* 长度固定,取13*/
	unsigned short Reserved2;                         /* 传送流ID,设置为0*/
	unsigned char  Reserved3                 : 2;     /* */
	unsigned char  Version_number            : 5;
	unsigned char  Current_next_indicator    : 1;     /* = 1;本CAT当前有效*/
	unsigned char  Section_number;
	unsigned char  Last_section_number;
}CAT_SECTION_TAG;

typedef struct STRUCT_PMT_SECTION_TAG
{
	unsigned char  TableID;                            /* 根据节目,调整*/
	unsigned short Section_syntax_indicator: 1 ;      /* 根据实际,调整*/
	unsigned short Zero                    : 1 ;      /* */
	unsigned short Reserved1               : 2 ;      /* */
	unsigned short SectionLength           : 12;      /* ??????????????*/
	unsigned short Program_number;                    /* 根据实际配置 */
	unsigned char  Reserved2               : 2;       /* */
	unsigned char  Version_number          : 5;
	unsigned char  Current_next_indicator  : 1;       /* 本PMT当前有效*/
	unsigned char  Section_number;
	unsigned char  Last_Section_number;
	unsigned short Reserved3               : 3 ;
	unsigned short PCR_PID                 : 13;
	unsigned short Reserved4               : 4 ;
	unsigned short Program_info_length     : 12;

}PMT_SECTION_TAG;

/*--------------------------------------------------------------------*/
/* SDT section head definition                                        */
/*--------------------------------------------------------------------*/
typedef struct STRUCT_SDT_SECTION_TAG
{
	unsigned char  TableID;
	unsigned short Section_Syntax_indicator:1;
	unsigned short Reserved_future_use1    :1;
	unsigned short Reserved1               :2;
	unsigned short Section_Length          :12;
	unsigned short Transport_stream_id;
	unsigned char  Reserved2               :2;
	unsigned char  Version_number          :5;
	unsigned char  Current_next_indicator  :1;
	unsigned char  Section_number;
	unsigned char  Last_section_number;
	unsigned short Original_network_id;
	unsigned char  Reserved_future_use2;
}SDT_SECTION_TAG;

typedef struct STRUCT_SDT_ELEMENT_TAG
{
	unsigned short Service_id;

	unsigned char  REE;

	unsigned short Running_status             :3;
	unsigned short Free_CA_mode               :1;
	unsigned short Descriptors_loop_length    :12;
}SDT_ELEMENT_TAG;

typedef struct STRUCT_CA_DESCRIPTOR_TAG
{
	unsigned char  Descriptor_tag;
	unsigned char  Descriptor_length;
	unsigned short CA_system_ID;
	unsigned short Reserved:                   3;
	unsigned short CA_PID:                     13;
}CA_DESCRIPTOR_TAG;

typedef struct STRUCT_SERVICE_DESCRIPTOR_TAG
{
	unsigned char Descriptor_tag;
	unsigned char Descriptor_length;
	unsigned char Service_type;
	unsigned char Service_provider_name_length;
}SERVICE_DESCRIPTOR_TAG;


/*----------------------------------------------------------------*/
/* That is all for the definition of SDT                          */
/*----------------------------------------------------------------*/

typedef struct STRUCT_ES_INFO_TAG
{
	unsigned char  Stream_type;
	unsigned short Reserved5	       : 3 ;
	unsigned short Elelmentary_PID	   : 13;
	unsigned short Reserved6	       : 4 ;
	unsigned short ES_info_length	   : 12;
}ES_INFO_Tag;

typedef struct STRUCT_PSI_SECTION
{
	unsigned short PID;
	unsigned char  Section[1100];
	unsigned short AssembleLength;
	unsigned short SectionLength;
}PSI_SECTION;

typedef struct STRUCT_PAT_SECTION
{
	unsigned char  *PAT_Section;
	unsigned short Section_Length;
}PAT_SECTION;

typedef struct STRUCT_CAT_SECTION
{
	unsigned char *CAT_Section;
	unsigned short Section_Length;
}CAT_SECTION;

typedef struct STRUCT_PMT_SECTION
{
	unsigned char  *PMT_Section;
	unsigned short Section_Length;
	unsigned short PMT_PID;
}PMT_SECTION;

typedef struct STRUCT_PID_MAP
{
	unsigned short OldPrgNo;
	unsigned short NewPrgNo;
	unsigned short SetPrgNo;
	unsigned char  StreamType;
	unsigned short OldPID;
	unsigned short NewPID;
	unsigned short SetPID;
	unsigned char  ucRmvScramble;
}PID_MAP;

typedef struct STRUCT_CMD_ITEM
{
	unsigned long  ItemLength;
	unsigned char  PortNo;
	unsigned short OldPrgNo;
	unsigned short NewPrgNo;
	unsigned char  StreamType;
	unsigned short OldPID;
	unsigned short NewPID;
	unsigned char  OriginProviderLength;
	unsigned char  OriginDescriptionLength;
	unsigned char  CurrentProviderLength;
	unsigned char  CurrentDescriptionLength;
	unsigned char  IsMuled;
}CMD_ITEM;

typedef struct STRUCT_CMD_ITEM_PANEL
{	
	unsigned char  PortNo;
	unsigned short OldPrgNo;
	unsigned short NewPrgNo;
	unsigned char  ServiceType;
	unsigned char  Desc[16];
	unsigned char  IsMuled;
}CMD_ITEM_PANEL;
/*------------------------------------------------------------------*/
/* 全局变量,用于保存PAT,PMT和再映射的信息                         */
/*------------------------------------------------------------------*/
typedef struct PortPID
{
	PAT_SECTION   PAT;
	CAT_SECTION   CAT;            /* 2001/8/1 加入,为了完成加密节目的传输 */
	PMT_SECTION   PMT[32];
	unsigned char PMTs;
	PID_MAP       PID_Map[256];
	unsigned char PIDs;
}PID_INFO;

/*----------------------------------------------------------------------------------------*/
/* FOR SDT                                                                                */
/*----------------------------------------------------------------------------------------*/
typedef struct STRUCT_SDT_Section
{
	unsigned short SectionLength;
	unsigned char  *Section;
}SDT_Section;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -