backwards compatibility for older client versions and the new double tap timeout...
[deb_libcec.git] / include / cectypes.h
index 883642add712534f22c5f9ce76f71f31e53833cb..0a90d0e92cff0dad6ea6deb35009b4b29d8d3a84 100644 (file)
@@ -80,9 +80,11 @@ namespace CEC {
 #define CEC_BUTTON_TIMEOUT           500
 
 /*!
- * don't send the same key twice within this timeout in milliseconds
+ * don't send the same key twice within this timeout in units of 50 milliseconds
+ * 4 = 200ms
  */
-#define CEC_DOUBLE_TAP_TIMEOUT_MS    250
+#define CEC_DOUBLE_TAP_TIMEOUT_50_MS    4
+#define CEC_DOUBLE_TAP_TIMEOUT_MS_OLD   200
 
 /*!
  * don't query the power state for the same device within this timeout in milliseconds
@@ -329,6 +331,8 @@ namespace CEC {
 #define MSGESC                       0xFD
 #define ESCOFFSET                    3
 
+#define DOUBLE_TAP_TIMEOUT_UNIT_SIZE (50)
+
 // defines to make compile time checks for certain features easy
 #define CEC_FEATURE_CONFIGURABLE_COMBO_KEY 1
 
@@ -1485,7 +1489,7 @@ typedef enum cec_server_version
   CEC_SERVER_VERSION_2_1_3   = 0x2103,
   CEC_SERVER_VERSION_2_1_4   = 0x2104,
   CEC_SERVER_VERSION_2_2_0   = 0x2200,
-  CEC_SERVER_VERSION_CURRENT = 0x2104
+  CEC_SERVER_VERSION_CURRENT = 0x2200
 } cec_server_version;
 
 struct libcec_configuration
@@ -1524,7 +1528,8 @@ struct libcec_configuration
   uint8_t               bMonitorOnly;         /*!< won't allocate a CCECClient when starting the connection when set (same as monitor mode). added in 1.6.3 */
   cec_version           cecVersion;           /*!< CEC spec version to use by libCEC. defaults to v1.4. added in 1.8.0 */
   cec_adapter_type      adapterType;          /*!< type of the CEC adapter that we're connected to. added in 1.8.2 */
-  uint8_t               iDoubleTapTimeoutMs;  /*!< prevent double taps withing this timeout. defaults to 200ms. added in 2.0.0 */
+  uint8_t               iDoubleTapTimeout50Ms;  /*!< prevent double taps withing this timeout, in units of 50ms. defaults to 200ms (value: 4). added in 2.0.0,
+                                                   XXX changed meaning in 2.2.0 to not break binary compatibility. next major (3.0) release will fix it in a nicer way */
   cec_user_control_code comboKey;             /*!< key code that initiates combo keys. defaults to CEC_USER_CONTROL_CODE_F1_BLUE. CEC_USER_CONTROL_CODE_UNKNOWN to disable. added in 2.0.5 */
   uint32_t              iComboKeyTimeoutMs;   /*!< timeout until the combo key is sent as normal keypress */
 
@@ -1560,7 +1565,7 @@ struct libcec_configuration
                  bMonitorOnly              == other.bMonitorOnly &&
                  cecVersion                == other.cecVersion &&
                  adapterType               == other.adapterType &&
-                 iDoubleTapTimeoutMs       == other.iDoubleTapTimeoutMs &&
+                 iDoubleTapTimeout50Ms     == other.iDoubleTapTimeout50Ms &&
                  (other.clientVersion <= CEC_CLIENT_VERSION_2_0_4 || comboKey            == other.comboKey) &&
                  (other.clientVersion <= CEC_CLIENT_VERSION_2_0_4 || iComboKeyTimeoutMs  == other.iComboKeyTimeoutMs) &&
                  (other.clientVersion <  CEC_CLIENT_VERSION_2_1_0 || bPowerOnScreensaver == other.bPowerOnScreensaver));
@@ -1598,7 +1603,7 @@ struct libcec_configuration
     bMonitorOnly =                    0;
     cecVersion =         (cec_version)CEC_DEFAULT_SETTING_CEC_VERSION;
     adapterType =                     ADAPTERTYPE_UNKNOWN;
-    iDoubleTapTimeoutMs =             CEC_DOUBLE_TAP_TIMEOUT_MS;
+    iDoubleTapTimeout50Ms =           CEC_DOUBLE_TAP_TIMEOUT_50_MS;
     comboKey =                        CEC_USER_CONTROL_CODE_STOP;
     iComboKeyTimeoutMs =              CEC_DEFAULT_COMBO_TIMEOUT_MS;