<ClInclude Include="..\src\lib\devices\CECTV.h" />
<ClInclude Include="..\src\lib\implementations\ANCommandHandler.h" />
<ClInclude Include="..\src\lib\implementations\CECCommandHandler.h" />
+ <ClInclude Include="..\src\lib\implementations\PHCommandHandler.h" />
<ClInclude Include="..\src\lib\implementations\RLCommandHandler.h" />
<ClInclude Include="..\src\lib\implementations\SLCommandHandler.h" />
<ClInclude Include="..\src\lib\implementations\VLCommandHandler.h" />
<ClCompile Include="..\src\lib\devices\CECTV.cpp" />
<ClCompile Include="..\src\lib\implementations\ANCommandHandler.cpp" />
<ClCompile Include="..\src\lib\implementations\CECCommandHandler.cpp" />
+ <ClCompile Include="..\src\lib\implementations\PHCommandHandler.cpp" />
<ClCompile Include="..\src\lib\implementations\RLCommandHandler.cpp" />
<ClCompile Include="..\src\lib\implementations\SLCommandHandler.cpp" />
<ClCompile Include="..\src\lib\implementations\VLCommandHandler.cpp" />
<ClInclude Include="..\src\lib\implementations\RLCommandHandler.h">
<Filter>implementations</Filter>
</ClInclude>
+ <ClInclude Include="..\src\lib\implementations\PHCommandHandler.h">
+ <Filter>implementations</Filter>
+ </ClInclude>
<ClInclude Include="..\src\lib\CECClient.h" />
<ClInclude Include="..\src\lib\CECInputBuffer.h" />
<ClInclude Include="..\src\lib\devices\CECDeviceMap.h">
<ClCompile Include="..\src\lib\implementations\RLCommandHandler.cpp">
<Filter>implementations</Filter>
</ClCompile>
+ <ClCompile Include="..\src\lib\implementations\PHCommandHandler.cpp">
+ <Filter>implementations</Filter>
+ </ClCompile>
<ClCompile Include="..\src\lib\CECClient.cpp" />
<ClCompile Include="..\src\lib\devices\CECDeviceMap.cpp">
<Filter>devices</Filter>
implementations/CECCommandHandler.cpp \
implementations/SLCommandHandler.cpp \
implementations/VLCommandHandler.cpp \
- implementations/RLCommandHandler.cpp
+ implementations/RLCommandHandler.cpp \
+ implementations/PHCommandHandler.cpp
## server sockets, currently unused
##libcec_la_SOURCES += platform/posix/serversocket.cpp
#include "lib/implementations/CECCommandHandler.h"
#include "lib/implementations/SLCommandHandler.h"
#include "lib/implementations/VLCommandHandler.h"
+#include "lib/implementations/PHCommandHandler.h"
#include "lib/LibCEC.h"
#include "lib/CECTypeUtils.h"
#include "lib/platform/util/timeutils.h"
case CEC_VENDOR_PANASONIC:
m_handler = new CVLCommandHandler(this, iTransmitTimeout, iTransmitWait, iTransmitRetries, iActiveSourcePending);
break;
+ case CEC_VENDOR_PHILIPS:
+ m_handler = new CPHCommandHandler(this, iTransmitTimeout, iTransmitWait, iTransmitRetries, iActiveSourcePending);
+ break;
default:
m_handler = new CCECCommandHandler(this, iTransmitTimeout, iTransmitWait, iTransmitRetries, iActiveSourcePending);
break;
{
// we're not marked as active source, but the tv sends keypresses to us, so assume it forgot to activate us
if (!device->IsActiveSource() && command.initiator == CECDEVICE_TV)
- device->ActivateSource();
+ device->MarkAsActiveSource();
}
return COMMAND_HANDLED;
virtual bool HandleCommand(const cec_command &command);
virtual cec_vendor_id GetVendorId(void) { return m_vendorId; };
virtual void SetVendorId(cec_vendor_id vendorId) { m_vendorId = vendorId; }
- static bool HasSpecificHandler(cec_vendor_id vendorId) { return vendorId == CEC_VENDOR_LG || vendorId == CEC_VENDOR_SAMSUNG || vendorId == CEC_VENDOR_PANASONIC;}
+ static bool HasSpecificHandler(cec_vendor_id vendorId) { return vendorId == CEC_VENDOR_LG || vendorId == CEC_VENDOR_SAMSUNG || vendorId == CEC_VENDOR_PANASONIC || vendorId == CEC_VENDOR_PHILIPS;}
virtual bool InitHandler(void) { return true; }
virtual bool ActivateSource(bool bTransmitDelayedCommandsOnly = false);
--- /dev/null
+/*
+ * 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 an original work, containing original code.
+ *
+ * libCEC(R) is a trademark of Pulse-Eight Limited.
+ *
+ * This program is dual-licensed; 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 of the License, 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 this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ *
+ * Alternatively, you can license this library under a commercial license,
+ * please contact Pulse-Eight Licensing for more information.
+ *
+ * For more information contact:
+ * Pulse-Eight Licensing <license@pulse-eight.com>
+ * http://www.pulse-eight.com/
+ * http://www.pulse-eight.net/
+ */
+
+#include "env.h"
+#include "PHCommandHandler.h"
+
+#include "lib/devices/CECBusDevice.h"
+#include "lib/CECProcessor.h"
+#include "lib/LibCEC.h"
+#include "lib/CECClient.h"
+
+using namespace CEC;
+
+#define LIB_CEC m_busDevice->GetProcessor()->GetLib()
+#define ToString(p) LIB_CEC->ToString(p)
+
+CPHCommandHandler::CPHCommandHandler(CCECBusDevice *busDevice,
+ int32_t iTransmitTimeout /* = CEC_DEFAULT_TRANSMIT_TIMEOUT */,
+ int32_t iTransmitWait /* = CEC_DEFAULT_TRANSMIT_WAIT */,
+ int8_t iTransmitRetries /* = CEC_DEFAULT_TRANSMIT_RETRIES */,
+ int64_t iActiveSourcePending /* = 0 */) :
+ CCECCommandHandler(busDevice, iTransmitTimeout, iTransmitWait, iTransmitRetries, iActiveSourcePending),
+ m_iLastKeyCode(CEC_USER_CONTROL_CODE_UNKNOWN)
+{
+ m_vendorId = CEC_VENDOR_PHILIPS;
+}
+
+int CPHCommandHandler::HandleUserControlPressed(const cec_command& command)
+{
+ // tv keeps sending these until a button is pressed
+ if (command.parameters[0] == CEC_USER_CONTROL_CODE_DISPLAY_INFORMATION &&
+ m_iLastKeyCode == CEC_USER_CONTROL_CODE_DISPLAY_INFORMATION)
+ return COMMAND_HANDLED;
+
+ m_iLastKeyCode = command.parameters[0];
+
+ return CCECCommandHandler::HandleUserControlPressed(command);
+}
+
+int CPHCommandHandler::HandleUserControlRelease(const cec_command& command)
+{
+ m_iLastKeyCode = CEC_USER_CONTROL_CODE_UNKNOWN;
+
+ return CCECCommandHandler::HandleUserControlRelease(command);
+}
--- /dev/null
+#pragma once
+/*
+ * 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 an original work, containing original code.
+ *
+ * libCEC(R) is a trademark of Pulse-Eight Limited.
+ *
+ * This program is dual-licensed; 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 of the License, 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 this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ *
+ * Alternatively, you can license this library under a commercial license,
+ * please contact Pulse-Eight Licensing for more information.
+ *
+ * For more information contact:
+ * Pulse-Eight Licensing <license@pulse-eight.com>
+ * http://www.pulse-eight.com/
+ * http://www.pulse-eight.net/
+ */
+
+#include "CECCommandHandler.h"
+
+namespace CEC
+{
+ class CPHCommandHandler : public CCECCommandHandler
+ {
+ public:
+ CPHCommandHandler(CCECBusDevice *busDevice,
+ int32_t iTransmitTimeout = CEC_DEFAULT_TRANSMIT_TIMEOUT,
+ int32_t iTransmitWait = CEC_DEFAULT_TRANSMIT_WAIT,
+ int8_t iTransmitRetries = CEC_DEFAULT_TRANSMIT_RETRIES,
+ int64_t iActiveSourcePending = 0);
+ virtual ~CPHCommandHandler(void) {};
+
+ protected:
+ virtual int HandleUserControlPressed(const cec_command& command);
+ virtual int HandleUserControlRelease(const cec_command& command);
+ uint8_t m_iLastKeyCode;
+ };
+};