cec: only switch handlers once when using the generic handler
[deb_libcec.git] / ChangeLog
1 libcec (1.3-2) unstable; urgency=low
2
3 * changed/added:
4 * copy libcec.dll to the XBMC installation dir when XBMC is found
5 * disable background polling. let the client request this info when needed
6 * update the power status of a device when it's set to
7 CEC_POWER_STATUS_IN_TRANSITION_STANDBY_TO_ON
8 * wait for the correct response when requesting something, not just any
9 response
10 * don't keep trying the same command/request after receiving a feature
11 abort message
12 * interface changes:
13 * change the previously unused boolean parameter in volume control methods
14 to bSendRelease, and only send a key release when it's true. default to
15 true
16 * fixed:
17 * don't send the power up/down keypress to listeners when in the initial
18 device state (powered off). fixes unexpected shutdown in XBMC when
19 connecting to the CEC adapter.
20 * send a 'menu state activated' command when starting up. bugzid: 113
21 * don't wait for a response when not needed
22 * don't hold a lock while waiting for a response. fixes failed libCEC
23 inits and slow responses
24 * don't replace a command handler when it's being used. fixes possible
25 crash on startup
26 * don't try to do anything before the processor thread has started
27 * don't transmit active source messages when the physical address is
28 still 0xFFFF
29 * don't init the default handler before the physical address is known
30
31 -- Pulse-Eight Packaging <packaging@pulse-eight.com> Thu, 29 Dec 2011 03:05:00 +0100
32
33 libcec (1.3-1) unstable; urgency=low
34
35 * changed/added:
36 * make libudev optional. if libudev is not available on linux, adapter
37 autodetection will also not be available. fixes compilation on Hardy/ATV1
38 * added a C++ CLR wrapper for libCEC, so libCEC can be used by any .NET
39 language
40 * added vendor support for LG
41 * added vendor support for Philips
42 * added vendor support for Yamaha
43 * added vendor support for Onkyo
44 * added 'scan' command to cec-client, that displays info about devices on
45 the bus. made all ToString() methods available on the interface.
46 * added '-s' or '--single-command' to cec-client. starting cec-client with
47 this parameter executes a single command in cec-client and does not power
48 on devices on startup and power them off on exit. this way, you can use
49 cec-client in a shell script. since there's some handshaking involved at
50 startup, this is not very fast. to execute a command and only display the
51 result and any error/warning, execute it with
52 RESULT=`echo command | cec-client -s -d 3` (on linux/osx, win32 batch
53 files are a bit different)
54 * added HDMI port ('-p' or '--port') and base device ('-b' or '--base') to
55 cec-client's parameters
56 * handle image view on and text view on
57 * handle routing information and report physical address opcodes
58 * handle audio status updates
59 * send ping and bootloader commands via the output queue
60 * scan the CEC bus for devices when starting libcec
61 * pass all commands that are directed at libcec to listeners
62 * interface changes:
63 * added GetActiveSource()/cec_get_active_source()
64 * added IsActiveSource()/cec_is_active_source()
65 * added GetDevicePhysicalAddress()/cec_get_device_physical_address()
66 * added GetDeviceOSDName()/cec_get_osd_name()
67 * added SendKeypress()/cec_send_keypress() and SendKeyRelease()/
68 cec_send_key_release()
69 * added VolumeUp()/cec_volume_up(), VolumeDown()/cec_volume_down(),
70 MuteAudio()/cec_mute_audio()
71 * added GetActiveDevices()/cec_get_active_devices(), IsActiveDevice()/
72 cec_is_active_device(), IsActiveDeviceType()/cec_is_active_device_type().
73 * added SetHDMIPort()/cec_set_hdmi_port(). devices are now detected on load
74 and when a device with the same physical address is detected, libcec will
75 use the selected hdmi port on that device. should fix source selection on
76 other devices, like an amplifier
77 * added a hook in libcec for physical address autodetection
78 * fixed:
79 * don't request the physical address from the tv (it's always 0x0000)
80 * set the proper ackmask before doing anything else
81 * don't unlock the transmit mutex in CCECProcessor while waiting for an
82 answer
83 * fix device polling
84 * refactor CEC read/write. keep a single lock for all writes, not one per
85 device
86 * ignore other data while waiting for a response
87 * retry failed tranmissions
88 * don't delete a message before it's been sent when starting the bootloader
89 * or when sending a ping
90 * fixed possible segfault when switching the command handler after a vendor
91 * id changed
92 * handle audio opcodes correctly
93 * inactive source should be directly addressed at the TV
94 * don't report a changed physical address when it hasn't changed
95 * routing information sets the stream path, not the physical address
96 * don't scan the whole bus in CCECProcessor::IsActiveDeviceType()
97 * don't request the vendor id from devices that are handled by libcec
98 * mark device status as present when a command was received from a device
99 * always send a power on command in CCECBusDevice::PowerOn()
100 * don't request updates statusses unless needed
101 * report physical address sends 3 parameters, not 2. check whether the
102 device type is correct
103 * devices can send vendor commands from other vendors, so don't assume the
104 device is of a certain vendor when it sends commands with a vendor id
105 * thread safety fixes. bugzid: 19
106 * clear any previous input when opening a connection to the adapter.
107 bugzid: 54
108 * use the correct source address in CSLCommandHandler::HandleVendorCommand()
109 * uncorrected CEC_OPCODE_DEVICE_VENDOR_ID. closes #5
110 * renamed enum methods. fixes potential macro collision with isset().
111 thanks davilla
112 * don't change the active device when receiving stream path changed
113 messages. fixes wrong source selection when powering after the TV.
114
115 -- Pulse-Eight Packaging <packaging@pulse-eight.com> Fri, 09 Dec 2011 12:16:00 +0100
116
117 libcec (1.2-1) unstable; urgency=low
118
119 * bugfixes:
120 * pass the deck_control command to libcec listeners
121 * check whether the initiator is valid in CCECProcessor::ParseCommand().
122 fixes possible segfault when parsing invalid data
123
124 -- Pulse-Eight Packaging <packaging@pulse-eight.com> Sat, 12 Nov 2011 13:36:00 +0100
125
126 libcec (1.1-3) unstable; urgency=low
127
128 * fixed return value in CCECProcessor::SetStreamPath(), which prevented
129 active source and menu state from being sent
130
131 -- Pulse-Eight Packaging <packaging@pulse-eight.com> Fri, 11 Nov 2011 23:36:00 +0100
132
133 libcec (1.1-2) unstable; urgency=low
134
135 * forgot to update the headers to v1.1
136
137 -- Pulse-Eight Packaging <packaging@pulse-eight.com> Fri, 11 Nov 2011 18:56:00 +0100
138
139 libcec (1.1-1) unstable; urgency=low
140
141 * interface changes:
142 * added logical address autodetection and let libcec handle multiple types
143 simultaniously. for logical address autodetection, you have to use
144 CECInit()/cec_init_typed() instead of CECCreate()/cec_init()
145 * added SetActiveSource()/cec_set_active_source() to the interface.
146 deprecated SetActiveView()/cec_set_active_view()
147 * added SetMenuState()
148 * added PollDevice()/cec_poll_device()
149 * removed duplicate method SetActiveSource() / SetActiveView()
150 * added SetDeckControlMode() and SetDeckInfo()
151 * fixed:
152 * added vendor detection for panasonic and broadcast active view and set
153 menu state when a panasonic device sets the stream path. thanks for the
154 pointer cptcoconut.
155 * added vendor code for pioneer
156 * osd string is 13 chars max. don't send more
157 * send the correct cec version for each device
158 * switch to panasonic specific cec implementation if a panasonic device was
159 detected
160 * send the correct device type in TransmitPhysicalAddress()
161 * send a reply from the correct device when the stream path is requested
162 * opcode 0x80 means the stream path changed, not the physical address
163 * don't poll for a vendor ID in monitoring mode
164 * fixed parameter parsing in SetVendorId()
165 * buffer up commands that are received while waiting for an ack. only send
166 'active source' message for the actual active source
167 * win32: prepend the com port path with '\\.\', so com ports > 9 can be
168 accessed. thanks smolesen
169 * audio systems cannot be an active source, so don't transmit active
170 source message from this device
171 * only send 'active source' when powered on
172 * only set the osd name for the primary device. use default values for
173 others
174 * increase physical address with 0x100 per device
175 * win32: removed unneeded afxres.h include in the resource files, which
176 is not present when using studio express. thanks Ghuron
177 * fixed C headers
178 * mark the active source as active and other devices as inactive
179 * set the power status to 'on' when receiving CEC_USER_CONTROL_CODE_POWER
180 * transmit the menu state as (active) when the stream path is set
181 * changed:
182 * changed copyright of boblight files with permission of the original
183 author
184 * partial handling of audio related opcodes
185 * more consistent log messages
186 * set a device type and name for each CCECBusDevice
187 * keep a power and menu state per device
188 * renamed all Broadcast...() and Report...() methods to Transmit...()
189 * renamed SetOSDString() to TransmitOSDString()
190 * changed debug level of 'did not receive ack' from error to debug
191 * only set the power status to 'on' for the primary device
192 * moved method decriptions from cecc.h to cec.h
193 * only send a power on command when a device isn't on already and set
194 the power state to CEC_POWER_STATUS_IN_TRANSITION_STANDBY_TO_ON while
195 powering on
196 * handle CEC_OPCODE_STANDBY
197 * handle CEC_OPCODE_ACTIVE_SOURCE
198 * always start in standby mode and let the tv (or other device) send the
199 power on command
200 * renamed the last few enums
201 * handle deck related opcodes.
202 * added TransmitVendorId(), but only transmit the id if it's not set to 'unknown'
203
204 -- Pulse-Eight Packaging <packaging@pulse-eight.com> Fri, 11 Nov 2011 17:42:00 +0100
205
206 libcec (1.0-1) unstable; urgency=low
207
208 * interface changes:
209 * set lib interface version back to 1.0 and rename GetLibVersion() to
210 GetLibVersionMajor() and GetMinVersion() to GetMinLibVersion()
211 * added GetLibVersionMinor()/cec_get_lib_version_minor() and set the minor
212 version number to 1
213 * fixed:
214 * samsung's vendor specific remote keypresses don't send key releases. added
215 call to AddKey() directly after the keypress
216 * always reset the button press time in CLibCEC::AddKey()
217 * always wait for a signal in CCECProcessor::Transmit()
218 * changed:
219 * drop shared_ptr and use a normal pointer. removed boost dependency
220
221 -- Pulse-Eight Packaging <packaging@pulse-eight.com> Fri, 04 Nov 2011 00:14:00 +0100
222
223 libcec (0.8-2) unstable; urgency=low
224
225 * added 'libboost-dev' to build deps
226
227 -- Pulse-Eight Packaging <packaging@pulse-eight.com> Tue, 01 Nov 2011 23:31:00 +0100
228
229 libcec (0.8-1) unstable; urgency=low
230
231 * interface changes:
232 * added GetDevicePowerStatus()/cec_get_device_power_status()
233 * added GetDeviceVendorId()/cec_get_device_vendor_id()
234 * added GetDeviceMenuLanguage()/cec_get_device_menu_language()
235 * added GetDeviceCecVersion()/cec_get_device_cec_version()
236 * added SwitchMonitoring()/cec_switch_monitoring() to the interface. when
237 monitoring is enabled, the device will only log the data it received,
238 but will not respond to any message
239 * removed timeout parameter in Transmit() and included the ack timeout in
240 the cec_command struct
241 * made the vendor id -> vendor name translation available
242 * made CEC_LOG levels powers of 2
243 * introduced CEC_LOG_TRAFFIC log level
244 * fixed:
245 * set the correct ackmask on startup
246 * wait for ack while keeping a lock
247 * wait for the processor thread to start before continueing on startup
248 * wait for messages to be transmitted before continueing in
249 CCECProcessor::Transmit()
250 * only set the logical address once when it has changed
251 * correct source for broadcast messages
252 * win32: create Release type installer
253 * changed:
254 * make all reads and write in CAdapterCommunication go through buffers.
255 * poll for a vendor ID of connected devices and switch to a non-standard
256 CEC implementation if needed.
257 * added vendor detection of Samsung and LG devices
258 * handle samsung remote command 'return'
259 * cec-client:
260 * added -la and --logical-address to the command line params
261 * added -d and --log-level params to cec-client
262 * added -sf and --short-log-file, which only log the actual messages, not
263 the level and timestamp
264 * added -f and --log-file parameters to cec-client
265 * added option to change the log level to cec-client
266
267 -- Pulse-Eight Packaging <packaging@pulse-eight.com> Tue, 01 Nov 2011 22:58:00 +0100
268
269 libcec (0.7-1) unstable; urgency=low
270
271 * send a keypress with 0 duration when a key is pressed and with a duration
272 set when it's released
273 * added SetOSDString() to the interface (not supported by all tvs)
274 * fixed: 'routing change' is a broadcast message. log routing changes, but
275 don't send a 'set active view' message, so the active input won't be
276 changed
277 * log keypresses in the debug log
278 * added 'pa' command to cec-client, to change the physical address
279 * added SetPhysicalAddress()/cec_set_physical_address() to the interface, so
280 the HDMI port number to use can be changed
281 * fixed: put the message processing code from WaitForAck() in ParseMessage().
282 fixes missing incoming message logging of non-data messages when not
283 waiting for an ACK
284 * added 'txn' command to cec-client. same as 'tx', but doesn't wait for ACK
285 before returning
286 * fixed: set initiator and destination first in cec_command::push_back().
287 fixes 'tx' command in cec-client
288 * fixed: keep trying to connect while iTimeout isn't reached (default 10
289 seconds). fixes exit with a 'permission denied' error when the device isn't
290 ready yet. remove CEC_SETTLE_DOWN_TIME
291 * fixed: don't call SetActiveView() when reporting the power status. fixes
292 loop which causes some TVs to report failed connections
293 * fixed: eom was not being parsed when receiving MSGCODE_FRAME_DATA. fixed.
294 * fixed: add the device type as parameter when sending the physical address.
295 thanks bobo1on1
296 * fixed: typo in libcec.pc.in
297 * added optional strLib parameter to LoadLibCec(), so the location of the
298 shared library can be specified
299 * only link cec-client against ld. use AC_SEARCH_LIBS instead of AC_CHECK_LIB
300 * use int instead of bool on the public C interface and remove stdbool.h include
301 * renamed: CECExports.h => cec.h, CECExportsC.h => cecc.h, CECLoader.h =>
302 cecloader.h, CECTypes.h => cectypes.h
303 * updated debian package. split up libcec and libcec-dev
304 * fixed: changed to use dlopen instead of static linkage. shuffled headers a
305 bit. bumped interface to version 7
306 * removed 'rt' from libraries. it's not needed (anymore)
307 * fixed: reset the active view after a routing change. issue #1
308 * fixed: changed attached license to be GPLv2 instead of GPLv3 this was an
309 error as libCEC is licensed GPLv2 not GPLv3 thanks @garbear
310 * added contributors link
311
312 -- Pulse-Eight Packaging <packaging@pulse-eight.com> Fri, 14 Oct 2011 17:34:00 +0200
313
314 libcec (0.6-1) unstable; urgency=low
315
316 * bumped interface version to 6
317 * fixed packet output (reporting the OSD name correctly now)
318 * refactored packet structs: split up in cec commands and adapter messages
319 * fixed i/o timings
320 * added Darwin support (thanks Davilla!)
321 * fixed WaitForAck()
322 * fixed possible deadlock when starting a new thread
323 * implemented vendor id and device class parsing. full detection will follow
324 * added "on" and "standby" commands to the test client
325 * retransmit packets if needed
326 * fix GetTimeMs() on linux
327 * added timestamp to log messages
328
329 -- Pulse-Eight Packaging <packaging@pulse-eight.com> Sun, 09 Oct 2011 15:15:00 +0200
330
331 libcec (0.5-1) unstable; urgency=low
332
333 * bumped interface version to 5
334 * don't pass std::string and std::vector accross the interface
335 * fixed heap corruption crashes on windows
336 * fixed some memory leaks
337 * reset all structs to default values before doing with them
338
339 -- Pulse-Eight Packaging <packaging@pulse-eight.com> Fri, 07 Oct 2011 22:00:00 +0200
340
341 libcec (0.4-3) unstable; urgency=low
342
343 * fixed reconnect
344 * fixed some threading related bugs
345 * fixed deadlock on exit
346 * fixed wrongly reported physical address
347
348 -- Pulse-Eight Packaging <packaging@pulse-eight.com> Thu, 06 Oct 2011 00:19:00 +0200
349
350 libcec (0.4-2) unstable; urgency=low
351
352 * fixed int parameter sizes and some signed/unsigned warnings
353 * check whether m_port isn't NULL in ReadFromDevice
354 * stop the processor thread and delete the CSerialPort instance on exit
355 * added mutex in CSerialPort
356 * fix segfault on exit
357 * renamed libPlatform -> platform.
358 * stuck everything from libCEC in the CEC namespace to avoid namespace
359 polution
360
361 -- Pulse-Eight Packaging <packaging@pulse-eight.com> Tue, 04 Oct 2011 23:45:00 +0200
362
363 libcec (0.4-1) unstable; urgency=low
364
365 * bumped interface version to 4
366 * timeout parameter removed from Close()/cec_close(). return type changed to
367 void
368 * added cec_destroy() method
369 * removed timeout parameter from Transmit()
370 * change the default argument of PowerOnDevices() to CECDEVICE_TV
371 * removed PowerOffDevices(). use StandbyDevices() instead
372 * removed obsolete methods from the interface
373 * fixed bug: pthread_cond_wait was called without the mutex locked
374 * fixed possible deadlock: don't send messages and wait for an ack with the
375 mutex locked in CCECParser
376 * created a separate reader thread and fixed the 'lock timeout' bug
377 * testclient: use CECDEVICE_TV instead of the default argument
378 (CECDEVICE_BROADCAST) for PowerOnDevices() and PowerOffDevices()
379
380 -- Pulse-Eight Packaging <packaging@pulse-eight.com> Tue, 04 Oct 2011 00:48:00 +0200
381
382 libcec (0.3-1) unstable; urgency=low
383
384 * added device detection support for Windows
385
386 -- Pulse-Eight Packaging <packaging@pulse-eight.com> Sun, 02 Oct 2011 12:09:33 +0200
387
388 libcec (0.2-1) unstable; urgency=low
389
390 * added a Close() method to the interface
391 * Added CEC command that were received by the adapter in a buffer that can be
392 read by a client with GetNextCommand()/cec_get_next_command(). added a
393 'help' command to the test client, that displays all available commands
394 * Fixed setting the ackmask. deprecated SetAckMask()/cec_set_ack_mask(). use
395 SetLogicalAddress()/cec_set_logical_address() instead. add 'la' command to
396 the testclient to set the logical address of the cec adapter
397 * Added optional logical and physical address parameters to
398 LoadLibCec()/cec_init() on the interface. fixed wrongly placed namespace
399 close tag in CECExports.h. updated interface documentation. bumped
400 interface version to 2.
401 * fixed hardcoded ackmask in SetAckMast(). set a shorter display name in the
402 test client. the previous one was too long and being rejected
403
404 -- Pulse-Eight Packaging <packaging@pulse-eight.com> Fri, 28 Sep 2011 01:33:00 +0200
405
406 libcec (0.1-1) unstable; urgency=low
407
408 * Initial release v0.1
409
410 -- Pulse-Eight Packaging <packaging@pulse-eight.com> Wed, 28 Sep 2011 23:55:48 +0200