/**
* Copyright(c) 2011 Sunmedia Technologies - All Rights Reserved.
*
* @file al_service.h
*
* The interface to init, uninit and manipulate service.
*
* @brief Gives the functionalities for quering as well as manipulating
* the database on service related data.
*
* @note .
*/
#ifndef __AL_SERVICE_DBMERGE_H__
#define __AL_SERVICE_DBMERGE_H__
#include "al_basictypes.h"
#include "al_database.h"
#ifdef __cplusplus
extern "C"{
#endif
/****************************************************
* Enumeration definition
****************************************************//**
* @addtogroup EnumDef Enumeration definition
* @{
********************************************************/
/**
* @brief Enumeration of DVB service attribute.
*/
typedef enum
{
AL_SRV_DATTRIB_FAV1 = 1 << 1, /**< fave 1 bit*/
AL_SRV_DATTRIB_FAV2 = 1 << 2, /**< fave 2 bit*/
AL_SRV_DATTRIB_FAV3 = 1 << 3, /**< fave 3 bit*/
AL_SRV_DATTRIB_FAV4 = 1 << 4, /**< fave 4 bit*/
AL_SRV_DATTRIB_FAV5 = 1 << 5, /**< fave 5 bit */
AL_SRV_DATTRIB_FAV6 = 1 << 6, /**< fave 6 bit*/
AL_SRV_DATTRIB_FAV7 = 1 << 7, /**< fave 7 bit*/
AL_SRV_DATTRIB_FAV8 = 1 << 8, /**< fave 8 bit*/
AL_SRV_DATTRIB_MOVE = 1 << 9, /**< move bit*/
AL_SRV_DATTRIB_SKIP = 1 << 10, /**< skip bit*/
AL_SRV_DATTRIB_DEL = 1 << 11, /**< delete bit*/
AL_SRV_DATTRIB_UNSTABLE = 1 << 12, /**< unstable bit*/
AL_SRV_DATTRIB_LOCK = 1 << 13, /**< parental lock bit*/
AL_SRV_DATTRIB_SCAMBLE = 1 << 14, /**< scramble bit*/
AL_SRV_DATTRIB_NOTRUN = 1 << 15, /**< */
AL_SRV_DATTRIB_TMPSRV = 1 << 16, /**< temp service type */
AL_SRV_DATTRIB_MPEG4TYPE = 1 << 17, /**< mpeg4 type */
AL_SRV_DATTRIB_VIDEOAVC = 1 << 18, /**< avc type */
AL_SRV_DATTRIB_NOTVISIBLE = 1 << 19, /**< not visible */
AL_SRV_DATTRIB_NOTSELETECTABLE = 1 << 20, /**< not selectable type */
AL_SRV_DATTRIB_FREECA = 1 << 21, /**< free CA type */
AL_SRV_DATTRIB_NAMEMODIFIED = 1 << 22, /**< program name modified by user */
AL_SRV_DATTRIB_NITMATCH = 1 <<23, /**< network id matched */
AL_SRV_DATTRIB_ONIDMATCH = 1 << 24, /**< origine network matched */
AL_SRV_DATTRIB_PROGNAMEMATCH = 1 << 25, /**< program name matched */
AL_SRV_DATTRIB_CIPLUSUSED = 1 << 26, /**< only ci plus direct tune and play used */
AL_SRV_DATTRIB_MAX = 1 << 31,
} AL_Serv_EDigitalAttrib_t;
/**
* @brief Enumeration of Analog service attribute.
*/
typedef enum
{
AL_SRV_AATTRIB_FAV1 = 1 << 1, /**< fave 1 bit*/
AL_SRV_AATTRIB_FAV2 = 1 << 2, /**< fave 2 bit*/
AL_SRV_AATTRIB_FAV3 = 1 << 3, /**< fave 3 bit*/
AL_SRV_AATTRIB_FAV4 = 1 << 4, /**< fave 4 bit*/
AL_SRV_AATTRIB_FAV5 = 1 << 5, /**< fave 5 bit */
AL_SRV_AATTRIB_FAV6 = 1 << 6, /**< fave 6 bit*/
AL_SRV_AATTRIB_FAV7 = 1 << 7, /**< fave 7 bit*/
AL_SRV_AATTRIB_FAV8 = 1 << 8, /**< fave 8 bit*/
AL_SRV_AATTRIB_INUSE = 1 << 9, /**< inuse bit*/
AL_SRV_AATTRIB_SKIP = 1 << 10, /**< skip bit*/
AL_SRV_AATTRIB_DEL = 1 << 11, /**< delete bit*/
AL_SRV_AATTRIB_LOCK = 1 << 12, /**< parental lock bit*/
AL_SRV_AATTRIB_AFC = 1 << 13, /**< AFC bit*/
AL_SRV_AATTRIB_TVTYPE = 1 << 14,
AL_SRV_AVATTRIB_VALID = 1 << 15,
AL_SRV_AATTRIB_MAX = 1 << 31,
} AL_Serv_EAnalogAttrib_t;
/**
* @brief Enumeration of search field.
*/
typedef enum
{
AL_SRV_SEARCHFIELD_TSID = 1 << 1,
AL_SRV_SEARCHFIELD_SRVID = 1 << 2,
AL_SRV_SEARCHFIELD_ORIGNETID = 1 << 3,
AL_SRV_SEARCHFIELD_PROGNO = 1 << 4,
AL_SRV_SEARCHFIELD_FREQ = 1 << 5,
AL_SRV_SEARCHFIELD_SYMRATE = 1 << 6,
AL_SRV_SEARCHFIELD_NETID = 1 << 7,
} AL_Serv_ESearchField_t;
/****************************************************
* Structure definition
****************************************************//**
* @}
* @defgroup StructDef Structure definition
* @{
********************************************************/
/**
* @brief Structure of service attribute filter.
*/
typedef struct
{
AL_DB_EDBType_t eDBType;
AL_DB_ERecordType_t eRecType;
AL_Serv_EAnalogAttrib_t eAPositive;
AL_Serv_EAnalogAttrib_t eANegative;
AL_Serv_EDigitalAttrib_t eDPositive;
AL_Serv_EDigitalAttrib_t eDNegative;
al_uint8 szProgName[DB_DVB_MAX_CHNAME_LEN]; /**< program name*/
} AL_Serv_AttribFilter_t;
/**
* @brief Structure for searching services.
*/
typedef struct
{
AL_DB_EDBType_t eDBType;
AL_DB_ERecordType_t eRecType;
AL_Serv_ESearchField_t eSearchField;
al_uint16 u16ServId;
al_uint16 u16TsId;
al_uint16 u16OrigNetId;
al_uint32 u32ProgNo;
al_uint32 u32Frequency;
al_uint32 u32SymbolRate;
al_uint16 u16NetId;
/**
* zhongbaoxing added this element to consider the attrib
* in AL_Serv_MatchRecBySearchKey @20120204
*/
AL_Serv_EDigitalAttrib_t eIncludeAttrib;
} AL_Serv_SearchKey_t;
#ifdef CONFIG_ISDB_SYSTEM
typedef enum
{
ATVDB_AIR = 0,
ATVDB_CABLE,
}APP_AtvDb_Type;
void APP_Database_SwitchATVDB(APP_AtvDb_Type type);
void APP_Database_SetCareIsValid(al_bool care);
#endif
#ifdef CONFIG_SUPPORT_ATV_SCAN_NTSCM_PALM_N
typedef enum
{
ATVDB_AIR = 0,
ATVDB_CABLE,
}APP_AtvDb_Type;
void APP_Database_SwitchATVDB(APP_AtvDb_Type type);
void APP_Database_SetCareIsValid(al_bool care);
#endif
/****************************************************
* API definition - Internal Operation
****************************************************//**
* @}
* @addtogroup InterAPI Internal Interface
* @{
********************************************************/
/**
* @brief Initialize service component.
*
* The implementation may perform appropriate service initialisation when this
* call is made, if required.
*
* @note
* 1.This API must be called before any service-related function is called;
* 2.Must be called once successfully, and still return success when called again.
*
* @param eDBType [in]select one or more database to initialize service component.
*
* @return
* #AL_SUCCESS indicates success,
* On failure, #AL_FAILURE is returned.
*/
AL_Return_t AI_Service_Init(
AL_DB_EDBType_t eDBType);
/**
* @brief Terminate service commponent.
*
* The implementation may perform appropriate service termination when this
* call is made, if required.
*
* @note
* 1.This API must be called after any service-related function is called,
* 2.Must be called once successfully, and still return success when called again.
*
* @param eDBType [in]Select one or more database to terminate service component.
*
* @return
* #AL_SUCCESS indicates success,
* On failure, #AL_FAILURE is returned.
*
*/
AL_Return_t AI_Service_Term(
AL_DB_EDBType_t eDBType);
/****************************************************
* API definition - Service Operation
****************************************************//**
* @}
* @addtogroup COMAPI Component APIs
* @{
********************************************************/
/**
* @brief Match service by specified attribute flag.
*
* @note Refers to the prototype #AL_DB_RecordMatchFunc.
*
* @param param [in]Service attributes filter, type: #AL_Serv_AttribFilter_t.
* @param pRec [in]Servie Info.
*
* @return
* #AL_SUCCESS indicates success,
* On failure, #AL_FAILURE is returned.
*/
al_bool AL_Serv_MatchRecByAttribute(al_void *param, al_void const*pRec);
/**
* @brief Match service by specified search field.
*
* @note Refers to the prototype #AL_DB_RecordMatchFunc.
*
* @param param [in]Search key, type: #AL_Serv_SearchKey_t.
* @param pRec [in]Service detail.
*
* @return
* #AL_SUCCESS indicates success,
* On failure, #AL_FAILURE is returned.
*/
al_bool AL_Serv_MatchRecBySearchKey(al_void *param, al_void const*pRec);
#ifdef SUPPORT_GHANA_LCN
AL_Return_t AL_Serv_BackupUserServsLCN( al_uint8 country );
#endif
AL_Return_t AL_Serv_StoreUserServs(AL_DB_EDBType_t eDBType);
AL_Return_t AL_Serv_RetrieveUserServs(AL_DB_EDBType_t eDBType);
/****************************************************//**
* @}
********************************************************/
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* __AL_SERVICE_H__ */