summaryrefslogtreecommitdiffstats
path: root/xbmc/addons/kodi-dev-kit/include/kodi/c-api/addon-instance/pvr
diff options
context:
space:
mode:
Diffstat (limited to 'xbmc/addons/kodi-dev-kit/include/kodi/c-api/addon-instance/pvr')
-rw-r--r--xbmc/addons/kodi-dev-kit/include/kodi/c-api/addon-instance/pvr/CMakeLists.txt14
-rw-r--r--xbmc/addons/kodi-dev-kit/include/kodi/c-api/addon-instance/pvr/pvr_channel_groups.h59
-rw-r--r--xbmc/addons/kodi-dev-kit/include/kodi/c-api/addon-instance/pvr/pvr_channels.h109
-rw-r--r--xbmc/addons/kodi-dev-kit/include/kodi/c-api/addon-instance/pvr/pvr_defines.h66
-rw-r--r--xbmc/addons/kodi-dev-kit/include/kodi/c-api/addon-instance/pvr/pvr_edl.h67
-rw-r--r--xbmc/addons/kodi-dev-kit/include/kodi/c-api/addon-instance/pvr/pvr_epg.h658
-rw-r--r--xbmc/addons/kodi-dev-kit/include/kodi/c-api/addon-instance/pvr/pvr_general.h295
-rw-r--r--xbmc/addons/kodi-dev-kit/include/kodi/c-api/addon-instance/pvr/pvr_menu_hook.h77
-rw-r--r--xbmc/addons/kodi-dev-kit/include/kodi/c-api/addon-instance/pvr/pvr_recordings.h148
-rw-r--r--xbmc/addons/kodi-dev-kit/include/kodi/c-api/addon-instance/pvr/pvr_stream.h160
-rw-r--r--xbmc/addons/kodi-dev-kit/include/kodi/c-api/addon-instance/pvr/pvr_timers.h412
11 files changed, 2065 insertions, 0 deletions
diff --git a/xbmc/addons/kodi-dev-kit/include/kodi/c-api/addon-instance/pvr/CMakeLists.txt b/xbmc/addons/kodi-dev-kit/include/kodi/c-api/addon-instance/pvr/CMakeLists.txt
new file mode 100644
index 0000000..0e37ea4
--- /dev/null
+++ b/xbmc/addons/kodi-dev-kit/include/kodi/c-api/addon-instance/pvr/CMakeLists.txt
@@ -0,0 +1,14 @@
1set(HEADERS pvr_channel_groups.h
2 pvr_channels.h
3 pvr_defines.h
4 pvr_edl.h
5 pvr_epg.h
6 pvr_general.h
7 pvr_menu_hook.h
8 pvr_recordings.h
9 pvr_stream.h
10 pvr_timers.h)
11
12if(NOT ENABLE_STATIC_LIBS)
13 core_add_library(addons_kodi-dev-kit_include_kodi_c-api_addon-instance_pvr)
14endif()
diff --git a/xbmc/addons/kodi-dev-kit/include/kodi/c-api/addon-instance/pvr/pvr_channel_groups.h b/xbmc/addons/kodi-dev-kit/include/kodi/c-api/addon-instance/pvr/pvr_channel_groups.h
new file mode 100644
index 0000000..a24d27f
--- /dev/null
+++ b/xbmc/addons/kodi-dev-kit/include/kodi/c-api/addon-instance/pvr/pvr_channel_groups.h
@@ -0,0 +1,59 @@
1/*
2 * Copyright (C) 2005-2018 Team Kodi
3 * This file is part of Kodi - https://kodi.tv
4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
7 */
8
9#pragma once
10
11#ifndef C_API_ADDONINSTANCE_PVR_CHANNEL_GROUPS_H
12#define C_API_ADDONINSTANCE_PVR_CHANNEL_GROUPS_H
13
14#include "pvr_defines.h"
15
16#include <stdbool.h>
17
18//¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
19// "C" Definitions group 3 - PVR channel group
20#ifdef __cplusplus
21extern "C"
22{
23#endif /* __cplusplus */
24
25 /*!
26 * @brief "C" PVR add-on channel group.
27 *
28 * Structure used to interface in "C" between Kodi and Addon.
29 *
30 * See @ref kodi::addon::PVRChannelGroup for description of values.
31 */
32 typedef struct PVR_CHANNEL_GROUP
33 {
34 char strGroupName[PVR_ADDON_NAME_STRING_LENGTH];
35 bool bIsRadio;
36 unsigned int iPosition;
37 } PVR_CHANNEL_GROUP;
38
39 /*!
40 * @brief "C" PVR add-on channel group member.
41 *
42 * Structure used to interface in "C" between Kodi and Addon.
43 *
44 * See @ref kodi::addon::PVRChannelGroupMember for description of values.
45 */
46 typedef struct PVR_CHANNEL_GROUP_MEMBER
47 {
48 char strGroupName[PVR_ADDON_NAME_STRING_LENGTH];
49 unsigned int iChannelUniqueId;
50 unsigned int iChannelNumber;
51 unsigned int iSubChannelNumber;
52 int iOrder;
53 } PVR_CHANNEL_GROUP_MEMBER;
54
55#ifdef __cplusplus
56}
57#endif /* __cplusplus */
58
59#endif /* !C_API_ADDONINSTANCE_PVR_CHANNEL_GROUPS_H */
diff --git a/xbmc/addons/kodi-dev-kit/include/kodi/c-api/addon-instance/pvr/pvr_channels.h b/xbmc/addons/kodi-dev-kit/include/kodi/c-api/addon-instance/pvr/pvr_channels.h
new file mode 100644
index 0000000..00daffa
--- /dev/null
+++ b/xbmc/addons/kodi-dev-kit/include/kodi/c-api/addon-instance/pvr/pvr_channels.h
@@ -0,0 +1,109 @@
1/*
2 * Copyright (C) 2005-2018 Team Kodi
3 * This file is part of Kodi - https://kodi.tv
4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
7 */
8
9#pragma once
10
11#ifndef C_API_ADDONINSTANCE_PVR_CHANNELS_H
12#define C_API_ADDONINSTANCE_PVR_CHANNELS_H
13
14#include "pvr_defines.h"
15
16#include <stdbool.h>
17
18//¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
19// "C" Definitions group 2 - PVR channel
20#ifdef __cplusplus
21extern "C"
22{
23#endif /* __cplusplus */
24
25 //============================================================================
26 /// @ingroup cpp_kodi_addon_pvr_Defs_Channel
27 /// @brief Denotes that no channel uid is available.
28 ///
29 /// Special @ref kodi::addon::PVRTimer::SetClientChannelUid() and
30 /// @ref kodi::addon::PVRRecording::SetChannelUid() value to indicate that no
31 /// channel uid is available.
32 #define PVR_CHANNEL_INVALID_UID -1
33 //----------------------------------------------------------------------------
34
35 /*!
36 * @brief "C" PVR add-on channel.
37 *
38 * Structure used to interface in "C" between Kodi and Addon.
39 *
40 * See @ref kodi::addon::PVRChannel for description of values.
41 */
42 typedef struct PVR_CHANNEL
43 {
44 unsigned int iUniqueId;
45 bool bIsRadio;
46 unsigned int iChannelNumber;
47 unsigned int iSubChannelNumber;
48 char strChannelName[PVR_ADDON_NAME_STRING_LENGTH];
49 char strMimeType[PVR_ADDON_INPUT_FORMAT_STRING_LENGTH];
50 unsigned int iEncryptionSystem;
51 char strIconPath[PVR_ADDON_URL_STRING_LENGTH];
52 bool bIsHidden;
53 bool bHasArchive;
54 int iOrder;
55 } PVR_CHANNEL;
56
57 /*!
58 * @brief "C" PVR add-on signal status information.
59 *
60 * Structure used to interface in "C" between Kodi and Addon.
61 *
62 * See @ref kodi::addon::PVRSignalStatus for description of values.
63 */
64 typedef struct PVR_SIGNAL_STATUS
65 {
66 char strAdapterName[PVR_ADDON_NAME_STRING_LENGTH];
67 char strAdapterStatus[PVR_ADDON_NAME_STRING_LENGTH];
68 char strServiceName[PVR_ADDON_NAME_STRING_LENGTH];
69 char strProviderName[PVR_ADDON_NAME_STRING_LENGTH];
70 char strMuxName[PVR_ADDON_NAME_STRING_LENGTH];
71 int iSNR;
72 int iSignal;
73 long iBER;
74 long iUNC;
75 } PVR_SIGNAL_STATUS;
76
77 //============================================================================
78 /// @ingroup cpp_kodi_addon_pvr_Defs_Channel_PVRDescrambleInfo
79 /// @brief Special @ref cpp_kodi_addon_pvr_Defs_Channel_PVRDescrambleInfo
80 /// value to indicate that a struct member's value is not available
81 ///
82 #define PVR_DESCRAMBLE_INFO_NOT_AVAILABLE -1
83 //----------------------------------------------------------------------------
84
85 /*!
86 * @brief "C" PVR add-on descramble information.
87 *
88 * Structure used to interface in "C" between Kodi and Addon.
89 *
90 * See @ref kodi::addon::PVRDescrambleInfo for description of values.
91 */
92 typedef struct PVR_DESCRAMBLE_INFO
93 {
94 int iPid;
95 int iCaid;
96 int iProvid;
97 int iEcmTime;
98 int iHops;
99 char strCardSystem[PVR_ADDON_DESCRAMBLE_INFO_STRING_LENGTH];
100 char strReader[PVR_ADDON_DESCRAMBLE_INFO_STRING_LENGTH];
101 char strFrom[PVR_ADDON_DESCRAMBLE_INFO_STRING_LENGTH];
102 char strProtocol[PVR_ADDON_DESCRAMBLE_INFO_STRING_LENGTH];
103 } PVR_DESCRAMBLE_INFO;
104
105#ifdef __cplusplus
106}
107#endif /* __cplusplus */
108
109#endif /* !C_API_ADDONINSTANCE_PVR_CHANNELS_H */
diff --git a/xbmc/addons/kodi-dev-kit/include/kodi/c-api/addon-instance/pvr/pvr_defines.h b/xbmc/addons/kodi-dev-kit/include/kodi/c-api/addon-instance/pvr/pvr_defines.h
new file mode 100644
index 0000000..449000f
--- /dev/null
+++ b/xbmc/addons/kodi-dev-kit/include/kodi/c-api/addon-instance/pvr/pvr_defines.h
@@ -0,0 +1,66 @@
1/*
2 * Copyright (C) 2005-2018 Team Kodi
3 * This file is part of Kodi - https://kodi.tv
4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
7 */
8
9#pragma once
10
11#ifndef C_API_ADDONINSTANCE_PVR_DEFINES_H
12#define C_API_ADDONINSTANCE_PVR_DEFINES_H
13
14//¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
15// "C" Standard PVR definitions
16//
17// Values related to all parts and not used direct on addon, are to define here.
18//
19#ifdef __cplusplus
20extern "C"
21{
22#endif /* __cplusplus */
23
24 /*!
25 * @brief API array sizes which are used for data exchange between
26 * Kodi and addon.
27 */
28 ///@{
29 #define PVR_ADDON_NAME_STRING_LENGTH 1024
30 #define PVR_ADDON_URL_STRING_LENGTH 1024
31 #define PVR_ADDON_DESC_STRING_LENGTH 1024
32 #define PVR_ADDON_INPUT_FORMAT_STRING_LENGTH 32
33 #define PVR_ADDON_EDL_LENGTH 32
34 #define PVR_ADDON_TIMERTYPE_ARRAY_SIZE 32
35 #define PVR_ADDON_TIMERTYPE_VALUES_ARRAY_SIZE 512
36 #define PVR_ADDON_TIMERTYPE_VALUES_ARRAY_SIZE_SMALL 128
37 #define PVR_ADDON_TIMERTYPE_STRING_LENGTH 128
38 #define PVR_ADDON_ATTRIBUTE_DESC_LENGTH 128
39 #define PVR_ADDON_ATTRIBUTE_VALUES_ARRAY_SIZE 512
40 #define PVR_ADDON_DESCRAMBLE_INFO_STRING_LENGTH 64
41 #define PVR_ADDON_DATE_STRING_LENGTH 32
42 ///@}
43
44 /*!
45 * @brief "C" Representation of a general attribute integer value.
46 */
47 typedef struct PVR_ATTRIBUTE_INT_VALUE
48 {
49 int iValue;
50 char strDescription[PVR_ADDON_ATTRIBUTE_DESC_LENGTH];
51 } PVR_ATTRIBUTE_INT_VALUE;
52
53 /*!
54 * @brief "C" Representation of a named value.
55 */
56 typedef struct PVR_NAMED_VALUE
57 {
58 char strName[PVR_ADDON_NAME_STRING_LENGTH];
59 char strValue[PVR_ADDON_NAME_STRING_LENGTH];
60 } PVR_NAMED_VALUE;
61
62#ifdef __cplusplus
63}
64#endif /* __cplusplus */
65
66#endif /* !C_API_ADDONINSTANCE_PVR_DEFINES_H */
diff --git a/xbmc/addons/kodi-dev-kit/include/kodi/c-api/addon-instance/pvr/pvr_edl.h b/xbmc/addons/kodi-dev-kit/include/kodi/c-api/addon-instance/pvr/pvr_edl.h
new file mode 100644
index 0000000..e7cdf06
--- /dev/null
+++ b/xbmc/addons/kodi-dev-kit/include/kodi/c-api/addon-instance/pvr/pvr_edl.h
@@ -0,0 +1,67 @@
1/*
2 * Copyright (C) 2005-2018 Team Kodi
3 * This file is part of Kodi - https://kodi.tv
4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
7 */
8
9#pragma once
10
11#ifndef C_API_ADDONINSTANCE_PVR_EDL_H
12#define C_API_ADDONINSTANCE_PVR_EDL_H
13
14#include "pvr_defines.h"
15
16#include <stdint.h>
17
18//¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
19// "C" Definitions group 8 - PVR Edit definition list (EDL)
20#ifdef __cplusplus
21extern "C"
22{
23#endif /* __cplusplus */
24
25 //============================================================================
26 /// @defgroup cpp_kodi_addon_pvr_Defs_EDLEntry_PVR_EDL_TYPE enum PVR_EDL_TYPE
27 /// @ingroup cpp_kodi_addon_pvr_Defs_EDLEntry
28 /// @brief **Edit definition list types**\n
29 /// Possible type values for @ref cpp_kodi_addon_pvr_Defs_EDLEntry_PVREDLEntry.
30 ///
31 ///@{
32 typedef enum PVR_EDL_TYPE
33 {
34 /// @brief __0__ : cut (completely remove content)
35 PVR_EDL_TYPE_CUT = 0,
36
37 /// @brief __1__ : mute audio
38 PVR_EDL_TYPE_MUTE = 1,
39
40 /// @brief __2__ : scene markers (chapter seeking)
41 PVR_EDL_TYPE_SCENE = 2,
42
43 /// @brief __3__ : commercial breaks
44 PVR_EDL_TYPE_COMBREAK = 3
45 } PVR_EDL_TYPE;
46 ///@}
47 //----------------------------------------------------------------------------
48
49 /*!
50 * @brief "C" Edit definition list entry.
51 *
52 * Structure used to interface in "C" between Kodi and Addon.
53 *
54 * See @ref kodi::addon::PVREDLEntry for description of values.
55 */
56 typedef struct PVR_EDL_ENTRY
57 {
58 int64_t start;
59 int64_t end;
60 enum PVR_EDL_TYPE type;
61 } PVR_EDL_ENTRY;
62
63#ifdef __cplusplus
64}
65#endif /* __cplusplus */
66
67#endif /* !C_API_ADDONINSTANCE_PVR_EDL_H */
diff --git a/xbmc/addons/kodi-dev-kit/include/kodi/c-api/addon-instance/pvr/pvr_epg.h b/xbmc/addons/kodi-dev-kit/include/kodi/c-api/addon-instance/pvr/pvr_epg.h
new file mode 100644
index 0000000..d7512dc
--- /dev/null
+++ b/xbmc/addons/kodi-dev-kit/include/kodi/c-api/addon-instance/pvr/pvr_epg.h
@@ -0,0 +1,658 @@
1/*
2 * Copyright (C) 2005-2018 Team Kodi
3 * This file is part of Kodi - https://kodi.tv
4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
7 */
8
9#pragma once
10
11#ifndef C_API_ADDONINSTANCE_PVR_EPG_H
12#define C_API_ADDONINSTANCE_PVR_EPG_H
13
14#include "pvr_defines.h"
15
16#include <time.h>
17
18//¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
19// "C" Definitions group 4 - PVR EPG
20#ifdef __cplusplus
21extern "C"
22{
23#endif /* __cplusplus */
24
25 //============================================================================
26 /// @defgroup cpp_kodi_addon_pvr_Defs_epg_EPG_EVENT enum EPG_EVENT_CONTENTMASK (and sub types)
27 /// @ingroup cpp_kodi_addon_pvr_Defs_epg
28 /// @brief **EPG entry content event types.**\n
29 /// These ID's come from the DVB-SI EIT table "content descriptor"
30 /// Also known under the name "E-book genre assignments".
31 ///
32 /// See [ETSI EN 300 468 V1.14.1 (2014-05)](https://www.etsi.org/deliver/etsi_en/300400_300499/300468/01.14.01_60/en_300468v011401p.pdf)
33 /// about.
34 ///
35 /// Values used by this functions:
36 /// - @ref kodi::addon::PVREPGTag::SetGenreType()
37 /// - @ref kodi::addon::PVREPGTag::SetGenreSubType()
38 /// - @ref kodi::addon::PVRRecording::SetGenreType()
39 /// - @ref kodi::addon::PVRRecording::SetGenreSubType()
40 ///
41 /// Following types are listed here:
42 /// | emum Type | Description
43 /// |-----------|--------------------
44 /// | @ref EPG_EVENT_CONTENTMASK | EPG entry main content to use.
45 /// | @ref EPG_EVENT_CONTENTSUBMASK_MOVIEDRAMA | EPG entry sub content to @ref EPG_EVENT_CONTENTMASK_MOVIEDRAMA event types for sub type of <b>"Movie/Drama"</b>.
46 /// | @ref EPG_EVENT_CONTENTSUBMASK_NEWSCURRENTAFFAIRS | EPG entry sub content to @ref EPG_EVENT_CONTENTMASK_NEWSCURRENTAFFAIRS event types for sub type of <b>"News/Current affairs"</b>.
47 /// | @ref EPG_EVENT_CONTENTSUBMASK_SHOW | EPG entry sub content to @ref EPG_EVENT_CONTENTMASK_SHOW event types for sub type of <b>"Show/Game show"</b>.
48 /// | @ref EPG_EVENT_CONTENTSUBMASK_SPORTS | @brief EPG entry sub content to @ref EPG_EVENT_CONTENTMASK_SPORTS event types for sub type of <b>"Sports"</b>.
49 /// | @ref EPG_EVENT_CONTENTSUBMASK_CHILDRENYOUTH | EPG entry sub content to @ref EPG_EVENT_CONTENTMASK_CHILDRENYOUTH event types for sub type of <b>"Children's/Youth programmes"</b>.
50 /// | @ref EPG_EVENT_CONTENTSUBMASK_MUSICBALLETDANCE | EPG entry sub content to @ref EPG_EVENT_CONTENTMASK_MUSICBALLETDANCE event types for sub type of <b>"Music/Ballet/Dance"</b>.
51 /// | @ref EPG_EVENT_CONTENTSUBMASK_ARTSCULTURE | EPG entry sub content to @ref EPG_EVENT_CONTENTMASK_ARTSCULTURE event types for sub type of <b>"Arts/Culture (without music)"</b>.
52 /// | @ref EPG_EVENT_CONTENTSUBMASK_SOCIALPOLITICALECONOMICS | EPG entry sub content to @ref EPG_EVENT_CONTENTMASK_SOCIALPOLITICALECONOMICS event types for sub type of <b>"Social/Political issues/Economics"</b>.
53 /// | @ref EPG_EVENT_CONTENTSUBMASK_EDUCATIONALSCIENCE | EPG entry sub content to @ref EPG_EVENT_CONTENTMASK_EDUCATIONALSCIENCE event types for sub type of <b>"Education/Science/Factual topics"</b>.
54 /// | @ref EPG_EVENT_CONTENTSUBMASK_LEISUREHOBBIES | EPG entry sub content to @ref EPG_EVENT_CONTENTMASK_LEISUREHOBBIES event types for sub type of <b>"Leisure hobbies"</b>.
55 /// | @ref EPG_EVENT_CONTENTSUBMASK_SPECIAL | EPG entry sub content to @ref EPG_EVENT_CONTENTMASK_SPECIAL event types for sub type of <b>"Special characteristics"</b>.
56 ///@{
57
58 //============================================================================
59 /// @ingroup cpp_kodi_addon_pvr_Defs_epg_EPG_EVENT
60 /// @brief EPG entry main content to use.
61 ///
62 ///@{
63 typedef enum EPG_EVENT_CONTENTMASK
64 {
65 /// @brief __0x00__ : Undefined content mask entry.
66 EPG_EVENT_CONTENTMASK_UNDEFINED = 0x00,
67
68 /// @brief __0x10__ : Movie/Drama.\n
69 /// \n
70 /// See @ref EPG_EVENT_CONTENTSUBMASK_MOVIEDRAMA about related sub types.
71 EPG_EVENT_CONTENTMASK_MOVIEDRAMA = 0x10,
72
73 /// @brief __0x20__ : News/Current affairs.\n
74 /// \n
75 /// See @ref EPG_EVENT_CONTENTSUBMASK_NEWSCURRENTAFFAIRS about related sub types.
76 EPG_EVENT_CONTENTMASK_NEWSCURRENTAFFAIRS = 0x20,
77
78 /// @brief __0x30__ : Show/Game show.\n
79 /// \n
80 /// See @ref EPG_EVENT_CONTENTSUBMASK_SHOW about related sub types.
81 EPG_EVENT_CONTENTMASK_SHOW = 0x30,
82
83 /// @brief __0x40__ : Sports.\n
84 /// \n
85 /// See @ref EPG_EVENT_CONTENTSUBMASK_SPORTS about related sub types.
86 EPG_EVENT_CONTENTMASK_SPORTS = 0x40,
87
88 /// @brief __0x50__ : Children's/Youth programmes.\n
89 /// \n
90 /// See @ref EPG_EVENT_CONTENTSUBMASK_CHILDRENYOUTH about related sub types.
91 EPG_EVENT_CONTENTMASK_CHILDRENYOUTH = 0x50,
92
93 /// @brief __0x60__ : Music/Ballet/Dance.\n
94 /// \n
95 /// See @ref EPG_EVENT_CONTENTSUBMASK_MUSICBALLETDANCE about related sub types.
96 EPG_EVENT_CONTENTMASK_MUSICBALLETDANCE = 0x60,
97
98 /// @brief __0x70__ : Arts/Culture (without music).\n
99 /// \n
100 /// See @ref EPG_EVENT_CONTENTSUBMASK_ARTSCULTURE about related sub types.
101 EPG_EVENT_CONTENTMASK_ARTSCULTURE = 0x70,
102
103 /// @brief __0x80__ : Social/Political issues/Economics.\n
104 /// \n
105 /// See @ref EPG_EVENT_CONTENTSUBMASK_SOCIALPOLITICALECONOMICS about related sub types.
106 EPG_EVENT_CONTENTMASK_SOCIALPOLITICALECONOMICS = 0x80,
107
108 /// @brief __0x90__ : Education/Science/Factual topics.\n
109 /// \n
110 /// See @ref EPG_EVENT_CONTENTSUBMASK_EDUCATIONALSCIENCE about related sub types.
111 EPG_EVENT_CONTENTMASK_EDUCATIONALSCIENCE = 0x90,
112
113 /// @brief __0xA0__ : Leisure hobbies.\n
114 /// \n
115 /// See @ref EPG_EVENT_CONTENTSUBMASK_LEISUREHOBBIES about related sub types.
116 EPG_EVENT_CONTENTMASK_LEISUREHOBBIES = 0xA0,
117
118 /// @brief __0xB0__ : Special characteristics.\n
119 /// \n
120 /// See @ref EPG_EVENT_CONTENTSUBMASK_SPECIAL about related sub types.
121 EPG_EVENT_CONTENTMASK_SPECIAL = 0xB0,
122
123 /// @brief __0xF0__ User defined.
124 EPG_EVENT_CONTENTMASK_USERDEFINED = 0xF0,
125
126 /// @brief Used to override standard genre types with a own name about.\n
127 /// \n
128 /// Set to this value @ref EPG_GENRE_USE_STRING on following places:
129 /// - @ref kodi::addon::PVREPGTag::SetGenreType()
130 /// - @ref kodi::addon::PVREPGTag::SetGenreSubType()
131 /// - @ref kodi::addon::PVRRecording::SetGenreType()
132 /// - @ref kodi::addon::PVRRecording::SetGenreSubType()
133 ///
134 /// @warning Value here is not a [ETSI EN 300 468 V1.14.1 (2014-05)](https://www.etsi.org/deliver/etsi_en/300400_300499/300468/01.14.01_60/en_300468v011401p.pdf)
135 /// conform.
136 ///
137 /// @note This is a own Kodi definition to set that genre is given by own
138 /// string. Used on @ref kodi::addon::PVREPGTag::SetGenreDescription() and
139 /// @ref kodi::addon::PVRRecording::SetGenreDescription()
140 EPG_GENRE_USE_STRING = 0x100
141 } EPG_EVENT_CONTENTMASK;
142 ///@}
143 //----------------------------------------------------------------------------
144
145 //============================================================================
146 /// @ingroup cpp_kodi_addon_pvr_Defs_epg_EPG_EVENT
147 /// @brief EPG entry sub content to @ref EPG_EVENT_CONTENTMASK_MOVIEDRAMA event
148 /// types for sub type of <b>"Movie/Drama"</b>.
149 ///
150 ///@{
151 typedef enum EPG_EVENT_CONTENTSUBMASK_MOVIEDRAMA
152 {
153 /// @brief __0x0__ : Movie/drama (general).
154 EPG_EVENT_CONTENTSUBMASK_MOVIEDRAMA_GENERAL = 0x0,
155
156 /// @brief __0x1__ : Detective/thriller.
157 EPG_EVENT_CONTENTSUBMASK_MOVIEDRAMA_DETECTIVE_THRILLER = 0x1,
158
159 /// @brief __0x2__ : Adventure/western/war.
160 EPG_EVENT_CONTENTSUBMASK_MOVIEDRAMA_ADVENTURE_WESTERN_WAR = 0x2,
161
162 /// @brief __0x3__ : Science fiction/fantasy/horror.
163 EPG_EVENT_CONTENTSUBMASK_MOVIEDRAMA_SCIENCEFICTION_FANTASY_HORROR = 0x3,
164
165 /// @brief __0x4__ : Comedy.
166 EPG_EVENT_CONTENTSUBMASK_MOVIEDRAMA_COMEDY = 0x4,
167
168 /// @brief __0x5__ : Soap/melodrama/folkloric.
169 EPG_EVENT_CONTENTSUBMASK_MOVIEDRAMA_SOAP_MELODRAMA_FOLKLORIC = 0x5,
170
171 /// @brief __0x6__ : Romance.
172 EPG_EVENT_CONTENTSUBMASK_MOVIEDRAMA_ROMANCE = 0x6,
173
174 /// @brief __0x7__ : Serious/classical/religious/historical movie/drama.
175 EPG_EVENT_CONTENTSUBMASK_MOVIEDRAMA_SERIOUS_CLASSICAL_RELIGIOUS_HISTORICAL = 0x7,
176
177 /// @brief __0x8__ : Adult movie/drama.
178 EPG_EVENT_CONTENTSUBMASK_MOVIEDRAMA_ADULT = 0x8,
179
180 /// @brief __0xF__ : User defined.
181 EPG_EVENT_CONTENTSUBMASK_MOVIEDRAMA_USERDEFINED = 0xF
182 } EPG_EVENT_CONTENTSUBMASK_MOVIEDRAMA;
183 ///@}
184 //----------------------------------------------------------------------------
185
186 //============================================================================
187 /// @ingroup cpp_kodi_addon_pvr_Defs_epg_EPG_EVENT
188 /// @brief EPG entry sub content to @ref EPG_EVENT_CONTENTMASK_NEWSCURRENTAFFAIRS event
189 /// types for sub type of <b>"News/Current affairs"</b>.
190 ///
191 typedef enum EPG_EVENT_CONTENTSUBMASK_NEWSCURRENTAFFAIRS
192 {
193 /// @brief __0x0__ : News/current affairs (general).
194 EPG_EVENT_CONTENTSUBMASK_NEWSCURRENTAFFAIRS_GENERAL = 0x0,
195
196 /// @brief __0x1__ : News/weather report.
197 EPG_EVENT_CONTENTSUBMASK_NEWSCURRENTAFFAIRS_WEATHER = 0x1,
198
199 /// @brief __0x2__ : News magazine.
200 EPG_EVENT_CONTENTSUBMASK_NEWSCURRENTAFFAIRS_MAGAZINE = 0x2,
201
202 /// @brief __0x3__ : Documentary.
203 EPG_EVENT_CONTENTSUBMASK_NEWSCURRENTAFFAIRS_DOCUMENTARY = 0x3,
204
205 /// @brief __0x4__ : Discussion/interview/debate
206 EPG_EVENT_CONTENTSUBMASK_NEWSCURRENTAFFAIRS_DISCUSSION_INTERVIEW_DEBATE = 0x4,
207
208 /// @brief __0xF__ : User defined.
209 EPG_EVENT_CONTENTSUBMASK_NEWSCURRENTAFFAIRS_USERDEFINED = 0xF
210 } EPG_EVENT_CONTENTSUBMASK_NEWSCURRENTAFFAIRS;
211 //----------------------------------------------------------------------------
212
213 //============================================================================
214 /// @ingroup cpp_kodi_addon_pvr_Defs_epg_EPG_EVENT
215 /// @brief EPG entry sub content to @ref EPG_EVENT_CONTENTMASK_SHOW event
216 /// types for sub type of <b>"Show/Game show"</b>.
217 ///
218 typedef enum EPG_EVENT_CONTENTSUBMASK_SHOW
219 {
220 /// @brief __0x0__ : Show/game show (general).
221 EPG_EVENT_CONTENTSUBMASK_SHOW_GENERAL = 0x0,
222
223 /// @brief __0x1__ : Game show/quiz/contest.
224 EPG_EVENT_CONTENTSUBMASK_SHOW_GAMESHOW_QUIZ_CONTEST = 0x1,
225
226 /// @brief __0x2__ : Variety show.
227 EPG_EVENT_CONTENTSUBMASK_SHOW_VARIETY_SHOW = 0x2,
228
229 /// @brief __0x3__ : Talk show.
230 EPG_EVENT_CONTENTSUBMASK_SHOW_TALK_SHOW = 0x3,
231
232 /// @brief __0xF__ : User defined.
233 EPG_EVENT_CONTENTSUBMASK_SHOW_USERDEFINED = 0xF
234 } EPG_EVENT_CONTENTSUBMASK_SHOW;
235 //----------------------------------------------------------------------------
236
237 //============================================================================
238 /// @ingroup cpp_kodi_addon_pvr_Defs_epg_EPG_EVENT
239 /// @brief EPG entry sub content to @ref EPG_EVENT_CONTENTMASK_SPORTS event
240 /// types for sub type of <b>"Sports"</b>.
241 ///
242 typedef enum EPG_EVENT_CONTENTSUBMASK_SPORTS
243 {
244 /// @brief __0x0__ : Sports (general).
245 EPG_EVENT_CONTENTSUBMASK_SPORTS_GENERAL = 0x0,
246
247 /// @brief __0x1__ : Special events (Olympic Games, World Cup, etc.).
248 EPG_EVENT_CONTENTSUBMASK_SPORTS_OLYMPICGAMES_WORLDCUP = 0x1,
249
250 /// @brief __0x2__ : Sports magazines.
251 EPG_EVENT_CONTENTSUBMASK_SPORTS_SPORTS_MAGAZINES = 0x2,
252
253 /// @brief __0x3__ : Football/soccer.
254 EPG_EVENT_CONTENTSUBMASK_SPORTS_FOOTBALL_SOCCER = 0x3,
255
256 /// @brief __0x4__ : Tennis/squash.
257 EPG_EVENT_CONTENTSUBMASK_SPORTS_TENNIS_SQUASH = 0x4,
258
259 /// @brief __0x5__ : Team sports (excluding football).
260 EPG_EVENT_CONTENTSUBMASK_SPORTS_TEAMSPORTS = 0x5,
261
262 /// @brief __0x6__ : Athletics.
263 EPG_EVENT_CONTENTSUBMASK_SPORTS_ATHLETICS = 0x6,
264
265 /// @brief __0x7__ : Motor sport.
266 EPG_EVENT_CONTENTSUBMASK_SPORTS_MOTORSPORT = 0x7,
267
268 /// @brief __0x8__ : Water sport.
269 EPG_EVENT_CONTENTSUBMASK_SPORTS_WATERSPORT = 0x8,
270
271 /// @brief __0x9__ : Winter sports.
272 EPG_EVENT_CONTENTSUBMASK_SPORTS_WINTERSPORTS = 0x9,
273
274 /// @brief __0xA__ : Equestrian.
275 EPG_EVENT_CONTENTSUBMASK_SPORTS_EQUESTRIAN = 0xA,
276
277 /// @brief __0xB__ : Martial sports.
278 EPG_EVENT_CONTENTSUBMASK_SPORTS_MARTIALSPORTS = 0xB,
279
280 /// @brief __0xF__ : User defined.
281 EPG_EVENT_CONTENTSUBMASK_SPORTS_USERDEFINED = 0xF
282 } EPG_EVENT_CONTENTSUBMASK_SPORTS;
283 //----------------------------------------------------------------------------
284
285 //============================================================================
286 /// @ingroup cpp_kodi_addon_pvr_Defs_epg_EPG_EVENT
287 /// @brief EPG entry sub content to @ref EPG_EVENT_CONTENTMASK_CHILDRENYOUTH event
288 /// types for sub type of <b>"Children's/Youth programmes"</b>.
289 ///
290 typedef enum EPG_EVENT_CONTENTSUBMASK_CHILDRENYOUTH
291 {
292 /// @brief __0x0__ : Children's/youth programmes (general).
293 EPG_EVENT_CONTENTSUBMASK_CHILDRENYOUTH_GENERAL = 0x0,
294
295 /// @brief __0x1__ : Pre-school children's programmes.
296 EPG_EVENT_CONTENTSUBMASK_CHILDRENYOUTH_PRESCHOOL_CHILDREN = 0x1,
297
298 /// @brief __0x2__ : Entertainment programmes for 6 to 14.
299 EPG_EVENT_CONTENTSUBMASK_CHILDRENYOUTH_ENTERTAIN_6TO14 = 0x2,
300
301 /// @brief __0x3__ : Entertainment programmes for 10 to 16.
302 EPG_EVENT_CONTENTSUBMASK_CHILDRENYOUTH_ENTERTAIN_10TO16 = 0x3,
303
304 /// @brief __0x4__ : Informational/educational/school programmes.
305 EPG_EVENT_CONTENTSUBMASK_CHILDRENYOUTH_INFORMATIONAL_EDUCATIONAL_SCHOOL = 0x4,
306
307 /// @brief __0x5__ : Cartoons/puppets.
308 EPG_EVENT_CONTENTSUBMASK_CHILDRENYOUTH_CARTOONS_PUPPETS = 0x5,
309
310 /// @brief __0xF__ : User defined.
311 EPG_EVENT_CONTENTSUBMASK_CHILDRENYOUTH_USERDEFINED = 0xF
312 } EPG_EVENT_CONTENTSUBMASK_CHILDRENYOUTH;
313 //----------------------------------------------------------------------------
314
315 //============================================================================
316 /// @ingroup cpp_kodi_addon_pvr_Defs_epg_EPG_EVENT
317 /// @brief EPG entry sub content to @ref EPG_EVENT_CONTENTMASK_MUSICBALLETDANCE event
318 /// types for sub type of <b>"Music/Ballet/Dance"</b>.
319 ///
320 typedef enum EPG_EVENT_CONTENTSUBMASK_MUSICBALLETDANCE
321 {
322 /// @brief __0x0__ : Music/ballet/dance (general).
323 EPG_EVENT_CONTENTSUBMASK_MUSICBALLETDANCE_GENERAL = 0x0,
324
325 /// @brief __0x1__ : Rock/pop.
326 EPG_EVENT_CONTENTSUBMASK_MUSICBALLETDANCE_ROCKPOP = 0x1,
327
328 /// @brief __0x2__ : Serious music/classical music.
329 EPG_EVENT_CONTENTSUBMASK_MUSICBALLETDANCE_SERIOUSMUSIC_CLASSICALMUSIC = 0x2,
330
331 /// @brief __0x3__ : Folk/traditional music.
332 EPG_EVENT_CONTENTSUBMASK_MUSICBALLETDANCE_FOLK_TRADITIONAL_MUSIC = 0x3,
333
334 /// @brief __0x4__ : Jazz.
335 EPG_EVENT_CONTENTSUBMASK_MUSICBALLETDANCE_JAZZ = 0x4,
336
337 /// @brief __0x5__ : Musical/opera.
338 EPG_EVENT_CONTENTSUBMASK_MUSICBALLETDANCE_MUSICAL_OPERA = 0x5,
339
340 /// @brief __0x6__ : Ballet.
341 EPG_EVENT_CONTENTSUBMASK_MUSICBALLETDANCE_BALLET = 0x6,
342
343 /// @brief __0xF__ : User defined.
344 EPG_EVENT_CONTENTSUBMASK_MUSICBALLETDANCE_USERDEFINED = 0xF
345 } EPG_EVENT_CONTENTSUBMASK_MUSICBALLETDANCE;
346 //----------------------------------------------------------------------------
347
348 //============================================================================
349 /// @ingroup cpp_kodi_addon_pvr_Defs_epg_EPG_EVENT
350 /// @brief EPG entry sub content to @ref EPG_EVENT_CONTENTMASK_ARTSCULTURE event
351 /// types for sub type of <b>"Arts/Culture (without music)"</b>.
352 ///
353 typedef enum EPG_EVENT_CONTENTSUBMASK_ARTSCULTURE
354 {
355 /// @brief __0x0__ : Arts/culture (without music, general).
356 EPG_EVENT_CONTENTSUBMASK_ARTSCULTURE_GENERAL = 0x0,
357
358 /// @brief __0x1__ : Performing arts.
359 EPG_EVENT_CONTENTSUBMASK_ARTSCULTURE_PERFORMINGARTS = 0x1,
360
361 /// @brief __0x2__ : Fine arts.
362 EPG_EVENT_CONTENTSUBMASK_ARTSCULTURE_FINEARTS = 0x2,
363
364 /// @brief __0x3__ : Religion.
365 EPG_EVENT_CONTENTSUBMASK_ARTSCULTURE_RELIGION = 0x3,
366
367 /// @brief __0x4__ : Popular culture/traditional arts.
368 EPG_EVENT_CONTENTSUBMASK_ARTSCULTURE_POPULARCULTURE_TRADITIONALARTS = 0x4,
369
370 /// @brief __0x5__ : Literature.
371 EPG_EVENT_CONTENTSUBMASK_ARTSCULTURE_LITERATURE = 0x5,
372
373 /// @brief __0x6__ : Film/cinema.
374 EPG_EVENT_CONTENTSUBMASK_ARTSCULTURE_FILM_CINEMA = 0x6,
375
376 /// @brief __0x7__ : Experimental film/video.
377 EPG_EVENT_CONTENTSUBMASK_ARTSCULTURE_EXPERIMENTALFILM_VIDEO = 0x7,
378
379 /// @brief __0x8__ : Broadcasting/press.
380 EPG_EVENT_CONTENTSUBMASK_ARTSCULTURE_BROADCASTING_PRESS = 0x8,
381
382 /// @brief __0x9__ : New media.
383 EPG_EVENT_CONTENTSUBMASK_ARTSCULTURE_NEWMEDIA = 0x9,
384
385 /// @brief __0xA__ : Arts/culture magazines.
386 EPG_EVENT_CONTENTSUBMASK_ARTSCULTURE_ARTS_CULTUREMAGAZINES = 0xA,
387
388 /// @brief __0xB__ : Fashion.
389 EPG_EVENT_CONTENTSUBMASK_ARTSCULTURE_FASHION = 0xB,
390
391 /// @brief __0xF__ : User defined.
392 EPG_EVENT_CONTENTSUBMASK_ARTSCULTURE_USERDEFINED = 0xF
393 } EPG_EVENT_CONTENTSUBMASK_ARTSCULTURE;
394 //----------------------------------------------------------------------------
395
396 //============================================================================
397 /// @ingroup cpp_kodi_addon_pvr_Defs_epg_EPG_EVENT
398 /// @brief EPG entry sub content to @ref EPG_EVENT_CONTENTMASK_SOCIALPOLITICALECONOMICS event
399 /// types for sub type of <b>"Social/Political issues/Economics"</b>.
400 ///
401 typedef enum EPG_EVENT_CONTENTSUBMASK_SOCIALPOLITICALECONOMICS
402 {
403 /// @brief __0x0__ : Social/political issues/economics (general).
404 EPG_EVENT_CONTENTSUBMASK_SOCIALPOLITICALECONOMICS_GENERAL = 0x0,
405
406 /// @brief __0x1__ : Magazines/reports/documentary.
407 EPG_EVENT_CONTENTSUBMASK_SOCIALPOLITICALECONOMICS_MAGAZINES_REPORTS_DOCUMENTARY = 0x1,
408
409 /// @brief __0x2__ : Economics/social advisory.
410 EPG_EVENT_CONTENTSUBMASK_SOCIALPOLITICALECONOMICS_ECONOMICS_SOCIALADVISORY = 0x2,
411
412 /// @brief __0x3__ : Remarkable people.
413 EPG_EVENT_CONTENTSUBMASK_SOCIALPOLITICALECONOMICS_REMARKABLEPEOPLE = 0x3,
414
415 /// @brief __0xF__ : User defined.
416 EPG_EVENT_CONTENTSUBMASK_SOCIALPOLITICALECONOMICS_USERDEFINED = 0xF
417 } EPG_EVENT_CONTENTSUBMASK_SOCIALPOLITICALECONOMICS;
418 //----------------------------------------------------------------------------
419
420 //============================================================================
421 /// @ingroup cpp_kodi_addon_pvr_Defs_epg_EPG_EVENT
422 /// @brief EPG entry sub content to @ref EPG_EVENT_CONTENTMASK_EDUCATIONALSCIENCE event
423 /// types for sub type of <b>"Education/Science/Factual topics"</b>.
424 ///
425 typedef enum EPG_EVENT_CONTENTSUBMASK_EDUCATIONALSCIENCE
426 {
427 /// @brief __0x0__ : Education/science/factual topics (general).
428 EPG_EVENT_CONTENTSUBMASK_EDUCATIONALSCIENCE_GENERAL = 0x0,
429
430 /// @brief __0x1__ : Nature/animals/environment.
431 EPG_EVENT_CONTENTSUBMASK_EDUCATIONALSCIENCE_NATURE_ANIMALS_ENVIRONMENT = 0x1,
432
433 /// @brief __0x2__ : Technology/natural sciences.
434 EPG_EVENT_CONTENTSUBMASK_EDUCATIONALSCIENCE_TECHNOLOGY_NATURALSCIENCES = 0x2,
435
436 /// @brief __0x3__ : Medicine/physiology/psychology.
437 EPG_EVENT_CONTENTSUBMASK_EDUCATIONALSCIENCE_MEDICINE_PHYSIOLOGY_PSYCHOLOGY = 0x3,
438
439 /// @brief __0x4__ : Foreign countries/expeditions.
440 EPG_EVENT_CONTENTSUBMASK_EDUCATIONALSCIENCE_FOREIGNCOUNTRIES_EXPEDITIONS = 0x4,
441
442 /// @brief __0x5__ : Social/spiritual sciences.
443 EPG_EVENT_CONTENTSUBMASK_EDUCATIONALSCIENCE_SOCIAL_SPIRITUALSCIENCES = 0x5,
444
445 /// @brief __0x6__ : Further education.
446 EPG_EVENT_CONTENTSUBMASK_EDUCATIONALSCIENCE_FURTHEREDUCATION = 0x6,
447
448 /// @brief __0x7__ : Languages.
449 EPG_EVENT_CONTENTSUBMASK_EDUCATIONALSCIENCE_LANGUAGES = 0x7,
450
451 /// @brief __0xF__ : User defined.
452 EPG_EVENT_CONTENTSUBMASK_EDUCATIONALSCIENCE_USERDEFINED = 0xF
453 } EPG_EVENT_CONTENTSUBMASK_EDUCATIONALSCIENCE;
454 //----------------------------------------------------------------------------
455
456 //============================================================================
457 /// @ingroup cpp_kodi_addon_pvr_Defs_epg_EPG_EVENT
458 /// @brief EPG entry sub content to @ref EPG_EVENT_CONTENTMASK_LEISUREHOBBIES event
459 /// types for sub type of <b>"Leisure hobbies"</b>.
460 ///
461 typedef enum EPG_EVENT_CONTENTSUBMASK_LEISUREHOBBIES
462 {
463 /// @brief __0x0__ : Leisure hobbies (general) .
464 EPG_EVENT_CONTENTSUBMASK_LEISUREHOBBIES_GENERAL = 0x0,
465
466 /// @brief __0x1__ : Tourism/travel.
467 EPG_EVENT_CONTENTSUBMASK_LEISUREHOBBIES_TOURISM_TRAVEL = 0x1,
468
469 /// @brief __0x2__ : Handicraft.
470 EPG_EVENT_CONTENTSUBMASK_LEISUREHOBBIES_HANDICRAFT = 0x2,
471
472 /// @brief __0x3__ : Motoring.
473 EPG_EVENT_CONTENTSUBMASK_LEISUREHOBBIES_MOTORING = 0x3,
474
475 /// @brief __0x4__ : Fitness and health.
476 EPG_EVENT_CONTENTSUBMASK_LEISUREHOBBIES_FITNESSANDHEALTH = 0x4,
477
478 /// @brief __0x5__ : Cooking.
479 EPG_EVENT_CONTENTSUBMASK_LEISUREHOBBIES_COOKING = 0x5,
480
481 /// @brief __0x6__ : Advertisement/shopping.
482 EPG_EVENT_CONTENTSUBMASK_LEISUREHOBBIES_ADVERTISEMENT_SHOPPING = 0x6,
483
484 /// @brief __0x7__ : Gardening.
485 EPG_EVENT_CONTENTSUBMASK_LEISUREHOBBIES_GARDENING = 0x7,
486
487 /// @brief __0xF__ : User defined.
488 EPG_EVENT_CONTENTSUBMASK_LEISUREHOBBIES_USERDEFINED = 0xF
489 } EPG_EVENT_CONTENTSUBMASK_LEISUREHOBBIES;
490 //----------------------------------------------------------------------------
491
492 //============================================================================
493 /// @ingroup cpp_kodi_addon_pvr_Defs_epg_EPG_EVENT
494 /// @brief EPG entry sub content to @ref EPG_EVENT_CONTENTMASK_SPECIAL event
495 /// types for sub type of <b>"Special characteristics"</b>.
496 ///
497 typedef enum EPG_EVENT_CONTENTSUBMASK_SPECIAL
498 {
499 /// @brief __0x0__ : Special characteristics / Original language (general).
500 EPG_EVENT_CONTENTSUBMASK_SPECIAL_GENERAL = 0x0,
501
502 /// @brief __0x1__ : Black and white.
503 EPG_EVENT_CONTENTSUBMASK_SPECIAL_BLACKANDWHITE = 0x1,
504
505 /// @brief __0x2__ : Unpublished.
506 EPG_EVENT_CONTENTSUBMASK_SPECIAL_UNPUBLISHED = 0x2,
507
508 /// @brief __0x3__ : Live broadcast.
509 EPG_EVENT_CONTENTSUBMASK_SPECIAL_LIVEBROADCAST = 0x3,
510
511 /// @brief __0x4__ : Plano-stereoscopic.
512 EPG_EVENT_CONTENTSUBMASK_SPECIAL_PLANOSTEREOSCOPIC = 0x4,
513
514 /// @brief __0x5__ : Local or regional.
515 EPG_EVENT_CONTENTSUBMASK_SPECIAL_LOCALORREGIONAL = 0x5,
516
517 /// @brief __0xF__ : User defined.
518 EPG_EVENT_CONTENTSUBMASK_SPECIAL_USERDEFINED = 0xF
519 } EPG_EVENT_CONTENTSUBMASK_SPECIAL;
520 //----------------------------------------------------------------------------
521
522 ///@}
523
524 //============================================================================
525 /// @ingroup cpp_kodi_addon_pvr_Defs_epg
526 /// @brief Separator to use in strings containing different tokens, for example
527 /// writers, directors, actors of an event.
528 ///
529 #define EPG_STRING_TOKEN_SEPARATOR ","
530 //----------------------------------------------------------------------------
531
532 //============================================================================
533 /// @defgroup cpp_kodi_addon_pvr_Defs_epg_EPG_TAG_FLAG enum EPG_TAG_FLAG
534 /// @ingroup cpp_kodi_addon_pvr_Defs_epg
535 /// @brief <b>Bit field of independent flags associated with the EPG entry.</b>\n
536 /// Values used by @ref kodi::addon::PVREPGTag::SetFlags().
537 ///
538 /// Here's example about the use of this:
539 /// ~~~~~~~~~~~~~{.cpp}
540 /// kodi::addon::PVREPGTag tag;
541 /// tag.SetFlags(EPG_TAG_FLAG_IS_SERIES | EPG_TAG_FLAG_IS_NEW);
542 /// ~~~~~~~~~~~~~
543 ///
544 ///@{
545 typedef enum EPG_TAG_FLAG
546 {
547 /// @brief __0000 0000__ : Nothing special to say about this entry.
548 EPG_TAG_FLAG_UNDEFINED = 0,
549
550 /// @brief __0000 0001__ : This EPG entry is part of a series.
551 EPG_TAG_FLAG_IS_SERIES = (1 << 0),
552
553 /// @brief __0000 0010__ : This EPG entry will be flagged as new.
554 EPG_TAG_FLAG_IS_NEW = (1 << 1),
555
556 /// @brief __0000 0100__ : This EPG entry will be flagged as a premiere.
557 EPG_TAG_FLAG_IS_PREMIERE = (1 << 2),
558
559 /// @brief __0000 1000__ : This EPG entry will be flagged as a finale.
560 EPG_TAG_FLAG_IS_FINALE = (1 << 3),
561
562 /// @brief __0001 0000__ : This EPG entry will be flagged as live.
563 EPG_TAG_FLAG_IS_LIVE = (1 << 4),
564 } EPG_TAG_FLAG;
565 ///@}
566 //----------------------------------------------------------------------------
567
568 //============================================================================
569 /// @ingroup cpp_kodi_addon_pvr_Defs_epg
570 /// @brief Special PVREPGTag::SetUniqueBroadcastId value
571 ///
572 /// Special @ref kodi::addon::PVREPGTag::SetUniqueBroadcastId() value to
573 /// indicate that a tag has not a valid EPG event uid.
574 ///
575 #define EPG_TAG_INVALID_UID 0
576 //----------------------------------------------------------------------------
577
578 //============================================================================
579 /// @ingroup cpp_kodi_addon_pvr_Defs_epg
580 /// @brief Special @ref kodi::addon::PVREPGTag::SetSeriesNumber(), @ref kodi::addon::PVREPGTag::SetEpisodeNumber()
581 /// and @ref kodi::addon::PVREPGTag::SetEpisodePartNumber() value to indicate
582 /// it is not to be used.
583 ///
584 #define EPG_TAG_INVALID_SERIES_EPISODE -1
585 //----------------------------------------------------------------------------
586
587 //============================================================================
588 /// @ingroup cpp_kodi_addon_pvr_Defs_epg
589 /// @brief Timeframe value for use with @ref kodi::addon::CInstancePVRClient::SetEPGTimeFrame()
590 /// function to indicate "no timeframe".
591 ///
592 #define EPG_TIMEFRAME_UNLIMITED -1
593 //----------------------------------------------------------------------------
594
595 //============================================================================
596 /// @defgroup cpp_kodi_addon_pvr_Defs_epg_EPG_EVENT_STATE enum EPG_EVENT_STATE
597 /// @ingroup cpp_kodi_addon_pvr_Defs_epg
598 /// @brief **EPG event states.**\n
599 /// Used with @ref kodi::addon::CInstancePVRClient::EpgEventStateChange()
600 /// callback.
601 ///
602 ///@{
603 typedef enum EPG_EVENT_STATE
604 {
605 /// @brief __0__ : Event created.
606 EPG_EVENT_CREATED = 0,
607
608 /// @brief __1__ : Event updated.
609 EPG_EVENT_UPDATED = 1,
610
611 /// @brief __2__ : Event deleted.
612 EPG_EVENT_DELETED = 2,
613 } EPG_EVENT_STATE;
614 ///@}
615 //----------------------------------------------------------------------------
616
617 /*!
618 * @brief "C" PVR add-on channel group member.
619 *
620 * Structure used to interface in "C" between Kodi and Addon.
621 *
622 * See @ref kodi::addon::PVREPGTag for description of values.
623 */
624 typedef struct EPG_TAG
625 {
626 unsigned int iUniqueBroadcastId;
627 unsigned int iUniqueChannelId;
628 const char* strTitle;
629 time_t startTime;
630 time_t endTime;
631 const char* strPlotOutline;
632 const char* strPlot;
633 const char* strOriginalTitle;
634 const char* strCast;
635 const char* strDirector;
636 const char* strWriter;
637 int iYear;
638 const char* strIMDBNumber;
639 const char* strIconPath;
640 int iGenreType;
641 int iGenreSubType;
642 const char* strGenreDescription;
643 const char* strFirstAired;
644 int iParentalRating;
645 int iStarRating;
646 int iSeriesNumber;
647 int iEpisodeNumber;
648 int iEpisodePartNumber;
649 const char* strEpisodeName;
650 unsigned int iFlags;
651 const char* strSeriesLink;
652 } EPG_TAG;
653
654#ifdef __cplusplus
655}
656#endif /* __cplusplus */
657
658#endif /* !C_API_ADDONINSTANCE_PVR_EPG_H */
diff --git a/xbmc/addons/kodi-dev-kit/include/kodi/c-api/addon-instance/pvr/pvr_general.h b/xbmc/addons/kodi-dev-kit/include/kodi/c-api/addon-instance/pvr/pvr_general.h
new file mode 100644
index 0000000..e2136f6
--- /dev/null
+++ b/xbmc/addons/kodi-dev-kit/include/kodi/c-api/addon-instance/pvr/pvr_general.h
@@ -0,0 +1,295 @@
1/*
2 * Copyright (C) 2005-2018 Team Kodi
3 * This file is part of Kodi - https://kodi.tv
4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
7 */
8
9#pragma once
10
11#ifndef C_API_ADDONINSTANCE_PVR_GENERAL_H
12#define C_API_ADDONINSTANCE_PVR_GENERAL_H
13
14#include "pvr_defines.h"
15
16#ifdef BUILD_KODI_ADDON
17#include "../../../InputStreamConstants.h"
18#else
19#include "cores/VideoPlayer/Interface/Addon/InputStreamConstants.h"
20#endif
21
22#include <stdbool.h>
23
24//¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
25// "C" Definitions group 1 - General PVR
26#ifdef __cplusplus
27extern "C"
28{
29#endif /* __cplusplus */
30
31 //============================================================================
32 /// @defgroup cpp_kodi_addon_pvr_Defs_General_PVR_ERROR enum PVR_ERROR
33 /// @ingroup cpp_kodi_addon_pvr_Defs_General
34 /// @brief **PVR add-on error codes**\n
35 /// Used as return values on most PVR related functions.
36 ///
37 /// In this way, a PVR instance signals errors in its processing and, under
38 /// certain conditions, allows Kodi to make corrections.
39 ///
40 ///@{
41 typedef enum PVR_ERROR
42 {
43 /// @brief __0__ : No error occurred.
44 PVR_ERROR_NO_ERROR = 0,
45
46 /// @brief __-1__ : An unknown error occurred.
47 PVR_ERROR_UNKNOWN = -1,
48
49 /// @brief __-2__ : The method that Kodi called is not implemented by the add-on.
50 PVR_ERROR_NOT_IMPLEMENTED = -2,
51
52 /// @brief __-3__ : The backend reported an error, or the add-on isn't connected.
53 PVR_ERROR_SERVER_ERROR = -3,
54
55 /// @brief __-4__ : The command was sent to the backend, but the response timed out.
56 PVR_ERROR_SERVER_TIMEOUT = -4,
57
58 /// @brief __-5__ : The command was rejected by the backend.
59 PVR_ERROR_REJECTED = -5,
60
61 /// @brief __-6__ : The requested item can not be added, because it's already present.
62 PVR_ERROR_ALREADY_PRESENT = -6,
63
64 /// @brief __-7__ : The parameters of the method that was called are invalid for this
65 /// operation.
66 PVR_ERROR_INVALID_PARAMETERS = -7,
67
68 /// @brief __-8__ : A recording is running, so the timer can't be deleted without
69 /// doing a forced delete.
70 PVR_ERROR_RECORDING_RUNNING = -8,
71
72 /// @brief __-9__ : The command failed.
73 PVR_ERROR_FAILED = -9,
74 } PVR_ERROR;
75 ///@}
76 //----------------------------------------------------------------------------
77
78 //============================================================================
79 /// @defgroup cpp_kodi_addon_pvr_Defs_General_PVR_CONNECTION_STATE enum PVR_CONNECTION_STATE
80 /// @ingroup cpp_kodi_addon_pvr_Defs_General
81 /// @brief **PVR backend connection states**\n
82 /// Used with @ref kodi::addon::CInstancePVRClient::ConnectionStateChange() callback.
83 ///
84 /// With this, a PVR instance signals that Kodi should perform special
85 /// operations.
86 ///
87 ///@{
88 typedef enum PVR_CONNECTION_STATE
89 {
90 /// @brief __0__ : Unknown state (e.g. not yet tried to connect).
91 PVR_CONNECTION_STATE_UNKNOWN = 0,
92
93 /// @brief __1__ : Backend server is not reachable (e.g. server not existing or
94 /// network down).
95 PVR_CONNECTION_STATE_SERVER_UNREACHABLE = 1,
96
97 /// @brief __2__ : Backend server is reachable, but there is not the expected type of
98 /// server running (e.g. HTSP required, but FTP running at given server:port).
99 PVR_CONNECTION_STATE_SERVER_MISMATCH = 2,
100
101 /// @brief __3__ : Backend server is reachable, but server version does not match
102 /// client requirements.
103 PVR_CONNECTION_STATE_VERSION_MISMATCH = 3,
104
105 /// @brief __4__ : Backend server is reachable, but denies client access (e.g. due
106 /// to wrong credentials).
107 PVR_CONNECTION_STATE_ACCESS_DENIED = 4,
108
109 /// @brief __5__ : Connection to backend server is established.
110 PVR_CONNECTION_STATE_CONNECTED = 5,
111
112 /// @brief __6__ : No connection to backend server (e.g. due to network errors or
113 /// client initiated disconnect).
114 PVR_CONNECTION_STATE_DISCONNECTED = 6,
115
116 /// @brief __7__ : Connecting to backend.
117 PVR_CONNECTION_STATE_CONNECTING = 7,
118 } PVR_CONNECTION_STATE;
119 ///@}
120 //----------------------------------------------------------------------------
121
122 //============================================================================
123 /// @defgroup cpp_kodi_addon_pvr_Defs_General_PVR_STREAM_PROPERTY definition PVR_STREAM_PROPERTY
124 /// @ingroup cpp_kodi_addon_pvr_Defs_General_Inputstream
125 /// @brief **PVR related stream property values**\n
126 /// This is used to pass additional data to Kodi on a given PVR stream.
127 ///
128 /// Then transferred to livestream, recordings or EPG Tag stream using the
129 /// properties.
130 ///
131 /// This defines are used by:
132 /// - @ref kodi::addon::CInstancePVRClient::GetChannelStreamProperties()
133 /// - @ref kodi::addon::CInstancePVRClient::GetEPGTagStreamProperties()
134 /// - @ref kodi::addon::CInstancePVRClient::GetRecordingStreamProperties()
135 ///
136 ///
137 ///---------------------------------------------------------------------------
138 ///
139 /// **Example:**
140 /// ~~~~~~~~~~~~~{.cpp}
141 /// ...
142 ///
143 /// PVR_ERROR CMyPVRInstance::GetChannelStreamProperties(const kodi::addon::PVRChannel& channel,
144 /// std::vector<PVRStreamProperty>& properties)
145 /// {
146 /// ...
147 /// properties.emplace_back(PVR_STREAM_PROPERTY_INPUTSTREAM, "inputstream.adaptive");
148 /// properties.emplace_back("inputstream.adaptive.manifest_type", "mpd");
149 /// properties.emplace_back("inputstream.adaptive.manifest_update_parameter", "full");
150 /// properties.emplace_back(PVR_STREAM_PROPERTY_MIMETYPE, "application/xml+dash");
151 /// return PVR_ERROR_NO_ERROR;
152 /// }
153 ///
154 /// ...
155 /// ~~~~~~~~~~~~~
156 ///
157 ///@{
158
159 /// @brief the URL of the stream that should be played.
160 ///
161 #define PVR_STREAM_PROPERTY_STREAMURL "streamurl"
162
163 /// @brief To define in stream properties the name of the inputstream add-on
164 /// that should be used.
165 ///
166 /// Leave blank to use Kodi's built-in playing capabilities or to allow ffmpeg
167 /// to handle directly set to @ref PVR_STREAM_PROPERTY_VALUE_INPUTSTREAMFFMPEG.
168 ///
169 #define PVR_STREAM_PROPERTY_INPUTSTREAM STREAM_PROPERTY_INPUTSTREAM
170
171 /// @brief Identification string for an input stream.
172 ///
173 /// This value can be used in addition to @ref PVR_STREAM_PROPERTY_INPUTSTREAM.
174 /// It is used to provide the respective inpustream addon with additional
175 /// identification.
176 ///
177 /// The difference between this and other stream properties is that it is also
178 /// passed in the associated @ref kodi::addon::CAddonBase::CreateInstance()
179 /// call.
180 ///
181 /// This makes it possible to select different processing classes within the
182 /// associated add-on.
183 ///
184 ///
185 ///---------------------------------------------------------------------------
186 ///
187 /// **Example:**
188 /// ~~~~~~~~~~~~~{.cpp}
189 /// ...
190 ///
191 /// // On PVR instance of addon
192 /// PVR_ERROR CMyPVRInstance::GetChannelStreamProperties(const kodi::addon::PVRChannel& channel,
193 /// std::vector<PVRStreamProperty>& properties)
194 /// {
195 /// ...
196 /// // For here on example the inpustream is also inside the PVR addon
197 /// properties.emplace_back(PVR_STREAM_PROPERTY_INPUTSTREAM, "pvr.my_one");
198 /// properties.emplace_back(PVR_STREAM_PROPERTY_INPUTSTREAM_INSTANCE_ID, "my_special_id_1");
199 /// return PVR_ERROR_NO_ERROR;
200 /// }
201 ///
202 /// ...
203 ///
204 /// // On CAddonBase part of addon
205 /// ADDON_STATUS CMyAddon::CreateInstanceEx(int instanceType,
206 /// std::string instanceID,
207 /// KODI_HANDLE instance,
208 /// KODI_HANDLE& addonInstance
209 /// const std::string& version)
210 /// {
211 /// if (instanceType == ADDON_INSTANCE_INPUTSTREAM)
212 /// {
213 /// kodi::Log(ADDON_LOG_INFO, "Creating my special inputstream");
214 /// if (instanceID == "my_special_id_1")
215 /// addonInstance = new CMyPVRClientInstance_Type1(instance, version);
216 /// else if (instanceID == "my_special_id_2")
217 /// addonInstance = new CMyPVRClientInstance_Type2(instance, version);
218 /// return ADDON_STATUS_OK;
219 /// }
220 /// else if (...)
221 /// {
222 /// ...
223 /// }
224 /// return ADDON_STATUS_UNKNOWN;
225 /// }
226 ///
227 /// ...
228 /// ~~~~~~~~~~~~~
229 ///
230 #define PVR_STREAM_PROPERTY_INPUTSTREAM_INSTANCE_ID STREAM_PROPERTY_INPUTSTREAM_INSTANCE_ID
231
232 /// @brief the MIME type of the stream that should be played.
233 ///
234 #define PVR_STREAM_PROPERTY_MIMETYPE "mimetype"
235
236 /// @brief <b>"true"</b> to denote that the stream that should be played is a
237 /// realtime stream.
238 ///
239 /// Any other value indicates that this is no realtime stream.
240 ///
241 #define PVR_STREAM_PROPERTY_ISREALTIMESTREAM STREAM_PROPERTY_ISREALTIMESTREAM
242
243 /// @brief <b>"true"</b> to denote that if the stream is from an EPG tag.
244 ///
245 /// It should be played is a live stream. Otherwise if it's a EPG tag it will
246 /// play as normal video.
247 ///
248 #define PVR_STREAM_PROPERTY_EPGPLAYBACKASLIVE "epgplaybackaslive"
249
250 /// @brief Special value for @ref PVR_STREAM_PROPERTY_INPUTSTREAM to use
251 /// ffmpeg to directly play a stream URL.
252 #define PVR_STREAM_PROPERTY_VALUE_INPUTSTREAMFFMPEG STREAM_PROPERTY_VALUE_INPUTSTREAMFFMPEG
253
254 ///@}
255 //-----------------------------------------------------------------------------
256
257 /*!
258 * @brief "C" PVR add-on capabilities.
259 *
260 * Structure used to interface in "C" between Kodi and Addon.
261 *
262 * See @ref kodi::addon::PVRCapabilities for description of values.
263 */
264 typedef struct PVR_ADDON_CAPABILITIES
265 {
266 bool bSupportsEPG;
267 bool bSupportsEPGEdl;
268 bool bSupportsTV;
269 bool bSupportsRadio;
270 bool bSupportsRecordings;
271 bool bSupportsRecordingsUndelete;
272 bool bSupportsTimers;
273 bool bSupportsChannelGroups;
274 bool bSupportsChannelScan;
275 bool bSupportsChannelSettings;
276 bool bHandlesInputStream;
277 bool bHandlesDemuxing;
278 bool bSupportsRecordingPlayCount;
279 bool bSupportsLastPlayedPosition;
280 bool bSupportsRecordingEdl;
281 bool bSupportsRecordingsRename;
282 bool bSupportsRecordingsLifetimeChange;
283 bool bSupportsDescrambleInfo;
284 bool bSupportsAsyncEPGTransfer;
285 bool bSupportsRecordingSize;
286
287 unsigned int iRecordingsLifetimesSize;
288 struct PVR_ATTRIBUTE_INT_VALUE recordingsLifetimeValues[PVR_ADDON_ATTRIBUTE_VALUES_ARRAY_SIZE];
289 } PVR_ADDON_CAPABILITIES;
290
291#ifdef __cplusplus
292}
293#endif /* __cplusplus */
294
295#endif /* !C_API_ADDONINSTANCE_PVR_GENERAL_H */
diff --git a/xbmc/addons/kodi-dev-kit/include/kodi/c-api/addon-instance/pvr/pvr_menu_hook.h b/xbmc/addons/kodi-dev-kit/include/kodi/c-api/addon-instance/pvr/pvr_menu_hook.h
new file mode 100644
index 0000000..2ead263
--- /dev/null
+++ b/xbmc/addons/kodi-dev-kit/include/kodi/c-api/addon-instance/pvr/pvr_menu_hook.h
@@ -0,0 +1,77 @@
1/*
2 * Copyright (C) 2005-2018 Team Kodi
3 * This file is part of Kodi - https://kodi.tv
4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
7 */
8
9#pragma once
10
11#ifndef C_API_ADDONINSTANCE_PVR_MENUHOOK_H
12#define C_API_ADDONINSTANCE_PVR_MENUHOOK_H
13
14#include "pvr_defines.h"
15
16//¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
17// "C" Definitions group 7 - Menu hook
18#ifdef __cplusplus
19extern "C"
20{
21#endif /* __cplusplus */
22
23 //============================================================================
24 /// @defgroup cpp_kodi_addon_pvr_Defs_Menuhook_PVR_MENUHOOK_CAT enum PVR_MENUHOOK_CAT
25 /// @ingroup cpp_kodi_addon_pvr_Defs_Menuhook
26 /// @brief **PVR context menu hook categories**\n
27 /// Possible menu types given to Kodi with @ref kodi::addon::CInstancePVRClient::AddMenuHook().
28 ///
29 ///@{
30 typedef enum PVR_MENUHOOK_CAT
31 {
32 /// @brief __-1__ : Unknown menu hook.
33 PVR_MENUHOOK_UNKNOWN = -1,
34
35 /// @brief __0__ : All categories.
36 PVR_MENUHOOK_ALL = 0,
37
38 /// @brief __1__ : For channels.
39 PVR_MENUHOOK_CHANNEL = 1,
40
41 /// @brief __2__ : For timers.
42 PVR_MENUHOOK_TIMER = 2,
43
44 /// @brief __3__ : For EPG.
45 PVR_MENUHOOK_EPG = 3,
46
47 /// @brief __4__ : For recordings.
48 PVR_MENUHOOK_RECORDING = 4,
49
50 /// @brief __5__ : For deleted recordings.
51 PVR_MENUHOOK_DELETED_RECORDING = 5,
52
53 /// @brief __6__ : For settings.
54 PVR_MENUHOOK_SETTING = 6,
55 } PVR_MENUHOOK_CAT;
56 ///@}
57 //----------------------------------------------------------------------------
58
59 /*!
60 * @brief "C" PVR add-on menu hook.
61 *
62 * Structure used to interface in "C" between Kodi and Addon.
63 *
64 * See @ref kodi::addon::PVRMenuhook for description of values.
65 */
66 typedef struct PVR_MENUHOOK
67 {
68 unsigned int iHookId;
69 unsigned int iLocalizedStringId;
70 enum PVR_MENUHOOK_CAT category;
71 } PVR_MENUHOOK;
72
73#ifdef __cplusplus
74}
75#endif /* __cplusplus */
76
77#endif /* !C_API_ADDONINSTANCE_PVR_MENUHOOK_H */
diff --git a/xbmc/addons/kodi-dev-kit/include/kodi/c-api/addon-instance/pvr/pvr_recordings.h b/xbmc/addons/kodi-dev-kit/include/kodi/c-api/addon-instance/pvr/pvr_recordings.h
new file mode 100644
index 0000000..2e2c081
--- /dev/null
+++ b/xbmc/addons/kodi-dev-kit/include/kodi/c-api/addon-instance/pvr/pvr_recordings.h
@@ -0,0 +1,148 @@
1/*
2 * Copyright (C) 2005-2018 Team Kodi
3 * This file is part of Kodi - https://kodi.tv
4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
7 */
8
9#pragma once
10
11#ifndef C_API_ADDONINSTANCE_PVR_RECORDINGS_H
12#define C_API_ADDONINSTANCE_PVR_RECORDINGS_H
13
14#include "pvr_defines.h"
15
16#include <stdbool.h>
17#include <stdint.h>
18#include <time.h>
19
20//¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
21// "C" Definitions group 5 - PVR recordings
22#ifdef __cplusplus
23extern "C"
24{
25#endif /* __cplusplus */
26
27 //============================================================================
28 /// @defgroup cpp_kodi_addon_pvr_Defs_Recording_PVR_RECORDING_FLAG enum PVR_RECORDING_FLAG
29 /// @ingroup cpp_kodi_addon_pvr_Defs_Recording
30 /// @brief **Bit field of independent flags associated with the EPG entry.**\n
31 /// Values used by @ref kodi::addon::PVRRecording::SetFlags().
32 ///
33 /// Here's example about the use of this:
34 /// ~~~~~~~~~~~~~{.cpp}
35 /// kodi::addon::PVRRecording tag;
36 /// tag.SetFlags(PVR_RECORDING_FLAG_IS_SERIES | PVR_RECORDING_FLAG_IS_PREMIERE);
37 /// ~~~~~~~~~~~~~
38 ///
39 ///@{
40 typedef enum PVR_RECORDING_FLAG
41 {
42 /// @brief __0000 0000__ : Nothing special to say about this recording.
43 PVR_RECORDING_FLAG_UNDEFINED = 0,
44
45 /// @brief __0000 0001__ : This recording is part of a series.
46 PVR_RECORDING_FLAG_IS_SERIES = (1 << 0),
47
48 /// @brief __0000 0010__ : This recording will be flagged as new.
49 PVR_RECORDING_FLAG_IS_NEW = (1 << 1),
50
51 /// @brief __0000 0100__ : This recording will be flagged as a premiere.
52 PVR_RECORDING_FLAG_IS_PREMIERE = (1 << 2),
53
54 /// @brief __0000 1000__ : This recording will be flagged as a finale.
55 PVR_RECORDING_FLAG_IS_FINALE = (1 << 3),
56
57 /// @brief __0001 0000__ : This recording will be flagged as live.
58 PVR_RECORDING_FLAG_IS_LIVE = (1 << 4),
59 } PVR_RECORDING_FLAG;
60 ///@}
61 //----------------------------------------------------------------------------
62
63 //============================================================================
64 /// @ingroup cpp_kodi_addon_pvr_Defs_Recording_PVRRecording
65 /// @brief Special @ref kodi::addon::PVRRecording::SetSeriesNumber() and
66 /// @ref kodi::addon::PVRRecording::SetEpisodeNumber() value to indicate it is
67 /// not to be used.
68 ///
69 /// Used if recording has no valid season and/or episode info.
70 ///
71 #define PVR_RECORDING_INVALID_SERIES_EPISODE EPG_TAG_INVALID_SERIES_EPISODE
72 //----------------------------------------------------------------------------
73
74 //============================================================================
75 /// @ingroup cpp_kodi_addon_pvr_Defs_Recording_PVRRecording
76 /// @brief Value where set in background to inform that related part not used.
77 ///
78 /// Normally this related parts need not to set by this as it is default.
79 #define PVR_RECORDING_VALUE_NOT_AVAILABLE -1
80 //----------------------------------------------------------------------------
81
82 //============================================================================
83 /// @defgroup cpp_kodi_addon_pvr_Defs_Recording_PVR_RECORDING_CHANNEL_TYPE enum PVR_RECORDING_CHANNEL_TYPE
84 /// @ingroup cpp_kodi_addon_pvr_Defs_Recording
85 /// @brief **PVR recording channel types**\n
86 /// Used on @ref kodi::addon::PVRRecording::SetChannelType() value to set related
87 /// type.
88 ///
89 ///@{
90 typedef enum PVR_RECORDING_CHANNEL_TYPE
91 {
92 /// @brief __0__ : Unknown type.
93 PVR_RECORDING_CHANNEL_TYPE_UNKNOWN = 0,
94
95 /// @brief __1__ : TV channel.
96 PVR_RECORDING_CHANNEL_TYPE_TV = 1,
97
98 /// @brief __2__ : Radio channel.
99 PVR_RECORDING_CHANNEL_TYPE_RADIO = 2,
100 } PVR_RECORDING_CHANNEL_TYPE;
101 ///@}
102 //----------------------------------------------------------------------------
103
104 /*!
105 * @brief "C" PVR add-on recording.
106 *
107 * Structure used to interface in "C" between Kodi and Addon.
108 *
109 * See @ref kodi::addon::PVRRecording for description of values.
110 */
111 typedef struct PVR_RECORDING
112 {
113 char strRecordingId[PVR_ADDON_NAME_STRING_LENGTH];
114 char strTitle[PVR_ADDON_NAME_STRING_LENGTH];
115 char strEpisodeName[PVR_ADDON_NAME_STRING_LENGTH];
116 int iSeriesNumber;
117 int iEpisodeNumber;
118 int iYear;
119 char strDirectory[PVR_ADDON_URL_STRING_LENGTH];
120 char strPlotOutline[PVR_ADDON_DESC_STRING_LENGTH];
121 char strPlot[PVR_ADDON_DESC_STRING_LENGTH];
122 char strGenreDescription[PVR_ADDON_DESC_STRING_LENGTH];
123 char strChannelName[PVR_ADDON_NAME_STRING_LENGTH];
124 char strIconPath[PVR_ADDON_URL_STRING_LENGTH];
125 char strThumbnailPath[PVR_ADDON_URL_STRING_LENGTH];
126 char strFanartPath[PVR_ADDON_URL_STRING_LENGTH];
127 time_t recordingTime;
128 int iDuration;
129 int iPriority;
130 int iLifetime;
131 int iGenreType;
132 int iGenreSubType;
133 int iPlayCount;
134 int iLastPlayedPosition;
135 bool bIsDeleted;
136 unsigned int iEpgEventId;
137 int iChannelUid;
138 enum PVR_RECORDING_CHANNEL_TYPE channelType;
139 char strFirstAired[PVR_ADDON_DATE_STRING_LENGTH];
140 unsigned int iFlags;
141 int64_t sizeInBytes;
142 } PVR_RECORDING;
143
144#ifdef __cplusplus
145}
146#endif /* __cplusplus */
147
148#endif /* !C_API_ADDONINSTANCE_PVR_RECORDINGS_H */
diff --git a/xbmc/addons/kodi-dev-kit/include/kodi/c-api/addon-instance/pvr/pvr_stream.h b/xbmc/addons/kodi-dev-kit/include/kodi/c-api/addon-instance/pvr/pvr_stream.h
new file mode 100644
index 0000000..1206c67
--- /dev/null
+++ b/xbmc/addons/kodi-dev-kit/include/kodi/c-api/addon-instance/pvr/pvr_stream.h
@@ -0,0 +1,160 @@
1/*
2 * Copyright (C) 2005-2018 Team Kodi
3 * This file is part of Kodi - https://kodi.tv
4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
7 */
8
9#pragma once
10
11#ifndef C_API_ADDONINSTANCE_PVR_STREAM_H
12#define C_API_ADDONINSTANCE_PVR_STREAM_H
13
14#include "pvr_defines.h"
15
16#ifdef BUILD_KODI_ADDON
17#include "../../../DemuxPacket.h"
18#else
19#include "cores/VideoPlayer/Interface/Addon/DemuxPacket.h"
20#endif
21
22#include <stdint.h>
23#include <time.h>
24
25//¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
26// "C" Definitions group 9 - PVR stream definitions (NOTE: Becomes replaced
27// in future by inputstream addon instance way)
28#ifdef __cplusplus
29extern "C"
30{
31#endif /* __cplusplus */
32
33 //============================================================================
34 /// @ingroup cpp_kodi_addon_pvr_Defs_Stream
35 /// @brief Maximum of allowed streams
36 ///
37 #define PVR_STREAM_MAX_STREAMS 20
38 //----------------------------------------------------------------------------
39
40 //============================================================================
41 /// @ingroup cpp_kodi_addon_pvr_Defs_Stream
42 /// @brief Invalid codec identifier
43 ///
44 #define PVR_INVALID_CODEC_ID 0
45 //----------------------------------------------------------------------------
46
47 //============================================================================
48 /// @ingroup cpp_kodi_addon_pvr_Defs_Stream
49 /// @brief Invalid codec
50 ///
51 #define PVR_INVALID_CODEC \
52 { \
53 PVR_CODEC_TYPE_UNKNOWN, PVR_INVALID_CODEC_ID \
54 }
55 //----------------------------------------------------------------------------
56
57 //============================================================================
58 /// @defgroup cpp_kodi_addon_pvr_Defs_Stream_PVR_CODEC_TYPE enum PVR_CODEC_TYPE
59 /// @ingroup cpp_kodi_addon_pvr_Defs_Stream
60 /// @brief **Inputstream types**\n
61 /// To identify type on stream.
62 ///
63 /// Used on @ref kodi::addon::PVRStreamProperties::SetCodecType and @ref kodi::addon::PVRStreamProperties::SetCodecType.
64 ///
65 ///@{
66 typedef enum PVR_CODEC_TYPE
67 {
68 /// @brief To set nothing defined.
69 PVR_CODEC_TYPE_UNKNOWN = -1,
70
71 /// @brief To identify @ref cpp_kodi_addon_pvr_Defs_Stream_PVRStreamProperties as Video.
72 PVR_CODEC_TYPE_VIDEO,
73
74 /// @brief To identify @ref cpp_kodi_addon_pvr_Defs_Stream_PVRStreamProperties as Audio.
75 PVR_CODEC_TYPE_AUDIO,
76
77 /// @brief To identify @ref cpp_kodi_addon_pvr_Defs_Stream_PVRStreamProperties as Data.
78 ///
79 /// With codec id related source identified.
80 PVR_CODEC_TYPE_DATA,
81
82 /// @brief To identify @ref cpp_kodi_addon_pvr_Defs_Stream_PVRStreamProperties as Subtitle.
83 PVR_CODEC_TYPE_SUBTITLE,
84
85 /// @brief To identify @ref cpp_kodi_addon_pvr_Defs_Stream_PVRStreamProperties as Radio RDS.
86 PVR_CODEC_TYPE_RDS,
87
88 PVR_CODEC_TYPE_NB
89 } PVR_CODEC_TYPE;
90 ///@}
91 //----------------------------------------------------------------------------
92
93 //============================================================================
94 /// @defgroup cpp_kodi_addon_pvr_Defs_Stream_PVR_CODEC struct PVR_CODEC
95 /// @ingroup cpp_kodi_addon_pvr_Defs_Stream
96 /// @brief **Codec identification structure**\n
97 /// Identifier about stream between Kodi and addon.
98 ///
99 ///@{
100 typedef struct PVR_CODEC
101 {
102 /// @brief Used codec type for stream.
103 enum PVR_CODEC_TYPE codec_type;
104
105 /// @brief Related codec identifier, normally match the ffmpeg id's.
106 unsigned int codec_id;
107 } PVR_CODEC;
108 ///@}
109 //----------------------------------------------------------------------------
110
111 /*!
112 * @brief "C" Stream properties
113 *
114 * Structure used to interface in "C" between Kodi and Addon.
115 *
116 * See @ref cpp_kodi_addon_pvr_Defs_Stream_PVRStreamProperties for description of values.
117 */
118 typedef struct PVR_STREAM_PROPERTIES
119 {
120 unsigned int iStreamCount;
121 struct PVR_STREAM
122 {
123 unsigned int iPID;
124 enum PVR_CODEC_TYPE iCodecType;
125 unsigned int iCodecId;
126 char strLanguage[4];
127 int iSubtitleInfo;
128 int iFPSScale;
129 int iFPSRate;
130 int iHeight;
131 int iWidth;
132 float fAspect;
133 int iChannels;
134 int iSampleRate;
135 int iBlockAlign;
136 int iBitRate;
137 int iBitsPerSample;
138 } stream[PVR_STREAM_MAX_STREAMS];
139 } PVR_STREAM_PROPERTIES;
140
141 /*!
142 * @brief "C" Times of playing stream (Live TV and recordings)
143 *
144 * Structure used to interface in "C" between Kodi and Addon.
145 *
146 * See @ref cpp_kodi_addon_pvr_Defs_Stream_PVRStreamTimes for description of values.
147 */
148 typedef struct PVR_STREAM_TIMES
149 {
150 time_t startTime;
151 int64_t ptsStart;
152 int64_t ptsBegin;
153 int64_t ptsEnd;
154 } PVR_STREAM_TIMES;
155
156#ifdef __cplusplus
157}
158#endif /* __cplusplus */
159
160#endif /* !C_API_ADDONINSTANCE_PVR_STREAM_H */
diff --git a/xbmc/addons/kodi-dev-kit/include/kodi/c-api/addon-instance/pvr/pvr_timers.h b/xbmc/addons/kodi-dev-kit/include/kodi/c-api/addon-instance/pvr/pvr_timers.h
new file mode 100644
index 0000000..209726d
--- /dev/null
+++ b/xbmc/addons/kodi-dev-kit/include/kodi/c-api/addon-instance/pvr/pvr_timers.h
@@ -0,0 +1,412 @@
1/*
2 * Copyright (C) 2005-2018 Team Kodi
3 * This file is part of Kodi - https://kodi.tv
4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
7 */
8
9#pragma once
10
11#ifndef C_API_ADDONINSTANCE_PVR_TIMERS_H
12#define C_API_ADDONINSTANCE_PVR_TIMERS_H
13
14#include "pvr_defines.h"
15
16#include <stdbool.h>
17#include <stdint.h>
18#include <time.h>
19
20//¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
21// "C" Definitions group 6 - PVR timers
22#ifdef __cplusplus
23extern "C"
24{
25#endif /* __cplusplus */
26
27 //============================================================================
28 /// @defgroup cpp_kodi_addon_pvr_Defs_Timer_PVR_TIMER_ definition PVR_TIMER (various)
29 /// @ingroup cpp_kodi_addon_pvr_Defs_Timer
30 /// @brief **PVR timer various different definitions**\n
31 /// This mostly used on @ref cpp_kodi_addon_pvr_Defs_Timer_PVRTimer "kodi::addon::PVRTimer"
32 /// to define default or not available.
33 ///
34 ///@{
35
36 //============================================================================
37 /// @brief Numeric PVR timer type definitions (@ref kodi::addon::PVRTimer::SetTimerType()
38 /// values).
39 ///
40 /// "Null" value for a numeric timer type.
41 #define PVR_TIMER_TYPE_NONE 0
42 //----------------------------------------------------------------------------
43
44 //============================================================================
45 /// @brief Special @ref kodi::addon::PVRTimer::SetClientIndex() value to indicate
46 /// that a timer has not (yet) a valid client index.
47 ///
48 /// Timer has not (yet) a valid client index.
49 #define PVR_TIMER_NO_CLIENT_INDEX 0
50 //----------------------------------------------------------------------------
51
52 //============================================================================
53 /// @brief Special @ref kodi::addon::PVRTimer::SetParentClientIndex() value to
54 /// indicate that a timer has no parent.
55 ///
56 /// Timer has no parent; it was not scheduled by a repeating timer.
57 #define PVR_TIMER_NO_PARENT PVR_TIMER_NO_CLIENT_INDEX
58 //----------------------------------------------------------------------------
59
60 //============================================================================
61 /// @brief Special @ref kodi::addon::PVRTimer::SetEPGUid() value to indicate
62 /// that a timer has no EPG event uid.
63 ///
64 /// Timer has no EPG event unique identifier.
65 #define PVR_TIMER_NO_EPG_UID EPG_TAG_INVALID_UID
66 //----------------------------------------------------------------------------
67
68 //============================================================================
69 /// @brief Special @ref kodi::addon::PVRTimer::SetClientChannelUid() value to
70 /// indicate "any channel". Useful for some repeating timer types.
71 ///
72 /// denotes "any channel", not a specific one.
73 ///
74 #define PVR_TIMER_ANY_CHANNEL -1
75 //----------------------------------------------------------------------------
76
77 //============================================================================
78 /// @brief Value where set in background to inform that related part not used.
79 ///
80 /// Normally this related parts need not to set by this as it is default.
81 #define PVR_TIMER_VALUE_NOT_AVAILABLE -1
82 //----------------------------------------------------------------------------
83
84 ///@}
85 //----------------------------------------------------------------------------
86
87
88 //============================================================================
89 /// @defgroup cpp_kodi_addon_pvr_Defs_Timer_PVR_TIMER_TYPES enum PVR_TIMER_TYPES
90 /// @ingroup cpp_kodi_addon_pvr_Defs_Timer
91 /// @brief **PVR timer type attributes (@ref kodi::addon::PVRTimerType::SetAttributes() values).**\n
92 /// To defines the attributes for a type. These values are bit fields that can be
93 /// used together.
94 ///
95 ///--------------------------------------------------------------------------
96 ///
97 /// **Example:**
98 /// ~~~~~~~~~~~~~{.cpp}
99 /// kodi::addon::PVRTimerType tag;
100 /// tag.SetAttributes(PVR_TIMER_TYPE_IS_MANUAL | PVR_TIMER_TYPE_IS_REPEATING);
101 /// ~~~~~~~~~~~~~
102 ///
103 ///@{
104 typedef enum PVR_TIMER_TYPES
105 {
106 /// @brief __0000 0000 0000 0000 0000 0000 0000 0000__ :\n Empty attribute value.
107 PVR_TIMER_TYPE_ATTRIBUTE_NONE = 0,
108
109 /// @brief __0000 0000 0000 0000 0000 0000 0000 0001__ :\n Defines whether this is a type for
110 /// manual (time-based) or epg-based timers.
111 PVR_TIMER_TYPE_IS_MANUAL = (1 << 0),
112
113 /// @brief __0000 0000 0000 0000 0000 0000 0000 0010__ :\n Defines whether this is a type for
114 /// repeating or one-shot timers.
115 PVR_TIMER_TYPE_IS_REPEATING = (1 << 1),
116
117 /// @brief __0000 0000 0000 0000 0000 0000 0000 0100__ :\n Timers of this type must not be edited
118 /// by Kodi.
119 PVR_TIMER_TYPE_IS_READONLY = (1 << 2),
120
121 /// @brief __0000 0000 0000 0000 0000 0000 0000 1000__ :\n Timers of this type must not be created
122 /// by Kodi. All other operations are allowed, though.
123 PVR_TIMER_TYPE_FORBIDS_NEW_INSTANCES = (1 << 3),
124
125 /// @brief __0000 0000 0000 0000 0000 0000 0001 0000__ :\n This type supports enabling/disabling
126 /// of the timer (@ref kodi::addon::PVRTimer::SetState() with
127 /// @ref PVR_TIMER_STATE_SCHEDULED | @ref PVR_TIMER_STATE_DISABLED).
128 PVR_TIMER_TYPE_SUPPORTS_ENABLE_DISABLE = (1 << 4),
129
130 /// @brief __0000 0000 0000 0000 0000 0000 0010 0000__ :\n This type supports channels
131 /// (@ref kodi::addon::PVRTimer::SetClientChannelUid()).
132 PVR_TIMER_TYPE_SUPPORTS_CHANNELS = (1 << 5),
133
134 /// @brief __0000 0000 0000 0000 0000 0000 0100 0000__ :\n This type supports a recording start
135 /// time (@ref kodi::addon::PVRTimer::SetStartTime()).
136 PVR_TIMER_TYPE_SUPPORTS_START_TIME = (1 << 6),
137
138 /// @brief __0000 0000 0000 0000 0000 0000 1000 0000__ :\n This type supports matching epg episode
139 /// title using@ref kodi::addon::PVRTimer::SetEPGSearchString().
140 PVR_TIMER_TYPE_SUPPORTS_TITLE_EPG_MATCH = (1 << 7),
141
142 /// @brief __0000 0000 0000 0000 0000 0001 0000 0000__ :\n This type supports matching "more" epg
143 /// data (not just episode title) using @ref kodi::addon::PVRTimer::SetEPGSearchString().
144 /// Setting @ref PVR_TIMER_TYPE_SUPPORTS_FULLTEXT_EPG_MATCH implies
145 /// @ref PVR_TIMER_TYPE_SUPPORTS_TITLE_EPG_MATCH.
146 PVR_TIMER_TYPE_SUPPORTS_FULLTEXT_EPG_MATCH = (1 << 8),
147
148 /// @brief __0000 0000 0000 0000 0000 0010 0000 0000__ :\n This type supports a first day the
149 /// timer gets active (@ref kodi::addon::PVRTimer::SetFirstDay()).
150 PVR_TIMER_TYPE_SUPPORTS_FIRST_DAY = (1 << 9),
151
152 /// @brief __0000 0000 0000 0000 0000 0100 0000 0000__ :\n This type supports weekdays for
153 /// defining the recording schedule (@ref kodi::addon::PVRTimer::SetWeekdays()).
154 PVR_TIMER_TYPE_SUPPORTS_WEEKDAYS = (1 << 10),
155
156 /// @brief __0000 0000 0000 0000 0000 1000 0000 0000__ :\n This type supports the <b>"record only new episodes"</b> feature
157 /// (@ref kodi::addon::PVRTimer::SetPreventDuplicateEpisodes()).
158 PVR_TIMER_TYPE_SUPPORTS_RECORD_ONLY_NEW_EPISODES = (1 << 11),
159
160 /// @brief __0000 0000 0000 0000 0001 0000 0000 0000__ :\n This type supports pre and post record time (@ref kodi::addon::PVRTimer::SetMarginStart(),
161 /// @ref kodi::addon::PVRTimer::SetMarginEnd()).
162 PVR_TIMER_TYPE_SUPPORTS_START_END_MARGIN = (1 << 12),
163
164 /// @brief __0000 0000 0000 0000 0010 0000 0000 0000__ :\n This type supports recording priority (@ref kodi::addon::PVRTimer::SetPriority()).
165 PVR_TIMER_TYPE_SUPPORTS_PRIORITY = (1 << 13),
166
167 /// @brief __0000 0000 0000 0000 0100 0000 0000 0000__ :\n This type supports recording lifetime (@ref kodi::addon::PVRTimer::SetLifetime()).
168 PVR_TIMER_TYPE_SUPPORTS_LIFETIME = (1 << 14),
169
170 /// @brief __0000 0000 0000 0000 1000 0000 0000 0000__ :\n This type supports placing recordings in user defined folders
171 /// (@ref kodi::addon::PVRTimer::SetDirectory()).
172 PVR_TIMER_TYPE_SUPPORTS_RECORDING_FOLDERS = (1 << 15),
173
174 /// @brief __0000 0000 0000 0001 0000 0000 0000 0000__ :\n This type supports a list of recording groups
175 /// (@ref kodi::addon::PVRTimer::SetRecordingGroup()).
176 PVR_TIMER_TYPE_SUPPORTS_RECORDING_GROUP = (1 << 16),
177
178 /// @brief __0000 0000 0000 0010 0000 0000 0000 0000__ :\n This type supports a recording end time (@ref kodi::addon::PVRTimer::SetEndTime()).
179 PVR_TIMER_TYPE_SUPPORTS_END_TIME = (1 << 17),
180
181 /// @brief __0000 0000 0000 0100 0000 0000 0000 0000__ :\n Enables an 'Any Time' over-ride option for start time
182 /// (using @ref kodi::addon::PVRTimer::SetStartAnyTime()).
183 PVR_TIMER_TYPE_SUPPORTS_START_ANYTIME = (1 << 18),
184
185 /// @brief __0000 0000 0000 1000 0000 0000 0000 0000__ :\n Enables a separate <b>'Any Time'</b> over-ride for end time
186 /// (using @ref kodi::addon::PVRTimer::SetEndAnyTime()).
187 PVR_TIMER_TYPE_SUPPORTS_END_ANYTIME = (1 << 19),
188
189 /// @brief __0000 0000 0001 0000 0000 0000 0000 0000__ :\n This type supports specifying a maximum recordings setting'
190 /// (@ref kodi::addon::PVRTimer::SetMaxRecordings()).
191 PVR_TIMER_TYPE_SUPPORTS_MAX_RECORDINGS = (1 << 20),
192
193 /// @brief __0000 0000 0010 0000 0000 0000 0000 0000__ :\n This type should not appear on any create menus which don't
194 /// provide an associated @ref cpp_kodi_addon_pvr_Defs_epg_PVREPGTag "EPG tag".
195 PVR_TIMER_TYPE_REQUIRES_EPG_TAG_ON_CREATE = (1 << 21),
196
197 /// @brief __0000 0000 0100 0000 0000 0000 0000 0000__ :\n This type should not appear on any create menus which provide an
198 /// associated @ref cpp_kodi_addon_pvr_Defs_epg_PVREPGTag "EPG tag".
199 PVR_TIMER_TYPE_FORBIDS_EPG_TAG_ON_CREATE = (1 << 22),
200
201 /// @brief __0000 0000 1000 0000 0000 0000 0000 0000__ :\n This type should not appear on any create menus unless associated
202 /// with an @ref cpp_kodi_addon_pvr_Defs_epg_PVREPGTag "EPG tag" with
203 /// 'series' attributes.
204 ///
205 /// Following conditions allow this:
206 /// - @ref kodi::addon::PVREPGTag::SetFlags() have flag @ref EPG_TAG_FLAG_IS_SERIES
207 /// - @ref kodi::addon::PVREPGTag::SetSeriesNumber() > 0
208 /// - @ref kodi::addon::PVREPGTag::SetEpisodeNumber() > 0
209 /// - @ref kodi::addon::PVREPGTag::SetEpisodePartNumber() > 0
210 ///
211 /// Implies @ref PVR_TIMER_TYPE_REQUIRES_EPG_TAG_ON_CREATE.
212 PVR_TIMER_TYPE_REQUIRES_EPG_SERIES_ON_CREATE = (1 << 23),
213
214 /// @brief __0000 0001 0000 0000 0000 0000 0000 0000__ :\n This type supports 'any channel', for example when defining a timer
215 /// rule that should match any channel instaed of a particular channel.
216 PVR_TIMER_TYPE_SUPPORTS_ANY_CHANNEL = (1 << 24),
217
218 /// @brief __0000 0010 0000 0000 0000 0000 0000 0000__ :\n This type should not appear on any create menus which don't provide
219 /// an associated @ref cpp_kodi_addon_pvr_Defs_epg_PVREPGTag "EPG tag" with
220 /// a series link.
221 PVR_TIMER_TYPE_REQUIRES_EPG_SERIESLINK_ON_CREATE = (1 << 25),
222
223 /// @brief __0000 0100 0000 0000 0000 0000 0000 0000__ :\n This type allows deletion of an otherwise read-only timer.
224 PVR_TIMER_TYPE_SUPPORTS_READONLY_DELETE = (1 << 26),
225
226 /// @brief __0000 1000 0000 0000 0000 0000 0000 0000__ :\n Timers of this type do trigger a reminder if time is up.
227 PVR_TIMER_TYPE_IS_REMINDER = (1 << 27),
228
229 /// @brief __0001 0000 0000 0000 0000 0000 0000 0000__ :\n This type supports pre record time (@ref kodi::addon::PVRTimer::SetMarginStart()).
230 PVR_TIMER_TYPE_SUPPORTS_START_MARGIN = (1 << 28),
231
232 /// @brief __0010 0000 0000 0000 0000 0000 0000 0000__ :\n This type supports post record time (@ref kodi::addon::PVRTimer::SetMarginEnd()).
233 PVR_TIMER_TYPE_SUPPORTS_END_MARGIN = (1 << 29),
234 } PVR_TIMER_TYPES;
235 ///@}
236 //----------------------------------------------------------------------------
237
238 //============================================================================
239 /// @defgroup cpp_kodi_addon_pvr_Defs_Timer_PVR_WEEKDAY enum PVR_WEEKDAY
240 /// @ingroup cpp_kodi_addon_pvr_Defs_Timer
241 /// @brief **PVR timer weekdays** (@ref kodi::addon::PVRTimer::SetWeekdays() **values**)\n
242 /// Used to select the days of a week you want.
243 ///
244 /// It can be also used to select several days e.g.:
245 /// ~~~~~~~~~~~~~{.cpp}
246 /// ...
247 /// unsigned int day = PVR_WEEKDAY_MONDAY | PVR_WEEKDAY_SATURDAY;
248 /// ...
249 /// ~~~~~~~~~~~~~
250 ///
251 ///@{
252 typedef enum PVR_WEEKDAYS
253 {
254 /// @brief __0000 0000__ : Nothing selected.
255 PVR_WEEKDAY_NONE = 0,
256
257 /// @brief __0000 0001__ : To select Monday.
258 PVR_WEEKDAY_MONDAY = (1 << 0),
259
260 /// @brief __0000 0010__ : To select Tuesday.
261 PVR_WEEKDAY_TUESDAY = (1 << 1),
262
263 /// @brief __0000 0100__ : To select Wednesday.
264 PVR_WEEKDAY_WEDNESDAY = (1 << 2),
265
266 /// @brief __0000 1000__ : To select Thursday.
267 PVR_WEEKDAY_THURSDAY = (1 << 3),
268
269 /// @brief __0001 0000__ : To select Friday.
270 PVR_WEEKDAY_FRIDAY = (1 << 4),
271
272 /// @brief __0010 0000__ : To select Saturday.
273 PVR_WEEKDAY_SATURDAY = (1 << 5),
274
275 /// @brief __0100 0000__ : To select Sunday.
276 PVR_WEEKDAY_SUNDAY = (1 << 6),
277
278 /// @brief __0111 1111__ : To select all days of week.
279 PVR_WEEKDAY_ALLDAYS = PVR_WEEKDAY_MONDAY | PVR_WEEKDAY_TUESDAY | PVR_WEEKDAY_WEDNESDAY |
280 PVR_WEEKDAY_THURSDAY | PVR_WEEKDAY_FRIDAY | PVR_WEEKDAY_SATURDAY |
281 PVR_WEEKDAY_SUNDAY
282 } PVR_WEEKDAY;
283 ///@}
284 //----------------------------------------------------------------------------
285
286 //============================================================================
287 /// @defgroup cpp_kodi_addon_pvr_Defs_Timer_PVR_TIMER_STATE enum PVR_TIMER_STATE
288 /// @ingroup cpp_kodi_addon_pvr_Defs_Timer
289 /// @brief **PVR timer states**\n
290 /// To set within @ref cpp_kodi_addon_pvr_Defs_Timer_PVRTimer "kodi::addon::PVRTimer"
291 /// the needed state about.
292 ///
293 ///@{
294 typedef enum PVR_TIMER_STATE
295 {
296 /// @brief __0__ : The timer was just created on the backend and is not yet active.
297 ///
298 /// This state must not be used for timers just created on the client side.
299 PVR_TIMER_STATE_NEW = 0,
300
301 /// @brief __1__ : The timer is scheduled for recording.
302 PVR_TIMER_STATE_SCHEDULED = 1,
303
304 /// @brief __2__ : The timer is currently recordings.
305 PVR_TIMER_STATE_RECORDING = 2,
306
307 /// @brief __3__ : The recording completed successfully.
308 PVR_TIMER_STATE_COMPLETED = 3,
309
310 /// @brief __4__ : Recording started, but was aborted.
311 PVR_TIMER_STATE_ABORTED = 4,
312
313 /// @brief __5__ : The timer was scheduled, but was canceled.
314 PVR_TIMER_STATE_CANCELLED = 5,
315
316 /// @brief __6__ : The scheduled timer conflicts with another one, but will be
317 /// recorded.
318 PVR_TIMER_STATE_CONFLICT_OK = 6,
319
320 /// @brief __7__ : The scheduled timer conflicts with another one and won't be
321 /// recorded.
322 PVR_TIMER_STATE_CONFLICT_NOK = 7,
323
324 /// @brief __8__ : The timer is scheduled, but can't be recorded for some reason.
325 PVR_TIMER_STATE_ERROR = 8,
326
327 /// @brief __9__ : The timer was disabled by the user, can be enabled via setting
328 /// the state to @ref PVR_TIMER_STATE_SCHEDULED.
329 PVR_TIMER_STATE_DISABLED = 9,
330 } PVR_TIMER_STATE;
331 ///@}
332 //----------------------------------------------------------------------------
333
334 /*!
335 * @brief "C" PVR add-on timer event.
336 *
337 * Structure used to interface in "C" between Kodi and Addon.
338 *
339 * See @ref cpp_kodi_addon_pvr_Defs_Timer_PVRTimer "kodi::addon::PVRTimer" for
340 * description of values.
341 */
342 typedef struct PVR_TIMER
343 {
344 unsigned int iClientIndex;
345 unsigned int iParentClientIndex;
346 int iClientChannelUid;
347 time_t startTime;
348 time_t endTime;
349 bool bStartAnyTime;
350 bool bEndAnyTime;
351 enum PVR_TIMER_STATE state;
352 unsigned int iTimerType;
353 char strTitle[PVR_ADDON_NAME_STRING_LENGTH];
354 char strEpgSearchString[PVR_ADDON_NAME_STRING_LENGTH];
355 bool bFullTextEpgSearch;
356 char strDirectory[PVR_ADDON_URL_STRING_LENGTH];
357 char strSummary[PVR_ADDON_DESC_STRING_LENGTH];
358 int iPriority;
359 int iLifetime;
360 int iMaxRecordings;
361 unsigned int iRecordingGroup;
362 time_t firstDay;
363 unsigned int iWeekdays;
364 unsigned int iPreventDuplicateEpisodes;
365 unsigned int iEpgUid;
366 unsigned int iMarginStart;
367 unsigned int iMarginEnd;
368 int iGenreType;
369 int iGenreSubType;
370 char strSeriesLink[PVR_ADDON_URL_STRING_LENGTH];
371 } PVR_TIMER;
372
373 /*!
374 * @brief "C" PVR add-on timer event type.
375 *
376 * Structure used to interface in "C" between Kodi and Addon.
377 *
378 * See @ref cpp_kodi_addon_pvr_Defs_Timer_PVRTimerType "kodi::addon::PVRTimerType" for
379 * description of values.
380 */
381 typedef struct PVR_TIMER_TYPE
382 {
383 unsigned int iId;
384 uint64_t iAttributes;
385 char strDescription[PVR_ADDON_TIMERTYPE_STRING_LENGTH];
386
387 unsigned int iPrioritiesSize;
388 struct PVR_ATTRIBUTE_INT_VALUE priorities[PVR_ADDON_TIMERTYPE_VALUES_ARRAY_SIZE];
389 int iPrioritiesDefault;
390
391 unsigned int iLifetimesSize;
392 struct PVR_ATTRIBUTE_INT_VALUE lifetimes[PVR_ADDON_TIMERTYPE_VALUES_ARRAY_SIZE];
393 int iLifetimesDefault;
394
395 unsigned int iPreventDuplicateEpisodesSize;
396 struct PVR_ATTRIBUTE_INT_VALUE preventDuplicateEpisodes[PVR_ADDON_TIMERTYPE_VALUES_ARRAY_SIZE];
397 unsigned int iPreventDuplicateEpisodesDefault;
398
399 unsigned int iRecordingGroupSize;
400 struct PVR_ATTRIBUTE_INT_VALUE recordingGroup[PVR_ADDON_TIMERTYPE_VALUES_ARRAY_SIZE];
401 unsigned int iRecordingGroupDefault;
402
403 unsigned int iMaxRecordingsSize;
404 struct PVR_ATTRIBUTE_INT_VALUE maxRecordings[PVR_ADDON_TIMERTYPE_VALUES_ARRAY_SIZE_SMALL];
405 int iMaxRecordingsDefault;
406 } PVR_TIMER_TYPE;
407
408#ifdef __cplusplus
409}
410#endif /* __cplusplus */
411
412#endif /* !C_API_ADDONINSTANCE_PVR_TIMERS_H */