123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355 |
- /**
- * Copyright(c) 2011 Sunmedia Technologies - All Rights Reserved.
- *
- * @file al_psi_monitor.h
- *
- * @brief this file defines psi monitor interface for app layer.
- *
- * The file supports the psi monitor functions by used for app layer.
- * The psi monitor check all psi and si table changed,
- * if table change parse and update information to database and notify application dispose.
- *
- */
- #ifndef __AL_PSI_MONITOR_H__
- #define __AL_PSI_MONITOR_H__
- #include "al_basictypes.h"
- #include "dvb_dr.h"
- #include "al_database.h"
- #ifdef __cplusplus
- extern "C"{
- #endif
- /**
- * @brief Psi monitor dispose max other tp service namber.
- */
- #define PSIMON_MAX_OTHERTP_SRV 100
- #define PSIMON_MAX_EWSDETAIL_LEN 256
- /**
- * @brief Psi monitor special spec define.
- */
- typedef enum
- {
- AL_PSIMON_SPECIAL_SPEC_NONE = DVB_SPECIAL_SPEC_NONE, /**< None spec */
- AL_PSIMON_SPECIAL_SPEC_DTG = DVB_SPECIAL_SPEC_DTG, /**< DBOOK spec for UK */
- AL_PSIMON_SPECIAL_SPEC_ZBOOK = DVB_SPECIAL_SPEC_ZBOOK, /**< ZBOOK spec for ITALY */
- AL_PSIMON_SPECIAL_SPEC_NORDIG = DVB_SPECIAL_SPEC_NORDIG, /**< NORDIG spec for FINLAND, SWEDEN, DENMARK, NORWAY, GERMANY */
- AL_PSIMON_SPECIAL_SPEC_EBOOK = DVB_SPECIAL_SPEC_EBOOK, /**< EBOOK spec */
- AL_PSIMON_SPECIAL_SPEC_BASEON_PDSD = DVB_SPECIAL_SPEC_BASEON_PDSD,
- AL_PSIMON_SPECIAL_SPEC_THAI = DVB_SPECIAL_SPEC_THAI,
- #ifdef DVB_S
- AL_PSIMON_SPECIAL_SPEC_DVBS_TEST = DVB_SPECAIL_SPEC_DVBS_TEST,
- #endif
- #ifdef CONFIG_SUPPORT_FAST_SCANNING
- AL_PSIMON_SPECIAL_SPEC_M7_FASTSCAN = DVB_SPECIAL_SPEC_M7_FASTSCAN,
- #endif
- AL_PSIMON_SPECIAL_SPEC_DEMO_DEFAULT = DVB_SPECIAL_SPEC_DEMO_DEFAULT,
- } AL_PSIMon_SpecialSpec_t;
- /**
- * @brief Define psi dynamic update options.
- */
- typedef enum
- {
- AL_PSIMONITOR_CURTP_SRVADD = 1<<0, /**< Check SDT and NIT in addition */
- AL_PSIMONITOR_CURTP_SRVADD2 = 1<<1, /**< Check PAT in addition */
- AL_PSIMONITOR_CURTP_SRV_ATR = 1<<2, /**< Service name & attribute update check */
- AL_PSIMONITOR_CURTP_SRV_REMOVE = 1<<3, /**< When service info was gone , the service will be removed */
- AL_PSIMONITOR_CURTP_SRV_MOVE = 1<<4, /**< Service move descriptor, move a service from one TS to another */
- AL_PSIMONITOR_CURTP_SRV_REPLACE = 1<<5, /**< Service replacement check */
- AL_PSIMONITOR_LCN_DYNAMIC_UPDATE = 1<<6, /**< To support dynamic lcn update */
- AL_PSIMONITOR_OTHTP_SR_ADD = 1<<7, /**< Check other tp's service if any new tp found, its services add to database automatically */
- AL_PSIMONITOR_REPLACED_TO_ORIGNAL = 1<<8, /**< Service from replaced state to orignal state */
- AL_PSIMONITOR_OTHTP_FOND = 1<<9, /**< Check other tp frequency is change in nit, start to scan automatically */
- AL_PSIMONITOR_USER_TOTOFFSET = 1<<10, /**< if has TOT and country matched, forced use tot time offset */
- AL_PSIMONITOR_OTHTP_SR_UPDATE = 1<< 11, /**< Other tp sdt to update service info */
- #ifdef SUPPORT_NETWORK_UPDATE_RESCAN
- AL_PSIMONITOR_CURNWK_TP_RESCAN = 1<< 12, /**< Rescan to add/remove other tp */
- #endif
- AL_PSIMONITOR_KDG_LCN_DYNAMIC_UPDATE = 1<<13, /**< To support dynamic lcn update for Operator KDG */
- AL_PSIMONITOR_CURTP_SRVADDCHECKPMT = 1<<14, /**< Check PMT in addition */
- AL_PSIMONITOR_FREQ_UPDATE = 1<< 15,
- } AL_PsiMon_DynamicUpdate_Type_t;
- /**
- * @brief Define sipsi state.
- */
- typedef enum
- {
- AL_PSIMONITOR_STATE_NOT_RUNNING_FLAG = (1<<1), /**< Current program is not running, sdt running status is 0x01 */
- AL_PSIMONITOR_STATE_NOT_RUNNING_REPLACEMENT_EXIST = (1<<2), /**< Not running replacement exist, lingkage type is 0x05 */
- AL_PSIMONITOR_STATE_SCRAMBLED_REPLACEMENT_EXIST = (1<<3), /**< Scramble replacement exist, lingkage type is 0x03 */
- AL_PSIMONITOR_STATE_SIMULCAST_REPLACEMENT_EXIST = (1<<4), /**< Simulcast replacement exist, lingkage type is 0x82 , for NORDIG spec */
- AL_PSIMONITOR_STATE_NOT_RUNNING_REPLACED = (1<<5), /**< Not running replaced, has disposed not running replacement */
- AL_PSIMONITOR_STATE_SCRAMBLED_REPLACED = (1<<6), /**< Scramble replaced, has disposed scramble replacement */
- AL_PSIMONITOR_STATE_SIMULCAST_REPLACED = (1<<7), /**< Simulcast replaced, has dispose simulcase scramble replacement */
- #ifdef EPG_REPLACE
- AL_PSIMONITOR_STATE_EPG_REPLACEMENT_EXIST = (1<<8), /**< EPG replacement exist, lingkage type is 0x04 , for boxer spec */
- AL_PSIMONITOR_STATE_EPG_REPLACED = (1<<9), /**< EPG replaced, has disposed EPG replacement */
- #endif
- AL_PSIMONITOR_STATE_MAX,
- } AL_PsiMon_State_Type_t;
- /**
- * @brief Psi monitor simple service, used to service dynmc add and remove.
- */
- typedef struct _PSIMon_SimpleSrv
- {
- al_uint16 usOrgNetId; /**< orignal net work id */
- al_uint16 usNetWorkId; /** network id form NIT <*/ /*zhongbaoxing added fo NorDig test*/
- al_uint16 usTsId; /**< transport stream id */
- al_uint16 usPat_TsId;
- al_uint16 usServiceId; /**< service id */
- al_uint16 usProgNum; /**< program number */
- al_uint16 usPMTPid; /**< pmt pid */
- AL_DB_ERecordType_t ucServiceType; /**< service type */
- al_uint8 u8SDTSrvType;
- al_int32 uiFreq; /**< frequecy */
- al_uint8 *pucname; /**< program name */
- DBServAttrib_t stProgAttrib;
- struct _PSIMon_SimpleSrv *pstNext;
- } AL_PSIMon_SimpleSrv_t;
- /**
- * @brief Psi monitor audio comp data, used to multi audio dispose.
- */
- typedef struct _PsiMon_AudioComp
- {
- al_uint8 u8StreamType; /**< stream_type */
- al_uint16 u16ElementaryPid; /**< elementary_pid */
- al_uint16 u16DescLen; /**< total descriptor length */
- al_uint8 *pu8Desc; /**< pointer to descriptor */
- struct _PsiMon_AudioComp *pstNext;
- } AL_PsiMon_AudioComp_t;
- /**
- * @brief Psi monitor new service position for move descriptor.
- */
- typedef struct _PsiMon_NewSrvPosition
- {
- al_uint16 usOldServiceId; /**< Old service id */
- al_uint16 usOrgNetId; /**< Orignal network id */
- al_uint16 usTsId; /**< Transport id */
- al_uint16 usServiceId; /**< New service id */
- } AL_PsiMon_NewSrvPosition_t;
- #ifdef CONFIG_SUPPORT_INDONESIA_EWS
- #include "mid_siutil_dvb.h"
- typedef struct _PsiMon_EwsTrdwInfo
- {
- al_uint16 usDisaster;
- al_uint16 usLocationType;
- al_uint8 u8PackageId;
- al_uint8 u8NumLocations;
- SI_EWS_TRDW_LOCATION* locations;
- } AL_PsiMon_EwsTrdwInfo_t;
- typedef struct _PsiMon_EwsTcdwInfo
- {
- al_uint8 u8PackageId;
- al_uint8 u8Authority;
- al_uint16 usDisaster;
- SI_STRING_DESC* disaster_name;
- SI_STRING_DESC* disaster_position;
- SI_STRING_DESC* disaster_date;
- SI_STRING_DESC* disaster_characteristic;
- } AL_PsiMon_EwsTcdwInfo_t;
- typedef struct _PsiMon_EwsTmdwInfo
- {
- al_uint16 usLocationType;
- al_uint8 u8PackageId;
- al_uint8 u8NumMessages;
- SI_STRING_DESC** messages;
- } AL_PsiMon_EwsTmdwInfo_t;
- typedef struct _PsiMon_EwsList
- {
- al_uint8 u8NumTrdwEntries;
- al_uint32 u32TrdwCrc32;
- AL_PsiMon_EwsTrdwInfo_t *trdwEntries;
- al_uint8 u8NumTcdwEntries;
- al_uint32 u32TcdwCrc32;
- AL_PsiMon_EwsTcdwInfo_t *tcdwEntries;
- al_uint8 u8NumTmdwEntries;
- al_uint32 u32TmdwCrc32;
- AL_PsiMon_EwsTmdwInfo_t *tmdwEntries;
- } AL_PsiMon_EwsList_t;
- typedef struct _PsiMon_EwsDetail
- {
- // from TRDW
- al_uint16 usDisaster;
- al_uint16 usLocationType;
- al_uint8 u8PackageId;
- al_uint8 location_name[PSIMON_MAX_EWSDETAIL_LEN];
- // from TCDW
- al_uint8 u8Authority;
- al_uint8 disaster_name[PSIMON_MAX_EWSDETAIL_LEN];
- al_uint8 disaster_position[PSIMON_MAX_EWSDETAIL_LEN];
- al_uint8 disaster_date[PSIMON_MAX_EWSDETAIL_LEN];
- al_uint8 disaster_characteristic[PSIMON_MAX_EWSDETAIL_LEN];
- // from TMDW
- al_uint8 *message; // need to be freed explicitly by caller
- } AL_PsiMon_EwsDetail_t;
- AL_Return_t AL_PSI_Monitor_GetEwsDetail(al_uint32 u16AreaCode, AL_PsiMon_EwsDetail_t *ewsDetail);
- #endif
- /**
- * @brief Call back function prototype for application to register.
- */
- typedef al_void (* AL_pfPsiMonCheckSrvType)(al_uint8 SdtSrvType, al_uint8 SrvType, al_uint8 VideoCount, al_uint8 AudioCount, AL_DB_ERecordType_t *RetSrvType);
- typedef al_void (* AL_pfPsiMonCheckNotVisible)(al_uint8 SdtSrvType, al_uint8 bTempSrv, al_uint8 *bNotVisible, al_uint8 *bNotNeedSave);
- /**
- * @brief psi monitor start function.
- *
- * Active psi monitor task, start to monitor psi table and si table change
- *
- * @param hCurrProg playback play program handle.
- *
- * @param ClearReplaceData the flag of clearing replace data.
- *
- * @return AL_SUCCESS start is successful, AL_FAILURE otherwise.
- */
- AL_Return_t AL_PSI_Monitor_Start(AL_RecHandle_t hCurrProg, al_bool ClearReplaceData);
- /**
- * @brief psi monitor stop function.
- *
- * Stop psi monitor task, stop to monitor psi table and si table
- *
- * @param bExit[input] used to mark hang up psi monitor task or exit psi monitor.
- *
- * @return AL_SUCCESS stop is successful, AL_FAILURE otherwise.
- */
- AL_Return_t AL_PSI_Monitor_Stop(al_bool bExit, al_bool ClearReplaceData);
- /**
- * @brief get psi monitor running state function.
- *
- * Get dvb monitor current state.
- *
- * @param pbPsiMonState[output] psi monitor running state value.
- *
- * @return AL_SUCCESS get state is successful, AL_FAILURE otherwise.
- */
- AL_Return_t AL_PSI_Monitor_GetState(al_bool *pbPsiMonState);
- /**
- * @brief set psi monitor special spec
- *
- * Because different contry have different spec, example UK(DBook), this api to set special spec.
- *
- * @param eSpecConf[input] spec config
- *
- * @param eDynamicUpdate[input] psi monitor support dynamic update type
- *
- * @param pfPsiMonCheckSrvType[input] usded to check service type(TV/RADIO/DATA)
- *
- * @param pfPsiMonCheckNotVisible[input] usded to check service not visible
- *
- * @return AL_SUCCESS setup spec config is successful, AL_FAILURE otherwise.
- */
- AL_Return_t AL_PSI_Monitor_SetupConf(AL_PSIMon_SpecialSpec_t eSpecConf,
- AL_PsiMon_DynamicUpdate_Type_t eDynamicUpdate, AL_pfPsiMonCheckSrvType pfPsiMonCheckSrvType, AL_pfPsiMonCheckNotVisible pfPsiMonCheckNotVisible);
- void AL_PSI_Monitor_NotAddService(void);
- /**
- * @brief Get other tp service list from nit service list.
- *
- * Nit include other tp information, this function used to get other tp service list.
- *
- * @param psrv[output] other tp service list.
- *
- * @param pName service name
- *
- * @param pu16SrvNum[output] service total count.
- *
- * @return AL_SUCCESS get other tp services is successful, AL_FAILURE otherwise.
- */
- AL_Return_t AL_PSI_Monitor_GetOtherTpServList(AL_PSIMon_SimpleSrv_t *pSrv, al_uint8 *pName, al_uint16 *pu16SrvNum);
- #ifdef SUPPORT_NETWORK_UPDATE_RESCAN
- AL_Return_t AI_PSI_Monitor_UpdateCurrTpTSIDList(al_void);
- AL_Return_t AI_PSI_Monitor_GetVariedTpListFreq(al_uint32 *pu32TpListFreq);
- #endif
- /**
- * @brief Get current program audio component data.
- *
- * psi monitor received audio stream not do parse, store to cash buffer, provide to app get.
- *
- * @param pAudio[output] audio component data.
- *
- * @param pu16AudioNum[output] audio total count.
- *
- * @param pu16MinAudioPid[output] min audio pid.
- *
- * @param pu8VideoPidCount[output] video pid count.
- *
- * @return AL_SUCCESS get current program audio is successful, AL_FAILURE otherwise.
- */
- AL_Return_t AL_PSI_Monitor_GetCurrProgAudio(AL_PsiMon_AudioComp_t *pAudio,al_uint16 *pu16AudioNum,
- al_uint16 *pu16MinAudioPid, al_uint8 *pu8VideoPidCount);
- /**
- * @brief Get new srv position.
- *
- * For dispose service move descriptor, it is include new service information.
- *
- * @param pSrvPosition[output] new service information, service id/ts id/org net id.
- *
- * @return AL_SUCCESS get new service position is successful, AL_FAILURE otherwise.
- */
- AL_Return_t AL_PSI_Monitor_GetNewSrvPosition(AL_PsiMon_NewSrvPosition_t *pSrvPosition);
- /**
- * @brief psi monitor get FTA data.
- *
- * @ param pu8Data[output] the FTA data.
- *
- * @return AL_SUCCESS get dtg cmg data is successful, AL_FAILURE otherwise.
- */
- AL_Return_t AL_PSI_Monitor_GetFTAData(al_uint8 *pu8Data);
- /**
- * @brief psi monitor get CA data.
- *
- * @ param pu16Data[output] the CA data.
- *
- * @return AL_SUCCESS get CA data is successful, AL_FAILURE otherwise.
- */
- AL_Return_t AL_PSI_Monitor_GetCAData(al_uint16 *pu16Data);
- /**
- * @brief Check psi monitor sipsi state.
- *
- * This function used to check psi monitor sipsi info state,( NOT_RUNNING_REPLACEMENT_EXIST,
- * NOT_RUNNING_FLAG, SCRAMBLED_REPLACEMENT_EXIST, NOT_RUNNING_REPLACED, SCRAMBLED_REPLACED).
- *
- * @param u32State[input] sipsi state.
- *
- * @param pParam[output] sipsi state's parameter, program handle for replacement.
- *
- * @return al_ture if state exist, al_false if state not exist.
- */
- al_bool AL_PSI_Monitor_CheckState(al_uint32 u32State, AL_RecHandle_t *pParam);
- #ifdef __cplusplus
- }
- #endif
- #endif
|