/*****************************************************************************
** File: al_area_info.h
**
** Description: Area information define
**
** Copyright(c) 2011 Sunmedia Technologies - All Rights Reserved
**
** Author : kun.li
**
** $Id$
*****************************************************************************/
#ifndef	__AL_AREA_INFO_H__
#define	__AL_AREA_INFO_H__

#include "al_basictypes.h"

#define LCN_OFF				0
#define LCN_ON				1
#define LCN_ONID			2
#define LCN_ONOFF_CHANGED	(1 << 1)

#define NID_RANGE_SIZE		0x00FF
#define NID_UNALLOCATED		0xFFFF

/* Region Transponder Sect information
** Channel Number = (EndChNum - StChNum) + 1
*/
typedef union
{
	al_uint8 bByte;				/* Band width byte */
	struct
	{
		al_uint8 BaseBandWidth:4;	/* Base band width */
		al_uint8 BandWidth6MEn:1;	/* Band width 6M enable */
		al_uint8 BandWidth7MEn:1;	/* Band width 7M enable */
		al_uint8 BandWidth8MEn:1;	/* Band width 8M enable */
		al_uint8 BandWidthSWEn:1;	/* Band width switch enable */
	} eBandWidth;
} AL_BandWidth_Info_st;

/* Region Transponder Sect information
** Channel Number = (EndChNum - StChNum) + 1
*/
typedef struct
{
	al_uint32 StartFreq;	/*Start Transponder Frequency */
	AL_BandWidth_Info_st stBandWidth;		/*Transponder Bandwidth */
	al_uint8 StartTpNum;	/*Start Transponder Number */
	al_uint8 SectTPCount;	/*Sect Transponder Count */
	al_uint8 UHF_VHF;		/*Transmit mode, 0 for UHF, 1 for VHF */
	al_uint8 ucSpec_inver;
#ifdef SUPPORT_HIERARCHY_MODE
	al_uint8 U8HierarchyMode;	/* Hierarchy mode */
#endif
} AL_TPSects_Info_st;

typedef struct {
	al_uint8 AreaIndex;
	const AL_TPSects_Info_st* pTPRegion_Area;
	const char* const* pTPNumStr;
	al_uint8 SectNum;//data number in pTPRegion_Area[]
	al_uint8 TotalTpCount;//total transport number, summary of pTPRegion_Area[]
	char CountryCode[3];
	al_uint16 CountryNum;
	/* Network ID range base,
	** range size of every Network ID is 0xff,
	** 0xFFFF means UN-ALLOCATED
	*/
	al_uint16 NIDRangeBase;

	void* pExt;
} AL_DVBT_AreaTable_t;

typedef struct {
	al_uint32 usFreq; 			///< Transponder frequency
	al_uint16	usSymRate;		///< Transponder symbol rate
	al_uint8	u8Polar;			///< Transponder polarzation
	al_uint8	 ucTp_dvb_type; /**< DVB-S delivery type(S or S2) */
} AL_DVBS_SatTPTable_t;

typedef struct
{
	al_uint32	uiFrequency; // MHz
	al_uint32 	uiSymbRate;
	al_uint16 	usModulation;
} AL_CableTP_Info_st;

typedef struct
{
	al_uint8 ucAreaIndex;
	const al_uint32* pstTpTbl;
	al_uint32 uiTpNum;

} AL_DVBC_AreaTable_t;

typedef struct
{
	al_uint8 ucSatIndex;
	const AL_DVBS_SatTPTable_t* pstTpTbl;
	al_uint32 uiTpNum;
} AL_DVBS_AreaTable_t;

typedef struct
{
	al_uint32 uiPolarization;
	al_uint32 uiFrequency; // MHz
	al_uint32 uiSymbRate;
    al_uint32 uiFEType;
	al_uint32 hNet; /* Indicates the parenet of the tp */
	al_uint8 modulation;
	al_uint8 ucCode_rate;
	al_uint8 ucSpec_inver;
} AL_SateTP_Info_st;

typedef enum {
#if defined (CONFIG_DVB_SYSTEM) || defined (CONFIG_ANALOGUE_ONLY_SYSTEM)
	AREA_GERMANY = 0,
	AREA_ENGLAND,
	AREA_FRANCE,
	AREA_ITALY,
	AREA_POLAND,
	AREA_SPAIN,
	AREA_BELGIUM,
	AREA_NETHERLANDS,
	AREA_SWITZERLAND,
	AREA_PORTUGAL,
	AREA_SWEDEN,
	AREA_FINLAND,
	AREA_CZECHREPUBLIC,
	AREA_HUNGARY,
	AREA_SLOVENIA,
	AREA_GREECE,
	AREA_RUSSIA,
	AREA_TURKEY,
	AREA_DENMARK,
	AREA_NORWAY,
	AREA_TAIWAN,
	AREA_CHINA,
	AREA_IRELAND,
	AREA_AUSTRIA,
	AREA_SLOVAKIA,
	AREA_CROATIAN,
	AREA_SERBIA,
	AREA_HONGKONG,
	AREA_THAILAND,
	AREA_VIETNAM,
	AREA_GHANA,
	AREA_MONGOLIA,
	AREA_BELARUS,
	AREA_IRAN,
#ifdef CONFIG_SUPPORT_DUBAI
	AREA_DUBAI,
#endif
    AREA_MALAYSIA,	    //马来西亚
    AREA_MYANMAR,
    AREA_INDONESIA,     //印度利西亚
	AREA_OTHER,
#elif defined(CONFIG_DTMB_SYSTEM)
	AREA_CHINA = 0,
	AREA_HONGKONG,
	AREA_OTHER,
#endif
#ifdef CONFIG_AUS_DVB_SYSTEM
	AREA_AUSTRALIA,
	AREA_NEW_ZEALAND,
	AREA_SINGAPORE,
	AREA_AUS_OTHER,
#endif
#ifdef CONFIG_ISDB_SYSTEM
	AREA_BRAZIL = 0,// 巴西
	AREA_ARGENTINA, // 阿根挺
	AREA_CHILE, // 智利
	AREA_PERU,// 秘鲁
	AREA_VENEZUELA,// 委内瑞拉
	AREA_PHILIPPINES,// 菲律宾
	AREA_ISDB_OTHER,
#endif
	MAX_AREA,
} AL_AreaIndex_en;

#endif //__AL_AREA_INFO_H__

/*****************************************************************************
** $Rev$
**
*****************************************************************************/
