X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Flib%2FCECClient.h;h=3ef0453ccae8a1b916881cf6e5b22bcbc6ae1c5e;hb=5d7960cb1894c3038fdce35057363e082b2a62d8;hp=26944a7068281229d444b36e77dedbf6c2d1a673;hpb=04283ce44fc45cbfb145075d02ff116e277f7560;p=deb_libcec.git diff --git a/src/lib/CECClient.h b/src/lib/CECClient.h index 26944a7..3ef0453 100644 --- a/src/lib/CECClient.h +++ b/src/lib/CECClient.h @@ -2,7 +2,7 @@ /* * This file is part of the libCEC(R) library. * - * libCEC(R) is Copyright (C) 2011-2012 Pulse-Eight Limited. All rights reserved. + * libCEC(R) is Copyright (C) 2011-2013 Pulse-Eight Limited. All rights reserved. * libCEC(R) is an original work, containing original code. * * libCEC(R) is a trademark of Pulse-Eight Limited. @@ -31,15 +31,15 @@ * http://www.pulse-eight.net/ */ -#include "../../include/cectypes.h" +#include #include "platform/threads/mutex.h" #include "platform/util/buffer.h" -#include "devices/CECBusDevice.h" - namespace CEC { class CCECProcessor; + class CCECBusDevice; + class CCECPlaybackDevice; class CCECClient { @@ -97,7 +97,7 @@ namespace CEC /*! * @return A string that describes this client. */ - virtual CStdString GetConnectionInfo(void); + virtual std::string GetConnectionInfo(void); /*! * @return The current value of the TV vendor override setting. @@ -107,7 +107,7 @@ namespace CEC /*! * @return The current value of the OSD name setting. */ - virtual CStdString GetOSDName(void); + virtual std::string GetOSDName(void); /*! * @return Get the current value of the wake device setting. @@ -127,10 +127,7 @@ namespace CEC // client-specific part of ICECAdapter virtual bool EnableCallbacks(void *cbParam, ICECCallbacks *callbacks); virtual bool PingAdapter(void); - virtual bool GetNextLogMessage(cec_log_message *message); /**< @deprecated will be removed in v2.0 */ - virtual bool GetNextKeypress(cec_keypress *key); /**< @deprecated will be removed in v2.0 */ - virtual bool GetNextCommand(cec_command *command); /**< @deprecated will be removed in v2.0 */ - virtual bool Transmit(const cec_command &data); + virtual bool Transmit(const cec_command &data, bool bIsReply); virtual bool SetLogicalAddress(const cec_logical_address iLogicalAddress); virtual bool SetPhysicalAddress(const uint16_t iPhysicalAddress); virtual bool SetHDMIPort(const cec_logical_address iBaseDevice, const uint8_t iPort, bool bForce = false); @@ -155,6 +152,10 @@ namespace CEC virtual uint8_t SendVolumeUp(bool bSendRelease = true); virtual uint8_t SendVolumeDown(bool bSendRelease = true); virtual uint8_t SendMuteAudio(void); + virtual uint8_t AudioToggleMute(void); + virtual uint8_t AudioMute(void); + virtual uint8_t AudioUnmute(void); + virtual uint8_t AudioStatus(void); virtual bool SendKeypress(const cec_logical_address iDestination, const cec_user_control_code key, bool bWait = true); virtual bool SendKeyRelease(const cec_logical_address iDestination, bool bWait = true); virtual cec_osd_name GetDeviceOSDName(const cec_logical_address iAddress); @@ -176,9 +177,9 @@ namespace CEC // callbacks virtual void AddCommand(const cec_command &command); virtual int MenuStateChanged(const cec_menu_state newState); - virtual void Alert(const libcec_alert type, const libcec_parameter ¶m); - virtual void AddLog(const cec_log_message &message); - virtual void AddKey(void); + virtual void Alert(const libcec_alert type, const libcec_parameter ¶m) { CallbackAlert(type, param); } + virtual void AddLog(const cec_log_message &message) { CallbackAddLog(message); } + virtual void AddKey(bool bSendComboKey = false); virtual void AddKey(const cec_keypress &key); virtual void SetCurrentButton(const cec_user_control_code iButtonCode); virtual void CheckKeypressTimeout(void); @@ -219,7 +220,7 @@ namespace CEC * @brief Change the OSD name of the primary device that this client is controlling. * @param strDeviceName The new value. */ - virtual void SetOSDName(const CStdString &strDeviceName); + virtual void SetOSDName(const std::string &strDeviceName); /*! * @brief Change the value of the devices to wake. @@ -282,12 +283,6 @@ namespace CEC */ virtual bool SetDevicePhysicalAddress(const uint16_t iPhysicalAddress); - /*! - * @brief Called when the configuration changed and needs to be sent back to the client. - * @param config The new configuration. - */ - virtual void ConfigurationChanged(const libcec_configuration &config); - /*! * @brief Try to autodetect the physical address. * @return True when autodetected (and set in m_configuration), false otherwise. @@ -299,17 +294,26 @@ namespace CEC */ virtual void SetSupportedDeviceTypes(void); - CCECProcessor * m_processor; /**< a pointer to the processor */ - libcec_configuration m_configuration; /**< the configuration of this client */ - bool m_bInitialised; /**< true when initialised, false otherwise */ - bool m_bRegistered; /**< true when registered in the processor, false otherwise */ - PLATFORM::CMutex m_mutex; /**< mutex for changes to this instance */ - PLATFORM::CMutex m_logMutex; /**< mutex that is held when sending a log message back to the client */ - cec_user_control_code m_iCurrentButton; /**< the control code of the button that's currently held down (if any) */ - int64_t m_buttontime; /**< the timestamp when the button was pressed (in seconds since epoch), or 0 if none was pressed. */ - int64_t m_iPreventForwardingPowerOffCommand; /**< prevent forwarding standby commands until this time */ - PLATFORM::SyncedBuffer m_logBuffer; /**< @deprecated will be removed in v2.0. buffer for log messages */ - PLATFORM::SyncedBuffer m_keyBuffer; /**< @deprecated will be removed in v2.0. buffer for keypresses */ - PLATFORM::SyncedBuffer m_commandBuffer; /**< @deprecated will be removed in v2.0. buffer for commands */ + virtual void CallbackAddCommand(const cec_command &command); + virtual void CallbackAddKey(const cec_keypress &key); + virtual void CallbackAddLog(const cec_log_message &message); + virtual void CallbackAlert(const libcec_alert type, const libcec_parameter ¶m); + virtual void CallbackConfigurationChanged(const libcec_configuration &config); + virtual int CallbackMenuStateChanged(const cec_menu_state newState); + virtual void CallbackSourceActivated(bool bActivated, const cec_logical_address logicalAddress); + + uint32_t DoubleTapTimeoutMS(void); + + CCECProcessor * m_processor; /**< a pointer to the processor */ + libcec_configuration m_configuration; /**< the configuration of this client */ + bool m_bInitialised; /**< true when initialised, false otherwise */ + bool m_bRegistered; /**< true when registered in the processor, false otherwise */ + PLATFORM::CMutex m_mutex; /**< mutex for changes to this instance */ + PLATFORM::CMutex m_cbMutex; /**< mutex that is held when doing anything with callbacks */ + cec_user_control_code m_iCurrentButton; /**< the control code of the button that's currently held down (if any) */ + int64_t m_buttontime; /**< the timestamp when the button was pressed (in seconds since epoch), or 0 if none was pressed. */ + int64_t m_iPreventForwardingPowerOffCommand; /**< prevent forwarding standby commands until this time */ + int64_t m_iLastKeypressTime; /**< last time a key press was sent to the client */ + cec_keypress m_lastKeypress; /**< the last key press that was sent to the client */ }; }