Dsmcc's Section Filter Manager API. More...
#include "cldsmtypes.h"
#include "dmxtypes.h"
#include "stdfuncs.h"
#include "stb_filter.h"
#include "dsm_debug.h"
Go to the source code of this file.
Classes | |
struct | S_SfmSetup |
Macros | |
#define | SECTION_HEADER_LENGTH 8 |
Typedefs | |
typedef struct s_DmxPidFilter * | H_DmxPidFilter |
typedef void(* | F_UpdateFilter) (H_SfmInstance sfm, H_DmxPidFilter hPF) |
Report to SFM client that there is a filter update to be processed. The client must place the request on a queue that will subsequently cause SFM_FilterUpdate to be called. More... | |
typedef void(* | F_CacheMatch) (H_SfmInstance sfm, U8BIT *pSection, void *hBuffer, E_SFM_STATUS status) |
Report to SFM client that there is an update to be processed. This is called in the normal DSM-CC thread environment, and is due to SFM finding section data in cache. The client may place the request on a queue that subsequently causes SFM_ProcessSection to be called. More... | |
Enumerations | |
enum | E_SFM_STATUS { SFM_ERROR, SFM_IGNORE, SFM_UPDATE_CACHE, SFM_UPDATE_LOW, SFM_UPDATE_HIGH } |
Functions | |
H_SfmInstance | SFM_CreateInstance (S_SfmSetup *pSetup) |
Create Section Filter Manager instance, using setup structure. More... | |
void | SFM_DestroyInstance (H_SfmInstance sfm, void **pSfmMtx, void **pCchMtx, void **pBufMtx) |
Destroy Section Filter Manager instance, and return mutexes so that they may be destroyed by client. More... | |
void | SFM_SetDebugConfig (H_SfmInstance sfm, F_Printf errPrintf, F_Printf dbgPrintf, U32BIT dbgState) |
This allows controlling software to reconfigure SFM debug output. More... | |
void | SFM_SetDebugState (H_SfmInstance sfm, U32BIT dbgState) |
This allows controlling software to reconfigure SFM debug output. More... | |
void | SFM_SetDsmInstance (H_SfmInstance sfm, H_DsmCoreInst dsmcc) |
Set instance handle for DSM-CC that SFM is supporting. More... | |
void | SFM_SetDemuxHandle (H_SfmInstance sfm, DMXREF demux) |
Set handle to be passed to F_DvpFilterSetup and F_DvpFilterRemove. More... | |
E_SFM_STATUS | SFM_RequireSection (H_SfmInstance sfm, PIDFILT pfid, U8BIT *pHeader, void **phBuffer) |
This function performs minimal checking of section header data to find out whether SFM requires this section. Number of header bytes required is SECTION_HEADER_LENGTH. It assumes CRC has been checked and is passing valid DSM-CC sections So the first byte of data must be table id 0x3B, 0x3C or 0x3D. Note for multi-tasking: this function uses mutex locking to protect shared data with SFM_DsmccFilterAlloc and SFM_DsmccFilterDelete. It does NOT call any DSM-CC core functions. More... | |
U8BIT * | SFM_CacheBuffer (H_SfmInstance sfm, void *hBuffer) |
Get section data buffer pointer in SFM's cache for the handle. This should only be called after SFM_RequireSection returned with SFM_UPDATE_CACHE. This may be called from 'interrupt' environment. The returned pointer may be used by client to copy section data into SFM's cache buffer. More... | |
void | SFM_CacheReleaseBuffer (H_SfmInstance sfm, U8BIT *pSection, void *hBuffer) |
Release Cache buffer allocated by SFM_CacheBuffer. More... | |
void | SFM_ProcessSection (H_SfmInstance sfm, U8BIT *pSection, void *hBuffer) |
Process required section buffer. This should only be called after SFM_RequireSection has returned SFM_UPDATE_HIGH or SFM_UPDATE_LOW. This function must be called in the normal DSM-CC thread environment, because it calls DSM-CC core functions. More... | |
void | SFM_FilterUpdate (H_SfmInstance sfm, H_DmxPidFilter hPF) |
Update SFM PID filter to configure HW for latest requirements. More... | |
BOOLEAN | SFM_CacheEnableSSF (H_SfmInstance sfm) |
Enables Full Sotfware Section Filtering using SFM cache. This will only be successfull if sufficient resources are available. More... | |
void | SFM_CacheDisableSSF (H_SfmInstance sfm) |
Disables Sotfware Section Filtering. More... | |
void | SFM_CacheClear (H_SfmInstance sfm) |
Clear all SFM cached section data. Not required to be called, if setup had sectionBuffCacheSize set to ZERO. Otherwise, this MUST be called on a transport stream change and optionally called at other times - e.g on a service change. More... | |
void * | SFM_DsmccFilterAdd (H_SfmInstance sfm, P_SecFilter pFilter, H_DscSFRef dsmSfRef) |
Add DSM-CC section filter. Called by DSM-CC component, and given in clDsmSysCreate setup. Note for multi-tasking: this function uses mutex locking to protect shared data with SFM_RequireSection. More... | |
void | SFM_DsmccFilterDelete (H_SfmInstance sfm, void *filterHandle, H_DscSFRef dsmSfRef) |
Delete DSM-CC section filter. Called by DSM-CC component, and given in clDsmSysCreate setup. Note for multi-tasking: this function uses mutex locking to protect shared data with SFM_RequireSection. More... | |
void | SFM_DsmccFilterPriorityChange (H_SfmInstance sfm, void *filterHandle, H_DscSFRef dsmSfRef, E_SFPriority priority) |
Change DSM-CC section filter priority Called by DSM-CC component, and given in clDsmSysCreate setup. Note for multi-tasking: this function uses mutex locking to protect shared data with SFM_RequireSection. More... | |
Dsmcc's Section Filter Manager API.
typedef void(* F_CacheMatch) (H_SfmInstance sfm, U8BIT *pSection, void *hBuffer, E_SFM_STATUS status) |
Report to SFM client that there is an update to be processed. This is called in the normal DSM-CC thread environment, and is due to SFM finding section data in cache. The client may place the request on a queue that subsequently causes SFM_ProcessSection to be called.
H_SfmInstance | sfm SFM instance handle. |
U8BIT* | pSection Pointer to section data buffer |
void* | hBuffer Section buffer handle |
E_SFM_STATUS | status Status of update, either: SFM_UPDATE_LOW or SFM_UPDATE_HIGH |
typedef void(* F_UpdateFilter) (H_SfmInstance sfm, H_DmxPidFilter hPF) |
Report to SFM client that there is a filter update to be processed. The client must place the request on a queue that will subsequently cause SFM_FilterUpdate to be called.
H_SfmInstance | sfm SFM instance handle. |
H_DmxPidFilter | hPF Handle to SFM pid filter |
U8BIT* SFM_CacheBuffer | ( | H_SfmInstance | sfm, |
void * | hBuffer | ||
) |
Get section data buffer pointer in SFM's cache for the handle. This should only be called after SFM_RequireSection returned with SFM_UPDATE_CACHE. This may be called from 'interrupt' environment. The returned pointer may be used by client to copy section data into SFM's cache buffer.
H_SfmInstance | sfm SFM instance handle. |
void* | hBuffer Section buffer handle returned by SFM_RequireSection |
void SFM_CacheClear | ( | H_SfmInstance | sfm | ) |
Clear all SFM cached section data. Not required to be called, if setup had sectionBuffCacheSize set to ZERO. Otherwise, this MUST be called on a transport stream change and optionally called at other times - e.g on a service change.
H_SfmInstance | sfm SFM instance handle. |
Clear all SFM cached section data. Not required to be called, if setup had sectionBuffCacheSize set to ZERO. Otherwise, this MUST be called on a transport stream change and optionally called at other times - e.g on a service change.
H_SfmInstance | sfm SFM instance handle. |
void SFM_CacheDisableSSF | ( | H_SfmInstance | sfm | ) |
Disables Sotfware Section Filtering.
H_SfmInstance | sfm SFM instance handle. |
BOOLEAN SFM_CacheEnableSSF | ( | H_SfmInstance | sfm | ) |
Enables Full Sotfware Section Filtering using SFM cache. This will only be successfull if sufficient resources are available.
H_SfmInstance | sfm SFM instance handle. |
void SFM_CacheReleaseBuffer | ( | H_SfmInstance | sfm, |
U8BIT * | pSection, | ||
void * | hBuffer | ||
) |
Release Cache buffer allocated by SFM_CacheBuffer.
H_SfmInstance | sfm SFM instance handle. |
U8BIT* | pSection Pointer to whole section data buffer |
void* | hBuffer Section buffer handle returned by SFM_RequireSection |
H_SfmInstance SFM_CreateInstance | ( | S_SfmSetup * | pSetup | ) |
Create Section Filter Manager instance, using setup structure.
S_SfmSetup | setup setup parameters |
void SFM_DestroyInstance | ( | H_SfmInstance | sfm, |
void ** | pSfmMtx, | ||
void ** | pCchMtx, | ||
void ** | pBufMtx | ||
) |
Destroy Section Filter Manager instance, and return mutexes so that they may be destroyed by client.
H_SfmInstance | sfm SFM instance handle. |
void** | pSfmMtx Pointer to sfmMutex provided in setup |
void** | pCchMtx Pointer to cacheMutex provided in setup |
void** | pBufMtx Pointer to bufferMutex provided in setup |
void* SFM_DsmccFilterAdd | ( | H_SfmInstance | sfm, |
P_SecFilter | pFilter, | ||
H_DscSFRef | dsmSfRef | ||
) |
Add DSM-CC section filter. Called by DSM-CC component, and given in clDsmSysCreate setup. Note for multi-tasking: this function uses mutex locking to protect shared data with SFM_RequireSection.
H_SfmInstance | sfm SFM instance handle. |
P_SecFilter | pFilter Pointer to DSM-CC filter details |
H_DscSFRef | dsmSfRef DSM-CC SF reference handle |
Add DSM-CC section filter. Called by DSM-CC component, and given in clDsmSysCreate setup. Note for multi-tasking: this function uses mutex locking to protect shared data with SFM_RequireSection.
H_SfmInstance | sfm SFM instance handle. |
P_SecFilter | pFilter Pointer to DSM-CC filter details |
H_DscSFRef | dsmSfRef DSM-CC SF reference handle |
void SFM_DsmccFilterDelete | ( | H_SfmInstance | sfm, |
void * | filterHandle, | ||
H_DscSFRef | dsmSfRef | ||
) |
Delete DSM-CC section filter. Called by DSM-CC component, and given in clDsmSysCreate setup. Note for multi-tasking: this function uses mutex locking to protect shared data with SFM_RequireSection.
H_SfmInstance | sfm SFM instance handle. |
void* | filterHandle SFM Filter handle |
H_DscSFRef | dsmSfRef DSM-CC reference handle |
H_SfmInstance | sfm SFM instance handle. |
void* | filterHandle SFM Filter handle |
H_DscSFRef | dsmSfRef DSM-CC reference handle |
void SFM_DsmccFilterPriorityChange | ( | H_SfmInstance | sfm, |
void * | filterHandle, | ||
H_DscSFRef | dsmSfRef, | ||
E_SFPriority | priority | ||
) |
Change DSM-CC section filter priority Called by DSM-CC component, and given in clDsmSysCreate setup. Note for multi-tasking: this function uses mutex locking to protect shared data with SFM_RequireSection.
H_SfmInstance | sfm SFM instance handle. |
void* | filterHandle SFM Filter handle |
H_DscSFRef | dsmSfRef DSM-CC SF reference handle |
E_SFPriority | priority New filter priority |
Change DSM-CC section filter priority Called by DSM-CC component, and given in clDsmSysCreate setup. Note for multi-tasking: this function uses mutex locking to protect shared data with SFM_RequireSection.
H_SfmInstance | sfm SFM instance handle. |
void* | filterHandle SFM Filter handle |
H_DscSFRef | dsmSfRef DSM-CC SF reference handle |
E_SFPriority | priority New filter priority |
void SFM_FilterUpdate | ( | H_SfmInstance | sfm, |
H_DmxPidFilter | pPF | ||
) |
Update SFM PID filter to configure HW for latest requirements.
H_SfmInstance | sfm SFM instance handle. |
H_DmxPidFilter | hPF Handle to SFM pid filter |
H_SfmInstance | sfm SFM instance handle. |
H_DmxPidFilter | pPF Handle to SFM pid filter |
void SFM_ProcessSection | ( | H_SfmInstance | sfm, |
U8BIT * | pSection, | ||
void * | hBuffer | ||
) |
Process required section buffer. This should only be called after SFM_RequireSection has returned SFM_UPDATE_HIGH or SFM_UPDATE_LOW. This function must be called in the normal DSM-CC thread environment, because it calls DSM-CC core functions.
H_SfmInstance | sfm SFM instance handle. |
U8BIT* | pSection Pointer to whole section data buffer |
void* | hBuffer SFM section handle returned by SFM_RequireSection |
Process required section buffer. This should only be called after SFM_RequireSection has returned SFM_UPDATE_HIGH or SFM_UPDATE_LOW. This function must be called in the normal DSM-CC thread environment, because it calls DSM-CC core functions.
H_SfmInstance | sfm SFM instance handle. |
U8BIT* | pSection Pointer to whole section data buffer |
void* | hBuffer SFM section handle returned by SFM_RequireSection |
E_SFM_STATUS SFM_RequireSection | ( | H_SfmInstance | sfm, |
PIDFILT | pfid, | ||
U8BIT * | pHeader, | ||
void ** | phBuffer | ||
) |
This function performs minimal checking of section header data to find out whether SFM requires this section. Number of header bytes required is SECTION_HEADER_LENGTH. It assumes CRC has been checked and is passing valid DSM-CC sections So the first byte of data must be table id 0x3B, 0x3C or 0x3D. Note for multi-tasking: this function uses mutex locking to protect shared data with SFM_DsmccFilterAlloc and SFM_DsmccFilterDelete. It does NOT call any DSM-CC core functions.
H_SfmInstance | sfm SFM instance handle. |
PIDFILT | pfid PID filter with incoming section |
U8BIT* | pHeader Pointer to section header (min 8 bytes) |
void** | phBuffer Pointer to SFM section buffer handle |
This function performs minimal checking of section header data to find out whether SFM requires this section. Number of header bytes required is SECTION_HEADER_LENGTH. It assumes CRC has been checked and is passing valid DSM-CC sections So the first byte of data must be table id 0x3B, 0x3C or 0x3D. Note for multi-tasking: this function uses mutex locking to protect shared data with SFM_DsmccFilterAlloc and SFM_DsmccFilterDelete. It does NOT call any DSM-CC core functions.
H_SfmInstance | sfm SFM instance handle. |
PIDFILT | pfid PID filter with incoming section |
U8BIT* | pHeader Pointer to section header (min 8 bytes) |
void** | phBuffer Pointer to SFM section buffer handle |
void SFM_SetDebugConfig | ( | H_SfmInstance | sfm, |
F_Printf | errPrintf, | ||
F_Printf | dbgPrintf, | ||
U32BIT | dbgState | ||
) |
This allows controlling software to reconfigure SFM debug output.
H_SfmInstance | sfm SFM instance handle. |
F_SfmPrintf | errPrintf Error print function |
F_SfmPrintf | dbgPrintf Debug print function |
U32BIT | dbgState State to filter debug printing |
void SFM_SetDebugState | ( | H_SfmInstance | sfm, |
U32BIT | dbgState | ||
) |
This allows controlling software to reconfigure SFM debug output.
H_SfmInstance | sfm SFM instance handle. |
U32BIT | dbgState State to filter debug printing |
void SFM_SetDemuxHandle | ( | H_SfmInstance | sfm, |
DMXREF | demux | ||
) |
Set handle to be passed to F_DvpFilterSetup and F_DvpFilterRemove.
H_SfmInstance | sfm SFM instance handle. |
DMXREF | demux Demux reference handle |
H_SfmInstance | sfm SFM instance handle. |
DMXREF | demux Demux handle used by platform |
void SFM_SetDsmInstance | ( | H_SfmInstance | sfm, |
H_DsmCoreInst | dsmcc | ||
) |
Set instance handle for DSM-CC that SFM is supporting.
H_SfmInstance | sfm SFM instance handle. |
H_DsmCoreInst | dsmcc DSM-CC instance being supported |