From ffca21f2743a7b367fa212799c6e2fea6190dd5d Mon Sep 17 00:00:00 2001 From: manuel Date: Tue, 3 Mar 2015 16:53:59 +0100 Subject: initial commit for kodi master --- xbmc/addons/AddonCallbacksPVR.h | 166 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 166 insertions(+) create mode 100644 xbmc/addons/AddonCallbacksPVR.h (limited to 'xbmc/addons/AddonCallbacksPVR.h') diff --git a/xbmc/addons/AddonCallbacksPVR.h b/xbmc/addons/AddonCallbacksPVR.h new file mode 100644 index 0000000..3fa48ec --- /dev/null +++ b/xbmc/addons/AddonCallbacksPVR.h @@ -0,0 +1,166 @@ +#pragma once +/* + * Copyright (C) 2012-2013 Team XBMC + * http://xbmc.org + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with XBMC; see the file COPYING. If not, see + * . + * + */ + +#include "AddonCallbacks.h" +#include "include/xbmc_pvr_types.h" + +namespace PVR +{ + class CPVRClient; +} + +namespace ADDON +{ + +/*! + * Callbacks for a PVR add-on to XBMC. + * + * Also translates the addon's C structures to XBMC's C++ structures. + */ +class CAddonCallbacksPVR +{ +public: + CAddonCallbacksPVR(CAddon* addon); + ~CAddonCallbacksPVR(void); + + /*! + * @return The callback table. + */ + CB_PVRLib *GetCallbacks() { return m_callbacks; } + + /*! + * @brief Transfer a channel group from the add-on to XBMC. The group will be created if it doesn't exist. + * @param addonData A pointer to the add-on. + * @param handle The handle parameter that XBMC used when requesting the channel groups list + * @param entry The entry to transfer to XBMC + */ + static void PVRTransferChannelGroup(void* addonData, const ADDON_HANDLE handle, const PVR_CHANNEL_GROUP* entry); + + /*! + * @brief Transfer a channel group member entry from the add-on to XBMC. The channel will be added to the group if the group can be found. + * @param addonData A pointer to the add-on. + * @param handle The handle parameter that XBMC used when requesting the channel group members list + * @param entry The entry to transfer to XBMC + */ + static void PVRTransferChannelGroupMember(void* addonData, const ADDON_HANDLE handle, const PVR_CHANNEL_GROUP_MEMBER* entry); + + /*! + * @brief Transfer an EPG tag from the add-on to XBMC + * @param addonData A pointer to the add-on. + * @param handle The handle parameter that XBMC used when requesting the EPG data + * @param entry The entry to transfer to XBMC + */ + static void PVRTransferEpgEntry(void* addonData, const ADDON_HANDLE handle, const EPG_TAG* entry); + + /*! + * @brief Transfer a channel entry from the add-on to XBMC + * @param addonData A pointer to the add-on. + * @param handle The handle parameter that XBMC used when requesting the channel list + * @param entry The entry to transfer to XBMC + */ + static void PVRTransferChannelEntry(void* addonData, const ADDON_HANDLE handle, const PVR_CHANNEL* entry); + + /*! + * @brief Transfer a timer entry from the add-on to XBMC + * @param addonData A pointer to the add-on. + * @param handle The handle parameter that XBMC used when requesting the timers list + * @param entry The entry to transfer to XBMC + */ + static void PVRTransferTimerEntry(void* addonData, const ADDON_HANDLE handle, const PVR_TIMER* entry); + + /*! + * @brief Transfer a recording entry from the add-on to XBMC + * @param addonData A pointer to the add-on. + * @param handle The handle parameter that XBMC used when requesting the recordings list + * @param entry The entry to transfer to XBMC + */ + static void PVRTransferRecordingEntry(void* addonData, const ADDON_HANDLE handle, const PVR_RECORDING* entry); + + /*! + * @brief Add or replace a menu hook for the context menu for this add-on + * @param addonData A pointer to the add-on. + * @param hook The hook to add. + */ + static void PVRAddMenuHook(void* addonData, PVR_MENUHOOK* hook); + + /*! + * @brief Display a notification in XBMC that a recording started or stopped on the server + * @param addonData A pointer to the add-on. + * @param strName The name of the recording to display + * @param strFileName The filename of the recording + * @param bOnOff True when recording started, false when it stopped + */ + static void PVRRecording(void* addonData, const char* strName, const char* strFileName, bool bOnOff); + + /*! + * @brief Request XBMC to update it's list of channels + * @param addonData A pointer to the add-on. + */ + static void PVRTriggerChannelUpdate(void* addonData); + + /*! + * @brief Request XBMC to update it's list of timers + * @param addonData A pointer to the add-on. + */ + static void PVRTriggerTimerUpdate(void* addonData); + + /*! + * @brief Request XBMC to update it's list of recordings + * @param addonData A pointer to the add-on. + */ + static void PVRTriggerRecordingUpdate(void* addonData); + + /*! + * @brief Request XBMC to update it's list of channel groups + * @param addonData A pointer to the add-on. + */ + static void PVRTriggerChannelGroupsUpdate(void* addonData); + + /*! + * @brief Schedule an EPG update for the given channel channel + * @param addonData A pointer to the add-on + * @param iChannelUid The unique id of the channel for this add-on + */ + static void PVRTriggerEpgUpdate(void* addonData, unsigned int iChannelUid); + + /*! + * @brief Free a packet that was allocated with AllocateDemuxPacket + * @param addonData A pointer to the add-on. + * @param pPacket The packet to free. + */ + static void PVRFreeDemuxPacket(void* addonData, DemuxPacket* pPacket); + + /*! + * @brief Allocate a demux packet. Free with FreeDemuxPacket + * @param addonData A pointer to the add-on. + * @param iDataSize The size of the data that will go into the packet + * @return The allocated packet. + */ + static DemuxPacket* PVRAllocateDemuxPacket(void* addonData, int iDataSize = 0); + +private: + static PVR::CPVRClient* GetPVRClient(void* addonData); + + CB_PVRLib *m_callbacks; /*!< callback addresses */ + CAddon *m_addon; /*!< the addon */ +}; + +}; /* namespace ADDON */ -- cgit v1.2.3