libcec (6.0.2.1~#DIST#) #DIST#; urgency=medium * added: * example systemd units for common use cases (#506) * fixed: * debian: allows clean upgrades of debian libcec-dev (#521) * detect Python pre-releases correctly (#515) * docs: add missing git dependency to raspberry pi installation (#519) -- Pulse-Eight Packaging Mon, 13 Jul 2020 11:17:00 +0100 libcec (6.0.1.1~#DIST#) #DIST#; urgency=medium * fixed: * cec-tray didn't start in some cases -- Pulse-Eight Packaging Mon, 13 Jul 2020 09:16:00 +0100 libcec (6.0.0.1~#DIST#) #DIST#; urgency=medium * fixed: * eventghost installation * loading and storing settings in eeprom * LibCecSharp callbacks could crash * updating the hdmi port setting or physical address while libCEC is running * various small robustness improvements and cosmetic changes * icons are no longer black transperant (and nearly invisible) * added: * v2.0 CEC version * new/missing functions and fields in LibCecSharp * firmware can now be upgraded in cec-tray * screensaver functionality in cec-tray * MuteAudio() command * removed: * CanPersistConfiguration() - use CanSaveConfiguration() instead * PersistConfiguration() - SetConfiguration() now stores the cfg in eeprom if available * EnableCallbacks() - use SetCallbacks() and DisableCallbacks()instead * changed: * unified LibCecSharp and LibCecSharpCore * try to init submodules when not found while creating an installer. abort if platform failed to compile -- Pulse-Eight Packaging Mon, 9 Jul 2020 23:37:00 +0100 libcec (5.0.0.1~#DIST#) #DIST#; urgency=medium * fixed: * osd name truncated. issue #333 * added: * GetStats() API command, for devices that support it * USB-CEC auto power on at boot support. requires FW v11+ -- Pulse-Eight Packaging Mon, 27 Apr 2020 13:39:00 +0100 libcec (4.0.5.1~#DIST#) #DIST#; urgency=medium * fixed: * windows 64-bit detection. issue #473 * windows build with spaces in path. issue #475 #474 * USBCECAdapterDetection: Only scan tty. issue #495 * don't probe all devices in CCECClient::IsActiveDeviceType(). issue #492 * use cmake TIMESTAMP for reproducible builds. issue #485 #487 * python 3 client. issue #479 * add O_CLOEXEC to prevent child process locking. issue #478 #477 * fix build if hostname does not support '-f' argument. issue #471 * hyperlinks in README files. issue #465 #455 * replace SWIG_ADD_MODULE and force python2 on win x86. issue #481 * cb_cec_log_message() formatting in cecc-client * missing SetupDiDestroyDeviceInfoList() * various build script improvements on Windows * 15 and 16 byte frames didn't fit and couldn't be sent. issue #443 * added: * Linux CEC framework adapter. issue #380 * .Net Core support. issue #130 * P8 adapter discovery via Linux sysfs. issue #472 * iMX6 support. issue #323 * Apple vendor ID. issue #486 * link to Skull Canyon and Hades Canyon NUC adapter. issue #448 * Request/Report SAD messages. issue #404 * changed: * use hex format for cec-client address input. issue #480 * adapter detection on windows without advapi * build using VS2019 on Windows, required for .Net Core * CMake 3.12+ is now required -- Pulse-Eight Packaging Mon, 27 Apr 2020 13:28:00 +0100 libcec (4.0.4.1~#DIST#) #DIST#; urgency=medium * fixed: only prevent TV polls when a Samsung TV is detected instead of suppressing all logical addresses. issue #424 #444 -- Pulse-Eight Packaging Fri, 21 Dec 2018 22:34:14 +0100 libcec (4.0.3.1~#DIST#) #DIST#; urgency=medium * fixed: * detect debian based distros properly when installing python. closes #314 * don't filter out broadcast in HandleDeviceVendorCommandWithId(). issue #309 * send an active source message when a routing change has been received with libCEC's address as new route and no active source message has been sent yet. issue #309 #205 #233 * vs2015 c++ redistributables * fix missing tinfo linking in cec-client. #341 * set wrong variable. #343 #352 * LG - don't activate the source when receiving vendor command 0xB. #344 * LG TV always changing input when turned on #307 * Fix menu language string. #360 * correct python lib path for python 2.7+/3+. #356 * Fix build if tinfo library is not present. #398 * disable autonomous mode when a Samsung TV is connected. Samsung 2017+ TVs will power on randomly (Samsung bug). don't poll the TV. #424 * CRPiCECAdapterMessageQueue::Write() accessed the queue without locking. #423 * use sig_atomic_t for shared object between sig handler and main. #425 * python 3.5+ import. #356 * TDA995x: Fix logical address readback. #303 * TDA995x: Handle physical address change, optimize logical address setup. #303 * Pulse-Eight USB CEC adapter detection on macOS Mojave. #434 * Fix broken Python version check and failure to build on cmake < 3.7. #409 * 13 char device name got truncated * changed: * log a warning when we detect that RPi's CEC service is used by something else, blocking libCEC. issue #191 * const IAdapterCommunication::GetLogicalAddresses(), making the mutex mutable for now without changing the platform lib. closes #259 * Add a Reinitialze action. Useful for after the device has been powered down. #299 * Panasonic media control info to the readme * detect WIN64 in cmake automatically. #322 * README.developers.md. #330 * instructions for hdmi_force_hotplug=1 on the pi * eventghost plugin install/create. #375 * Include C version of libCEC loader when installing. #397 * Explicitly use python3 in pyCecClient. #433 * build with vs 2015 -- Pulse-Eight Packaging Thu, 8 Nov 2018 18:05:36 +0100 libcec (4.0.2.1~#DIST#) #DIST#; urgency=medium * fixed: * windows: device detection. credits: @Portisch * don't automatically assume that an AVR is active in some situations * don't take Panasonic's vendor id when emulating an AVR * drm EDID parser not compiled in. credits @gdachs * python: have Swig generate Python threading support * python: only pass unsigned * python: allow empty callback parameters * python: install demo app as executable * python: correct install path. credits @Lo0k @mkreisl. #284 #288 #289 #291 * python: possible crash when passing an invalid callback -- Pulse-Eight Packaging Mon, 23 Jan 2017 16:28:00 +0100 libcec (4.0.1.1~#DIST#) #DIST#; urgency=medium * fixed: * TransmitVolumeDown to use CEC_USER_CONTROL_CODE_VOLUME_DOWN. credits: @michaelarnauts * HAVE_AOCEC_API missing in if in AdapterFactory. credits: @gdachs * env.h had 'ON' instead of '1' for some values -- Pulse-Eight Packaging Tue, 3 Jan 2017 19:12:00 +0100 libcec (4.0.0.3~#DIST#) #DIST#; urgency=medium * fixed: * headers weren't installed after package name changes -- Pulse-Eight Packaging Tue, 14 Nov 2016 10:15:00 +0100 libcec (4.0.0.2~#DIST#) #DIST#; urgency=medium * changed: * updated readme files * renamed 'libcec-dev' to 'libcec4-dev' * fixed: * removed debian Replaces/Provides/Conflicts * crash in drm edid code. credits: @zivillian * compilation with -DHAVE_AOCEC_API=1 -- Pulse-Eight Packaging Tue, 7 Nov 2016 22:43:00 +0100 libcec (4.0.0.1~#DIST#) #DIST#; urgency=medium * API cleaned up for v4 * changed: * signature for GetDeviceMenuLanguage() changed * signature for GetDeviceOSDName() changed * signature for libcec_get_device_menu_language() changed * signature for get_device_osd_name() changed * cec_datapacket size reduced to 16 bytes * callbacks changed to pass pointers instead of copies * obsolete entries removed from libcec_configuration * removed deprecated FindAdapters() and MuteAudio() * send volume change commands to the TV if no audio system is present. Only some TVs support this. closes #223 * added: * bAutoWakeAVR entry in libcec_configuration, which controls whether to automatically power on the avr or not when the source is activated. issue #156 * iDoubleTapTimeoutMs replacing iDoubleTapTimeout50Ms. time is now in milliseconds * new AO CEC adapter. credits: @gdachs * fixed: * compilation with full debugging enabled * handling of LG vendor command 0x0B. Issue #256. Credits @Vollstrecker * return value wasn't checked correctly in CLibCEC::RegisterClient() * Raspberry Pi fixes for issues #252 and #191 -- Pulse-Eight Packaging Tue, 26 Oct 2016 18:08:00 +0100 libcec (3.2.0.1~#DIST#) #DIST#; urgency=medium * Slit up repositories for libCEC and .Net utilities. -- Pulse-Eight Packaging Wed, 19 Oct 2016 16:57:00 +0100 libcec (3.1.0.1~#DIST#) #DIST#; urgency=medium * changed / added: * bump platform lib (windows) * use a template that can be used by scripts for the changelog * make released key polling wait for exact time until key gets released. credits @popcornmix * keep track of time since initial button press and last button update credits @popcornmix * support repeating button presses with configurable repeat rate. credits @popcornmix * pass through duration on all button repeats. credits @popcornmix * updated README.md * moved the buffer in CDRMEdidParser::GetPhysicalAddress() from the stack to heap * added #include to make the IDE happy. not actually used when compiling * clean up device detection code a bit and replace winapi calls with CM_* calls. issue #130 * replaced lockdev by flock. closes #141 * use a single number as major SO version like others. credits @rbalint * Sharp uses vendor id 0x534850 too. issue #36 * use p8-platform instead of platform * detect dirty trees * support for vs2015 to build scripts * update build scripts for vs2015 and win10uni * fixed: * missing version.h when installing on windows * skip double press removal. It is handled through other means. credits @popcornmix * don't generate an invalid env.h when not built with the .git dir present. closes #112 * fix multi-arch libdir locations. credits @wsnipex * fix for holding buttons on remotes of Philips TVs. credits @mrgreywater * initialisation issue found on Raspberry Pi with Buildroot. credits @elouet * crash on systems without /sys/class/drm. credits @rbalint * segfault when an empty EDID blob is passed to GetPhysicalAddressFromEDID() * combo key (stop by default) in the EventGhost plugin. fixes #128 * silence compiler warnings * git-rev.sh script * clean/fix platform detection * display a nice error message if LibCecSharp failed to load * limit the log in cectray to 100k * open cec-tray minimised if configured. don't open and minimise. issue #158 * cosmetics: persist -> save * query commands in eventghost. fixes #160 * eventghost demo config * don't call PowerOnDevices() if no devices to wake have been configured. issue #97 * Don't skip checking for Rasperry Pi library (Fixes #166). credits @kingosticks * TDA99x check * disable DRM for FreeBSD -- Pulse-Eight Packaging Wed, 20 Jan 2016 00:37:32 +0100 libcec (3.0.1-1~#DIST#) #DIST#; urgency=low * changed / added: * autodetect physical ID from DRM. credits @PoppyPop * cmake command line options for raspberry pi distributions that don't use standard system paths for libs for some reason * convenience methods for compilation on the raspberry pi with non-standard system directories and cross compilation * explanation in README.md for Exynos and TDA995x * don't treat failed acks from the tv as error when sending an active source message * compilation info when building libCEC * build shared libraries by default * cec-client: 'tx' command parsing * fixed: * return code of CCECClient callbacks after async changed. credits: @mk01 * polling addresses on RPi. credits: @mk01 * interruptable Sleep() in RPiCECAdapterMessageQueue * Exynos support. credits: @YamashitaRen * XCASE got removed from posix termios in some recent version * don't return an abort code if sending a response code fails -- Pulse-Eight Packaging Fri, 03 Jul 2015 15:19:00 +0200 libcec (3.0.0-2) unstable; urgency=low * fixed: * build fixes on non-linux -- Pulse-Eight Packaging Fri, 01 May 2015 01:41:00 +0200 libcec (3.0.0-1) unstable; urgency=low * changed / added: * initial version of an EventGhost plugin * Python API added through Swig, based on the C++ API * switched from autotools to cmake * added curses support. credits @joao29a * added cecc-client (testclient for the C api) * added runtime libCEC loading for C * updated the C interface to include new features and no longer use a global library instance * some AVRs fail to be powered up by the TV when it powers up. power up the AVR explicitly * added support for CEC_DEVICE_TYPE_TV (useful for testing) * compile with c++11 * removed CStdString * drop 'using namespace std' * autogenerated version numbers, drop some backwards compat code * LibCecSharp: added PhysicalAddressToString() * CecSharpClient: better formatting of the scan command * fixed: * Debian packaging cleaned up. Credits @PimentNoir * fixed Raspberry Pi compilation. Credits @NHellFire * ignore vendor command with id from pioneer AVRs. bugzid: 3853 * update the vendor id of a device when receiving a vendor command with id before receiving a vendor id * XBMC->Kodi rebranding * don't delete m_client when m_cec hasn't been deleted yet in CLibCEC::~CLibCEC(). issue #63 * change device types in CCECProcessor::Process(), not directly. issue #63 * use shared_ptr instead of passing raw pointers around that can be unregistered from another thread and crash * check if the port or device actually changed in CCECClient::SetHDMIPort() * potential buffer overflow * fixed setting the physical address at startup when using default settings * don't call callbacks directly in libCEC, but queue them and process from a worker thread * libCEC Tray: crash when retrying to find adapters * libCEC Tray: don't show the "no device found" warning when resuming from standby * libCEC Tray: reconnect to the adapter after resuming from standby * libCEC Tray: send key presses to the active window when none of the predefined (wmc/kodi) ones are active * libCEC Tray: fixed key combinations with the windows key -- Pulse-Eight Packaging Fri, 03 Apr 2015 21:13:00 +0200 libcec (2.2.0-1) unstable; urgency=low * changed / added: * read the physical address from X11 randr extension. credits: @smithereens * support for Exynos HDMI. credits: @vamanea * another vendor ID for Harman/Kardon. credits: @ksooo * some 1.4 keycodes have been added. credits: @ksooo * cec-client: fix typo prevent keycodes to be passed. credits: @popcornmix * fixed: * various Raspberry Pi fixes. credits: @mk01 * vendor specific handlers weren't used for Toshiba and Onkyo. credits: @ksooo * LibCecTray: keypress not sent when multiple instances of eshell.exe are running. thanks @pvanbaren * deadlock on exit in XBMC, because of CEC_ALERT_CONNECTION_LOST -- Pulse-Eight Packaging Tue, 28 Oct 2014 10:45:00 +0200 libcec (2.1.4-2) unstable; urgency=low * fixed: * OS X build -- Pulse-Eight Packaging Wed, 18 Dec 2013 02:14:00 +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 * changed / added: * send an alert when the TV does not respond to polls * fixed: * LG didn't switch sources after the TV powered up * always poll a device when the status is unknown, and don't try to determine whether it needs to be polled by checking the status of other devices * don't mark a device as inactive when receiving a routing change message, only when another device was made acive. fixes the issue that rc passthrough doesn't work when a tv sends a quick routing change to another port before requesting the active source when coming out of standby * LibCecSharp: fixed 14 char long OSD name (wasn't \0 terminated) * LibCecSharp: fixed return value of GetActiveDevices(). issue #131 * cec-tray: fixed index out of range exception in CECSettingNumeric.cs. bugzid: 2082 * cec-tray: ensure that the tray app only initialises once. bugzid: 2082 * rpi: don't set the physical address to 1.0.0.0 when receiving VC_HDMI_UNPLUGGED. it may wake up device when they were just sent to standby. issue #142 * osx: use the correct dylib name in cecloader.h, used by cec-client -- Pulse-Eight Packaging Fri, 8 Mar 2013 17:21:00 +0100 libcec (2.1.0-1) unstable; urgency=low * changed / added: * added vendor id for Denon * added DetectAdapters() method, that returns all device information for detected adapters, not just the com port * added new method PowerOnScreensaver. credits: @jmarcet * LibCECTray: Added ability to send modifiers by nesting commands in KeyInput.cs. credits: Nate Burr * rpi: Added /opt/vc/include/interface/vmcs_host/linux to rpi_cflags to fix building on 'next' firmware branch. credits: Nedim Lisica * fixed: * don't send two active source message sequences to philips. issue #118 * don't send deck status updates to philips when activating the source * update the active source status correctly after a manual switch to another source. closes #124 * rename cec_audio_status() to cec_audio_get_status() to avoid conflict with the cec_audio_status enum. This makes the C API compile again. credits: Dave Chapman * LibCECTray: Fixed bug with libcec adding the keyup for button commands and making sure they are still executed. credits: Nate Burr * rpi: register callback for HPD. re-read the physical address when we received VC_HDMI_ATTACHED. issue #109 -- Pulse-Eight Packaging Tue, 26 Feb 2013 23:06:00 +0100 libcec (2.0.5-1) unstable; urgency=low * changed: * also try polls at least twice when it failed * added methods to get the audiostatus and toggle the mute status from the amplifier (if connected) * added comboKey and iComboKeyTimeoutMs to libcec_configuration * force cec_user_control_code_unknown to 0xFF * fixed: * check unsupported features properly * only send an active source message when the stream path changed and we weren't the active source yet * don't mark as inactive source on routing changes * press & hold * never mark user control opcodes as unsupported * report our OSD name to the TV, since some TVs don't request it * initial audiostatus value * don't log a no longer relevant FIXME -- Pulse-Eight Packaging Thu, 6 Dec 2012 20:58:00 +0100 libcec (2.0.4-1) unstable; urgency=low * changed: * dropped obsolete cec-config * added CEC_CLIENT_VERSION_CURRENT and CEC_SERVER_VERSION_CURRENT. closes #88 * support colon separated data for the 'tx' command in cec-client * mark the adapter as (in)active source for firmware v3+ * added 'is' command to cec-client, to mark libCEC as inactive source * fixed: * only change the handler of the primary device if the tv has a quirks mode not for other devices * send an active source message when the route was set to the physical address that is handled by libCEC * default double tap timeout wasn't set for panasonic * philips TVs sometimes keep sending key presses without key releases * philips TVs ignore 'image view on' right after they were sent into standby. check the power status of the tv every 5 seconds, until it reports to have powered on * mark a device as powered on when receiving a stream path or routing change * update the active source status correctly on stream path changes * ensure that we only send 'image view on' when needed * mark the TV as 'in transition standby -> on' after sending 'image view on', so we don't spam the TV with 'image view on' command while waiting for it to finish powering up. bugzid: 1603. bugzid: 1609. bugzid: 1592 * request the active source before requesting device information in cec-client, or it'll display incorrect information when called the first time * update the value of CCECProcessor::m_bMonitor when registering a client. SetControlled() wasn't called on exit, so it took 30 seconds until it was auto-enabled * silence 'unused' warning properly. closes #86 * only change the type of the client to 'playback device' instead of 'recorder' for panasonic if the TV is a panasonic. issue #84 * always poll the TV if it's marked as not present. issue #83. issue #84 * only set m_iCurrentButton when the duration isn't known yet. fixes duplicate key press for vendor remote codes. closes #81 * delete the right registry key * send active source message when we received a routing change with a device that is handled by libCEC as address. issue #89 * return value wasn't updated in GetLogicalAddresses() -- Pulse-Eight Packaging Thu, 15 Nov 2012 02:26:00 +0100 libcec (2.0.3-1) unstable; urgency=low * changed: * log unhandled vendor remote keycodes in the log, so they get logged without debugging enabled * double tap timeout increased from 200ms to 250ms * CuBox/NXP* renamed to TDA995x* * fixed: * handling of active route changes. github issue #56 and issue #58 * new combo key handling broke samsung's vendor specific remote buttons. github issue #54 * don't try to set controlled mode when using firmware version 1 and crash. github issue #76 * fix for LG models that send a vendor key up after a normal key down. github issue #71 * some TVs send keypresses to us without making us the active source. mark us as active source when this happens. github issue #71 * LG doesn't send routing changes, and marks the TV as active source when switching to another source that's not been selected in the simplink menu instead. this change keeps libCEC marked as powered on and keep the deck state set to CEC_DECK_INFO_OTHER_STATUS_LG. fixes keypresses not working after switching to another source and back to libCEC's hdmi port via the source select menu instead of the simplink menu. github issue #71 * don't respond with an abort message when receiving a vendor remote button command * respond with CEC_ABORT_REASON_INVALID_OPERAND when receiving a keypress without a parameter * typo in stop+pause combo key that prevented one of the keys from working * rpi: log what data we received exactly when we receive an response from the pi's firmware that doesn't match any command that we sent. issue #77 * cubox: added adapter ID interface -- Pulse-Eight Packaging Wed, 31 Oct 2012 15:57:00 +0100 libcec (2.0.2-2) unstable; urgency=medium * fixed: * updating the device status after a poll was broken and could reset the status of devices that were marked as handled by libCEC to 'not present' * don't keep spamming the bus with a vendor command when an active source switch is pending for panasonic, but only send it when needed * reset CVLCommandHandler::m_bCapabilitiesSent when the TV goes to standby -- Pulse-Eight Packaging Mon, 15 Oct 2012 13:52:00 +0100 libcec (2.0.2-1) unstable; urgency=low * changed/added: * missing from the previous changelog: added support for the CuBox TDA995x credits: warped-rudi * lower retry timeout for source switches * cec-client: wait for the source switch to finish when cec-client is called with the -s switch * request the power status of the TV directly after registering a new client * fixed: * don't keep trying to send 'image view on' commands to the TV when no TV is connected, and just send the 'set active source' command. fixes source switch and debug log spam for people without a TV connected * don't keep waiting for an updated power status from the TV for Panasonic, but request a status update once every 5 seconds, or we can possibly wait forever for the tv to send it * log what we received exactly when logging FIXME * typo in CVLCommandHandler::VendorPreActivateSourceHook. bugzid: 1087 * if we failed to get the physical address of the device that we are connected to in the config, then try to use the address that was persisted in the eeprom before resetting to the default value, 1.0.0.0. closes #50. * don't update the device status of unregistered/broadcast * log all device status changes * CCECClient::IsLibCECActiveSource returns false now while the active source command is pending * log failed acks and other errors in the debug log again * don't send 'image view on' when the TV is already powering up * reset the delayed source switch timeout properly, so we don't spam commands every second * don't change the device status when sending a delayed source switch * don't send out commands to a device that is marked as not present or handled by libCEC -- Pulse-Eight Packaging Thu, 11 Oct 2012 15:48:00 +0100 libcec (2.0.1-1) unstable; urgency=low * changed/added: * added Loewe support * added signal handlers to client applications * Documentation updated * replaced cec-config-gui by libCEC tray * log the exact data for failed transmissions, not the opcode * don't log every frame, unless debugging was enabled in ./configure or visual studio * changed some log levels from NOTICE to DEBUG, so the non-debugging output is less spammy * interface changes: * WARNING: breaking API changes * clean up: deprecated methods and fields removed * callback parameters changed to fix plain C compilation * added GetAdapterProductId()+GetAdapterVendorId()/ cec_get_adapter_product_id()+cec_get_adapter_vendor_id() * added iDoubleTapTimeoutMs to libcec_configuration * remove all pre-v2.0 compatibility checks * fixed: * fix plain C compilation * prevent sending directly addressed commands from being sent to broadcast * don't wait for a response when sending a reply, so we don't block message handling * message response signaling and logging * prevent double taps by not sending the same key press twice within 200ms * fall back to the primary client when CCECProcessor::HandleLogicalAddressLost() and no client could be found * no more delay up to 2 seconds when exiting libCEC * don't get caught in a loop in CVLCommandHandler when the source switch was not allowed and no power status request was sent * always send image view on to the tv, don't check the power status * only respond to vendor commands for panasonic if we are the destination * rpi: current firmware first sends a change to logical address 'broadcast' and then signals us that the address was lost. libCEC then failed to re-register, because it didn't know any client at this address -- Pulse-Eight Packaging Mon, 8 Oct 2012 21:30:00 +0100 libcec (1.9.1-1) unstable; urgency=low * changed/added: * added the type of adapter to libcec_configuration, and display the type in cec-client -l * added device detection support for composite usb devices on windows. needs the windows ddk, and it's expected to be found in C:\WinDDK\7600.16385.1 * interface changes: * adapter type was added to libcec_configuration * moved cec_adapter_messagecode from cectypes.h to USBCECAdapterMessage.h * fixed: * retry m_port->Read(..) if an EINTR errror occurs instead of closing the connection. credits @Obruni. closes #38 * make cec-client include cecloader.h from our project, not from system * fixed duplicate entries check in CUSBCECAdapterDetection * fixed missing cec_version updates in libcec_configuration * transmit an active source message after to a device that's handled by libCEC. closes #43 * rpi: handle vendor specific remote control presses. closes #42 * rpi: handle VC_CEC_LOGICAL_ADDR_LOST, sent by the Pi's firmware when the logical address was taken while CEC was being reinitialised * panasonic: send out an active source message when the tv started up because it sometimes doesn't request this -- Pulse-Eight Packaging Wed, 5 Sep 2012 16:54:00 +0100 libcec (1.8.2-1) unstable; urgency=low * changed/added: * p8: match to the response provided by the firmware when checking responses (added in firmware v2 rev6) * fixed: * windows: update the error message when an error occurs while writing to the serial port * delayed source switch time was reset, resulting in an attempt every second until it succeeded * ensure that the vendor commands are always sent for panasonic, and that the deck status for lg isn't reset. fixes some buttons not working after a second or delayed source switch * added guard so ReplaceHandler() doesn't accidentally try to replace a handler for the broadcast address * wait until the commandhandler is replaced before registering a client, so we don't register a client and replace it directly afterwards if the tv doesn't support the device type * ensure that the command handler of the tv is replaced before registering a client, or it might result in a double eeprom write attempt * p8: don't disable controlled mode when switching to monitoring mode * p8: do delayed eeprom writes async or it'll block processing other input -- Pulse-Eight Packaging Tue, 3 Aug 2012 02:35:00 +0100 libcec (1.8.1-1) unstable; urgency=low * changed/added: * added support for the Raspberry Pi. * added cec-client -i / cec-client --info that calls GetLibInfo() * header cleanups * added CAdapterFactory, to create IAdapterCommunication instances * added --debug to configure, to include -ggdb * interface changes: * added GetLibInfo()/cec_get_lib_info(), that shows how libCEC was compiled and with which features included. * added ToString(cec_user_control_code_key) to the interface * fixed: * disallow sending CEC_OPCODE_SET_STREAM_PATH - not allowed by the CEC spec * persist the configuration in the eeprom after initialising the client. fixes wrong/old settings being used in autonomous mode, which broke the wake on cec function * persist the new configuration when the hdmi port setting changed * cleaned locks around callbacks * always set controlled mode to false when unregistering the last client. fixes 30 second timeout before controlled mode gets deactivated * updated the cached device type setting properly when persisting new settings. correct return value from WriteEEPROM(). lock a mutex when updating the state * LibCecSharp: set the primary LA in CecLogicalAddresses -- Pulse-Eight Packaging Tue, 25 Jul 2012 13:05:00 +0100 libcec (1.7.2-1) unstable; urgency=low * changed/added: * display a warning message if libCEC was not compiled with adapter detection for the target platform * panasonic: added a vendor command for panasonic that will enable routing of some more buttons on the remote (guide, text, ...) * standby command won't be forwarded more than once every 10 seconds * added vendor ids for Akai, AOC, Benq, Daewoo, Grundig, Medion, Sharp and Vizio * cec-client: don't display debug output by default in 'cec-client -l' * interface changes: * added a callback for clients that is called when a source is (de)activated, so the client can respond to this action * added cec_command::PushArray() * fixed: * command forwarding. fixes player not going into standby mode * missing virtual keyword in CCECCommandHandler:: GetReplacementDeviceType() * replace the handler (if needed) in GetHandler() * reply with abort reason 'invalid operand' to vendor commands that we don't understand * changed all Handle...() commands to return a cec_abort_reason and send the correct abort reason to the initiator as a response to directly addressed messages * changed 'couldn't change the ackmask: the connection is closed' into a debug message * don't send active source commands when the physical address is invalid or unknown * set the power status of a device to 'powered on' after it sends a stream path change. can save an unneeded power state update request * removed dupe code around delayed activate source commands. check for delayed active source commands every 5 seconds instead of 15 seconds. * panasonic: reset m_bPowerUpEventReceived in CVLCommandHandler when the device lets us know it went into standby mode. fixes possibly failed active source switches after it succeeded once * panasonic: fixed delayed source switch for panasonic * panasonic: mark the tv as powered up once it sends the audiomode request * set the physical address of each device controlled by a CCECClient if it's valid * Windows could get stuck in a loop in case there an error occurred while reading registry entries * ABI fixes (binary compat with v1.2 for Windows and v1.5.2 for others) * replace the handler directly after getting the vendor id of a device when registering a client * copy the class member values of the old handler when creating a new command handler, or a delayed activate source will get lost when the handler is switched * cec-client: wrong client version * Makefile cleanups. don't link cec-client and cec-config against libudev and liblockdev * pin libcec to the same version as libcec1 * LibCecSharp: update the local configuration after connecting * LibCecSharp: better handling of callbacks -- Pulse-Eight Packaging Wed, 27 Jun 2012 02:06:00 +0100 libcec (1.7.1-1) unstable; urgency=low * changed/added: * added physical address detection via ADL for AMD graphics cards * attempt to get the edid from nvidia's graphics card driver on linux via /proc/acpi/video/NGFX/HDMI/EDID * attempt to get the PA from the registry on windows if we fail to get the physical address from the display driver * changed the order in CCECClient::SetPhysicalAddress() so it first checks whether a PA override is set in libcec_configuration.iPhysicalAddress, then checks whether the address can be detected, and if both failed it'll use the HDMI port + base device setting * cec-client: only active the source when reconnecting if libcec was the active source before closing the connection * platform: added tcp server sockets for posix * interface changes: * libcec_configuration.bAutodetectAddress is now read-only, and will be set to 1 by libCEC if the PA was autodetected * LibCecSharp: don't use an int but a CecUserControlCode in a CecKeypress * fixed: * don't unregister clients in CLibCEC when disconnecting, but only in CCECProcessor. fixes reconnect after close * MSGCODE_TIMEOUT_ERROR is a response to a transmission * retry 'activate source' every 10 seconds if it failed * don't respond with a poll from the broadcast address when receiving in CSLCommandHandler::HandleDeviceVendorId(), but use the primary LA of the client as source instead * hold a lock when changing the ackmask in CUSBCECAdapterCommunication::Open * don't respond with a feature abort to opcode play messages. bugzid: 873 * get the vendor id of the TV before allocating logical addresses, so we can determine if the TV supports the requested device type directly * TransmitImageViewOn() and TransmitActiveSource() always returned true, even if sending the command failed, so the retry for failed source activations was never triggered * open libcec.so.1 instead of libcec.so in cecloader.h. credits @coling. github issue #30. * fixed missing firmware version and build date in cec-client -l / GetDeviceInformation() -- Pulse-Eight Packaging Sun, 10 Jun 2012 13:39:00 +0100 libcec (1.6.1-5) unstable; urgency=low * synced /debian directory with the one in precise (with a couple of changes) * changed/added: * serial port locking on linux * cec-client: added -m/--monitor startup options, which will start a monitor-only client. use 'mon 0' to switch to a normal client * display an alert message when the firmware of the adapter can be upgraded * added CEC 1.4 opcodes * send a feature abort again for all unhandled commands * refactored CLibCEC so a client registers itself within CCECProcessor, which then allocates one or more logical addresses for it. * interface changes: * added a new setting, bMonitorOnly, which will start a monitor-only client * fixed: * ensure that we don't crash out when trying to stop a thread that hasn't been started yet * don't send a 'disconnected' alert when the close method is called * use the correct source when transmitting an abort message as a reposonse to a vendor command with id * removed statics * check the client version, not the server version in libcec_configuration::operator==() * cec-config: fix physical address detection * LibCecSharp: fixed buffer overrun when copying libcec_configuration. fixes crash when trying to save the configuration in the config gui. -- Pulse-Eight Packaging Mon, 14 May 2012 22:39:00 +0100 libcec (1.6.1-2) unstable; urgency=low * Build depends on pkg-config. (Closes: #669919) * libudev-dev only optionally needed for Linux. -- Andres Mejia Sat, 21 Apr 2012 19:03:19 -0400 libcec (1.6.1-1) unstable; urgency=low [ Mario Limonciello ] * New upstream version (LP: #982272) [ Andres Mejia ] * New release fixes build failure with GCC-4.7. (Closes: #667241) * Bump to Standards-Version 3.9.3. -- Andres Mejia Sat, 21 Apr 2012 00:02:08 -0400 libcec (1.3.2-3) unstable; urgency=low * Make dpkg-source options default for packaging. -- Andres Mejia Tue, 10 Jan 2012 18:12:57 -0500 libcec (1.3.2-2) unstable; urgency=low * Add options to pass to dpkg-source. -- Andres Mejia Sun, 08 Jan 2012 22:59:34 -0500 libcec (1.3.2-1) unstable; urgency=low * Initial release. (Closes: #655143) -- Andres Mejia Sun, 08 Jan 2012 15:36:49 -0500 libcec (1.6-3) unstable; urgency=low * changed/added: * cec-client: show the firmware build date if available in cec-client -l * cec-client: don't activate the source when starting * cec-client: group up the output of the 'scan' command, and add the currently active source to the output * log the libCEC version in the 'connected to the CEC adapter' log entry, and add the firmware build date to the line if it's available, so all relevant version info is available in 1 log line. * async writes for CUSBCECAdapterCommunication. less locks and polls, more speed * added 'make docs' target, that updates the doxygen documentation * interface changes: * added operator == and != for libcec_configuration * added GetResponseOpcode(cec_opcode opcode) to cec_command * added the firmware build date to libcec_configuration, so it can be displayed by the client too. * added static CLibCEC::Alert() method and CEC_ALERT_CONNECTION_LOST value * added a callback to handle menu state changes. if the callback method returns 1, then the change is processed by the CCECBusDevice too. if 0, then the CCECBusDevice will always have menu state 'activated', so keypresses are routed. bugzid: 724 * added a default menu language to libcec_configuration and set this language for devices controlled by libcec. bugzid: 69 * fixed * CCECProcessor::IsActiveSource() - TV was never checked * don't call the deprecated SetActiveView() method in cec-client * request the active source if unknown in CCECProcessor::GetActiveSource() * don't try to match a device with PA 0xFFFF. * don't change the power status of a device when changing the stream path * don't set the power status to 'powered off' when marking the source managed by libcec as inactive, or the tv will might send a power control keycode when making it active again, potentially shutting down the system * potential segfault in CCECProcessor::GetDeviceByPhysicalAddress() * stream path changes when changed to the TV source (PA 0) * clear the unsupported features list in CCECBusDevice::ResetDeviceStatus() * never mark vendor commands as unsupported (only some may be unsupported), as well as some others that should never be marked unsupported * don't retry in CCECCommandHandler if the command has been marked as unsupported * don't request the PA of devices when handling an incoming CEC command, or it'll block things while waiting for a response. if that response never comes, or comes late, then other incoming commands will be timed out before they are handled * optimisation - strip unneeded virtual keywords from top level implementations * use the vlcommandhandler for the primary device that is handled by libCEC when a panasonic tv is detected, so delayed activate source commands are using the correct handler. bugzid: 723 * set the power status of device controlled by libCEC to CEC_POWER_STATUS_ON instead of IN_TRANSITION_STANDBY_TO_ON. reset the device status of a device if it was detected as removed. bugzid: 755 * potentially uninitialised values in cec_command * delay the 'active source' command for panasonic, until the vendor command that reports that the TV is powered on has been received. bugzid: 723 * only respond to Give Physical Address with Report Physical Address. bugzid: 592 This fixes several reports of the TV improperly switching to the libcec device after it has previously switched to another source. Fix confirmed with Panasonic and also reported to be an issue with Samsung and Philips. * check whether callback methods are set to a valid ptr * number of retries for polls * win32: fix build in paths with spaces. bugzid: 730 * LibCecSharp: free the alert GC callback when cleaning up * the wrong setting was being read when powering on devices * close the connection when a comm error was detected, and notify the client via an alert * don't segfault when calling ThreadsWait() without a valid thread * lib/platform: fixed memleak * leak in CCECAdapterMessageQueue::Write * don't send commands if we know them to be unsupported. bugzid: 725 -- Pulse-Eight Packaging Wed, 18 Apr 2012 11:30:00 +0100 libcec (1.6-2) unstable; urgency=low * fixed: * fixed typo in CUSBCECAdapterCommands::RequestSettings() that prevented the settings from being read. the settings were still written, but never read when bGetSettingsFromROM = 1. -- Pulse-Eight Packaging Wed, 18 Apr 2012 11:30:00 +0100 libcec (1.6-1) unstable; urgency=medium * changed/added: * full firmware V2 support * -o/--osdname argument for cec-client to set a custom osd name * added the firmware version to cec-client's -l / --list-devices command. bugzid: 631 * added power on command for Samsung AVR devices. bugzid: 361 * added buttoncode for 'channels list' on Samsung (0x96) * don't check for the windows ddk when a prebuilt driver installer is present * respond to Get Menu Language. bugzid: 547. In the event that the menu language is undefined in libcec (currently the default), the response will be a feature abort. * interface changes: * added the firmware version to libcec_configuration (read-only). bumped server version to 1.6.0. fixed 'unknown server version' message on startup. bugzid: 631 * added a new setting to control whether to put the TV in standby when the player is put in standby. added some missing bits (version numbers, config) to LibCecSharp. bugzid: 558 * added an alert callback. bugzid: 462 * added bShutdownOnStandby to libcec_configuration. bugzid: 660. This setting tells the client to shutdown when the TV switches off and is complimentary to bPowerOffOnStandby, which tells the PC to suspend. They are kept separate to maintain backwards compatibility. * fixed * gcc 4.7 compilation * poll doesn't have an opcode. bugzid: 591 * wait for MSGEND when data was received when opening the connection. bugzid: 536 * mark the correct device as active source after a stream path change. if the new address is not found, but the old address is, then mark the old address as inactive. fixes TV switching back to the old active source when it scans for devices. bugzid: 592 * ensure that the vendor ID is sent before trying to activate any SL device bugzid: 574 * fixed possible crash when in CLibCEC::IsLibCECActiveSource() when libCEC doesn't know which device is the active source. bugzid: 479 * correct handling CEC_USER_CONTROL_CODE_POWER. This ensures that the power code always operates as a toggle, depending on the current state, and that SetCurrentButton is always called for a valid user control code. bugzid: 570 * frequency wasn't checked in GetTimeMs(), leading to incorrect wait times on some windows systems * refactored USB adapter communication. less locks, shorter locks, added documentation, lots of clean ups and no more incoming messages that are skipped * the destructor of CSerialSocket didn't call Close() * added guards in CSerialPort * reset m_socket to INVALID_SERIAL_SOCKET_VALUE after closing the connection * always wait for thread exit in CThread's desctructor * crash on exit after GetDeviceInformation() * check whether the destination is valid before setting anything in m_bWaitingForAck. fixes heap corruption and crash on exit. bugzid: 479 * bUseTVMenuLanguage from libcec_configuration wasn't copied in SetConfiguration(), so this setting was reset to the default value (enabled) every time. bugzid: 617 * request the vendor id of a device if needed when the device status is changed into 'present'. bugzid: 361 * give priority to messages from the TV. removed the global lock in CCECProcessor when sending. this is no longer needed. bugzid: 238 * add some bounds checking to the HDMI port number. bugzid: 508 * fixed usbser.sys copying in the driver .INF. bugzid: 503 * only update the physical address when it has actually changed. bugzid: 672 * moved the static variables in os-threads from the header to a separate cpp file, or it could lead to problems when included multiple times * don't send an active source command when the physical address couldn't be set, or it might confuse other CEC devices * serial socket timeouts. bugzid: 654 * fixed possible crash when trying to request a vendor id of a device when the address of libCEC isn't known yet. bugzid: 654 * extra guard so no commands are transmitted without a valid initiator. bugzid: 654 * moved the timed ping to a separate thread. bugzid: 654 * persist settings directly when they're changed, only persist settings that actually changed, only instruct the device to persist the settings in eeprom when something changed, and don't persist settings on exit. bugzid: 715 * cec-config-gui: persist settings both in the eeprom and in the settings xml file * validate the input in CCECProcessor::IsActiveSource(). fixes potential crash when the active source isn't known. bugzid: 671 -- Pulse-Eight Packaging Mon, 16 Apr 2012 18:03:00 +0100 libcec (1.5-4) unstable; urgency=low * changed/added: * OS-X installation requirements and pointer * full v2 firmware support: * ping the adapter every 15 seconds. bugzid: 541 * added v2 msgcodes. bugzid: 543 * implemented the write methods for the v2 configuration. bugzid: 543 * included the logical addresses in the persisted configuration for v2. bugzid: 543 * persist the configuration before closing the connection. only try to persist the configuration when talking to a v2 firmware. bugzid: 543 * added GetSetting() to CUSBCECAdapterCommunication. bugzid: 543 * read the persisted settings from the ROM, and update it in libcec_configuration if found. bugzid: 543 * cec-client: set bGetSettingsFromROM to 1 in cec-client. bugzid: 543 * cec-client: only read persisted EEPROM settings when -r or --rom is provided as cmdline arg. bugzid: 543 * call SetControlledMode(false) as last command when closing the connection in v2. bugzid: 542 * initial FreeBSD support: simply try to use ttyU* * fixed: * set controlled mode and retry to send the previous command if it failed with MSGCODE_COMMAND_REJECTED * m_iLineTimeout was never initialised and used. fixes MSGCODE_REJECTED when transmitting a message and incorrect line timeouts being used * mac configure compile bugzid: 157 * cec-config-gui: fixed application exit when the user clicked 'no' when asked to reconnect. bugzid: 556 * only wait for multiple 'command accepted' response when sending a transmit command, and only to 1 in other cases. bugzid: 543 * set the correct logical address mask before switching to autonomous mode. bugzid: 543 * re-added SetLineTimeout(). bugzid: 543 * CUSBCECAdapterCommunication::SetControlledMode checked for the wrong sent state * os-x: don't add 0.5 before dividing in GetTimeMs() * os-x: struct timespec now values weren't set correctly -- Pulse-Eight Packaging Fri, 16 Mar 2012 10:12:00 +0100 libcec (1.5-3) unstable; urgency=low * fixed: * OS-X compilation * default to firmware version 1 after 3 tries. some versions didn't send a version. * fixed cec-config win32 compilation -- Pulse-Eight Packaging Sat, 03 Mar 2012 15:21:00 +0100 libcec (1.5-2) unstable; urgency=low * changed/added: * added Toshiba's vendor id, and set the device ID of the primary device to Toshiba's and transmit it when starting * lock in SyncedBuffer * added a timeout to StopThread() * also add commands to unsupported features when receiving CEC_ABORT_REASON_REFUSED * cec-config-gui: set cbPortNumber enabled when the physical address override isn't checked instead * cec-config-gui: added support for the new 'send inactive source' setting * interface changes: * added an 'send inactive source' option to libcec_configuration, only supported by client/server 1.5.1 and up. bugzid: 439 * added a command to the interface to start the bootloader directly, without going through all checks. bugzid: 218 * LibCecSharp: implemented support for the new 'send inactive source' setting * fixed: * don't send an updated configuration when libCEC hasn't been initialised fully. bugzid: 459 * don't send an updated configuration back when initialising. let the client call the GetCurrentConfiguration() method. bugzid: 459 * configuration updates from libCEC. bugzid: 459 * fixed accidental double deref. the method parameter already does that. github #24 * use CLOCK_MONOTONIC for timing info, since gettimeofday is affected by ntp and by manually adjusting the system time * the timeout value of pthread_cond_timedwait has to be referenced to CLOCK_REALTIME * don't add data to the input buffer in CUSBCECAdapterCommunication before it's fully initialised * fixed return value of CUSBCECAdapterCommunication::ParseMessage(). fixes messages not being parsed in certain occasions * don't try to transmit when the processor is being stopped * set the server version in the LibCEC's constructor, since this is checked by clients. fixes 'invalid libCEC version' popup when inserting the adapter * don't wait for the full timeout to pass in CCECProcessor:: OpenConnection(), but retry to connect 2 times. fixes 'port busy' errors when initialising libCEC. bugzid: 436 * use the correct Sleep() method in CCECProcessor::OpenConnection(). the thread hasn't been started there yet, so the sleep wasn't working. fixes 'device or resource busy' when plugging in the adapter. bugzid: 436 * check the adapter ping and firmware before starting the reader thread, so we really leave the com port alone for a second when it fails because of a busy error. bugzid: 436 * ensure that the connection is really closed before retrying to connect. bugzid: 436 * LibCecSharp: recreate the delegates properly when (re)connecting to LibCecSharp -- Pulse-Eight Packaging Tue, 28 Feb 2012 21:19:00 +0100 libcec (1.5-1) unstable; urgency=low * changed/added: * a new libcec_configuration structs, which allows the client app to pass a number of new options, like waking multiple devices on startup, overriding the vendor id, etc. * a new configuration GUI for Windows (.NET). this allows you to set libCEC's configuration for XBMC in a convenient GUI. * a CLI configuration tool (unfinished) for other platforms. will be finished in an update. * implemented power up for LG devices other than a TV * win32: don't install libcec to the system directory by default, and delete previous (testing) copies if present * wait for multiple responses, not just for one at a time * set the ackmask to 0 when closing the connection * don't send 'image view on' when calling SetActiveSource() * don't send power on, acitve source and standby commands by default in cec-client * platform: added CTryLockObject * platform: added an Init() method in CTimeout, so it can be reset * interface changes: * added a new initialiser method: CecInitialise()/cec_initialise(), that accepts a "libc_configuration" struct as parameter. this way, the signature of the init method can stay the same when adding new options. in LibCecSharp, the new method appears as a new constructor. * added CanPersistConfiguration()/cec_can_persist_configuration() * added PersistConfiguration()/cec_persist_configuration() * added GetCurrentConfiguration()/cec_get_current_configuration() * added SetConfiguration()/cec_set_configuration() * added GetLogicalAddresses()/cec_get_logical_addresses(): returns the list of addresses controlled by libCEC * added RescanDevices()/cec_rescan_devices(): lets libCEC force polls to all logical addresses. * added a callback that is called when libCEC's configuration changed. * moved the autodetect address api call to libcec_configuration. only send power up commands to non-tv devices when the power state is not on/transition->on. let players call the power up/power down command. * return the anynet return keycode directly instead of translating it to 'return' for v1.5.0+ clients * extracted CecSharpTypes.h in LibCecSharp. LibCecSharp is now in the CecSharp namespace * include the local cectypes.h in cec.h and cecc.h instead of system wide * deprecated GetLibVersion() methods. use libcec_configuration instead * removed deprecated CECCreate() method * fixed: * fixed a lot of LG specific issues * fixed OS-X compilation. credits: Dustin Cooper * fixed a couple of possible deadlocks, e.g. when closing the connection while receiving data * cleaned up existing code * libCEC no longer puts incoming data in a fifo buffer, but tries to process it directly, which fixes issues like libCEC blocking processing new commands while waiting for transmission acks. * 'unsupported command' marking in CCECBusDevice * ensure that the ackmask is always set to 0 when closing the connection and that the call doesn't block the Close() call * don't try to read or write in CUSBCECAdapterCommunication when the connection has been closed * LibCecSharp: added quotes to the linker statement for libcec.lib. fixes compilation in paths with spaces. closes #20 * LibCecSharp: set the callback methods in libcec to NULL before closing the connection, since these might already have been destroyed in .NET * LibCecSharp: delete the internal callback struct when closing the connection * LibCecSharp: pass correctly formatted logical address lists * ensure that the vendor id is requested first when requesting info from a device, so we are using the correct handler * keep the 'busy state' of the command handler in CCECBusDevice * poll the next device when the current is handled by libCEC. * check the vendor id of a device before sending a power on command * ensure that there always is at least one device type set * transmit a keypress and key release as power on command when the target device isn't the TV * don't do a full reinit when not needed * fix active source switches for the standard CEC implementation * ensure that we don't send data to ourself * check whether the port is open, not whether libCEC is initialised in Transmit() * platform: fixed return value from CCondition::Wait() * platform: don't broadcast but wake one thread in CProtectedSocket::MarkReady() * platform: include stdint.h in windows/os-types.h instead of typedef'ing ints * platform: fixed tcp socket error handling and return value. * platform: fixed return values of socket operations in lib/platform * platform: added predicate in CCondition * deleted the signed driver from the tree, since that doesn't work. let the installer create a new signed driver on the production build system -- Pulse-Eight Packaging Mon, 19 Feb 2012 01:04:00 +0100 libcec (1.4-4) unstable; urgency=low * changed/added: * added tcp client sockets to lib/platform (WIP) * clean up lib/platform * added: set controlled mode on after opening a connection to the adapter (for firmware v2) * added an IAdapterCommunicationCallback interface an use a callback method to pass newly received cec_commands to CCECProcessor * added "driver only" and "driver + libcec" sections to the installer * added a signed driver * created a separate driver installer, which is included in the libCEC installer. uninstalls the old unsigned version of libCEC and the driver when it's found and installs the new one in C:\Program Files(x86)\ Pulse Eight\USB-CEC Adapter. * don't sign development binaries with a temporary key. devs can do that themselves when they want LibCecSharp in the GAC * interface changes: * added SetStreamPath()/cec_set_stream_path_logical()/ cec_set_stream_path_physical() to the interface, to send a "set stream path" command over the CEC bus, used to activate another source. * fixed: * transmit 'menu state activated' after the stream path has been set to a device that is handled by libCEC. should fix remote commands not working properly on Panasonic TVs and after another source has been active. bugzid: 233 * set the ackmask to 0x0 when trying to find a free logical address * keep trying to reconnect to the com port until the timeout runs out. bugzid: 230 * wait 500 ms before trying to retransmit a command. always wait for the result of a transmission in CCECCommandHandler::Transmit() * receive and send full cec_commands, not CCECAdapterMessages in CAdapterCommunication. extract an IAdapterCommunication interface. fixed potentially missed data in CAdapterCommunication * close and delete the connection when the processor thread ends. fixes reconnect after standby (access denied / connection already opened) * don't replace handlers when not initialised, or the primary device's logical address isn't known yet, which can lead to crashes. don't call handlers directly in CCECProcessor without holding a lock on them * fixed possible crash when command handler were switched while it was being used * keep the mutex locked when calling ReplaceHandlers() in CCECProcessor * win32: also timeout when data is received in SocketRead() * win32: fixed < vista runtime and compilation * win32: ping the adapter and request the firmware version in CUSBCECAdapterCommunication instead of CCECProcesssor. fixes failed libCEC inits * win32: fixed crash on exit in LibCecSharp -- Pulse-Eight Packaging Mon, 6 Feb 2012 14:26:00 +0100 libcec (1.4-3) unstable; urgency=low * fixed: * try to ping the device and grab the firmware version until the connect timeout runs out. fixes failed reconnect after standby, when the adapter is still being initialised -- Pulse-Eight Packaging Thu, 27 Jan 2012 13:05:00 +0100 libcec (1.4-2) unstable; urgency=low * changed/added: * added a firmware flash script for linux. usage: ./support/cec-flash-device.sh /path/to/firware.hex * refactored threading/locking - added windows native instead of pthread-win32, so we can compile native x64 too * check whether the adapter responds when connecting to it and report the firmware version of the adapter after connecting * moved create-installer.cmd to support/ * completely removed AM_SILENT_RULES * interface changes: * compile LibCecSharp against .NET framework 2.0 and sign the assembly * fixed: * only the key release events were sent, not keypresses, which appeared in clients as laggy keypresses * fixed reconnect after standby * wait for active tranmission to finish when opening a connection to the adapter. fixes initialisation errors * set the default transmit timeout properly instead of using 0 * fixed possible deadlock because of a negative timeout in CAdapterCommunication::WaitForTransmitSucceeded() * fixed error message in cec-client (unable to open the device on port ...) * exit cec-client after entering bootloader mode * MSGCODE_START_BOOTLOADER doesn't respond with MSGCODE_COMMAND_ACCEPTED -- Pulse-Eight Packaging Thu, 25 Jan 2012 23:28:00 +0100 libcec (1.4-1) unstable; urgency=low * changed/added: * added the vendor id for Sony * always refresh the power state of a device when it hasn't been updated for 30 seconds * do silent builds by default * interface changes: * added optional callback methods to libCEC. enable them by calling EnableCallbacks(ICECCallbacks *callbacks) / cec_enable_callbacks(ICECCallbacks *callbacks). after this method is called, the GetNext...() methods will not return any data * added the same callbacks to LibCecSharp. implement CecCallbackMethods and override the methods in there * fixed: * use the given timeout when trying to open a connection to the CEC adapter * resolved difference between method name in LibCECC.cpp and cecc.h. credits: Doug Johnson * don't transmit physical addresses while holding a lock in CCECProcessor * don't hold a lock when sending an active source message. * unload libCEC when the lib version is invalid * "unused" warnings suppressed -- Pulse-Eight Packaging Thu, 12 Jan 2012 19:06:00 +0100 libcec (1.3-3) unstable; urgency=low * changed/added: * place in libudev include in an extern C block. fixes compilations on older libudev versions (e.g. on Hardy). closes #2. credits @fbuenemann * added pkg-config to the dependencies list. issue #15 * updated README. closes #14 * added a script that tests some basic functions of the CEC adapter: /support/cec-test-device.sh * fixed: * don't make libCEC the active source when changing the physical address. don't send active source messages on startup, when not the active source fixes unwanted device power ups * replace the command handler directly after receiving a changed vendor id. change the primary type from recording device to playback device for panasonic TVs * don't send a deck status update when sending an active source message for panasonic TVs * only switch handlers once when using the generic handler * don't switch handlers when not needed * hold a lock in CCECProcessor::SetHDMIPort() * don't send deck status updates when sending an active source message by default -- Pulse-Eight Packaging Thu, 3 Jan 2012 22:48:00 +0100 libcec (1.3-2) unstable; urgency=low * changed/added: * copy libcec.dll to the XBMC installation dir when XBMC is found * disable background polling. let the client request this info when needed * update the power status of a device when it's set to CEC_POWER_STATUS_IN_TRANSITION_STANDBY_TO_ON * wait for the correct response when requesting something, not just any response * don't keep trying the same command/request after receiving a feature abort message * interface changes: * change the previously unused boolean parameter in volume control methods to bSendRelease, and only send a key release when it's true. default to true * fixed: * don't send the power up/down keypress to listeners when in the initial device state (powered off). fixes unexpected shutdown in XBMC when connecting to the CEC adapter. * send a 'menu state activated' command when starting up. bugzid: 113 * don't wait for a response when not needed * don't hold a lock while waiting for a response. fixes failed libCEC inits and slow responses * don't replace a command handler when it's being used. fixes possible crash on startup * don't try to do anything before the processor thread has started * don't transmit active source messages when the physical address is still 0xFFFF * don't init the default handler before the physical address is known -- Pulse-Eight Packaging Thu, 29 Dec 2011 03:05:00 +0100 libcec (1.3-1) unstable; urgency=low * changed/added: * make libudev optional. if libudev is not available on linux, adapter autodetection will also not be available. fixes compilation on Hardy/ATV1 * added a C++ CLR wrapper for libCEC, so libCEC can be used by any .NET language * added vendor support for LG * added vendor support for Philips * added vendor support for Yamaha * added vendor support for Onkyo * added 'scan' command to cec-client, that displays info about devices on the bus. made all ToString() methods available on the interface. * added '-s' or '--single-command' to cec-client. starting cec-client with this parameter executes a single command in cec-client and does not power on devices on startup and power them off on exit. this way, you can use cec-client in a shell script. since there's some handshaking involved at startup, this is not very fast. to execute a command and only display the result and any error/warning, execute it with RESULT=`echo command | cec-client -s -d 3` (on linux/osx, win32 batch files are a bit different) * added HDMI port ('-p' or '--port') and base device ('-b' or '--base') to cec-client's parameters * handle image view on and text view on * handle routing information and report physical address opcodes * handle audio status updates * send ping and bootloader commands via the output queue * scan the CEC bus for devices when starting libcec * pass all commands that are directed at libcec to listeners * interface changes: * added GetActiveSource()/cec_get_active_source() * added IsActiveSource()/cec_is_active_source() * added GetDevicePhysicalAddress()/cec_get_device_physical_address() * added GetDeviceOSDName()/cec_get_osd_name() * added SendKeypress()/cec_send_keypress() and SendKeyRelease()/ cec_send_key_release() * added VolumeUp()/cec_volume_up(), VolumeDown()/cec_volume_down(), MuteAudio()/cec_mute_audio() * added GetActiveDevices()/cec_get_active_devices(), IsActiveDevice()/ cec_is_active_device(), IsActiveDeviceType()/cec_is_active_device_type(). * added SetHDMIPort()/cec_set_hdmi_port(). devices are now detected on load and when a device with the same physical address is detected, libcec will use the selected hdmi port on that device. should fix source selection on other devices, like an amplifier * added a hook in libcec for physical address autodetection * fixed: * don't request the physical address from the tv (it's always 0x0000) * set the proper ackmask before doing anything else * don't unlock the transmit mutex in CCECProcessor while waiting for an answer * fix device polling * refactor CEC read/write. keep a single lock for all writes, not one per device * ignore other data while waiting for a response * retry failed tranmissions * don't delete a message before it's been sent when starting the bootloader * or when sending a ping * fixed possible segfault when switching the command handler after a vendor * id changed * handle audio opcodes correctly * inactive source should be directly addressed at the TV * don't report a changed physical address when it hasn't changed * routing information sets the stream path, not the physical address * don't scan the whole bus in CCECProcessor::IsActiveDeviceType() * don't request the vendor id from devices that are handled by libcec * mark device status as present when a command was received from a device * always send a power on command in CCECBusDevice::PowerOn() * don't request updates statusses unless needed * report physical address sends 3 parameters, not 2. check whether the device type is correct * devices can send vendor commands from other vendors, so don't assume the device is of a certain vendor when it sends commands with a vendor id * thread safety fixes. bugzid: 19 * clear any previous input when opening a connection to the adapter. bugzid: 54 * use the correct source address in CSLCommandHandler::HandleVendorCommand() * uncorrected CEC_OPCODE_DEVICE_VENDOR_ID. closes #5 * renamed enum methods. fixes potential macro collision with isset(). thanks davilla * don't change the active device when receiving stream path changed messages. fixes wrong source selection when powering after the TV. -- Pulse-Eight Packaging Fri, 09 Dec 2011 12:16:00 +0100 libcec (1.2-1) unstable; urgency=low * bugfixes: * pass the deck_control command to libcec listeners * check whether the initiator is valid in CCECProcessor::ParseCommand(). fixes possible segfault when parsing invalid data -- Pulse-Eight Packaging Sat, 12 Nov 2011 13:36:00 +0100 libcec (1.1-3) unstable; urgency=low * fixed return value in CCECProcessor::SetStreamPath(), which prevented active source and menu state from being sent -- Pulse-Eight Packaging Fri, 11 Nov 2011 23:36:00 +0100 libcec (1.1-2) unstable; urgency=low * forgot to update the headers to v1.1 -- Pulse-Eight Packaging Fri, 11 Nov 2011 18:56:00 +0100 libcec (1.1-1) unstable; urgency=low * interface changes: * added logical address autodetection and let libcec handle multiple types simultaniously. for logical address autodetection, you have to use CECInit()/cec_init_typed() instead of CECCreate()/cec_init() * added SetActiveSource()/cec_set_active_source() to the interface. deprecated SetActiveView()/cec_set_active_view() * added SetMenuState() * added PollDevice()/cec_poll_device() * removed duplicate method SetActiveSource() / SetActiveView() * added SetDeckControlMode() and SetDeckInfo() * fixed: * added vendor detection for panasonic and broadcast active view and set menu state when a panasonic device sets the stream path. thanks for the pointer cptcoconut. * added vendor code for pioneer * osd string is 13 chars max. don't send more * send the correct cec version for each device * switch to panasonic specific cec implementation if a panasonic device was detected * send the correct device type in TransmitPhysicalAddress() * send a reply from the correct device when the stream path is requested * opcode 0x80 means the stream path changed, not the physical address * don't poll for a vendor ID in monitoring mode * fixed parameter parsing in SetVendorId() * buffer up commands that are received while waiting for an ack. only send 'active source' message for the actual active source * win32: prepend the com port path with '\\.\', so com ports > 9 can be accessed. thanks smolesen * audio systems cannot be an active source, so don't transmit active source message from this device * only send 'active source' when powered on * only set the osd name for the primary device. use default values for others * increase physical address with 0x100 per device * win32: removed unneeded afxres.h include in the resource files, which is not present when using studio express. thanks Ghuron * fixed C headers * mark the active source as active and other devices as inactive * set the power status to 'on' when receiving CEC_USER_CONTROL_CODE_POWER * transmit the menu state as (active) when the stream path is set * changed: * changed copyright of boblight files with permission of the original author * partial handling of audio related opcodes * more consistent log messages * set a device type and name for each CCECBusDevice * keep a power and menu state per device * renamed all Broadcast...() and Report...() methods to Transmit...() * renamed SetOSDString() to TransmitOSDString() * changed debug level of 'did not receive ack' from error to debug * only set the power status to 'on' for the primary device * moved method decriptions from cecc.h to cec.h * only send a power on command when a device isn't on already and set the power state to CEC_POWER_STATUS_IN_TRANSITION_STANDBY_TO_ON while powering on * handle CEC_OPCODE_STANDBY * handle CEC_OPCODE_ACTIVE_SOURCE * always start in standby mode and let the tv (or other device) send the power on command * renamed the last few enums * handle deck related opcodes. * added TransmitVendorId(), but only transmit the id if it's not set to 'unknown' -- Pulse-Eight Packaging Fri, 11 Nov 2011 17:42:00 +0100 libcec (1.0-1) unstable; urgency=low * interface changes: * set lib interface version back to 1.0 and rename GetLibVersion() to GetLibVersionMajor() and GetMinVersion() to GetMinLibVersion() * added GetLibVersionMinor()/cec_get_lib_version_minor() and set the minor version number to 1 * fixed: * samsung's vendor specific remote keypresses don't send key releases. added call to AddKey() directly after the keypress * always reset the button press time in CLibCEC::AddKey() * always wait for a signal in CCECProcessor::Transmit() * changed: * drop shared_ptr and use a normal pointer. removed boost dependency -- Pulse-Eight Packaging Fri, 04 Nov 2011 00:14:00 +0100 libcec (0.8-2) unstable; urgency=low * added 'libboost-dev' to build deps -- Pulse-Eight Packaging Tue, 01 Nov 2011 23:31:00 +0100 libcec (0.8-1) unstable; urgency=low * interface changes: * added GetDevicePowerStatus()/cec_get_device_power_status() * added GetDeviceVendorId()/cec_get_device_vendor_id() * added GetDeviceMenuLanguage()/cec_get_device_menu_language() * added GetDeviceCecVersion()/cec_get_device_cec_version() * added SwitchMonitoring()/cec_switch_monitoring() to the interface. when monitoring is enabled, the device will only log the data it received, but will not respond to any message * removed timeout parameter in Transmit() and included the ack timeout in the cec_command struct * made the vendor id -> vendor name translation available * made CEC_LOG levels powers of 2 * introduced CEC_LOG_TRAFFIC log level * fixed: * set the correct ackmask on startup * wait for ack while keeping a lock * wait for the processor thread to start before continuing on startup * wait for messages to be transmitted before continuing in CCECProcessor::Transmit() * only set the logical address once when it has changed * correct source for broadcast messages * win32: create Release type installer * changed: * make all reads and write in CAdapterCommunication go through buffers. * poll for a vendor ID of connected devices and switch to a non-standard CEC implementation if needed. * added vendor detection of Samsung and LG devices * handle samsung remote command 'return' * cec-client: * added -la and --logical-address to the command line params * added -d and --log-level params to cec-client * added -sf and --short-log-file, which only log the actual messages, not the level and timestamp * added -f and --log-file parameters to cec-client * added option to change the log level to cec-client -- Pulse-Eight Packaging Tue, 01 Nov 2011 22:58:00 +0100 libcec (0.7-1) unstable; urgency=low * send a keypress with 0 duration when a key is pressed and with a duration set when it's released * added SetOSDString() to the interface (not supported by all tvs) * fixed: 'routing change' is a broadcast message. log routing changes, but don't send a 'set active view' message, so the active input won't be changed * log keypresses in the debug log * added 'pa' command to cec-client, to change the physical address * added SetPhysicalAddress()/cec_set_physical_address() to the interface, so the HDMI port number to use can be changed * fixed: put the message processing code from WaitForAck() in ParseMessage(). fixes missing incoming message logging of non-data messages when not waiting for an ACK * added 'txn' command to cec-client. same as 'tx', but doesn't wait for ACK before returning * fixed: set initiator and destination first in cec_command::push_back(). fixes 'tx' command in cec-client * fixed: keep trying to connect while iTimeout isn't reached (default 10 seconds). fixes exit with a 'permission denied' error when the device isn't ready yet. remove CEC_SETTLE_DOWN_TIME * fixed: don't call SetActiveView() when reporting the power status. fixes loop which causes some TVs to report failed connections * fixed: eom was not being parsed when receiving MSGCODE_FRAME_DATA. fixed. * fixed: add the device type as parameter when sending the physical address. thanks bobo1on1 * fixed: typo in libcec.pc.in * added optional strLib parameter to LoadLibCec(), so the location of the shared library can be specified * only link cec-client against ld. use AC_SEARCH_LIBS instead of AC_CHECK_LIB * use int instead of bool on the public C interface and remove stdbool.h include * renamed: CECExports.h => cec.h, CECExportsC.h => cecc.h, CECLoader.h => cecloader.h, CECTypes.h => cectypes.h * updated debian package. split up libcec and libcec-dev * fixed: changed to use dlopen instead of static linkage. shuffled headers a bit. bumped interface to version 7 * removed 'rt' from libraries. it's not needed (anymore) * fixed: reset the active view after a routing change. issue #1 * fixed: changed attached license to be GPLv2 instead of GPLv3 this was an error as libCEC is licensed GPLv2 not GPLv3 thanks @garbear * added contributors link -- Pulse-Eight Packaging Fri, 14 Oct 2011 17:34:00 +0200 libcec (0.6-1) unstable; urgency=low * bumped interface version to 6 * fixed packet output (reporting the OSD name correctly now) * refactored packet structs: split up in cec commands and adapter messages * fixed i/o timings * added Darwin support (thanks Davilla!) * fixed WaitForAck() * fixed possible deadlock when starting a new thread * implemented vendor id and device class parsing. full detection will follow * added "on" and "standby" commands to the test client * retransmit packets if needed * fix GetTimeMs() on linux * added timestamp to log messages -- Pulse-Eight Packaging Sun, 09 Oct 2011 15:15:00 +0200 libcec (0.5-1) unstable; urgency=low * bumped interface version to 5 * don't pass std::string and std::vector across the interface * fixed heap corruption crashes on windows * fixed some memory leaks * reset all structs to default values before doing with them -- Pulse-Eight Packaging Fri, 07 Oct 2011 22:00:00 +0200 libcec (0.4-3) unstable; urgency=low * fixed reconnect * fixed some threading related bugs * fixed deadlock on exit * fixed wrongly reported physical address -- Pulse-Eight Packaging Thu, 06 Oct 2011 00:19:00 +0200 libcec (0.4-2) unstable; urgency=low * fixed int parameter sizes and some signed/unsigned warnings * check whether m_port isn't NULL in ReadFromDevice * stop the processor thread and delete the CSerialPort instance on exit * added mutex in CSerialPort * fix segfault on exit * renamed libPlatform -> platform. * stuck everything from libCEC in the CEC namespace to avoid namespace pollution -- Pulse-Eight Packaging Tue, 04 Oct 2011 23:45:00 +0200 libcec (0.4-1) unstable; urgency=low * bumped interface version to 4 * timeout parameter removed from Close()/cec_close(). return type changed to void * added cec_destroy() method * removed timeout parameter from Transmit() * change the default argument of PowerOnDevices() to CECDEVICE_TV * removed PowerOffDevices(). use StandbyDevices() instead * removed obsolete methods from the interface * fixed bug: pthread_cond_wait was called without the mutex locked * fixed possible deadlock: don't send messages and wait for an ack with the mutex locked in CCECParser * created a separate reader thread and fixed the 'lock timeout' bug * testclient: use CECDEVICE_TV instead of the default argument (CECDEVICE_BROADCAST) for PowerOnDevices() and PowerOffDevices() -- Pulse-Eight Packaging Tue, 04 Oct 2011 00:48:00 +0200 libcec (0.3-1) unstable; urgency=low * added device detection support for Windows -- Pulse-Eight Packaging Sun, 02 Oct 2011 12:09:33 +0200 libcec (0.2-1) unstable; urgency=low * added a Close() method to the interface * Added CEC command that were received by the adapter in a buffer that can be read by a client with GetNextCommand()/cec_get_next_command(). added a 'help' command to the test client, that displays all available commands * Fixed setting the ackmask. deprecated SetAckMask()/cec_set_ack_mask(). use SetLogicalAddress()/cec_set_logical_address() instead. add 'la' command to the testclient to set the logical address of the cec adapter * Added optional logical and physical address parameters to LoadLibCec()/cec_init() on the interface. fixed wrongly placed namespace close tag in CECExports.h. updated interface documentation. bumped interface version to 2. * fixed hardcoded ackmask in SetAckMast(). set a shorter display name in the test client. the previous one was too long and being rejected -- Pulse-Eight Packaging Fri, 28 Sep 2011 01:33:00 +0200 libcec (0.1-1) unstable; urgency=low * Initial release v0.1 -- Pulse-Eight Packaging Wed, 28 Sep 2011 23:55:48 +0200