![]() |
DSMCC
21.3.0
|
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 |
1.8.13