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

📄 if101_io.h

📁 自己在wince的环境下做的一移动数字电视驱动
💻 H
字号:

/****************************************************************************
 *   TCC Version 0.0
 *   Copyright (c) telechips, Inc.
 *   ALL RIGHTS RESERVED
 *
****************************************************************************/
#ifndef INNO_IO_H
#define INNO_IO_H

#pragma once
#include <types.h>
#include "winioctl.h"

//***********************************************************************
#define INNO_IOCTLCode(f,m)  CTL_CODE ( FILE_DEVICE_UNKNOWN, 0x400 | (f), (m), FILE_ANY_ACCESS )


#define IOCTL_GET_FW_VERSION		INNO_IOCTLCode(1, METHOD_BUFFERED)	
#define IOCTL_SET_RECEIVE_TS0		INNO_IOCTLCode(2, METHOD_BUFFERED)		
#define IOCTL_SET_RECEIVE_PROGRAM	INNO_IOCTLCode(3, METHOD_BUFFERED)		
#define IOCTL_SET_FREQUENCY			INNO_IOCTLCode(4, METHOD_BUFFERED)	
#define IOCTL_SCAN_FREQUENCY		INNO_IOCTLCode(5, METHOD_BUFFERED)		
#define IOCTL_SET_PM				INNO_IOCTLCode(6, METHOD_BUFFERED)
#define IOCTL_SET_DEMOD_CONFIG		INNO_IOCTLCode(7, METHOD_BUFFERED)	
#define IOCTL_GET_DEMOD_CONFIG		INNO_IOCTLCode(8, METHOD_BUFFERED)	
#define IOCTL_GET_SYS_STATUS		INNO_IOCTLCode(9, METHOD_BUFFERED)	
#define IOCTL_GET_SYNC_STATUS		INNO_IOCTLCode(10, METHOD_BUFFERED)	
#define IOCTL_SET_CHANNEL_CONFIG	INNO_IOCTLCode(11, METHOD_BUFFERED)

typedef enum{
	INNO_NO_ERROR = 0,
	INNO_GENERAL_ERROR = 1,
	INNO_TIMEOUT_ERROR = 2,
	INNO_FW_OPERATION_ERROR = 3,
	INNO_PARAMETER_ERROR = 4,
}INNO_RETURN_CODE;

typedef enum{
	LG0_CHANNEL = 0,
	LG1_CHANNEL = 1,
//	TS0_CHANNEL = 2
}CHANNEL_NUM;


typedef enum{
	PM_MODE_PAUSE = 0x80,
	PM_MODE_RESUME = 0x40,
}PM_MODE;

typedef enum{
	DEMAP_BPSK = 0,	
	DEMAP_QPSK = 1,	
	DEMAP_16QAM = 2,
}MODULATE_TYPE;

typedef enum{
	RS_240_240 = 0, 	// RS(240,240)
	RS_240_224 = 1, 	// RS(240,224)
	RS_240_192 = 2, 	// RS(240,192)
	RS_240_176 = 3	 	// RS(240,176)
}RS_MODE;


typedef enum{
	OUTER_RERSERVE= 0, 
	OUTER_MODE_1 = 1,	
	OUTER_MODE_2 = 2,	
	OUTER_MODE_3 = 3
}OUTER_MODE;

typedef enum{
	LDPC_1_DIV_2 = 0,
	LDPC_3_DIV_4 = 1,
}LDPC_MODE;

typedef enum{
	CP_40TS = 0,
	CP_36TS = 1,
}CP_TYPE;

typedef struct{
	int ts_start;
	int ts_count;
	MODULATE_TYPE modulate_type:2;
	RS_MODE rs_mode:2;
	OUTER_MODE outer_mode:2;
	LDPC_MODE ldpc_mode:2;
}DEMOD_CONFIG;

typedef struct{
	unsigned char demod;	
	int ts_start;
	int ts_count;
}CHANNEL_CONFIG;

typedef struct{
	int lock;			// lock==1 means the frequency has been locked.
	unsigned int current_frequency; // current Tuner working frequency
	int signal_strength;		// signal strength
	int ldpc_err_percent;		// LDPC error percentage
	int cp_type;			// cp type 
	int scan_process;		// scan process. if == 1 means if101 is scaning 
	int scan_result;		// scan result. if == 1 means scan successufully 
}SYS_STATUS;

struct PROGRAMINFOITEM
{
	int freqPoint;
	int ServerID;
	BYTE nts;			//8	时隙数量
	BYTE startTs;
	BYTE demod;
};

int tpTvSetFreq(unsigned char freq);
int tpTvGetServiceInfo();
int tpTvSelectService(int pointer);
int tpTvScanFrequency(unsigned char start,unsigned char end);
int tpTvScanGetSync(unsigned char * sync);
int tpTvGetFWVersion(unsigned char * version,unsigned char versionsize);#endif

⌨️ 快捷键说明

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