diff -Nru libcec-2.1.1/ChangeLog libcec-2.1.4/ChangeLog --- libcec-2.1.1/ChangeLog 2013-03-09 20:14:55.000000000 +0000 +++ libcec-2.1.4/ChangeLog 2013-12-13 18:06:00.000000000 +0000 @@ -1,3 +1,89 @@ +libcec (2.1.4-1) unstable; urgency=low + + * changed / added: + * set the vendor id of devices handled by libCEC to our vendor id + * added protection against standby without a notification from XBMC and + clock changes. issue #186 + * update system audio mode when audio system devices are activated + * added vendor id and name 'Harman/Kardon' + * added vendor id and name 'Marantz' + * cec-tray: support for away mode + * cec-tray: support for screensaver events + * fixed: + * fixed potential crash when SendCommand returns NULL + * fixed crash when CCECProcessor::Transmit was called after + CCECProcessor::Close + * always call the SourceActivated() callback in + CCECBusDevice::MarkAsActiveSource(), even when we were already active, + and let clients handle dupes. this prevented the screensaver from + being cancelled in XBMC + * send our vendor id when the tv sends it's vendor id + * transmit our physical address when the TV sends it's physical address + * potential deadlock + * leak on exit in CWaitForResponse::Clear() + * also transmit an active source message as response to a set stream path + command when we were already marked as active. bugzid: 3116 + * only send an active source message when receiving a routing change to an + address handled by libCEC. issue #56 + * HandleVendorRemoteButtonUp -> HandleUserControlRelease for all vendors + * silence warning for xx:a0:00:09:b0:00:80:20. bugzid: 2559 + * fixed comboKeyTimeout=0. closes #168 + * Panasonic: doesn't request the active source status when powered up, but + it does send a vendor command. send an active source message when we're + marked as active source after receiving this command. issue #192 + * possible crash when the tv does not respond to polls and the client isn't + registered yet. don't poll the tv in monitoring mode. closes #163 + * Panasonic: standby command + * Panasonic: silence 'unmapped code' warning. bugzid: 2375 + * LG: clean up and attempt to fix issue #176 + * LG: newer firmwares don't send a second power status request after it's + been requested once and replied with 'standby -> on' like previous + versions. send an active source message in an attempt to fix this. issue: + #176 + * Sharp: check whether the 'auto power on' option is disabled and tell the + user how to enable it + * Samsung: respond to vendor command 0x23 sent by samsung. attempt to fix + bugzid: 2164 + * cec-client: try to reconnect when the connection was lost + * cec-tray: crash on load (MissingManifestResourceException) + * cec-tray: crash or deadlock on exit + * cec-tray: crash when the connection to the adapter was lost + * cec-tray: display TV not responding warning on top + * windows: build libCEC and cec-client against toolset v100 (VS2010) + * FreeBSD: proper the adapter detection. credits @fneufneu + * suppress mangling warning. credits @warped-rudi. closes #190 + + -- Pulse-Eight Packaging Sat, 13 Dec 2013 16:02:00 +0100 + +libcec (2.1.3-1) unstable; urgency=low + + * changed / added: + * ask users to send an email when receiving an unhandled vendor command + * toshiba: map top menu and dvd menu buttons. closes #148 + * LibCecSharp: sync alert types + * LibCecSharp: added CurrentVersion to the version enum + * CecSharpClient: use CurrentVersion instead of a hardcoded version + * CecTray: power management + * CecTray: split up asyncform + * CecTray: try/catch xml exceptions when reading the xml config. bugzid: + 2082 + * CecTray: use CurrentVersion instead of a hardcoded version + * CecTray: display a warning if we can't poll the TV + * CecTray: display alerts from libCEC + * CecTray: don't use lazy loading for the main controller, but pass the + instance. bugzid: 2082 + * windows: converted to vs2012 + * fixed: + * toshiba: toshiba handler wasn't initialised, and toshiba uses more than + one vendor id + * libCEC marked itself as inactive source when the stream path changed to + a device with a different physical address. bugzid: 2157 + * TDA995x: report proper firmware revision (credits: @warped-rudi) + * TDA995x: avoid callback when already stopped (credits: @warped-rudi) + * windows: fix resource files and backwards compat dll names + + -- Pulse-Eight Packaging Sat, 11 May 2013 10:06:00 +0000 + libcec (2.1.1-1) unstable; urgency=low * changed / added: diff -Nru libcec-2.1.1/README libcec-2.1.4/README --- libcec-2.1.1/README 2013-03-09 20:14:55.000000000 +0000 +++ libcec-2.1.4/README 2013-12-13 18:06:00.000000000 +0000 @@ -52,15 +52,16 @@ === Windows === =============================================================================== -To compile libCEC on Windows, you'll need Visual C++ 2010 or Visual Studio 2010 -The installer needs the Windows DDK (Driver Development Kit) and Nullsoft's -NSIS. +To compile libCEC on Windows, you'll need Visual Studio 2012 and Visual Studio +or Visual C++ 2008. The latter is needed to build LibCecSharp for .Net +Framework 2.0. -To compile LibCecSharp on Windows, you'll need Visual C++ 2008 or Visual Studio -2008, because it is compiled against .NET 2.0. +The adapter detection code needs the Windows DDK (Driver Development Kit). + +To create an installer, you'll need Nullsoft's NSIS. To compile libCEC, follow these instructions: -* open /project/libcec.sln with Visual C++ 2010 or Visual Studio 2010. +* open /project/libcec.sln with Visual Studio 2012. * build the project. To build an installer on Windows: @@ -68,12 +69,6 @@ * go to /project and execute create-installer.bat to create the installer. * the installer is stored as /build/libCEC-installer.exe -You will need both Visual Studio 2008 and Visual Studio 2010 to build the -installer from the command line. To build with Visual C++ 2008 and 2010, -you will need to manually build libcec with Visual C++ 2010 and then -build LibCecSharp.sln with Visual Studio 2008. See create-installer.bat -for the required steps. - =============================================================================== === Raspberry Pi === =============================================================================== diff -Nru libcec-2.1.1/configure libcec-2.1.4/configure --- libcec-2.1.1/configure 2013-03-09 20:23:00.000000000 +0000 +++ libcec-2.1.4/configure 2013-12-13 18:15:11.000000000 +0000 @@ -17513,7 +17513,7 @@ LIBS_LIBCEC="$LIBS" LIBS="$libs_client" -CXXFLAGS="$CXXFLAGS -fPIC -Wall -Wextra -Wno-missing-field-initializers" +CXXFLAGS="$CXXFLAGS -fPIC -Wall -Wextra -Wno-missing-field-initializers -Wno-psabi" if test "x$use_debug" = "xyes"; then CXXFLAGS="$CXXFLAGS -g" diff -Nru libcec-2.1.1/configure.ac libcec-2.1.4/configure.ac --- libcec-2.1.1/configure.ac 2013-03-09 20:14:55.000000000 +0000 +++ libcec-2.1.4/configure.ac 2013-12-13 18:06:00.000000000 +0000 @@ -342,7 +342,7 @@ LIBS_LIBCEC="$LIBS" LIBS="$libs_client" -CXXFLAGS="$CXXFLAGS -fPIC -Wall -Wextra -Wno-missing-field-initializers" +CXXFLAGS="$CXXFLAGS -fPIC -Wall -Wextra -Wno-missing-field-initializers -Wno-psabi" if test "x$use_debug" = "xyes"; then CXXFLAGS="$CXXFLAGS -g" diff -Nru libcec-2.1.1/debian/changelog libcec-2.1.4/debian/changelog --- libcec-2.1.1/debian/changelog 2013-03-09 20:22:55.000000000 +0000 +++ libcec-2.1.4/debian/changelog 2013-12-13 18:15:06.000000000 +0000 @@ -1,8 +1,94 @@ -libcec (2.1.1-5~precise) precise; urgency=low +libcec (2.1.4-2~precise) precise; urgency=low * Build for Ubuntu 'precise' - -- Pulse-Eight Packaging Sat, 09 Mar 2013 21:22:55 +0100 + -- Pulse-Eight Packaging Fri, 13 Dec 2013 19:15:06 +0100 + +libcec (2.1.4-1) unstable; urgency=low + + * changed / added: + * set the vendor id of devices handled by libCEC to our vendor id + * added protection against standby without a notification from XBMC and + clock changes. issue #186 + * update system audio mode when audio system devices are activated + * added vendor id and name 'Harman/Kardon' + * added vendor id and name 'Marantz' + * cec-tray: support for away mode + * cec-tray: support for screensaver events + * fixed: + * fixed potential crash when SendCommand returns NULL + * fixed crash when CCECProcessor::Transmit was called after + CCECProcessor::Close + * always call the SourceActivated() callback in + CCECBusDevice::MarkAsActiveSource(), even when we were already active, + and let clients handle dupes. this prevented the screensaver from + being cancelled in XBMC + * send our vendor id when the tv sends it's vendor id + * transmit our physical address when the TV sends it's physical address + * potential deadlock + * leak on exit in CWaitForResponse::Clear() + * also transmit an active source message as response to a set stream path + command when we were already marked as active. bugzid: 3116 + * only send an active source message when receiving a routing change to an + address handled by libCEC. issue #56 + * HandleVendorRemoteButtonUp -> HandleUserControlRelease for all vendors + * silence warning for xx:a0:00:09:b0:00:80:20. bugzid: 2559 + * fixed comboKeyTimeout=0. closes #168 + * Panasonic: doesn't request the active source status when powered up, but + it does send a vendor command. send an active source message when we're + marked as active source after receiving this command. issue #192 + * possible crash when the tv does not respond to polls and the client isn't + registered yet. don't poll the tv in monitoring mode. closes #163 + * Panasonic: standby command + * Panasonic: silence 'unmapped code' warning. bugzid: 2375 + * LG: clean up and attempt to fix issue #176 + * LG: newer firmwares don't send a second power status request after it's + been requested once and replied with 'standby -> on' like previous + versions. send an active source message in an attempt to fix this. issue: + #176 + * Sharp: check whether the 'auto power on' option is disabled and tell the + user how to enable it + * Samsung: respond to vendor command 0x23 sent by samsung. attempt to fix + bugzid: 2164 + * cec-client: try to reconnect when the connection was lost + * cec-tray: crash on load (MissingManifestResourceException) + * cec-tray: crash or deadlock on exit + * cec-tray: crash when the connection to the adapter was lost + * cec-tray: display TV not responding warning on top + * windows: build libCEC and cec-client against toolset v100 (VS2010) + * FreeBSD: proper the adapter detection. credits @fneufneu + * suppress mangling warning. credits @warped-rudi. closes #190 + + -- Pulse-Eight Packaging Sat, 13 Dec 2013 16:02:00 +0100 + +libcec (2.1.3-1) unstable; urgency=low + + * changed / added: + * ask users to send an email when receiving an unhandled vendor command + * toshiba: map top menu and dvd menu buttons. closes #148 + * LibCecSharp: sync alert types + * LibCecSharp: added CurrentVersion to the version enum + * CecSharpClient: use CurrentVersion instead of a hardcoded version + * CecTray: power management + * CecTray: split up asyncform + * CecTray: try/catch xml exceptions when reading the xml config. bugzid: + 2082 + * CecTray: use CurrentVersion instead of a hardcoded version + * CecTray: display a warning if we can't poll the TV + * CecTray: display alerts from libCEC + * CecTray: don't use lazy loading for the main controller, but pass the + instance. bugzid: 2082 + * windows: converted to vs2012 + * fixed: + * toshiba: toshiba handler wasn't initialised, and toshiba uses more than + one vendor id + * libCEC marked itself as inactive source when the stream path changed to + a device with a different physical address. bugzid: 2157 + * TDA995x: report proper firmware revision (credits: @warped-rudi) + * TDA995x: avoid callback when already stopped (credits: @warped-rudi) + * windows: fix resource files and backwards compat dll names + + -- Pulse-Eight Packaging Sat, 11 May 2013 10:06:00 +0000 libcec (2.1.1-1) unstable; urgency=low diff -Nru libcec-2.1.1/include/cectypes.h libcec-2.1.4/include/cectypes.h --- libcec-2.1.1/include/cectypes.h 2013-03-09 20:14:55.000000000 +0000 +++ libcec-2.1.4/include/cectypes.h 2013-12-13 18:06:00.000000000 +0000 @@ -825,27 +825,31 @@ typedef enum cec_vendor_id { - CEC_VENDOR_TOSHIBA = 0x000039, - CEC_VENDOR_SAMSUNG = 0x0000F0, - CEC_VENDOR_DENON = 0x0005CD, - CEC_VENDOR_LOEWE = 0x000982, - CEC_VENDOR_ONKYO = 0x0009B0, - CEC_VENDOR_MEDION = 0x000CB8, - CEC_VENDOR_AKAI = 0x0020C7, - CEC_VENDOR_AOC = 0x002467, - CEC_VENDOR_PANASONIC = 0x008045, - CEC_VENDOR_PHILIPS = 0x00903E, - CEC_VENDOR_DAEWOO = 0x009053, - CEC_VENDOR_YAMAHA = 0x00A0DE, - CEC_VENDOR_GRUNDIG = 0x00D0D5, - CEC_VENDOR_PIONEER = 0x00E036, - CEC_VENDOR_LG = 0x00E091, - CEC_VENDOR_SHARP = 0x08001F, - CEC_VENDOR_SONY = 0x080046, - CEC_VENDOR_BROADCOM = 0x18C086, - CEC_VENDOR_VIZIO = 0x6B746D, - CEC_VENDOR_BENQ = 0x8065E9, - CEC_VENDOR_UNKNOWN = 0 + CEC_VENDOR_TOSHIBA = 0x000039, + CEC_VENDOR_SAMSUNG = 0x0000F0, + CEC_VENDOR_DENON = 0x0005CD, + CEC_VENDOR_MARANTZ = 0x000678, + CEC_VENDOR_LOEWE = 0x000982, + CEC_VENDOR_ONKYO = 0x0009B0, + CEC_VENDOR_MEDION = 0x000CB8, + CEC_VENDOR_TOSHIBA2 = 0x000CE7, + CEC_VENDOR_PULSE_EIGHT = 0x001582, + CEC_VENDOR_AKAI = 0x0020C7, + CEC_VENDOR_AOC = 0x002467, + CEC_VENDOR_PANASONIC = 0x008045, + CEC_VENDOR_PHILIPS = 0x00903E, + CEC_VENDOR_DAEWOO = 0x009053, + CEC_VENDOR_YAMAHA = 0x00A0DE, + CEC_VENDOR_GRUNDIG = 0x00D0D5, + CEC_VENDOR_PIONEER = 0x00E036, + CEC_VENDOR_LG = 0x00E091, + CEC_VENDOR_SHARP = 0x08001F, + CEC_VENDOR_SONY = 0x080046, + CEC_VENDOR_BROADCOM = 0x18C086, + CEC_VENDOR_VIZIO = 0x6B746D, + CEC_VENDOR_BENQ = 0x8065E9, + CEC_VENDOR_HARMAN_KARDON = 0x9C645E, + CEC_VENDOR_UNKNOWN = 0 } cec_vendor_id; typedef enum cec_adapter_type @@ -915,6 +919,16 @@ return *this; } + bool operator ==(const struct cec_datapacket& packet) const + { + if (size != packet.size) + return false; + for (uint8_t iPtr = 0; iPtr < size; iPtr++) + if (packet.data[iPtr] != data[iPtr]) + return false; + return true; + } + bool IsEmpty(void) const { return size == 0; } /**< @return True when this packet is empty, false otherwise. */ bool IsFull(void) const { return size == 100; } /**< @return True when this packet is false, false otherwise. */ @@ -1407,7 +1421,10 @@ CEC_CLIENT_VERSION_2_0_5 = 0x2005, CEC_CLIENT_VERSION_2_1_0 = 0x2100, CEC_CLIENT_VERSION_2_1_1 = 0x2101, - CEC_CLIENT_VERSION_CURRENT = 0x2101 + CEC_CLIENT_VERSION_2_1_2 = 0x2102, + CEC_CLIENT_VERSION_2_1_3 = 0x2103, + CEC_CLIENT_VERSION_2_1_4 = 0x2104, + CEC_CLIENT_VERSION_CURRENT = 0x2104 } cec_client_version; typedef enum cec_server_version @@ -1437,7 +1454,10 @@ CEC_SERVER_VERSION_2_0_5 = 0x2005, CEC_SERVER_VERSION_2_1_0 = 0x2100, CEC_SERVER_VERSION_2_1_1 = 0x2101, - CEC_SERVER_VERSION_CURRENT = 0x2101 + CEC_SERVER_VERSION_2_1_2 = 0x2102, + CEC_SERVER_VERSION_2_1_3 = 0x2103, + CEC_SERVER_VERSION_2_1_4 = 0x2104, + CEC_SERVER_VERSION_CURRENT = 0x2104 } cec_server_version; struct libcec_configuration diff -Nru libcec-2.1.1/src/CecSharpTester/CecSharpClient.cs libcec-2.1.4/src/CecSharpTester/CecSharpClient.cs --- libcec-2.1.1/src/CecSharpTester/CecSharpClient.cs 2013-03-09 20:14:55.000000000 +0000 +++ libcec-2.1.4/src/CecSharpTester/CecSharpClient.cs 2013-12-13 18:06:00.000000000 +0000 @@ -43,7 +43,7 @@ Config = new LibCECConfiguration(); Config.DeviceTypes.Types[0] = CecDeviceType.RecordingDevice; Config.DeviceName = "CEC Tester"; - Config.ClientVersion = CecClientVersion.Version2_1_0; + Config.ClientVersion = CecClientVersion.CurrentVersion; Config.SetCallbacks(this); LogLevel = (int)CecLogLevel.All; diff -Nru libcec-2.1.1/src/CecSharpTester/CecSharpTester.csproj libcec-2.1.4/src/CecSharpTester/CecSharpTester.csproj --- libcec-2.1.1/src/CecSharpTester/CecSharpTester.csproj 2013-03-09 20:14:55.000000000 +0000 +++ libcec-2.1.4/src/CecSharpTester/CecSharpTester.csproj 2013-12-13 18:06:00.000000000 +0000 @@ -1,5 +1,5 @@  - + Debug AnyCPU @@ -12,17 +12,22 @@ CecSharpTester v2.0 512 + + + + + 3.5 true - ..\..\build\ + ..\..\build\x64\ DEBUG;TRACE full x64 prompt - ..\..\build\ + ..\..\build\x64\ TRACE true pdbonly @@ -51,17 +56,16 @@ + - + {E54D4581-CD59-4687-BB10-694B8192EABA} LibCecSharp - - - +