DVBCore  17.9.0
Open Source DVB Engine
 All Data Structures Files Functions Typedefs Macros Pages
app.h
Go to the documentation of this file.
1 /*******************************************************************************
2  * Copyright © 2014 The DTVKit Open Software Foundation Ltd (www.dtvkit.org)
3  * Copyright © 2004 Ocean Blue Software Ltd
4  *
5  * This file is part of a DTVKit Software Component
6  * You are permitted to copy, modify or distribute this file subject to the terms
7  * of the DTVKit 1.0 Licence which can be found in licence.txt or at www.dtvkit.org
8  *
9  * THIS CODE AND INFORMATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND,
10  * EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES
11  * OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.
12  *
13  * If you or your organisation is not a member of DTVKit then you have access
14  * to this source code outside of the terms of the licence agreement
15  * and you are expected to delete this and any associated files immediately.
16  * Further information on DTVKit, membership and terms can be found at www.dtvkit.org
17  *******************************************************************************/
27 #ifndef _APP_H
28 #define _APP_H
29 
30 #include "techtype.h"
31 
32 //---CONSTANT DEFINITIONS---------------------------------------------------------------------------
33 // application events
34 #define EV_SERVICE_NOT_RUNNING 0x0001
35 #define EV_SERVICE_AUDIO_PID_UPDATE 0x0002
36 #define EV_SERVICE_VIDEO_PID_UPDATE 0x0003
37 #define EV_SERVICE_SUBTITLE_UPDATE 0x0004
38 #define EV_SERVICE_SCRAMBLE_CHANGE 0x0005
39 #define EV_SERVICE_ANALOG_LOCKED 0x0006
40 #define EV_INDICATION_STATUS 0x0007
41 #define EV_SERVICE_ANALOG_STARTED 0x0008
42 #define EV_SERVICE_RUNNING 0x0009
43 #define EV_SERVICE_EIT_NOW_UPDATE 0x000a
44 #define EV_SERVICE_EIT_SCHED_UPDATE 0x000b
45 #define EV_SERVICE_ECM_PID_UPDATE 0x000c
46 #define EV_PVR_RECORDING_FAILED 0x000d
47 #define EV_SERVICE_VIDEO_CODEC_CHANGED 0x000e
48 #define EV_SERVICE_AUDIO_CODEC_CHANGED 0x000f
49 #define EV_SERVICE_CHANGED 0x0010
50 #define EV_SERVICE_STREAMS_CHANGED 0x0011
51 #define EV_SERVICE_SI_PID_UPDATE 0x0012
52 #define EV_TIME_CHANGED 0x0013
53 #define EV_CIPLUS_TUNE_COMPLETED 0x0014
54 #define EV_SERVICE_DELETED 0x0015
55 #define EV_TIMER_TRIGGERED 0x0016
56 #define EV_DECODE_PAUSED 0x0017
57 #define EV_DECODE_RESUMED 0x0018
58 #define EV_SWITCH_ALTERNATIVE_SERVICE 0x0019
59 #define EV_SERVICE_UPDATED 0x001a
60 #define EV_START_SERVICE_SEARCH 0x001b
61 #define EV_START_SSU_SEARCH 0x001c
62 #define EV_SERVICE_SI_SDT_UPDATE 0x0020
63 #define EV_SERVICE_SI_NIT_UPDATE 0x0021
64 #define EV_PVR_RECORDING_STARTED 0x0022
65 #define EV_PVR_RECORDING_STOPPED 0x0023
66 
67 #define APP_EVENT_SERVICE_NOT_RUNNING EVENT_CODE(EV_CLASS_APPLICATION, EV_SERVICE_NOT_RUNNING)
68 #define APP_EVENT_SERVICE_AUDIO_PID_UPDATE EVENT_CODE(EV_CLASS_APPLICATION, EV_SERVICE_AUDIO_PID_UPDATE)
69 #define APP_EVENT_SERVICE_VIDEO_PID_UPDATE EVENT_CODE(EV_CLASS_APPLICATION, EV_SERVICE_VIDEO_PID_UPDATE)
70 #define APP_EVENT_SERVICE_SUBTITLE_UPDATE EVENT_CODE(EV_CLASS_APPLICATION, EV_SERVICE_SUBTITLE_UPDATE)
71 #define APP_EVENT_SERVICE_SCRAMBLE_CHANGE EVENT_CODE(EV_CLASS_APPLICATION, EV_SERVICE_SCRAMBLE_CHANGE)
72 #define APP_EVENT_SERVICE_ANALOG_LOCKED EVENT_CODE(EV_CLASS_APPLICATION, EV_SERVICE_ANALOG_LOCKED)
73 #define APP_EVENT_SERVICE_ANALOG_STARTED EVENT_CODE(EV_CLASS_APPLICATION, EV_SERVICE_ANALOG_STARTED)
74 #define APP_EVENT_INDICATION_STATUS EVENT_CODE(EV_CLASS_APPLICATION, EV_INDICATION_STATUS)
75 #define APP_EVENT_SERVICE_RUNNING EVENT_CODE(EV_CLASS_APPLICATION, EV_SERVICE_RUNNING)
76 #define APP_EVENT_SERVICE_EIT_NOW_UPDATE EVENT_CODE(EV_CLASS_APPLICATION, EV_SERVICE_EIT_NOW_UPDATE)
77 #define APP_EVENT_SERVICE_EIT_SCHED_UPDATE EVENT_CODE(EV_CLASS_APPLICATION, EV_SERVICE_EIT_SCHED_UPDATE)
78 #define APP_EVENT_SERVICE_ECM_PID_UPDATE EVENT_CODE(EV_CLASS_APPLICATION, EV_SERVICE_ECM_PID_UPDATE)
79 #define APP_EVENT_PVR_RECORDING_FAILED EVENT_CODE(EV_CLASS_APPLICATION, EV_PVR_RECORDING_FAILED)
80 #define APP_EVENT_SERVICE_VIDEO_CODEC_CHANGED EVENT_CODE(EV_CLASS_APPLICATION, EV_SERVICE_VIDEO_CODEC_CHANGED)
81 #define APP_EVENT_SERVICE_AUDIO_CODEC_CHANGED EVENT_CODE(EV_CLASS_APPLICATION, EV_SERVICE_AUDIO_CODEC_CHANGED)
82 #define APP_EVENT_SERVICE_CHANGED EVENT_CODE(EV_CLASS_APPLICATION, EV_SERVICE_CHANGED)
83 #define APP_EVENT_SERVICE_STREAMS_CHANGED EVENT_CODE(EV_CLASS_APPLICATION, EV_SERVICE_STREAMS_CHANGED)
84 #define APP_EVENT_SERVICE_SI_PID_UPDATE EVENT_CODE(EV_CLASS_APPLICATION, EV_SERVICE_SI_PID_UPDATE)
85 #define APP_EVENT_TIME_CHANGED EVENT_CODE(EV_CLASS_APPLICATION, EV_TIME_CHANGED)
86 #define APP_EVENT_CIPLUS_TUNE_COMPLETED EVENT_CODE(EV_CLASS_APPLICATION, EV_CIPLUS_TUNE_COMPLETED)
87 #define APP_EVENT_SERVICE_DELETED EVENT_CODE(EV_CLASS_APPLICATION, EV_SERVICE_DELETED)
88 #define APP_EVENT_TIMER_TRIGGERED EVENT_CODE(EV_CLASS_APPLICATION, EV_TIMER_TRIGGERED)
89 #define APP_EVENT_DECODE_PAUSED EVENT_CODE(EV_CLASS_APPLICATION, EV_DECODE_PAUSED)
90 #define APP_EVENT_DECODE_RESUMED EVENT_CODE(EV_CLASS_APPLICATION, EV_DECODE_RESUMED)
91 #define APP_EVENT_SWITCH_ALTERNATIVE_SERVICE EVENT_CODE(EV_CLASS_APPLICATION, EV_SWITCH_ALTERNATIVE_SERVICE)
92 #define APP_EVENT_SERVICE_UPDATED EVENT_CODE(EV_CLASS_APPLICATION, EV_SERVICE_UPDATED)
93 #define APP_EVENT_START_SERVICE_SEARCH EVENT_CODE(EV_CLASS_APPLICATION, EV_START_SERVICE_SEARCH)
94 #define APP_EVENT_START_SSU_SEARCH EVENT_CODE(EV_CLASS_APPLICATION, EV_START_SSU_SEARCH)
95 #define APP_EVENT_SERVICE_SI_SDT_UPDATE EVENT_CODE(EV_CLASS_APPLICATION, EV_SERVICE_SI_SDT_UPDATE)
96 #define APP_EVENT_SERVICE_SI_NIT_UPDATE EVENT_CODE(EV_CLASS_APPLICATION, EV_SERVICE_SI_NIT_UPDATE)
97 #define APP_EVENT_PVR_RECORDING_STARTED EVENT_CODE(EV_CLASS_APPLICATION, EV_PVR_RECORDING_STARTED)
98 #define APP_EVENT_PVR_RECORDING_STOPPED EVENT_CODE(EV_CLASS_APPLICATION, EV_PVR_RECORDING_STOPPED)
99 
100 #define DISK_NAME_LEN 40 /* Max length for the name of a disk */
101 
102 //---TYPEDEFS-STRUCTS-ENUMERATIONS------------------------------------------------------------------
103 typedef enum
104 {
105  ACB_GET_SUBTITLE_PREF,
106  ACB_GET_AD_PREF,
107  ACB_GET_UI_LANG_PREF,
108  ACB_GET_UI_BANNER_TRANSPARENCY,
109  ACB_GET_UI_BANNER_TIMEOUT,
110  ACB_GET_UI_SERVICE_MODE,
111  ACB_NUM_INFO_TYPES
112 } E_ACB_INFO_TYPE;
113 
114 typedef enum
115 {
116  ACB_SERVICE_LIST_ALL, /* All or any service type */
117  ACB_SERVICE_LIST_TV_DATA, /* TV (including data) service type */
118  ACB_SERVICE_LIST_RADIO /* Radio service type */
119 } E_ACB_SERVICE_LIST_TYPE;
120 
121 typedef struct
122 {
123  BOOLEAN pref;
125 
126 typedef struct
127 {
128  BOOLEAN pref;
129 } S_ACB_AD_PREF;
130 
131 typedef struct
132 {
133  E_ACB_INFO_TYPE type;
134  union
135  {
136  S_ACB_SUBTITLE_PREF subtitle;
137  S_ACB_AD_PREF ad;
138  U8BIT ui_lang_id;
139  S32BIT banner_transparency;
140  S32BIT banner_timeout;
141  E_ACB_SERVICE_LIST_TYPE serv_type;
142  } u;
143 } S_ACB_UI_INFO;
144 
145 typedef enum
146 {
147  DVB_INIT_NO_TELETEXT_OR_SUBTITLES,
148  DVB_INIT_TELETEXT_ONLY,
149  DVB_INIT_SUBTITLES_ONLY,
150  DVB_INIT_TELETEXT_AND_SUBTITLES
151 } E_DVB_INIT_SUBS_TTXT;
152 
153 /*!**************************************************************************
154  * @brief Callback function implemented in the UI. This function is called
155  * by the DVB module to query values defined in the UI (e.g. user
156  * preferences)
157  * @param S_ACB_UI_INFO (IN/OUT) pointer to the structure that contains
158  * the type of request and other fields to exchange information
159  * between the DVB and the UI. These fields can be input or output
160  * values depending on the query type.
161  * @return TRUE if the information is returned, FALSE otherwise
162  ****************************************************************************/
163 typedef BOOLEAN (*ACB_INFO_CALLBACK)(S_ACB_UI_INFO *info);
164 
174 typedef void (*DVB_EVENT_HANDLER)(U32BIT event, void *event_data, U32BIT data_size);
175 
176 //---DEFINE THE GLOBAL VARIABLES--------------------------------------------------------------------
177 
178 //---FUNCTION PROTOTYPES----------------------------------------------------------------------------
179 
189 BOOLEAN APP_InitialiseDVB(DVB_EVENT_HANDLER event_handler, E_DVB_INIT_SUBS_TTXT subs_ttxt);
190 
191 #if 0
192 void APP_TerminateDVB(void);
193 #endif
194 
206 BOOLEAN APP_RegisterDVBEventHandler(DVB_EVENT_HANDLER event_handler);
207 
220 BOOLEAN APP_UnregisterDVBEventHandler(DVB_EVENT_HANDLER event_handler);
221 
222 // version string/Number retrieval
223 U8BIT* App_GetVersionString(void);
224 U32BIT App_GetVersionNumber(void);
225 
226 void APP_RegisterUIInfoCallback(ACB_INFO_CALLBACK ui_info_callback);
227 
232 void APP_SetClassifyRepeatEvents(BOOLEAN enable);
233 
234 #endif // _APP_H
235 //**************************************************************************************************
236 // End of File
237 //**************************************************************************************************
238 
BOOLEAN APP_UnregisterDVBEventHandler(DVB_EVENT_HANDLER event_handler)
Unregister a previously registered event handler.
Definition: ap_events.c:182
Definition: app.h:121
Definition: app.h:131
void APP_SetClassifyRepeatEvents(BOOLEAN enable)
Enable classifying of repeat events by EV_CLASS_IS_REPEAT flag.
Definition: ap_events.c:213
BOOLEAN(* ACB_INFO_CALLBACK)(S_ACB_UI_INFO *info)
Callback function implemented in the UI. This function is called by the DVB module to query values de...
Definition: app.h:163
Definition: app.h:126
BOOLEAN APP_InitialiseDVB(DVB_EVENT_HANDLER event_handler, E_DVB_INIT_SUBS_TTXT subs_ttxt)
Main function to initialise the DVB.
Definition: ap_init.c:99
void(* DVB_EVENT_HANDLER)(U32BIT event, void *event_data, U32BIT data_size)
The event notification callback function.
Definition: app.h:174
System Wide Global Technical Data Type Definitions.
BOOLEAN APP_RegisterDVBEventHandler(DVB_EVENT_HANDLER event_handler)
Register for DVB event notifications.
Definition: ap_events.c:162