New Keysets
authorJohn Pietrzak <john@pietrzak.org>
Sun, 16 Sep 2012 23:20:44 +0000 (19:20 -0400)
committerJohn Pietrzak <john@pietrzak.org>
Sun, 16 Sep 2012 23:20:44 +0000 (19:20 -0400)
I've found a new source of keyset data, so I'm now able to add a few
more keysets for brands that were not previously supported.  A first
pass has been made at keysets for Crown Mustang, Hantarex, Keymat,
Konka, and Wiwa, and new keysets added to ADB (I-Can), Sony, and
Triax.  Also, some tweaks to the macro UI, fixes to a Cisco keyset
and an LG timing issue, and improvements to thread management when
the app exits.

36 files changed:
dialogs/pireditcommanddialog.cpp
dialogs/pireditcommanddialog.h
dialogs/pireditcommanddialog.ui
forms/pirmacroform.cpp
forms/pirmacroform.h
forms/pirmacroform.ui
keysets/adb.cpp
keysets/adb.h
keysets/cisco.cpp
keysets/crownmustang.cpp [new file with mode: 0644]
keysets/crownmustang.h [new file with mode: 0644]
keysets/haier.cpp
keysets/hantarex.cpp [new file with mode: 0644]
keysets/hantarex.h [new file with mode: 0644]
keysets/keymat.cpp [new file with mode: 0644]
keysets/keymat.h [new file with mode: 0644]
keysets/konka.cpp [new file with mode: 0644]
keysets/konka.h [new file with mode: 0644]
keysets/lg.cpp
keysets/sony.cpp
keysets/sony.h
keysets/triax.cpp
keysets/triax.h
keysets/wiwa.cpp [new file with mode: 0644]
keysets/wiwa.h [new file with mode: 0644]
mainwindow.cpp
pierogi.pro
pierogi.pro.user
pirkeysetmanager.cpp
pirkeysetmetadata.cpp
pirkeysetmetadata.h
pirmakenames.cpp
pirmakenames.h
protocols/necprotocol.cpp
qtc_packaging/debian_fremantle/changelog
qtc_packaging/debian_fremantle/control

index 837bcaa..a641a6b 100644 (file)
@@ -25,7 +25,7 @@ void PIREditCommandDialog::setup(
   ui->commandValueLabel->setText(name);
 }
 
-
+/*
 void PIREditCommandDialog::on_moveUpButton_clicked()
 {
   emit moveCommandUp();
@@ -37,9 +37,16 @@ void PIREditCommandDialog::on_moveDownButton_clicked()
   emit moveCommandDown();
   accept();
 }
+*/
 
 void PIREditCommandDialog::on_deleteButton_clicked()
 {
   emit deleteCommand();
   accept();
 }
+
+void PIREditCommandDialog::on_copyButton_clicked()
+{
+  emit copyCommand();
+  accept();
+}
index 5719fbb..70b61ce 100644 (file)
@@ -23,13 +23,15 @@ public:
 
 signals:
   void deleteCommand();
-  void moveCommandUp();
-  void moveCommandDown();
+//  void moveCommandUp();
+//  void moveCommandDown();
+  void copyCommand();
 
 private slots:
-  void on_moveUpButton_clicked();
-  void on_moveDownButton_clicked();
+//  void on_moveUpButton_clicked();
+//  void on_moveDownButton_clicked();
   void on_deleteButton_clicked();
+  void on_copyButton_clicked();
 
 private:
   Ui::PIREditCommandDialog *ui;
index 5a5d543..193ae60 100644 (file)
    <item>
     <layout class="QHBoxLayout" name="horizontalLayout_2">
      <item>
-      <widget class="QPushButton" name="moveUpButton">
+      <widget class="QPushButton" name="copyButton">
        <property name="text">
-        <string>Move Up</string>
-       </property>
-       <property name="icon">
-        <iconset resource="../PierogiResources.qrc">
-         <normaloff>:/icons/br_up_icon&amp;48.png</normaloff>:/icons/br_up_icon&amp;48.png</iconset>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QPushButton" name="moveDownButton">
-       <property name="text">
-        <string>Move Down</string>
-       </property>
-       <property name="icon">
-        <iconset resource="../PierogiResources.qrc">
-         <normaloff>:/icons/br_down_icon&amp;48.png</normaloff>:/icons/br_down_icon&amp;48.png</iconset>
+        <string>Copy</string>
        </property>
       </widget>
      </item>
@@ -77,9 +62,7 @@
    </item>
   </layout>
  </widget>
- <resources>
-  <include location="../PierogiResources.qrc"/>
- </resources>
+ <resources/>
  <connections>
   <connection>
    <sender>buttonBox</sender>
index 4646320..a771185 100644 (file)
@@ -74,6 +74,7 @@ PIRMacroForm::PIRMacroForm(
   smd.addPack(mw->getMultitapPack());
 
   // Connect to edit command dialog signals:
+/*
   connect(
     &ecd,
     SIGNAL(deleteCommand()),
@@ -82,6 +83,14 @@ PIRMacroForm::PIRMacroForm(
 
   connect(
     &ecd,
+    SIGNAL(copyCommand()),
+    this,
+    SLOT(copyCurrentCommand()));
+*/
+
+/*
+  connect(
+    &ecd,
     SIGNAL(moveCommandUp()),
     this,
     SLOT(moveCurrentCommandUp()));
@@ -91,6 +100,7 @@ PIRMacroForm::PIRMacroForm(
     SIGNAL(moveCommandDown()),
     this,
     SLOT(moveCurrentCommandDown()));
+*/
 }
 
 
@@ -313,9 +323,13 @@ void PIRMacroForm::on_addButton_clicked()
 }
 
 
-void PIRMacroForm::deleteCurrentCommand()
+//void PIRMacroForm::deleteCurrentCommand()
+void PIRMacroForm::on_deleteButton_clicked()
 {
+  if (!currentMacro) return;
+
   int index = ui->macroListWidget->currentRow();
+
   if (currentMacro->deleteCommand(index))
   {
     currentMacro->populateList(ui->macroListWidget);
@@ -332,10 +346,23 @@ void PIRMacroForm::deleteCurrentCommand()
 }
 
 
-void PIRMacroForm::moveCurrentCommandUp()
+//void PIRMacroForm::copyCurrentCommand()
+void PIRMacroForm::on_copyButton_clicked()
+{
+  if (!currentMacro) return;
+
+  // copy constructor dealing with inheritance issues?
+}
+
+
+//void PIRMacroForm::moveCurrentCommandUp()
+void PIRMacroForm::on_commandUpButton_clicked()
 {
+  if (!currentMacro) return;
+
   int index = ui->macroListWidget->currentRow();
-  if (currentMacro->moveUp(index))
+
+  if ((index > 0) && currentMacro->moveUp(index))
   {
     currentMacro->populateList(ui->macroListWidget);
     ui->macroListWidget->setCurrentRow(index - 1);
@@ -345,11 +372,15 @@ void PIRMacroForm::moveCurrentCommandUp()
 }
 
 
-void PIRMacroForm::moveCurrentCommandDown()
+//void PIRMacroForm::moveCurrentCommandDown()
+void PIRMacroForm::on_commandDownIcon_clicked()
 {
+  if (!currentMacro) return;
+
   int index = ui->macroListWidget->currentRow();
 
-  if (currentMacro->moveDown(index))
+  if ((index < (ui->macroListWidget->count() - 1) &&
+      currentMacro->moveDown(index)))
   {
     currentMacro->populateList(ui->macroListWidget);
     ui->macroListWidget->setCurrentRow(index + 1);
@@ -359,7 +390,21 @@ void PIRMacroForm::moveCurrentCommandDown()
 }
 
 
+void PIRMacroForm::on_macroListWidget_currentRowChanged(int currentRow)
+{
+  if (currentRow < 0)
+  {
+    ui->deleteButton->setEnabled(false);
+  }
+  else
+  {
+    ui->deleteButton->setEnabled(true);
+  }
+}
+
+
 //void PIRMacroForm::on_macroListWidget_itemClicked(QListWidgetItem *item)
+/*
 void PIRMacroForm::on_macroListWidget_itemClicked()
 {
   ecd.setup(
@@ -368,6 +413,7 @@ void PIRMacroForm::on_macroListWidget_itemClicked()
 
   ecd.exec();
 }
+*/
 
 
 /*
@@ -400,4 +446,3 @@ void PIRMacroForm::on_newMacroButton_clicked()
   mainWindow->storeMacros();
 }
 */
-
index d9da559..578152e 100644 (file)
@@ -6,7 +6,7 @@
 #include "dialogs/pireditmacrodialog.h"
 #include "dialogs/pirdeletemacrodialog.h"
 #include "dialogs/pircreatecommanddialog.h"
-#include "dialogs/pireditcommanddialog.h"
+//#include "dialogs/pireditcommanddialog.h"
 
 class PIRMacro;
 class QComboBox;
@@ -44,8 +44,13 @@ private slots:
 //  void on_newMacroButton_clicked();
   void on_runButton_clicked();
   void on_addButton_clicked();
+  void on_commandUpButton_clicked();
+  void on_commandDownIcon_clicked();
+  void on_deleteButton_clicked();
+  void on_copyButton_clicked();
 //  void on_macroListWidget_itemClicked(QListWidgetItem *item);
-  void on_macroListWidget_itemClicked();
+//  void on_macroListWidget_itemClicked();
+  void on_macroListWidget_currentRowChanged(int currentRow);
 
   void displayMacro(
     QTreeWidgetItem *item);
@@ -58,9 +63,10 @@ private slots:
   void deleteMacro(
     QTreeWidgetItem *item);
 
-  void deleteCurrentCommand();
-  void moveCurrentCommandUp();
-  void moveCurrentCommandDown();
+//  void deleteCurrentCommand();
+//  void moveCurrentCommandUp();
+//  void moveCurrentCommandDown();
+//  void copyCurrentCommand();
 
 private:
   Ui::PIRMacroForm *ui;
@@ -69,7 +75,7 @@ private:
   PIREditMacroDialog emd;
   PIRDeleteMacroDialog dmd;
   PIRCreateCommandDialog ccd;
-  PIREditCommandDialog ecd;
+//  PIREditCommandDialog ecd;
 
   PIRMacro *currentMacro;
   PIRMacro *userRequestMacro;
index db47dc5..25ed9bd 100644 (file)
    <string>Macro Processor</string>
   </property>
   <layout class="QGridLayout" name="gridLayout">
-   <item row="3" column="0">
+   <item row="6" column="1">
+    <widget class="QPushButton" name="runButton">
+     <property name="text">
+      <string>Run</string>
+     </property>
+    </widget>
+   </item>
+   <item row="0" column="0" colspan="3">
+    <widget class="QLabel" name="macroNameLabel">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="text">
+      <string>No Macro Selected</string>
+     </property>
+    </widget>
+   </item>
+   <item row="1" column="2" rowspan="6" colspan="2">
+    <widget class="QFrame" name="frame">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="frameShape">
+      <enum>QFrame::StyledPanel</enum>
+     </property>
+     <property name="frameShadow">
+      <enum>QFrame::Raised</enum>
+     </property>
+     <property name="lineWidth">
+      <number>2</number>
+     </property>
+     <layout class="QVBoxLayout" name="verticalLayout">
+      <property name="margin">
+       <number>8</number>
+      </property>
+      <item>
+       <widget class="QListWidget" name="macroListWidget"/>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item row="5" column="1">
+    <widget class="QPushButton" name="commandDownIcon">
+     <property name="text">
+      <string/>
+     </property>
+     <property name="icon">
+      <iconset resource="../PierogiResources.qrc">
+       <normaloff>:/icons/br_down_icon&amp;48.png</normaloff>:/icons/br_down_icon&amp;48.png</iconset>
+     </property>
+    </widget>
+   </item>
+   <item row="4" column="0">
     <widget class="QPushButton" name="addButton">
      <property name="enabled">
       <bool>false</bool>
      </property>
      <property name="text">
-      <string>Command</string>
+      <string>New</string>
      </property>
     </widget>
    </item>
-   <item row="1" column="1" rowspan="4" colspan="2">
-    <widget class="QListWidget" name="macroListWidget"/>
-   </item>
-   <item row="4" column="0">
-    <widget class="QPushButton" name="runButton">
+   <item row="4" column="1">
+    <widget class="QPushButton" name="commandUpButton">
      <property name="text">
-      <string>Run</string>
+      <string/>
+     </property>
+     <property name="icon">
+      <iconset resource="../PierogiResources.qrc">
+       <normaloff>:/icons/br_up_icon&amp;48.png</normaloff>:/icons/br_up_icon&amp;48.png</iconset>
      </property>
     </widget>
    </item>
-   <item row="2" column="0">
+   <item row="0" column="3">
     <widget class="QPushButton" name="chooseMacroButton">
      <property name="text">
-      <string>Macro</string>
+      <string>Select Macro</string>
      </property>
     </widget>
    </item>
-   <item row="0" column="0" colspan="3">
-    <widget class="QLabel" name="macroNameLabel">
-     <property name="sizePolicy">
-      <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
-       <horstretch>0</horstretch>
-       <verstretch>0</verstretch>
-      </sizepolicy>
+   <item row="5" column="0">
+    <widget class="QPushButton" name="deleteButton">
+     <property name="enabled">
+      <bool>false</bool>
      </property>
      <property name="text">
-      <string>No Macro Selected</string>
+      <string>Delete</string>
+     </property>
+    </widget>
+   </item>
+   <item row="6" column="0">
+    <widget class="QPushButton" name="copyButton">
+     <property name="enabled">
+      <bool>false</bool>
+     </property>
+     <property name="text">
+      <string>Copy</string>
      </property>
     </widget>
    </item>
   </layout>
  </widget>
- <resources/>
+ <resources>
+  <include location="../PierogiResources.qrc"/>
+ </resources>
  <connections/>
 </ui>
index d4a70df..65fb8e1 100644 (file)
@@ -2,6 +2,7 @@
 #include "protocols/mceprotocol.h"
 #include "protocols/necprotocol.h"
 #include "protocols/nokia32protocol.h"
+#include "protocols/aiwaprotocol.h"
 
 ADBSTB1::ADBSTB1(
   unsigned int index)
@@ -233,3 +234,65 @@ void ADBSTB4::populateProtocol(
   addKey("Enter", Enter_Key, 0xDB, 8);
   addKey("exit", Exit_Key, 0xE0, 8);
 }
+
+
+ADBSTB5::ADBSTB5(
+  unsigned int index)
+  : PIRKeysetMetaData(
+      "TV Receiver Keyset 5",
+      ADB_Make,
+      index)
+{
+}
+
+
+void ADBSTB5::populateProtocol(
+  QObject *guiObject)
+{
+  if (threadableProtocol)
+  {
+    // Keyset already populated.
+    return;
+  }
+
+  threadableProtocol = new AiwaProtocol(guiObject, index);
+
+  setPreData(0x0008, 13);
+
+  addKey("0", Zero_Key, 0x00, 8);
+  addKey("1", One_Key, 0x01, 8);
+  addKey("2", Two_Key, 0x02, 8);
+  addKey("3", Three_Key, 0x03, 8);
+  addKey("4", Four_Key, 0x04, 8);
+  addKey("5", Five_Key, 0x05, 8);
+  addKey("6", Six_Key, 0x06, 8);
+  addKey("7", Seven_Key, 0x07, 8);
+  addKey("8", Eight_Key, 0x08, 8);
+  addKey("9", Nine_Key, 0x09, 8);
+  addKey("Menu", Menu_Key, 0x0A, 8);
+  addKey("Guide", Guide_Key, 0x0B, 8);
+  addKey("Power", Power_Key, 0x0C, 8);
+  addKey("Format 16:9", AspectRatio_Key, 0x0D, 8);
+  addKey("Info/Display", Info_Key, 0x0D, 8);
+  addKey("Stop", Stop_Key, 0x0D, 8);
+  addKey("CH+", ChannelUp_Key, 0x0E, 8);
+  addKey("CH-", ChannelDown_Key, 0xF, 8);
+  addKey("Volume +", VolumeUp_Key, 0x10, 8);
+  addKey("Volume -", VolumeDown_Key, 0x11, 8);
+  addKey("Arrow_Right", Right_Key, 0x12, 8);
+  addKey("FFWD", FastForward_Key, 0x13, 8);
+  addKey("EXIT", Exit_Key, 0x14, 8);
+  addKey("Arrow_Left", Left_Key, 0x15, 8);
+  addKey("OK/Select", Select_Key, 0x16, 8);
+  addKey("Subtitle", Captions_Key, 0x18, 8);
+  addKey("Mute", Mute_Key, 0x1A, 8);
+  addKey("Input/Source", Input_Key, 0x1B, 8);
+  addKey("Arrow_Down", Down_Key, 0x1C, 8);
+  addKey("Arrow_Up", Up_Key, 0x1D, 8);
+  addKey("Play", Play_Key, 0x1E, 8);
+  addKey("Audio", Audio_Key, 0x1F, 8);
+  addKey("Red", Red_Key, 0x20, 8);
+  addKey("Green", Green_Key, 0x21, 8);
+  addKey("Yellow", Yellow_Key, 0x22, 8);
+  addKey("Blue", Blue_Key, 0x23, 8);
+}
index f04eed0..af56089 100644 (file)
@@ -48,4 +48,15 @@ public:
     QObject *guiObject);
 };
 
+
+class ADBSTB5: public PIRKeysetMetaData
+{
+public:
+  ADBSTB5(
+    unsigned int index);
+
+  virtual void populateProtocol(
+    QObject *guiObject);
+};
+
 #endif // ADB_H
index 3d7e817..0d91519 100644 (file)
@@ -45,7 +45,7 @@ void CiscoSTB1::populateProtocol(
   addKey("play", Play_Key, 0x91, 8);
   addKey("1", One_Key, 0x92, 8);
   addKey("2", Two_Key, 0x93, 8);
-  addKey("hd", HDMIInput_Key, 0x95, 8); // Might be wrong
+  addKey("hd", HDDInput_Key, 0x95, 8);
   addKey("blue", Blue_Key, 0x96, 8);
   addKey("stop", Stop_Key, 0x97, 8);
   addKey("radio", TunerInput_Key, 0x98, 8);
@@ -124,7 +124,7 @@ void CiscoSTB2::populateProtocol(
   addPanOldKey("VolumeUp", VolumeUp_Key, 0x1B, 0x20);
   addPanOldKey("VolumeDown", VolumeDown_Key, 0x1B, 0x21);
   addPanOldKey("Mute", Mute_Key, 0x1B, 0x22);
-  addPanOldKey("List", Unmapped_Key, 0x1B, 0x26);
+  addPanOldKey("List", HDDInput_Key, 0x1B, 0x26); // "myDVR", might be wrong
   addPanOldKey("Replay", Replay_Key, 0x1B, 0x27); // "SkipBack"
   addPanOldKey("FastForward", FastForward_Key, 0x1B, 0x28);
   addPanOldKey("Rewind", Rewind_Key, 0x1B, 0x29);
diff --git a/keysets/crownmustang.cpp b/keysets/crownmustang.cpp
new file mode 100644 (file)
index 0000000..959f6be
--- /dev/null
@@ -0,0 +1,57 @@
+#include "crownmustang.h"
+#include "protocols/necprotocol.h"
+
+CrownMustangTV1::CrownMustangTV1(
+  unsigned int index)
+  : PIRKeysetMetaData(
+      "TV Keyset 1",
+      CrownMustang_Make,
+      index)
+{
+}
+
+
+void CrownMustangTV1::populateProtocol(
+  QObject *guiObject)
+{
+  if (threadableProtocol)
+  {
+    // Keyset already defined.
+    return;
+  }
+
+  threadableProtocol = new NECProtocol(guiObject, index, true, true);
+
+  setPreData(0x1004, 16);
+
+  addKey("Sleep", Sleep_Key, 0x1E, 8);
+  addKey("Last/Prev Ch", PrevChannel_Key, 0x19, 8);
+  addKey("Menu", Menu_Key, 0x18, 8);
+  addKey("Info", Info_Key, 0x17, 8);
+  addKey("Mode", Mode_Key, 0x16, 8);
+  addKey("Brightness +", BrightnessUp_Key, 0x15, 8);
+  addKey("Brightness -", BrightnessDown_Key, 0x13, 8);
+  addKey("TV/Video", Input_Key, 0x12, 8);
+  addKey("-/--", DoubleDigit_Key, 0x11, 8);
+  addKey("-/--", Dash_Key, 0x11, 8);
+  addKey("Power", Power_Key, 0x0F, 8);
+  addKey("Mute", Mute_Key, 0x0E, 8);
+  addKey("Volume -", VolumeDown_Key, 0x0D, 8);
+  addKey("Arrow_Left", Left_Key, 0x0D, 8);
+  addKey("Volume +", VolumeUp_Key, 0x0C, 8);
+  addKey("Right_Key", Right_Key, 0x0C, 8);
+  addKey("CH-", ChannelDown_Key, 0x0B, 8);
+  addKey("Arrow_Down", Down_Key, 0x0B, 8);
+  addKey("CH+", ChannelUp_Key, 0x0A, 8);
+  addKey("Arrow_Up", Up_Key, 0x0A, 8);
+  addKey("9", Nine_Key, 0x09, 8);
+  addKey("8", Eight_Key, 0x08, 8);
+  addKey("7", Seven_Key, 0x07, 8);
+  addKey("6", Six_Key, 0x06, 8);
+  addKey("5", Five_Key, 0x05, 8);
+  addKey("4", Four_Key, 0x04, 8);
+  addKey("3", Three_Key, 0x03, 8);
+  addKey("2", Two_Key, 0x02, 8);
+  addKey("1", One_Key, 0x01, 8);
+  addKey("0", Zero_Key, 0x00, 8);
+}
diff --git a/keysets/crownmustang.h b/keysets/crownmustang.h
new file mode 100644 (file)
index 0000000..13cd06d
--- /dev/null
@@ -0,0 +1,18 @@
+#ifndef CROWNMUSTANG_H
+#define CROWNMUSTANG_H
+
+#include "pirkeysetmetadata.h"
+
+class QObject;
+
+class CrownMustangTV1: public PIRKeysetMetaData
+{
+public:
+  CrownMustangTV1(
+    unsigned int index);
+
+  virtual void populateProtocol(
+    QObject *guiObject);
+};
+
+#endif // CROWNMUSTANG_H
index 250342f..0ceec47 100644 (file)
@@ -35,20 +35,28 @@ void HaierTV1::populateProtocol(
   addKey("8", Eight_Key, 0x07, 8);
   addKey("9", Nine_Key, 0x08, 8);
   addKey("0", Zero_Key, 0x09, 8);
-  addKey("last (prev ch)", PrevChannel_Key, 0x0E, 8);
   addKey("menu", Menu_Key, 0x0D, 8);
+  addKey("last (prev ch)", PrevChannel_Key, 0x0E, 8);
   addKey("tv/av", Input_Key, 0x0F, 8);
 
   addKey("vol up", VolumeUp_Key, 0x10, 8); // "right arrow"
   addKey("vol up", Right_Key, 0x10, 8); // "right arrow"
+  addKey("osd control?", Unmapped_Key, 0x11, 8);
   addKey("power", Power_Key, 0x12, 8);
   addKey("channel up", ChannelUp_Key, 0x13, 8); // "up arrow"
   addKey("channel up", Up_Key, 0x13, 8); // "up arrow"
   addKey("vol down", VolumeDown_Key, 0x14, 8); // "left arrow"
   addKey("vol down", Left_Key, 0x14, 8); // "left arrow"
+  addKey("unknown-blanks screen", Unmapped_Key, 0x15, 8);
   addKey("mute", Mute_Key, 0x16, 8);
   addKey("channel down", ChannelDown_Key, 0x17, 8); // "down arrow"
   addKey("channel down", Down_Key, 0x17, 8); // "down arrow"
   addKey("display", Info_Key, 0x18, 8);
-  addKey("rating", Unmapped_Key, 0x1B, 8);
+  addKey("if control", Unmapped_Key, 0x19, 8);
+  addKey("crt geometry", AspectRatio_Key, 0x1A, 8);
+  addKey("rating", Unmapped_Key, 0x1B, 8); // "v-chip"
+  addKey("rgb control", Unmapped_Key, 0x1C, 8);
+  addKey("picture control", Unmapped_Key, 0x1D, 8);
+  addKey("factory reset", Unmapped_Key, 0x1E, 8);
+  addKey("test pattern", Unmapped_Key, 0x1F, 8);
 }
diff --git a/keysets/hantarex.cpp b/keysets/hantarex.cpp
new file mode 100644 (file)
index 0000000..874a252
--- /dev/null
@@ -0,0 +1,126 @@
+#include "hantarex.h"
+#include "protocols/necprotocol.h"
+
+HantarexTV1::HantarexTV1(
+  unsigned int index)
+  : PIRKeysetMetaData(
+      "TV Keyset 1",
+      Hantarex_Make,
+      index)
+{
+}
+
+
+void HantarexTV1::populateProtocol(
+  QObject *guiObject)
+{
+  if (threadableProtocol)
+  {
+    // Keyset already populated.
+    return;
+  }
+
+  threadableProtocol = new NECProtocol(guiObject, index, false, true);
+
+  setPreData(0x96, 8);
+
+  addKey("Blue", Blue_Key, 0x00, 8);
+  addKey("Yellow", Yellow_Key, 0x01, 8);
+  addKey("Green", Green_Key, 0x02, 8);
+  addKey("Red", Red_Key, 0x03, 8);
+  addKey("Rewind", Rewind_Key, 0x05, 8);
+//  addKey("Skip -", Previous_Key, 0x05, 8);
+  addKey("Play", Play_Key, 0x07, 8);
+  addKey("Power", Power_Key, 0x08, 8);
+  addKey("Mute", Mute_Key, 0x09, 8);
+  addKey("Volume +", VolumeUp_Key, 0x0A, 8);
+  addKey("Arrow_Right", Right_Key, 0x0A, 8);
+  addKey("Volume -", VolumeDown_Key, 0x0B, 8);
+  addKey("Arrow_Left", Left_Key, 0x0B, 8);
+  addKey("9", Nine_Key, 0x0C, 8);
+  addKey("0", Zero_Key, 0x0D, 8);
+  addKey("Menu", Menu_Key, 0x0F, 8);
+  addKey("EXIT", Exit_Key, 0x10, 8);
+//  addKey("Pause", Pause_Key, 0x13, 8);
+  addKey("FFWD", FastForward_Key, 0x13, 8);
+  addKey("CH+", ChannelUp_Key, 0x14, 8);
+  addKey("Arrow_Up", Up_Key, 0x14, 8);
+  addKey("CH-", ChannelDown_Key, 0x15, 8);
+  addKey("Arrow_Down", Down_Key, 0x15, 8);
+  addKey("1", One_Key, 0x18, 8);
+  addKey("2", Two_Key, 0x19, 8);
+  addKey("3", Three_Key, 0x1A, 8);
+  addKey("4", Four_Key, 0x1B, 8);
+  addKey("5", Five_Key, 0x1C, 8);
+  addKey("6", Six_Key, 0x1D, 8);
+  addKey("7", Seven_Key, 0x1E, 8);
+  addKey("8", Eight_Key, 0x1F, 8);
+  addKey("Input/Source", Input_Key, 0x23, 8);
+  addKey("OK/Select", Select_Key, 0x25, 8);
+  addKey("Record", Record_Key, 0x26, 8);
+  addKey("Info/Display", Info_Key, 0x30, 8);
+}
+
+
+HantarexTV2::HantarexTV2(
+  unsigned int index)
+  : PIRKeysetMetaData(
+      "TV Keyset 2",
+      Hantarex_Make,
+      index)
+{
+}
+
+
+void HantarexTV2::populateProtocol(
+  QObject *guiObject)
+{
+  if (threadableProtocol)
+  {
+    // Keyset already populated
+    return;
+  }
+
+  threadableProtocol = new NECProtocol(guiObject, index, true, true);
+
+  setPreData(0x4020, 16);
+
+  addKey("Power", Power_Key, 0x00, 8);
+  addKey("1", One_Key, 0x01, 8);
+  addKey("2", Two_Key, 0x02, 8);
+  addKey("3", Three_Key, 0x03, 8);
+  addKey("Input/Source", Input_Key, 0x04, 8);
+  addKey("4", Four_Key, 0x05, 8);
+  addKey("5", Five_Key, 0x06, 8);
+  addKey("6", Six_Key, 0x07, 8);
+  addKey("Sleep", Sleep_Key, 0x08, 8);
+  addKey("7", Seven_Key, 0x09, 8);
+  addKey("8", Eight_Key, 0x0A, 8);
+  addKey("9", Nine_Key, 0x0B, 8);
+  addKey("DASH", Dash_Key, 0x0D, 8);
+  addKey("Ok/Select", Select_Key, 0x0F, 8);
+  addKey("Menu", Menu_Key, 0x0F, 8); // ?
+  addKey("CH+", ChannelUp_Key, 0x10, 8);
+  addKey("Arrow_Up", Up_Key, 0x10, 8);
+  addKey("Page +", PageUp_Key, 0x10, 8);
+  addKey("Volume +", VolumeUp_Key, 0x11, 8);
+  addKey("Arrow_Right", Right_Key, 0x11, 8);
+  addKey("Volume -", VolumeDown_Key, 0x12, 8);
+  addKey("Arrow_Left", Left_Key, 0x12, 8);
+  addKey("CH-", ChannelDown_Key, 0x13, 8);
+  addKey("Arrow_Down", Down_Key, 0x13, 8);
+  addKey("Page -", PageDown_Key, 0x13, 8);
+  addKey("Yellow", Yellow_Key, 0x14, 8);
+  addKey("CC", Captions_Key, 0x14, 8);
+  addKey("Blue", Blue_Key, 0x15, 8);
+  addKey("Mute", Mute_Key, 0x17, 8);
+  addKey("0", Zero_Key, 0x18, 8);
+  addKey("Last/Prev Ch", PrevChannel_Key, 0x1B, 8);
+  addKey("EXIT", Exit_Key, 0x1B, 8);
+  addKey("Info/Display", Info_Key, 0x1D, 8);
+  addKey("Red", Red_Key, 0x1F, 8);
+  addKey("Format 16:9", AspectRatio_Key, 0x40, 8);
+  addKey("Guide", Guide_Key, 0x42, 8);
+//  addKey("Last/Prev Ch", PrevChannel_Key, 0x42, 8);
+  addKey("Green", Green_Key, 0x44, 8);
+}
diff --git a/keysets/hantarex.h b/keysets/hantarex.h
new file mode 100644 (file)
index 0000000..2feeac7
--- /dev/null
@@ -0,0 +1,28 @@
+#ifndef HANTAREX_H
+#define HANTAREX_H
+
+#include "pirkeysetmetadata.h"
+
+class QObject;
+
+class HantarexTV1: public PIRKeysetMetaData
+{
+public:
+  HantarexTV1(
+    unsigned int index);
+
+  virtual void populateProtocol(
+    QObject *guiObject);
+};
+
+class HantarexTV2: public PIRKeysetMetaData
+{
+public:
+  HantarexTV2(
+    unsigned int index);
+
+  virtual void populateProtocol(
+    QObject *guiObject);
+};
+
+#endif // HANTAREX_H
diff --git a/keysets/keymat.cpp b/keysets/keymat.cpp
new file mode 100644 (file)
index 0000000..29eb4bd
--- /dev/null
@@ -0,0 +1,114 @@
+#include "keymat.h"
+#include "protocols/necprotocol.h"
+
+KeymatTV1::KeymatTV1(
+  unsigned int index)
+  : PIRKeysetMetaData(
+      "TV Keyset 1",
+      Keymat_Make,
+      index)
+{
+}
+
+
+void KeymatTV1::populateProtocol(
+  QObject *guiObject)
+{
+  if (threadableProtocol)
+  {
+    // Keyset already populated.
+    return;
+  }
+
+  threadableProtocol = new NECProtocol(guiObject, index, false, true);
+
+  setPreData(0x96, 8);
+
+  addKey("Info/Display", Info_Key, 0x35, 8);
+  addKey("Rewind", Rewind_Key, 0x32, 8);
+  addKey("FFWD", FastForward_Key, 0x31, 8);
+  addKey("Play", Play_Key, 0x1E, 8);
+  addKey("Input/Source", Input_Key, 0x16, 8);
+  addKey("Blue", Blue_Key, 0x16, 8);
+  addKey("Last/Prev Ch", PrevChannel_Key, 0x15, 8);
+  addKey("Yellow", Yellow_Key, 0x15, 8);
+  addKey("Record", Record_Key, 0x14, 8);
+  addKey("Green", Green_Key, 0x14, 8);
+  addKey("Red", Red_Key, 0x13, 8);
+  addKey("CH-", ChannelDown_Key, 0x11, 8);
+  addKey("Arrow_Down", Down_Key, 0x11, 8);
+  addKey("Volume +", VolumeUp_Key, 0x0F, 8);
+  addKey("Arrow_Right", Right_Key, 0x0F, 8);
+  addKey("Menu", Menu_Key, 0x0E, 8);
+  addKey("Volume -", VolumeDown_Key, 0x0D, 8);
+  addKey("Arrow_Left", Left_Key, 0x0D, 8);
+  addKey("Power", Power_Key, 0x0C, 8);
+  addKey("CH+", ChannelUp_Key, 0x0B, 8);
+  addKey("Arrow_Up", Up_Key, 0x0B, 8);
+  addKey("Mute", Mute_Key, 0x0A, 8);
+  addKey("9", Nine_Key, 0x09, 8);
+  addKey("8", Eight_Key, 0x08, 8);
+  addKey("7", Seven_Key, 0x07, 8);
+  addKey("6", Six_Key, 0x06, 8);
+  addKey("5", Five_Key, 0x05, 8);
+  addKey("4", Four_Key, 0x04, 8);
+  addKey("3", Three_Key, 0x03, 8);
+  addKey("2", Two_Key, 0x02, 8);
+  addKey("1", One_Key, 0x01, 8);
+  addKey("0", Zero_Key, 0x00, 8);
+}
+
+
+KeymatTV2::KeymatTV2(
+  unsigned int index)
+  : PIRKeysetMetaData(
+      "TV Keyset 2",
+      Keymat_Make,
+      index)
+{
+}
+
+
+void KeymatTV2::populateProtocol(
+  QObject *guiObject)
+{
+  if (threadableProtocol)
+  {
+    // Keyset already populated.
+    return;
+  }
+
+  threadableProtocol = new NECProtocol(guiObject, index, false, true);
+
+  setPreData(0x08, 8);
+
+  addKey("CC", Captions_Key, 0x55, 8);
+  addKey("Format 16:9", AspectRatio_Key, 0x4C, 8);
+  addKey("Sleep", Sleep_Key, 0x45, 8);
+  addKey("CH-", ChannelDown_Key, 0x1F, 8);
+  addKey("Arrow_Down", Down_Key, 0x1F, 8);
+  addKey("Volume -", VolumeDown_Key, 0x1E, 8);
+  addKey("Arrow_Left", Left_Key, 0x1E, 8);
+  addKey("CH+", ChannelUp_Key, 0x1B, 8);
+  addKey("Arrow_Up", Up_Key, 0x1B, 8);
+  addKey("Volume +", VolumeUp_Key, 0x1A, 8);
+  addKey("Arrow_Right", Right_Key, 0x1A, 8);
+  addKey("Info/Display", Info_Key, 0x16, 8);
+  addKey("Input/Source", Input_Key, 0x14, 8);
+  addKey("Power", Power_Key, 0x12, 8);
+  addKey("Mute", Mute_Key, 0x10, 8);
+  addKey("Last/Prev Ch", PrevChannel_Key, 0x0E, 8);
+  addKey("Ok/Select", Select_Key, 0x0C, 8);
+  addKey("Menu", Menu_Key, 0x0C, 8);
+  addKey("100+", PlusOneHundred_Key, 0x0B, 8);
+  addKey("9", Nine_Key, 0x09, 8);
+  addKey("8", Eight_Key, 0x08, 8);
+  addKey("7", Seven_Key, 0x07, 8);
+  addKey("6", Six_Key, 0x06, 8);
+  addKey("5", Five_Key, 0x05, 8);
+  addKey("4", Four_Key, 0x04, 8);
+  addKey("3", Three_Key, 0x03, 8);
+  addKey("2", Two_Key, 0x02, 8);
+  addKey("1", One_Key, 0x01, 8);
+  addKey("0", Zero_Key, 0x00, 8);
+}
diff --git a/keysets/keymat.h b/keysets/keymat.h
new file mode 100644 (file)
index 0000000..372129f
--- /dev/null
@@ -0,0 +1,28 @@
+#ifndef KEYMAT_H
+#define KEYMAT_H
+
+#include "pirkeysetmetadata.h"
+
+class QObject;
+
+class KeymatTV1: public PIRKeysetMetaData
+{
+public:
+  KeymatTV1(
+    unsigned int index);
+
+  virtual void populateProtocol(
+    QObject *guiObject);
+};
+
+class KeymatTV2: public PIRKeysetMetaData
+{
+public:
+  KeymatTV2(
+    unsigned int index);
+
+  virtual void populateProtocol(
+    QObject *guiObject);
+};
+
+#endif // KEYMAT_H
diff --git a/keysets/konka.cpp b/keysets/konka.cpp
new file mode 100644 (file)
index 0000000..3ad1089
--- /dev/null
@@ -0,0 +1,113 @@
+#include "konka.h"
+#include "protocols/aiwaprotocol.h"
+
+KonkaTV1::KonkaTV1(
+  unsigned int index)
+  : PIRKeysetMetaData(
+      "TV Keyset 1",
+      Konka_Make,
+      index)
+{
+}
+
+
+void KonkaTV1::populateProtocol(
+  QObject *guiObject)
+{
+  if (threadableProtocol)
+  {
+    // Keyset already populated.
+    return;
+  }
+
+  threadableProtocol = new AiwaProtocol(guiObject, index);
+
+  setPreData(0x0119, 13);
+
+  addKey("Reset", Reset_Key, 0x00, 8);
+  addKey("Power", Power_Key, 0x01, 8);
+  addKey("Ch+", ChannelUp_Key, 0x02, 8);
+  addKey("Ch+", Up_Key, 0x02, 8);
+  addKey("Ch-", ChannelDown_Key, 0x03, 8);
+  addKey("Ch-", Down_Key, 0x03, 8);
+  addKey("Vol+", VolumeUp_Key, 0x04, 8);
+  addKey("Vol+", Right_Key, 0x04, 8);
+  addKey("Vol-", VolumeDown_Key, 0x05, 8);
+  addKey("Vol-", Left_Key, 0x05, 8);
+  addKey("MTS", Unmapped_Key, 0x06, 8); // mts obsolete, do we need it?
+  addKey("V-Chip", Unmapped_Key, 0x07, 8);
+  addKey("Mute", Mute_Key, 0x0A, 8);
+  addKey("Display", Info_Key, 0x0B, 8);
+  addKey("ChRecall", PrevChannel_Key, 0x0C, 8);
+  addKey("Sleep", Sleep_Key, 0x0D, 8);
+  addKey("TV/AV", Input_Key, 0x0E, 8);
+
+  addKey("0", Zero_Key, 0x10, 8);
+  addKey("1", One_Key, 0x11, 8);
+  addKey("2", Two_Key, 0x12, 8);
+  addKey("3", Three_Key, 0x13, 8);
+  addKey("4", Four_Key, 0x14, 8);
+  addKey("5", Five_Key, 0x15, 8);
+  addKey("6", Six_Key, 0x16, 8);
+  addKey("7", Seven_Key, 0x17, 8);
+  addKey("8", Eight_Key, 0x18, 8);
+  addKey("9", Nine_Key, 0x19, 8);
+  addKey("Menu", Menu_Key, 0x1D, 8);
+  addKey("Caption", Captions_Key, 0x1E, 8);
+}
+
+
+KonkaTV2::KonkaTV2(
+  unsigned int index)
+  : PIRKeysetMetaData(
+      "TV Keyset 2",
+      Konka_Make,
+      index)
+{
+}
+
+
+void KonkaTV2::populateProtocol(
+  QObject *guiObject)
+{
+  if (threadableProtocol)
+  {
+    // Keyset already populated.
+    return;
+  }
+
+  threadableProtocol = new AiwaProtocol(guiObject, index);
+
+  setPreData(0x0119, 13); // Same as TV1, but keys completely different!
+
+  addKey("0", Zero_Key, 0x00, 8);
+  addKey("1", One_Key, 0x01, 8);
+  addKey("2", Two_Key, 0x02, 8);
+  addKey("3", Three_Key, 0x03, 8);
+  addKey("4", Four_Key, 0x04, 8);
+  addKey("5", Five_Key, 0x05, 8);
+  addKey("6", Six_Key, 0x06, 8);
+  addKey("7", Seven_Key, 0x07, 8);
+  addKey("8", Eight_Key, 0x08, 8);
+  addKey("9", Nine_Key, 0x09, 8);
+  addKey("-", Dash_Key, 0x0A, 8);
+  addKey("novideo", Unmapped_Key, 0x0B, 8);
+  addKey("tv/av", Input_Key, 0x0D, 8);
+  addKey("back", PrevChannel_Key, 0x0E, 8);
+
+  addKey("menu", Menu_Key, 0x10, 8);
+  addKey("analog", Unmapped_Key, 0x13, 8);
+  addKey("game", Unmapped_Key, 0x14, 8);
+  addKey("mute", Mute_Key, 0x15, 8);
+  addKey("vstatus", Unmapped_Key, 0x16, 8);
+  addKey("ch-", ChannelDown_Key, 0x1A, 8);
+  addKey("ch-", Down_Key, 0x1A, 8);
+  addKey("ch+", ChannelUp_Key, 0x1B, 8);
+  addKey("ch+", Up_Key, 0x1B, 8);
+  addKey("power", Power_Key, 0x1C, 8);
+  addKey("timing", Unmapped_Key, 0x1D, 8);
+  addKey("vol-", VolumeDown_Key, 0x1E, 8);
+  addKey("vol-", Left_Key, 0x1E, 8);
+  addKey("vol+", VolumeUp_Key, 0x1F, 8);
+  addKey("vol+", Right_Key, 0x1F, 8);
+}
diff --git a/keysets/konka.h b/keysets/konka.h
new file mode 100644 (file)
index 0000000..c2905f8
--- /dev/null
@@ -0,0 +1,28 @@
+#ifndef KONKA_H
+#define KONKA_H
+
+#include "pirkeysetmetadata.h"
+
+class QObject;
+
+class KonkaTV1: public PIRKeysetMetaData
+{
+public:
+  KonkaTV1(
+    unsigned int index);
+
+  virtual void populateProtocol(
+    QObject *guiObject);
+};
+
+class KonkaTV2: public PIRKeysetMetaData
+{
+public:
+  KonkaTV2(
+    unsigned int index);
+
+  virtual void populateProtocol(
+    QObject *guiObject);
+};
+
+#endif // KONKA_H
index 0fd4e6e..31a93bc 100644 (file)
@@ -28,6 +28,7 @@ void LGTV1::populateProtocol(
   }
 
   threadableProtocol = new NECProtocol(guiObject, index, false, true);
+  threadableProtocol->setMinimumRepetitions(1);
 
   setPreData(0x04, 8);
 
@@ -561,6 +562,7 @@ void LGVCR1::populateProtocol(
   }
 
   threadableProtocol = new NECProtocol(guiObject, index, false, true);
+  threadableProtocol->setMinimumRepetitions(1);
 
   setPreData(0x6E, 8);
 
@@ -686,6 +688,7 @@ void LGAC1::populateProtocol(
   }
 
   threadableProtocol = new NECProtocol(guiObject, index, true, true);
+  threadableProtocol->setMinimumRepetitions(1);
 
   setPreData(0x6681, 16);
 
index 1940c01..b3471f4 100644 (file)
@@ -1,5 +1,6 @@
 #include "sony.h"
 #include "protocols/sircprotocol.h"
+#include "protocols/aiwaprotocol.h"
 
 
 SonyTV1::SonyTV1(
@@ -235,6 +236,64 @@ void SonyTV1c::populateProtocol(
 }
 
 
+SonyTV2::SonyTV2(
+  unsigned int index)
+  : PIRKeysetMetaData(
+      "TV Keyset 2",
+      Sony_Make,
+      index)
+{
+}
+
+
+void SonyTV2::populateProtocol(
+  QObject *guiObject)
+{
+  if (threadableProtocol)
+  {
+    // Keyset already populated.
+    return;
+  }
+
+  threadableProtocol = new AiwaProtocol(guiObject, index);
+
+  setPreData(0x0119, 13);
+
+  addKey("0", Zero_Key, 0x00, 8);
+  addKey("1", One_Key, 0x01, 8);
+  addKey("2", Two_Key, 0x02, 8);
+  addKey("3", Three_Key, 0x03, 8);
+  addKey("4", Four_Key, 0x04, 8);
+  addKey("5", Five_Key, 0x05, 8);
+  addKey("6", Six_Key, 0x06, 8);
+  addKey("7", Seven_Key, 0x07, 8);
+  addKey("8", Eight_Key, 0x08, 8);
+  addKey("9", Nine_Key, 0x09, 8);
+  addKey("sleep", Sleep_Key, 0x0A, 8);
+  addKey("tv/av", Input_Key, 0x0E, 8);
+  addKey("back", PrevChannel_Key, 0x0F, 8);
+
+  addKey("display", Info_Key, 0x10, 8);
+  addKey("cc", Captions_Key, 0x11, 8);
+  addKey("input 1", Unmapped_Key, 0x12, 8);
+  addKey("pip on/off", PIP_Key, 0x13, 8);
+  addKey("pip move", PIPMove_Key, 0x14, 8);
+  addKey("mute", Mute_Key, 0x15, 8);
+  addKey("pip swap", PIPSwap_Key, 0x16, 8);
+  addKey("menu", Menu_Key, 0x17, 8);
+  addKey("ch-", ChannelDown_Key, 0x1A, 8);
+  addKey("ch-", Down_Key, 0x1A, 8);
+  addKey("ch+", ChannelUp_Key, 0x1B, 8);
+  addKey("ch+", Up_Key, 0x1B, 8);
+  addKey("power", Power_Key, 0x1C, 8);
+  addKey("freeze", PIPPause_Key, 0x1D, 8);
+  addKey("vol-", VolumeDown_Key, 0x1E, 8);
+  addKey("vol-", Left_Key, 0x1E, 8);
+  addKey("vol+", VolumeUp_Key, 0x1F, 8);
+  addKey("vol+", Right_Key, 0x1F, 8);
+}
+
+
 // These controls don't quite match other SIRC data.  (some do, some don't)
 // This all taken from LIRC "AMPIR" config file.
 SonyAmp1::SonyAmp1(
index c971392..a84172e 100644 (file)
@@ -49,6 +49,17 @@ public:
 };
 
 
+class SonyTV2: public PIRKeysetMetaData
+{
+public:
+  SonyTV2(
+    unsigned int index);
+
+  virtual void populateProtocol(
+    QObject *guiObject);
+};
+
+
 class SonyAmp1: public PIRKeysetMetaData
 {
 public:
index c139384..f9f5f5a 100644 (file)
@@ -140,16 +140,17 @@ void TriaxSTB2a::populateProtocol(
 }
 
 
-/*
-TriaxSTB2b::TriaxSTB2b(
+TriaxSTB3::TriaxSTB3(
   unsigned int index)
-  : TriaxSTB2(index)
+  : PIRKeysetMetaData(
+      "Satellite Receiver 3",
+      Triax_Make,
+      index)
 {
-  setKeysetName("Satellite Receiver 2b (experimental)");
 }
 
 
-void TriaxSTB2b::populateProtocol(
+void TriaxSTB3::populateProtocol(
   QObject *guiObject)
 {
   if (threadableProtocol)
@@ -158,8 +159,141 @@ void TriaxSTB2b::populateProtocol(
     return;
   }
 
-  TriaxSTB2::populateProtocol(guiObject);
+  threadableProtocol = new NECProtocol(guiObject, index, true, true);
+
+  setPreData(0x7F00, 16);
+
+  addKey("Power", Power_Key, 0x00, 8);
+  addKey("3", Three_Key, 0x01, 8);
+  addKey("2", Two_Key, 0x02, 8);
+  addKey("1", One_Key, 0x03, 8);
+//  addKey("Last/Prev Ch", PrevChannel_Key, 0x04, 8);
+  addKey("EXIT", Exit_Key, 0x04, 8);
+  addKey("6", Six_Key, 0x05, 8);
+  addKey("5", Five_Key, 0x06, 8);
+  addKey("4", Four_Key, 0x07, 8);
+  addKey("OK/Select", Select_Key, 0x08, 8);
+  addKey("9", Nine_Key, 0x09, 8);
+  addKey("8", Eight_Key, 0x0A, 8);
+  addKey("7", Seven_Key, 0x0B, 8);
+  addKey("Arrow_Right", Right_Key, 0x0D, 8);
+  addKey("0", Zero_Key, 0x0E, 8);
+  addKey("Red", Red_Key, 0x0F, 8);
+  addKey("Play", Play_Key, 0x0F, 8);
+  addKey("Info", Info_Key, 0x10, 8);
+  addKey("Stop", Stop_Key, 0x10, 8);
+  addKey("Arrow_Left", Left_Key, 0x11, 8);
+  addKey("Guide", Guide_Key, 0x12, 8);
+  addKey("TV/Sat", Input_Key, 0x13, 8);
+  addKey("Blue", Blue_Key, 0x13, 8);
+  addKey("Mute", Mute_Key, 0x14, 8);
+  addKey("Last/Prev Ch", PrevChannel_Key, 0x15, 8);
+  addKey("PIP On/Off", PIP_Key, 0x16, 8);
+  addKey("Yellow", Yellow_Key, 0x16, 8);
+  addKey("Menu", Menu_Key, 0x19, 8);
+  addKey("CH+", ChannelUp_Key, 0x1A, 8);
+  addKey("Arrow_Up", Up_Key, 0x1A, 8);
+  addKey("CH-", ChannelDown_Key, 0x1B, 8);
+  addKey("Arrow_Down", Down_Key, 0x1B, 8);
+  addKey("Subtitle", Captions_Key, 0x42, 8);
+  addKey("Volume -", VolumeDown_Key, 0x44, 8);
+  addKey("Volume +", VolumeUp_Key, 0x48, 8);
+  addKey("Green", Green_Key, 0x49, 8);
+}
+
+
+TriaxSTB3a::TriaxSTB3a(
+  unsigned int index)
+  : TriaxSTB3(index)
+{
+  setKeysetName("Satellite Receiver 3a");
+}
+
+
+void TriaxSTB3a::populateProtocol(
+  QObject *guiObject)
+{
+  if (threadableProtocol)
+  {
+    // Keyset already populated.
+    return;
+  }
+
+  TriaxSTB3::populateProtocol(guiObject);
+
+//  addKey("Stop", Stop_Key, 0x08, 8);
+  addKey("FFWD", FastForward_Key, 0x0D, 8);
+  addKey("Blue", Blue_Key, 0x10, 8);
+//  addKey("Rewind", Rewind_Key, 0x11, 8);
+  addKey("Replay", Replay_Key, 0x13, 8);
+  addKey("Last/Prev Ch", PrevChannel_Key, 0x16, 8);
+  addKey("Pause", Pause_Key, 0x1A, 8);
+  addKey("Record", Record_Key, 0x43, 8);
+  addKey("Rewind", Rewind_Key, 0x45, 8);
+}
+
+
+TriaxSTB4::TriaxSTB4(
+  unsigned int index)
+  : PIRKeysetMetaData(
+      "Satellite Receiver 4",
+      Triax_Make,
+      index)
+{
+}
+
+
+void TriaxSTB4::populateProtocol(
+  QObject *guiObject)
+{
+  if (threadableProtocol)
+  {
+    // Keyset already populated.
+    return;
+  }
+
+  threadableProtocol = new NECProtocol(guiObject, index, true, true);
+
+  setPreData(0x7F00, 16);
 
-  setPreData(0xFE01, 16);
+  addKey("Mute", Mute_Key, 0x00, 8);
+  addKey("Rewind", Rewind_Key, 0x01, 8);
+  addKey("Red", Red_Key, 0x01, 8);
+  addKey("CH+", ChannelUp_Key, 0x02, 8);
+  addKey("Arrow_Up", Up_Key, 0x02, 8);
+//  addKey("Last/Prev Ch", PrevChannel_Key, 0x03, 8);
+  addKey("EXIT", Exit_Key, 0x03, 8);
+  addKey("Input/Source", Input_Key, 0x04, 8);
+  addKey("Green", Green_Key, 0x04, 8);
+  addKey("Volume +", VolumeUp_Key, 0x05, 8);
+  addKey("Arrow_Right", Right_Key, 0x05, 8);
+  addKey("Skip +", Next_Key, 0x05, 8);
+  addKey("Ok/Select", Select_Key, 0x06, 8);
+  addKey("Volume -", VolumeDown_Key, 0x07, 8);
+  addKey("Arrow_Left", Left_Key, 0x07, 8);
+  addKey("Skip -", Previous_Key, 0x07, 8);
+  addKey("Last/Prev Ch", PrevChannel_Key, 0x08, 8);
+  addKey("Pause", Pause_Key, 0x09, 8);
+  addKey("Blue", Blue_Key, 0x09, 8);
+  addKey("CH-", ChannelDown_Key, 0x0A, 8);
+  addKey("Arrow_Down", Down_Key, 0x0A, 8);
+  addKey("Yellow", Yellow_Key, 0x0D, 8);
+  addKey("0", Zero_Key, 0x0E, 8);
+  addKey("9", Nine_Key, 0x0F, 8);
+  addKey("8", Eight_Key, 0x10, 8);
+  addKey("7", Seven_Key, 0x11, 8);
+  addKey("6", Six_Key, 0x12, 8);
+  addKey("5", Five_Key, 0x13, 8);
+  addKey("4", Four_Key, 0x14, 8);
+  addKey("3", Three_Key, 0x15, 8);
+  addKey("2", Two_Key, 0x16, 8);
+  addKey("1", One_Key, 0x17, 8);
+  addKey("Power", Power_Key, 0x18, 8);
+  addKey("Play", Play_Key, 0x1A, 8);
+  addKey("Info/Display", Info_Key, 0x1B, 8);
+  addKey("Stop", Stop_Key, 0x1B, 8);
+  addKey("Format 16:9", AspectRatio_Key, 0x1C, 8);
+  addKey("FAV", Favorites_Key, 0x1C, 8);
+  addKey("Menu", Menu_Key, 0x1D, 8);
+  addKey("Guide", Guide_Key, 0x1E, 8);
 }
-*/
index a47383a..34b1ef8 100644 (file)
@@ -35,16 +35,34 @@ public:
     QObject *guiObject);
 };
 
-/*
-class TriaxSTB2b: public TriaxSTB2
+class TriaxSTB3: public PIRKeysetMetaData
 {
 public:
-  TriaxSTB2b(
+  TriaxSTB3(
+    unsigned int index);
+
+  virtual void populateProtocol(
+    QObject *guiObject);
+};
+
+class TriaxSTB3a: public TriaxSTB3
+{
+public:
+  TriaxSTB3a(
+    unsigned int index);
+
+  virtual void populateProtocol(
+    QObject *guiObject);
+};
+
+class TriaxSTB4: public PIRKeysetMetaData
+{
+public:
+  TriaxSTB4(
     unsigned int index);
 
   virtual void populateProtocol(
     QObject *guiObject);
 };
-*/
 
 #endif // TRIAX_H
diff --git a/keysets/wiwa.cpp b/keysets/wiwa.cpp
new file mode 100644 (file)
index 0000000..834da57
--- /dev/null
@@ -0,0 +1,69 @@
+#include "wiwa.h"
+#include "protocols/paceprotocol.h"
+
+WiwaSTB1::WiwaSTB1(
+  unsigned int index)
+  : PIRKeysetMetaData(
+      "TV Receiver Keyset 1",
+      Wiwa_Make,
+      index)
+{
+}
+
+
+void WiwaSTB1::populateProtocol(
+  QObject *guiObject)
+{
+  if (threadableProtocol)
+  {
+    // Keyset already populated.
+    return;
+  }
+
+  threadableProtocol = new PaceProtocol(guiObject, index);
+
+  setPreData(0x0, 3);
+
+  addKey("0", Zero_Key, 0x00, 6);
+  addKey("1", One_Key, 0x01, 6);
+  addKey("2", Two_Key, 0x02, 6);
+  addKey("3", Three_Key, 0x03, 6);
+  addKey("Skip +", Next_Key, 0x03, 6); // might be bad
+  addKey("4", Four_Key, 0x04, 6);
+  addKey("Sleep", Sleep_Key, 0x04, 6); // might be bad
+  addKey("5", Five_Key, 0x05, 6);
+  addKey("6", Six_Key, 0x06, 6);
+  addKey("Rewind", Rewind_Key, 0x06, 6); // might be bad
+  addKey("7", Seven_Key, 0x07, 6);
+  addKey("8", Eight_Key, 0x08, 6);
+  addKey("9", Nine_Key, 0x09, 6);
+  addKey("100+", PlusOneHundred_Key, 0x0A, 6);
+  addKey("Format 16:9", AspectRatio_Key, 0x0B, 6);
+  addKey("FAV", Favorites_Key, 0x0B, 6);
+  addKey("Pause", Pause_Key, 0x0B, 6);
+  addKey("Play", Play_Key, 0x0F, 6);
+  addKey("FFWD", FastForward_Key, 0x0F, 6);
+  addKey("Yellow", Yellow_Key, 0x0F, 6);
+  addKey("Audio", Audio_Key, 0x0F, 6);
+  addKey("Power", Power_Key, 0x10, 6);
+  addKey("CH+", ChannelUp_Key, 0x11, 6);
+  addKey("Arrow_Right", Right_Key, 0x11, 6);
+  addKey("OK/Select", Select_Key, 0x13, 6);
+  addKey("Record", Record_Key, 0x13, 6);
+  addKey("Arrow_Down", Down_Key, 0x14, 6);
+  addKey("EXIT", Exit_Key, 0x15, 6);
+  addKey("Menu", Menu_Key, 0x15, 6);
+  addKey("CH-", ChannelDown_Key, 0x16, 6);
+  addKey("Arrow_Left", Left_Key, 0x16, 6);
+  addKey("Green", Green_Key, 0x17, 6);
+  addKey("Volume +", VolumeUp_Key, 0x18, 6);
+  addKey("Input/Source", Input_Key, 0x19, 6);
+  addKey("Arrow_Up", Up_Key, 0x1A, 6);
+  addKey("Guide", Guide_Key, 0x1A, 6);
+  addKey("Last/Prev Ch", PrevChannel_Key, 0x1A, 6);
+  addKey("Volume -", VolumeDown_Key, 0x1B, 6);
+  addKey("Mute", Mute_Key, 0x1E, 6);
+  addKey("Info/Display", Info_Key, 0x1F, 6);
+  addKey("Stop", Stop_Key, 0x1F, 6);
+  addKey("Slow", Slow_Key, 0x1F, 6);
+}
diff --git a/keysets/wiwa.h b/keysets/wiwa.h
new file mode 100644 (file)
index 0000000..82da580
--- /dev/null
@@ -0,0 +1,18 @@
+#ifndef WIWA_H
+#define WIWA_H
+
+#include "pirkeysetmetadata.h"
+
+class QObject;
+
+class WiwaSTB1: public PIRKeysetMetaData
+{
+public:
+  WiwaSTB1(
+    unsigned int index);
+
+  virtual void populateProtocol(
+    QObject *guiObject);
+};
+
+#endif // WIWA_H
index c0b190c..f57cde7 100644 (file)
@@ -140,8 +140,6 @@ MainWindow::MainWindow(QWidget *parent)
 
 MainWindow::~MainWindow()
 {
-  delete myKeysets;
-
   if (aboutForm) delete aboutForm;
   if (documentationForm) delete documentationForm;
   if (preferencesForm) delete preferencesForm;
@@ -151,7 +149,7 @@ MainWindow::~MainWindow()
 
   if (myPanels) delete myPanels;
   if (myMacros) delete myMacros;
-//  if (myKeysets) delete myKeysets;
+  if (myKeysets) delete myKeysets;
   delete ui;
 }
 
index fe1b5dc..2552dc0 100644 (file)
@@ -228,7 +228,12 @@ SOURCES += main.cpp mainwindow.cpp \
     dialogs/pirdeletemacrodialog.cpp \
     forms/piruserform.cpp \
     macros/pirmacromanager.cpp \
-    dialogs/pireditcommanddialog.cpp
+    dialogs/pireditcommanddialog.cpp \
+    keysets/crownmustang.cpp \
+    keysets/hantarex.cpp \
+    keysets/keymat.cpp \
+    keysets/konka.cpp \
+    keysets/wiwa.cpp
 HEADERS += mainwindow.h \
     pirkeynames.h \
     pirmakenames.h \
@@ -431,7 +436,12 @@ HEADERS += mainwindow.h \
     dialogs/pirdeletemacrodialog.h \
     forms/piruserform.h \
     macros/pirmacromanager.h \
-    dialogs/pireditcommanddialog.h
+    dialogs/pireditcommanddialog.h \
+    keysets/crownmustang.h \
+    keysets/hantarex.h \
+    keysets/keymat.h \
+    keysets/konka.h \
+    keysets/wiwa.h
 FORMS += mainwindow.ui \
     pirdocumentationform.ui \
     piraboutform.ui \
index 767e2d6..9e84dcc 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE QtCreatorProject>
-<!-- Written by Qt Creator 2.4.1, 2012-09-14T20:44:41. -->
+<!-- Written by Qt Creator 2.4.1, 2012-09-16T18:50:09. -->
 <qtcreator>
  <data>
   <variable>ProjectExplorer.Project.ActiveTarget</variable>
@@ -79,7 +79,7 @@
       <value type="QString" key="ProjectExplorer.ProcessStep.Arguments">dpkg-buildpackage -sa -S -uc -us</value>
       <value type="QString" key="ProjectExplorer.ProcessStep.Command">/Users/john/QtSDK/Maemo/4.6.2/bin/mad</value>
       <value type="bool" key="ProjectExplorer.ProcessStep.Enabled">false</value>
-      <value type="QString" key="ProjectExplorer.ProcessStep.WorkingDirectory">/Users/john/Develop/n900/pierogi-1.1.11</value>
+      <value type="QString" key="ProjectExplorer.ProcessStep.WorkingDirectory">/Users/john/Develop/n900/pierogi-1.1.12</value>
       <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Custom Process Step</value>
       <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
       <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.ProcessStep</value>
        <value type="QString">/Users/john/Develop/n900/pierogi-build-maemo-Qt_for_Fremantle_PR1_3_Devices__Qt_SDK__Release/pierogi_0_6_0_armel.deb</value>
        <value type="QString">/Users/john/Develop/n900/pierogi-build-maemo-Qt_for_Fremantle_PR1_3_Devices__Qt_SDK__Release/pierogi_0_0_1_armel.deb</value>
        <value type="QString">/Users/john/Develop/n900/pierogi-build-maemo-Qt_for_Fremantle_PR1_3_Devices__Qt_SDK__Release/pierogi_0_6_2_armel.deb</value>
+       <value type="QString">/Users/john/Develop/n900/pierogi-build-maemo-Qt_for_Fremantle_PR1_3_Devices__Qt_SDK__Release/pierogi_1_1_12_armel.deb</value>
        <value type="QString">/Users/john/Develop/n900/pierogi-build-maemo-Qt_for_Fremantle_PR1_3_Devices__Qt_SDK__Release/pierogi_1_1_8_armel.deb</value>
        <value type="QString">/Users/john/Develop/n900/pierogi-build-maemo-Qt_for_Fremantle_PR1_3_Devices__Qt_SDK__Release/pierogi_0_0_1_armel.deb</value>
        <value type="QString">/Users/john/Develop/n900/pierogi-build-maemo-Qt_for_Fremantle_PR1_3_Devices__Qt_SDK__Release/pierogi_0_1_6_armel.deb</value>
        <value type="QString">192.168.0.15</value>
        <value type="QString">192.168.0.15</value>
        <value type="QString">192.168.0.15</value>
+       <value type="QString">192.168.0.15</value>
        <value type="QString">localhost</value>
        <value type="QString">192.168.0.15</value>
        <value type="QString">192.168.0.15</value>
        <value type="QString"></value>
        <value type="QString"></value>
        <value type="QString"></value>
+       <value type="QString"></value>
       </valuelist>
       <valuelist type="QVariantList" key="Qt4ProjectManager.MaemoRunConfiguration.LastDeployedTimes">
        <value type="QDateTime">2012-01-19T22:18:07</value>
        <value type="QDateTime">2012-02-11T18:03:15</value>
        <value type="QDateTime">2012-01-14T13:11:32</value>
        <value type="QDateTime">2012-02-13T22:02:56</value>
+       <value type="QDateTime">2012-09-16T17:12:09</value>
        <value type="QDateTime">2012-09-07T17:19:10</value>
        <value type="QDateTime">2012-01-01T15:35:35</value>
        <value type="QDateTime">2012-01-25T13:42:55</value>
index 5730ce2..719cd93 100644 (file)
@@ -26,6 +26,7 @@
 #include "keysets/compro.h"
 #include "keysets/creative.h"
 #include "keysets/crown.h"
+#include "keysets/crownmustang.h"
 #include "keysets/daewoo.h"
 #include "keysets/dell.h"
 #include "keysets/denon.h"
@@ -49,6 +50,7 @@
 #include "keysets/goodmans.h"
 #include "keysets/grundig.h"
 #include "keysets/haier.h"
+#include "keysets/hantarex.h"
 #include "keysets/harmankardon.h"
 #include "keysets/hauppauge.h"
 #include "keysets/hitachi.h"
@@ -62,6 +64,8 @@
 #include "keysets/kaon.h"
 #include "keysets/kathrein.h"
 #include "keysets/kenwood.h"
+#include "keysets/keymat.h"
+#include "keysets/konka.h"
 #include "keysets/lexuz.h"
 #include "keysets/lg.h"
 #include "keysets/lifetec.h"
 #include "keysets/vizio.h"
 #include "keysets/wd.h"
 #include "keysets/westinghouse.h"
+#include "keysets/wiwa.h"
 #include "keysets/xcruiser.h"
 #include "keysets/yamaha.h"
 #include "keysets/zenith.h"
@@ -152,6 +157,7 @@ PIRKeysetManager::PIRKeysetManager()
   setupKeyset(new ADBSTB2(++counter));
   setupKeyset(new ADBSTB3(++counter));
   setupKeyset(new ADBSTB4(++counter));
+  setupKeyset(new ADBSTB5(++counter));
 
   setupKeyset(new AdmiralTV1(++counter));
   setupKeyset(new AdmiralTV2(++counter));
@@ -221,6 +227,8 @@ PIRKeysetManager::PIRKeysetManager()
   setupKeyset(new CrownTV1(++counter));
   setupKeyset(new CrownAudio1(++counter));
 
+  setupKeyset(new CrownMustangTV1(++counter));
+
   setupKeyset(new DaewooTV1(++counter));
   setupKeyset(new DaewooTV2(++counter));
   setupKeyset(new DaewooTV3(++counter));
@@ -348,6 +356,9 @@ PIRKeysetManager::PIRKeysetManager()
 
   setupKeyset(new HaierTV1(++counter));
 
+  setupKeyset(new HantarexTV1(++counter));
+  setupKeyset(new HantarexTV2(++counter));
+
   setupKeyset(new HarmanKardonAmp1(++counter));
   setupKeyset(new HarmanKardonAmp2(++counter));
   setupKeyset(new HarmanKardonReceiver2(++counter));
@@ -425,6 +436,12 @@ PIRKeysetManager::PIRKeysetManager()
   setupKeyset(new KenwoodDVD1(++counter));
   setupKeyset(new KenwoodTV1(++counter));
 
+  setupKeyset(new KeymatTV1(++counter));
+  setupKeyset(new KeymatTV2(++counter));
+
+  setupKeyset(new KonkaTV1(++counter));
+  setupKeyset(new KonkaTV2(++counter));
+
   setupKeyset(new LexuzDVB1(++counter));
 
   setupKeyset(new LGTV1(++counter));
@@ -671,6 +688,7 @@ PIRKeysetManager::PIRKeysetManager()
   setupKeyset(new SonyTV1a(++counter));
   setupKeyset(new SonyTV1b(++counter));
   setupKeyset(new SonyTV1c(++counter));
+  setupKeyset(new SonyTV2(++counter));
   setupKeyset(new SonyAmp1(++counter));
   setupKeyset(new SonyAmp2(++counter));
   setupKeyset(new SonyAudio1(++counter));
@@ -758,7 +776,9 @@ PIRKeysetManager::PIRKeysetManager()
   setupKeyset(new TriaxSTB1(++counter));
   setupKeyset(new TriaxSTB2(++counter));
   setupKeyset(new TriaxSTB2a(++counter));
-//  setupKeyset(new TriaxSTB2b(++counter));
+  setupKeyset(new TriaxSTB3(++counter));
+  setupKeyset(new TriaxSTB3a(++counter));
+  setupKeyset(new TriaxSTB4(++counter));
 
   setupKeyset(new UnitedDVD1(++counter));
   setupKeyset(new UnitedDVBT1(++counter));
@@ -791,6 +811,8 @@ PIRKeysetManager::PIRKeysetManager()
   setupKeyset(new WestinghouseTV1(++counter));
   setupKeyset(new WestinghouseTV2(++counter));
 
+  setupKeyset(new WiwaSTB1(++counter));
+
   setupKeyset(new XcruiserSat1(++counter));
 
   setupKeyset(new YamahaDVD1(++counter));
@@ -823,12 +845,6 @@ PIRKeysetManager::~PIRKeysetManager()
     stopRepeatingFlag = true;
   }
 
-  // Tell the thread that we want it to stop:
-  commandThread.exit();
-
-  // Wait for the thread to stop:
-  commandThread.wait();
-
   // Delete all the keysets:
   PIRKeysetCollection::iterator i = keysetsInfo.begin();
   while (i != keysetsInfo.end())
@@ -836,6 +852,12 @@ PIRKeysetManager::~PIRKeysetManager()
     if ((*i).second) delete (*i).second;
     ++i;
   }
+
+  // Tell the thread that we want it to stop:
+  commandThread.exit();
+
+  // Wait for the thread to stop:
+  commandThread.wait();
 }
 
 
index dd1574f..903425e 100644 (file)
@@ -22,6 +22,14 @@ PIRKeysetMetaData::PIRKeysetMetaData(
 {
 }
 
+
+PIRKeysetMetaData::~PIRKeysetMetaData()
+{
+  if (threadableProtocol) delete threadableProtocol;
+  threadableProtocol = 0;
+}
+
+
 bool PIRKeysetMetaData::hasKey(
   PIRKeyName name) const
 {
index 401174a..0f9101a 100644 (file)
@@ -27,6 +27,8 @@ public:
     PIRMakeName make,
     unsigned int index);
 
+  ~PIRKeysetMetaData();
+
   bool hasKey(
     PIRKeyName name) const;
 
index 5735025..4d3dcb6 100644 (file)
@@ -24,6 +24,7 @@ PIRMakeMgr::PIRMakeMgr()
   makes[Compro_Make] = "Compro";
   makes[Creative_Make] = "Creative";
   makes[Crown_Make] = "Crown";
+  makes[CrownMustang_Make] = "Crown Mustang";
   makes[Daewoo_Make] = "Daewoo";
   makes[Dell_Make] = "Dell";
   makes[Denon_Make] = "Denon";
@@ -47,6 +48,7 @@ PIRMakeMgr::PIRMakeMgr()
   makes[Goodmans_Make] = "Goodmans";
   makes[Grundig_Make] = "Grundig";
   makes[Haier_Make] = "Haier";
+  makes[Hantarex_Make] = "Hantarex";
   makes[HarmanKardon_Make] = "Harman/Kardon";
   makes[Hauppauge_Make] = "Hauppauge";
   makes[Hitachi_Make] = "Hitachi";
@@ -60,6 +62,8 @@ PIRMakeMgr::PIRMakeMgr()
   makes[Kaon_Make] = "Kaon";
   makes[Kathrein_Make] = "Kathrein";
   makes[Kenwood_Make] = "Kenwood";
+  makes[Keymat_Make] = "Keymat";
+  makes[Konka_Make] = "Konka";
   makes[Lexuz_Make] = "Lexuz";
   makes[LG_Make] = "LG";
   makes[Lifetec_Make] = "Lifetec";
@@ -118,6 +122,7 @@ PIRMakeMgr::PIRMakeMgr()
   makes[Vizio_Make] = "Vizio";
   makes[WD_Make] = "Western Digital";
   makes[Westinghouse_Make] = "Westinghouse";
+  makes[Wiwa_Make] = "Wiwa";
   makes[Xcruiser_Make] = "Xcruiser";
   makes[Yamaha_Make] = "Yamaha";
   makes[Zenith_Make] = "Zenith";
index ac3136c..c8c5dc6 100644 (file)
@@ -25,6 +25,7 @@ enum PIRMakeName{
   Compro_Make,
   Creative_Make,
   Crown_Make,
+  CrownMustang_Make,
   Daewoo_Make,
   Dell_Make,
   Denon_Make,
@@ -48,6 +49,7 @@ enum PIRMakeName{
   Goodmans_Make,
   Grundig_Make,
   Haier_Make,
+  Hantarex_Make,
   HarmanKardon_Make,
   Hauppauge_Make,
   Hitachi_Make,
@@ -61,6 +63,8 @@ enum PIRMakeName{
   Kaon_Make,
   Kathrein_Make,
   Kenwood_Make,
+  Keymat_Make,
+  Konka_Make,
   Lexuz_Make,
   LG_Make,
   Lifetec_Make,
@@ -119,6 +123,7 @@ enum PIRMakeName{
   Vizio_Make,
   WD_Make,
   Westinghouse_Make,
+  Wiwa_Make,
   Xcruiser_Make,
   Yamaha_Make,
   Zenith_Make
index e2d5961..6efde39 100644 (file)
@@ -36,6 +36,7 @@ NECProtocol::NECProtocol(
     isExtendedNEC(extNEC),
     isShortRepeat(srtRep)
 {
+  setMinimumRepetitions(1);
 }
 
 
index c181660..d05eb87 100644 (file)
@@ -1,3 +1,9 @@
+pierogi (1.1.13) unstable; urgency=low
+  * Found a new source of (possibly unreliable) keysets!  Made a first pass at keysets for Crown Mustang, Hantarex, Keymat, Konka, and Wiwa.  Also added more keysets to ADB (I-Can), Sony, and Triax.  Hopefully more to come...
+  * Made small fixes to the macros UI, and improved the cleanup of threads when Pierogi exits.  Also made small fixes to a Cisco keyset and to LG timing.
+
+ -- John Pietrzak <jpietrzak8@gmail.com>  Sun, 16 Sep 2012 18:41:08 -0400
+
 pierogi (1.1.12) unstable; urgency=low
   * Pushing up an initial implementation of Macros.  For now, they don't do much, they don't work terribly well, and they are thoroughly undocumented, but at least they exist. :)
   * Updates to keysets for Creative, Grundig, and RCA, and a bugfix to the RCA protocol.
index 4e367c1..bda3181 100644 (file)
@@ -11,8 +11,8 @@ Architecture: armel
 Depends: ${shlibs:Depends}, ${misc:Depends}
 Description: Universal Infrared (IR) Remote Control for N900
  Pierogi is a Universal Infrared Remote Control app for the Nokia N900.  It is independent from the LIRC server, and stores all configuration info internally.
-XB-Maemo-Upgrade-Description: Now with Macros!
- Finally includes a very limited macro capability.  Please don't push it too hard.  Also includes updates to Creative, Grundig, and RCA keysets, as well as a bugfix for the RCA protocol.
+XB-Maemo-Upgrade-Description: More Keysets!
+ Found a new source of keyset data (although it might not be reliable).  Made a first pass at keysets for Crown Mustang, Hantarex, Keymat, Konka, and Wiwa.  Also added new keysets to ADB (I-Can), Sony, and Triax.  There are also some minor bug fixes and tweaks to the new macro system.
 XSBC-Bugtracker: https://garage.maemo.org/tracker/?func=add&group_id=2286&atid=7641
 XB-Maemo-Display-Name: Pierogi
 XB-Maemo-Icon-26: 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