DVBCore  20.3.0
DVBCore Documentation
ap_tmr.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  *******************************************************************************/
25 // pre-processor mechanism so multiple inclusions don't cause compilation error
26 
27 #ifndef _AP_TMR_H
28 #define _AP_TMR_H
29 
30 #include "techtype.h"
31 #include "stbgc.h"
32 
33 //---Constant and macro definitions for public use-----------------------------
34 #define INVALID_TIMER_HANDLE 0
35 
36 #define TMR_MAX_NAME_LENGTH 128
37 
38 #define TMR_PVR_CRID_LEN_MAX 65
39 
40 #define TMR_PVR_ADDINFO_LEN_MAX 255
41 #if 0
42 #define TMR_HOURS_THRESHOLD_EXC 24
43 #define TMR_MINS_THRESHOLD_EXC 60
44 #endif
45 
46 //---Enumerations for public use-----------------------------------------------
47 
48 typedef enum
49 {
50  TIMER_TYPE_NONE = 0x00,
51  TIMER_TYPE_ALARM = 0x01,
52  TIMER_TYPE_SLEEP = 0x02,
53  TIMER_TYPE_PVR_RECORD = 0x04,
54  TIMER_TYPE_PRIVATE = 0x08,
55  TIMER_TYPE_ALL = 0xff
56 } E_TIMER_TYPE;
57 
58 typedef enum
59 {
60  TIMER_FREQ_ONCE,
61  TIMER_FREQ_WEEKLY,
62  TIMER_FREQ_WEEKENDDAYS,
63  TIMER_FREQ_WEEKDAYS,
64  TIMER_FREQ_DAILY,
65  TIMER_FREQ_HOURLY
66 } E_TIMER_FREQ;
67 
68 //---Global type defs for public use-------------------------------------------
69 // service data structures:
70 typedef struct
71 {
72  BOOLEAN change_service;
73  U16BIT service_id;
74  U16BIT transport_id;
75  U16BIT orig_net_id;
76  BOOLEAN ramp_volume;
77 } S_ALARM_INFO;
78 
79 typedef struct
80 {
81  U32DHMS duration;
82  BOOLEAN event_triggered;
83  U16BIT event_id;
84  U16BIT service_id;
85  U16BIT transport_id;
86  U16BIT orig_net_id;
87  U8BIT prog_crid[TMR_PVR_CRID_LEN_MAX];
88  U8BIT other_crid[TMR_PVR_CRID_LEN_MAX];
89  U16BIT disk_id;
90  BOOLEAN recommendation;
91  S32BIT start_padding; /* Padding time in seconds */
92  S32BIT end_padding;
93  U16BIT notify_time; /* Time in seconds to receive notification that a recording will soon start */
94  BOOLEAN do_not_delete;
96 
97 typedef struct s_timer
98 {
99  E_TIMER_TYPE type;
100  U8BIT name[TMR_MAX_NAME_LENGTH];
101  E_TIMER_FREQ frequency;
102  U32DHMS start_time;
103  BOOLEAN ram_only; /* If TRUE, don't save the timer in NVM */
104  union
105  {
106  S_ALARM_INFO alarm;
107  S_PVR_RECORD_INFO record;
108  } u;
109 } S_TIMER_INFO;
110 
111 typedef struct s_avrec_settings
112 {
113  U16BIT av_rec_lcn;
114  BOOLEAN standby_mode;
116 
117 //---Global Function prototypes for public use---------------------------------
118 
122 void ATMR_Initialise(void);
123 
129 U32BIT ATMR_AddTimer(S_TIMER_INFO *info);
130 
142 U32BIT ATMR_AddTimerForEvent(void *event_ptr, void *serv_ptr, BOOLEAN record, BOOLEAN event_triggered);
143 
150 BOOLEAN ATMR_UpdateTimerDuration(U32BIT handle, U32DHMS duration);
151 
158 BOOLEAN ATMR_UpdateTimer(U32BIT handle, S_TIMER_INFO *info);
159 
165 BOOLEAN ATMR_DeleteTimer(U32BIT handle);
166 
176 BOOLEAN ATMR_GetTimerList(U32BIT **timer_list, U16BIT *list_size, E_TIMER_TYPE list_type,
177  BOOLEAN date_time_order);
178 
184 void ATMR_ReleaseTimerList(U32BIT *timer_list, U16BIT list_size);
185 
200 BOOLEAN ATMR_InitialiseTimer(S_TIMER_INFO *timer_info, E_TIMER_TYPE timer_type, void *serv_ptr,
201  void *event_ptr);
202 
209 BOOLEAN ATMR_GetTimerInfo(U32BIT handle, S_TIMER_INFO *timer_info);
210 
217 BOOLEAN ATMR_StartRecord(U8BIT path);
218 
224 void ATMR_RecordingFailed(U8BIT path);
225 
231 void* ATMR_GetRecordService(U8BIT path);
232 
238 U8BIT* ATMR_GetName(U32BIT handle);
239 
244 void ATMR_SetName(U32BIT handle, U8BIT *name);
245 
252 U32DHMS ATMR_GetStartDateTime(U32BIT handle);
253 
259 U32DHMS ATMR_GetDuration(U32BIT handle);
260 
267 U32DHMS ATMR_GetEndDateTime(U32BIT handle);
268 
274 E_TIMER_TYPE ATMR_GetType(U32BIT handle);
275 
281 E_TIMER_FREQ ATMR_GetFrequency(U32BIT handle);
282 
288 BOOLEAN ATMR_GetChangeService(U32BIT handle);
289 
295 BOOLEAN ATMR_GetRampVolume(U32BIT handle);
296 
302 U16BIT ATMR_GetEventId(U32BIT handle);
303 
310 U16BIT ATMR_GetServiceId(U32BIT handle);
311 
318 U16BIT ATMR_GetTransportId(U32BIT handle);
319 
326 U16BIT ATMR_GetOriginalNetworkId(U32BIT handle);
327 
333 BOOLEAN ATMR_GetMissed(U32BIT handle);
334 
341 U8BIT* ATMR_GetProgrammeCrid(U32BIT handle);
342 
349 BOOLEAN ATMR_HasSeriesCrid(U32BIT handle);
350 
357 BOOLEAN ATMR_HasRecommendationCrid(U32BIT handle);
358 
367 U8BIT* ATMR_GetOtherCrid(U32BIT handle);
368 
374 U16BIT ATMR_GetDiskId(U32BIT handle);
375 
381 void ATMR_SetDiskId(U32BIT handle, U16BIT disk_id);
382 
389 U32BIT ATMR_GetRecordingHandle(U32BIT handle);
390 
399 void ATMR_HandleTimerEvent(U32BIT timer_handle);
400 
409 BOOLEAN ATMR_CheckRecordStatus(BOOLEAN recordings_can_start, void *service);
410 
416 void ATMR_EitUpdated(void);
417 
423 U32BIT ATMR_FindRecordingTimer(U32BIT recording_handle);
424 
429 void ATMR_DeleteRecordingTimer(U32BIT recording_handle);
430 
441 U8BIT ATMR_GetNumSimultaneousRecordings(U8BIT max_recordings, U32DHMS start_date_time,
442  U32DHMS end_date_time, U32BIT **conflicting_timers);
443 
458 void* ATMR_RecordEvent(void *serv_ptr, void *event_ptr, U8BIT *prog_crid, U8BIT *series_crid,
459  BOOLEAN is_series, BOOLEAN check_alternatives, BOOLEAN do_not_delete);
460 
473 BOOLEAN ATMR_RecordSplitEvent(void *serv_ptr, U8BIT *prog_crid, U32DHMS start_date_time,
474  BOOLEAN do_not_delete, BOOLEAN search_forward);
475 
485 U32BIT ATMR_GetFirstWakeupTime(U32DHMS *rec_date_time, U16BIT *onet_id, U16BIT *trans_id,
486  U16BIT *service_id);
487 
496 U32BIT ATMR_FindTimerFromEvent(U16BIT onet_id, U16BIT trans_id, U16BIT serv_id, U16BIT event_id);
497 
503 U32BIT ATMR_FindTimerFromCrid(U8BIT *prog_crid);
504 
513 U32BIT ATMR_FindTimerFromCridAndEvent(U8BIT *prog_crid, U16BIT service_id, U16BIT event_id);
514 
520 void ATMR_DeleteTimersForSeriesRecommendations(U8BIT *crid, BOOLEAN is_recommendation);
521 
529 void ATMR_SetAdditionalInfo(U32BIT handle, U8BIT *info, U32BIT size);
530 
538 U8BIT* ATMR_GetAdditionalInfo(U32BIT handle, U32BIT *size);
539 
547 S32BIT ATMR_GetStartPadding(U32BIT handle);
548 
557 BOOLEAN ATMR_SetStartPadding(U32BIT handle, S32BIT start_padding);
558 
566 S32BIT ATMR_GetEndPadding(U32BIT handle);
567 
576 BOOLEAN ATMR_SetEndPadding(U32BIT handle, S32BIT end_padding);
577 
585 BOOLEAN ATMR_SetDoNotDelete(U32BIT handle, BOOLEAN do_not_delete);
586 
592 BOOLEAN ATMR_GetDoNotDelete(U32BIT handle);
593 
594 void ATMR_DumpAllTimers(void);
595 
596 #endif // _AP_TMR_H
U16BIT ATMR_GetDiskId(U32BIT handle)
Returns the disk id for the given timer if the timer is a PVR recording timer.
Definition: ap_tmr.c:1584
U8BIT * ATMR_GetProgrammeCrid(U32BIT handle)
Returns a pointer to the programme CRID string from a recording timer. The returned value shouldn't b...
Definition: ap_tmr.c:1453
BOOLEAN ATMR_CheckRecordStatus(BOOLEAN recordings_can_start, void *service)
Checks all timers to see whether any recordings should be started or stopped as a result of the now e...
Definition: ap_tmr.c:1939
U16BIT ATMR_GetTransportId(U32BIT handle)
Returns the transport ID for an alarm or PVR recording timer.
Definition: ap_tmr.c:1351
BOOLEAN ATMR_GetChangeService(U32BIT handle)
Returns the change service setting for an alarm timer.
Definition: ap_tmr.c:1224
BOOLEAN ATMR_SetEndPadding(U32BIT handle, S32BIT end_padding)
Sets the value of end_padding associated with the specified timer The end padding is the number of se...
Definition: ap_tmr.c:3304
BOOLEAN ATMR_RecordSplitEvent(void *serv_ptr, U8BIT *prog_crid, U32DHMS start_date_time, BOOLEAN do_not_delete, BOOLEAN search_forward)
Searches for events within 3 hours of the given start date/time for an event with the given programme...
Definition: ap_tmr.c:2653
S32BIT ATMR_GetEndPadding(U32BIT handle)
Returns the value of end_padding associated with the specified timer The end padding is the number of...
Definition: ap_tmr.c:3271
U32DHMS ATMR_GetDuration(U32BIT handle)
Returns the duration of the timert with the given handle.
Definition: ap_tmr.c:1100
BOOLEAN ATMR_GetRampVolume(U32BIT handle)
Returns the ramp volume setting for an alarm timer.
Definition: ap_tmr.c:1254
BOOLEAN ATMR_StartRecord(U8BIT path)
Finds the timer using the given decode path and if it's a recording timer the recording will be start...
Definition: ap_tmr.c:558
U32BIT ATMR_GetRecordingHandle(U32BIT handle)
Returns the recording handle associated with a PVR recording timer.
Definition: ap_tmr.c:1643
void ATMR_DeleteRecordingTimer(U32BIT recording_handle)
Delete the PVR record timer with the given recording handle.
Definition: ap_tmr.c:2382
U32BIT ATMR_FindRecordingTimer(U32BIT recording_handle)
Finds the timer for the given recording handle.
Definition: ap_tmr.c:2346
U8BIT * ATMR_GetAdditionalInfo(U32BIT handle, U32BIT *size)
Gets the additional information string associated with a timer. The name is allocated in UI temp memo...
Definition: ap_tmr.c:3170
Definition: ap_tmr.h:97
void ATMR_DumpAllTimers(void)
Prints details of all existing timers.
Definition: ap_tmr.c:3392
E_TIMER_FREQ ATMR_GetFrequency(U32BIT handle)
Returns the frequency setting for the given timer.
Definition: ap_tmr.c:1194
BOOLEAN ATMR_HasSeriesCrid(U32BIT handle)
Does the timer have a series crid?
Definition: ap_tmr.c:1485
void ATMR_DeleteTimersForSeriesRecommendations(U8BIT *crid, BOOLEAN is_recommendation)
Deletes any PVR record timers with the given series CRID.
Definition: ap_tmr.c:3079
void ATMR_HandleTimerEvent(U32BIT timer_handle)
Used by the DVB stack to handle an event for the given timer. If the timer requires the app to deal w...
Definition: ap_tmr.c:1674
U32DHMS ATMR_GetEndDateTime(U32BIT handle)
Get the end date & time of the timer with the given handle. The date/time returned will be in UTC...
Definition: ap_tmr.c:1129
BOOLEAN ATMR_GetTimerList(U32BIT **timer_list, U16BIT *list_size, E_TIMER_TYPE list_type, BOOLEAN date_time_order)
Returns a list of all the timer handles and the number of items in the list.
Definition: ap_tmr.c:470
BOOLEAN ATMR_GetDoNotDelete(U32BIT handle)
Returns the setting of the do not delete flag for the given timer.
Definition: ap_tmr.c:3364
void ATMR_EitUpdated(void)
Checks each recording timer that's linked to an event to see whether the event is still in the schedu...
Definition: ap_tmr.c:2102
U32BIT ATMR_FindTimerFromCridAndEvent(U8BIT *prog_crid, U16BIT service_id, U16BIT event_id)
Searches the timers for a recording timer with the given programme CRID and event ID...
Definition: ap_tmr.c:3038
BOOLEAN ATMR_HasRecommendationCrid(U32BIT handle)
Does the timer have a recommendation crid?
Definition: ap_tmr.c:1518
BOOLEAN ATMR_GetTimerInfo(U32BIT handle, S_TIMER_INFO *timer_info)
Copies timer data for the given timer info the info structure provided.
Definition: ap_tmr.c:885
void * ATMR_RecordEvent(void *serv_ptr, void *event_ptr, U8BIT *prog_crid, U8BIT *series_crid, BOOLEAN is_series, BOOLEAN check_alternatives, BOOLEAN do_not_delete)
Adds a timer to perform a recording based on the given event and service. Conflicts are checked and a...
Definition: ap_tmr.c:2466
E_TIMER_TYPE ATMR_GetType(U32BIT handle)
Returns the type of the given timer.
Definition: ap_tmr.c:1164
U16BIT ATMR_GetOriginalNetworkId(U32BIT handle)
Returns the original network ID for an alarm or PVR recording timer.
Definition: ap_tmr.c:1387
U32BIT ATMR_FindTimerFromCrid(U8BIT *prog_crid)
Searches the timers for a recording timer with the given programme CRID.
Definition: ap_tmr.c:3000
U32BIT ATMR_AddTimerForEvent(void *event_ptr, void *serv_ptr, BOOLEAN record, BOOLEAN event_triggered)
Creates a timer based on the given event. If a recording timer is created, it will be set to record o...
Definition: ap_tmr.c:251
Header file - macros and function prototypes for public use.
U32BIT ATMR_GetFirstWakeupTime(U32DHMS *rec_date_time, U16BIT *onet_id, U16BIT *trans_id, U16BIT *service_id)
Searches the timers for the first timer that will cause the DVB to wakeup that hasn't been missed...
Definition: ap_tmr.c:2895
void ATMR_SetAdditionalInfo(U32BIT handle, U8BIT *info, U32BIT size)
Sets the additioinal information string for the specified timer and commits the change to the databas...
Definition: ap_tmr.c:3128
void ATMR_SetDiskId(U32BIT handle, U16BIT disk_id)
Set the disk for the given timer if the timer is a recording timer.
Definition: ap_tmr.c:1614
S32BIT ATMR_GetStartPadding(U32BIT handle)
Returns the value of start_padding associated with the specified timer The start padding is the numbe...
Definition: ap_tmr.c:3200
BOOLEAN ATMR_SetDoNotDelete(U32BIT handle, BOOLEAN do_not_delete)
Sets the do_not_delete flag in a recording timer, which if set to TRUE, will lock any recordings that...
Definition: ap_tmr.c:3336
U16BIT ATMR_GetServiceId(U32BIT handle)
Returns the service ID for an alarm or PVR recording timer.
Definition: ap_tmr.c:1315
U8BIT * ATMR_GetName(U32BIT handle)
Get the name of the timer with the given handle.
Definition: ap_tmr.c:1009
BOOLEAN ATMR_UpdateTimer(U32BIT handle, S_TIMER_INFO *info)
Updates all the timer fields.
Definition: ap_tmr.c:397
System Wide Global Technical Data Type Definitions.
BOOLEAN ATMR_GetMissed(U32BIT handle)
Gets the timer's missed flag.
Definition: ap_tmr.c:1422
void ATMR_RecordingFailed(U8BIT path)
Handles the timer when a recording fails to start for some reason. This may result in the timer being...
Definition: ap_tmr.c:665
BOOLEAN ATMR_InitialiseTimer(S_TIMER_INFO *timer_info, E_TIMER_TYPE timer_type, void *serv_ptr, void *event_ptr)
Sets up the given timer info structure with default values for the given timer type using the service...
Definition: ap_tmr.c:724
U32BIT ATMR_AddTimer(S_TIMER_INFO *info)
Creates a new timer based on the information supplied.
Definition: ap_tmr.c:189
U32DHMS ATMR_GetStartDateTime(U32BIT handle)
Get the start date & time of the timer with the given handle. The date/time returned will be in UTC...
Definition: ap_tmr.c:1072
BOOLEAN ATMR_UpdateTimerDuration(U32BIT handle, U32DHMS duration)
Updates the duration for an existing PVR recording timer.
Definition: ap_tmr.c:332
U32BIT ATMR_FindTimerFromEvent(U16BIT onet_id, U16BIT trans_id, U16BIT serv_id, U16BIT event_id)
Searches the timers for a recording timer with the given event and service IDs.
Definition: ap_tmr.c:2964
BOOLEAN ATMR_DeleteTimer(U32BIT handle)
Deletes the timer with the given handle.
Definition: ap_tmr.c:436
void * ATMR_GetRecordService(U8BIT path)
Returns the service for the recording timer on the given path.
Definition: ap_tmr.c:972
void ATMR_SetName(U32BIT handle, U8BIT *name)
Sets the name of the timer with the given handle.
Definition: ap_tmr.c:1036
U16BIT ATMR_GetEventId(U32BIT handle)
Returns the event ID for a PVR recording timer.
Definition: ap_tmr.c:1284
U8BIT ATMR_GetNumSimultaneousRecordings(U8BIT max_recordings, U32DHMS start_date_time, U32DHMS end_date_time, U32BIT **conflicting_timers)
Counts the number of simultaneous recordings (EXT and PVR) between the given start and end dates/time...
Definition: ap_tmr.c:2432
void ATMR_Initialise(void)
Performs initialisation of the timers, reading existing entries from the database.
Definition: ap_tmr.c:168
void ATMR_ReleaseTimerList(U32BIT *timer_list, U16BIT list_size)
Release the given array of timer handles.
Definition: ap_tmr.c:538
U8BIT * ATMR_GetOtherCrid(U32BIT handle)
Returns a pointer to the other CRID string from a recording timer. This will either be a series or re...
Definition: ap_tmr.c:1553
BOOLEAN ATMR_SetStartPadding(U32BIT handle, S32BIT start_padding)
Sets the value of start_padding associated with the specified timer The start padding is the number o...
Definition: ap_tmr.c:3233