1 libcec (1.7.2-1) unstable; urgency=low
4 * display a warning message if libCEC was not compiled with adapter
5 detection for the target platform
6 * panasonic: added a vendor command for panasonic that will enable routing
7 of some more buttons on the remote (guide, text, ...)
8 * standby command won't be forwarded more than once every 10 seconds
9 * added vendor ids for Akai, AOC, Benq, Daewoo, Grundig, Medion, Sharp and
11 * cec-client: don't display debug output by default in 'cec-client -l'
14 * added a callback for clients that is called when a source is
15 (de)activated, so the client can respond to this action
16 * added cec_command::PushArray()
19 * command forwarding. fixes player not going into standby mode
20 * missing virtual keyword in CCECCommandHandler::
21 GetReplacementDeviceType()
22 * replace the handler (if needed) in GetHandler()
23 * reply with abort reason 'invalid operand' to vendor commands that we
25 * changed all Handle...() commands to return a cec_abort_reason and send
26 the correct abort reason to the initiator as a response to directly
28 * changed 'couldn't change the ackmask: the connection is closed' into a
30 * don't send active source commands when the physical address is invalid or
32 * set the power status of a device to 'powered on' after it sends a stream
33 path change. can save an unneeded power state update request
34 * removed dupe code around delayed activate source commands. check for
35 delayed active source commands every 5 seconds instead of 15 seconds.
36 * panasonic: reset m_bPowerUpEventReceived in CVLCommandHandler when the
37 device lets us know it went into standby mode. fixes possibly failed
38 active source switches after it succeeded once
39 * panasonic: fixed delayed source switch for panasonic
40 * panasonic: mark the tv as powered up once it sends the audiomode request
41 * set the physical address of each device controlled by a CCECClient if
43 * Windows could get stuck in a loop in case there an error occured while
44 reading registry entries
45 * ABI fixes (binary compat with v1.2 for Windows and v1.5.2 for others)
46 * replace the handler directly after getting the vendor id of a device when
48 * copy the class member values of the old handler when creating a new
49 command handler, or a delayed activate source will get lost when the
51 * cec-client: wrong client version
52 * Makefile cleanups. don't link cec-client and cec-config against libudev
54 * pin libcec to the same version as libcec1
55 * LibCecSharp: update the local configuration after connecting
56 * LibCecSharp: better handling of callbacks
58 -- Pulse-Eight Packaging <packaging@pulse-eight.com> Wed, 27 Jun 2012 02:06:00 +0100
60 libcec (1.7.1-1) unstable; urgency=low
63 * added physical address detection via ADL for AMD graphics cards
64 * attempt to get the edid from nvidia's graphics card driver on linux via
65 /proc/acpi/video/NGFX/HDMI/EDID
66 * attempt to get the PA from the registry on windows if we fail to get the
67 physical address from the display driver
68 * changed the order in CCECClient::SetPhysicalAddress() so it first checks
69 whether a PA override is set in libcec_configuration.iPhysicalAddress,
70 then checks whether the address can be detected, and if both failed it'll
71 use the HDMI port + base device setting
72 * cec-client: only active the source when reconnecting if libcec was the
73 active source before closing the connection
74 * platform: added tcp server sockets for posix
77 * libcec_configuration.bAutodetectAddress is now read-only, and will be set
78 to 1 by libCEC if the PA was autodetected
79 * LibCecSharp: don't use an int but a CecUserControlCode in a CecKeypress
82 * don't unregister clients in CLibCEC when disconnecting, but only in
83 CCECProcessor. fixes reconnect after close
84 * MSGCODE_TIMEOUT_ERROR is a response to a transmission
85 * retry 'activate source' every 10 seconds if it failed
86 * don't respond with a poll from the broadcast address when receiving
87 in CSLCommandHandler::HandleDeviceVendorId(), but use the primary LA of
88 the client as source instead
89 * hold a lock when changing the ackmask in
90 CUSBCECAdapterCommunication::Open
91 * don't respond with a feature abort to opcode play messages. bugzid: 873
92 * get the vendor id of the TV before allocating logical addresses, so we
93 can determine if the TV supports the requested device type directly
94 * TransmitImageViewOn() and TransmitActiveSource() always returned true,
95 even if sending the command failed, so the retry for failed source
96 activations was never triggered
97 * open libcec.so.1 instead of libcec.so in cecloader.h. credits @coling.
99 * fixed missing firmware version and build date in cec-client -l /
100 GetDeviceInformation()
102 -- Pulse-Eight Packaging <packaging@pulse-eight.com> Sun, 10 Jun 2012 13:39:00 +0100
104 libcec (1.6.1-5) unstable; urgency=low
106 * synced /debian directory with the one in precise (with a couple of changes)
108 * serial port locking on linux
109 * cec-client: added -m/--monitor startup options, which will start a
110 monitor-only client. use 'mon 0' to switch to a normal client
111 * display an alert message when the firmware of the adapter can be upgraded
112 * added CEC 1.4 opcodes
113 * send a feature abort again for all unhandled commands
114 * refactored CLibCEC so a client registers itself within CCECProcessor,
115 which then allocates one or more logical addresses for it.
118 * added a new setting, bMonitorOnly, which will start a monitor-only client
121 * ensure that we don't crash out when trying to stop a thread that hasn't
123 * don't send a 'disconnected' alert when the close method is called
124 * use the correct source when transmitting an abort message as a reposonse
125 to a vendor command with id
127 * check the client version, not the server version in
128 libcec_configuration::operator==()
129 * cec-config: fix physical address detection
130 * LibCecSharp: fixed buffer overrun when copying libcec_configuration.
131 fixes crash when trying to save the configuration in the config gui.
133 -- Pulse-Eight Packaging <packaging@pulse-eight.com> Mon, 14 May 2012 22:39:00 +0100
135 libcec (1.6.1-2) unstable; urgency=low
137 * Build depends on pkg-config. (Closes: #669919)
138 * libudev-dev only optionally needed for Linux.
140 -- Andres Mejia <amejia@debian.org> Sat, 21 Apr 2012 19:03:19 -0400
142 libcec (1.6.1-1) unstable; urgency=low
144 [ Mario Limonciello ]
145 * New upstream version (LP: #982272)
148 * New release fixes build failure with GCC-4.7. (Closes: #667241)
149 * Bump to Standards-Version 3.9.3.
151 -- Andres Mejia <amejia@debian.org> Sat, 21 Apr 2012 00:02:08 -0400
153 libcec (1.3.2-3) unstable; urgency=low
155 * Make dpkg-source options default for packaging.
157 -- Andres Mejia <amejia@debian.org> Tue, 10 Jan 2012 18:12:57 -0500
159 libcec (1.3.2-2) unstable; urgency=low
161 * Add options to pass to dpkg-source.
163 -- Andres Mejia <amejia@debian.org> Sun, 08 Jan 2012 22:59:34 -0500
165 libcec (1.3.2-1) unstable; urgency=low
167 * Initial release. (Closes: #655143)
169 -- Andres Mejia <amejia@debian.org> Sun, 08 Jan 2012 15:36:49 -0500
171 libcec (1.6-3) unstable; urgency=low
174 * cec-client: show the firmware build date if available in cec-client -l
175 * cec-client: don't activate the source when starting
176 * cec-client: group up the output of the 'scan' command, and add the
177 currently active source to the output
178 * log the libCEC version in the 'connected to the CEC adapter' log entry,
179 and add the firmware build date to the line if it's available, so all
180 relevant version info is available in 1 log line.
181 * async writes for CUSBCECAdapterCommunication. less locks and polls, more
183 * added 'make docs' target, that updates the doxygen documentation
186 * added operator == and != for libcec_configuration
187 * added GetResponseOpcode(cec_opcode opcode) to cec_command
188 * added the firmware build date to libcec_configuration, so it can be
189 displayed by the client too.
190 * added static CLibCEC::Alert() method and CEC_ALERT_CONNECTION_LOST value
191 * added a callback to handle menu state changes. if the callback method
192 returns 1, then the change is processed by the CCECBusDevice too. if 0,
193 then the CCECBusDevice will always have menu state 'activated', so
194 keypresses are routed. bugzid: 724
195 * added a default menu language to libcec_configuration and set this
196 language for devices controlled by libcec. bugzid: 69
199 * CCECProcessor::IsActiveSource() - TV was never checked
200 * don't call the deprecated SetActiveView() method in cec-client
201 * request the active source if unknown in CCECProcessor::GetActiveSource()
202 * don't try to match a device with PA 0xFFFF.
203 * don't change the power status of a device when changing the stream path
204 * don't set the power status to 'powered off' when marking the source
205 managed by libcec as inactive, or the tv will might send a power control
206 keycode when making it active again, potentially shutting down the system
207 * potential segfault in CCECProcessor::GetDeviceByPhysicalAddress()
208 * stream path changes when changed to the TV source (PA 0)
209 * clear the unsupported features list in CCECBusDevice::ResetDeviceStatus()
210 * never mark vendor commands as unsupported (only some may be unsupported),
211 as well as some others that should never be marked unsupported
212 * don't retry in CCECCommandHandler if the command has been marked as
214 * don't request the PA of devices when handling an incoming CEC command, or
215 it'll block things while waiting for a response. if that response never
216 comes, or comes late, then other incoming commands will be timed out
217 before they are handled
218 * optimisation - strip unneeded virtual keywords from top level
220 * use the vlcommandhandler for the primary device that is handled by libCEC
221 when a panasonic tv is detected, so delayed activate source commands are
222 using the correct handler. bugzid: 723
223 * set the power status of device controlled by libCEC to
225 instead of IN_TRANSITION_STANDBY_TO_ON. reset the device status of a
226 device if it was detected as removed. bugzid: 755
227 * potentially uninitialised values in cec_command
228 * delay the 'active source' command for panasonic, until the vendor command
229 that reports that the TV is powered on has been received. bugzid: 723
230 * only respond to Give Physical Address with Report Physical Address.
232 This fixes several reports of the TV improperly switching to the libcec
233 device after it has previously switched to another source. Fix confirmed
234 with Panasonic and also reported to be an issue with Samsung and
236 * check whether callback methods are set to a valid ptr
237 * number of retries for polls
238 * win32: fix build in paths with spaces. bugzid: 730
239 * LibCecSharp: free the alert GC callback when cleaning up
240 * the wrong setting was being read when powering on devices
241 * close the connection when a comm error was detected, and notify the
243 * don't segfault when calling ThreadsWait() without a valid thread
244 * lib/platform: fixed memleak
245 * leak in CCECAdapterMessageQueue::Write
246 * don't send commands if we know them to be unsupported. bugzid: 725
248 -- Pulse-Eight Packaging <packaging@pulse-eight.com> Wed, 18 Apr 2012 11:30:00 +0100
250 libcec (1.6-2) unstable; urgency=low
253 * fixed typo in CUSBCECAdapterCommands::RequestSettings() that prevented
254 the settings from being read. the settings were still written, but never
255 read when bGetSettingsFromROM = 1.
257 -- Pulse-Eight Packaging <packaging@pulse-eight.com> Wed, 18 Apr 2012 11:30:00 +0100
259 libcec (1.6-1) unstable; urgency=medium
262 * full firmware V2 support
263 * -o/--osdname argument for cec-client to set a custom osd name
264 * added the firmware version to cec-client's -l / --list-devices command.
266 * added power on command for Samsung AVR devices. bugzid: 361
267 * added buttoncode for 'channels list' on Samsung (0x96)
268 * don't check for the windows ddk when a prebuilt driver installer is
270 * respond to Get Menu Language. bugzid: 547. In the event that the menu
271 language is undefined in libcec (currently the default), the response
272 will be a feature abort.
275 * added the firmware version to libcec_configuration (read-only). bumped
276 server version to 1.6.0. fixed 'unknown server version' message on
278 * added a new setting to control whether to put the TV in standby when the
279 player is put in standby. added some missing bits (version numbers,
280 config) to LibCecSharp. bugzid: 558
281 * added an alert callback. bugzid: 462
282 * added bShutdownOnStandby to libcec_configuration. bugzid: 660. This
283 setting tells the client to shutdown when the TV switches off and is
284 complimentary to bPowerOffOnStandby, which tells the PC to suspend.
285 They are kept separate to maintain backwards compatability.
288 * gcc 4.7 compilation
289 * poll doesn't have an opcode. bugzid: 591
290 * wait for MSGEND when data was received when opening the connection.
292 * mark the correct device as active source after a stream path change.
293 if the new address is not found, but the old address is, then mark the
294 old address as inactive. fixes TV switching back to the old active source
295 when it scans for devices. bugzid: 592
296 * ensure that the vendor ID is sent before trying to activate any SL device
298 * fixed possible crash when in CLibCEC::IsLibCECActiveSource() when libCEC
299 doesn't know which device is the active source. bugzid: 479
300 * correct handling CEC_USER_CONTROL_CODE_POWER. This ensures that the power
301 code always operates as a toggle, depending on the current state, and
302 that SetCurrentButton is always called for a valid user control code.
304 * frequency wasn't checked in GetTimeMs(), leading to incorrect wait times
305 on some windows systems
306 * refactored USB adapter communication. less locks, shorter locks, added
307 documentation, lots of clean ups and no more incoming messages that are
309 * the destructor of CSerialSocket didn't call Close()
310 * added guards in CSerialPort
311 * reset m_socket to INVALID_SERIAL_SOCKET_VALUE after closing the
313 * always wait for thread exit in CThread's desctructor
314 * crash on exit after GetDeviceInformation()
315 * check whether the destination is valid before setting anything in
316 m_bWaitingForAck. fixes heap corruption and crash on exit. bugzid: 479
317 * bUseTVMenuLanguage from libcec_configuration wasn't copied in
318 SetConfiguration(), so this setting was reset to the default value
319 (enabled) every time. bugzid: 617
320 * request the vendor id of a device if needed when the device status is
321 changed into 'present'. bugzid: 361
322 * give priority to messages from the TV. removed the global lock in
323 CCECProcessor when sending. this is no longer needed. bugzid: 238
324 * add some bounds checking to the HDMI port number. bugzid: 508
325 * fixed usbser.sys copying in the driver .INF. bugzid: 503
326 * only update the physical address when it has actually changed. bugzid:
328 * moved the static variables in os-threads from the header to a separate
329 cpp file, or it could lead to problems when included multiple times
330 * don't send an active source command when the physical address couldn't be
331 set, or it might confuse other CEC devices
332 * serial socket timeouts. bugzid: 654
333 * fixed possible crash when trying to request a vendor id of a device when
334 the address of libCEC isn't known yet. bugzid: 654
335 * extra guard so no commands are transmitted without a valid initiator.
337 * moved the timed ping to a separate thread. bugzid: 654
338 * persist settings directly when they're changed, only persist settings
339 that actually changed, only instruct the device to persist the settings
340 in eeprom when something changed, and don't persist settings on exit.
342 * cec-config-gui: persist settings both in the eeprom and in the settings
344 * validate the input in CCECProcessor::IsActiveSource(). fixes potential
345 crash when the active source isn't known. bugzid: 671
347 -- Pulse-Eight Packaging <packaging@pulse-eight.com> Mon, 16 Apr 2012 18:03:00 +0100
349 libcec (1.5-4) unstable; urgency=low
352 * OS-X installation requirements and pointer
353 * full v2 firmware support:
354 * ping the adapter every 15 seconds. bugzid: 541
355 * added v2 msgcodes. bugzid: 543
356 * implemented the write methods for the v2 configuration. bugzid: 543
357 * included the logical addresses in the persisted configuration for v2.
359 * persist the configuration before closing the connection. only try to
360 persist the configuration when talking to a v2 firmware. bugzid: 543
361 * added GetSetting() to CUSBCECAdapterCommunication. bugzid: 543
362 * read the persisted settings from the ROM, and update it in
363 libcec_configuration if found. bugzid: 543
364 * cec-client: set bGetSettingsFromROM to 1 in cec-client. bugzid: 543
365 * cec-client: only read persisted EEPROM settings when -r or --rom is
366 provided as cmdline arg. bugzid: 543
367 * call SetControlledMode(false) as last command when closing the
368 connection in v2. bugzid: 542
369 * initial FreeBSD support: simply try to use ttyU*
372 * set controlled mode and retry to send the previous command if it failed
373 with MSGCODE_COMMAND_REJECTED
374 * m_iLineTimeout was never initialised and used. fixes MSGCODE_REJECTED
375 when transmitting a message and incorrect line timeouts being used
376 * mac configure compile bugzid: 157
377 * cec-config-gui: fixed application exit when the user clicked 'no' when
378 asked to reconnect. bugzid: 556
379 * only wait for multiple 'command accepted' response when sending a
380 transmit command, and only to 1 in other cases. bugzid: 543
381 * set the correct logical address mask before switching to autonomous mode.
383 * re-added SetLineTimeout(). bugzid: 543
384 * CUSBCECAdapterCommunication::SetControlledMode checked for the wrong sent
386 * os-x: don't add 0.5 before dividing in GetTimeMs()
387 * os-x: struct timespec now values weren't set correctly
389 -- Pulse-Eight Packaging <packaging@pulse-eight.com> Fri, 16 Mar 2012 10:12:00 +0100
391 libcec (1.5-3) unstable; urgency=low
395 * default to firmware version 1 after 3 tries. some versions didn't send a
397 * fixed cec-config win32 compilation
399 -- Pulse-Eight Packaging <packaging@pulse-eight.com> Sat, 03 Mar 2012 15:21:00 +0100
401 libcec (1.5-2) unstable; urgency=low
404 * added Toshiba's vendor id, and set the device ID of the primary device to
405 Toshiba's and transmit it when starting
406 * lock in SyncedBuffer
407 * added a timeout to StopThread()
408 * also add commands to unsupported features when receiving
409 CEC_ABORT_REASON_REFUSED
410 * cec-config-gui: set cbPortNumber enabled when the physical address
411 override isn't checked instead
412 * cec-config-gui: added support for the new 'send inactive source' setting
415 * added an 'send inactive source' option to libcec_configuration, only
416 supported by client/server 1.5.1 and up. bugzid: 439
417 * added a command to the interface to start the bootloader directly,
418 without going through all checks. bugzid: 218
419 * LibCecSharp: implemented support for the new 'send inactive source'
423 * don't send an updated configuration when libCEC hasn't been initialised
425 * don't send an updated configuration back when initialising. let the
426 client call the GetCurrentConfiguration() method. bugzid: 459
427 * configuration updates from libCEC. bugzid: 459
428 * fixed accidental double deref. the method parameter already does that.
430 * use CLOCK_MONOTONIC for timing info, since gettimeofday is affected by
431 ntp and by manually adjusting the system time
432 * the timeout value of pthread_cond_timedwait has to be referenced to
434 * don't add data to the input buffer in CUSBCECAdapterCommunication before
435 it's fully initialised
436 * fixed return value of CUSBCECAdapterCommunication::ParseMessage(). fixes
437 messages not being parsed in certain occasions
438 * don't try to transmit when the processor is being stopped
439 * set the server version in the LibCEC's constructor, since this is
440 checked by clients. fixes 'invalid libCEC version' popup when inserting
442 * don't wait for the full timeout to pass in CCECProcessor::
443 OpenConnection(), but retry to connect 2 times. fixes 'port busy' errors
444 when initialising libCEC. bugzid: 436
445 * use the correct Sleep() method in CCECProcessor::OpenConnection(). the
446 thread hasn't been started there yet, so the sleep wasn't working. fixes
447 'device or resource busy' when plugging in the adapter. bugzid: 436
448 * check the adapter ping and firmware before starting the reader thread, so
449 we really leave the com port alone for a second when it fails because of
450 a busy error. bugzid: 436
451 * ensure that the connection is really closed before retrying to connect.
453 * LibCecSharp: recreate the delegates properly when (re)connecting to
456 -- Pulse-Eight Packaging <packaging@pulse-eight.com> Tue, 28 Feb 2012 21:19:00 +0100
458 libcec (1.5-1) unstable; urgency=low
461 * a new libcec_configuration structs, which allows the client app to pass
462 a number of new options, like waking multiple devices on startup,
463 overriding the vendor id, etc.
464 * a new configuration GUI for Windows (.NET). this allows you to set
465 libCEC's configuration for XBMC in a convenient GUI.
466 * a CLI configuration tool (unfinished) for other platforms. will be
467 finished in an update.
468 * implemented power up for LG devices other than a TV
469 * win32: don't install libcec to the system directory by default, and
470 delete previous (testing) copies if present
471 * wait for multiple responses, not just for one at a time
472 * set the ackmask to 0 when closing the connection
473 * don't send 'image view on' when calling SetActiveSource()
474 * don't send power on, acitve source and standby commands by default in
476 * platform: added CTryLockObject
477 * platform: added an Init() method in CTimeout, so it can be reset
480 * added a new initialiser method: CecInitialise()/cec_initialise(), that
481 accepts a "libc_configuration" struct as parameter. this way, the
482 signature of the init method can stay the same when adding new options.
483 in LibCecSharp, the new method appears as a new constructor.
484 * added CanPersistConfiguration()/cec_can_persist_configuration()
485 * added PersistConfiguration()/cec_persist_configuration()
486 * added GetCurrentConfiguration()/cec_get_current_configuration()
487 * added SetConfiguration()/cec_set_configuration()
488 * added GetLogicalAddresses()/cec_get_logical_addresses(): returns the list
489 of addresses controlled by libCEC
490 * added RescanDevices()/cec_rescan_devices(): lets libCEC force polls to
491 all logical addresses.
492 * added a callback that is called when libCEC's configuration changed.
493 * moved the autodetect address api call to libcec_configuration. only send
494 power up commands to non-tv devices when the power state is not
495 on/transition->on. let players call the power up/power down command.
496 * return the anynet return keycode directly instead of translating it to
497 'return' for v1.5.0+ clients
498 * extracted CecSharpTypes.h in LibCecSharp. LibCecSharp is now in the
500 * include the local cectypes.h in cec.h and cecc.h instead of system wide
501 * deprecated GetLibVersion() methods. use libcec_configuration instead
502 * removed deprecated CECCreate() method
505 * fixed a lot of LG specific issues
506 * fixed OS-X compilation. credits: Dustin Cooper
507 * fixed a couple of possible deadlocks, e.g. when closing the connection
509 * cleaned up existing code
510 * libCEC no longer puts incoming data in a fifo buffer, but tries to
511 process it directly, which fixes issues like libCEC blocking processing
512 new commands while waiting for transmission acks.
513 * 'unsupported command' marking in CCECBusDevice
514 * ensure that the ackmask is always set to 0 when closing the connection
515 and that the call doesn't block the Close() call
516 * don't try to read or write in CUSBCECAdapterCommunication when the
517 connection has been closed
518 * LibCecSharp: added quotes to the linker statement for libcec.lib. fixes
519 compilation in paths with spaces. closes #20
520 * LibCecSharp: set the callback methods in libcec to NULL before closing
521 the connection, since these might already have been destroyed in .NET
522 * LibCecSharp: delete the internal callback struct when closing the
524 * LibCecSharp: pass correctly formatted logical address lists
525 * ensure that the vendor id is requested first when requesting info from a
526 device, so we are using the correct handler
527 * keep the 'busy state' of the command handler in CCECBusDevice
528 * poll the next device when the current is handled by libCEC.
529 * check the vendor id of a device before sending a power on command
530 * ensure that there always is at least one device type set
531 * transmit a keypress and key release as power on command when the target
533 * don't do a full reinit when not needed
534 * fix active source switches for the standard CEC implementation
535 * ensure that we don't send data to ourself
536 * check whether the port is open, not whether libCEC is initialised in
538 * platform: fixed return value from CCondition::Wait()
539 * platform: don't broadcast but wake one thread in
540 CProtectedSocket::MarkReady()
541 * platform: include stdint.h in windows/os-types.h instead of typedef'ing
543 * platform: fixed tcp socket error handling and return value.
544 * platform: fixed return values of socket operations in lib/platform
545 * platform: added predicate in CCondition
546 * deleted the signed driver from the tree, since that doesn't work. let the
547 installer create a new signed driver on the production build system
549 -- Pulse-Eight Packaging <packaging@pulse-eight.com> Mon, 19 Feb 2012 01:04:00 +0100
551 libcec (1.4-4) unstable; urgency=low
554 * added tcp client sockets to lib/platform (WIP)
555 * clean up lib/platform
556 * added: set controlled mode on after opening a connection to the adapter
558 * added an IAdapterCommunicationCallback interface an use a callback method
559 to pass newly received cec_commands to CCECProcessor
560 * added "driver only" and "driver + libcec" sections to the installer
561 * added a signed driver
562 * created a separate driver installer, which is included in the libCEC
563 installer. uninstalls the old unsigned version of libCEC and the driver
564 when it's found and installs the new one in C:\Program Files(x86)\
565 Pulse Eight\USB-CEC Adapter.
566 * don't sign development binaries with a temporary key. devs can do that
567 themselves when they want LibCecSharp in the GAC
569 * added SetStreamPath()/cec_set_stream_path_logical()/
570 cec_set_stream_path_physical() to the interface, to send a
571 "set stream path" command over the CEC bus, used to activate another
574 * transmit 'menu state activated' after the stream path has been set to a
575 device that is handled by libCEC. should fix remote commands not working
576 properly on Panasonic TVs and after another source has been active.
578 * set the ackmask to 0x0 when trying to find a free logical address
579 * keep trying to reconnect to the com port until the timeout runs out.
581 * wait 500 ms before trying to retransmit a command. always wait for the
582 result of a transmission in CCECCommandHandler::Transmit()
583 * receive and send full cec_commands, not CCECAdapterMessages in
584 CAdapterCommunication. extract an IAdapterCommunication interface. fixed
585 potentially missed data in CAdapterCommunication
586 * close and delete the connection when the processor thread ends. fixes
587 reconnect after standby (access denied / connection already opened)
588 * don't replace handlers when not initialised, or the primary device's
589 logical addres isn't known yet, which can lead to crashes. don't call
590 handlers directly in CCECProcessor without holding a lock on them
591 * fixed possible crash when command handler were switched while it was
593 * keep the mutex locked when calling ReplaceHandlers() in CCECProcessor
594 * win32: also timeout when data is received in SocketRead()
595 * win32: fixed < vista runtime and compilation
596 * win32: ping the adapter and request the firmware version in
597 CUSBCECAdapterCommunication instead of CCECProcesssor. fixes failed
599 * win32: fixed crash on exit in LibCecSharp
601 -- Pulse-Eight Packaging <packaging@pulse-eight.com> Mon, 6 Feb 2012 14:26:00 +0100
603 libcec (1.4-3) unstable; urgency=low
606 * try to ping the device and grab the firmware version until the connect
607 timeout runs out. fixes failed reconnect after standby, when the adapter
608 is still being initialised
610 -- Pulse-Eight Packaging <packaging@pulse-eight.com> Thu, 27 Jan 2012 13:05:00 +0100
612 libcec (1.4-2) unstable; urgency=low
615 * added a firmware flash script for linux.
616 usage: ./support/cec-flash-device.sh /path/to/firware.hex
617 * refactored threading/locking - added windows native instead of
618 pthread-win32, so we can compile native x64 too
619 * check whether the adapter responds when connecting to it and report the
620 firmware version of the adapter after connecting
621 * moved create-installer.cmd to support/
622 * completely removed AM_SILENT_RULES
624 * compile LibCecSharp against .NET framework 2.0 and sign the assembly
626 * only the key release events were sent, not keypresses, which appeared in
627 clients as laggy keypresses
628 * fixed reconnect after standby
629 * wait for active tranmission to finish when opening a connection to the
630 adapter. fixes initialisation errors
631 * set the default transmit timeout properly instead of using 0
632 * fixed possible deadlock because of a negative timeout in
633 CAdapterCommunication::WaitForTransmitSucceeded()
634 * fixed error message in cec-client (unable to open the device on port ...)
635 * exit cec-client after entering bootloader mode
636 * MSGCODE_START_BOOTLOADER doesn't respond with MSGCODE_COMMAND_ACCEPTED
638 -- Pulse-Eight Packaging <packaging@pulse-eight.com> Thu, 25 Jan 2012 23:28:00 +0100
640 libcec (1.4-1) unstable; urgency=low
643 * added the vendor id for Sony
644 * always refresh the power state of a device when it hasn't been updated
646 * do silent builds by default
648 * added optional callback methods to libCEC. enable them by calling
649 EnableCallbacks(ICECCallbacks *callbacks) /
650 cec_enable_callbacks(ICECCallbacks *callbacks). after this method is
651 called, the GetNext...() methods will not return any data
652 * added the same callbacks to LibCecSharp. implement CecCallbackMethods
653 and override the methods in there
655 * use the given timeout when trying to open a connection to the CEC
657 * resolved difference between method name in LibCECC.cpp and cecc.h.
658 credits: Doug Johnson
659 * don't transmit physical addresses while holding a lock in CCECProcessor
660 * don't hold a lock when sending an active source message.
661 * unload libCEC when the lib version is invalid
662 * "unused" warnings suppressed
664 -- Pulse-Eight Packaging <packaging@pulse-eight.com> Thu, 12 Jan 2012 19:06:00 +0100
666 libcec (1.3-3) unstable; urgency=low
669 * place in libudev include in an extern C block. fixes compilations on
670 older libudev versions (e.g. on Hardy). closes #2. credits @fbuenemann
671 * added pkg-config to the dependencies list. issue #15
672 * updated README. closes #14
673 * added a script that tests some basic functions of the CEC adapter:
674 /support/cec-test-device.sh
676 * don't make libCEC the active source when changing the physical address.
677 don't send active source messages on startup, when not the active source
678 fixes unwanted device power ups
679 * replace the command handler directly after receiving a changed vendor
680 id. change the primary type from recording device to playback device
682 * don't send a deck status update when sending an active source message
684 * only switch handlers once when using the generic handler
685 * don't switch handlers when not needed
686 * hold a lock in CCECProcessor::SetHDMIPort()
687 * don't send deck status updates when sending an active source message by
690 -- Pulse-Eight Packaging <packaging@pulse-eight.com> Thu, 3 Jan 2012 22:48:00 +0100
692 libcec (1.3-2) unstable; urgency=low
695 * copy libcec.dll to the XBMC installation dir when XBMC is found
696 * disable background polling. let the client request this info when needed
697 * update the power status of a device when it's set to
698 CEC_POWER_STATUS_IN_TRANSITION_STANDBY_TO_ON
699 * wait for the correct response when requesting something, not just any
701 * don't keep trying the same command/request after receiving a feature
704 * change the previously unused boolean parameter in volume control methods
705 to bSendRelease, and only send a key release when it's true. default to
708 * don't send the power up/down keypress to listeners when in the initial
709 device state (powered off). fixes unexpected shutdown in XBMC when
710 connecting to the CEC adapter.
711 * send a 'menu state activated' command when starting up. bugzid: 113
712 * don't wait for a response when not needed
713 * don't hold a lock while waiting for a response. fixes failed libCEC
714 inits and slow responses
715 * don't replace a command handler when it's being used. fixes possible
717 * don't try to do anything before the processor thread has started
718 * don't transmit active source messages when the physical address is
720 * don't init the default handler before the physical address is known
722 -- Pulse-Eight Packaging <packaging@pulse-eight.com> Thu, 29 Dec 2011 03:05:00 +0100
724 libcec (1.3-1) unstable; urgency=low
727 * make libudev optional. if libudev is not available on linux, adapter
728 autodetection will also not be available. fixes compilation on Hardy/ATV1
729 * added a C++ CLR wrapper for libCEC, so libCEC can be used by any .NET
731 * added vendor support for LG
732 * added vendor support for Philips
733 * added vendor support for Yamaha
734 * added vendor support for Onkyo
735 * added 'scan' command to cec-client, that displays info about devices on
736 the bus. made all ToString() methods available on the interface.
737 * added '-s' or '--single-command' to cec-client. starting cec-client with
738 this parameter executes a single command in cec-client and does not power
739 on devices on startup and power them off on exit. this way, you can use
740 cec-client in a shell script. since there's some handshaking involved at
741 startup, this is not very fast. to execute a command and only display the
742 result and any error/warning, execute it with
743 RESULT=`echo command | cec-client -s -d 3` (on linux/osx, win32 batch
744 files are a bit different)
745 * added HDMI port ('-p' or '--port') and base device ('-b' or '--base') to
746 cec-client's parameters
747 * handle image view on and text view on
748 * handle routing information and report physical address opcodes
749 * handle audio status updates
750 * send ping and bootloader commands via the output queue
751 * scan the CEC bus for devices when starting libcec
752 * pass all commands that are directed at libcec to listeners
754 * added GetActiveSource()/cec_get_active_source()
755 * added IsActiveSource()/cec_is_active_source()
756 * added GetDevicePhysicalAddress()/cec_get_device_physical_address()
757 * added GetDeviceOSDName()/cec_get_osd_name()
758 * added SendKeypress()/cec_send_keypress() and SendKeyRelease()/
759 cec_send_key_release()
760 * added VolumeUp()/cec_volume_up(), VolumeDown()/cec_volume_down(),
761 MuteAudio()/cec_mute_audio()
762 * added GetActiveDevices()/cec_get_active_devices(), IsActiveDevice()/
763 cec_is_active_device(), IsActiveDeviceType()/cec_is_active_device_type().
764 * added SetHDMIPort()/cec_set_hdmi_port(). devices are now detected on load
765 and when a device with the same physical address is detected, libcec will
766 use the selected hdmi port on that device. should fix source selection on
767 other devices, like an amplifier
768 * added a hook in libcec for physical address autodetection
770 * don't request the physical address from the tv (it's always 0x0000)
771 * set the proper ackmask before doing anything else
772 * don't unlock the transmit mutex in CCECProcessor while waiting for an
775 * refactor CEC read/write. keep a single lock for all writes, not one per
777 * ignore other data while waiting for a response
778 * retry failed tranmissions
779 * don't delete a message before it's been sent when starting the bootloader
780 * or when sending a ping
781 * fixed possible segfault when switching the command handler after a vendor
783 * handle audio opcodes correctly
784 * inactive source should be directly addressed at the TV
785 * don't report a changed physical address when it hasn't changed
786 * routing information sets the stream path, not the physical address
787 * don't scan the whole bus in CCECProcessor::IsActiveDeviceType()
788 * don't request the vendor id from devices that are handled by libcec
789 * mark device status as present when a command was received from a device
790 * always send a power on command in CCECBusDevice::PowerOn()
791 * don't request updates statusses unless needed
792 * report physical address sends 3 parameters, not 2. check whether the
793 device type is correct
794 * devices can send vendor commands from other vendors, so don't assume the
795 device is of a certain vendor when it sends commands with a vendor id
796 * thread safety fixes. bugzid: 19
797 * clear any previous input when opening a connection to the adapter.
799 * use the correct source address in CSLCommandHandler::HandleVendorCommand()
800 * uncorrected CEC_OPCODE_DEVICE_VENDOR_ID. closes #5
801 * renamed enum methods. fixes potential macro collision with isset().
803 * don't change the active device when receiving stream path changed
804 messages. fixes wrong source selection when powering after the TV.
806 -- Pulse-Eight Packaging <packaging@pulse-eight.com> Fri, 09 Dec 2011 12:16:00 +0100
808 libcec (1.2-1) unstable; urgency=low
811 * pass the deck_control command to libcec listeners
812 * check whether the initiator is valid in CCECProcessor::ParseCommand().
813 fixes possible segfault when parsing invalid data
815 -- Pulse-Eight Packaging <packaging@pulse-eight.com> Sat, 12 Nov 2011 13:36:00 +0100
817 libcec (1.1-3) unstable; urgency=low
819 * fixed return value in CCECProcessor::SetStreamPath(), which prevented
820 active source and menu state from being sent
822 -- Pulse-Eight Packaging <packaging@pulse-eight.com> Fri, 11 Nov 2011 23:36:00 +0100
824 libcec (1.1-2) unstable; urgency=low
826 * forgot to update the headers to v1.1
828 -- Pulse-Eight Packaging <packaging@pulse-eight.com> Fri, 11 Nov 2011 18:56:00 +0100
830 libcec (1.1-1) unstable; urgency=low
833 * added logical address autodetection and let libcec handle multiple types
834 simultaniously. for logical address autodetection, you have to use
835 CECInit()/cec_init_typed() instead of CECCreate()/cec_init()
836 * added SetActiveSource()/cec_set_active_source() to the interface.
837 deprecated SetActiveView()/cec_set_active_view()
838 * added SetMenuState()
839 * added PollDevice()/cec_poll_device()
840 * removed duplicate method SetActiveSource() / SetActiveView()
841 * added SetDeckControlMode() and SetDeckInfo()
843 * added vendor detection for panasonic and broadcast active view and set
844 menu state when a panasonic device sets the stream path. thanks for the
846 * added vendor code for pioneer
847 * osd string is 13 chars max. don't send more
848 * send the correct cec version for each device
849 * switch to panasonic specific cec implementation if a panasonic device was
851 * send the correct device type in TransmitPhysicalAddress()
852 * send a reply from the correct device when the stream path is requested
853 * opcode 0x80 means the stream path changed, not the physical address
854 * don't poll for a vendor ID in monitoring mode
855 * fixed parameter parsing in SetVendorId()
856 * buffer up commands that are received while waiting for an ack. only send
857 'active source' message for the actual active source
858 * win32: prepend the com port path with '\\.\', so com ports > 9 can be
859 accessed. thanks smolesen
860 * audio systems cannot be an active source, so don't transmit active
861 source message from this device
862 * only send 'active source' when powered on
863 * only set the osd name for the primary device. use default values for
865 * increase physical address with 0x100 per device
866 * win32: removed unneeded afxres.h include in the resource files, which
867 is not present when using studio express. thanks Ghuron
869 * mark the active source as active and other devices as inactive
870 * set the power status to 'on' when receiving CEC_USER_CONTROL_CODE_POWER
871 * transmit the menu state as (active) when the stream path is set
873 * changed copyright of boblight files with permission of the original
875 * partial handling of audio related opcodes
876 * more consistent log messages
877 * set a device type and name for each CCECBusDevice
878 * keep a power and menu state per device
879 * renamed all Broadcast...() and Report...() methods to Transmit...()
880 * renamed SetOSDString() to TransmitOSDString()
881 * changed debug level of 'did not receive ack' from error to debug
882 * only set the power status to 'on' for the primary device
883 * moved method decriptions from cecc.h to cec.h
884 * only send a power on command when a device isn't on already and set
885 the power state to CEC_POWER_STATUS_IN_TRANSITION_STANDBY_TO_ON while
887 * handle CEC_OPCODE_STANDBY
888 * handle CEC_OPCODE_ACTIVE_SOURCE
889 * always start in standby mode and let the tv (or other device) send the
891 * renamed the last few enums
892 * handle deck related opcodes.
893 * added TransmitVendorId(), but only transmit the id if it's not set to 'unknown'
895 -- Pulse-Eight Packaging <packaging@pulse-eight.com> Fri, 11 Nov 2011 17:42:00 +0100
897 libcec (1.0-1) unstable; urgency=low
900 * set lib interface version back to 1.0 and rename GetLibVersion() to
901 GetLibVersionMajor() and GetMinVersion() to GetMinLibVersion()
902 * added GetLibVersionMinor()/cec_get_lib_version_minor() and set the minor
905 * samsung's vendor specific remote keypresses don't send key releases. added
906 call to AddKey() directly after the keypress
907 * always reset the button press time in CLibCEC::AddKey()
908 * always wait for a signal in CCECProcessor::Transmit()
910 * drop shared_ptr and use a normal pointer. removed boost dependency
912 -- Pulse-Eight Packaging <packaging@pulse-eight.com> Fri, 04 Nov 2011 00:14:00 +0100
914 libcec (0.8-2) unstable; urgency=low
916 * added 'libboost-dev' to build deps
918 -- Pulse-Eight Packaging <packaging@pulse-eight.com> Tue, 01 Nov 2011 23:31:00 +0100
920 libcec (0.8-1) unstable; urgency=low
923 * added GetDevicePowerStatus()/cec_get_device_power_status()
924 * added GetDeviceVendorId()/cec_get_device_vendor_id()
925 * added GetDeviceMenuLanguage()/cec_get_device_menu_language()
926 * added GetDeviceCecVersion()/cec_get_device_cec_version()
927 * added SwitchMonitoring()/cec_switch_monitoring() to the interface. when
928 monitoring is enabled, the device will only log the data it received,
929 but will not respond to any message
930 * removed timeout parameter in Transmit() and included the ack timeout in
931 the cec_command struct
932 * made the vendor id -> vendor name translation available
933 * made CEC_LOG levels powers of 2
934 * introduced CEC_LOG_TRAFFIC log level
936 * set the correct ackmask on startup
937 * wait for ack while keeping a lock
938 * wait for the processor thread to start before continueing on startup
939 * wait for messages to be transmitted before continueing in
940 CCECProcessor::Transmit()
941 * only set the logical address once when it has changed
942 * correct source for broadcast messages
943 * win32: create Release type installer
945 * make all reads and write in CAdapterCommunication go through buffers.
946 * poll for a vendor ID of connected devices and switch to a non-standard
947 CEC implementation if needed.
948 * added vendor detection of Samsung and LG devices
949 * handle samsung remote command 'return'
951 * added -la and --logical-address to the command line params
952 * added -d and --log-level params to cec-client
953 * added -sf and --short-log-file, which only log the actual messages, not
954 the level and timestamp
955 * added -f and --log-file parameters to cec-client
956 * added option to change the log level to cec-client
958 -- Pulse-Eight Packaging <packaging@pulse-eight.com> Tue, 01 Nov 2011 22:58:00 +0100
960 libcec (0.7-1) unstable; urgency=low
962 * send a keypress with 0 duration when a key is pressed and with a duration
963 set when it's released
964 * added SetOSDString() to the interface (not supported by all tvs)
965 * fixed: 'routing change' is a broadcast message. log routing changes, but
966 don't send a 'set active view' message, so the active input won't be
968 * log keypresses in the debug log
969 * added 'pa' command to cec-client, to change the physical address
970 * added SetPhysicalAddress()/cec_set_physical_address() to the interface, so
971 the HDMI port number to use can be changed
972 * fixed: put the message processing code from WaitForAck() in ParseMessage().
973 fixes missing incoming message logging of non-data messages when not
975 * added 'txn' command to cec-client. same as 'tx', but doesn't wait for ACK
977 * fixed: set initiator and destination first in cec_command::push_back().
978 fixes 'tx' command in cec-client
979 * fixed: keep trying to connect while iTimeout isn't reached (default 10
980 seconds). fixes exit with a 'permission denied' error when the device isn't
981 ready yet. remove CEC_SETTLE_DOWN_TIME
982 * fixed: don't call SetActiveView() when reporting the power status. fixes
983 loop which causes some TVs to report failed connections
984 * fixed: eom was not being parsed when receiving MSGCODE_FRAME_DATA. fixed.
985 * fixed: add the device type as parameter when sending the physical address.
987 * fixed: typo in libcec.pc.in
988 * added optional strLib parameter to LoadLibCec(), so the location of the
989 shared library can be specified
990 * only link cec-client against ld. use AC_SEARCH_LIBS instead of AC_CHECK_LIB
991 * use int instead of bool on the public C interface and remove stdbool.h include
992 * renamed: CECExports.h => cec.h, CECExportsC.h => cecc.h, CECLoader.h =>
993 cecloader.h, CECTypes.h => cectypes.h
994 * updated debian package. split up libcec and libcec-dev
995 * fixed: changed to use dlopen instead of static linkage. shuffled headers a
996 bit. bumped interface to version 7
997 * removed 'rt' from libraries. it's not needed (anymore)
998 * fixed: reset the active view after a routing change. issue #1
999 * fixed: changed attached license to be GPLv2 instead of GPLv3 this was an
1000 error as libCEC is licensed GPLv2 not GPLv3 thanks @garbear
1001 * added contributors link
1003 -- Pulse-Eight Packaging <packaging@pulse-eight.com> Fri, 14 Oct 2011 17:34:00 +0200
1005 libcec (0.6-1) unstable; urgency=low
1007 * bumped interface version to 6
1008 * fixed packet output (reporting the OSD name correctly now)
1009 * refactored packet structs: split up in cec commands and adapter messages
1011 * added Darwin support (thanks Davilla!)
1012 * fixed WaitForAck()
1013 * fixed possible deadlock when starting a new thread
1014 * implemented vendor id and device class parsing. full detection will follow
1015 * added "on" and "standby" commands to the test client
1016 * retransmit packets if needed
1017 * fix GetTimeMs() on linux
1018 * added timestamp to log messages
1020 -- Pulse-Eight Packaging <packaging@pulse-eight.com> Sun, 09 Oct 2011 15:15:00 +0200
1022 libcec (0.5-1) unstable; urgency=low
1024 * bumped interface version to 5
1025 * don't pass std::string and std::vector accross the interface
1026 * fixed heap corruption crashes on windows
1027 * fixed some memory leaks
1028 * reset all structs to default values before doing with them
1030 -- Pulse-Eight Packaging <packaging@pulse-eight.com> Fri, 07 Oct 2011 22:00:00 +0200
1032 libcec (0.4-3) unstable; urgency=low
1035 * fixed some threading related bugs
1036 * fixed deadlock on exit
1037 * fixed wrongly reported physical address
1039 -- Pulse-Eight Packaging <packaging@pulse-eight.com> Thu, 06 Oct 2011 00:19:00 +0200
1041 libcec (0.4-2) unstable; urgency=low
1043 * fixed int parameter sizes and some signed/unsigned warnings
1044 * check whether m_port isn't NULL in ReadFromDevice
1045 * stop the processor thread and delete the CSerialPort instance on exit
1046 * added mutex in CSerialPort
1047 * fix segfault on exit
1048 * renamed libPlatform -> platform.
1049 * stuck everything from libCEC in the CEC namespace to avoid namespace
1052 -- Pulse-Eight Packaging <packaging@pulse-eight.com> Tue, 04 Oct 2011 23:45:00 +0200
1054 libcec (0.4-1) unstable; urgency=low
1056 * bumped interface version to 4
1057 * timeout parameter removed from Close()/cec_close(). return type changed to
1059 * added cec_destroy() method
1060 * removed timeout parameter from Transmit()
1061 * change the default argument of PowerOnDevices() to CECDEVICE_TV
1062 * removed PowerOffDevices(). use StandbyDevices() instead
1063 * removed obsolete methods from the interface
1064 * fixed bug: pthread_cond_wait was called without the mutex locked
1065 * fixed possible deadlock: don't send messages and wait for an ack with the
1066 mutex locked in CCECParser
1067 * created a separate reader thread and fixed the 'lock timeout' bug
1068 * testclient: use CECDEVICE_TV instead of the default argument
1069 (CECDEVICE_BROADCAST) for PowerOnDevices() and PowerOffDevices()
1071 -- Pulse-Eight Packaging <packaging@pulse-eight.com> Tue, 04 Oct 2011 00:48:00 +0200
1073 libcec (0.3-1) unstable; urgency=low
1075 * added device detection support for Windows
1077 -- Pulse-Eight Packaging <packaging@pulse-eight.com> Sun, 02 Oct 2011 12:09:33 +0200
1079 libcec (0.2-1) unstable; urgency=low
1081 * added a Close() method to the interface
1082 * Added CEC command that were received by the adapter in a buffer that can be
1083 read by a client with GetNextCommand()/cec_get_next_command(). added a
1084 'help' command to the test client, that displays all available commands
1085 * Fixed setting the ackmask. deprecated SetAckMask()/cec_set_ack_mask(). use
1086 SetLogicalAddress()/cec_set_logical_address() instead. add 'la' command to
1087 the testclient to set the logical address of the cec adapter
1088 * Added optional logical and physical address parameters to
1089 LoadLibCec()/cec_init() on the interface. fixed wrongly placed namespace
1090 close tag in CECExports.h. updated interface documentation. bumped
1091 interface version to 2.
1092 * fixed hardcoded ackmask in SetAckMast(). set a shorter display name in the
1093 test client. the previous one was too long and being rejected
1095 -- Pulse-Eight Packaging <packaging@pulse-eight.com> Fri, 28 Sep 2011 01:33:00 +0200
1097 libcec (0.1-1) unstable; urgency=low
1099 * Initial release v0.1
1101 -- Pulse-Eight Packaging <packaging@pulse-eight.com> Wed, 28 Sep 2011 23:55:48 +0200