Advanced Settings Panel
[pierogi] / pirkeysetmetadata.cpp
index 05d6011..ce7cf00 100644 (file)
@@ -11,6 +11,9 @@ extern PIRMakeMgr makeManager;
 // Static member definition:
 PIRDeviceCollection PIRKeysetMetaData::controlledDevices;
 
+// Thread synchronization stuff:
+extern bool commandInFlight;
+
 PIRKeysetMetaData::PIRKeysetMetaData(
   const char *r,
   PIRMakeName m,
@@ -22,6 +25,13 @@ PIRKeysetMetaData::PIRKeysetMetaData(
 {
 }
 
+
+PIRKeysetMetaData::~PIRKeysetMetaData()
+{
+  clearProtocol();
+}
+
+
 bool PIRKeysetMetaData::hasKey(
   PIRKeyName name) const
 {
@@ -55,7 +65,7 @@ void PIRKeysetMetaData::populateDevices(
     tempString.append(i->first.model);
 
     kwi = new PIRKeysetWidgetItem(
-      tempString, i->second, i->first.make, i->first.type);
+      tempString, i->first.model, i->second, i->first.make, i->first.type);
 
     sdf->addWidgetItem(kwi);
 
@@ -81,6 +91,52 @@ const char *PIRKeysetMetaData::getKeysetName() const
 }
 
 
+unsigned int PIRKeysetMetaData::getCarrierFrequency() const
+{
+  if (!threadableProtocol)
+  {
+    return 0;
+  }
+
+  return threadableProtocol->getCarrierFrequency();
+}
+
+
+void PIRKeysetMetaData::setCarrierFrequency(
+  unsigned int carrierFrequency)
+{
+  if (!threadableProtocol)
+  {
+    return;
+  }
+
+  threadableProtocol->setCarrierFrequency(carrierFrequency);
+}
+
+
+unsigned int PIRKeysetMetaData::getDutyCycle() const
+{
+  if (!threadableProtocol)
+  {
+    return 0;
+  }
+
+  return threadableProtocol->getDutyCycle();
+}
+
+
+void PIRKeysetMetaData::setDutyCycle(
+  unsigned int dutyCycle)
+{
+  if (!threadableProtocol)
+  {
+    return;
+  }
+
+  threadableProtocol->setDutyCycle(dutyCycle);
+}
+
+
 void PIRKeysetMetaData::addControlledDevice(
   PIRMakeName make,
   const char *model,
@@ -292,3 +348,20 @@ void PIRKeysetMetaData::setKeysetName(
 {
   keysetName = n;
 }
+
+
+bool PIRKeysetMetaData::clearProtocol()
+{
+  if (!threadableProtocol)
+  {
+    return true;
+  }
+  else if (!commandInFlight)
+  {
+    delete threadableProtocol;
+    threadableProtocol = 0;
+    return true;
+  }
+
+  return false;
+}