cec: added a hook in libcec for physical address autodetection
authorLars Op den Kamp <lars@opdenkamp.eu>
Thu, 1 Dec 2011 18:56:00 +0000 (19:56 +0100)
committerLars Op den Kamp <lars@opdenkamp.eu>
Thu, 1 Dec 2011 18:56:00 +0000 (19:56 +0100)
include/cec.h
include/cecc.h
src/lib/CECProcessor.h
src/lib/LibCEC.cpp
src/lib/LibCEC.h
src/lib/LibCECC.cpp

index 6fef4827e75a0ec419b9403bf300a45032cec3e3..44bf0244abdb8e6f5dbe29f59be811a28431223f 100644 (file)
@@ -137,6 +137,20 @@ namespace CEC
      */
     virtual bool SetPhysicalAddress(uint16_t iPhysicalAddress = CEC_DEFAULT_PHYSICAL_ADDRESS) = 0;
 
+    /*!
+     * @brief Enable physical address detection (if the connected adapter supports this).
+     * @return True when physical address detection was enabled, false otherwise.
+     */
+    virtual bool EnablePhysicalAddressDetection(void) = 0;
+
+    /*!
+     * @brief Changes the active HDMI port.
+     * @param iBaseDevice The device to which this libcec is connected.
+     * @param iPort The new port number.
+     * @return True when changed, false otherwise.
+     */
+    virtual bool SetHDMIPort(cec_logical_address iBaseDevice, uint8_t iPort) = 0;
+
     /*!
      * @brief Power on the connected CEC capable devices.
      * @param address The logical address to power on.
@@ -263,14 +277,6 @@ namespace CEC
      */
     virtual bool IsActiveDeviceType(cec_device_type type) = 0;
 
-    /*!
-     * @brief Changes the active HDMI port.
-     * @param iBaseDevice The device to which this libcec is connected.
-     * @param iPort The new port number.
-     * @return True when changed, false otherwise.
-     */
-    virtual bool SetHDMIPort(cec_logical_address iBaseDevice, uint8_t iPort) = 0;
-
     /*!
      * @brief Sends a volume up keypress to an audiosystem if it's present.
      * @param bWait Wait for the response of the audiosystem when true.
index e2c09dab39e4a00e1cb7df4cb5dcc0e8c628a801..972c4a2cf414cec1dfe467cd6a18bb58ea199bbc 100644 (file)
@@ -215,6 +215,8 @@ extern DECLSPEC CEC::cec_osd_name cec_get_osd_name(CEC::cec_logical_address iAdd
 extern DECLSPEC cec_osd_name cec_get_osd_name(cec_logical_address iAddress);
 #endif
 
+extern DECLSPEC int cec_enable_physical_address_detection(void);
+
 #ifdef __cplusplus
 };
 #endif
index 05dc4b28ae5c8c0382e5df8f223f5ca75491361c..5ee861d8b55d20ea54f9e37260119653b167da3d 100644 (file)
@@ -91,6 +91,7 @@ namespace CEC
       virtual uint8_t MuteAudio(bool bWait = true);
       virtual bool SendKeypress(cec_logical_address iDestination, cec_user_control_code key, bool bWait = false);
       virtual bool SendKeyRelease(cec_logical_address iDestination, bool bWait = false);
+      virtual bool EnablePhysicalAddressDetection(void) { return false; };
 
       const char *ToString(const cec_menu_state state);
       const char *ToString(const cec_version version);
index 118be7def567f54c2b3b4d2585b169e1d12c7483..445798bbefd2197d62300233a8855d8103462eb7 100644 (file)
@@ -171,6 +171,11 @@ bool CLibCEC::SetHDMIPort(cec_logical_address iBaseDevice, uint8_t iPort /* = CE
   return m_cec ? m_cec->SetHDMIPort(iBaseDevice, iPort) : false;
 }
 
+bool CLibCEC::EnablePhysicalAddressDetection(void)
+{
+  return m_cec ? m_cec->EnablePhysicalAddressDetection() : false;
+}
+
 bool CLibCEC::PowerOnDevices(cec_logical_address address /* = CECDEVICE_TV */)
 {
   return m_cec && address >= CECDEVICE_TV && address <= CECDEVICE_BROADCAST ? m_cec->m_busDevices[(uint8_t)address]->PowerOn() : false;
index c6bf62903ceec9614055c36b0fd807494e2733af..e1b991bcb69c2265aa54641d8b6c273b828b55e0 100644 (file)
@@ -94,6 +94,7 @@ namespace CEC
       virtual bool SendKeypress(cec_logical_address iDestination, cec_user_control_code key, bool bWait = false);
       virtual bool SendKeyRelease(cec_logical_address iDestination, bool bWait = false);
       virtual cec_osd_name GetOSDName(cec_logical_address iAddress);
+      virtual bool EnablePhysicalAddressDetection(void);
 
       const char *ToString(const cec_menu_state state);
       const char *ToString(const cec_version version);
index 6c8d141c85ba5274ceca6450b52633b6a785a760..fdcc9e7a57bc0dcf4c2f239449272f93e2d47522 100644 (file)
@@ -319,4 +319,9 @@ cec_osd_name cec_get_osd_name(cec_logical_address iAddress)
   return retVal;
 }
 
+int cec_enable_physical_address_detection(void)
+{
+  return cec_parser ? (cec_parser->EnablePhysicalAddressDetection() ? 1 : 0) : -1;
+}
+
 //@}