From 305addf8d83ed71844e938551ee900d06359d42a Mon Sep 17 00:00:00 2001 From: John Pietrzak Date: Mon, 30 Jan 2012 20:37:40 -0500 Subject: [PATCH] Improved to "half-way usable" (version 0.5) With some incremental improvements to the UI, some fairly decent back-end improvements, and a variety of bug-fixes, I'm declaring that this program is now half-way usable, therefore giving it a version number of 0.5. :) --- doc/about.html | 5 +- doc/documentation.html | 57 +- jvcprotocol.cpp | 177 ++++ jvcprotocol.h | 50 + keysets/apple.cpp | 2 +- keysets/denon.cpp | 966 +++++++++--------- keysets/ei.cpp | 64 +- keysets/ei.h | 4 +- keysets/elgato.cpp | 66 ++ keysets/elgato.h | 15 + keysets/goldstar.cpp | 241 +++-- keysets/goldstar.h | 9 - keysets/hauppauge.cpp | 67 +- keysets/hitachi.cpp | 488 ++++----- keysets/jvc.cpp | 1280 +++++++++--------------- keysets/jvc.h | 96 +- keysets/lg.cpp | 629 ++++++------ keysets/magnavox.cpp | 67 +- keysets/mitsubishi.cpp | 16 +- keysets/nokia.cpp | 9 +- keysets/panasonic.cpp | 112 ++- keysets/philips.cpp | 183 ++-- keysets/pinnacle.cpp | 4 +- keysets/raite.cpp | 91 +- keysets/rca.cpp | 41 +- keysets/sagem.cpp | 104 +- keysets/samsung.cpp | 292 +++--- keysets/sanyo.cpp | 415 ++++---- keysets/sanyo.h | 8 + keysets/sharp.cpp | 534 +++++----- keysets/sony.cpp | 1359 +++++++++++-------------- keysets/sony.h | 41 +- keysets/tivo.cpp | 6 +- keysets/toshiba.cpp | 379 +++---- keysets/toshiba.h | 8 + keysets/westinghouse.cpp | 80 +- keysets/yamaha.cpp | 775 ++++++++------- keysets/zenith.cpp | 87 +- mainwindow.cpp | 416 ++++++-- mainwindow.h | 140 ++- mainwindow.ui | 1596 ++++++++++++++++++++---------- necprotocol.cpp | 109 +- necprotocol.h | 35 +- pierogi.pro | 20 +- pierogi.pro.user | 8 +- pirkeynames.h | 39 +- pirkeysetmanager.cpp | 89 +- pirkeysetmanager.h | 18 +- pirkeysetmetadata.cpp | 63 +- pirkeysetmetadata.h | 29 +- pirmakenames.cpp | 1 + pirmakenames.h | 1 + pirprotocol.cpp | 81 +- pirprotocol.h | 20 +- qtc_packaging/debian_fremantle/changelog | 5 + qtc_packaging/debian_fremantle/postinst | 2 - rc5protocol.cpp | 3 +- rc6protocol.cpp | 3 +- sharpprotocol.cpp | 253 +++++ sharpprotocol.h | 61 ++ sircprotocol.cpp | 143 +++ sircprotocol.h | 57 ++ www/FavoriteTab.png | Bin 0 -> 59997 bytes www/FavoritesTab.png | Bin 60020 -> 0 bytes www/KeypadTab.png | Bin 67994 -> 67705 bytes www/MainTab.png | Bin 57744 -> 57734 bytes www/Media2Tab.png | Bin 0 -> 52090 bytes www/MediaTab.png | Bin 66080 -> 66150 bytes www/MenuTab.png | Bin 58453 -> 58695 bytes www/MiscTab.png | Bin 70831 -> 0 bytes www/SelectKeysetWindow.png | Bin 40398 -> 42955 bytes www/TVTab.png | Bin 0 -> 77585 bytes www/UtilityTab.png | Bin 62042 -> 61540 bytes www/index.html | 59 +- 74 files changed, 6735 insertions(+), 5343 deletions(-) create mode 100644 jvcprotocol.cpp create mode 100644 jvcprotocol.h create mode 100644 keysets/elgato.cpp create mode 100644 keysets/elgato.h create mode 100644 sharpprotocol.cpp create mode 100644 sharpprotocol.h create mode 100644 sircprotocol.cpp create mode 100644 sircprotocol.h create mode 100755 www/FavoriteTab.png delete mode 100755 www/FavoritesTab.png create mode 100755 www/Media2Tab.png delete mode 100755 www/MiscTab.png create mode 100755 www/TVTab.png diff --git a/doc/about.html b/doc/about.html index 441bad4..f0a62be 100644 --- a/doc/about.html +++ b/doc/about.html @@ -1,12 +1,15 @@ + +Pierogi UIRC +

Pierogi

A Universal Infrared Remote Control

-Version 0.1 +Version 0.5 -- "Half-Way Usable"

diff --git a/doc/documentation.html b/doc/documentation.html index 0bdf9f2..81b387b 100644 --- a/doc/documentation.html +++ b/doc/documentation.html @@ -1,5 +1,9 @@ + + +Pierogi UIRC + @@ -63,8 +67,9 @@ controls. The name of the current keyset is also provided in this tab.

The Utility tab contains a selection of commonly useful controls, such as "Mute", "Sleep", "Input", "Closed Captions / Subtitles", and the color buttons. -The exact selection of buttons on this tab will probably change to reflect -which commands turn out to be the most popular.

+This tab is intended to be a quick way to reach the most frequently used +buttons; as such, the selection may be updated in future versions of Pierogi. +

Keypad Tab

@@ -82,8 +87,9 @@ allow you to enter a second digit.

This tab contains buttons used to enter and exit a menu, navigate within a menu, and select menu entries. The "Menu" button is meant to enter the -main system menu of a given device; the "Info" and "Guide" buttons are -targeted towards entering other useful menus when available.

+main system menu of a given device; "Guide" is a content-related menu available +on many modern devices; and "Disc Menu" is used to access the menu interface +provided with DVD and Blu-Ray media.

Media Tab

@@ -92,16 +98,23 @@ targeted towards entering other useful menus when available.

(often called rewind) and "Fast Forward". A variety of other less common navigation controls are included, along with the "Eject" command.

-

Misc Tab

+

Media2 Tab

+ +

This is another page of media buttons, containing a mix of commands useful +for DVD players, VCRs, audio devices, and possibly other devices. The content +of this page may change in the future.

+ +

TV Tab

-

This tab contains a selection of buttons that did not fit into any of the -previous tabs. The content of this tab is subject to change.

+

This page contains several more TV-oriented buttons, including controls for +picture-in-picture, teletext, and some graphics and audio controls. The +content of this page is subject to change.

-

Favorites Tab

+

Favorite Tab

-

As there are numerous keysets available in Pierogi, a "favorites" tab has +

As there are numerous keysets available in Pierogi, a "Favorite" tab has been implemented. To add a favorite keyset to the tab, first select that -keyset from the "Select Keyset" window. Then, navigate to the Favorites tab +keyset from the "Select Keyset" window. Then, navigate to the Favorite tab and press "Add Current Keyset".

Once you have added some keysets to the favorites list, you can tell @@ -264,14 +277,15 @@ of code once I've seen it, so I've rewritten it in C++, reorganizing it in an object-oriented manner along the way.

-Here's one way in which I disagree with the authors of LIRC: they've managed -to cram support for practically every protocol used by every remote control -ever made into a single codepath. So, there's a single "transmit" function, -sorting through a massive pile of flags, conditional statements, and some -really funky delayed-action buffering to make everything work. The simple act -of splitting the code into one routine for the RC5 (biphase) protocol and -another for the NEC (space-encoded) protocol makes it much easier to read, at -least to my eyes. (I haven't yet implemented the RC6 or other protocols.) +As I have progressed in adding support for additional IR protocols, I'm +beginning to see why the authors of the LIRC made the attempt to compress +every possible IR protocol into a straightforward count of individual IR +pulses. The total number of IR protocols in use is amazing, and many of them +(through oversight or due to the longevity of their use) are mind-numbingly +complicated to deal with. Still, I believe that separating the major protocols +into their own code paths results in code that is easier to understand and +maintain; I'm slowly moving away from the LIRC's system to my own as time +goes on.

@@ -307,12 +321,13 @@ to the theory and practice behind consumer IR devices

  • Some More info on the NEC protocol +
  • An introduction to the Sony SIRC protocol + +
  • An excellent collection of Sony command codes +
  • Link to (what appears to be) source code for the N900's /dev/lirc0 device driver. -
  • A surprisingly decent description of how to use the -Yamaha Remote Control. -