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

📄 st_pti.h

📁 ST5100 driver files for ST chipset
💻 H
字号:
/*******************************************************************************

File Name   : pti.h

Description : Header of STPTI testtool file.

COPYRIGHT (C) STMicroelectronics 2004.

*******************************************************************************/

#ifndef __PTI_H
#define __PTI_H

/* Includes ----------------------------------------------------------------- */

#include "stpti.h"
#include "app_data.h"
#include "service.h"

#ifdef TESTTOOL
 #include "testtool.h"
#endif

/* C++ support */
#ifdef __cplusplus
extern "C" {
#endif

/* Exported Types ----------------------------------------------------------- */

/* Service supported                                                          */
typedef enum PTI_Service_e
{
    PTI_SERVICE_DVB = 0,
    PTI_SERVICE_DTV = 1,
    PTI_SERVICE_MAX = 3
} PTI_Service_t;

/* Id for Slot/Filter/Buffer access                                           */
typedef enum PTI_SlotTypeId_e
{
    PTI_SLOT_TYPE_VIDEO = 0,
    PTI_SLOT_TYPE_AUDIO = 1,
    PTI_SLOT_TYPE_PCR   = 2,
    PTI_SLOT_TYPE_TTX   = 3,    
    PTI_SLOT_TYPE_MAXID = 4
} PTI_SlotTypeId_t;

/* Process Stream type                                                        */
typedef enum PTI_StreamType_e
{
    PTI_STREAMTYPE_AV,                                       /* Audio / Video */
    PTI_STREAMTYPE_CARROUSEL,
    PTI_STREAMTYPE_HDD,
    PTI_STREAMTYPE_INVALID
} PTI_StreamType_t;

/* CDFiFo parameters used by STPTI driver                                     */
typedef struct PTI_CDFifoParamsVideo_s
{
    VID_DeviceId_t VIDDeviceId;/* Video Driver associated, VID_MAXDEVICE = No */
    U32            CDFifo;     /* CD Fifo address (Audio, Video, ..)          */
    BOOL           UseCdFifo;  /* Target is CD Fifo                           */
    U32            BufferSize; /* Buffer size                                 */
} PTI_CDFifoParamsVideo_t;
typedef struct PTI_CDFifoParamsAudio_s
{
    U32            CDFifo;     /* CD Fifo address (Audio, Video, ..)          */
    BOOL           UseCdFifo;  /* Target is CD Fifo                           */
    U32            BufferSize; /* Buffer size                                 */
} PTI_CDFifoParamsAudio_t;

/* Parameters to provide Audio Video Stream                                   */
typedef struct PTI_ProcessStreamAV_s
{
    PTI_CDFifoParamsVideo_t Video;                        /* Video Parameters */
    PTI_CDFifoParamsAudio_t Audio;                        /* Audio Parameters */
} PTI_ProcessStreamAV_t;

/* Parameters to provide Carousel TO_DO                                       */
typedef struct PTI_ProcessStreamCarousel_s
{
    U32                     to_do_carousel_user_param;
} PTI_ProcessStreamCarousel_t;

/* Parameters to provide HDD TO_DO                                            */
typedef struct PTI_ProcessStreamHDD_s
{
    U32                     to_do_hdd_user_param;
} PTI_ProcessStreamHDD_t;

/* Process Stream parameters                                                  */
typedef struct PTI_ProcessStream_s
{
    /* Stream type */
    PTI_StreamType_t            StreamType; /* Audio/Video, carousel, HDD, ...*/

    /* Stream */
    PTI_ProcessStreamAV_t       av;       /* StreamType = PTI_STREAMTYPE_AV   */
    PTI_ProcessStreamCarousel_t carousel; /* StreamType = PTI_STREAMTYPE_CARROUSEL */
    PTI_ProcessStreamHDD_t      hdd;      /* StreamType = PTI_STREAMTYPE_HDD  */

} PTI_ProcessStream_t;

/* PTI access information, this "object" is configured into app_data.c        */
typedef struct PTI_DeviceHandle_s
{
    ST_DeviceName_t             DeviceName;         /* Used by STPTI_Init     */
    STPTI_Handle_t              *Handle_p;          /* Handle_p               */
    PTI_ProcessStream_t         *ProcessStream_p;   /* Process Stream         */
    STPTI_Device_t              Device;             /* Device type PTI1/PTI3  */
    U32                         TCDeviceAddress;    /* @ Transport Controleur */
    U32                         TCIntNumber;        /* Interrupt Number TC    */
    STPTI_FilterOperatingMode_t FilterMode;         /* Filter mode            */
    EVT_DeviceId_t              EVTDeviceId;        /* DeviceId for Event     */
    PTI_Service_t               Service;            /* PTI Service used       */
	STPTI_StreamID_t			StreamId;			/* PTI Stream ID          */
} PTI_DeviceHandle_t;

/* For each slot we need to keep this information                             */
typedef struct Pti_SlotKeepInfo_s
{
    STPTI_Slot_t    SlotHandle;     /* Slot handle */
    STPTI_Pid_t     Pid;            /* PID */
    STPTI_Filter_t  FilterHandle;   /* Filter handle */
    STPTI_Buffer_t  BufferHandle;   /* PTI Destination Buffer handle */
    U32             BufferSize;     /* PTI Destination Buffer size   */
    STPTI_Signal_t  SignalHandle;   /* PTI Destination Signal handle */
    U8              *UserBuffer_p;  /* User Buffer */
    U32             UserBufferSize; /* User Buffer */
    BOOL            InUse;          /* In use ? */
} Pti_SlotKeepInfo_t;

extern Pti_SlotKeepInfo_t Pti_SlotKeepInfo[PTI_MAXDEVICE][PTI_MAXOPEN][PTI_SLOT_TYPE_MAXID];
extern STPTI_Buffer_t PTI_AudioBufferHandle_Multiple[PTI_MAXDEVICE], PTI_VideoBufferHandle_Multiple[PTI_MAXDEVICE];

/* Exported Constants ------------------------------------------------------- */

/* Exported Variables ------------------------------------------------------- */

extern PTI_DeviceHandle_t PtiDeviceHandle[];

/* Exported Macros ---------------------------------------------------------- */

#define PTI_GET_DEVICENAME(h)              (PtiDeviceHandle[(h)].DeviceName)
#define PTI_GET_HANDLE(h,id)               ((PtiDeviceHandle[(h)].Handle_p)[(id)])
#define PTI_GET_PROCESSSTREAM(h,id)        ((PtiDeviceHandle[(h)].ProcessStream_p)[(id)])
#define PTI_GET_DEVICE(h)                  (PtiDeviceHandle[(h)].Device)
#define PTI_GET_TCADDRESS(h)               (PtiDeviceHandle[(h)].TCDeviceAddress)
#define PTI_GET_TCINTERRUPT(h)             (PtiDeviceHandle[(h)].TCIntNumber)
#define PTI_GET_FILTERMODE(h)              (PtiDeviceHandle[(h)].FilterMode)
#define PTI_GET_EVTDEVICEID(h)             (PtiDeviceHandle[(h)].EVTDeviceId)
#define PTI_GET_SERVICE(h)                 (PtiDeviceHandle[(h)].Service)
#define PTI_GET_STREAMID(h)                (PtiDeviceHandle[(h)].StreamId)

#define PTI_PROCESSSTREAM_IS_AV(h,id)      (((PTI_GET_PROCESSSTREAM(h,id)).StreamType) == PTI_STREAMTYPE_AV)
#define PTI_PROCESSSTREAM_IS_CAR(h,id)     (((PTI_GET_PROCESSSTREAM(h,id)).StreamType) == PTI_STREAMTYPE_CARROUSEL)
#define PTI_PROCESSSTREAM_IS_HDD(h,id)     (((PTI_GET_PROCESSSTREAM(h,id)).StreamType) == PTI_STREAMTYPE_HDD)

#define PTI_GET_AUDIO_CDFIFO(h,id)         ((PTI_GET_PROCESSSTREAM(h,id)).av.Audio.CDFifo)
#define PTI_USE_AUDIO_CDFIFO(h,id)         ((PTI_GET_PROCESSSTREAM(h,id)).av.Audio.UseCdFifo)
#define PTI_GET_AUDIO_BUFFERSIZE(h,id)     ((PTI_GET_PROCESSSTREAM(h,id)).av.Audio.BufferSize)

#define PTI_GET_VIDEODRIVER_DEVICEID(h,id) ((PTI_GET_PROCESSSTREAM(h,id)).av.Video.VIDDeviceId)
#define PTI_GET_VIDEO_CDFIFO(h,id)         ((PTI_GET_PROCESSSTREAM(h,id)).av.Video.CDFifo)
#define PTI_USE_VIDEO_CDFIFO(h,id)         ((PTI_GET_PROCESSSTREAM(h,id)).av.Video.UseCdFifo)
#define PTI_GET_VIDEO_BUFFERSIZE(h,id)     ((PTI_GET_PROCESSSTREAM(h,id)).av.Video.BufferSize)

#define PTI_HANDLE_NULL                    (STPTI_Handle_t)NULL

/* Exported Functions ------------------------------------------------------- */

/* ========================================================================== */
/* Generic Function                                                           */
/* ========================================================================== */
/* -----------------------------------------------------------------------------
 * Name        : PTI_Init
 * Description : Initialize a STPTI for a DeviceId
 * Parameters  : PTI_DeviceId_t DeviceId, SERVICE_Mode_t SERVICE_Mode
 * Assumptions :
 * Limitations :
 * Returns     : ErrCode
 * -------------------------------------------------------------------------- */
ST_ErrorCode_t PTI_Init(PTI_DeviceId_t DeviceId, SERVICE_Mode_t SERVICE_Mode);

/* -----------------------------------------------------------------------------
 * Name        : PTI_Open
 * Description : Open a STPTI connection
 * Parameters  :
 *     PTI_DeviceId_t    DeviceId    "Target"
 *     PTI_HandleId_t    HandleId    For multi-instance management
 * Assumptions :
 * Limitations :
 * Returns     : ErrCode
 * -------------------------------------------------------------------------- */
ST_ErrorCode_t  PTI_Open         ( PTI_DeviceId_t DeviceId, PTI_HandleId_t HandleId );

/* -----------------------------------------------------------------------------
 * Name        : PTI_Close
 * Description : Close a STPTI connection
 * Parameters  :
 *     PTI_DeviceId_t    DeviceId    "Target"
 *     PTI_HandleId_t    HandleId    For multi-instance management
 * Assumptions :
 * Limitations :
 * Returns     : ErrCode
 * -------------------------------------------------------------------------- */
ST_ErrorCode_t  PTI_Close        ( PTI_DeviceId_t DeviceId, PTI_HandleId_t HandleId );
/* -----------------------------------------------------------------------------
 * Name        : PTI_Term
 * Description : Close a STPTI DeviceId
 * Parameters  :
 *     PTI_DeviceId_t      DeviceId    "Target"
 *     BOOL                ForceTerminate  Force terminate
 * Assumptions :
 * Limitations :
 * Returns     : ErrCode
 * -------------------------------------------------------------------------- */
ST_ErrorCode_t  PTI_Term         ( PTI_DeviceId_t DeviceId, BOOL ForceTerminate );


/* ========================================================================== */
/* PTI event enabling                                                        */
/* ========================================================================== */
ST_ErrorCode_t PTI_EnableErrorEvents(PTI_DeviceId_t DeviceId);


/* ========================================================================== */
/* Audio PES managment                                                        */
/* ========================================================================== */
ST_ErrorCode_t  PTI_AudioStop    ( PTI_DeviceId_t DeviceId, PTI_HandleId_t HandleId );
ST_ErrorCode_t  PTI_AudioStart   ( PTI_DeviceId_t DeviceId, PTI_HandleId_t HandleId,
                                   STPTI_Pid_t AudioPid );

/* ========================================================================== */
/* Video PES managment                                                        */
/* ========================================================================== */
ST_ErrorCode_t  PTI_VideoStop    ( PTI_DeviceId_t DeviceId, PTI_HandleId_t HandleId );
ST_ErrorCode_t  PTI_VideoStart   ( PTI_DeviceId_t DeviceId, PTI_HandleId_t HandleId );                                  

/* ========================================================================== */
/* PCR managment                                                              */
/* ========================================================================== */
ST_ErrorCode_t  PTI_PCRStop      ( PTI_DeviceId_t DeviceId, PTI_HandleId_t HandleId );
ST_ErrorCode_t  PTI_PCRStart     ( PTI_DeviceId_t DeviceId, PTI_HandleId_t HandleId,
                                   STPTI_Pid_t PCRPid );

/* ========================================================================== */
/* TTX managment                                                              */
/* ========================================================================== */
ST_ErrorCode_t PTI_TTXStop( PTI_DeviceId_t DeviceId, PTI_HandleId_t HandleId );
ST_ErrorCode_t PTI_TTXStart( PTI_DeviceId_t DeviceId, PTI_HandleId_t HandleId,
                             STPTI_Pid_t TTXPid );
/* ========================================================================== */
/* PTI Slot Pid management                                                              */
/* ========================================================================== */
ST_ErrorCode_t  PTI_ChangeSlotPid ( PTI_DeviceId_t DeviceId, PTI_HandleId_t HandleId,
                                    PTI_SlotTypeId_t SlotType, STPTI_Pid_t Pid );

ST_ErrorCode_t PTI_SetSlotPid( PTI_DeviceId_t DeviceId, PTI_HandleId_t HandleId,
                                  PTI_SlotTypeId_t SlotType, STPTI_Pid_t Pid );
                                    
ST_ErrorCode_t PTI_ClearSlotPid( PTI_DeviceId_t DeviceId, PTI_HandleId_t HandleId,
                                  PTI_SlotTypeId_t SlotType );                                                                
/* -----------------------------------------------------------------------------
 * Name        : PTI_PCRGetSlotHandle
 * Description : Return PCR SlotHandle
 * Parameters  :
 *     PTI_DeviceId_t        DeviceId         "Target"
 *     PTI_ProcessStreamId_t ProcessStreamId  "Process stream"
 *     STPTI_Slot_t         *SlotHandle       "returned value"
 * Assumptions :
 * Limitations :
 * Returns     :ErrCode
 *              ST_NO_ERROR                     Success.
 *              ST_ERROR_BAD_PARAMETER          Self explain
 * -------------------------------------------------------------------------- */
ST_ErrorCode_t PTI_PCRGetSlotHandle(PTI_DeviceId_t DeviceId,
                                    PTI_ProcessStreamId_t ProcessStreamId,
                                    STPTI_Slot_t *SlotHandle);


/* ========================================================================== */
/* Zapping                                                                    */
/* ========================================================================== */
ST_ErrorCode_t  PTI_Do_AV_Start  ( PTI_DeviceId_t DeviceId, PTI_HandleId_t HandleId,
                                   STPTI_Pid_t VidPid, STPTI_Pid_t AudPid, STPTI_Pid_t PCRPid );

/* TestTool init commands                                                     */
BOOL            PTI_InitCommand  ( void );

#ifdef TESTTOOL
/*------------------------------------------------------------------------------
 * Name        : PtiGetParamDeviceId
 * Description : Get device id (from 0 to PTI_MAXOPEN)
 * Parameters  : *pars_p, *DeviceId_p
 * Assumptions :
 * Limitations :
 * Returns     : TRUE if error, FALSE if success
 * -------------------------------------------------------------------------- */
BOOL PtiGetParamDeviceId (parse_t *pars_p, PTI_DeviceId_t *DeviceId_p);

/*------------------------------------------------------------------------------
 * Name        : PtiGetParamHandleId
 * Description : Get handle id (from 0 to PTI_MAXOPEN)
 * Parameters  : *pars_p, *HandleId_p
 * Assumptions :
 * Limitations :
 * Returns     : TRUE if error, FALSE if success
 * --------------------------------------------------------------------------- */
BOOL PtiGetParamHandleId (parse_t *pars_p, PTI_HandleId_t *HandleId_p);

#endif

/* C++ support */
#ifdef __cplusplus
}
#endif


#endif

/* EOF */

⌨️ 快捷键说明

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