DVBCore  22.11.0
Open Source DVB Engine
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_EXTERNAL_RECORD = 0x10,
56  TIMER_TYPE_ALL = 0xff
57 } E_TIMER_TYPE;
58 
59 typedef enum
60 {
61  TIMER_FREQ_ONCE,
62  TIMER_FREQ_WEEKLY,
63  TIMER_FREQ_WEEKENDDAYS,
64  TIMER_FREQ_WEEKDAYS,
65  TIMER_FREQ_DAILY,
66  TIMER_FREQ_HOURLY
67 } E_TIMER_FREQ;
68 
69 //---Global type defs for public use-------------------------------------------
70 // service data structures:
71 typedef struct
72 {
73  BOOLEAN change_service;
74  U16BIT service_id;
75  U16BIT transport_id;
76  U16BIT orig_net_id;
77  BOOLEAN ramp_volume;
78 } S_ALARM_INFO;
79 
80 typedef struct
81 {
82  U32DHMS duration;
83  BOOLEAN event_triggered;
84  U16BIT event_id;
85  U16BIT service_id;
86  U16BIT transport_id;
87  U16BIT orig_net_id;
88  U8BIT prog_crid[TMR_PVR_CRID_LEN_MAX];
89  U8BIT other_crid[TMR_PVR_CRID_LEN_MAX];
90  U16BIT disk_id;
91  BOOLEAN recommendation;
92  S32BIT start_padding; /* Padding time in seconds */
93  S32BIT end_padding;
94  U16BIT notify_time; /* Time in seconds to receive notification that a recording will soon start */
95  BOOLEAN do_not_delete;
97 
98 typedef struct s_timer
99 {
100  E_TIMER_TYPE type;
101  U8BIT name[TMR_MAX_NAME_LENGTH];
102  E_TIMER_FREQ frequency;
103  U32DHMS start_time;
104  BOOLEAN ram_only; /* If TRUE, don't save the timer in NVM */
105  union
106  {
107  S_ALARM_INFO alarm;
108  S_PVR_RECORD_INFO record;
109  } u;
110 } S_TIMER_INFO;
111 
112 typedef struct s_avrec_settings
113 {
114  U16BIT av_rec_lcn;
115  BOOLEAN standby_mode;
117 
118 //---Global Function prototypes for public use---------------------------------
119 
123 void ATMR_Initialise(void);
124 
130 U32BIT ATMR_AddTimer(S_TIMER_INFO *info);
131 
143 U32BIT ATMR_AddTimerForEvent(void *event_ptr, void *serv_ptr, BOOLEAN record, BOOLEAN event_triggered);
144 
151 BOOLEAN ATMR_UpdateTimerDuration(U32BIT handle, U32DHMS duration);
152 
159 BOOLEAN ATMR_UpdateTimer(U32BIT handle, S_TIMER_INFO *info);
160 
166 BOOLEAN ATMR_DeleteTimer(U32BIT handle);
167 
177 BOOLEAN ATMR_GetTimerList(U32BIT **timer_list, U16BIT *list_size, E_TIMER_TYPE list_type,
178  BOOLEAN date_time_order);
179 
185 void ATMR_ReleaseTimerList(U32BIT *timer_list, U16BIT list_size);
186 
201 BOOLEAN ATMR_InitialiseTimer(S_TIMER_INFO *timer_info, E_TIMER_TYPE timer_type, void *serv_ptr,
202  void *event_ptr);
203 
210 BOOLEAN ATMR_GetTimerInfo(U32BIT handle, S_TIMER_INFO *timer_info);
211 
218 BOOLEAN ATMR_StartRecord(U8BIT path);
219 
225 void ATMR_RecordingFailed(U8BIT path);
226 
232 void* ATMR_GetRecordService(U8BIT path);
233 
239 U8BIT* ATMR_GetName(U32BIT handle);
240 
245 void ATMR_SetName(U32BIT handle, U8BIT *name);
246 
253 U32DHMS ATMR_GetStartDateTime(U32BIT handle);
254 
260 U32DHMS ATMR_GetDuration(U32BIT handle);
261 
268 U32DHMS ATMR_GetEndDateTime(U32BIT handle);
269 
275 E_TIMER_TYPE ATMR_GetType(U32BIT handle);
276 
282 E_TIMER_FREQ ATMR_GetFrequency(U32BIT handle);
283 
289 BOOLEAN ATMR_GetChangeService(U32BIT handle);
290 
296 BOOLEAN ATMR_GetRampVolume(U32BIT handle);
297 
303 U16BIT ATMR_GetEventId(U32BIT handle);
304 
311 U16BIT ATMR_GetServiceId(U32BIT handle);
312 
319 U16BIT ATMR_GetTransportId(U32BIT handle);
320 
327 U16BIT ATMR_GetOriginalNetworkId(U32BIT handle);
328 
334 BOOLEAN ATMR_GetMissed(U32BIT handle);
335 
342 U8BIT* ATMR_GetProgrammeCrid(U32BIT handle);
343 
350 BOOLEAN ATMR_HasSeriesCrid(U32BIT handle);
351 
358 BOOLEAN ATMR_HasRecommendationCrid(U32BIT handle);
359 
368 U8BIT* ATMR_GetOtherCrid(U32BIT handle);
369 
375 U16BIT ATMR_GetDiskId(U32BIT handle);
376 
382 void ATMR_SetDiskId(U32BIT handle, U16BIT disk_id);
383 
390 U32BIT ATMR_GetRecordingHandle(U32BIT handle);
391 
400 void ATMR_HandleTimerEvent(U32BIT timer_handle);
401 
410 BOOLEAN ATMR_CheckRecordStatus(BOOLEAN recordings_can_start, void *service);
411 
417 void ATMR_EitUpdated(void);
418 
424 U32BIT ATMR_FindRecordingTimer(U32BIT recording_handle);
425 
430 void ATMR_DeleteRecordingTimer(U32BIT recording_handle);
431 
442 U8BIT ATMR_GetNumSimultaneousRecordings(U8BIT max_recordings, U32DHMS start_date_time,
443  U32DHMS end_date_time, U32BIT **conflicting_timers);
444 
459 void* ATMR_RecordEvent(void *serv_ptr, void *event_ptr, U8BIT *prog_crid, U8BIT *series_crid,
460  BOOLEAN is_series, BOOLEAN check_alternatives, BOOLEAN do_not_delete);
461 
474 BOOLEAN ATMR_RecordSplitEvent(void *serv_ptr, U8BIT *prog_crid, U32DHMS start_date_time,
475  BOOLEAN do_not_delete, BOOLEAN search_forward);
476 
486 U32BIT ATMR_GetFirstWakeupTime(U32DHMS *rec_date_time, U16BIT *onet_id, U16BIT *trans_id,
487  U16BIT *service_id);
488 
497 U32BIT ATMR_FindTimerFromEvent(U16BIT onet_id, U16BIT trans_id, U16BIT serv_id, U16BIT event_id);
498 
504 U32BIT ATMR_FindTimerFromCrid(U8BIT *prog_crid);
505 
514 U32BIT ATMR_FindTimerFromCridAndEvent(U8BIT *prog_crid, U16BIT service_id, U16BIT event_id);
515 
521 void ATMR_DeleteTimersForSeriesRecommendations(U8BIT *crid, BOOLEAN is_recommendation);
522 
530 void ATMR_SetAdditionalInfo(U32BIT handle, U8BIT *info, U32BIT size);
531 
539 U8BIT* ATMR_GetAdditionalInfo(U32BIT handle, U32BIT *size);
540 
548 S32BIT ATMR_GetStartPadding(U32BIT handle);
549 
558 BOOLEAN ATMR_SetStartPadding(U32BIT handle, S32BIT start_padding);
559 
567 S32BIT ATMR_GetEndPadding(U32BIT handle);
568 
577 BOOLEAN ATMR_SetEndPadding(U32BIT handle, S32BIT end_padding);
578 
586 BOOLEAN ATMR_SetDoNotDelete(U32BIT handle, BOOLEAN do_not_delete);
587 
593 BOOLEAN ATMR_GetDoNotDelete(U32BIT handle);
594 
595 void ATMR_DumpAllTimers(void);
596 
597 #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:1600
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:1465
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:1976
U16BIT ATMR_GetTransportId(U32BIT handle)
Returns the transport ID for an alarm or PVR recording timer.
Definition: ap_tmr.c:1363
BOOLEAN ATMR_GetChangeService(U32BIT handle)
Returns the change service setting for an alarm timer.
Definition: ap_tmr.c:1235
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:3345
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:2692
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:3312
U32DHMS ATMR_GetDuration(U32BIT handle)
Returns the duration of the timert with the given handle.
Definition: ap_tmr.c:1110
BOOLEAN ATMR_GetRampVolume(U32BIT handle)
Returns the ramp volume setting for an alarm timer.
Definition: ap_tmr.c:1265
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:557
U32BIT ATMR_GetRecordingHandle(U32BIT handle)
Returns the recording handle associated with a PVR recording timer.
Definition: ap_tmr.c:1659
void ATMR_DeleteRecordingTimer(U32BIT recording_handle)
Delete the PVR record timer with the given recording handle.
Definition: ap_tmr.c:2420
U32BIT ATMR_FindRecordingTimer(U32BIT recording_handle)
Finds the timer for the given recording handle.
Definition: ap_tmr.c:2384
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:3210
Definition: ap_tmr.h:98
void ATMR_DumpAllTimers(void)
Prints details of all existing timers.
Definition: ap_tmr.c:3435
E_TIMER_FREQ ATMR_GetFrequency(U32BIT handle)
Returns the frequency setting for the given timer.
Definition: ap_tmr.c:1205
BOOLEAN ATMR_HasSeriesCrid(U32BIT handle)
Does the timer have a series crid?
Definition: ap_tmr.c:1498
void ATMR_DeleteTimersForSeriesRecommendations(U8BIT *crid, BOOLEAN is_recommendation)
Deletes any PVR record timers with the given series CRID.
Definition: ap_tmr.c:3118
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:1690
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:1140
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:468
BOOLEAN ATMR_GetDoNotDelete(U32BIT handle)
Returns the setting of the do not delete flag for the given timer.
Definition: ap_tmr.c:3406
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:2140
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:3077
BOOLEAN ATMR_HasRecommendationCrid(U32BIT handle)
Does the timer have a recommendation crid?
Definition: ap_tmr.c:1532
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:893
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:2505
E_TIMER_TYPE ATMR_GetType(U32BIT handle)
Returns the type of the given timer.
Definition: ap_tmr.c:1175
U16BIT ATMR_GetOriginalNetworkId(U32BIT handle)
Returns the original network ID for an alarm or PVR recording timer.
Definition: ap_tmr.c:1399
U32BIT ATMR_FindTimerFromCrid(U8BIT *prog_crid)
Searches the timers for a recording timer with the given programme CRID.
Definition: ap_tmr.c:3039
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:255
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:2934
Definition: ap_tmr.h:80
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:3167
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:1630
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:3241
Definition: ap_tmr.h:112
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:3377
U16BIT ATMR_GetServiceId(U32BIT handle)
Returns the service ID for an alarm or PVR recording timer.
Definition: ap_tmr.c:1327
U8BIT * ATMR_GetName(U32BIT handle)
Get the name of the timer with the given handle.
Definition: ap_tmr.c:1019
BOOLEAN ATMR_UpdateTimer(U32BIT handle, S_TIMER_INFO *info)
Updates all the timer fields.
Definition: ap_tmr.c:402
System Wide Global Technical Data Type Definitions.
BOOLEAN ATMR_GetMissed(U32BIT handle)
Gets the timer's missed flag.
Definition: ap_tmr.c:1434
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:664
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:190
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:1082
BOOLEAN ATMR_UpdateTimerDuration(U32BIT handle, U32DHMS duration)
Updates the duration for an existing PVR recording timer.
Definition: ap_tmr.c:336
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:3003
BOOLEAN ATMR_DeleteTimer(U32BIT handle)
Deletes the timer with the given handle.
Definition: ap_tmr.c:442
void * ATMR_GetRecordService(U8BIT path)
Returns the service for the recording timer on the given path.
Definition: ap_tmr.c:981
void ATMR_SetName(U32BIT handle, U8BIT *name)
Sets the name of the timer with the given handle.
Definition: ap_tmr.c:1046
U16BIT ATMR_GetEventId(U32BIT handle)
Returns the event ID for a PVR recording timer.
Definition: ap_tmr.c:1295
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:2471
void ATMR_Initialise(void)
Performs initialisation of the timers, reading existing entries from the database.
Definition: ap_tmr.c:169
void ATMR_ReleaseTimerList(U32BIT *timer_list, U16BIT list_size)
Release the given array of timer handles.
Definition: ap_tmr.c:537
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:1568
Definition: ap_tmr.h:71
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:3274