DVBCore  22.11.0
Open Source DVB Engine
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_PVR_RECORDING_STARTED 0x001d
63 #define EV_PVR_RECORDING_STOPPED 0x001e
64 #define EV_PVR_BOOKING_CREATED 0x001f
65 #define EV_PVR_BOOKING_DELETED 0x0020
66 #define EV_PVR_RECORDING_DELETED 0x0021
67 #define EV_DELETE_SERVICE 0x0022 /* Service can't be deleted by DVBCore */
68 #define EV_SERVICE_MOVED 0x0023 /* Service has changed transport; retune is required to stay on it */
69 #define EV_SERVICE_ADDED 0x0024 /* Service has been added dynamically */
70 
71 
72 #define APP_EVENT_SERVICE_NOT_RUNNING EVENT_CODE(EV_CLASS_APPLICATION, EV_SERVICE_NOT_RUNNING)
73 #define APP_EVENT_SERVICE_AUDIO_PID_UPDATE EVENT_CODE(EV_CLASS_APPLICATION, EV_SERVICE_AUDIO_PID_UPDATE)
74 #define APP_EVENT_SERVICE_VIDEO_PID_UPDATE EVENT_CODE(EV_CLASS_APPLICATION, EV_SERVICE_VIDEO_PID_UPDATE)
75 #define APP_EVENT_SERVICE_SUBTITLE_UPDATE EVENT_CODE(EV_CLASS_APPLICATION, EV_SERVICE_SUBTITLE_UPDATE)
76 #define APP_EVENT_SERVICE_SCRAMBLE_CHANGE EVENT_CODE(EV_CLASS_APPLICATION, EV_SERVICE_SCRAMBLE_CHANGE)
77 #define APP_EVENT_SERVICE_ANALOG_LOCKED EVENT_CODE(EV_CLASS_APPLICATION, EV_SERVICE_ANALOG_LOCKED)
78 #define APP_EVENT_SERVICE_ANALOG_STARTED EVENT_CODE(EV_CLASS_APPLICATION, EV_SERVICE_ANALOG_STARTED)
79 #define APP_EVENT_INDICATION_STATUS EVENT_CODE(EV_CLASS_APPLICATION, EV_INDICATION_STATUS)
80 #define APP_EVENT_SERVICE_RUNNING EVENT_CODE(EV_CLASS_APPLICATION, EV_SERVICE_RUNNING)
81 #define APP_EVENT_SERVICE_EIT_NOW_UPDATE EVENT_CODE(EV_CLASS_APPLICATION, EV_SERVICE_EIT_NOW_UPDATE)
82 #define APP_EVENT_SERVICE_EIT_SCHED_UPDATE EVENT_CODE(EV_CLASS_APPLICATION, EV_SERVICE_EIT_SCHED_UPDATE)
83 #define APP_EVENT_SERVICE_ECM_PID_UPDATE EVENT_CODE(EV_CLASS_APPLICATION, EV_SERVICE_ECM_PID_UPDATE)
84 #define APP_EVENT_PVR_RECORDING_FAILED EVENT_CODE(EV_CLASS_APPLICATION, EV_PVR_RECORDING_FAILED)
85 #define APP_EVENT_SERVICE_VIDEO_CODEC_CHANGED EVENT_CODE(EV_CLASS_APPLICATION, EV_SERVICE_VIDEO_CODEC_CHANGED)
86 #define APP_EVENT_SERVICE_AUDIO_CODEC_CHANGED EVENT_CODE(EV_CLASS_APPLICATION, EV_SERVICE_AUDIO_CODEC_CHANGED)
87 #define APP_EVENT_SERVICE_CHANGED EVENT_CODE(EV_CLASS_APPLICATION, EV_SERVICE_CHANGED)
88 #define APP_EVENT_SERVICE_STREAMS_CHANGED EVENT_CODE(EV_CLASS_APPLICATION, EV_SERVICE_STREAMS_CHANGED)
89 #define APP_EVENT_SERVICE_SI_PID_UPDATE EVENT_CODE(EV_CLASS_APPLICATION, EV_SERVICE_SI_PID_UPDATE)
90 #define APP_EVENT_TIME_CHANGED EVENT_CODE(EV_CLASS_APPLICATION, EV_TIME_CHANGED)
91 #define APP_EVENT_CIPLUS_TUNE_COMPLETED EVENT_CODE(EV_CLASS_APPLICATION, EV_CIPLUS_TUNE_COMPLETED)
92 #define APP_EVENT_SERVICE_DELETED EVENT_CODE(EV_CLASS_APPLICATION, EV_SERVICE_DELETED)
93 #define APP_EVENT_TIMER_TRIGGERED EVENT_CODE(EV_CLASS_APPLICATION, EV_TIMER_TRIGGERED)
94 #define APP_EVENT_DECODE_PAUSED EVENT_CODE(EV_CLASS_APPLICATION, EV_DECODE_PAUSED)
95 #define APP_EVENT_DECODE_RESUMED EVENT_CODE(EV_CLASS_APPLICATION, EV_DECODE_RESUMED)
96 #define APP_EVENT_SWITCH_ALTERNATIVE_SERVICE EVENT_CODE(EV_CLASS_APPLICATION, EV_SWITCH_ALTERNATIVE_SERVICE)
97 #define APP_EVENT_SERVICE_UPDATED EVENT_CODE(EV_CLASS_APPLICATION, EV_SERVICE_UPDATED)
98 #define APP_EVENT_START_SERVICE_SEARCH EVENT_CODE(EV_CLASS_APPLICATION, EV_START_SERVICE_SEARCH)
99 #define APP_EVENT_START_SSU_SEARCH EVENT_CODE(EV_CLASS_APPLICATION, EV_START_SSU_SEARCH)
100 #define APP_EVENT_PVR_RECORDING_STARTED EVENT_CODE(EV_CLASS_APPLICATION, EV_PVR_RECORDING_STARTED)
101 #define APP_EVENT_PVR_RECORDING_STOPPED EVENT_CODE(EV_CLASS_APPLICATION, EV_PVR_RECORDING_STOPPED)
102 #define APP_EVENT_PVR_BOOKING_CREATED EVENT_CODE(EV_CLASS_APPLICATION, EV_PVR_BOOKING_CREATED)
103 #define APP_EVENT_PVR_BOOKING_DELETED EVENT_CODE(EV_CLASS_APPLICATION, EV_PVR_BOOKING_DELETED)
104 #define APP_EVENT_PVR_RECORDING_DELETED EVENT_CODE(EV_CLASS_APPLICATION, EV_PVR_RECORDING_DELETED)
105 #define APP_EVENT_DELETE_SERVICE EVENT_CODE(EV_CLASS_APPLICATION, EV_DELETE_SERVICE)
106 #define APP_EVENT_SERVICE_MOVED EVENT_CODE(EV_CLASS_APPLICATION, EV_SERVICE_MOVED)
107 #define APP_EVENT_SERVICE_ADDED EVENT_CODE(EV_CLASS_APPLICATION, EV_SERVICE_ADDED)
108 
109 
110 #define DISK_NAME_LEN 40 /* Max length for the name of a disk */
111 
112 //---TYPEDEFS-STRUCTS-ENUMERATIONS------------------------------------------------------------------
113 typedef enum
114 {
115  ACB_GET_SUBTITLE_PREF,
116  ACB_GET_AD_PREF,
117  ACB_GET_UI_LANG_PREF,
118  ACB_GET_UI_BANNER_TRANSPARENCY,
119  ACB_GET_UI_BANNER_TIMEOUT,
120  ACB_GET_UI_SERVICE_MODE,
121  ACB_NUM_INFO_TYPES
122 } E_ACB_INFO_TYPE;
123 
124 typedef enum
125 {
126  ACB_SERVICE_LIST_ALL, /* All or any service type */
127  ACB_SERVICE_LIST_TV_DATA, /* TV (including data) service type */
128  ACB_SERVICE_LIST_RADIO /* Radio service type */
129 } E_ACB_SERVICE_LIST_TYPE;
130 
131 typedef struct
132 {
133  BOOLEAN pref;
135 
136 typedef struct
137 {
138  BOOLEAN pref;
139 } S_ACB_AD_PREF;
140 
141 typedef struct
142 {
143  E_ACB_INFO_TYPE type;
144  union
145  {
146  S_ACB_SUBTITLE_PREF subtitle;
147  S_ACB_AD_PREF ad;
148  U8BIT ui_lang_id;
149  S32BIT banner_transparency;
150  S32BIT banner_timeout;
151  E_ACB_SERVICE_LIST_TYPE serv_type;
152  } u;
153 } S_ACB_UI_INFO;
154 
155 typedef enum
156 {
157  DVB_INIT_NO_TELETEXT_OR_SUBTITLES,
158  DVB_INIT_TELETEXT_ONLY,
159  DVB_INIT_SUBTITLES_ONLY,
160  DVB_INIT_TELETEXT_AND_SUBTITLES
161 } E_DVB_INIT_SUBS_TTXT;
162 
163 /*!**************************************************************************
164  * @brief Callback function implemented in the UI. This function is called
165  * by the DVB module to query values defined in the UI (e.g. user
166  * preferences)
167  * @param S_ACB_UI_INFO (IN/OUT) pointer to the structure that contains
168  * the type of request and other fields to exchange information
169  * between the DVB and the UI. These fields can be input or output
170  * values depending on the query type.
171  * @return TRUE if the information is returned, FALSE otherwise
172  ****************************************************************************/
173 typedef BOOLEAN (*ACB_INFO_CALLBACK)(S_ACB_UI_INFO *info);
174 
184 typedef void (*DVB_EVENT_HANDLER)(U32BIT event, void *event_data, U32BIT data_size);
185 
186 //---DEFINE THE GLOBAL VARIABLES--------------------------------------------------------------------
187 
188 //---FUNCTION PROTOTYPES----------------------------------------------------------------------------
189 
199 BOOLEAN APP_InitialiseDVB(DVB_EVENT_HANDLER event_handler, E_DVB_INIT_SUBS_TTXT subs_ttxt);
200 
201 #if 0
202 void APP_TerminateDVB(void);
203 #endif
204 
216 BOOLEAN APP_RegisterDVBEventHandler(DVB_EVENT_HANDLER event_handler);
217 
230 BOOLEAN APP_UnregisterDVBEventHandler(DVB_EVENT_HANDLER event_handler);
231 
232 // version string/Number retrieval
233 U8BIT* App_GetVersionString(void);
234 U32BIT App_GetVersionNumber(void);
235 
236 void APP_RegisterUIInfoCallback(ACB_INFO_CALLBACK ui_info_callback);
237 
242 void APP_SetClassifyRepeatEvents(BOOLEAN enable);
243 
244 #endif // _APP_H
245 //**************************************************************************************************
246 // End of File
247 //**************************************************************************************************
248 
BOOLEAN APP_UnregisterDVBEventHandler(DVB_EVENT_HANDLER event_handler)
Unregister a previously registered event handler.
Definition: ap_events.c:182
Definition: app.h:131
Definition: app.h:141
void APP_SetClassifyRepeatEvents(BOOLEAN enable)
Enable classifying of repeat events by EV_CLASS_IS_REPEAT flag.
Definition: ap_events.c:213
Definition: app.h:136
void(* DVB_EVENT_HANDLER)(U32BIT event, void *event_data, U32BIT data_size)
The event notification callback function.
Definition: app.h:184
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:96
System Wide Global Technical Data Type Definitions.
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:173
BOOLEAN APP_RegisterDVBEventHandler(DVB_EVENT_HANDLER event_handler)
Register for DVB event notifications.
Definition: ap_events.c:162