cec: added bWait parameter to volume change methods.
authorLars Op den Kamp <lars@opdenkamp.eu>
Sat, 26 Nov 2011 01:36:19 +0000 (02:36 +0100)
committerLars Op den Kamp <lars@opdenkamp.eu>
Sat, 26 Nov 2011 01:36:19 +0000 (02:36 +0100)
include/cec.h
include/cecc.h
src/lib/CECProcessor.cpp
src/lib/CECProcessor.h
src/lib/LibCEC.cpp
src/lib/LibCEC.h
src/lib/LibCECC.cpp
src/lib/devices/CECAudioSystem.cpp
src/lib/devices/CECAudioSystem.h
src/lib/implementations/CECCommandHandler.cpp
src/testclient/main.cpp

index 7ac25fdfaf9b68b47839235e4fcf225651b21c80..1486b28881321f4ca9855ff2da1b24df8f97bd7c 100644 (file)
@@ -272,21 +272,24 @@ namespace CEC
 
     /*!
      * @brief Sends a volume up keypress to an audiosystem if it's present.
+     * @param bWait Wait for the response of the audiosystem when true.
      * @return The new audio status.
      */
-    virtual uint8_t VolumeUp(void) = 0;
+    virtual uint8_t VolumeUp(bool bWait = true) = 0;
 
     /*!
      * @brief Sends a volume down keypress to an audiosystem if it's present.
+     * @param bWait Wait for the response of the audiosystem when true.
      * @return The new audio status.
      */
-    virtual uint8_t VolumeDown(void) = 0;
+    virtual uint8_t VolumeDown(bool bWait = true) = 0;
 
     /*!
      * @brief Sends a mute keypress to an audiosystem if it's present.
+     * @param bWait Wait for the response of the audiosystem when true.
      * @return The new audio status.
      */
-    virtual uint8_t MuteAudio(void) = 0;
+    virtual uint8_t MuteAudio(bool bWait = true) = 0;
   };
 };
 
index c7e5ad4ac88ae96c6598aadd985af7b78b08ff00..d4765e0a75b763cc35db035fb31872768143775e 100644 (file)
@@ -187,11 +187,11 @@ extern DECLSPEC int cec_is_active_device_type(cec_device_type type);
 
 extern DECLSPEC int cec_set_hdmi_port(uint8_t iPort);
 
-extern DECLSPEC int cec_volume_up(void);
+extern DECLSPEC int cec_volume_up(int bWait = 1);
 
-extern DECLSPEC int cec_volume_down(void);
+extern DECLSPEC int cec_volume_down(int bWait = 1);
 
-extern DECLSPEC int cec_mute_audio(void);
+extern DECLSPEC int cec_mute_audio(int bWait = 1);
 
 #ifdef __cplusplus
 };
index 8f2ea98f24ac4529bca5339717e4a90ad1e3b0cb..d8fdb99f145a1763a6f11a8588178116fb702e19 100644 (file)
@@ -492,29 +492,29 @@ bool CCECProcessor::PollDevice(cec_logical_address iAddress)
   return false;
 }
 
-uint8_t CCECProcessor::VolumeUp(void)
+uint8_t CCECProcessor::VolumeUp(bool bWait /* = true */)
 {
   uint8_t status = 0;
   if (IsActiveDevice(CECDEVICE_AUDIOSYSTEM))
-    status = ((CCECAudioSystem *)m_busDevices[CECDEVICE_AUDIOSYSTEM])->VolumeUp();
+    status = ((CCECAudioSystem *)m_busDevices[CECDEVICE_AUDIOSYSTEM])->VolumeUp(bWait);
 
   return status;
 }
 
-uint8_t CCECProcessor::VolumeDown(void)
+uint8_t CCECProcessor::VolumeDown(bool bWait /* = true */)
 {
   uint8_t status = 0;
   if (IsActiveDevice(CECDEVICE_AUDIOSYSTEM))
-    status = ((CCECAudioSystem *)m_busDevices[CECDEVICE_AUDIOSYSTEM])->VolumeDown();
+    status = ((CCECAudioSystem *)m_busDevices[CECDEVICE_AUDIOSYSTEM])->VolumeDown(bWait);
 
   return status;
 }
 
-uint8_t CCECProcessor::MuteAudio(void)
+uint8_t CCECProcessor::MuteAudio(bool bWait /* = true */)
 {
   uint8_t status = 0;
   if (IsActiveDevice(CECDEVICE_AUDIOSYSTEM))
-    status = ((CCECAudioSystem *)m_busDevices[CECDEVICE_AUDIOSYSTEM])->MuteAudio();
+    status = ((CCECAudioSystem *)m_busDevices[CECDEVICE_AUDIOSYSTEM])->MuteAudio(bWait);
 
   return status;
 }
index 178978e116228550852e9aae325e11a8adefa159..ea8f6a48f4855bd3ed2c21e6e1cb81a330130a8f 100644 (file)
@@ -85,9 +85,9 @@ namespace CEC
       virtual bool SetStreamPath(uint16_t iStreamPath);
       virtual bool SwitchMonitoring(bool bEnable);
       virtual bool PollDevice(cec_logical_address iAddress);
-      virtual uint8_t VolumeUp(void);
-      virtual uint8_t VolumeDown(void);
-      virtual uint8_t MuteAudio(void);
+      virtual uint8_t VolumeUp(bool bWait = true);
+      virtual uint8_t VolumeDown(bool bWait = true);
+      virtual uint8_t MuteAudio(bool bWait = true);
 
       virtual bool Transmit(const cec_command &data);
       virtual bool Transmit(CCECAdapterMessage *output);
index 2e9dac01c7071c622123f271bf2fc730a9462a65..26fd7b0bdb68b26402b6e3ca1588cd938f124ed3 100644 (file)
@@ -280,25 +280,25 @@ bool CLibCEC::IsActiveDeviceType(cec_device_type type)
   return false;
 }
 
-uint8_t CLibCEC::VolumeUp(void)
+uint8_t CLibCEC::VolumeUp(bool bWait /* = true */)
 {
   if (m_cec)
-    return m_cec->VolumeUp();
+    return m_cec->VolumeUp(bWait);
   return 0;
 }
 
-uint8_t CLibCEC::VolumeDown(void)
+uint8_t CLibCEC::VolumeDown(bool bWait /* = true */)
 {
   if (m_cec)
-    return m_cec->VolumeDown();
+    return m_cec->VolumeDown(bWait);
   return 0;
 }
 
 
-uint8_t CLibCEC::MuteAudio(void)
+uint8_t CLibCEC::MuteAudio(bool bWait /* = true */)
 {
   if (m_cec)
-    return m_cec->MuteAudio();
+    return m_cec->MuteAudio(bWait);
   return 0;
 }
 
index 5c9196b0224d107dec3c9dbb367b27810402a287..ad3b1cdcd992064100add735b5041531b408f001 100644 (file)
@@ -88,9 +88,9 @@ namespace CEC
       virtual bool IsActiveDevice(cec_logical_address iAddress);
       virtual bool IsActiveDeviceType(cec_device_type type);
       virtual bool SetHDMIPort(uint8_t iPort = CEC_DEFAULT_HDMI_PORT);
-      virtual uint8_t VolumeUp(void);
-      virtual uint8_t VolumeDown(void);
-      virtual uint8_t MuteAudio(void);
+      virtual uint8_t VolumeUp(bool bWait = true);
+      virtual uint8_t VolumeDown(bool bWait = true);
+      virtual uint8_t MuteAudio(bool bWait = true);
     //@}
 
       virtual void AddLog(cec_log_level level, const std::string &strMessage);
index 08e69878d5a16becc392abadfc15883cefd24467..0193124e84cb07d78b78ceb5b8c0ad49a12d6e9c 100644 (file)
@@ -271,24 +271,24 @@ int cec_set_hdmi_port(uint8_t iPort)
   return -1;
 }
 
-int cec_volume_up(void)
+int cec_volume_up(int bWait /* = 1 */)
 {
   if (cec_parser)
-    return cec_parser->VolumeUp();
+    return cec_parser->VolumeUp(bWait == 1);
   return -1;
 }
 
-int cec_volume_down(void)
+int cec_volume_down(int bWait /* = 1 */)
 {
   if (cec_parser)
-    return cec_parser->VolumeDown();
+    return cec_parser->VolumeDown(bWait == 1);
   return -1;
 }
 
-int cec_mute_audio(void)
+int cec_mute_audio(int bWait /* = 1 */)
 {
   if (cec_parser)
-    return cec_parser->MuteAudio();
+    return cec_parser->MuteAudio(bWait == 1);
   return -1;
 }
 
index 4a4f11fbe2434a898df529176772f57749f5c0f3..87735f4a5ed7aa8c6e83f1e6231946c57dc63e21 100644 (file)
@@ -109,22 +109,22 @@ bool CCECAudioSystem::TransmitSystemAudioModeStatus(cec_logical_address dest)
   return m_processor->Transmit(command);
 }
 
-uint8_t CCECAudioSystem::VolumeUp(void)
+uint8_t CCECAudioSystem::VolumeUp(bool bWait /* = true */)
 {
-  return SendKey(CEC_USER_CONTROL_CODE_VOLUME_UP);
+  return SendKey(CEC_USER_CONTROL_CODE_VOLUME_UP, bWait);
 }
 
-uint8_t CCECAudioSystem::VolumeDown(void)
+uint8_t CCECAudioSystem::VolumeDown(bool bWait /* = true */)
 {
-  return SendKey(CEC_USER_CONTROL_CODE_VOLUME_DOWN);
+  return SendKey(CEC_USER_CONTROL_CODE_VOLUME_DOWN, bWait);
 }
 
-uint8_t CCECAudioSystem::MuteAudio(void)
+uint8_t CCECAudioSystem::MuteAudio(bool bWait /* = true */)
 {
-  return SendKey(CEC_USER_CONTROL_CODE_MUTE);
+  return SendKey(CEC_USER_CONTROL_CODE_MUTE, bWait);
 }
 
-uint8_t CCECAudioSystem::SendKey(cec_user_control_code key)
+uint8_t CCECAudioSystem::SendKey(cec_user_control_code key, bool bWait /* = true */)
 {
   {
     CLockObject lock(&m_transmitMutex);
@@ -134,8 +134,15 @@ uint8_t CCECAudioSystem::SendKey(cec_user_control_code key)
     m_processor->Transmit(command);
 
     cec_command::Format(command, m_processor->GetLogicalAddress(), m_iLogicalAddress, CEC_OPCODE_USER_CONTROL_RELEASE);
-    if (m_processor->Transmit(command))
-      m_condition.Wait(&m_transmitMutex, 1000);
+    if (bWait)
+    {
+      if (m_processor->Transmit(command))
+        m_condition.Wait(&m_transmitMutex, 1000);
+    }
+    else
+    {
+      m_processor->Transmit(command);
+    }
   }
 
   CLockObject lock(&m_mutex);
index 5602931a7a8602093751efcec172456606f88444..6c04ad940c7dbbc0548dff2d04027abd2866d781 100644 (file)
@@ -47,10 +47,10 @@ namespace CEC
     virtual bool TransmitAudioStatus(cec_logical_address dest);
     virtual bool TransmitSystemAudioModeStatus(cec_logical_address dest);
 
-    virtual uint8_t VolumeUp(void);
-    virtual uint8_t VolumeDown(void);
-    virtual uint8_t MuteAudio(void);
-    virtual uint8_t SendKey(cec_user_control_code key);
+    virtual uint8_t VolumeUp(bool bWait = true);
+    virtual uint8_t VolumeDown(bool bWait = true);
+    virtual uint8_t MuteAudio(bool bWait = true);
+    virtual uint8_t SendKey(cec_user_control_code key, bool bWait = true);
 
     virtual bool TransmitActiveSource(void) { return false; }
 
index a073a3fe475b031010a84c042a7a3d5d426c5c0b..9debd5d9423cd3ad0fd47fc35400674c997b2278 100644 (file)
@@ -150,9 +150,7 @@ bool CCECCommandHandler::HandleCommand(const cec_command &command)
     break;
   }
 
-  if (command.destination == CECDEVICE_BROADCAST || m_busDevice->MyLogicalAddressContains(command.destination))
-    m_busDevice->GetProcessor()->AddCommand(command);
-
+  m_busDevice->GetProcessor()->AddCommand(command);
   return bHandled;
 }
 
index 671e46e94e0749e9a7228de55d3ae73a8483b7e4..d9ad277d3e68cb4fd3deeab6fd5deafde0c81d8e 100644 (file)
@@ -599,15 +599,21 @@ int main (int argc, char *argv[])
         }
         else if (command == "volup")
         {
-          parser->VolumeUp();
+          CStdString strLog;
+          strLog.Format("volume up: %2X", parser->VolumeUp());
+          cout << strLog.c_str() << endl;
         }
         else if (command == "voldown")
         {
-          parser->VolumeDown();
+          CStdString strLog;
+          strLog.Format("volume up: %2X", parser->VolumeDown());
+          cout << strLog.c_str() << endl;
         }
         else if (command == "mute")
         {
-          parser->MuteAudio();
+          CStdString strLog;
+          strLog.Format("mute: %2X", parser->MuteAudio());
+          cout << strLog.c_str() << endl;
         }
         else if (command == "mon")
         {