<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://wiki.linuxmce.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Icosahedron</id>
	<title>LinuxMCE - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.linuxmce.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Icosahedron"/>
	<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php/Special:Contributions/Icosahedron"/>
	<updated>2026-07-22T01:34:55Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.44.0</generator>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=LinuxMCE-0810_beta&amp;diff=27817</id>
		<title>LinuxMCE-0810 beta</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=LinuxMCE-0810_beta&amp;diff=27817"/>
		<updated>2011-04-28T22:06:09Z</updated>

		<summary type="html">&lt;p&gt;Icosahedron: Fixed a couple minor typos in the update numbers&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
  | __TOC__&lt;br /&gt;
  |}&lt;br /&gt;
[[Category: Software]]&lt;br /&gt;
This page outlines some information about the Beta, as well as outlining any changes and bugfixes we are applying, just like we did with the alpha2 page.&lt;br /&gt;
&lt;br /&gt;
The installation instructions found on the alpha2 page still apply:&lt;br /&gt;
&lt;br /&gt;
==Installing LinuxMCE-0810==&lt;br /&gt;
Please see detailed instruction on how to install LinuxMCE-0810 and keep it up-to-date with the latest updates [[installing 0810|here]].&lt;br /&gt;
&lt;br /&gt;
== Upcoming fixes... ==&lt;br /&gt;
&#039;&#039;&#039;Note: Please put the name of the package file and the source and bin package number in this list, followed by a small description of what has changed! Hulu Player is not the name of the package, but lmce-hulu-player. It makes the life of the person, who needs to update the repo a lot easier. Thank you!&#039;&#039;&#039;&lt;br /&gt;
* pluto-system-database (211) &lt;br /&gt;
** Fixes #782, #845 use the same variable for sensor type datagrid as the code expects.&lt;br /&gt;
* pluto-media-database (233)&lt;br /&gt;
** Ref #1022 Adds Season Number attribute to Pluto_Media.AttributeType&lt;br /&gt;
&lt;br /&gt;
== Update 2011-04-14 23901 ==&lt;br /&gt;
* pluto-website-admin (220) &lt;br /&gt;
** Fix bad character in previous fix for event page&lt;br /&gt;
* pluto-updateentarea (341,342) &lt;br /&gt;
** Fixes #664 properly select order number&lt;br /&gt;
&lt;br /&gt;
== Update 2011-04-11 23890 ==&lt;br /&gt;
* pluto-system-database (211) &lt;br /&gt;
** Fixes #15 navigation problems multiple floorplans&lt;br /&gt;
* pluto-website-admin (220) &lt;br /&gt;
** Fixes #1046 adding/removing extra slashes when saving IR codes&lt;br /&gt;
** Fixes #1044 program now available as video sort option&lt;br /&gt;
** Fixes #1002 Adds ability to remove attributes directory wide.&lt;br /&gt;
** Fixes #1020 Auto-tag button for upcoming media tagging addon&lt;br /&gt;
** Fixes #1051 fix deletion of events without criteria&lt;br /&gt;
* pluto-avwizard (555,556)&lt;br /&gt;
** Fixes #865 adds HDMI-0 output which is required for some ATI cards&lt;br /&gt;
* pluto-simplephone (498,499)&lt;br /&gt;
** Fixes #1042 always use password when creating auth info object&lt;br /&gt;
* pluto-zwave-lighting (506,505) &lt;br /&gt;
** Fix bug in logging function&lt;br /&gt;
** Possible fix for #989&lt;br /&gt;
&lt;br /&gt;
== Update 2011-03-26 23855 ==&lt;br /&gt;
* pluto-motion-wrapper (456,455) - Fixes #715, #904 - fix reload issue&lt;br /&gt;
* pluto-boot-scripts (234) &lt;br /&gt;
** Fixes #698, change attribute name colum (and all other longtext columns) in db to utf-8&lt;br /&gt;
** Fixes #1019 fix firewall rules for &amp;quot;both&amp;quot; rules, handle cases where filter ip is NULL&lt;br /&gt;
** Fixes #1035 don&#039;t call plymouth if it does not exists&lt;br /&gt;
** Fixes #1037 fix call to LoadMDModules.sh&lt;br /&gt;
** Fixes #1027 this package had missing dependencies for storage-devices and network-storage&lt;br /&gt;
* pluto-website-admin (220)&lt;br /&gt;
** Refs #662, remove markers on datalogger graph&lt;br /&gt;
** Fixes #901 delete all orbiter data when deleting an Orbiter&lt;br /&gt;
* pluto-orbitergen (226,227)&lt;br /&gt;
** Fixes #133 properly calculate offset for floorplan texts&lt;br /&gt;
** Autogenerate Open/Close/Shade buttons if blinds/drapes etc exist in a room.&lt;br /&gt;
* pluto-zwave-lighting (506,505) &lt;br /&gt;
** Fixes #997 report battery status&lt;br /&gt;
&lt;br /&gt;
== Update 2011-03-07 23802 ==&lt;br /&gt;
&lt;br /&gt;
* pluto-asterisk (270)&lt;br /&gt;
** Added support for Linksys SPA3102 gateway #1012, affinity telecom voip provider #949, voipgo #942&lt;br /&gt;
* pluto-dcerouter (154)&lt;br /&gt;
** Refs #961 make radvd install by default making dcerouter depend on it&lt;br /&gt;
* pluto-website-admin (220) &lt;br /&gt;
** Fixes #940&lt;br /&gt;
** Refs #662 fix graph.php for devices that report multiple events&lt;br /&gt;
** Refs #662 create details page with details graphs&lt;br /&gt;
** Refs #961 basic IPv6 implementation&lt;br /&gt;
** Refs #959 thermostat internal schedules support (z-wave part needs still to be done)&lt;br /&gt;
** Fixes #971 change tcp port for mediatomb to 49153 as djmount has taken 49152&lt;br /&gt;
** Fixes #984 patch from golgoj4, tvdb uses program attribute type&lt;br /&gt;
* pluto-boot-scripts (234)&lt;br /&gt;
** Refs #961 basic IPv6 implementation&lt;br /&gt;
** Refs #970 - Reconfigure dhcp server at every boot &lt;br /&gt;
** Fixes #990 - Use NIS to look up home directory&lt;br /&gt;
* lmce-datalogger-plugin (686,687) &lt;br /&gt;
** Refs #913 also install Image_Color&lt;br /&gt;
* pluto-pnp-detection (562)&lt;br /&gt;
** Refs #1006 - Updates for LG TV template&lt;br /&gt;
* pluto-system-database (211) &lt;br /&gt;
** Refs #1006 - Updates for LG TV template&lt;br /&gt;
** Refs #650 - install picture viewer as default on MDs&lt;br /&gt;
* pluto-plutodhcp (491,330)&lt;br /&gt;
** Refs #970 - Enable internal network dynamic DNS updates&lt;br /&gt;
* lmce-mediatomb (702)&lt;br /&gt;
** Fixes #971 change tcp port to 49153 as djmount has taken 49152&lt;br /&gt;
* lmce-skins-titanium(718)&lt;br /&gt;
** Fixes #305 and #955 - arrows pointing the wrong way in remote screen&lt;br /&gt;
* pluto-proxy-orbiter (487,488)&lt;br /&gt;
** #893 - Fix deletion of pictures, enable play button for pictures&lt;br /&gt;
* pluto-orbiter (119,138)&lt;br /&gt;
** #893 - Fix deletion of pictures, enable play button for pictures&lt;br /&gt;
* pluto-std-plugins (116,135) &lt;br /&gt;
** #893 - Fix deletion of pictures&lt;br /&gt;
** #832 - Fix specific date timed event&lt;br /&gt;
&lt;br /&gt;
== Update 2011-01-05 23579 ==&lt;br /&gt;
* pluto-plutodhcp (491,330) - Refs #920 fix the dhcp template that is being used&lt;br /&gt;
* pluto-boot-script (234) - Fixes Orbiter detection logic&lt;br /&gt;
&lt;br /&gt;
== Update 2011-01-04 23568 ==&lt;br /&gt;
* pluto-boot-script (234) - Refs #920 allow adding entries to the dhcpd.conf file using an external file.&lt;br /&gt;
* pluto-plutodhcp (491,330) - Refs #920 Honor the dhcpd.conf template file&lt;br /&gt;
* pluto-website-admin (220)&lt;br /&gt;
** Refs #226 - Enable SSL support in apache&lt;br /&gt;
* pluto-mythtv-plugin (136,152)&lt;br /&gt;
** Fixes #922 - add storage devices to mythtv even if offline&lt;br /&gt;
* lmce-datalogger-plugin (686,687) &lt;br /&gt;
**Refs #913 Install Image_Canvas-0.3.3C and Image_Graph-0.8.0 apagg&lt;br /&gt;
* pluto-zwave&lt;br /&gt;
** refs #874 - change mutex handling&lt;br /&gt;
* pluto-plcbus&lt;br /&gt;
** refs #918 - adjust dim rate&lt;br /&gt;
&lt;br /&gt;
== Update 2010-12-16 23525 ==&lt;br /&gt;
* pluto-website-admin (220)&lt;br /&gt;
** Refs #907 - Support for web orbiters to use PLUTO_KEY events - Los93soL&lt;br /&gt;
** Refs #708 - wrong media type used when displaying default sort&lt;br /&gt;
* pluto-system-database (211)&lt;br /&gt;
** Refs #913 Updated dependency for datalogger plugin&lt;br /&gt;
** Refs #905 Play All also honors Queue vs Instant play setting&lt;br /&gt;
* lmce-datalogger-plugin (686,687)&lt;br /&gt;
** Refs #913 Install Image_Graph and dependencies in postinst&lt;br /&gt;
* pluto-zwave&lt;br /&gt;
** refs #44 - add smoke detector support&lt;br /&gt;
* pluto-proxy-orbiter (487,488)&lt;br /&gt;
** Refs #905 - New variable substitution to get device data &lt;br /&gt;
* pluto-orbiter (119,138)&lt;br /&gt;
** Refs #905 - New variable substitution to get device data&lt;br /&gt;
* pluto-plcbus&lt;br /&gt;
&lt;br /&gt;
== Update 2010-12-05 23479 ==&lt;br /&gt;
&lt;br /&gt;
* pluto-std-plugins (116,135)&lt;br /&gt;
** #879 - OSD Orbiter does not display after stopping non-pluto media device&lt;br /&gt;
** #880 - Non-pluto audio-only MediaTypes do not have the proper FK_Pipe=1&lt;br /&gt;
** #746 - Follow me volume does not work properly&lt;br /&gt;
** #905 - Implement queue media in Media_Plugin&lt;br /&gt;
* pluto-system-database (211)&lt;br /&gt;
** #860 - Add pnp detection script for ZWave devices&lt;br /&gt;
** #868 - Update Acquos LCxxD6U / LCxxD7u GSD codes to confirm input change&lt;br /&gt;
** #880 - Non-pluto audio-only MediaTypes do not have the proper FK_Pipe=1&lt;br /&gt;
** #883 - Hauppauge HD PVR inputs are not set correctly&lt;br /&gt;
* pluto-capture-card-scripts (580)&lt;br /&gt;
** #883 - Hauppauge HD PVR inputs are not set correctly&lt;br /&gt;
* lmce-dpms-monitor (721,722)&lt;br /&gt;
** #885 - DPMS Monitor now works correctly. DPMS is properly enabled, Timeouts are set, and X buffers are properly flushed after each DPMS request. (tschak)&lt;br /&gt;
* pluto-storage-devices (533)&lt;br /&gt;
** Fixes #884 - No longer ignore bootable partitions - merkur2k&lt;br /&gt;
** #889	New shares on existing file servers are not detected - merkur2k&lt;br /&gt;
* pluto-website-admin (220)&lt;br /&gt;
** Fixes #888 - Display correct description in web orbiter selection dropdown - merkur2k&lt;br /&gt;
** Fixes #869 - Event navigation improvement - thanks apagg!&lt;br /&gt;
** Refs #677 - More colors for energyGraph and some small fixes - apagg&lt;br /&gt;
** #778 Adds TVDB tagging functionality&lt;br /&gt;
** #662 datalogger display sensor report correct - apagg&lt;br /&gt;
** Fixes #866 update imdbphp to imdbphp2&lt;br /&gt;
** Fixes #901 - proper deletion of Orbiter devices&lt;br /&gt;
* mce-diskless-tools (627,628)&lt;br /&gt;
** Fixes #894 - make MythTV Setup show up properly now on Diskless MDs&lt;br /&gt;
* pluto-proxy-orbiter (487,488)&lt;br /&gt;
** #905 - Use orbiter setting &amp;quot;Queue instead of instant play&amp;quot;&lt;br /&gt;
* pluto-orbiter (119,138)&lt;br /&gt;
** #905 - Use orbiter setting &amp;quot;Queue instead of instant play&amp;quot;&lt;br /&gt;
* lmce-shoutcast-radio-plugin (703,704)&lt;br /&gt;
** Fixes #906 - new method of downloading shoutcast data&lt;br /&gt;
&lt;br /&gt;
==Update 2010-11-01 23388 ==&lt;br /&gt;
* asterisk-pluto (269) - all those asterisk changes should finally be deployed&lt;br /&gt;
* lmce-launch-manager - segfault due to db going away&lt;br /&gt;
* pluto-asterisk - added blueface voip provider&lt;br /&gt;
* pluto-boot-script (234) - Refs #315 load ztdummy module at startup&lt;br /&gt;
* pluto-capture-card-script - Refs #854 added HD PVR block info.&lt;br /&gt;
* pluto-mythtv-player - enable networkcontrol port&lt;br /&gt;
* pluto-proxy-orbiter (487,488) - Refs #821 - configuration script for automatic proxy orbiter port selection - merkur2k&lt;br /&gt;
* pluto-std-plugins (116,135)&lt;br /&gt;
** Refs #857 - Added update device command to general info plugin&lt;br /&gt;
** Refs #843 - UpdateEntArea crashes fixed&lt;br /&gt;
* pluto-system-database (211)&lt;br /&gt;
** #854 Add the above file&lt;br /&gt;
** #851 - DCERouter segfaults when exiting&lt;br /&gt;
** #873	Software raid devices do not have &amp;quot;use automatically&amp;quot; option&lt;br /&gt;
* pluto-updateentarea (341,342) &lt;br /&gt;
** Refs #445 don&#039;t put proxy orbiters into MDs EA&lt;br /&gt;
** Refs #843 UpdateEntArea crashes fixed &lt;br /&gt;
* pluto-website-admin (220) - Refs #821 - enable web orbiter in &amp;quot;add orbiter&amp;quot; dropdown in orbiters wizard page - merkur2k&lt;br /&gt;
** Refs #856 - View whole log only displays first 5000 lines&lt;br /&gt;
** Refs #861 - fixes JS path escaping&lt;br /&gt;
** Refs #870 - Web interface for learning IR codes doesn&#039;t work when editing existing device&lt;br /&gt;
* pluto-pnp-detection (562) - Refs #860 - Add pnp detection script for ZWave devices&lt;br /&gt;
* pluto-plutoutils (197,196) - Refs #872 - Fix MySQL timeout issues&lt;br /&gt;
* pluto-dcecommon (193,192) - Refs #872 - Fix MySQL timeout issues&lt;br /&gt;
* pluto-sql2cpp (203,202) - Refs #872 - Fix MySQL timeout issues&lt;br /&gt;
* pluto-tribunetv (599,598) - Refs #872 - Fix MySQL timeout issues&lt;br /&gt;
* pluto-vipshared (200,199) - Refs #872 - Fix MySQL timeout issues&lt;br /&gt;
* pluto-hdhomerun (621,620) - Refs #872 - Fix MySQL timeout issues&lt;br /&gt;
* asterisk-pluto (269) - Refs - #570 Phone book lookup and user validation scripts will now be packaged - Los93soL&lt;br /&gt;
* pluto-simplephone (498,499) - Phone audio now works when connected by HDMI - Los93soL&lt;br /&gt;
* pluto-zwave-lighting (506,505) - Refs #874 - ZWave controller locks up about twice a day&lt;br /&gt;
* pluto-asterisk (270.271) - Added support for WhistlePhone, free ad-supported US calling&lt;br /&gt;
&lt;br /&gt;
== Update 2010-10-13 23333 ==&lt;br /&gt;
* pluto-std-plugins (116,135) -&lt;br /&gt;
** Media Plugin fix to not turn on OSD (TV) if the TV was already off, and was triggered by an orbiter to play audio. Superfluous block of code removed, Thanks uplink!&lt;br /&gt;
** Possible fix for #674, media is not streamed through unnecessary MDs&lt;br /&gt;
** Fixes #849 house mode change event now sends previous mode as parameter, event plugin uses that when processing house mode change events&lt;br /&gt;
* pluto-system-database (211) - esev made changes to the non-pluto-DVD remote to make it much more usable! Thanks!&lt;br /&gt;
* pluto-lirc-wrapper (340,421) - Fixes #822 lirc now depends on required message translation library&lt;br /&gt;
* lmce-mediatomb (702) - Fixes #841&lt;br /&gt;
* pluto-boot-scripts (234) - #848 - honor &amp;quot;enable UpdateMedia&amp;quot; setting in web admin&lt;br /&gt;
* lmce-launch-manager (299,298) - #848 - honor &amp;quot;enable UpdateMedia&amp;quot; setting in web admin&lt;br /&gt;
&lt;br /&gt;
== Update 2010-10-06 23324 ==&lt;br /&gt;
* lmce-linux-igd  (765 - New package for #826 - merkur2k&lt;br /&gt;
* lirc_0.8.3 &lt;br /&gt;
** built in build-replacements.sh, only it is commented atm&lt;br /&gt;
** Refs #822 fixes repeat problems with pronto codes&lt;br /&gt;
* lmce-mediatomb (702) - Generate a more sane config file for mediatomb - merkur2k&lt;br /&gt;
* pluto-boot-script (234) - Mount /home via nfs instead of cifs on media directors, updates for #826 - merkur2k&lt;br /&gt;
* pluto-lirc-wrapper (340,421) - Fixes #822 lirc can now send pronto codes properly&lt;br /&gt;
* pluto-orbiter (119,138) - Fix for #458 - power menu now works correctly to control other media directors from OSD&lt;br /&gt;
* pluto-std-plugins (116,135)&lt;br /&gt;
** Voicemail changes and fixes.&lt;br /&gt;
** Absolute Timed Events are working (thanks TSCHAK)&lt;br /&gt;
** Fixes #833 - possible to compare integer criteria against a list of comma-separated values&lt;br /&gt;
* pluto-system-database (211) - lots of sqlCVS changes.&lt;br /&gt;
* pluto-website-admin (220) - Misc fixes from various tickets - merkur2k&lt;br /&gt;
* pluto-zwave-lighting (505,506) - #44 Improve detection of multi instance devices, possible to resync device data&lt;br /&gt;
* pluto-storage-devices (533) - Add NFS Radar - merkur2k&lt;br /&gt;
* pluto-mythtv-plugin (136,152) - misc storage group fixes - merkur2k&lt;br /&gt;
** &amp;quot;use autumatically&amp;quot; flag for storage devices is now honored&lt;br /&gt;
** better support for remote storage devices (Nas, windows share, etc)&lt;br /&gt;
&lt;br /&gt;
== Update 2010-09-16 23289 ==&lt;br /&gt;
* pluto-boot-scripts (234) &lt;br /&gt;
** enable WOL on boot up again&lt;br /&gt;
** fix HDMI and SPDIF unmuting for AVWizard and successive boots. &lt;br /&gt;
** #813, SetupUsers_Homes.sh no longer executes on media directors, faster boot. &lt;br /&gt;
** #733, BootMessage.sh no longer emits an error.&lt;br /&gt;
* pluto-generic-serial-device (307,335) - fix ethernet device support for GSDs&lt;br /&gt;
* pluto-orbiter (119,138) - #811 - WiiMote support. Change mouse accelleration so that the wiimote can actually traverse the entire width of the screen.&lt;br /&gt;
* pluto-std-plugins - #814 - Display the dimming column on the floor plan for drapes and blinds&lt;br /&gt;
* pluto-updateentarea (341,342) - #815 - Autogenerated scenarios sleep/wakeup do the right thing for blinds/drapes&lt;br /&gt;
* pluto-website-admin (220) #708 - add default media sort options to orbiters page, #636 - fixes special characters for IMDB tagging&lt;br /&gt;
&lt;br /&gt;
== Update 2010-08-29 23259 ==&lt;br /&gt;
* lmce-squeezeslave (763) - Refs #776 wrapper script to start squeezeslave&lt;br /&gt;
* mce-diskless-tools (627,628) - #798 /etc/diskless.conf not being created - merkur2k&lt;br /&gt;
* pluto-app-server (145,126) - #344 Allow power off mode override&lt;br /&gt;
* pluto-asterisk (270,271)&lt;br /&gt;
** Refs #570 Display caller name and picture from LinuxMCE phone book when available - Los93soL&lt;br /&gt;
** Change line ending for create_amp_sipgate_de.pl&lt;br /&gt;
* pluto-slimserver-plugin (424,425) - Refs #776 add squeezeslave template as possible playback device&lt;br /&gt;
* pluto-std-plugins - fix audio album snafu&lt;br /&gt;
* pluto-storage-devices (533) - #799 (re)enable NFS instead of CIFS for internal disk drive sharing - merkur2k&lt;br /&gt;
&lt;br /&gt;
== Update 2010-08-02 23227 ==&lt;br /&gt;
* lmce-datalogger-plugin (686,687) - Refs #104 Add initial support for logging Sensor Tripped Events - Los93soL&lt;br /&gt;
* lmce-datalog-database (753) - Refs #104 Add initial support for logging Sensor Tripped Events - Los93soL&lt;br /&gt;
* pluto-boot-scripts (234) &lt;br /&gt;
** Start the StorageDevices setup in the background during system start, and restart samba as part of the storage devices setup.&lt;br /&gt;
** Fixes #748 Some MAC addresses would get truncated, Thanks Coley - Los93soL&lt;br /&gt;
* pluto-app-server (145,126) - Do proper check to determine if suspend is supported&lt;br /&gt;
* pluto-website-admin (220) - Fixes #569 Don&#039;t assume calls originate from the US - Los93soL&lt;br /&gt;
* asterisk-pluto (269) - Fixes #570 Attempt to lookup caller name in phone book and correct as possible - Los93sol&lt;br /&gt;
* pluto-asterisk (270,271) - Fixes #570 Attempt to lookup caller name in phone book and correct as possible - Los93soL&lt;br /&gt;
&lt;br /&gt;
== Update 2010-07-27 23202 ==&lt;br /&gt;
* asterisk-pluto (269) - Generate all speech for pluto-sos-menus, and generate /etc/asterisk/extensions_custom.conf completely dynamically - Los93soL&lt;br /&gt;
* libxine - Refs [http://svn.linuxmce.org/trac.cgi/ticket/535 #535], Backport of newer Matroska container support form lib-xine 1.1.17.&lt;br /&gt;
* lmce-picture-viewer (754,755) Refs [http://svn.linuxmce.org/trac.cgi/ticket/650 #650], fixes alpha blending of picture viewer&lt;br /&gt;
* pluto-boot-scripts (234) - Refs [http://svn.linuxmce.org/trac.cgi/ticket/758 #758], Fix cameras on MDs by using NFS mount for the camera dir&lt;br /&gt;
* pluto-updatemedia (405,406) - Refs [http://svn.linuxmce.org/trac.cgi/ticket/651 #434], Different handling for VDR files - WARNING!! Playback of VDR recording from video is still not possible!&lt;br /&gt;
* pluto-website-admin (220) - Make sure the phone system is updated with changes made to cell phone notifications via web admin - Los93soL&lt;br /&gt;
* pluto-std-plugins (116,135) - Refs #315 Should fix most of the call transfer issues, please test thoroughly - Los93soL&lt;br /&gt;
&lt;br /&gt;
== Update 2010-07-17 23165 == &lt;br /&gt;
* pluto-boot-scripts (234) - New startup script for the Launch Manager (fixes #753)&lt;br /&gt;
* pluto-website-admin (220)&lt;br /&gt;
** Weborbiter: add missing getNews function (fixes #755)&lt;br /&gt;
** Weborbiter: keep trying to get images/data when an communication error occurs&lt;br /&gt;
** Weborbiter: fix keyboard processing (fixes #754)&lt;br /&gt;
&lt;br /&gt;
== Update 2010-07-16 23161 ==&lt;br /&gt;
* pluto-proxy-orbiter (487,488) - now with committed fixes for the 404 in 7970&lt;br /&gt;
&lt;br /&gt;
== Update 2010-07-14 23155 ==&lt;br /&gt;
* pluto-asterisk (270,271) - Only send extra channel options for transfers when an extra channel is there, also fixes to viatalk create script so things work nicely again&lt;br /&gt;
* pluto-simplephone (498,499) - Whoops!  Missed this package a few days ago, fixes Orbiter phones so they connect with the SIP secret&lt;br /&gt;
* pluto-system-database (211) - Updates to the Size table to include older iPhone/iPod Touch sizes, as well as iPhone4 size.&lt;br /&gt;
* pluto-mythtv-plugin (136,152) - Fixed some incorrect behavior with generating mythtv storage groups&lt;br /&gt;
* lmce-launch-manager (299,298) - Fixed the StartCoreServices.sh from passing wrong Device_ID to Sync2amp.pl causing NAS passwords to become scrabled.&lt;br /&gt;
&lt;br /&gt;
== Update 2010-07-06 23148 ==&lt;br /&gt;
* freepbx - Changelog updated to get a new version number&lt;br /&gt;
* pluto-asterisk (270,271) - Add support for making announcements to phones&lt;br /&gt;
* pluto-dhcpd-plugin (302) - Define helper script as a perl script&lt;br /&gt;
* pluto-std-plugins (116,135) - Small speed up fix for video file list &lt;br /&gt;
* pluto-text-to-speech (283,284) - Add support for making announcements to phones&lt;br /&gt;
* pluto-website-admin (220) - Updates to the new weborbiter&lt;br /&gt;
&lt;br /&gt;
== Update 2010-07-03  ==&lt;br /&gt;
*asterisk-pluto (269)&lt;br /&gt;
** Fix pluto sos menu generates the voice dialogs now&lt;br /&gt;
** Update caller id when sos menu calls out&lt;br /&gt;
*freepbx&lt;br /&gt;
** General dialplan cleanup&lt;br /&gt;
** FreePBX system status works now&lt;br /&gt;
** Fix warnings when updating modules list in FreePBX&lt;br /&gt;
*lmce-hai-omni-rs232 (748,749) - Make sure HAI created devices set HAI as the controlled via device&lt;br /&gt;
*pluto-asterisk (270,271)&lt;br /&gt;
** Update create scripts and abstract redundant code&lt;br /&gt;
** Keep Line_HouseMode in sync when trunks are deleted&lt;br /&gt;
** Transfers are working again&lt;br /&gt;
*pluto-website-admin (220) - Don&#039;t display phone trunk passwords in web admin&lt;br /&gt;
*pluto-dhcpd-plugin (302) - Cisco 7960 (with SIP firmware) will use sip secret now&lt;br /&gt;
*pluto-std-plugins (116,135) - CRITICAL MEDIA PLUGIN FIX IN CMD_Set_Media_Private which was causing the router to rapidly crash due to odd data coming in from MythTV PlugIn. Will investigate further, but this does stop the crashes.&lt;br /&gt;
*pluto-mythtv-plugin (136,152) - Add changes to MythTvSyncDB.sh to always set AlwaysStreamFiles to 1 for media directors.&lt;br /&gt;
*lmce-hulu-player (744,745) - somehow, an older package snuck in. This needs to be rebuilt to fix the hanging bug that somehow reappeared. Yes, I went back and checked the checked in code from a fresh checkin, this will fix it&lt;br /&gt;
*pluto-storage-devices (533) - Added dependencies for nbd-client and nbd-server so that remote playing of DVDs will work, correctly. (Fixes #743)&lt;br /&gt;
* pluto-proxy-orbiter - updates from Dianemo&lt;br /&gt;
&lt;br /&gt;
== Update 2010-06-28 23119 ==&lt;br /&gt;
* asterisk-pluto (269) - Fix fire SOS event and dialplan cleanup - Los93soL&lt;br /&gt;
* freepbx - Fix fire SOS event and dialplan cleanup - Los93soL&lt;br /&gt;
* mjproxy (760,761)&lt;br /&gt;
* pluto-dhcpd-plugin (302) - update configure scripts for grandstream and snom 3xx phones for support of database secret.&lt;br /&gt;
* pluto-mythtv-player (133,152) - Bug #737 - MH Play Media can now set initial channel&lt;br /&gt;
* pluto-std-plugins (116,135) - Bug #736 - CMD_Delete_File in Media PlugIn now will not allow deletion of arbitrary files from the disk, lots of sanity checks. Support for deleting voicemails.&lt;br /&gt;
* pluto-system-database (211)&lt;br /&gt;
* pluto-xine-player (117,136) - enable subtitle support&lt;br /&gt;
* pluto-vdr (468,469) - Bug #737 - MH Play Media can now set initial channel&lt;br /&gt;
* pluto-website-admin (220) - Adds energy monitor that uses state change #677&lt;br /&gt;
&lt;br /&gt;
== Update 2010-06-18 23082 ==&lt;br /&gt;
* lmce-datalogger-plugin (686,687)&lt;br /&gt;
* lmce-datalog-database (753)&lt;br /&gt;
* pluto-boot-scripts (234)&lt;br /&gt;
* pluto-std-plugins (116,135)&lt;br /&gt;
* asterisk-pluto (269)&lt;br /&gt;
* pluto-asterisk (270,271)&lt;br /&gt;
* pluto-website-admin (220)&lt;br /&gt;
* pluto-mythtv-player (133,152) - Fix the missing MythTV Setup in Computing. as the Quick Start Template has moved rows.&lt;br /&gt;
* pluto-mythtv-plugin (134,153) - Fixes #732 - Storage devices not locally attached to core are not added to mythtv storage groups and cleans up some error messages&lt;br /&gt;
&lt;br /&gt;
== Update 2010-06-14 23070 ==&lt;br /&gt;
* pluto-std-plugins (116,135) - Fix to General Info Plugin to allow Firefox Bookmarks to work again. Please test!&lt;br /&gt;
* pluto-boot-scripts (234) - Modify Mozilla.sh to properly output a profile where bookmarks work again.&lt;br /&gt;
* mce-diskless-tools (627,628) - Modify DisklessInteractor to always return i386 until we get a working amd64 build again.&lt;br /&gt;
* vdr - Update to version 1.7.15 &lt;br /&gt;
** Get rid of a few patches&lt;br /&gt;
** Fixes for sound decoding in Denmark&lt;br /&gt;
&lt;br /&gt;
== Update 2010-06-10 23047 ==&lt;br /&gt;
* v4l2-Modules (732) - Fix Debian package naming to allow proper install of dkms package&lt;br /&gt;
&lt;br /&gt;
== Update 2010-06-09 23046 ==&lt;br /&gt;
* lmce-picture-viewer (754,755) Refs #650, start picture viewer minimized&lt;br /&gt;
* pluto-website-admin (220) - Change wording of VDR error message to better reflect what&#039;s going on.&lt;br /&gt;
* v4l2-Modules (732) - Fix debian package naming to allow proper install of dkms package&lt;br /&gt;
&lt;br /&gt;
== Update 2010-06-07 23036 ==&lt;br /&gt;
* pluto-asterisk (270.271) - Fix initial for no voicemail greetings after setup wizard (thanks los93sol)&lt;br /&gt;
* pluto-vdr (469,468) &lt;br /&gt;
** Syntax error fix in StartVDRClient - should start correct on MDs now.&lt;br /&gt;
** Add a default remote.conf so people can use the keyboard to control VDR.&lt;br /&gt;
* pluto-system-database (211) - Add support for TED5000 and Energy Monitoring Events to be used by future devices&lt;br /&gt;
&lt;br /&gt;
== Update 2010-06-01 23002 ==&lt;br /&gt;
* lmce-hulu-player (739,740) - changed the accept() loop to be non-blocking, fixing the hung hulu player issue when the router needs to reload. -TSCHAK &lt;br /&gt;
* mce-diskless-tools (627,628) - cBuckle sent in a bugfix that prevented media directors with more than one NIC from properly being detected. We now assume the booting NIC is eth0. Thanks cBuckle! -TSCHKA&lt;br /&gt;
* pluto-website-admin (220) - Fixes #705, and #706 -TSCHAK&lt;br /&gt;
* pluto-system-database (211) - Fixes to QuickStartTemplate so icons will show. -TSCHAK&lt;br /&gt;
* pluto-std-plugins (116,135) - Fix to General Info Plugin so that it will properly show PNG images&lt;br /&gt;
* pluto-boot-scripts (234) - Fix to UpdateQuickStartIcons.sh to download quick start icons and convert to PNG if needed.&lt;br /&gt;
* lmce-update-system (650,651) - Fix preferences file&lt;br /&gt;
&lt;br /&gt;
== Update 2010-05-20 22959 ==&lt;br /&gt;
* lmce-update-system (650,651) - Setup pinning to the LinuxMCE repository&lt;br /&gt;
* pluto-mythtv-plugin (134,153) - MythTV 0.23 support has been baked in. Thanks mandingo&lt;br /&gt;
* pluto-mythtv-player (133,152)&lt;br /&gt;
&lt;br /&gt;
== Update 2010-05-20 22958 ==&lt;br /&gt;
&lt;br /&gt;
* pluto-orbitergen (226,227) - Orbitergen changed to specify that MIDs are on-screen orbiters. This may change in the future, but I need to test something... --[[User:Tschak909|Tschak909]] 06:22, 9 May 2010 (CEST)&lt;br /&gt;
* pluto-system-database (211) - [http://svn.linuxmce.org/trac.cgi/ticket/684 Toshiba RAS series IR control template]&lt;br /&gt;
* pluto-generic-serial-device (307,335) - [http://svn.linuxmce.org/trac.cgi/ticket/685 access return parameters in GSD device]&lt;br /&gt;
* mythtv-0.23&lt;br /&gt;
&lt;br /&gt;
== Update 2010-04-28 22898  ==&lt;br /&gt;
* pluto-website-admin (220) - [http://svn.linuxmce.org/trac.cgi/ticket/662 Fixes #662 (again ;) )]&lt;br /&gt;
* pluto-system-database (211) - sqlCVS additions for the SmartQ V7 MID&lt;br /&gt;
* pluto-updateentarea (341,342) - code in Setup to allow for devices in the MID category to get media scenarios.&lt;br /&gt;
* pluto-storage-devices (533) - Refs [http://svn.linuxmce.org/trac.cgi/ticket/672 #672]&lt;br /&gt;
* mce-diskless-tools (627,628) - Refs [http://svn.linuxmce.org/trac.cgi/ticket/655 #655]&lt;br /&gt;
&lt;br /&gt;
== Update 2010-04-14 22889 *CLOUD Release* ==&lt;br /&gt;
*  pluto-system-database (211) changes to the repository information for a package&lt;br /&gt;
&lt;br /&gt;
== Update 2010-04-08 22883 ==&lt;br /&gt;
* pluto-boot-script (234) - Change smb.conf template to disable unix extension.&lt;br /&gt;
* pluto-website-admin (220) - [http://svn.linuxmce.org/trac.cgi/ticket/662 Fixes #662]&lt;br /&gt;
* lmce-picture-plugin (756,757) Refs [http://svn.linuxmce.org/trac.cgi/ticket/650 #650] fix pause of slideshow&lt;br /&gt;
* pluto-system-database (211) [http://svn.linuxmce.org/trac.cgi/ticket/650 #650] designer changes for picture viewer&lt;br /&gt;
&lt;br /&gt;
== Update 2010-03-23 22876 ==&lt;br /&gt;
* pluto-std-plugins (116,135) Refs [http://svn.linuxmce.org/trac.cgi/ticket/650 #650], media plugin supports play all for pictures&lt;br /&gt;
* lmce-picture-viewer (754,755) Refs [http://svn.linuxmce.org/trac.cgi/ticket/650 #650], picture viewer&lt;br /&gt;
* lmce-picture-plugin (756,757) Refs [http://svn.linuxmce.org/trac.cgi/ticket/650 #650], picture plugin&lt;br /&gt;
* Pluto PNP Detection Scripts (562), added detection script for Pioneer Elite series of Receivers&lt;br /&gt;
* Pluto Capture Card Setup Scripts (580), added input change scripts for various capture cards&lt;br /&gt;
&lt;br /&gt;
== Update 2010-03-14 22853 ==&lt;br /&gt;
* pluto-website-admin (220) - Refs [http://svn.linuxmce.org/trac.cgi/ticket/637 #637] Reload event plugin configuration when events change (no need to reload router anymore, except after adding/deleting event commands), [http://svn.linuxmce.org/trac.cgi/ticket/648 #648] Fix device template adding to avoid sqlCVS commit problems&lt;br /&gt;
* pluto-orbiter (119,138) [http://svn.linuxmce.org/trac.cgi/ticket/647 #647] Enable event mapping for mouse buttons&lt;br /&gt;
* pluto-system-database (211) [http://svn.linuxmce.org/trac.cgi/ticket/646 #646] Device template for Logitech MX Air mouse&lt;br /&gt;
* pluto-std-plugins (116,135) - Refs [http://svn.linuxmce.org/trac.cgi/ticket/651 #651] fix router crash with boolean event parameters&lt;br /&gt;
&lt;br /&gt;
== Update 2010-03-07 22832 ==&lt;br /&gt;
&lt;br /&gt;
* pluto-zwave-lighting (505,506) - Refs [http://svn.linuxmce.org/trac.cgi/ticket/620 #620] make command for child work again&lt;br /&gt;
* pluto-system-database (211) - new package and package changes for datalogger plugin&lt;br /&gt;
* lmce-datalog-database (753) - datalogger database, refs [http://svn.linuxmce.org/trac.cgi/ticket/630 #630]&lt;br /&gt;
* lmce-datalogger-plugin (686,687) - Refs [http://svn.linuxmce.org/trac.cgi/ticket/630 #630] install automatically, configurable graph display&lt;br /&gt;
* lmce-datalog-db (688,689) - Refs [http://svn.linuxmce.org/trac.cgi/ticket/630 #630]&lt;br /&gt;
* pluto-website-admin (220) - Refs [http://svn.linuxmce.org/trac.cgi/ticket/630 #630], [http://svn.linuxmce.org/trac.cgi/ticket/633 #633], fix for some attribute names not showing up in media browser page, improvements to datalogger section&lt;br /&gt;
* pluto-std-plugins (116,135) - Refs [http://svn.linuxmce.org/trac.cgi/ticket/637 #637] allow event plugin to reload configuration without a router reload&lt;br /&gt;
&lt;br /&gt;
== Update 2010-02-28 22812 ==&lt;br /&gt;
&lt;br /&gt;
Hulu Now works, and the HAI Omni Security panel driver has been checked in and integrated.&lt;br /&gt;
&lt;br /&gt;
* pluto-system-database (211) - Addition of buttons to Hulu Remote (tschak)&lt;br /&gt;
* lmce-hulu-player (739,740) - Hulu Player now uses Hulu Desktop&#039;s LIRCD port via a fake LIRCD Server. (tschak)&lt;br /&gt;
* 751  	HAI Control Program&lt;br /&gt;
* 750 	HAI Control Program Source&lt;br /&gt;
* 749  	LinuxMCE HAI Omni RS232 Panel Support&lt;br /&gt;
* 748 	LinuxMCE HAI Omni RS232 Panel Support Source&lt;br /&gt;
* pluto-zwave-lighting (505,506) - Refs [http://svn.linuxmce.org/trac.cgi/ticket/620 #620] multi instance support for sensors&lt;br /&gt;
* pluto-mplayer-player (657,656) - Refs [http://svn.linuxmce.org/trac.cgi/ticket/471 #471] Finally committed vdpau support for mplayer&lt;br /&gt;
&lt;br /&gt;
== Update 2010-02-23 22803 ==&lt;br /&gt;
* pluto-boot-script (234) &lt;br /&gt;
** Install zaptel-modules and load ztdummy for meetme&lt;br /&gt;
** Disable KDE screensaver upon KDE Desktop start (fixes #600)&lt;br /&gt;
* pluto-dhcpd-plugin (302) - Make sure to transfer database secret into sip_additional.conf&lt;br /&gt;
* pluto-orbiter (119,138) - Color fixes&lt;br /&gt;
* pluto-proxy-orbiter (488,487) - Color fixes - thanks radu&lt;br /&gt;
* pluto-vdr (468,469)&lt;br /&gt;
** Only create setup.conf if it does not contain a remotetimers entry&lt;br /&gt;
** Disable shutdown of system from VDR&lt;br /&gt;
* v4l2-firmware (733) - Added new firmware drivers to support a broader range of DVB cards&lt;br /&gt;
&lt;br /&gt;
== Update 2010-02-18 22795 ==&lt;br /&gt;
* pluto-proxy-orbiter (487,488) Fixes [http://svn.linuxmce.org/trac.cgi/ticket/610 #610]&lt;br /&gt;
&lt;br /&gt;
== Update 2010-02-16 22777 ==&lt;br /&gt;
* pluto-std-plugins (116,135)&lt;br /&gt;
** Fixes event criteria for PK_EventParameter [http://svn.linuxmce.org/trac.cgi/ticket/602 #602]&lt;br /&gt;
** Fixes time of day - can now check againt hh:mm:ss [http://svn.linuxmce.org/trac.cgi/ticket/605 #605]&lt;br /&gt;
** Fixed bug introduced in the two fixes above [http://svn.linuxmce.org/trac.cgi/ticket/608 #608]&lt;br /&gt;
* pluto-vdr (468,469) - Remove SourceCaps entries from default setup.conf&lt;br /&gt;
* pluto-system-database (211) - Hulu Player/PlugIn changes&lt;br /&gt;
* Hulu PlugIn (737,738) - device template constant fixes&lt;br /&gt;
* Hulu Player (739,740) - device template constant fixes&lt;br /&gt;
&lt;br /&gt;
== Update 2010-02-14 22768 ==&lt;br /&gt;
* pluto-xine-player (117,136) - removed dependency for libxine1-ffmpeg&lt;br /&gt;
&lt;br /&gt;
== Update 2010-02-13 22765 ==&lt;br /&gt;
* pluto-std-plugins - fixes #587&lt;br /&gt;
&lt;br /&gt;
== Update 2010-02-12 22763 ==&lt;br /&gt;
* new-installer &lt;br /&gt;
** changes in kdm link management&lt;br /&gt;
** verify kubuntu-desktop is installed&lt;br /&gt;
* pluto-boot-script (234) - Fix copying of desktop link to activate Orbiter into root&#039;s Desktop dir&lt;br /&gt;
* pluto-vdr (469,468) - Only backup setup.conf if it exists.&lt;br /&gt;
&lt;br /&gt;
== Update 2010-02-10 22758 ==&lt;br /&gt;
* pluto-boot-script (234)- Add Activate Orbiter to KDE desktop (#596)&lt;br /&gt;
* mce-diskless-tools (627,628) - Add a link to the desktop to call Activate Orbiter (#596)&lt;br /&gt;
* linux-diskless-image (2.6.27-17) - Update to the latest kernel released by Ubuntu&lt;br /&gt;
* alsa-modules (2.6.27-17) - Update to the latest kernel released by Ubuntu&lt;br /&gt;
* zaptel-modules (2.6.27-17) - Update to the latest kernel released by Ubuntu&lt;br /&gt;
&lt;br /&gt;
== Update 2010-02-08 22754 ==&lt;br /&gt;
* Hulu PlugIn (737,738) - Initial Beta of Hulu Support&lt;br /&gt;
* Hulu Player (739,740) - from TSCHAK&lt;br /&gt;
* Game Player (673,674) - Added support for custom controller files to Game Player - see TankStick DT #2100 for an example.&lt;br /&gt;
* pluto-std-plugins - fixes #587&lt;br /&gt;
&lt;br /&gt;
== Update 2010-02-03 22733 ==&lt;br /&gt;
* MythTV - We provide our own packages (0.22 sources packages from mythbuntu )&lt;br /&gt;
* ZWave Lighting (505,506) - Wizard bugfix&lt;br /&gt;
&lt;br /&gt;
== Update 2010-01-27 22704 ==&lt;br /&gt;
* pluto-photo-screen-saver (582,581) - maintain correct image aspect ratio [http://svn.linuxmce.org/trac.cgi/ticket/568 #568]&lt;br /&gt;
* pluto-vdr (469,468) &lt;br /&gt;
** Use remotetimer for central scheduling&lt;br /&gt;
** Don&#039;t autostart VDR on MD&lt;br /&gt;
** Support VDPAU &lt;br /&gt;
* VDR - We provide our own packages (1.7.11 sources packages from eTobi and free-vdr.de)&lt;br /&gt;
&lt;br /&gt;
==  Update 2010-01-16 22689 ==&lt;br /&gt;
* pluto-boot-scripts (234) - new safe_delete.sh script for safely deleting database entries&lt;br /&gt;
* pluto-cm15a (730,731) - new DCE device, CM15A USB interface for X10&lt;br /&gt;
* pluto-mythtv-plugin (134,153) - Capture card install now goes directly to the setup wizard&lt;br /&gt;
* pluto-orbiter (119,138) - Capture card install now goes directly to the setup wizard&lt;br /&gt;
* pluto-storage-devices (533) - mount no longer echos out errors during ro filesystem&lt;br /&gt;
* pluto-photo-screen-saver (582,581) - Rotate image according to exif tag [http://svn.linuxmce.org/trac.cgi/ticket/566 #566]&lt;br /&gt;
&lt;br /&gt;
== Update 2010-01-08 22669 ==&lt;br /&gt;
*pluto-boot-scripts (234) &lt;br /&gt;
** Purge_Camera_Archives.pl fixed&lt;br /&gt;
** backup/restore fixed&lt;br /&gt;
** enable_wol called from Startup script - WOL for MDs should work again&lt;br /&gt;
*pluto-motion-wrapper (456,455) - Now calls the purge script every 6 hours and on reload&lt;br /&gt;
*pluto-storage-devices (533) &lt;br /&gt;
** Hostname now added to string to be displayed on orbiters when new drives are detected. &lt;br /&gt;
** Boot partitions will be filtered out also.&lt;br /&gt;
*pluto-system-database (211) - changes to MotionWrapper&#039;s motion.conf default options to use new option names&lt;br /&gt;
&lt;br /&gt;
== Update 2009-12-25 22639 - Christmas fix ==&lt;br /&gt;
* freepbx - removal of chan_vpb.so to circumvent coredumps on system without a Voicetronix board (#519)&lt;br /&gt;
* pluto-avwizard (555,556) - modification of startup scripts to not screw the system upon status calls to the startup scripts&lt;br /&gt;
* pluto-boot-scripts (234)&lt;br /&gt;
** modification of startup scripts to not screw the system upon status calls to the startup scripts&lt;br /&gt;
** updated Backup/Restore functionallity&lt;br /&gt;
** fixes  web admin log links for hybrid MD&lt;br /&gt;
** Make sure only a single logrotate configuration file for LinuxMCE exist&lt;br /&gt;
* pluto-hdhomerun(621,620)- Fixes bug where only 1 tuner was added to mythtv&lt;br /&gt;
* pluto-mythtv-plugin (134,153) - Fixes deletion of of hostname from mythconverg.capturecard by creating and using a dummy videosource&lt;br /&gt;
* pluto-simplephone (498,499) - Adds support for password in DeviceData&lt;br /&gt;
* pluto-std-plugins (116,135) - Adds support for specialized interfaces&lt;br /&gt;
* pluto-system-database (211) - Some devicedata changes for SIP phone templates to include devicedata for password&lt;br /&gt;
* pluto-website-admin (220) - Fixes Climate Command Wizard Set Temperature command, Climate Command Wizard also now works with On//Off Climate Devices&lt;br /&gt;
* pluto-orbiter (119,138) - Fixes issue with input devices crashing orbiter [http://svn.linuxmce.org/trac.cgi/ticket/522 #522]&lt;br /&gt;
&lt;br /&gt;
== Update 2009-12-14 22600 ==&lt;br /&gt;
* pluto-dcerouter (154,155) - Fixes broken Delay command&lt;br /&gt;
* pluto-libresolution (545,544) - UseEDID HDMI Audio xorg.conf entry&lt;br /&gt;
* pluto-asterisk (270.271) - Fix for Messagenet configuration script (changing Window&#039;s EOL characters)&lt;br /&gt;
* pluto-system-database (211) - Some devicedata changes for dcerouter delay command and DCS-5300G camera&lt;br /&gt;
* pluto-website-admin (220) - fix HDMI selection in web admin&lt;br /&gt;
* pluto-xine-player (117,136) - removed 1 second sleep after play media. refactored code to stop screen saver&lt;br /&gt;
&lt;br /&gt;
== Update 2009-12-12 22598 ==&lt;br /&gt;
* pluto-website-admin (220) - sql fix from http://svn.linuxmce.org/trac.cgi/changeset/22567&lt;br /&gt;
* pluto-xine-plugin (118,137) - fix for remote audio cd streaming [http://svn.linuxmce.org/trac.cgi/ticket/470 #470] - still not working&lt;br /&gt;
* pluto-xine-player - refactor screen saver handling&lt;br /&gt;
* pluto-disk-drive (122,141) - fix for remote audio cd streaming [http://svn.linuxmce.org/trac.cgi/ticket/470 #470] - still not working&lt;br /&gt;
* pluto-x-scripts (520,523) - fix for audio over HDMI&lt;br /&gt;
* alsa-lib, alsa-utils, lib64asound2, libasound2 - fix for audio over HDMI&lt;br /&gt;
&lt;br /&gt;
== Update 2009-12-06 22569 ==&lt;br /&gt;
* pluto-dce-router (154,155) - now depends on lmce-skins-uita&lt;br /&gt;
* pluto-system-database (211) - new lmce-skins-uita package definition&lt;br /&gt;
* lmce-skins-uita (727) - new skin&lt;br /&gt;
* MPlayer_Player (656,657) - Videos that is played by mplayer can now take advantage of vdpau. (Set hw accel to &amp;quot;auto&amp;quot; or &amp;quot;vdpau&amp;quot;)&lt;br /&gt;
* pluto-xine-player (117,136) - don&#039;t stop screen saver when playing audio [http://svn.linuxmce.org/trac.cgi/ticket/486 #486]&lt;br /&gt;
* pluto-orbiter (119,138) - hide xine when playing audio, keeps screen saver visible [http://svn.linuxmce.org/trac.cgi/ticket/486 #486]&lt;br /&gt;
* Update of Zaptel and other kernel related packages to -16&lt;br /&gt;
&lt;br /&gt;
== Update 2009-12-03 22558 ==&lt;br /&gt;
* Build_Replacement_Package - freepbx (ubuntu/asterisk/freepbx) - Ticket #345 - Fixes the issue of installing new modules in FreePBX.&lt;br /&gt;
* pluto-asterisk (270.271) - Phone Lines fixing - asterisk (src/asterisk) - Ticket #374 - Fixes the issue during the creation procedure of a new phone lines via web LinuxMCE Admin. New MessageNet Provider support.&lt;br /&gt;
* pluto-avwizard (555,556) - Fixes #480 - Fails to identify untouched xorg.conf&lt;br /&gt;
* pluto-boot-scripts (234) &lt;br /&gt;
** Cleanup in nvidia-config&lt;br /&gt;
** MD WOL Problem fixed&lt;br /&gt;
* pluto-website-admin (220)&lt;br /&gt;
** #469 IVR menue will now be regenerated every time a phone line is added.&lt;br /&gt;
** #221 IR commands selection screen now has sort modes to make it easier to sift through all those commands.&lt;br /&gt;
** #219 Various layout improvements to the wizard pages.&lt;br /&gt;
* pluto-xine-player (117,136) - changes for HDMI out&lt;br /&gt;
* pluto-std-plugins (116,135) - Changes to Telecom PlugIn to give proper audio switching behaviour when USB Conference microphones are used for the media director phone. This is of relevance to particular configurations that do not allow concurrent access to the soundcard (such as coax/optical settings). -tschak&lt;br /&gt;
&lt;br /&gt;
== Bugfixes ==&lt;br /&gt;
=== Mythtv-plugin fails to install ===&lt;br /&gt;
Install with apt-get install -f &amp;lt;name-of-package&amp;gt;&lt;/div&gt;</summary>
		<author><name>Icosahedron</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=Developers_Guide&amp;diff=27732</id>
		<title>Developers Guide</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Developers_Guide&amp;diff=27732"/>
		<updated>2011-04-20T02:11:26Z</updated>

		<summary type="html">&lt;p&gt;Icosahedron: Fixed a couple incorrect paragraph numbers&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Programmer&#039;s Guide]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
&lt;br /&gt;
{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
  | __TOC__&lt;br /&gt;
  |}&lt;br /&gt;
LinuxMCE developer’s guide&lt;br /&gt;
Document version 1.0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==1. Architecture==&lt;br /&gt;
&lt;br /&gt;
LinuxMCE uses a modular architecture. The heart of LinuxMCE, the &#039;main application&#039; DCERouter is nothing but a general-purpose message router. It has absolutely no code relating to any of LinuxMCE’s functionality--it just relays messages between &amp;quot;Devices&amp;quot;. The functionality of LinuxMCE is entirely in separate programs (aka &amp;quot;Devices&amp;quot;) which all run independently and communicate with each other by passing messages through DCERouter over sockets. &lt;br /&gt;
&lt;br /&gt;
[[Image:LMCE_Architecture_mini.jpg|frame|none|LinuxMCE architecture – the devices]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The plug-in’s are also devices, but instead of running as separate binaries, they run as dynamic libraries in DCERouter’s memory space.&lt;br /&gt;
A LinuxMCE system can have one or more Media Directors (MD’s). Also, a Core machine can have also the functionality of a Media Director. We call it a Hybrid:&lt;br /&gt;
&lt;br /&gt;
[[Image:LMCE_Architecture_-_the_machines.jpg|frame|none|Linux MCE architecture – the machines]]&lt;br /&gt;
&lt;br /&gt;
==2. DCE== &lt;br /&gt;
&lt;br /&gt;
DCE (Data, Commands and Events) is a lightweight network protocol allowing any device to access its configuration (ie data) from a central database, send + receive commands, and fire + respond to events.&lt;br /&gt;
&lt;br /&gt;
The DCE protocol can be implemented with any device that supports standard networking. LinuxMCE provides a DCE library written in Ansi C++ that implements the protocol on any socket-compatible operating system, and has been tested on Linux and Windows. Porting to other languages should not be a big task. Because the messaging is socket-based, any device, regardless of operating system or language, can be used with any other device.&lt;br /&gt;
&lt;br /&gt;
In each installation there is also one DCE Router, through which all messages are routed. An &amp;quot;installation&amp;quot; is a group of devices treated as a unit, and normally corresponds to a physical residence.&lt;br /&gt;
&lt;br /&gt;
The DCE Router is itself quite simple. It just opens a port for incoming connections. When a device connects, the device sends its unique ID, or Mac Address. The DCE Router does a lookup in a database, and returns that device&#039;s data (configuration). DCERouter also sends back a list of all the other devices in the installation with basic information including the commands they know how to implement. The DCE Device then opens a minimum of 2 socket connections to the router. One is for incoming messages (usually commands) from the router, another for outgoing messages (usually events) to it. The DCE Library, which implements the protocol for DCE Devices and the DCE Router, will also open a 3rd socket connection so that it has 2 outgoing sockets: 1 dedicated for sending events and the other for sending other types of messages, like requests and commands to other devices.&lt;br /&gt;
&lt;br /&gt;
All messages go through the router. The devices do not communicate directly to each other. The message will contain information such as the destination device, the type of message, the message id and any number of optional parameters. The router does nothing with the message but forward it to the destination device or devices if the message is being sent to more than one. The DCE library, from which DCE Devices and the DCE Router are derived, knows how to receive incoming messages of the type command and route them to a message handler in the DCE Device. &lt;br /&gt;
&lt;br /&gt;
Another important library is PlutoUtils. It has cross-platform wrapper classes to handle file, strings, processes, threads synchronization, database utils, etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==3. DCERouter==&lt;br /&gt;
&lt;br /&gt;
When a DCE Device connects, DCERouter gives it its configuration data and is responsible for receiving and forwarding any messages to and from the devices that connect to it. The most common types of messages are commands and events. All communication goes through DCE Router. If a doorbell device fires an event that the button was pushed, that event goes to DCERouter, which will forward it whatever plug-in has indicated it wants to handle that type of event. If the plug-in then wants to send a command to the media player, this command goes first to the DCE Router, which will then forward it to the media player. The DCE Devices never communicate with each other directly--everything goes through DCE Router. Devices can create their own types of messages specific to them--not just commands and events. For example, a DVD player may send a message that contains a screen capture, or a TV program may send a stream of messages with streaming video. To DCE Router it makes no difference. Messages just have sources and destinations, and DCE Router does not care what type of message it is.&lt;br /&gt;
&lt;br /&gt;
DCERouter also allows you to Message Interceptors. This means a device or plug-in can say that it wants to pre-process all messages that meet a certain criteria. For example, a security plug-in may want to see all events relating to security.&lt;br /&gt;
Plug-in’s are DCE Devices that run within the DCERouter&#039;s memory space. They are DCE Devices just like any other and they are created like any other DCE Device. The code is the same, it&#039;s just a compilation option whether the device is built as a normal DCE Device, which runs in its own memory space and communicates with DCERouter over a socket, or if it&#039;s a plug-in which gets loaded into DCERouter&#039;s memory space. Plug-in’s have the ability to get pointers to the in-memory instance of the other plug-ins so they can share memory and call each others methods.&lt;br /&gt;
&lt;br /&gt;
See below a simplified class diagram for DCERouter:&lt;br /&gt;
[[Image:DCERouter.jpg|frame|none|Simplified class diagram for the DCE router]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==4. The binary communication protocol==&lt;br /&gt;
&lt;br /&gt;
===4.1 Introduction===&lt;br /&gt;
A device can create a command connection and one or more event connections to the router. &lt;br /&gt;
*The command connection is used as an incoming connection and device will use it to receive message from the router (commands). &lt;br /&gt;
*An event connection is used by the device as an outgoing connection to notify the router about events or the deliver commands to other devices. &lt;br /&gt;
The DCERouter process is listening on 3450 port. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===4.2. How to create an event connection===&lt;br /&gt;
Here is how the handshake is made for an event connection: &lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; Device sends: &lt;br /&gt;
EVENT &amp;lt;my_device_id&amp;gt; &#039;\n&#039; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;&amp;lt; The router will respond with : &lt;br /&gt;
OK &amp;lt;my_device_id&amp;gt; IP=&amp;lt;device_ip_address&amp;gt; &#039;\n&#039; &lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; To send a message, the device will send : &lt;br /&gt;
MESSAGE &amp;lt;size_of_binary_message&amp;gt; &#039;\n&#039; &lt;br /&gt;
&lt;br /&gt;
and then:&lt;br /&gt;
&amp;lt;serialized_binary_message&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===4.3 How to serialize data===&lt;br /&gt;
DCE uses SerializeClass to serialize/deserialize data. &lt;br /&gt;
The sources can be found here : src/SerializeClass/Serialize.h/cpp. &lt;br /&gt;
The deserialize the data, the deserializing module must know the way the data was serialized like this: &lt;br /&gt;
* 4 bytes, unsigned long&lt;br /&gt;
* 1 byte, unsigned char &lt;br /&gt;
&lt;br /&gt;
Primitives: &lt;br /&gt;
* 8 bytes, unsigned int64 &lt;br /&gt;
* 8 bytes, int64 &lt;br /&gt;
* 4 bytes, unsigned long &lt;br /&gt;
* 4 bytes, unsigned short &lt;br /&gt;
* 1 byte, unsigned char &lt;br /&gt;
* 1 byte, char &lt;br /&gt;
* 4 byte, long &lt;br /&gt;
* 4 bytes, float &lt;br /&gt;
* 8 bytes, double &lt;br /&gt;
* 2 bytes, short&lt;br /&gt;
&lt;br /&gt;
Complex types: &lt;br /&gt;
&lt;br /&gt;
#string &lt;br /&gt;
#*STR_LENGTH bytes, the array with chars &lt;br /&gt;
#*1 byte, &#039;/0&#039; (value 0x00) &lt;br /&gt;
#:&lt;br /&gt;
#block of data &lt;br /&gt;
#*BLOCK_LENGTH bytes, the array with bytes &lt;br /&gt;
#:&lt;br /&gt;
#vector of strings &lt;br /&gt;
#*VECT_LENGTH bytes, the number of strings from vector &lt;br /&gt;
#*string 0 &lt;br /&gt;
#*string 1 &lt;br /&gt;
#*... &lt;br /&gt;
#*string VECT_LENGTH - 1 &lt;br /&gt;
&lt;br /&gt;
Other complex types serialized (see SerializeClass.cpp for details) : &lt;br /&gt;
* map&amp;lt;int,string&amp;gt; &lt;br /&gt;
* map&amp;lt;u_int64_t,string&amp;gt; &lt;br /&gt;
* map&amp;lt;int,int&amp;gt; &lt;br /&gt;
* map&amp;lt;string,string&amp;gt; &lt;br /&gt;
* vector&amp;lt;int&amp;gt; &lt;br /&gt;
* vector&amp;lt; pair&amp;lt;int,int&amp;gt; &amp;gt; &lt;br /&gt;
* map&amp;lt;string, pair&amp;lt;int,int&amp;gt; &amp;gt; &lt;br /&gt;
&lt;br /&gt;
SerializeClass also allowed you to serialize/deserialize custom objects. Examples: &lt;br /&gt;
* PlutoColor &lt;br /&gt;
* PlutoPoint &lt;br /&gt;
* PlutoSize &lt;br /&gt;
* PlutoRectangle &lt;br /&gt;
* PlutoDataBlock&lt;br /&gt;
&lt;br /&gt;
===4.4 How to serialize a message===&lt;br /&gt;
&lt;br /&gt;
The class used by DCE is Message class from src/DCE/Message.h/cpp unit. &lt;br /&gt;
&lt;br /&gt;
This is how the raw data looks like into a binary message: &lt;br /&gt;
&lt;br /&gt;
* long, value must be 1234 (magic number) &lt;br /&gt;
* long, &amp;lt;device_from_id&amp;gt; &lt;br /&gt;
* long, &amp;lt;device_to_id&amp;gt; &lt;br /&gt;
* long, &amp;lt;device_group_to_id&amp;gt; &lt;br /&gt;
* long, &amp;lt;message_id&amp;gt; &lt;br /&gt;
* long, &amp;lt;message_priority&amp;gt; &lt;br /&gt;
* long, &amp;lt;message_type&amp;gt; &lt;br /&gt;
* long, &amp;lt;device_category_to&amp;gt; &lt;br /&gt;
* long, &amp;lt;device_template_to&amp;gt; &lt;br /&gt;
* unsigned char, &amp;lt;include_children&amp;gt; &lt;br /&gt;
* long, &amp;lt;message_broadcast_level&amp;gt; &lt;br /&gt;
* long, &amp;lt;message_retry&amp;gt; &lt;br /&gt;
* unsigned char, &amp;lt;relative_to_sender&amp;gt; &lt;br /&gt;
* long, &amp;lt;expected_response&amp;gt; &lt;br /&gt;
* string, &amp;lt;device_list_to&amp;gt; &lt;br /&gt;
* unsigned long, &amp;lt;number_of_string_parameters&amp;gt; &lt;br /&gt;
**	foreach &amp;lt;string_parameter&amp;gt; &lt;br /&gt;
***	long, &amp;lt;string_parameter_id&amp;gt; &lt;br /&gt;
***     string, &amp;lt;string_parameter_value&amp;gt; &lt;br /&gt;
**	end_foreach &lt;br /&gt;
* unsigned long, &amp;lt;number_of_data_parameters&amp;gt; &lt;br /&gt;
**	foreach &amp;lt;data_parameter&amp;gt; &lt;br /&gt;
***	long, &amp;lt;data_parameter_id&amp;gt; &lt;br /&gt;
***	unsigned long, &amp;lt;data_parameter_length&amp;gt; &lt;br /&gt;
***	array of bytes, &amp;lt;data_parameter_value&amp;gt; &lt;br /&gt;
**      end_foreach &lt;br /&gt;
* unsigned long, &amp;lt;number_of_extra_messages&amp;gt; &lt;br /&gt;
**	foreach &amp;lt;extra_message&amp;gt; &lt;br /&gt;
***	unsigned long, &amp;lt;serialized_extra_message_length&amp;gt; &lt;br /&gt;
***	array of bytes, &amp;lt;serialized_extra_message_value&amp;gt; &lt;br /&gt;
**	end_foreach &lt;br /&gt;
* unsigned long, must be 6789 &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Enums:&#039;&#039;&#039; &lt;br /&gt;
* enum eBroadcastLevel { BL_None=0, BL_DirectSiblings=1, BL_SameComputer=2, BL_SameRoom=3, BL_SameHouse=4, BL_AllHouses=5 }; &lt;br /&gt;
* enum eRetry { MR_None=0, MR_Retry=1, MR_Persist=2 }; &lt;br /&gt;
* enum eExpectedResponse { ER_None=0, ER_ReplyMessage, ER_ReplyString, ER_DeliveryConfirmation }; &lt;br /&gt;
* message types: enum { MESSAGETYPE_COMMAND=1, MESSAGETYPE_EVENT=2, MESSAGETYPE_DATAPARM_CHANGE=3, MESSAGETYPE_REPLY=4, MESSAGETYPE_DATAPARM_REQUEST=5, MESSAGETYPE_LOG=6, MESSAGETYPE_SYSCOMMAND=7, MESSAGETYPE_REGISTER_INTERCEPTOR=8, MESSAGETYPE_MESSAGE_INTERCEPTED=9, MESSAGETYPE_EXEC_COMMAND_GROUP=10, MESSAGETYPE_START_PING=11, MESSAGETYPE_STOP_PING=12, MESSAGETYPE_PURGE_INTERCEPTORS=13, MESSAGETYPE_PENDING_TASKS=14 }; &lt;br /&gt;
* message priority : enum { PRIORITY_LOW=0, PRIORITY_NORMAL=1, PRIORITY_HIGH=2, PRIORITY_URGENT=3 }; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important notes:&#039;&#039;&#039; &lt;br /&gt;
* when sending to device template, set &amp;lt;device_template_to&amp;gt; to desired device template and also &amp;lt;device_to_id&amp;gt; to -2000 (DEVICEID_MASTERDEVICE) &lt;br /&gt;
* when sending to device category, set &amp;lt;device_category_to&amp;gt; to desired device category and also &amp;lt;device_to_id&amp;gt; to -2001 (DEVICEID_CATEGORY) &lt;br /&gt;
* when sending to a list with devices, set &amp;lt;device_list_to&amp;gt; to comma delimited list with devices and also &amp;lt;device_to_id&amp;gt; to -2002 (DEVICEID_LIST). &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example:&#039;&#039;&#039; &lt;br /&gt;
Here is the pseudocode to send the &amp;quot;on&amp;quot; command to a light switch. &lt;br /&gt;
We&#039;ll assume that the your device has #id 250 and the light switch has device #id 100 &lt;br /&gt;
&lt;br /&gt;
*MyDevice.Connect(router_ip, 3450 /*port*/)&lt;br /&gt;
*MyDevice.SendData(&amp;quot;EVENT 250\n&amp;quot;) &lt;br /&gt;
*MyDevice.ReceiveData() //until you&#039;ll get a &#039;\n&#039; ; you should receive: &amp;quot;OK 250 IP=&amp;lt;device_ip_address&amp;gt; &#039;\n&#039;; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;next: creating a message&#039;&#039;&#039; &lt;br /&gt;
let&#039;s say MyData is an array of bytes &lt;br /&gt;
*SerializeLong(MyData, 1234) //magic number &lt;br /&gt;
*SerializeLong(MyData, 250) //my id &lt;br /&gt;
*SerializeLong(MyData, 100) //the light switch &lt;br /&gt;
*SerializeLong(MyData, 0) //not used now &lt;br /&gt;
*SerializeLong(MyData, 192) //message id of command &#039;on&#039; &lt;br /&gt;
*SerializeLong(MyData, 1) //normal priority &lt;br /&gt;
*SerializeLong(MyData, 1) //message type : command &lt;br /&gt;
*SerializeLong(MyData, 0) //not used now &lt;br /&gt;
*SerializeLong(MyData, 0) //not used now &lt;br /&gt;
*SerializeUnsignedChar(MyData, 0) //not including children &lt;br /&gt;
*SerializeLong(MyData, 0) //broadcast level : none &lt;br /&gt;
*SerializeLong(MyData, 0) //don&#039;t retry &lt;br /&gt;
*SerializeUnsignedChar(MyData, 0) //relative to sender false &lt;br /&gt;
*SerializeLong(MyData, 3) //delivery confirmation &lt;br /&gt;
*SerializeString(MyData, &amp;quot;&amp;quot;) //device list to empty &lt;br /&gt;
*SerializeUnsignedLong(MyData, 2) //2 parameters &lt;br /&gt;
*SerializeLong(MyData, 98) //parameter type #98 &lt;br /&gt;
*SerializeString(MyData, &amp;quot;&amp;quot;) //empty value &lt;br /&gt;
*SerializeLong(MyData, 97) //parameter type #97 &lt;br /&gt;
*SerializeString(MyData, &amp;quot;&amp;quot;) //empty value &lt;br /&gt;
*SerializeUnsignedLong(MyData, 0) //no binary parameters &lt;br /&gt;
*SerializeUnsignedLong(MyData, 0) //no extra messages &lt;br /&gt;
*SerializeUnsignedLong(6789) //magic number &lt;br /&gt;
&lt;br /&gt;
*MyDevice.SendData(&amp;quot;MESSAGE &amp;quot; + MyData.length() + &#039;\n&#039;) &lt;br /&gt;
*MyDevice.SendData(MyData) &lt;br /&gt;
*MyDevice.ReceiveData() //until you&#039;ll get a &#039;\n&#039; ; you should receive: &amp;quot;OK&amp;quot; or an error message &lt;br /&gt;
&lt;br /&gt;
*MyDevice.CloseConnection();&lt;br /&gt;
&lt;br /&gt;
===4.5 How to serialize data-grids ===&lt;br /&gt;
&#039;&#039;&#039;Complex objects:&#039;&#039;&#039; &lt;br /&gt;
# DataGridCellSerializableData &lt;br /&gt;
#* unsigned long, &amp;lt;sizeof(DataGridCellSerializableData)&amp;gt; &lt;br /&gt;
#* unsigned long, &amp;lt;graphic_length&amp;gt; &lt;br /&gt;
#* unsigned long, &amp;lt;message_length&amp;gt; &lt;br /&gt;
#* unsigned long, &amp;lt;text_length&amp;gt; &lt;br /&gt;
#* unsigned long, &amp;lt;value_length&amp;gt; &lt;br /&gt;
#* unsigned long, &amp;lt;image_path_length&amp;gt; &lt;br /&gt;
#* unsigned long, &amp;lt;number_of_attributes_length&amp;gt; &lt;br /&gt;
#* unsigned long, &amp;lt;attributes_length&amp;gt; &lt;br /&gt;
#* int, &amp;lt;alternate_color&amp;gt; &lt;br /&gt;
#* unsigned long, &amp;lt;graphic_format&amp;gt; &lt;br /&gt;
#* unsigned char, &amp;lt;selectable&amp;gt; &lt;br /&gt;
#* int, &amp;lt;style_detail&amp;gt; &lt;br /&gt;
#* int, &amp;lt;col_span&amp;gt; &lt;br /&gt;
#* int, &amp;lt;row_span&amp;gt; &lt;br /&gt;
#* unsigned char, &amp;lt;dont_fire_grid_event&amp;gt; &lt;br /&gt;
#:&lt;br /&gt;
#:Enums: &lt;br /&gt;
#* enum eGraphicFormat { GR_UNKNOWN=0, GR_JPG=1, GR_GIF=2, GR_TIF=3, GR_PNG=4, GR_MNG=5, GR_BMP=6, GR_OCG=7, GR_PFG=8 }; &lt;br /&gt;
#:&lt;br /&gt;
# DataGridCell &lt;br /&gt;
#* DataGridCellSerializableData, &amp;lt;datagrid_cell_serializable_data&amp;gt; &lt;br /&gt;
#* array of chars, &amp;lt;text&amp;gt; &lt;br /&gt;
#* array of chars, &amp;lt;value&amp;gt; &lt;br /&gt;
#* array of bytes, &amp;lt;graphic_data&amp;gt; &lt;br /&gt;
#* array of bytes, &amp;lt;message_data&amp;gt; &lt;br /&gt;
#* array of chars, &amp;lt;image_path&amp;gt; &lt;br /&gt;
#*:&lt;br /&gt;
#**	foreach &amp;lt;cell_attribute&amp;gt; &lt;br /&gt;
#***	array of chars ended with &#039;\0&#039; , &amp;lt;cell_attribute_name&amp;gt; &lt;br /&gt;
#***	array of chars ended with &#039;\0&#039;, &amp;lt;cell_attribute_value&amp;gt; &lt;br /&gt;
#**	end_foreach &lt;br /&gt;
#:&lt;br /&gt;
#DataGridTableSerializableData &lt;br /&gt;
#* int, &amp;lt;total_number_of_columns&amp;gt; &lt;br /&gt;
#* int, &amp;lt;total_number_of_rows&amp;gt; &lt;br /&gt;
#* unsigned char, &amp;lt;keep_row_header&amp;gt; &lt;br /&gt;
#* unsigned char, &amp;lt;keep_column_header&amp;gt; &lt;br /&gt;
#* int, &amp;lt;column_count&amp;gt; &lt;br /&gt;
#* int, &amp;lt;row_count&amp;gt; &lt;br /&gt;
#* int, &amp;lt;starting_column&amp;gt; &lt;br /&gt;
#* int, &amp;lt;starting_row&amp;gt; &lt;br /&gt;
#* int, &amp;lt;cell_count&amp;gt; &lt;br /&gt;
#:&lt;br /&gt;
#DataGridTableCellIndex &lt;br /&gt;
#* unsigned int, &amp;lt;column_row_type&amp;gt; &lt;br /&gt;
#* unsigned int, &amp;lt;size&amp;gt; &lt;br /&gt;
#:&lt;br /&gt;
#DataGridTable &lt;br /&gt;
#* unsigned long, &amp;lt;sizeof(DataGridTableSerializableData)&amp;gt; &lt;br /&gt;
#* array of DataGridTableCellIndex, &amp;lt;col * row * sizeof(DataGridTableCellIndex)&amp;gt; &lt;br /&gt;
#* array of DataGridCell, &amp;lt;col * row * serialized DataGridCell&amp;gt; &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Additional step: lzo compression/decompression &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; can be disabled if compiled with DISABLE_LZO_DATAGRID &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==5. The devices==&lt;br /&gt;
&lt;br /&gt;
Each device has associated an interface, which we call device template. A device template is a set of commands to be implemented, events which can be fired by the device and device data (persistent information for device).&lt;br /&gt;
To create device templates and modify them, go to LinuxMCE Web Admin -&amp;gt; Advanced -&amp;gt; Configuration -&amp;gt; Device Templates.&lt;br /&gt;
To generate the C++ code for the device implementing a device template interface, you must use DCEGen tool, specifying the database ip address and the device template number.&lt;br /&gt;
Here is the simplified class diagram for one of the devices (App_Server):&lt;br /&gt;
&lt;br /&gt;
[[Image:App_Server.jpg|frame|none|Simplified class diagram for a DCE device]]&lt;br /&gt;
&lt;br /&gt;
The classes App_Server_Event, App_Server_Command and App_Server_Data are generated using DCEGen tool. The base classes for them are implemented in DCE Library.&lt;br /&gt;
&lt;br /&gt;
==6. App_Server device==&lt;br /&gt;
&lt;br /&gt;
App_Server device is present by default on all LinuxMCE machines. It spawns/kills applications, handles volume of sound on that machine, restarts/halts the device.&lt;br /&gt;
&lt;br /&gt;
# Implemented commands:&lt;br /&gt;
#*CMD_Spawn_Application - Spawns an application&lt;br /&gt;
#*CMD_Kill_Application - Kills an application&lt;br /&gt;
#*CMD_Application_Is_Running - Checks if the given application is running.&lt;br /&gt;
#*CMD_Halt_Device - Halts or reboots this device&lt;br /&gt;
#*CMD_Vol_Up - Increases the volume 1%&lt;br /&gt;
#*CMD_Vol_Down - Decreases the volume 1%&lt;br /&gt;
#*CMD_Set_Volume - Sets the volume to a specific level between 0-100&lt;br /&gt;
#*CMD_Mute - Toggles mute/unmute&lt;br /&gt;
#: &lt;br /&gt;
#: &lt;br /&gt;
#It doesn’t fire any events.&lt;br /&gt;
#: &lt;br /&gt;
#: &lt;br /&gt;
#It has the following device data:&lt;br /&gt;
#*Discrete Volume&lt;br /&gt;
#*Volume Level&lt;br /&gt;
&lt;br /&gt;
==7. Photo_Screen_Saver device==&lt;br /&gt;
&lt;br /&gt;
The photo screen saver (PSS) displays pictures when there is no video playing, even if you just happen to be listening to music. By default, the photos come from Flickr and are downloaded regularly to local drive.&lt;br /&gt;
&lt;br /&gt;
PSS is a OpenGL application and it slides pictures and fades them between transitions. &lt;br /&gt;
&lt;br /&gt;
1. Implemented commands&lt;br /&gt;
&lt;br /&gt;
The list with pictures is taken by sending a command to Orbiter Plugin : CMD_Get_Screen_Saver_Files which has an output parameter Filename. The filenames are delimited by a ‘\n’ character.&lt;br /&gt;
&lt;br /&gt;
The PSS animations are started/stopped using CMD_On/CMD_Off commands. To force PSS reload the list with pictures from Orbiter Plugin, CMD_Reload is used.&lt;br /&gt;
&lt;br /&gt;
When PSS starts, it should check every 10 minutes if there are any pictures downloaded and ready to be displayed. If there are pictures to display it should display them on CMD_On command and refresh the list with pictures every 24 hours.&lt;br /&gt;
&lt;br /&gt;
2. It doesn’t fire any events&lt;br /&gt;
&lt;br /&gt;
3. Device data:&lt;br /&gt;
* ZoomTime - Value in miliseconds that a zoom effect will take &lt;br /&gt;
* FadeTime - value in miliseconds that a fade effect will take &lt;br /&gt;
* Name - The window name to activate&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==8. Media Player device==&lt;br /&gt;
&lt;br /&gt;
Currently there are two Media Players in LinuxMCE, the primary Xine_Player and &lt;br /&gt;
secondary MPlayer_Player.&lt;br /&gt;
First one is based one the Xine engine (http://xinehq.de) and supports the &lt;br /&gt;
following formats:&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;File formats (System layer / media types)supported:&#039;&#039;&#039;&lt;br /&gt;
**direct DVD playback (of unlocked/unencrypted DVDs, see below)&lt;br /&gt;
** Video CD&lt;br /&gt;
** Audio CD&lt;br /&gt;
** mpeg program streams (.mpg, .mpeg)&lt;br /&gt;
** mpeg transport streams (.ts)&lt;br /&gt;
** ogg (.ogg, .ogm)&lt;br /&gt;
** avi (.avi)&lt;br /&gt;
** asf (.asf, .wmv, .wma)&lt;br /&gt;
** quicktime (.mov, .mp4)&lt;br /&gt;
** mpeg-video (.mpv, .m2v)&lt;br /&gt;
** mpeg-audio (.mp2, .mp3)&lt;br /&gt;
** Sega Saturn FILM (.cpk)&lt;br /&gt;
** Id Software RoQ (.roq)&lt;br /&gt;
** wav (.wav)&lt;br /&gt;
** Autodesk FLIC (.fli)&lt;br /&gt;
** real (.rm, .ra, .ram)&lt;br /&gt;
** raw dv (.dv)&lt;br /&gt;
** network graphics format (.png, .mng)&lt;br /&gt;
** Creative Voice (.voc)&lt;br /&gt;
** Sun/NeXT SND/AU (.snd, .au)&lt;br /&gt;
** Wing Commander III (.mve)&lt;br /&gt;
** Westwood Studios files (.vqa, .aud)&lt;br /&gt;
** Electronic Arts WVE (.wve)&lt;br /&gt;
** AIFF (.aif, .aiff)&lt;br /&gt;
** YUV4MPEG2 (.y4m)&lt;br /&gt;
** SMJPEG (.mjpg)&lt;br /&gt;
** raw AC3 (.ac3)&lt;br /&gt;
** Dialogic VOX (.vox)&lt;br /&gt;
** TechnoTrend PVA (.pva)&lt;br /&gt;
** Playstation STR (.str)&lt;br /&gt;
** Nullsoft Video (.nsv)&lt;br /&gt;
** 4X Technologies (.4xm)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Video codecs supported:&#039;&#039;&#039;&lt;br /&gt;
** mpeg 1/2&lt;br /&gt;
** mpeg 4 (aka OpenDivX)&lt;br /&gt;
** ms mpeg 4&lt;br /&gt;
** divx 3/4/5&lt;br /&gt;
** windows media video 7 &amp;amp; 8&lt;br /&gt;
** motion jpeg&lt;br /&gt;
** Cinepak&lt;br /&gt;
** DV&lt;br /&gt;
** ms video 1 (msvc)&lt;br /&gt;
** ms rle&lt;br /&gt;
** Sorenson SVQ1/SVQ3 (often used in Quicktime trailers)&lt;br /&gt;
** creative yuv (cyuv)&lt;br /&gt;
** roq video&lt;br /&gt;
** QT RLE, SMC, RPZA&lt;br /&gt;
** theora&lt;br /&gt;
** via external binary/win32 codecs (not included in xine):&lt;br /&gt;
** Indeo 3.1-5.0&lt;br /&gt;
** Window Media Video 8,9&lt;br /&gt;
** On2 VP3.1&lt;br /&gt;
** I263&lt;br /&gt;
** Real Media 2.0, 3.0, 4.0&lt;br /&gt;
* currently unsupported/untested Formats:&lt;br /&gt;
** 3ivx&lt;br /&gt;
** h263 (aka Real Video 1.0)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Audio codecs&#039;&#039;&#039;&lt;br /&gt;
** mpeg audio (layer 1,2,3)&lt;br /&gt;
** a/52 (aka ac3, dolby digital)&lt;br /&gt;
** aac (used in .mp4 files)&lt;br /&gt;
** dts (via external decoder)&lt;br /&gt;
** vorbis&lt;br /&gt;
** pcm&lt;br /&gt;
** adpcm (MS/IMA/DVI/Dialogic)&lt;br /&gt;
** mu-law and A-law&lt;br /&gt;
** roq dpcm&lt;br /&gt;
** Real Media dnet audio&lt;br /&gt;
** Real Media 28.8 audio&lt;br /&gt;
** DivX audio (WMA)&lt;br /&gt;
** GSM 6.10&lt;br /&gt;
** FLAC&lt;br /&gt;
** NSF (NES sound format)&lt;br /&gt;
** Speex&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The MPlayer_Player is used as the fallback player for the formats Xine doesn&#039;t &lt;br /&gt;
support/supports not well and currently is used for playing HD-DVD/Bluray &lt;br /&gt;
video files and disks.&lt;br /&gt;
&lt;br /&gt;
A media player device plays all kind of media: audio and video, stored media or from cd/dvd/hd/bluray drivers, etc.&lt;br /&gt;
&lt;br /&gt;
1. Implemented commands&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Keyboard input:&#039;&#039;&#039; &lt;br /&gt;
** CMD_EnterGo - Select the currently highlighted menu item&lt;br /&gt;
** CMD_Move_Up, CMD_Move_Down, CMD_Move_Left, CMD_Move_Right - Move the highlighter&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Media Player Commands&#039;&#039;&#039;&lt;br /&gt;
** CMD_Pause - Pause the media&lt;br /&gt;
** CMD_Play - Play the media&lt;br /&gt;
** CMD_Skip_Back_ChannelTrack_Lower - Lower the channel, track, station, etc. by 1.  Same as Jump to Pos in Playlist with value -1 for a smart media player&lt;br /&gt;
** CMD_Skip_Fwd_ChannelTrack_Greater - Raise  the channel, track, station, etc. by 1.  Same as Jump to Pos in Playlist with value +1 for a smart media player&lt;br /&gt;
** CMD_Stop - Stop the media&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Menu Navigation&#039;&#039;&#039;&lt;br /&gt;
** CMD_EnterGo - Select the currently highlighted menu item&lt;br /&gt;
** CMD_Move_Up, CMD_Move_Down, CMD_Move_Left, CMD_Move_Right - Move the highlighter&lt;br /&gt;
** CMD_Get_Video_Frame - Gets the current video frame from the media player.&lt;br /&gt;
** CMD_Goto_Media_Menu - Goto to the current media Root Menu.&lt;br /&gt;
** CMD_Navigate_Next - Nagivate to the next possible navigable area. (The actual outcome depends on the specifc device)&lt;br /&gt;
** CMD_Navigate_Prev - Nagivate the previous possible navigable area. (The actual outcome depends on the specific device).&lt;br /&gt;
** CMD_Simulate_Mouse_Click - Simlate a mouse click at a certain position on the screen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Smart DVD commands&#039;&#039;&#039;&lt;br /&gt;
** CMD_Angle – Go to an angle&lt;br /&gt;
** CMD_Audio_Track – Go to an audio track&lt;br /&gt;
** Subtitle – Go to a subtitle&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Smart Media Player&#039;&#039;&#039;&lt;br /&gt;
** CMD_Change_Playback_Speed – Will make the playback to FF with a configurable amount of speed.&lt;br /&gt;
** CMD_Guide - Show guide information.  For a dvd this may be the menu, just like the menu command&lt;br /&gt;
** CMD_Jump_Position_In_Playlist - Jump to a specific position in the playlist, or a track, or a chapter.  Smart media players should also understand the skip fwd/skip back (which non-DCE media players use) to be the same thing as a jump +1 or -1&lt;br /&gt;
** CMD_Jump_To_Position_In_Stream - Jump to a position in the stream, specified in seconds.&lt;br /&gt;
** CMD_Menu - Show a menu associated with this media&lt;br /&gt;
** CMD_Pause_Media - This will stop a media that is currently played. This method should be paired with the &amp;quot;Restart Media&amp;quot; and used when the playback will be stopped and restarted on the same display device.&lt;br /&gt;
** CMD_Play_Media - This command will instruct a Media Player to play a media stream identified by a media descriptor created by the &amp;quot;Create Media&amp;quot; command.&lt;br /&gt;
** CMD_Report_Playback_Position - This will report the playback position of the current stream.&lt;br /&gt;
** CMD_Restart_Media - This will restart a media was paused with the above command&lt;br /&gt;
** CMD_Set_Aspect_Ratio - Force aspect ratio&lt;br /&gt;
** CMD_Set_Media_ID - Set Media ID - information about media stream&lt;br /&gt;
** CMD_Set_Media_Position - Jump to a certain media position&lt;br /&gt;
** CMD_SetZoom - Sets zoom level, relative, absolute or &#039;auto&#039;&lt;br /&gt;
** CMD_Simulate_Keypress - Send a key to the device&#039;s OSD, or simulate keypresses on the device&#039;s panel&lt;br /&gt;
** CMD_Start_Streaming - Like play media, but it means the destination device is not the same as the source&lt;br /&gt;
** CMD_Stop_Media - This will instruct the media player to stop the playback of a media started with the &amp;quot;Play Media&amp;quot; Command&lt;br /&gt;
** CMD_Update_Object_Image - Display an image on the media player&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. &#039;&#039;&#039;It fires the following events&#039;&#039;&#039;&lt;br /&gt;
* EVENT_Menu_Onscreen - A DVD Menu appeared on screen&lt;br /&gt;
* EVENT_Playblack_Completed - Fired when the playback of a stream has completed.&lt;br /&gt;
* EVENT_Playback_Info_Changed – Playback info changed&lt;br /&gt;
* EVENT_Playback_Started – Media has start playing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3. &#039;&#039;&#039;Device data:&#039;&#039;&#039;&lt;br /&gt;
* Name - The name of the window for this app&lt;br /&gt;
* Hardware acceleration - driver used&lt;br /&gt;
* Deinterlacing Mode - Movie deinterlacing filter status&lt;br /&gt;
* Port – Time code notification every second&lt;br /&gt;
* Zoom Level – default zoom level&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE:&#039;&#039;&#039; A deviation from design, the media player must bind on a port specified in the device data and report the time code every one second. Any device like an Orbiter could connect to that port and read the time code. Here is the format used for time code:&lt;br /&gt;
Speed,CurrentTime,TotalTime,StreamID,Title,Chapter,MediaType,MediaID,Filename (comma delimited).&lt;br /&gt;
&lt;br /&gt;
==9. Orbiter==&lt;br /&gt;
&lt;br /&gt;
===9.1 Introduction===&lt;br /&gt;
&lt;br /&gt;
The Orbiter is really a device just like any other. The main class, Orbiter, is a normal DCE command implementation. However, the Orbiter class was written so that it has no platform-specific functions, such as graphics and sound. It handles the basic logic, and calls pure virtual functions that derived classes must implement to handle the platform-specific commands. Most of the code and virtually all of the logic is contained in the base classes. Therefore, it is a fairly easy task to make a new version of Orbiter for a platform other than SDL, perhaps one that uses Windows SDK calls, or another image library.&lt;br /&gt;
&lt;br /&gt;
Right now there are implementations of Orbiter using SDL. PocketFrog and OpenGL engines. Orbiter runs on different operation systems like Linux, Windows, Windows CE, Window Mobile, Symbian60. There also implementation for web orbiter (running into a browser) or for a Cisco hard phones (using XML services).&lt;br /&gt;
&lt;br /&gt;
===9.2 Architecture===&lt;br /&gt;
&lt;br /&gt;
[[Image:architecture.jpg|frame|none|Orbiter application architecture]]&lt;br /&gt;
&lt;br /&gt;
The present diagram shows how the Orbiter application architecture looks like. Depending on the Graphic Engine and the platform, the only modules dependent on them are “Renderers – engine specific” and “Orbiter - platform specific”. &lt;br /&gt;
&lt;br /&gt;
====9.2.1. The renderers====&lt;br /&gt;
&lt;br /&gt;
There are two kinds of renders:&lt;br /&gt;
* orbiter renderers&lt;br /&gt;
* object renderers&lt;br /&gt;
&lt;br /&gt;
The orbiter renderers (derived from OrbiterRenderer class) handle the graphic primitives, having pure virtual methods for operations like this:&lt;br /&gt;
* RenderText&lt;br /&gt;
* SolidRectangle&lt;br /&gt;
* HollowRectangle&lt;br /&gt;
* DrawLine&lt;br /&gt;
* FloodFill&lt;br /&gt;
* RenderGraphic&lt;br /&gt;
* ReplaceColorInRectangle&lt;br /&gt;
* etc.&lt;br /&gt;
&lt;br /&gt;
and applications flow :&lt;br /&gt;
* event loop&lt;br /&gt;
* configure&lt;br /&gt;
* destroy&lt;br /&gt;
* on quit&lt;br /&gt;
* on reload&lt;br /&gt;
&lt;br /&gt;
However, OrbiterRenderer is not an interface. It also has implemented the logic needed for: &lt;br /&gt;
* render screen action&lt;br /&gt;
* show a progress bar&lt;br /&gt;
* highlighting / un-highlighting objects&lt;br /&gt;
* render shortcuts&lt;br /&gt;
* show / hide popup’s&lt;br /&gt;
* redraw objects&lt;br /&gt;
* refresh screen&lt;br /&gt;
* render object asynchronously&lt;br /&gt;
* object on screen / off screen actions&lt;br /&gt;
* background image loading&lt;br /&gt;
* drawing an arrow&lt;br /&gt;
&lt;br /&gt;
Here is the class diagram for derived OrbiterRenderer‘s:&lt;br /&gt;
&lt;br /&gt;
[[Image:orbiterrenderer.jpg|frame|none|OrbiterRenderer class diagram]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, there are renderer classes of complex objects like button, data grid, edit box, etc. The base classes for them are : ObjectRenderer, DataGridRenderer. Each renderer is attached to an object like DesignObj_Orbiter, DesignObj_DataGrid. &lt;br /&gt;
&lt;br /&gt;
Here is the class diagram for OpenGL implementation:&lt;br /&gt;
&lt;br /&gt;
[[Image:openGLimplementation.jpg|frame|none|OpenGL implementation]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The screens are actually trees of objects. The characteristics of the objects are set using the Designer application and stored in the database, then serialized by OrbiterGen and then deserialized by Orbiter. &lt;br /&gt;
OrbiterGen scales and pre-renders the screens. Also, OrbiterGen embeds in the serialized data info about the actions to be executed when an object is loaded, activated, unloaded, etc.&lt;br /&gt;
&lt;br /&gt;
====9.2.2. Orbiter – platform specific====&lt;br /&gt;
&lt;br /&gt;
Orbiter also has to take care of the input events like mouse click, keyboard events, etc. For example, Orbiter_Win32 is derived from Orbiter class and takes care of enabling the auto-update mechanism. &lt;br /&gt;
Platform specific are the external dialogs with progress bar and prompt user, or the way the composite or masks are used (see OrbiterRenderer_Linux, OrbiterLinux, OrbiterRenderer_SDL_Win32&lt;br /&gt;
&lt;br /&gt;
The Linux version uses XRecord extension to intercept events. The Windows versions use PocketFrog engine’s event loop or SDL event loop.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====9.2.3. Cache image manager====&lt;br /&gt;
&lt;br /&gt;
This module is mainly used by remote orbiters, non-OSD orbiters. Because these orbiters don’t have access to core’s file system, all the graphic files are obtained by network connection and it might be slow. So instead of requesting same image over and over, the image is cached on the local drivers. The collection of images cached are associated with a timestamp (the generation date for the screens). If the user decides to regenerate the screens, the timestamp is changed and the cache is purged and the images are requested, on demand, again from the server.&lt;br /&gt;
&lt;br /&gt;
====9.2.4. Self update module====&lt;br /&gt;
&lt;br /&gt;
The “Self update” module is also used for non-OSD orbiters. Once a new version of the Orbiter XP/CE is available, a new binary data is stored on core’s filesystem. When an non-OSD orbiter starts, compares the md5sum of the current binary with the one from the server. If it’s different, the UpdateBinary is spawned, Orbiter exits and UpdateBinary requests the new binary from server, it downloads it, replaces the old binary and restart Orbiter.&lt;br /&gt;
&lt;br /&gt;
====9.2.5. Simulator====&lt;br /&gt;
&lt;br /&gt;
The simulator is responsible for generating mouse and keyboard events used for stress testing. It also stores some configuration settings.&lt;br /&gt;
&lt;br /&gt;
====9.2.6. Graphic objects====&lt;br /&gt;
&lt;br /&gt;
They are all derived from PlutoGraphic class and store info about the filename, width, height, the block of data and its length, graphic format and graphic management. The operations required are related to loading graphics from a file or a block of data, clearing the data stored, initializations, etc.&lt;br /&gt;
In the derived classes like PocketFrogGraphic, SDLGraphic, OpenGLGraphic, specific info are stored like the Surface for PocketFrong, SDL_Surface for SDL and the texture for OpenGL.&lt;br /&gt;
&lt;br /&gt;
====9.2.7. Orbiter logic module====&lt;br /&gt;
&lt;br /&gt;
Just like any other device, Orbiter is derived from a {Device_name}_Command class, the wrapper class generated by DCEGen to allow the device communicate with the router. However, Orbiter is also derived from OrbiterData and IRReceiverBase.&lt;br /&gt;
&lt;br /&gt;
[[Image:orbiterlogicclassdiagram.jpg|frame|none|Orbiter logic – class diagram]]&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
OrbiterData helps Orbiter deserialize the data needed for its graphic objects, data serialized by OrbiterGen. IRReceiverBase is the base class for all IR receiver devices and it translates IR codes into actions, base on the current screen type and remote layout.&lt;br /&gt;
&lt;br /&gt;
====9.2.8. Mouse handlers====&lt;br /&gt;
&lt;br /&gt;
The goal of handlers is the interpret mouse movements and perform specific actions depending on current screen type. This is one of the main features add in UI2 version.&lt;br /&gt;
&lt;br /&gt;
See below the class diagram:&lt;br /&gt;
&lt;br /&gt;
[[Image:mousehandlers.jpg|frame|none|Mouse handlers – class diagram]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note that the mouse handlers are not available for UI1 version of Orbiter.&lt;br /&gt;
&lt;br /&gt;
MouseIterator and MouseGovernor limit the mouse movements the only one move per x ms to prevent extreme numbers of messages burdening the system.&lt;br /&gt;
MouseBehaviour handles special mouse behavior, such as locking axis’s, ramping and acceleration.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====9.2.9. HID interface====&lt;br /&gt;
&lt;br /&gt;
This module gets events from the Fiire remote. See below the class diagram:&lt;br /&gt;
&lt;br /&gt;
[[Image:HIDinterface.jpg|frame|none|HID interface – class diagram]]&lt;br /&gt;
&lt;br /&gt;
This code has been augmented by the Generic HID Interface, below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====9.2.10. Generic HID Interface====&lt;br /&gt;
&lt;br /&gt;
The Generic HID Handler is implemented in http://svn.linuxmce.org/trac.cgi/browser/branches/LinuxMCE-0810/src/Orbiter/Linux/GenericHIDInterface.cpp and http://svn.linuxmce.org/trac.cgi/browser/branches/LinuxMCE-0810/src/Orbiter/Linux/GenericHIDInterface.h&lt;br /&gt;
&lt;br /&gt;
And basically consists of:&lt;br /&gt;
&lt;br /&gt;
* UpdateEventFDs - a function which scans /dev/input looking for event* devices, opening them read-only, and setting descriptors in a vector, which...&lt;br /&gt;
* ProcessGenericHIDEvents - is passed back into here, and the vector is iterated, filling the parameters of a select() call to determine which event devices need to be read. Those devices are checked, and passed into... &lt;br /&gt;
* DecodeEventFDs - This takes a file descriptor, and reads it, looking for EV_KEY events, those are found, the resulting key code is grabbed, and 20000 is added to it to indicate a synthetic key event. The resulting keycode is then passed to Orbiter&#039;s event queue, which can then be used by configuration device data for a given remote to map keys. This loop between ProcessGenericHIDEvents and DecodeEventFDs repeats until m_bQuit is set true from orbiter, at which point....&lt;br /&gt;
* CloseEventFDs - closes the file descriptors in the vector, the remainder of CloseEventFDs is procedded, and the thread simply exits.&lt;br /&gt;
&lt;br /&gt;
=====Things left to do=====&lt;br /&gt;
&lt;br /&gt;
The thread handler is still very early in design. It merely passes any EV_KEY value that&#039;s greater than 0 as a KEY_DOWN. For Gyration 3101&#039;s, this also means the value of 2 gets passed as KEY_DOWN. Some interesting things happen as a result, &lt;br /&gt;
&lt;br /&gt;
Held down keys need to be properly handled. --[[User:Tschak909|Tschak909]] 23:11, 27 June 2009 (CEST)&lt;br /&gt;
&lt;br /&gt;
=====How to Implement a Remote Template that uses Generic HID Interface=====&lt;br /&gt;
&lt;br /&gt;
See this page: [[Creating a Device Template for a Remote that uses the kernel input subsystem]]&lt;br /&gt;
&lt;br /&gt;
===9.3 Skinning and User Interface===&lt;br /&gt;
&lt;br /&gt;
====9.3.1 HADesigner====&lt;br /&gt;
The graphics, layout and display for the screens rendered in different Orbiter interfaces for the different UI versions are generated and manipulated using a Windows UI management tool called [[HADesigner_User&#039;s_manual|HADesigner]]. &lt;br /&gt;
&lt;br /&gt;
The following series of screencasts describes the use of the HADesigner tool and the process of generating a brand new UI for a specific plugin for all different variations of the Orbiter UI versions.&lt;br /&gt;
&lt;br /&gt;
Before proceeding, follow the [[Installing_HADesigner | installation instructions for HADesigner]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# [http://www.localeconcept.com/HADesigner-Screencasts/01-basic_hadesigner_fundamentals.html Basic Designer Fundamentals]&lt;br /&gt;
# [http://www.localeconcept.com/HADesigner-Screencasts/ogg/02_designobj_basics_1.ogg Design Object Basics]&lt;br /&gt;
# [http://www.localeconcept.com/HADesigner-Screencasts/ogg/03_ui2_popup_part_1.ogg UI2 Popup Part I]&lt;br /&gt;
# [http://www.localeconcept.com/HADesigner-Screencasts/ogg/04_ui2_popup_part_2.ogg UI2 Popup Part II]&lt;br /&gt;
# [http://www.localeconcept.com/HADesigner-Screencasts/ogg/05_UI1_Orbiter.ogg UI1 Orbiter]&lt;br /&gt;
# [http://www.localeconcept.com/HADesigner-Screencasts/ogg/06_UI1_Full_Screen_OSD.ogg UI1 Full Screen OSD]&lt;br /&gt;
# [http://www.localeconcept.com/HADesigner-Screencasts/ogg/07_UI1_Full_Screen_OSD_2.ogg UI1 Full Screen OSD Part II]&lt;br /&gt;
# [http://www.localeconcept.com/HADesigner-Screencasts/ogg/08_UI1_PDA.ogg UI1 PDA]&lt;br /&gt;
# [http://www.localeconcept.com/HADesigner-Screencasts/ogg/09_Mobile_Remote.ogg Mobile Remote]&lt;br /&gt;
# [http://www.localeconcept.com/HADesigner-Screencasts/ogg/10_cisco_7970_orbiter.ogg Cisco 7970 Orbiter]&lt;br /&gt;
# [http://www.localeconcept.com/HADesigner-Screencasts/ogg/11_Monitor_mode.ogg Monitor Mode]&lt;br /&gt;
&lt;br /&gt;
The Basic skin, included with LinuxMCE, should really not be modified, since it is used extensively by LinuxMCE and Pluto and is known to work.&lt;br /&gt;
&lt;br /&gt;
====9.3.2 UI Design and process====&lt;br /&gt;
The following series of screencasts walks through the design considerations involved in creating a brand new skin for LinuxMCE.&lt;br /&gt;
&lt;br /&gt;
# [http://www.localeconcept.com/Skin-Screencasts/01_introduction_and_aesthetic.ogg Introduction and Aesthetic considerations]&lt;br /&gt;
# [http://www.localeconcept.com/Skin-Screencasts/02_main_menu_first_pass.ogg First Pass at the Main Menu]&lt;br /&gt;
# [http://www.localeconcept.com/Skin-Screencasts/03_main_menu_notes_and_corrections.ogg Main Menu Notes and Corrections]&lt;br /&gt;
# [http://www.localeconcept.com/Skin-Screencasts/04_the_floorplan_buttons.ogg The Floorplan Buttons]&lt;/div&gt;</summary>
		<author><name>Icosahedron</name></author>
	</entry>
</feed>