MHEG5  15.3.0
source/core/src/mh5prgs.c File Reference

Implementation of the resident programs which are defined by the current profile. This file implements the resident prgrams define by DTG 1.05. 3.10 Resident Programs Table 3-9 lists the ResidentPrograms that a UKEngineProfile1 receiver shall implement. Program name (long) (short) GetCurrentDate GCD FormatDate FDa GetDayOfWeek GDW Random Rnd CastToContentRef [a] CTC CastToObjectRef [a] CTO UK_GetStringLength GSL UK_GetSubString GSS UK_SearchSubString SSS UK_SearchAndExtractSubString SES SI_GetServiceIndex GSI SI_TuneIndex TIn CheckContentRef CCR CheckGroupIDRef CGR CI_SendMessage CIS Additions for v. 1.06: SI_TuneIndexInfo TII SI_GetBasicSI BSI GetBootInfo GBI VideoToGraphics VTG SetWidescreenAlignment SWA GetDisplayAspectRatio GDA SetSubtitleMode SSM WhoAmI WAI Debug DBG Modifications for v. 1.06: UK_GetStringLength is GetStringLength UK_GetSubString is GetSubString UK_SearchSubString is SearchSubString UK_SearchAndExtractSubString is SearchAndExtractSubString Omissions for v. 1.06: GetSubtitlePref GSP GetScalingOption GSO Additions for CI+: RequestMPEGDecoder RMD Additions for IC: SetHybridFileSystem SHF ReturnData RDa Additions for ICS: PromptForGuidance PFG MeasureStreamPerformance MSP Additions for Freesat: GetAudioDescPref GAP GetSubtitlePref GSP GetPINRequirement GPR ValidatePIN VPP ComputePrivateSignature CPS Additions for BBC iPlayer GetPINSupport GPS GetAudioDescPref GAP GetSubtitlePref GSP Additions for the SI extensions SI_GetServiceInfo SeI SI_GetEventInfo GEI Additions for South Africa LNG_GetPreferredLangs GPL LNG_GetAudioLangs GAu LNG_GetSubtitleLangs GSb LNG_GetADLangs GAD SEI_GetNumberOfServices GNS SEI_NextServiceIndex NSI SEI_GetServiceRunningStatus GSR SEI_GetChannelNumber GCN SEI_SetEventIterator SEv SEI_IncrementEventIterator IEI SEI_GetScheduledEventInfo GSE SEI_GetComponentInfo SCI SEI_GetComponentData SCD PFEI_GetEventId GID PFEI_GetComponentInfo PCI PFEI_GetComponentData PCD REM_SetNativeReminder SNR REM_GetNativeReminder GNR REM_CancelNativeReminder CNR SA_GetHostSetting GHS Typical Use Tables 13-11, 13-12, 13-12a, 13-12b and 13-12c provide an indication of the method by which the resident program is typically invoked (Call or Fork). This indication is informative. The function of the resident program shall be identical whether invoked by Call or Fork. See also Section 19.15 "Use of Call and Fork with ResidentPrograms". Program names Earlier editions of this specification supported a long form of the resident program name. This long form is no longer supported. The three character "Name" indicated in Tables 13-11, 13-12, 13-12a, 13-12b and 13-12c shall be used to invoke the ResidentProgram. 3.10.1 Encoding of resident program names The names of resident programs are conveyed in OctetStrings. The character encoding for names of resident programs uses ISO 8859-1. All of the characters used in Table 3-9 lie in the code range 0x00…0x7E. Case sensitive names The names of resident programs are case sensitive. 3.10.10 Data exchange with Resident Programs This section is intended to clarify the behaviour of information passed between MHEG-5 applications and resident programs. Memory spaces There are two distinct memory spaces to consider: * MHEG-5 application memory * Procedural code memory On invocation When a resident program is invoked (with Call or Fork) the behaviour is as if a snap shot of the input and in-out parameters were passed from the application memory space to the memory space of the procedural code. During execution While the procedural code executes there is no connection between its memory space and that of the MHEG-5 application. In principle the MHEG-5 application could modify variables passed by reference to the procedural code with no effect on the procedural code’s version. However, this is probably not a useful thing to do. On completion If the procedural code completes normally then its results (any in-out, output parameters and the succeeded parameter) are transferred back to the MHEG-5 application memory. The timing here is significant, from the MHEG-5 application’s point of view all of the results of the ResidentProgram are delivered atomically between the processing of asynchronous events. Note: The processing of an asynchronous event includes the processing of all consequent synchronous events. The behaviour is as if an Action object with a series of SetData actions is performed. More...

#include <stdlib.h>
#include "mh5prgs.h"
#include "mh5object.h"
#include "mh5variable.h"
#include "mh5date.h"
#include "mh5memory.h"
#include "mh5display.h"
#include "mh5fileorm.h"
#include "mh5group.h"
#include "mh5debug.h"
#include "mh5misc.h"
#include "mh5final.h"
#include "mh5queue.h"
#include "mh5profile.h"
#include "mh5support.h"
#include "mh5keypress.h"
#include "mh5control.h"
#include "dvb_audio.h"
#include "dvb_video.h"
#include "mg_video.h"
#include "dvb_misc.h"
#include <string.h>

Data Structures

struct  ResidentProgramTableEntry_struct

Typedefs

typedef struct
ResidentProgramTableEntry_struct 
ResidentProgramTableEntry_t

Functions

void MHEG5objRefValueDestruct (MHEG5ObjectRefVariable *objRef)
void MHEG5ProgramSetStartFunc (MHEG5Program *program)
 Test if the program NAME is included in this profile and get the start function to execute.

Detailed Description

Implementation of the resident programs which are defined by the current profile. This file implements the resident prgrams define by DTG 1.05. 3.10 Resident Programs Table 3-9 lists the ResidentPrograms that a UKEngineProfile1 receiver shall implement. Program name (long) (short) GetCurrentDate GCD FormatDate FDa GetDayOfWeek GDW Random Rnd CastToContentRef [a] CTC CastToObjectRef [a] CTO UK_GetStringLength GSL UK_GetSubString GSS UK_SearchSubString SSS UK_SearchAndExtractSubString SES SI_GetServiceIndex GSI SI_TuneIndex TIn CheckContentRef CCR CheckGroupIDRef CGR CI_SendMessage CIS Additions for v. 1.06: SI_TuneIndexInfo TII SI_GetBasicSI BSI GetBootInfo GBI VideoToGraphics VTG SetWidescreenAlignment SWA GetDisplayAspectRatio GDA SetSubtitleMode SSM WhoAmI WAI Debug DBG Modifications for v. 1.06: UK_GetStringLength is GetStringLength UK_GetSubString is GetSubString UK_SearchSubString is SearchSubString UK_SearchAndExtractSubString is SearchAndExtractSubString Omissions for v. 1.06: GetSubtitlePref GSP GetScalingOption GSO Additions for CI+: RequestMPEGDecoder RMD Additions for IC: SetHybridFileSystem SHF ReturnData RDa Additions for ICS: PromptForGuidance PFG MeasureStreamPerformance MSP Additions for Freesat: GetAudioDescPref GAP GetSubtitlePref GSP GetPINRequirement GPR ValidatePIN VPP ComputePrivateSignature CPS Additions for BBC iPlayer GetPINSupport GPS GetAudioDescPref GAP GetSubtitlePref GSP Additions for the SI extensions SI_GetServiceInfo SeI SI_GetEventInfo GEI Additions for South Africa LNG_GetPreferredLangs GPL LNG_GetAudioLangs GAu LNG_GetSubtitleLangs GSb LNG_GetADLangs GAD SEI_GetNumberOfServices GNS SEI_NextServiceIndex NSI SEI_GetServiceRunningStatus GSR SEI_GetChannelNumber GCN SEI_SetEventIterator SEv SEI_IncrementEventIterator IEI SEI_GetScheduledEventInfo GSE SEI_GetComponentInfo SCI SEI_GetComponentData SCD PFEI_GetEventId GID PFEI_GetComponentInfo PCI PFEI_GetComponentData PCD REM_SetNativeReminder SNR REM_GetNativeReminder GNR REM_CancelNativeReminder CNR SA_GetHostSetting GHS Typical Use Tables 13-11, 13-12, 13-12a, 13-12b and 13-12c provide an indication of the method by which the resident program is typically invoked (Call or Fork). This indication is informative. The function of the resident program shall be identical whether invoked by Call or Fork. See also Section 19.15 "Use of Call and Fork with ResidentPrograms". Program names Earlier editions of this specification supported a long form of the resident program name. This long form is no longer supported. The three character "Name" indicated in Tables 13-11, 13-12, 13-12a, 13-12b and 13-12c shall be used to invoke the ResidentProgram. 3.10.1 Encoding of resident program names The names of resident programs are conveyed in OctetStrings. The character encoding for names of resident programs uses ISO 8859-1. All of the characters used in Table 3-9 lie in the code range 0x00…0x7E. Case sensitive names The names of resident programs are case sensitive. 3.10.10 Data exchange with Resident Programs This section is intended to clarify the behaviour of information passed between MHEG-5 applications and resident programs. Memory spaces There are two distinct memory spaces to consider: * MHEG-5 application memory * Procedural code memory On invocation When a resident program is invoked (with Call or Fork) the behaviour is as if a snap shot of the input and in-out parameters were passed from the application memory space to the memory space of the procedural code. During execution While the procedural code executes there is no connection between its memory space and that of the MHEG-5 application. In principle the MHEG-5 application could modify variables passed by reference to the procedural code with no effect on the procedural code’s version. However, this is probably not a useful thing to do. On completion If the procedural code completes normally then its results (any in-out, output parameters and the succeeded parameter) are transferred back to the MHEG-5 application memory. The timing here is significant, from the MHEG-5 application’s point of view all of the results of the ResidentProgram are delivered atomically between the processing of asynchronous events. Note: The processing of an asynchronous event includes the processing of all consequent synchronous events. The behaviour is as if an Action object with a series of SetData actions is performed.

Date:
01/02/2002
Author:
R.Freeman

Function Documentation

Test if the program NAME is included in this profile and get the start function to execute.

Parameters:
programProgram object to test
Returns:
void.
 All Data Structures Files Functions Variables Typedefs Defines