Index: src/client/c/hu/varadiistvan/xplra/XPlane.cc
===================================================================
--- src/client/c/hu/varadiistvan/xplra/XPlane.cc	(revision 30)
+++ src/client/c/hu/varadiistvan/xplra/XPlane.cc	(revision 36)
@@ -193,4 +193,20 @@
 //------------------------------------------------------------------------------
 
+void XPlane::getVersions(int& xplaneVersion, int& xplmVersion, int& xplraVersion)
+    throw(Exception)
+{
+    stream->writeU8(Protocol::COMMAND_GET_VERSIONS);
+    stream->flush();
+    checkResult();
+
+    xplaneVersion = stream->readS32();
+    xplmVersion = stream->readS32();
+    xplraVersion = stream->readS32();
+
+    checkStream();
+}
+
+//------------------------------------------------------------------------------
+
 void XPlane::getScalar(const char* name, uint8_t type) throw(Exception)
 {
Index: src/client/c/hu/varadiistvan/xplra/XPlane.h
===================================================================
--- src/client/c/hu/varadiistvan/xplra/XPlane.h	(revision 30)
+++ src/client/c/hu/varadiistvan/xplra/XPlane.h	(revision 36)
@@ -145,4 +145,9 @@
 
     /**
+     * Get the versions of X-Plane, XPLM and the XPLRA plugin.
+     */
+    void getVersions(int& xplaneVersion, int& xplmVersion, int& xplraVersion) throw(Exception);
+
+    /**
      * Get the integer value of the dataref with the given name.
      */
Index: src/client/c/hu/varadiistvan/xplra/xplra.cc
===================================================================
--- src/client/c/hu/varadiistvan/xplra/xplra.cc	(revision 29)
+++ src/client/c/hu/varadiistvan/xplra/xplra.cc	(revision 36)
@@ -498,4 +498,21 @@
 //------------------------------------------------------------------------------
 
+extern "C"int xplra_get_versions(int connectionID,
+                                 int* xplaneVersion, int* xplmVersion,
+                                 int* xplraVersion)
+{
+    Connection* connection = ConnectionSlot::getValue(connectionID);
+    if (connection==0) return -1;
+    try {
+        connection->getVersions(*xplaneVersion, *xplmVersion, *xplraVersion);
+        return 0;
+    } catch (...) {
+        connection->handleException();
+        return -1;
+    }
+}
+
+//------------------------------------------------------------------------------
+
 extern "C" int xplra_get_int(int* value, int connectionID, const char* name)
 {
Index: src/client/c/hu/varadiistvan/xplra/xplra.h
===================================================================
--- src/client/c/hu/varadiistvan/xplra/xplra.h	(revision 29)
+++ src/client/c/hu/varadiistvan/xplra/xplra.h	(revision 36)
@@ -130,4 +130,13 @@
 
 /*----------------------------------------------------------------------------*/
+
+/**
+ * Get the versions of X-Plane, the XPLM library and XPLRA
+ */
+int xplra_get_versions(int connectionID,
+                       int* xplaneVersion, int* xplmVersion,
+                       int* xplraVersion);
+
+/*----------------------------------------------------------------------------*/
 /* Single dataref support                                                     */
 /*----------------------------------------------------------------------------*/
Index: src/client/python/xplra.py
===================================================================
--- src/client/python/xplra.py	(revision 35)
+++ src/client/python/xplra.py	(revision 36)
@@ -27,4 +27,6 @@
 
 COMMAND_EXECUTE_SET_MULTI = 0x23
+
+COMMAND_GET_VERSIONS = 0x31
 
 TYPE_INT = 0x01
@@ -135,4 +137,11 @@
         """Create a new multi-dataref setter for this X-Plane object."""
         return MultiSetter(self)
+
+    def getVersions(self):
+        """Get the versions of X-Plane, XPLM and XPLRA as a tuple."""
+        self._writeU8(COMMAND_GET_VERSIONS)
+        self._flush()
+        self._checkResult()
+        return (self._readS32(), self._readS32(), self._readS32())
 
     def getInt(self, name):
@@ -392,4 +401,11 @@
 
         self._registeredID = None
+
+    @property
+    def values(self):
+        """Query the values as a list."""
+        if self._values is None:
+            self.finalize()
+        return self._values
 
     def addInt(self, name):
