X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=include%2Fcec.h;h=1b0019bea193a912c165fabaccb0a2d1229c3c3c;hb=dbf90acfa110122cb4e993babb0f75a411355795;hp=e92ebabf690835bd4fc56ebf939512bcae1a07c2;hpb=083311e931bf3aad8a796623d8769380602ec826;p=deb_libcec.git diff --git a/include/cec.h b/include/cec.h index e92ebab..1b0019b 100644 --- a/include/cec.h +++ b/include/cec.h @@ -36,10 +36,21 @@ #include "cectypes.h" -#define LIBCEC_VERSION_CURRENT CEC_SERVER_VERSION_1_9_0 +#define LIBCEC_VERSION_CURRENT CEC_SERVER_VERSION_2_0_0 namespace CEC { + /*! + * To create a new libCEC instance, call CECInitialise() and pass the + * configuration as argument. Then call Open() to open a connection to the + * adapter. Close() closes the connection and CECDestroy() cleans up the + * libCEC instance. + * + * libCEC can send commands to other devices on the CEC bus via the methods + * on this interface, and all commands that libCEC received are sent back + * to the application via callback methods. The callback methods can be + * found in cectypes.h, ICECCallbacks. + */ class ICECAdapter { public: @@ -60,18 +71,6 @@ namespace CEC */ virtual void Close(void) = 0; -// XXX XBMC Eden for Windows has been built against 1.2.0 and Ubuntu against 1.5.2 -// we accidently broke the abi between these versions, and this will ensure the upgrade will still work -#if !defined(_WIN32) && !defined(_WIN64) - /*! - * @brief Set and enable the callback methods. If this method is not called, the GetNext...() methods will have to be used. - * @param cbParam Parameter to pass to callback methods. - * @param callbacks The callbacks to set. - * @return True when enabled, false otherwise. - */ - virtual bool EnableCallbacks(void *cbParam, ICECCallbacks *callbacks) = 0; -#endif - /*! * @brief Try to find all connected CEC adapters. * @param deviceList The vector to store device descriptors in. @@ -94,48 +93,6 @@ namespace CEC virtual bool StartBootloader(void) = 0; //@} - /*! - * @deprecated Use libcec_configuration instead - * @return Get the minimal version of libCEC that this version of libCEC can interface with. - */ - virtual int8_t GetMinLibVersion(void) const = 0; - - /*! - * @deprecated Use libcec_configuration instead - * @return Get the major version of libCEC. - */ - virtual int8_t GetLibVersionMajor(void) const = 0; - - /*! - * @deprecated Use libcec_configuration instead - * @return Get the minor version of libCEC. - */ - virtual int8_t GetLibVersionMinor(void) const = 0; - - /*! - * @deprecated Use callback methods instead - * @brief Get the next log message in the queue, if there is one. - * @param message The next message. - * @return True if a message was passed, false otherwise. - */ - virtual bool GetNextLogMessage(cec_log_message *message) = 0; - - /*! - * @deprecated Use callback methods instead - * @brief Get the next keypress in the queue, if there is one. - * @param key The next keypress. - * @return True if a key was passed, false otherwise. - */ - virtual bool GetNextKeypress(cec_keypress *key) = 0; - - /*! - * @deprecated Use callback methods instead - * @brief Get the next CEC command that was received by the adapter. - * @param command The next command. - * @return True when a command was passed, false otherwise. - */ - virtual bool GetNextCommand(cec_command *command) = 0; - /*! * @brief Transmit a raw CEC command over the CEC line. * @param data The command to send. @@ -157,25 +114,6 @@ namespace CEC */ virtual bool SetPhysicalAddress(uint16_t iPhysicalAddress = CEC_DEFAULT_PHYSICAL_ADDRESS) = 0; -// XXX XBMC Eden for Windows has been built against 1.2.0 and Ubuntu against 1.5.2 -// we accidently broke the abi between these versions, and this will ensure the upgrade will still work -#if !defined(_WIN32) && !defined(_WIN64) - /*! - * @deprecated Use libcec_configuration instead. - * @brief Enable physical address detection (if the connected adapter supports this). - * @return True when physical address detection was enabled, false otherwise. - */ - virtual bool EnablePhysicalAddressDetection(void) = 0; - - /*! - * @brief Changes the active HDMI port. - * @param iBaseDevice The device to which this libCEC is connected. - * @param iPort The new port number. - * @return True when changed, false otherwise. - */ - virtual bool SetHDMIPort(cec_logical_address iBaseDevice, uint8_t iPort) = 0; -#endif - /*! * @brief Power on the given CEC capable devices. If CECDEVICE_BROADCAST is used, then wakeDevice in libcec_configuration will be used. * @param address The logical address to power on. @@ -197,11 +135,6 @@ namespace CEC */ virtual bool SetActiveSource(cec_device_type type = CEC_DEVICE_TYPE_RESERVED) = 0; - /*! - * @deprecated Use SetActiveSource() instead - */ - virtual bool SetActiveView(void) = 0; - /*! * @brief Change the deck control mode, if this adapter is registered as playback or recording device. * @param mode The new control mode. @@ -277,17 +210,6 @@ namespace CEC */ virtual cec_power_status GetDevicePowerStatus(cec_logical_address iLogicalAddress) = 0; -// XXX XBMC Eden for Windows has been built against 1.2.0 and Ubuntu against 1.5.2 -// we accidently broke the abi between these versions, and this will ensure the upgrade will still work -#if !defined(_WIN32) && !defined(_WIN64) - /*! - * @brief Get the physical address of the device with the given logical address. - * @param iLogicalAddress The device to get the vendor id for. - * @return The physical address or 0 if it wasn't found. - */ - virtual uint16_t GetDevicePhysicalAddress(cec_logical_address iLogicalAddress) = 0; -#endif - /*! * @brief Sends a POLL message to a device, to check if it's present and responding. * @param iLogicalAddress The device to send the message to. @@ -391,19 +313,6 @@ namespace CEC */ virtual cec_logical_addresses GetLogicalAddresses(void) = 0; - virtual const char *ToString(const cec_menu_state state) = 0; - virtual const char *ToString(const cec_version version) = 0; - virtual const char *ToString(const cec_power_status status) = 0; - virtual const char *ToString(const cec_logical_address address) = 0; - virtual const char *ToString(const cec_deck_control_mode mode) = 0; - virtual const char *ToString(const cec_deck_info status) = 0; - virtual const char *ToString(const cec_opcode opcode) = 0; - virtual const char *ToString(const cec_system_audio_status mode) = 0; - virtual const char *ToString(const cec_audio_status status) = 0; - virtual const char *ToString(const cec_vendor_id vendor) = 0; - virtual const char *ToString(const cec_client_version version) = 0; - virtual const char *ToString(const cec_server_version version) = 0; - /*! * @brief Get libCEC's current configuration. * @param configuration The configuration. @@ -449,9 +358,6 @@ namespace CEC */ virtual bool GetDeviceInformation(const char *strPort, libcec_configuration *config, uint32_t iTimeoutMs = 10000) = 0; -// XXX XBMC Eden for Windows has been built against 1.2.0 and Ubuntu against 1.5.2 -// we accidently broke the abi between these versions, and this will ensure the upgrade will still work -#if defined(_WIN32) || defined(_WIN64) /*! * @brief Set and enable the callback methods. If this method is not called, the GetNext...() methods will have to be used. * @param cbParam Parameter to pass to callback methods. @@ -460,13 +366,6 @@ namespace CEC */ virtual bool EnableCallbacks(void *cbParam, ICECCallbacks *callbacks) = 0; - /*! - * @deprecated Use libcec_configuration instead. - * @brief Enable physical address detection (if the connected adapter supports this). - * @return True when physical address detection was enabled, false otherwise. - */ - virtual bool EnablePhysicalAddressDetection(void) = 0; - /*! * @brief Changes the active HDMI port. * @param iBaseDevice The device to which this libCEC is connected. @@ -481,15 +380,12 @@ namespace CEC * @return The physical address or 0 if it wasn't found. */ virtual uint16_t GetDevicePhysicalAddress(cec_logical_address iLogicalAddress) = 0; -#endif /*! * @return A string with information about how libCEC was compiled. */ virtual const char *GetLibInfo(void) = 0; - virtual const char *ToString(const cec_user_control_code key) = 0; - /*! * @brief Calling this method will initialise the host on which libCEC is running. * Calling this method will initialise the host on which libCEC is running. On the RPi, it calls @@ -501,23 +397,33 @@ namespace CEC */ virtual void InitVideoStandalone(void) = 0; + /*! + * @return The (virtual) USB vendor id + */ + virtual uint16_t GetAdapterVendorId(void) const = 0; + + /*! + * @return The (virtual) USB product id + */ + virtual uint16_t GetAdapterProductId(void) const = 0; + + virtual const char *ToString(const cec_menu_state state) = 0; + virtual const char *ToString(const cec_version version) = 0; + virtual const char *ToString(const cec_power_status status) = 0; + virtual const char *ToString(const cec_logical_address address) = 0; + virtual const char *ToString(const cec_deck_control_mode mode) = 0; + virtual const char *ToString(const cec_deck_info status) = 0; + virtual const char *ToString(const cec_opcode opcode) = 0; + virtual const char *ToString(const cec_system_audio_status mode) = 0; + virtual const char *ToString(const cec_audio_status status) = 0; + virtual const char *ToString(const cec_vendor_id vendor) = 0; + virtual const char *ToString(const cec_client_version version) = 0; + virtual const char *ToString(const cec_server_version version) = 0; + virtual const char *ToString(const cec_user_control_code key) = 0; virtual const char *ToString(const cec_adapter_type type) = 0; }; }; -/*! - * @brief Load the CEC adapter library. - * @param strDeviceName How to present this device to other devices. - * @param deviceTypes The device types to use on the CEC bus. - * @return An instance of ICECAdapter or NULL on error. - */ -extern "C" DECLSPEC void * CECInit(const char *strDeviceName, CEC::cec_device_type_list deviceTypes); - -/*! - * @deprecated - */ -extern "C" DECLSPEC void * CECCreate(const char *strDeviceName, CEC::cec_logical_address iLogicalAddress = CEC::CECDEVICE_PLAYBACKDEVICE1, uint16_t iPhysicalAddress = CEC_DEFAULT_PHYSICAL_ADDRESS); - /*! * @brief Unload the CEC adapter library. */