DSMCC  15.3.1
source/dsmain/src/dsm_control.c File Reference

DSM-CC control Manager. More...

#include <string.h>
#include "stb_os.h"
#include "cldsmcc.h"
#include "cldsmdbg.h"
#include "dsfm.h"
#include "dsiq.h"
#include "sbm.h"
#include "stbsipmt.h"
#include "dm_debug.h"
#include "dsm_control.h"
#include "dsm_main.h"
#include "dsm_si.h"
#include "dsmcc_version.h"

Data Structures

struct  s_PmtInfo
struct  s_DsmMessage
struct  s_timer
struct  s_msgqueue
struct  s_boot
struct  s_load
struct  s_DsmControl

Defines

#define MAIN_STACK_SIZE   0x2000
#define TIMER_RESOLUTION   100
#define BOOT_TIMEOUT   0xFFFFFF
#define RESTART_TIME   200
#define START_MAGIC   0xDEED
#define CLDSM_MAGIC   0xBADE
#define ERA_BITS   4
#define ERA_SHIFT   (32-ERA_BITS)
#define ERA_LAST   ((1<<ERA_BITS)-1)
#define ERA_FIRST   0x00

Typedefs

typedef struct s_PmtInfo S_PmtInfo
typedef struct s_DsmMessage S_Message
typedef struct s_timer S_Timer
typedef struct s_msgqueue S_MsgQueue
typedef struct s_boot S_Boot
typedef struct s_load S_Load
typedef struct s_DsmControl S_DsmControl

Enumerations

enum  E_Q_PRIORITY { QP_TOP, QP_HIGH, QP_LOW, QP_TOTAL }
enum  E_DsmMsgType {
  DSM_MSG_PAT_DATA, DSM_MSG_PMT_DATA, DSM_MSG_NEW_SECTION, DSM_MSG_CACHE_SECTION,
  DSM_MSG_UPDATE_FILTER, DSM_MSG_PMT_REMOVED, DSM_MSG_CLOSE_DOWN
}
enum  E_STATUS { BL_WAITING, BL_BOOTING, BL_LOADED, BL_FAILED }

Functions

int StubRequestPmt (void *pmtref, U16BIT serviceId, U16BIT pmtpid)
void DestroyDsi (S_DsmControl *dsmctrl)
H_DsmControl DSMCC_Open (S_DsmccConfig *config)
 Open DSM-CC and create controling instance.
void DSMCC_Close (H_DsmControl dsmctrl)
 Close DSM-CC controling instance, and destroy all resources.
BOOLEAN DSMCC_Start (H_DsmControl dsmctrl, S_DvbLocator *locator, U32BIT boot_carousel_id, DMXREF dmxref)
 Start DSM-CC controling instance. This will start search for a boot carousel on service specified by locator. The search depends on the value given 'boot_carousel_id' parameter. When boot carousel id is set to INVALID_CAROUSEL_ID, DSM-CC will attempt to start on a carousel which the client recognises in callback function 'parseDataBroadcastId'. Even when the PMT does not contain a recognised data broadcast id, this function will return TRUE, and the DSM-CC will keep trying to load a boot carousel. When boot carousel id is set to a specific value or UNKNOWN_CAROUSEL_ID DSMCC_Start() will return FALSE if a carousel with the required ID is not present. When boot carousel id is set to UNKNOWN_CAROUSEL_ID, DSM-CC will attempt to start on whatever carousel is signalled in PMT for that service.
void DSMCC_Stop (H_DsmControl dsmctrl, E_DsmRstMode mode)
 Stop DSM-CC controling instance. Causes all carousels to unload.
void DSMCC_Reboot (H_DsmControl dsmctrl)
 Reboot DSM-CC controling instance. Causes all carousels to unload and initiate search for boot carousel.
H_ObjCarousel DSMCC_CurrentCarousel (H_DsmControl dsmctrl)
 Get currently loaded carousel handle.
U32BIT DSMCC_CurrentCarouselId (H_DsmControl dsmctrl)
 Get currently loaded carousel ID.
BOOLEAN DSMCC_SetCurrentCarousel (H_DsmControl dsmctrl, H_ObjCarousel hOC)
 Set current carousel. This does not unload any previously loaded carousels.
void DSMCC_UnloadCarousel (H_DsmControl dsmctrl, H_ObjCarousel hOC, E_DsmRstMode mode)
 Unload specified Carousel.
void DSMCC_SetFileSystemCacheLimit (H_DsmControl dsmctrl, U32BIT cacheSize)
 Set limit of DSMCC dynamic memory usage for file system caching This function overrides the default size is 6 MB. If this size is less than the currently allocated memory size, then it will release file system data until limit is reached - but only releasing data not currently in used by the client.
void DSMCC_SiqCacheClearPmt (H_DsmControl dsmctrl, U16BIT serviceId)
 Clear cached PMT for particular service.
const char * DSMCC_VersionString (void)
 Returns version major.minor.patch as string.
H_DsmControl DSMCC_FindInstance (U16BIT serviceId, DMXREF dmxref)
 Find DSMCC instance that has beed started on specified service.
U32BIT DSMCC_DebugGetMask (void)
 Get the DSMCC debug mask.
void DSMCC_DebugSetMask (U32BIT mask)
 Set the DSMCC debug mask.

Variables

unsigned int gDebugState = DSM_DBG_MASK
S_DsmControlinstanceHead = NULL

Detailed Description

DSM-CC control Manager.

Date:
17 October 2013
Author:
Adam Sturtridge

Function Documentation

void DSMCC_Close ( H_DsmControl  dsmctrl)

Close DSM-CC controling instance, and destroy all resources.

Parameters:
H_DsmControldsmctrl DSM control instance handle
Returns:
void
H_ObjCarousel DSMCC_CurrentCarousel ( H_DsmControl  dsmctrl)

Get currently loaded carousel handle.

Parameters:
H_DsmControldsmctrl DSM control instance handle
Returns:
H_ObjCarousel carousel handle - NULL if none loaded

Get currently loaded carousel ID.

Parameters:
H_DsmControldsmctrl DSM control instance handle
Returns:
U32BIT carousel id - INVALID_CAROUSEL_ID if none loaded
U32BIT DSMCC_DebugGetMask ( void  )

Get the DSMCC debug mask.

Returns:
Debug mask
void DSMCC_DebugSetMask ( U32BIT  mask)

Set the DSMCC debug mask.

Parameters:
maskmask value
Returns:
void
H_DsmControl DSMCC_FindInstance ( U16BIT  serviceId,
DMXREF  dmxref 
)

Find DSMCC instance that has beed started on specified service.

Parameters:
serviceIdService on which DSMCC is started
dmxrefdemux reference used for HW section filtering
Returns:
H_DsmControl instance handle, or NULL if not found

Open DSM-CC and create controling instance.

Parameters:
S_DsmccConfig*config Configuration of control instance.
Returns:
void
void DSMCC_Reboot ( H_DsmControl  dsmctrl)

Reboot DSM-CC controling instance. Causes all carousels to unload and initiate search for boot carousel.

Parameters:
H_DsmControlinstance DSM control instance handle
Returns:
void
BOOLEAN DSMCC_SetCurrentCarousel ( H_DsmControl  dsmctrl,
H_ObjCarousel  hOC 
)

Set current carousel. This does not unload any previously loaded carousels.

Parameters:
H_DsmControldsmctrl DSM control instance handle
H_ObjCarouselhOC Handle to carousel
Returns:
BOOLEAN - TRUE if success (i.e. had valid carousel handle)
void DSMCC_SetFileSystemCacheLimit ( H_DsmControl  dsmctrl,
U32BIT  cacheSize 
)

Set limit of DSMCC dynamic memory usage for file system caching This function overrides the default size is 6 MB. If this size is less than the currently allocated memory size, then it will release file system data until limit is reached - but only releasing data not currently in used by the client.

Parameters:
dsmctrlDSM control instance handle.
cacheSizeSize in bytes (minimum of 1 MB)
Returns:
void
void DSMCC_SiqCacheClearPmt ( H_DsmControl  dsmctrl,
U16BIT  serviceId 
)

Clear cached PMT for particular service.

Parameters:
H_DsmControldsmctrl DSM control instance handle.
U16BITserviceId Service whose PMT needs to be cleared
Returns:
void
BOOLEAN DSMCC_Start ( H_DsmControl  dsmctrl,
S_DvbLocator locator,
U32BIT  boot_carousel_id,
DMXREF  dmxref 
)

Start DSM-CC controling instance. This will start search for a boot carousel on service specified by locator. The search depends on the value given 'boot_carousel_id' parameter. When boot carousel id is set to INVALID_CAROUSEL_ID, DSM-CC will attempt to start on a carousel which the client recognises in callback function 'parseDataBroadcastId'. Even when the PMT does not contain a recognised data broadcast id, this function will return TRUE, and the DSM-CC will keep trying to load a boot carousel. When boot carousel id is set to a specific value or UNKNOWN_CAROUSEL_ID DSMCC_Start() will return FALSE if a carousel with the required ID is not present. When boot carousel id is set to UNKNOWN_CAROUSEL_ID, DSM-CC will attempt to start on whatever carousel is signalled in PMT for that service.

Start DSM-CC controling instance. This will start search for a boot carousel on service specified by locator. The search depends on the value given 'boot_carousel_id' parameter. When boot carousel id is set to INVALID_CAROUSEL_ID, DSM-CC will attempt to start on a carousel which the client recognises in callback function 'parseDataBroadcastId'. Even when the PMT does not contain a recognised data broadcast id, DSMCC_Start() will return TRUE, and the DSM-CC will keep trying to load a boot carousel. When boot carousel id is set to a specific value or UNKNOWN_CAROUSEL_ID and a carousel of the required ID is not present, either DSMCC_Start() will return FALSE or 'carouselLoad' callback will be passed a result of OC_LOAD_ABORTED_ERROR. When boot carousel id is set to UNKNOWN_CAROUSEL_ID, DSM-CC will attempt to start on whatever carousel is signalled in PMT for that service.

Parameters:
instanceDSM control instance handle
locatorDVB location of service.
boot_carousel_idcarousel id - INVALID_CAROUSEL_ID, or UNKNOWN_CAROUSEL_ID, or a specific value.
DMXREFdmxref demux reference to be used in section filter API
Returns:
BOOLEAN - TRUE if success
void DSMCC_Stop ( H_DsmControl  dsmctrl,
E_DsmRstMode  mode 
)

Stop DSM-CC controling instance. Causes all carousels to unload.

Parameters:
H_DsmControldsmctrl DSM control instance handle
E_DsmRstModemode Mode of operation when unloading
Returns:
void
void DSMCC_UnloadCarousel ( H_DsmControl  dsmctrl,
H_ObjCarousel  hOC,
E_DsmRstMode  mode 
)

Unload specified Carousel.

Parameters:
H_DsmControldsmctrl DSM control instance handle
H_ObjCarouselhOC Handle to carousel
E_DsmRstModemode Mode of operation when unloading
Returns:
void
const char* DSMCC_VersionString ( void  )

Returns version major.minor.patch as string.

Returns:
a version string
 All Data Structures Files Functions Typedefs