Page MenuHomec4science

No OneTemporary

File Metadata

Created
Sun, May 4, 10:08
This file is larger than 256 KB, so syntax highlighting was skipped.
This document is not UTF8. It was detected as ISO-8859-1 (Latin 1) and converted to UTF8 for display.
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..e69de29
diff --git a/yocto-powerrelay.py b/yocto-powerrelay.py
new file mode 100644
index 0000000..1c58214
--- /dev/null
+++ b/yocto-powerrelay.py
@@ -0,0 +1,53 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+import os
+import sys
+
+# add ../../Sources to the PYTHONPATH
+sys.path.append(os.path.join("yoctoLib.python.26380/Sources"))
+from yocto_api import *
+from yocto_relay import *
+
+
+def usage():
+ scriptname = os.path.basename(sys.argv[0])
+ print("Usage:")
+ print(scriptname + ' <serial_number> [ A | B ]')
+ print(scriptname + ' <logical_name> [ A | B ]')
+ print(scriptname + ' any [ A | B ]')
+ print('Example:')
+ print(scriptname + ' any B')
+ sys.exit()
+
+
+def die(msg):
+ sys.exit(msg + ' (check USB cable)')
+
+
+if len(sys.argv) < 2:
+ usage()
+
+target = sys.argv[1].upper()
+state = sys.argv[2].upper()
+
+# Setup the API to use local USB devices
+errmsg = YRefParam()
+if YAPI.RegisterHub("usb", errmsg) != YAPI.SUCCESS:
+ sys.exit("init error" + errmsg.value)
+
+if target == 'ANY':
+ # retreive any Relay
+ relay = YRelay.FirstRelay()
+ if relay is None:
+ die('no device connected')
+else:
+ relay = YRelay.FindRelay(target + ".relay1")
+
+if not (relay.isOnline()):
+ die('device not connected')
+
+if state == 'A':
+ relay.set_state(YRelay.STATE_A)
+else:
+ relay.set_state(YRelay.STATE_B)
+YAPI.FreeAPI()
diff --git a/yoctoLib.python.26380/Documentation/yoctolib-python-EN.html b/yoctoLib.python.26380/Documentation/yoctolib-python-EN.html
new file mode 100644
index 0000000..dd7166e
--- /dev/null
+++ b/yoctoLib.python.26380/Documentation/yoctolib-python-EN.html
@@ -0,0 +1,3922 @@
+<HTML>
+<HEAD>
+<title>Python API</title>
+<link rel="apple-touch-icon-precomposed" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAYAAABV7bNHAAAAEXRFWHRTb2Z0d2FyZQBKVEwtRGV2J4CxQ84AAAAGYktHRAgICAgICCjFCb4AAAAJcEhZcwAAATsAAAE7AR/fb3EAAA34SURBVHiczVwHTBZNGp5vBeFEUWPHXhDFgsZuLLHEdqJYsJzGTvQEY4yiiAFrNBgTsZ4FsSRqTNRTsRCNvetZ0FPsigVFsf4WFPm/m2fCfNlv2TK738L9k4ysOzuzM8+85XnfWXA4nU6iVWJjY2uUKVNmaqVKlf5eqlSpSn5+fiV9fHy8iE5xOBxEtBg9a+dYvOTm5v7+/v37V1qysrOzD33+/HkFXedzzXG1AFq6dOmqJk2a/NPb27vYX2WRhTHW79+/89LT0/8VGRk5RQigmJiYOnXr1j1UvXr1BoW1kMIGTauP3liZmZn3MzIy+lBpeqIJUHx8/DgqNav/RktRA1JY7zADYE5Ozg8qTVHR0dHJBQCaMWNGzZYtW97zpaUoQLEDVEmSbH/Hz58/c9LS0hrExcVlsHfwhmrVqu2i9sY3Ly+PoFLddKv8vmj7n3/+SapWrUqqVKnCrrX6K++LtqNWqFCBUFNAsMlWxlBr9/Ly8qVz3uXahHxvNZHebKO3aGWbVjv/P/V8bAE1a9YkpUuXtm1cXqlXJTVq1CDUy5KAgAChzRQFis69TUJCwiQmZVOmTPGjdiezRIkS/nbqOaSnYcOG2BFy6dIlQt2prQa4WbNmpGLFimxB9+7dg5G1xVjz9h8/fnyh4wZIxYsX70a5jb8nu6nW7/nz50y13r9/z6oVNdWaA6QSG4B3XLt2jbx48cKUiolIFDU3/rR2A0AdrExSZHEiQKq1A1h5lT8DBxscHEwePHhAbt26Rd6+fWvZnun1wXspQB0kKj3NRBZhRbpQtAyoXj/KdllVW0DJkiWZ93r69KkpyVBzFMp1Ke9T4WkmUa8e6Ilq6U0SkwJARuNjwZUrVyaUoJI6deqwa9gBPMeB4n04LTGrQiJeUdkObByJiYm/6AS97SBayvY+ffrA2JGTJ08W6Fe2bFlmS+CBypcvX2BMTBDq8+rVK2aAv3z5wp5Bnw4dOpCDBw8WMPx2rEF+n25wrkR3xNuMATajbqjwYvL7kKqmTZuSvn37kpCQEEYF1CZbrFgxxqEoeSX9+vUjbdq0Yc+hPwdQRIXMSpRCWr0lO2yN1v3Xr18zbwPVwf/9/f1JaGgoad68uSELVpbAwEASFhbG1E8NICMVUgNQC1T5fcnq4kWe5S64c+fOpG3btmTAgAFMnawWytVI/fr1dW2Q3WuQCvMlNK4hhw4dIm/evGFqBXWzq8Dde7p4vXtciiQt1bLjJdwLKZIDthTYJivxm6i68bEkkQUbcSO9SSIkQLxkd4EtqlWrltBCPZEiyQ491WqHJ4L3KawCu6a186IqZMSLJLsMmpIgosLzUDZaaACVK1eOBcRWFy+ydslTFVJOSM5+GzRoQAq71KtXz/Lihdy82mCg8+3btyeNGzfWBcpot8B6C7vAvnmymbVr1yaNGjVy3VeuxxEVFeVUUu1OnToxL4HAEBQfA8kLH4QzY1zDlSOkALgYA6oVHx9f6ADh3UuWLGHzMBtSIOEGRo+Q5f79+4y3KftJaqh/+/aNqQkKOgMkeUV8lZ+eZOQNiatu3bqRESNGMMOMMXx8fEhRFLwPG2lFioKCgthGYq5g9mpS5oiIiHCqoQ31+vr1K8nIyHBDVbkj/F54eDhp3bo1Cy+SkpJYWDF16tQiAWnLli3k0aNHmtKjJkVdunRh9fHjx0xy0tPTifIIDP0kLaOclpbGOivblekHfm/nzp3kypUrLMCcPHkyi8GKqmAjzXgyhD4A586dO2Tbtm3k9u3b2kxajxgauUil19u+fTsDCe538ODBRQbQu3fv3ADR40Y9evRg5uDGjRtkx44d5NevX7rrlfTcntJTaaVCcc0lCTty+fLlIgMnJyeH/PHHH0LZzUGDBjHpwfwg8ZivEagOamucUAcksIwsP09RGCWb8HPcuHHMJhV2gRPZu3evmyTgWjnHXr16Mbt69uxZsm/fPpe3NThpJQ5qM5hl8vPzY/YDHgmeQRQILVAB5qxZs1gu6K9QAMjx48dJSkqKbpYRkvThwweSnZ3NbBsDSP4wXDeyfAgG80+hdYHQawfg8+bNKxBugCbMnDmTGUdQg/HjxxdIoGGiGzduZHYNOw+ugwNItYWfOXOGfPz4ke04r5y78fmgHVxNa+7fv39noOA5uTdzBAQEOLUWignhhBQuWw8IPdBAxIYMGeLWBkqAPBEvs2fPJnFxcW7PgGQuW7bMTUWgSsoCm3fu3DnT8+IkE9KCCrVU6y/pDQz9fvjwIbl58yZ58uQJS6Jjd4yiebnBO3bsGJMYXvAsT+KjtGrVyrWDvOAaUsfbUI4ePcoWIi/gL6dOnTJM08jbYdDB1cCb7t69y645OKpmBBJkJBnKe1A9nI1DspAMUyOQ8n5jx44lPXv2ZNc4ZcUHB9zu4XwLTFitgLXjGIiDB14GteVqCsmDSuhJDjwVIgPYE/RRhiRG15IVtYEUQV8hVTgXR94Z0vXp0yeXhMmlKDU1tUCKIv9TEwaCVsGYeIafxfOEPcqBAwcY2HLaAUkAGJA0SAbmh5qVlcVA5p6LV9g9vWv8lOQdeIUXY420yq/V7nEmC8AwKUgExBfn5jCK2GEEgvKPCxISEpgUQvyR9IKEYbFyyRkzZgzp2rWri8MsXLjQtUGQCtgwjI3Fv3z5kkkX3o1zNBBHqBLjMTpAGAGV/3/3ReOnSEe9di4dmCQWzoHjpXv37mTPnj2MAkBl4NEgWbxAdYcOHcqcBFImycnJjP3yArsD24ixsTl4F6RDOR/lZprZeH7toBNwitgdMzZKGciirlmzxrb06/Tp09knNXbNUfm1mls7NYJOKwNDNZBoUrNRyt2AdODQz66Ck1aolwhh9XSzHVTMncoGNTTl7dHR0WT48OH/N1Y8atQoVxrGTilSe9YRGBjoNNMR9gL2AeQMbpZ7Gflz4DCoMMQ8IYXs3cSJE20JPeAt5UZdjV0rKww7Qo3Dhw+bI7xBQUFOEVHF/wEOWPCRI0fIggULXB5GSFTzDWdkZCQZNmyYZXD41x5KADgwWqoFZ4BzNLDx9evXExGtYdeUkzhFDC0Cz4EDB5Jdu3aRxMRE12SsiPW0adPYWGYKEnh4N/JN8khc9L2QZJiGjh07MilavXq1kNY4goODncqBldcAB0Z206ZNLJ3qqafDbsF140RBpICITpgwwSWxmrst8N6IiAjSv39/FrqsWrXKPTBV6498kNbAqDExMcxrABxUK8ZP7V67du3I4sWL2TU4DdIQ169fdx3lILmFtCjKnDlzyNWrVy0ZXbVcOoJnGHqABPqh1Aa3sUJCQlTdPIwp2CwIGnYb1ch1muEaiL/279/PvNGkSZMKpCfw7MqVK9nBYO/evW33TkgJA6TTp0+zUAhsXzVpL2eSHGl0njt3LmnRogXZvXs32bx5syHjFGGscmONmA0FoQI7XlGwdK5aiK88YcJac4SxxgbhY66oqCimJUqH4kp3KMMHpF8RJsA1nj9/3jJd1wtVsFs8uSUPDeTP8jy3aGBpJkRCBRtHcIvYD+d7auuR1BYHbwFgVqxYwbL/otGv2iT0QEX6ATxKqx1t/CtYT+JDrc2E7YNdRRIfsaHqGGriB7GGCF64cEFTRaxMWAmEXELUxuIkVGVXTUmynl0CfYDbVwuR8q/FF++JzmuFLwBBC1SoH0QfCTa9cT2VZD01LWCDjMTTjN1Rm6jyWQCktXgc0aAduSCeSVTxMrbYRk3BMBpYRLqUkxX1dN7e3kzFtHYeSTh4U7BggISMoujOy+empQkiQEpmXLOR6pmxSzjuQV4bWUe9CcPVI+5D7nv+/PnsSEoEHDPzMthsyfAldrt5ZAMQ9OLEAx7EyHU/e/aMLFq0iAEKiUJ+SU3S7dpst80UcZFmOY5eP4QQiOaResDBoIjEoSJli9AEYQjO0PBTzRTY4WQU/cQfVkulGnEN+T2w1ZEjR7Kc8oYNG4QNLb/GCcXy5cuZmgEk+YGmKL0Q4U6qbl5ESqyoEy/4zZ/Ro0czz4R8jBJUUenENz0IMOHVYmNjGUhG6qS3sYYaRP/J8YQ/iNgwHBvjaOfixYtk3bp1bpKjJ51a7wW7BwMGP0Jkboc6aawhBwCl66Eqwh/0JoEjHnwKg3TF2rVrXckukQXpuW6kfPErmTgWEjEPVuwSfeYe5O+/egiLiqeaJ8DvgyHRhbN9ZPD42ZXZyF9LquUfHIjaSTNOhpbbkKAbVu2O0W7haAg8B3kdfiau5VKt2Dv5YaGom9fbbBV1uwmY/iNqd8wCiWQX8j3sl0IU/dRyL6KpDF7BxMGyzdhDMyES3YCrAAi5zEy7UxlIqeLoGL+vgU/8RGi+mcwAvBhy2jhSgqSaic1E1kPvv6b1qpSampqTl5cXZTVkUOo/v49PW3Amjy8tsBARN27GLuHDLnyxgQ8VsBF6gbJRcKs2Lyr1UVu3bs1x/fWXsLCwf9NOYWYT4nrtSLrjpSdOnNA8FLB6ZIyKL1YhQSCe8o+gjPLWRu+g4OyjLH+A25/HCQ0NreTr6wuXX9bqGbcnH33qAWj3uAbr+fjz58+GycnJWW5/HiclJSUrNzd3FL38YMbuGBlSEVvjSYhjImQwVHOsHRhwcFT/RBdVtSrUM2yng3XxdOfNHBNZPVIy8wWHnmpTO3yKgjMiKSkpU+iPvIWHh8+kQM2nA/ianYTdX1pYAcLEsznUfs2lwfNSU38FL//T/YpeXl7/oNLUj4phbVor0MH9rO68p8/aYWto+UbX/I4a4qe0HqCSs4NKzVstDP4HmBZinDvm9zIAAAAASUVORK5CYII="/>
+<meta name="apple-mobile-web-app-capable" content="yes" />
+<style type="text/css">
+/*********************************************************************
+ *
+ * $Id: yoctolib-python-EN.html 26364 2017-01-13 08:35:31Z seb $
+ *
+ * Searchable documentation browser for Yoctopuce Library
+ *
+ * (note: the reference file to edit is yoctolib-cpp-FR.html)
+ *
+ * - - - - - - - - - License information: - - - - - - - - -
+ *
+ * Copyright (C) 2011 and beyond by Yoctopuce Sarl, Switzerland.
+ *
+ * 1) If you have obtained this file from www.yoctopuce.com,
+ * Yoctopuce Sarl licenses to you (hereafter Licensee) the
+ * right to use, modify, copy, and integrate this source file
+ * into your own solution for the sole purpose of interfacing
+ * a Yoctopuce product with Licensee's solution.
+ *
+ * The use of this file and all relationship between Yoctopuce
+ * and Licensee are governed by Yoctopuce General Terms and
+ * Conditions.
+ *
+ * THE SOFTWARE AND DOCUMENTATION ARE PROVIDED "AS IS" WITHOUT
+ * WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
+ * WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS
+ * FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO
+ * EVENT SHALL LICENSOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
+ * INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA,
+ * COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR
+ * SERVICES, ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT
+ * LIMITED TO ANY DEFENSE THEREOF), ANY CLAIMS FOR INDEMNITY OR
+ * CONTRIBUTION, OR OTHER SIMILAR COSTS, WHETHER ASSERTED ON THE
+ * BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE), BREACH OF
+ * WARRANTY, OR OTHERWISE.
+ *
+ * 2) If your intent is not to interface with Yoctopuce products,
+ * you are not entitled to use, read or create any derived
+ * material from this file.
+ *
+ *********************************************************************/
+BODY
+{ font-family: Arial, sans-serif;
+ font-size: 14px;
+ text-align : justify;
+}
+
+div#BannerLayer
+{ position:absolute;
+ left:0px;
+ top:0px;
+ width:800px;
+ height:80px;
+ overflow:hidden;
+ Font-size:64px;
+ font-weight:bold;
+ background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAABkCAIAAADITs03AAAALHRFWHRDcmVhdGlvbiBUaW1lAFR1ZSAxMyBEZWMgMjAxMSAwNzoyNjozNCArMDEwMCBiImgAAAAHdElNRQfbDA0GIhbUXPxTAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAABGdBTUEAALGPC/xhBQAAAB9JREFUeNpjeP78ORMDAwPT////wTQ+NrHqRvWTrR8AfCxgH0BR2OYAAAAASUVORK5CYII=);
+ }
+div#MarginLayer
+{ position:absolute;
+ left:0px;
+ top:80px;
+ width:250px;
+ height:490px;
+ background-color:#f8f8f8;
+ overflow:auto;
+
+}
+
+div#FunctionsLayer
+{ position:absolute;
+ left:250px;
+ top:80px;
+ width:600px;
+ height:490px;
+ overflow:auto;
+}
+
+div#FooterLayer
+{ position:absolute;
+ left:0px;
+ top:570px;
+ width: 800px;
+ height:30px;
+ background-color: #E0E0E0 ;
+ overflow:hidden;
+}
+
+div#separatorLayer
+{ position:absolute;
+ width:10px;
+ height:470px;
+ border-left:2px solid #b0b0b0 ;
+ overflow:hidden;
+ cursor :col-resize;
+}
+
+div.container
+{ width:100%;
+ height:100%;
+}
+
+span.classheader
+{ display:inline-block;
+ width:100%;
+ background-color:#f0f0f0;
+ padding-top:3px;
+ padding-bottom:3px;
+ margin-bottom:3px;
+ margin-top:px;
+}
+
+A.extLink
+ { color : grey;
+ text-decoration:none;
+ font-size:10px;
+ }
+
+span.classheader A
+ { color: navy;
+ text-decoration:none;
+ font-weight:bold;
+ }
+
+img.expandColapse
+ { vertical-align: middle;
+ }
+
+div.methodsList
+ { margin-top:0px;
+ padding-top:0px;
+ padding-left:10px;
+ margin-bottom:10px;
+ }
+
+div.methodsList A
+ { color: navy;
+ text-decoration:none;
+ }
+
+div#FunctionsLayerInner
+ { margin-left:10px;
+ margin-top:10px;
+ margin-right:20px;
+ }
+
+span.funcHeader
+ { color: navy;
+ text-decoration:none;
+ font-size:25px;
+ margin-botton:20px;
+ font-weight:bold;
+ }
+
+span#pn , td.pn
+ { font-weight:bold;
+ color:#004000;
+
+ }
+
+td.pn
+ {vertical-align:top}
+
+span.paramAndRet
+ {font-weight:bold;
+
+ }
+
+table
+ {font-size:14px;}
+
+span.prototype
+ { margin-left:10px;
+ margin-right:10px;
+ padding-top:5px;
+ padding-bottom:5px;
+ padding-left:5px;
+ padding-right:5px;
+ font-weight:bold;
+ background-color: #f8f8f8;
+ -moz-border-radius: 5px;
+ -webkit-border-top-left-radius: 5px;
+ -webkit-border-top-right-radius: 5px;
+ -webkit-border-bottom-right-radius: 5px;
+ -webkit-border-bottom-left-radius: 5px;
+ color:navy;
+ }
+
+p.protolabel
+ { border-top:1px solid #f0f0f0;
+ }
+
+P.protoretval
+ { margin-left:20px;}
+
+.paramtable
+ { margin-left:20px; margin-top:0px;}
+
+P.protoretval
+ { margin-left:20px;}
+
+input
+ { border : 1px solid gray;
+ border-radius: 2px;
+ -moz-border-radius: 2px;
+ -webkit-border-top-left-radius: 2px;
+ -webkit-border-top-right-radius: 2px;
+ -webkit-border-bottom-right-radius: 2px;
+ -webkit-border-bottom-left-radius: 2px;
+ }
+
+td#langdt
+ { vertical-align:bottom;
+ text-align:right;
+ color:#404040;
+ }
+
+td#version
+ { text-align:right;
+ font-size:12px;
+ color:grey;
+ }
+
+p.methodlist
+ { border-top:1px solid #e0e0e0;
+ }
+
+a.protoindex
+ { text-decoration:none;
+ font-weight:bold;
+ color:navy;
+ }
+
+span.synlist
+ { margin-left:10px;
+ }
+
+p.include
+ { font-weight:bold;
+ color:navy;
+ margin-left:20px;
+ }
+</style>
+
+<SCRIPT type="text/JavaScript">
+<!--
+var WinW;
+var WinH;
+
+var plusimage="data:image/gif;base64,R0lGODlhEAAQAIAAAEJCQv///yH5BAAAAP8ALAAAAAAQABAAAAIlhI9pwe2+nmQRAllbpvft8IWdgnAcOXYWpmqt6b2gLE7TZ6N6AQA7";
+var minusimage="data:image/gif;base64,R0lGODlhEAAQAIAAAEJCQv///yH5BAAAAP8ALAAAAAAQABAAAAIihI9pwe2+nmRxvmobzmHnqCAUMIZkd3KjqqWqZ8GTLJl2AQA7";
+
+var marginSize=250;
+var resizeCallBacks= new Array();
+var SVN_Id = '$Id: yoctolib-python-EN.html 26364 2017-01-13 08:35:31Z seb $';
+var Version = (SVN_Id.split(' '))[3];
+var doc = new Array();
+
+//--- (generated code: Module)
+var Language='Python';
+var IncludeLabel='In order to use the functions described here, you should include:';
+var ParamLabel='Parameters :';
+var ReturnLabel='Returns :';
+var AbbrevHint='The API features two syntaxes : one is purely object oriented, the other is more compact.';
+var NotFound='No match found';
+var AbbrevLabel='Use abbreviated names';
+var UseShortcuts=false;
+var sub={YAPI_SUCCESS:'YAPI.SUCCESS',YAPI_NOT_INITIALIZED:'YAPI.NOT_INITIALIZED',YAPI_INVALID_ARGUMENT:'YAPI.INVALID_ARGUMENT',YAPI_NOT_SUPPORTED:'YAPI.NOT_SUPPORTED',YAPI_DEVICE_NOT_FOUND:'YAPI.DEVICE_NOT_FOUND',YAPI_VERSION_MISMATCH:'YAPI.VERSION_MISMATCH',YAPI_DEVICE_BUSY:'YAPI.DEVICE_BUSY',YAPI_TIMEOUT:'YAPI.TIMEOUT',YAPI_IO_ERROR:'YAPI.IO_ERROR',YAPI_NO_MORE_DATA:'YAPI.NO_MORE_DATA',YAPI_EXHAUSTED:'YAPI.EXHAUSTED',YAPI_DOUBLE_ACCES:'YAPI.DOUBLE_ACCES',YAPI_UNAUTHORIZED:'YAPI.UNAUTHORIZED',YAPI_RTC_NOT_READY:'YAPI.RTC_NOT_READY',YAPI_FILE_NOT_FOUND:'YAPI.FILE_NOT_FOUND',null:'None'};
+doc['Module']={'':{syn:'Module control interface',inc:'from yocto_api import *',cmt:'<p>This interface is identical for all Yoctopuce USB modules. It can be used to control the module global parameters, and to enumerate the functions provided by each module.</p>'}};
+doc['Module']['FindModule']={syn:'Allows you to find a module from its serial number or from its logical name.',lib:'YModule.FindModule()',pro:'def FindModule(<span id=pn>func</span>)',cmt:'<p>Allows you to find a module from its serial number or from its logical name.</p><p> This function does not require that the module is online at the time it is invoked. The returned object is nevertheless valid. Use the method <tt>YModule.isOnline()</tt> to test if the module is indeed online at a given time. In case of ambiguity when looking for a module by logical name, no error is notified: the first instance found is returned. The search is performed first by hardware name, then by logical name.</p>',par:{func:'a string containing either the serial number or the logical name of the desired module'},ret:'a <tt>YModule</tt> object allowing you to drive the module or get additional information on the module.'};
+doc['Module']['FirstModule']={syn:'Starts the enumeration of modules currently accessible.',lib:'YModule.FirstModule()',pro:'def FirstModule()',cmt:'<p>Starts the enumeration of modules currently accessible. Use the method <tt>YModule.nextModule()</tt> to iterate on the next modules.</p>',ret:'a pointer to a <tt>YModule</tt> object, corresponding to the first module currently online, or a <tt>null</tt> pointer if there are none.'};
+doc['Module']['checkFirmware']={syn:'Tests whether the byn file is valid for this module.',lib:'module.checkFirmware()',pro:'def checkFirmware(<span id=pn>path</span>, <span id=pn>onlynew</span>)',cmt:'<p>Tests whether the byn file is valid for this module. This method is useful to test if the module needs to be updated. It is possible to pass a directory as argument instead of a file. In this case, this method returns the path of the most recent appropriate <tt>.byn</tt> file. If the parameter <tt>onlynew</tt> is true, the function discards firmwares that are older or equal to the installed firmware.</p>',par:{path:'the path of a byn file or a directory that contains byn files',onlynew:'returns only files that are strictly newer'},ret:'the path of the byn file to use or a empty string if no byn files matches the requirement',ext:'On failure, throws an exception or returns a string that start with \x22error:\x22.'};
+doc['Module']['clearCache']={syn:'Invalidates the cache.',lib:'module.clearCache()',pro:'def clearCache()',cmt:'<p>Invalidates the cache. Invalidates the cache of the module attributes. Forces the next call to get_xxx() or loadxxx() to use values that come from the device.</p>'};
+doc['Module']['describe']={syn:'Returns a descriptive text that identifies the module.',lib:'module.describe()',pro:'def describe()',cmt:'<p>Returns a descriptive text that identifies the module. The text may include either the logical name or the serial number of the module.</p>',ret:'a string that describes the module'};
+doc['Module']['download']={syn:'Downloads the specified built-in file and returns a binary buffer with its content.',lib:'module.download()',pro:'def download(<span id=pn>pathname</span>)',cmt:'<p>Downloads the specified built-in file and returns a binary buffer with its content.</p>',par:{pathname:'name of the new file to load'},ret:'a binary buffer with the file content',ext:'On failure, throws an exception or returns <tt>YAPI_INVALID_STRING</tt>.'};
+doc['Module']['functionCount']={syn:'Returns the number of functions (beside the \x22module\x22 interface) available on the module.',lib:'module.functionCount()',pro:'def functionCount()',cmt:'<p>Returns the number of functions (beside the \x22module\x22 interface) available on the module.</p>',ret:'the number of functions on the module',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Module']['functionId']={syn:'Retrieves the hardware identifier of the <i>n</i>th function on the module.',lib:'module.functionId()',pro:'def functionId(<span id=pn>functionIndex</span>)',cmt:'<p>Retrieves the hardware identifier of the <i>n</i>th function on the module.</p>',par:{functionIndex:'the index of the function for which the information is desired, starting at 0 for the first function.'},ret:'a string corresponding to the unambiguous hardware identifier of the requested module function',ext:'On failure, throws an exception or returns an empty string.'};
+doc['Module']['functionName']={syn:'Retrieves the logical name of the <i>n</i>th function on the module.',lib:'module.functionName()',pro:'def functionName(<span id=pn>functionIndex</span>)',cmt:'<p>Retrieves the logical name of the <i>n</i>th function on the module.</p>',par:{functionIndex:'the index of the function for which the information is desired, starting at 0 for the first function.'},ret:'a string corresponding to the logical name of the requested module function',ext:'On failure, throws an exception or returns an empty string.'};
+doc['Module']['functionType']={syn:'Retrieves the type of the <i>n</i>th function on the module.',lib:'module.functionType()',pro:'def functionType(<span id=pn>functionIndex</span>)',cmt:'<p>Retrieves the type of the <i>n</i>th function on the module.</p>',par:{functionIndex:'the index of the function for which the information is desired, starting at 0 for the first function.'},ret:'a the type of the function',ext:'On failure, throws an exception or returns an empty string.'};
+doc['Module']['functionValue']={syn:'Retrieves the advertised value of the <i>n</i>th function on the module.',lib:'module.functionValue()',pro:'def functionValue(<span id=pn>functionIndex</span>)',cmt:'<p>Retrieves the advertised value of the <i>n</i>th function on the module.</p>',par:{functionIndex:'the index of the function for which the information is desired, starting at 0 for the first function.'},ret:'a short string (up to 6 characters) corresponding to the advertised value of the requested module function',ext:'On failure, throws an exception or returns an empty string.'};
+doc['Module']['get_allSettings']={syn:'Returns all the settings and uploaded files of the module.',lib:'module.get_allSettings()',pro:'def get_allSettings()',cmt:'<p>Returns all the settings and uploaded files of the module. Useful to backup all the logical names, calibrations parameters, and uploaded files of a device.</p>',ret:'a binary buffer with all the settings.',ext:'On failure, throws an exception or returns an binary object of size 0.'};
+doc['Module']['get_beacon']={syn:'Returns the state of the localization beacon.',lib:'module.get_beacon()',pro:'def get_beacon()',cmt:'<p>Returns the state of the localization beacon.</p>',ret:'either <tt>Y_BEACON_OFF</tt> or <tt>Y_BEACON_ON</tt>, according to the state of the localization beacon',ext:'On failure, throws an exception or returns <tt>Y_BEACON_INVALID</tt>.'};
+doc['Module']['get_errorMessage']={syn:'Returns the error message of the latest error with this module object.',lib:'module.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Returns the error message of the latest error with this module object. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a string corresponding to the latest error message that occured while using this module object'};
+doc['Module']['get_errorType']={syn:'Returns the numerical error code of the latest error with this module object.',lib:'module.get_errorType()',pro:'def get_errorType()',cmt:'<p>Returns the numerical error code of the latest error with this module object. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a number corresponding to the code of the latest error that occurred while using this module object'};
+doc['Module']['get_firmwareRelease']={syn:'Returns the version of the firmware embedded in the module.',lib:'module.get_firmwareRelease()',pro:'def get_firmwareRelease()',cmt:'<p>Returns the version of the firmware embedded in the module.</p>',ret:'a string corresponding to the version of the firmware embedded in the module',ext:'On failure, throws an exception or returns <tt>Y_FIRMWARERELEASE_INVALID</tt>.'};
+doc['Module']['get_functionIds']={syn:'Retrieve all hardware identifier that match the type passed in argument.',lib:'module.get_functionIds()',pro:'def get_functionIds(<span id=pn>funType</span>)',cmt:'<p>Retrieve all hardware identifier that match the type passed in argument.</p>',par:{funType:'The type of function (Relay, LightSensor, Voltage,...)'},ret:'an array of strings.'};
+doc['Module']['get_hardwareId']={syn:'Returns the unique hardware identifier of the module.',lib:'module.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Returns the unique hardware identifier of the module. The unique hardware identifier is made of the device serial number followed by string \x22.module\x22.</p>',ret:'a string that uniquely identifies the module'};
+doc['Module']['get_icon2d']={syn:'Returns the icon of the module.',lib:'module.get_icon2d()',pro:'def get_icon2d()',cmt:'<p>Returns the icon of the module. The icon is a PNG image and does not exceeds 1536 bytes.</p>',ret:'a binary buffer with module icon, in png format. On failure, throws an exception or returns <tt>YAPI_INVALID_STRING</tt>.'};
+doc['Module']['get_lastLogs']={syn:'Returns a string with last logs of the module.',lib:'module.get_lastLogs()',pro:'def get_lastLogs()',cmt:'<p>Returns a string with last logs of the module. This method return only logs that are still in the module.</p>',ret:'a string with last logs of the module. On failure, throws an exception or returns <tt>YAPI_INVALID_STRING</tt>.'};
+doc['Module']['get_logicalName']={syn:'Returns the logical name of the module.',lib:'module.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Returns the logical name of the module.</p>',ret:'a string corresponding to the logical name of the module',ext:'On failure, throws an exception or returns <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['Module']['get_luminosity']={syn:'Returns the luminosity of the module informative leds (from 0 to 100).',lib:'module.get_luminosity()',pro:'def get_luminosity()',cmt:'<p>Returns the luminosity of the module informative leds (from 0 to 100).</p>',ret:'an integer corresponding to the luminosity of the module informative leds (from 0 to 100)',ext:'On failure, throws an exception or returns <tt>Y_LUMINOSITY_INVALID</tt>.'};
+doc['Module']['get_parentHub']={syn:'Returns the serial number of the YoctoHub on which this module is connected.',lib:'module.get_parentHub()',pro:'def get_parentHub()',cmt:'<p>Returns the serial number of the YoctoHub on which this module is connected. If the module is connected by USB, or if the module is the root YoctoHub, an empty string is returned.</p>',ret:'a string with the serial number of the YoctoHub or an empty string'};
+doc['Module']['get_persistentSettings']={syn:'Returns the current state of persistent module settings.',lib:'module.get_persistentSettings()',pro:'def get_persistentSettings()',cmt:'<p>Returns the current state of persistent module settings.</p>',ret:'a value among <tt>Y_PERSISTENTSETTINGS_LOADED</tt>, <tt>Y_PERSISTENTSETTINGS_SAVED</tt> and <tt>Y_PERSISTENTSETTINGS_MODIFIED</tt> corresponding to the current state of persistent module settings',ext:'On failure, throws an exception or returns <tt>Y_PERSISTENTSETTINGS_INVALID</tt>.'};
+doc['Module']['get_productId']={syn:'Returns the USB device identifier of the module.',lib:'module.get_productId()',pro:'def get_productId()',cmt:'<p>Returns the USB device identifier of the module.</p>',ret:'an integer corresponding to the USB device identifier of the module',ext:'On failure, throws an exception or returns <tt>Y_PRODUCTID_INVALID</tt>.'};
+doc['Module']['get_productName']={syn:'Returns the commercial name of the module, as set by the factory.',lib:'module.get_productName()',pro:'def get_productName()',cmt:'<p>Returns the commercial name of the module, as set by the factory.</p>',ret:'a string corresponding to the commercial name of the module, as set by the factory',ext:'On failure, throws an exception or returns <tt>Y_PRODUCTNAME_INVALID</tt>.'};
+doc['Module']['get_productRelease']={syn:'Returns the hardware release version of the module.',lib:'module.get_productRelease()',pro:'def get_productRelease()',cmt:'<p>Returns the hardware release version of the module.</p>',ret:'an integer corresponding to the hardware release version of the module',ext:'On failure, throws an exception or returns <tt>Y_PRODUCTRELEASE_INVALID</tt>.'};
+doc['Module']['get_rebootCountdown']={syn:'Returns the remaining number of seconds before the module restarts, or zero when no reboot has been scheduled.',lib:'module.get_rebootCountdown()',pro:'def get_rebootCountdown()',cmt:'<p>Returns the remaining number of seconds before the module restarts, or zero when no reboot has been scheduled.</p>',ret:'an integer corresponding to the remaining number of seconds before the module restarts, or zero when no reboot has been scheduled',ext:'On failure, throws an exception or returns <tt>Y_REBOOTCOUNTDOWN_INVALID</tt>.'};
+doc['Module']['get_serialNumber']={syn:'Returns the serial number of the module, as set by the factory.',lib:'module.get_serialNumber()',pro:'def get_serialNumber()',cmt:'<p>Returns the serial number of the module, as set by the factory.</p>',ret:'a string corresponding to the serial number of the module, as set by the factory',ext:'On failure, throws an exception or returns <tt>Y_SERIALNUMBER_INVALID</tt>.'};
+doc['Module']['get_subDevices']={syn:'Returns a list of all the modules that are plugged into the current module.',lib:'module.get_subDevices()',pro:'def get_subDevices()',cmt:'<p>Returns a list of all the modules that are plugged into the current module. This method only makes sense when called for a YoctoHub/VirtualHub. Otherwise, an empty array will be returned.</p>',ret:'an array of strings containing the sub modules.'};
+doc['Module']['get_upTime']={syn:'Returns the number of milliseconds spent since the module was powered on.',lib:'module.get_upTime()',pro:'def get_upTime()',cmt:'<p>Returns the number of milliseconds spent since the module was powered on.</p>',ret:'an integer corresponding to the number of milliseconds spent since the module was powered on',ext:'On failure, throws an exception or returns <tt>Y_UPTIME_INVALID</tt>.'};
+doc['Module']['get_url']={syn:'Returns the URL used to access the module.',lib:'module.get_url()',pro:'def get_url()',cmt:'<p>Returns the URL used to access the module. If the module is connected by USB, the string \x27usb\x27 is returned.</p>',ret:'a string with the URL of the module.'};
+doc['Module']['get_usbCurrent']={syn:'Returns the current consumed by the module on the USB bus, in milli-amps.',lib:'module.get_usbCurrent()',pro:'def get_usbCurrent()',cmt:'<p>Returns the current consumed by the module on the USB bus, in milli-amps.</p>',ret:'an integer corresponding to the current consumed by the module on the USB bus, in milli-amps',ext:'On failure, throws an exception or returns <tt>Y_USBCURRENT_INVALID</tt>.'};
+doc['Module']['get_userData']={syn:'Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>.',lib:'module.get_userData()',pro:'def get_userData()',cmt:'<p>Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>. This attribute is never touched directly by the API, and is at disposal of the caller to store a context.</p>',ret:'the object stored previously by the caller.'};
+doc['Module']['get_userVar']={syn:'Returns the value previously stored in this attribute.',lib:'module.get_userVar()',pro:'def get_userVar()',cmt:'<p>Returns the value previously stored in this attribute. On startup and after a device reboot, the value is always reset to zero.</p>',ret:'an integer corresponding to the value previously stored in this attribute',ext:'On failure, throws an exception or returns <tt>Y_USERVAR_INVALID</tt>.'};
+doc['Module']['hasFunction']={syn:'Tests if the device includes a specific function.',lib:'module.hasFunction()',pro:'def hasFunction(<span id=pn>funcId</span>)',cmt:'<p>Tests if the device includes a specific function. This method takes a function identifier and returns a boolean.</p>',par:{funcId:'the requested function identifier'},ret:'true if the device has the function identifier'};
+doc['Module']['isOnline']={syn:'Checks if the module is currently reachable, without raising any error.',lib:'module.isOnline()',pro:'def isOnline()',cmt:'<p>Checks if the module is currently reachable, without raising any error. If there are valid cached values for the module, that have not yet expired, the device is considered reachable. No exception is raised if there is an error while trying to contact the requested module.</p>',ret:'<tt>true</tt> if the module can be reached, and <tt>false</tt> otherwise'};
+doc['Module']['load']={syn:'Preloads the module cache with a specified validity duration.',lib:'module.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Preloads the module cache with a specified validity duration. By default, whenever accessing a device, all module attributes are kept in cache for the standard duration (5 ms). This method can be used to temporarily mark the cache as valid for a longer period, in order to reduce network traffic for instance.</p>',par:{msValidity:'an integer corresponding to the validity attributed to the loaded module parameters, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Module']['log']={syn:'Adds a text message to the device logs.',lib:'module.log()',pro:'def log(<span id=pn>text</span>)',cmt:'<p>Adds a text message to the device logs. This function is useful in particular to trace the execution of HTTP callbacks. If a newline is desired after the message, it must be included in the string.</p>',par:{text:'the string to append to the logs.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Module']['nextModule']={syn:'Continues the module enumeration started using <tt>yFirstModule()</tt>.',lib:'module.nextModule()',pro:'def nextModule()',cmt:'<p>Continues the module enumeration started using <tt>yFirstModule()</tt>.</p>',ret:'a pointer to a <tt>YModule</tt> object, corresponding to the next module found, or a <tt>null</tt> pointer if there are no more modules to enumerate.'};
+doc['Module']['reboot']={syn:'Schedules a simple module reboot after the given number of seconds.',lib:'module.reboot()',pro:'def reboot(<span id=pn>secBeforeReboot</span>)',cmt:'<p>Schedules a simple module reboot after the given number of seconds.</p>',par:{secBeforeReboot:'number of seconds before rebooting'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Module']['registerLogCallback']={syn:'Registers a device log callback function.',lib:'module.registerLogCallback()',pro:'def registerLogCallback(<span id=pn>callback</span>)',cmt:'<p>Registers a device log callback function. This callback will be called each time that a module sends a new log message. Mostly useful to debug a Yoctopuce module.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the module object that emitted the log message, and the character string containing the log.'}};
+doc['Module']['revertFromFlash']={syn:'Reloads the settings stored in the nonvolatile memory, as when the module is powered on.',lib:'module.revertFromFlash()',pro:'def revertFromFlash()',cmt:'<p>Reloads the settings stored in the nonvolatile memory, as when the module is powered on.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Module']['saveToFlash']={syn:'Saves current settings in the nonvolatile memory of the module.',lib:'module.saveToFlash()',pro:'def saveToFlash()',cmt:'<p>Saves current settings in the nonvolatile memory of the module. Warning: the number of allowed save operations during a module life is limited (about 100000 cycles). Do not call this function within a loop.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Module']['set_allSettings']={syn:'Restores all the settings of the device.',lib:'module.set_allSettings()',pro:'def set_allSettings(<span id=pn>settings</span>)',cmt:'<p>Restores all the settings of the device. Useful to restore all the logical names and calibrations parameters of a module from a backup.Remember to call the <tt>saveToFlash()</tt> method of the module if the modifications must be kept.</p>',par:{settings:'a binary buffer with all the settings.'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Module']['set_allSettingsAndFiles']={syn:'Restores all the settings and uploaded files to the module.',lib:'module.set_allSettingsAndFiles()',pro:'def set_allSettingsAndFiles(<span id=pn>settings</span>)',cmt:'<p>Restores all the settings and uploaded files to the module. This method is useful to restore all the logical names and calibrations parameters, uploaded files etc. of a device from a backup. Remember to call the <tt>saveToFlash()</tt> method of the module if the modifications must be kept.</p>',par:{settings:'a binary buffer with all the settings.'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Module']['set_beacon']={syn:'Turns on or off the module localization beacon.',lib:'module.set_beacon()',pro:'def set_beacon(<span id=pn>newval</span>)',cmt:'<p>Turns on or off the module localization beacon.</p>',par:{newval:'either <tt>Y_BEACON_OFF</tt> or <tt>Y_BEACON_ON</tt>'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Module']['set_logicalName']={syn:'Changes the logical name of the module.',lib:'module.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Changes the logical name of the module. You can use <tt>yCheckLogicalName()</tt> prior to this call to make sure that your parameter is valid. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the logical name of the module'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Module']['set_luminosity']={syn:'Changes the luminosity of the module informative leds.',lib:'module.set_luminosity()',pro:'def set_luminosity(<span id=pn>newval</span>)',cmt:'<p>Changes the luminosity of the module informative leds. The parameter is a value between 0 and 100. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'an integer corresponding to the luminosity of the module informative leds'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Module']['set_userData']={syn:'Stores a user context provided as argument in the userData attribute of the function.',lib:'module.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Stores a user context provided as argument in the userData attribute of the function. This attribute is never touched by the API, and is at disposal of the caller to store a context.</p>',par:{data:'any kind of object to be stored'}};
+doc['Module']['set_userVar']={syn:'Returns the value previously stored in this attribute.',lib:'module.set_userVar()',pro:'def set_userVar(<span id=pn>newval</span>)',cmt:'<p>Returns the value previously stored in this attribute. On startup and after a device reboot, the value is always reset to zero.</p>',par:{newval:'an integer'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Module']['triggerFirmwareUpdate']={syn:'Schedules a module reboot into special firmware update mode.',lib:'module.triggerFirmwareUpdate()',pro:'def triggerFirmwareUpdate(<span id=pn>secBeforeReboot</span>)',cmt:'<p>Schedules a module reboot into special firmware update mode.</p>',par:{secBeforeReboot:'number of seconds before rebooting'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Module']['updateFirmware']={syn:'Prepares a firmware update of the module.',lib:'module.updateFirmware()',pro:'def updateFirmware(<span id=pn>path</span>)',cmt:'<p>Prepares a firmware update of the module. This method returns a <tt>YFirmwareUpdate</tt> object which handles the firmware update process.</p>',par:{path:'the path of the <tt>.byn</tt> file to use.'},ret:'a <tt>YFirmwareUpdate</tt> object or NULL on error.'};
+doc['Module']['updateFirmwareEx']={syn:'Prepares a firmware update of the module.',lib:'module.updateFirmwareEx()',pro:'def updateFirmwareEx(<span id=pn>path</span>, <span id=pn>force</span>)',cmt:'<p>Prepares a firmware update of the module. This method returns a <tt>YFirmwareUpdate</tt> object which handles the firmware update process.</p>',par:{path:'the path of the <tt>.byn</tt> file to use.',force:'true to force the firmware update even if some prerequisites appear not to be met'},ret:'a <tt>YFirmwareUpdate</tt> object or NULL on error.'};
+//--- (end of generated code: Module)
+//--- (generated code: ColorLed)
+doc['ColorLed']={'':{syn:'ColorLed function interface',inc:'from yocto_colorled import *',cmt:'<p>The Yoctopuce application programming interface allows you to drive a color LED using RGB coordinates as well as HSL coordinates. The module performs all conversions form RGB to HSL automatically. It is then self-evident to turn on a LED with a given hue and to progressively vary its saturation or lightness. If needed, you can find more information on the difference between RGB and HSL in the section following this one.</p>'}};
+doc['ColorLed']['FindColorLed']={syn:'Retrieves an RGB LED for a given identifier.',lib:'YColorLed.FindColorLed()',pro:'def FindColorLed(<span id=pn>func</span>)',cmt:'<p>Retrieves an RGB LED for a given identifier. The identifier can be specified using several formats:<br> <ul> <li>FunctionLogicalName</li> <li>ModuleSerialNumber.FunctionIdentifier</li> <li>ModuleSerialNumber.FunctionLogicalName</li> <li>ModuleLogicalName.FunctionIdentifier</li> <li>ModuleLogicalName.FunctionLogicalName</li> </ul></p><p> This function does not require that the RGB LED is online at the time it is invoked. The returned object is nevertheless valid. Use the method <tt>YColorLed.isOnline()</tt> to test if the RGB LED is indeed online at a given time. In case of ambiguity when looking for an RGB LED by logical name, no error is notified: the first instance found is returned. The search is performed first by hardware name, then by logical name.</p>',par:{func:'a string that uniquely characterizes the RGB LED'},ret:'a <tt>YColorLed</tt> object allowing you to drive the RGB LED.'};
+doc['ColorLed']['FirstColorLed']={syn:'Starts the enumeration of RGB LEDs currently accessible.',lib:'YColorLed.FirstColorLed()',pro:'def FirstColorLed()',cmt:'<p>Starts the enumeration of RGB LEDs currently accessible. Use the method <tt>YColorLed.nextColorLed()</tt> to iterate on next RGB LEDs.</p>',ret:'a pointer to a <tt>YColorLed</tt> object, corresponding to the first RGB LED currently online, or a <tt>null</tt> pointer if there are none.'};
+doc['ColorLed']['addHslMoveToBlinkSeq']={syn:'Add a new transition to the blinking sequence, the move will be performed in the HSL space.',lib:'colorled.addHslMoveToBlinkSeq()',pro:'def addHslMoveToBlinkSeq(<span id=pn>HSLcolor</span>, <span id=pn>msDelay</span>)',cmt:'<p>Add a new transition to the blinking sequence, the move will be performed in the HSL space.</p>',par:{HSLcolor:'desired HSL color when the traisntion is completed',msDelay:'duration of the color transition, in milliseconds.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds. On failure, throws an exception or returns a negative error code.'};
+doc['ColorLed']['addRgbMoveToBlinkSeq']={syn:'Adds a new transition to the blinking sequence, the move is performed in the RGB space.',lib:'colorled.addRgbMoveToBlinkSeq()',pro:'def addRgbMoveToBlinkSeq(<span id=pn>RGBcolor</span>, <span id=pn>msDelay</span>)',cmt:'<p>Adds a new transition to the blinking sequence, the move is performed in the RGB space.</p>',par:{RGBcolor:'desired RGB color when the transition is completed',msDelay:'duration of the color transition, in milliseconds.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds. On failure, throws an exception or returns a negative error code.'};
+doc['ColorLed']['clearCache']={syn:'Invalidates the cache.',lib:'colorled.clearCache()',pro:'def clearCache()',cmt:'<p>Invalidates the cache. Invalidates the cache of the RGB LED attributes. Forces the next call to get_xxx() or loadxxx() to use values that come from the device.</p>'};
+doc['ColorLed']['describe']={syn:'Returns a short text that describes unambiguously the instance of the RGB LED in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'colorled.describe()',pro:'def describe()',cmt:'<p>Returns a short text that describes unambiguously the instance of the RGB LED in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. More precisely, <tt>TYPE</tt> is the type of the function, <tt>NAME</tt> it the name used for the first access to the function, <tt>SERIAL</tt> is the serial number of the module if the module is connected or <tt>\x22unresolved\x22</tt>, and <tt>FUNCTIONID</tt> is the hardware identifier of the function if the module is connected. For example, this method returns <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> if the module is already connected or <tt>Relay(BadCustomeName.relay1)=unresolved</tt> if the module has not yet been connected. This method does not trigger any USB or TCP transaction and can therefore be used in a debugger.</p>',ret:'a string that describes the RGB LED (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['ColorLed']['get_advertisedValue']={syn:'Returns the current value of the RGB LED (no more than 6 characters).',lib:'colorled.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Returns the current value of the RGB LED (no more than 6 characters).</p>',ret:'a string corresponding to the current value of the RGB LED (no more than 6 characters).',ext:'On failure, throws an exception or returns <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['ColorLed']['get_blinkSeqMaxSize']={syn:'Returns the maximum length of the blinking sequence.',lib:'colorled.get_blinkSeqMaxSize()',pro:'def get_blinkSeqMaxSize()',cmt:'<p>Returns the maximum length of the blinking sequence.</p>',ret:'an integer corresponding to the maximum length of the blinking sequence',ext:'On failure, throws an exception or returns <tt>Y_BLINKSEQMAXSIZE_INVALID</tt>.'};
+doc['ColorLed']['get_blinkSeqSignature']={syn:'Return the blinking sequence signature.',lib:'colorled.get_blinkSeqSignature()',pro:'def get_blinkSeqSignature()',cmt:'<p>Return the blinking sequence signature. Since blinking sequences cannot be read from the device, this can be used to detect if a specific blinking sequence is already programmed.</p>',ret:'an integer',ext:'On failure, throws an exception or returns <tt>Y_BLINKSEQSIGNATURE_INVALID</tt>.'};
+doc['ColorLed']['get_blinkSeqSize']={syn:'Returns the current length of the blinking sequence.',lib:'colorled.get_blinkSeqSize()',pro:'def get_blinkSeqSize()',cmt:'<p>Returns the current length of the blinking sequence.</p>',ret:'an integer corresponding to the current length of the blinking sequence',ext:'On failure, throws an exception or returns <tt>Y_BLINKSEQSIZE_INVALID</tt>.'};
+doc['ColorLed']['get_errorMessage']={syn:'Returns the error message of the latest error with the RGB LED.',lib:'colorled.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Returns the error message of the latest error with the RGB LED. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a string corresponding to the latest error message that occured while using the RGB LED object'};
+doc['ColorLed']['get_errorType']={syn:'Returns the numerical error code of the latest error with the RGB LED.',lib:'colorled.get_errorType()',pro:'def get_errorType()',cmt:'<p>Returns the numerical error code of the latest error with the RGB LED. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a number corresponding to the code of the latest error that occurred while using the RGB LED object'};
+doc['ColorLed']['get_friendlyName']={syn:'Returns a global identifier of the RGB LED in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>.',lib:'colorled.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Returns a global identifier of the RGB LED in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>. The returned string uses the logical names of the module and of the RGB LED if they are defined, otherwise the serial number of the module and the hardware identifier of the RGB LED (for example: <tt>MyCustomName.relay1</tt>)</p>',ret:'a string that uniquely identifies the RGB LED using logical names (ex: <tt>MyCustomName.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['ColorLed']['get_functionDescriptor']={syn:'Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function.',lib:'colorled.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function. This identifier can be used to test if two instances of <tt>YFunction</tt> reference the same physical function on the same physical device.</p>',ret:'an identifier of type <tt>YFUN_DESCR</tt>.',ext:'If the function has never been contacted, the returned value is <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>.'};
+doc['ColorLed']['get_functionId']={syn:'Returns the hardware identifier of the RGB LED, without reference to the module.',lib:'colorled.get_functionId()',pro:'def get_functionId()',cmt:'<p>Returns the hardware identifier of the RGB LED, without reference to the module. For example <tt>relay1</tt></p>',ret:'a string that identifies the RGB LED (ex: <tt>relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['ColorLed']['get_hardwareId']={syn:'Returns the unique hardware identifier of the RGB LED in the form <tt>SERIAL.FUNCTIONID</tt>.',lib:'colorled.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Returns the unique hardware identifier of the RGB LED in the form <tt>SERIAL.FUNCTIONID</tt>. The unique hardware identifier is composed of the device serial number and of the hardware identifier of the RGB LED (for example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'a string that uniquely identifies the RGB LED (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['ColorLed']['get_hslColor']={syn:'Returns the current HSL color of the LED.',lib:'colorled.get_hslColor()',pro:'def get_hslColor()',cmt:'<p>Returns the current HSL color of the LED.</p>',ret:'an integer corresponding to the current HSL color of the LED',ext:'On failure, throws an exception or returns <tt>Y_HSLCOLOR_INVALID</tt>.'};
+doc['ColorLed']['get_logicalName']={syn:'Returns the logical name of the RGB LED.',lib:'colorled.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Returns the logical name of the RGB LED.</p>',ret:'a string corresponding to the logical name of the RGB LED.',ext:'On failure, throws an exception or returns <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['ColorLed']['get_module']={syn:'Gets the <tt>YModule</tt> object for the device on which the function is located.',lib:'colorled.get_module()',pro:'def get_module()',cmt:'<p>Gets the <tt>YModule</tt> object for the device on which the function is located. If the function cannot be located on any module, the returned instance of <tt>YModule</tt> is not shown as on-line.</p>',ret:'an instance of <tt>YModule</tt>'};
+doc['ColorLed']['get_rgbColor']={syn:'Returns the current RGB color of the LED.',lib:'colorled.get_rgbColor()',pro:'def get_rgbColor()',cmt:'<p>Returns the current RGB color of the LED.</p>',ret:'an integer corresponding to the current RGB color of the LED',ext:'On failure, throws an exception or returns <tt>Y_RGBCOLOR_INVALID</tt>.'};
+doc['ColorLed']['get_rgbColorAtPowerOn']={syn:'Returns the configured color to be displayed when the module is turned on.',lib:'colorled.get_rgbColorAtPowerOn()',pro:'def get_rgbColorAtPowerOn()',cmt:'<p>Returns the configured color to be displayed when the module is turned on.</p>',ret:'an integer corresponding to the configured color to be displayed when the module is turned on',ext:'On failure, throws an exception or returns <tt>Y_RGBCOLORATPOWERON_INVALID</tt>.'};
+doc['ColorLed']['get_userData']={syn:'Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>.',lib:'colorled.get_userData()',pro:'def get_userData()',cmt:'<p>Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>. This attribute is never touched directly by the API, and is at disposal of the caller to store a context.</p>',ret:'the object stored previously by the caller.'};
+doc['ColorLed']['hslMove']={syn:'Performs a smooth transition in the HSL color space between the current color and a target color.',lib:'colorled.hslMove()',pro:'def hslMove(<span id=pn>hsl_target</span>, <span id=pn>ms_duration</span>)',cmt:'<p>Performs a smooth transition in the HSL color space between the current color and a target color.</p>',par:{hsl_target:'desired HSL color at the end of the transition',ms_duration:'duration of the transition, in millisecond'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['ColorLed']['isOnline']={syn:'Checks if the RGB LED is currently reachable, without raising any error.',lib:'colorled.isOnline()',pro:'def isOnline()',cmt:'<p>Checks if the RGB LED is currently reachable, without raising any error. If there is a cached value for the RGB LED in cache, that has not yet expired, the device is considered reachable. No exception is raised if there is an error while trying to contact the device hosting the RGB LED.</p>',ret:'<tt>true</tt> if the RGB LED can be reached, and <tt>false</tt> otherwise'};
+doc['ColorLed']['load']={syn:'Preloads the RGB LED cache with a specified validity duration.',lib:'colorled.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Preloads the RGB LED cache with a specified validity duration. By default, whenever accessing a device, all function attributes are kept in cache for the standard duration (5 ms). This method can be used to temporarily mark the cache as valid for a longer period, in order to reduce network traffic for instance.</p>',par:{msValidity:'an integer corresponding to the validity attributed to the loaded function parameters, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['ColorLed']['loadAttribute']={syn:'Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.',lib:'colorled.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'On failure, throws an exception or returns an empty string.'};
+doc['ColorLed']['muteValueCallbacks']={syn:'Disable the propagation of every new advertised value to the parent hub.',lib:'colorled.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>Disable the propagation of every new advertised value to the parent hub. You can use this function to save bandwidth and CPU on computers with limited resources, or to prevent unwanted invocations of the HTTP callback. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['ColorLed']['nextColorLed']={syn:'Continues the enumeration of RGB LEDs started using <tt>yFirstColorLed()</tt>.',lib:'colorled.nextColorLed()',pro:'def nextColorLed()',cmt:'<p>Continues the enumeration of RGB LEDs started using <tt>yFirstColorLed()</tt>.</p>',ret:'a pointer to a <tt>YColorLed</tt> object, corresponding to an RGB LED currently online, or a <tt>null</tt> pointer if there are no more RGB LEDs to enumerate.'};
+doc['ColorLed']['registerValueCallback']={syn:'Registers the callback function that is invoked on every change of advertised value.',lib:'colorled.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every change of advertised value. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and the character string describing the new advertised value.'}};
+doc['ColorLed']['resetBlinkSeq']={syn:'Resets the preprogrammed blinking sequence.',lib:'colorled.resetBlinkSeq()',pro:'def resetBlinkSeq()',cmt:'<p>Resets the preprogrammed blinking sequence.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds. On failure, throws an exception or returns a negative error code.'};
+doc['ColorLed']['rgbMove']={syn:'Performs a smooth transition in the RGB color space between the current color and a target color.',lib:'colorled.rgbMove()',pro:'def rgbMove(<span id=pn>rgb_target</span>, <span id=pn>ms_duration</span>)',cmt:'<p>Performs a smooth transition in the RGB color space between the current color and a target color.</p>',par:{rgb_target:'desired RGB color at the end of the transition',ms_duration:'duration of the transition, in millisecond'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['ColorLed']['set_hslColor']={syn:'Changes the current color of the LED, using a color HSL.',lib:'colorled.set_hslColor()',pro:'def set_hslColor(<span id=pn>newval</span>)',cmt:'<p>Changes the current color of the LED, using a color HSL. Encoding is done as follows: 0xHHSSLL.</p>',par:{newval:'an integer corresponding to the current color of the LED, using a color HSL'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['ColorLed']['set_logicalName']={syn:'Changes the logical name of the RGB LED.',lib:'colorled.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Changes the logical name of the RGB LED. You can use <tt>yCheckLogicalName()</tt> prior to this call to make sure that your parameter is valid. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the logical name of the RGB LED.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['ColorLed']['set_rgbColor']={syn:'Changes the current color of the LED, using an RGB color.',lib:'colorled.set_rgbColor()',pro:'def set_rgbColor(<span id=pn>newval</span>)',cmt:'<p>Changes the current color of the LED, using an RGB color. Encoding is done as follows: 0xRRGGBB.</p>',par:{newval:'an integer corresponding to the current color of the LED, using an RGB color'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['ColorLed']['set_rgbColorAtPowerOn']={syn:'Changes the color that the LED will display by default when the module is turned on.',lib:'colorled.set_rgbColorAtPowerOn()',pro:'def set_rgbColorAtPowerOn(<span id=pn>newval</span>)',cmt:'<p>Changes the color that the LED will display by default when the module is turned on.</p>',par:{newval:'an integer corresponding to the color that the LED will display by default when the module is turned on'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['ColorLed']['set_userData']={syn:'Stores a user context provided as argument in the userData attribute of the function.',lib:'colorled.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Stores a user context provided as argument in the userData attribute of the function. This attribute is never touched by the API, and is at disposal of the caller to store a context.</p>',par:{data:'any kind of object to be stored'}};
+doc['ColorLed']['startBlinkSeq']={syn:'Starts the preprogrammed blinking sequence.',lib:'colorled.startBlinkSeq()',pro:'def startBlinkSeq()',cmt:'<p>Starts the preprogrammed blinking sequence. The sequence is run in a loop until it is stopped by stopBlinkSeq or an explicit change.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds. On failure, throws an exception or returns a negative error code.'};
+doc['ColorLed']['stopBlinkSeq']={syn:'Stops the preprogrammed blinking sequence.',lib:'colorled.stopBlinkSeq()',pro:'def stopBlinkSeq()',cmt:'<p>Stops the preprogrammed blinking sequence.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds. On failure, throws an exception or returns a negative error code.'};
+doc['ColorLed']['unmuteValueCallbacks']={syn:'Re-enable the propagation of every new advertised value to the parent hub.',lib:'colorled.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>Re-enable the propagation of every new advertised value to the parent hub. This function reverts the effect of a previous call to <tt>muteValueCallbacks()</tt>. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+//--- (end of generated code: ColorLed)
+//--- (generated code: Temperature)
+doc['Temperature']={'':{syn:'Temperature function interface',inc:'from yocto_temperature import *',cmt:'<p>The Yoctopuce class YTemperature allows you to read and configure Yoctopuce temperature sensors. It inherits from YSensor class the core functions to read measurements, register callback functions, access to the autonomous datalogger. This class adds the ability to configure some specific parameters for some sensors (connection type, temperature mapping table).</p>'}};
+doc['Temperature']['FindTemperature']={syn:'Retrieves a temperature sensor for a given identifier.',lib:'YTemperature.FindTemperature()',pro:'def FindTemperature(<span id=pn>func</span>)',cmt:'<p>Retrieves a temperature sensor for a given identifier. The identifier can be specified using several formats:<br> <ul> <li>FunctionLogicalName</li> <li>ModuleSerialNumber.FunctionIdentifier</li> <li>ModuleSerialNumber.FunctionLogicalName</li> <li>ModuleLogicalName.FunctionIdentifier</li> <li>ModuleLogicalName.FunctionLogicalName</li> </ul></p><p> This function does not require that the temperature sensor is online at the time it is invoked. The returned object is nevertheless valid. Use the method <tt>YTemperature.isOnline()</tt> to test if the temperature sensor is indeed online at a given time. In case of ambiguity when looking for a temperature sensor by logical name, no error is notified: the first instance found is returned. The search is performed first by hardware name, then by logical name.</p>',par:{func:'a string that uniquely characterizes the temperature sensor'},ret:'a <tt>YTemperature</tt> object allowing you to drive the temperature sensor.'};
+doc['Temperature']['FirstTemperature']={syn:'Starts the enumeration of temperature sensors currently accessible.',lib:'YTemperature.FirstTemperature()',pro:'def FirstTemperature()',cmt:'<p>Starts the enumeration of temperature sensors currently accessible. Use the method <tt>YTemperature.nextTemperature()</tt> to iterate on next temperature sensors.</p>',ret:'a pointer to a <tt>YTemperature</tt> object, corresponding to the first temperature sensor currently online, or a <tt>null</tt> pointer if there are none.'};
+doc['Temperature']['calibrateFromPoints']={syn:'Configures error correction data points, in particular to compensate for a possible perturbation of the measure caused by an enclosure.',lib:'temperature.calibrateFromPoints()',pro:'def calibrateFromPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Configures error correction data points, in particular to compensate for a possible perturbation of the measure caused by an enclosure. It is possible to configure up to five correction points. Correction points must be provided in ascending order, and be in the range of the sensor. The device will automatically perform a linear interpolation of the error correction between specified points. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p><p> For more information on advanced capabilities to refine the calibration of sensors, please contact support@yoctopuce.com.</p>',par:{rawValues:'array of floating point numbers, corresponding to the raw values returned by the sensor for the correction points.',refValues:'array of floating point numbers, corresponding to the corrected values for the correction points.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Temperature']['clearCache']={syn:'Invalidates the cache.',lib:'temperature.clearCache()',pro:'def clearCache()',cmt:'<p>Invalidates the cache. Invalidates the cache of the temperature sensor attributes. Forces the next call to get_xxx() or loadxxx() to use values that come from the device.</p>'};
+doc['Temperature']['describe']={syn:'Returns a short text that describes unambiguously the instance of the temperature sensor in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'temperature.describe()',pro:'def describe()',cmt:'<p>Returns a short text that describes unambiguously the instance of the temperature sensor in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. More precisely, <tt>TYPE</tt> is the type of the function, <tt>NAME</tt> it the name used for the first access to the function, <tt>SERIAL</tt> is the serial number of the module if the module is connected or <tt>\x22unresolved\x22</tt>, and <tt>FUNCTIONID</tt> is the hardware identifier of the function if the module is connected. For example, this method returns <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> if the module is already connected or <tt>Relay(BadCustomeName.relay1)=unresolved</tt> if the module has not yet been connected. This method does not trigger any USB or TCP transaction and can therefore be used in a debugger.</p>',ret:'a string that describes the temperature sensor (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['Temperature']['get_advertisedValue']={syn:'Returns the current value of the temperature sensor (no more than 6 characters).',lib:'temperature.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Returns the current value of the temperature sensor (no more than 6 characters).</p>',ret:'a string corresponding to the current value of the temperature sensor (no more than 6 characters).',ext:'On failure, throws an exception or returns <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['Temperature']['get_currentRawValue']={syn:'Returns the uncalibrated, unrounded raw value returned by the sensor, in Celsius, as a floating point number.',lib:'temperature.get_currentRawValue()',pro:'def get_currentRawValue()',cmt:'<p>Returns the uncalibrated, unrounded raw value returned by the sensor, in Celsius, as a floating point number.</p>',ret:'a floating point number corresponding to the uncalibrated, unrounded raw value returned by the sensor, in Celsius, as a floating point number',ext:'On failure, throws an exception or returns <tt>Y_CURRENTRAWVALUE_INVALID</tt>.'};
+doc['Temperature']['get_currentValue']={syn:'Returns the current value of the temperature, in Celsius, as a floating point number.',lib:'temperature.get_currentValue()',pro:'def get_currentValue()',cmt:'<p>Returns the current value of the temperature, in Celsius, as a floating point number.</p>',ret:'a floating point number corresponding to the current value of the temperature, in Celsius, as a floating point number',ext:'On failure, throws an exception or returns <tt>Y_CURRENTVALUE_INVALID</tt>.'};
+doc['Temperature']['get_errorMessage']={syn:'Returns the error message of the latest error with the temperature sensor.',lib:'temperature.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Returns the error message of the latest error with the temperature sensor. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a string corresponding to the latest error message that occured while using the temperature sensor object'};
+doc['Temperature']['get_errorType']={syn:'Returns the numerical error code of the latest error with the temperature sensor.',lib:'temperature.get_errorType()',pro:'def get_errorType()',cmt:'<p>Returns the numerical error code of the latest error with the temperature sensor. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a number corresponding to the code of the latest error that occurred while using the temperature sensor object'};
+doc['Temperature']['get_friendlyName']={syn:'Returns a global identifier of the temperature sensor in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>.',lib:'temperature.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Returns a global identifier of the temperature sensor in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>. The returned string uses the logical names of the module and of the temperature sensor if they are defined, otherwise the serial number of the module and the hardware identifier of the temperature sensor (for example: <tt>MyCustomName.relay1</tt>)</p>',ret:'a string that uniquely identifies the temperature sensor using logical names (ex: <tt>MyCustomName.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['Temperature']['get_functionDescriptor']={syn:'Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function.',lib:'temperature.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function. This identifier can be used to test if two instances of <tt>YFunction</tt> reference the same physical function on the same physical device.</p>',ret:'an identifier of type <tt>YFUN_DESCR</tt>.',ext:'If the function has never been contacted, the returned value is <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>.'};
+doc['Temperature']['get_functionId']={syn:'Returns the hardware identifier of the temperature sensor, without reference to the module.',lib:'temperature.get_functionId()',pro:'def get_functionId()',cmt:'<p>Returns the hardware identifier of the temperature sensor, without reference to the module. For example <tt>relay1</tt></p>',ret:'a string that identifies the temperature sensor (ex: <tt>relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['Temperature']['get_hardwareId']={syn:'Returns the unique hardware identifier of the temperature sensor in the form <tt>SERIAL.FUNCTIONID</tt>.',lib:'temperature.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Returns the unique hardware identifier of the temperature sensor in the form <tt>SERIAL.FUNCTIONID</tt>. The unique hardware identifier is composed of the device serial number and of the hardware identifier of the temperature sensor (for example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'a string that uniquely identifies the temperature sensor (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['Temperature']['get_highestValue']={syn:'Returns the maximal value observed for the temperature since the device was started.',lib:'temperature.get_highestValue()',pro:'def get_highestValue()',cmt:'<p>Returns the maximal value observed for the temperature since the device was started.</p>',ret:'a floating point number corresponding to the maximal value observed for the temperature since the device was started',ext:'On failure, throws an exception or returns <tt>Y_HIGHESTVALUE_INVALID</tt>.'};
+doc['Temperature']['get_logFrequency']={syn:'Returns the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory.',lib:'temperature.get_logFrequency()',pro:'def get_logFrequency()',cmt:'<p>Returns the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory.</p>',ret:'a string corresponding to the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory',ext:'On failure, throws an exception or returns <tt>Y_LOGFREQUENCY_INVALID</tt>.'};
+doc['Temperature']['get_logicalName']={syn:'Returns the logical name of the temperature sensor.',lib:'temperature.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Returns the logical name of the temperature sensor.</p>',ret:'a string corresponding to the logical name of the temperature sensor.',ext:'On failure, throws an exception or returns <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['Temperature']['get_lowestValue']={syn:'Returns the minimal value observed for the temperature since the device was started.',lib:'temperature.get_lowestValue()',pro:'def get_lowestValue()',cmt:'<p>Returns the minimal value observed for the temperature since the device was started.</p>',ret:'a floating point number corresponding to the minimal value observed for the temperature since the device was started',ext:'On failure, throws an exception or returns <tt>Y_LOWESTVALUE_INVALID</tt>.'};
+doc['Temperature']['get_module']={syn:'Gets the <tt>YModule</tt> object for the device on which the function is located.',lib:'temperature.get_module()',pro:'def get_module()',cmt:'<p>Gets the <tt>YModule</tt> object for the device on which the function is located. If the function cannot be located on any module, the returned instance of <tt>YModule</tt> is not shown as on-line.</p>',ret:'an instance of <tt>YModule</tt>'};
+doc['Temperature']['get_recordedData']={syn:'Retrieves a DataSet object holding historical data for this sensor, for a specified time interval.',lib:'temperature.get_recordedData()',pro:'def get_recordedData(<span id=pn>startTime</span>, <span id=pn>endTime</span>)',cmt:'<p>Retrieves a DataSet object holding historical data for this sensor, for a specified time interval. The measures will be retrieved from the data logger, which must have been turned on at the desired time. See the documentation of the DataSet class for information on how to get an overview of the recorded data, and how to load progressively a large set of measures from the data logger.</p><p> This function only works if the device uses a recent firmware, as DataSet objects are not supported by firmwares older than version 13000.</p>',par:{startTime:'the start of the desired measure time interval, as a Unix timestamp, i.e. the number of seconds since January 1, 1970 UTC. The special value 0 can be used to include any meaasure, without initial limit.',endTime:'the end of the desired measure time interval, as a Unix timestamp, i.e. the number of seconds since January 1, 1970 UTC. The special value 0 can be used to include any meaasure, without ending limit.'},ret:'an instance of YDataSet, providing access to historical data. Past measures can be loaded progressively using methods from the YDataSet object.'};
+doc['Temperature']['get_reportFrequency']={syn:'Returns the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function.',lib:'temperature.get_reportFrequency()',pro:'def get_reportFrequency()',cmt:'<p>Returns the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function.</p>',ret:'a string corresponding to the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function',ext:'On failure, throws an exception or returns <tt>Y_REPORTFREQUENCY_INVALID</tt>.'};
+doc['Temperature']['get_resolution']={syn:'Returns the resolution of the measured values.',lib:'temperature.get_resolution()',pro:'def get_resolution()',cmt:'<p>Returns the resolution of the measured values. The resolution corresponds to the numerical precision of the measures, which is not always the same as the actual precision of the sensor.</p>',ret:'a floating point number corresponding to the resolution of the measured values',ext:'On failure, throws an exception or returns <tt>Y_RESOLUTION_INVALID</tt>.'};
+doc['Temperature']['get_sensorState']={syn:'Returns the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now.',lib:'temperature.get_sensorState()',pro:'def get_sensorState()',cmt:'<p>Returns the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now.</p>',ret:'an integer corresponding to the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now',ext:'On failure, throws an exception or returns <tt>Y_SENSORSTATE_INVALID</tt>.'};
+doc['Temperature']['get_sensorType']={syn:'Returns the temperature sensor type.',lib:'temperature.get_sensorType()',pro:'def get_sensorType()',cmt:'<p>Returns the temperature sensor type.</p>',ret:'a value among <tt>Y_SENSORTYPE_DIGITAL</tt>, <tt>Y_SENSORTYPE_TYPE_K</tt>, <tt>Y_SENSORTYPE_TYPE_E</tt>, <tt>Y_SENSORTYPE_TYPE_J</tt>, <tt>Y_SENSORTYPE_TYPE_N</tt>, <tt>Y_SENSORTYPE_TYPE_R</tt>, <tt>Y_SENSORTYPE_TYPE_S</tt>, <tt>Y_SENSORTYPE_TYPE_T</tt>, <tt>Y_SENSORTYPE_PT100_4WIRES</tt>, <tt>Y_SENSORTYPE_PT100_3WIRES</tt>, <tt>Y_SENSORTYPE_PT100_2WIRES</tt>, <tt>Y_SENSORTYPE_RES_OHM</tt>, <tt>Y_SENSORTYPE_RES_NTC</tt> and <tt>Y_SENSORTYPE_RES_LINEAR</tt> corresponding to the temperature sensor type',ext:'On failure, throws an exception or returns <tt>Y_SENSORTYPE_INVALID</tt>.'};
+doc['Temperature']['get_signalUnit']={syn:'Returns the measuring unit of the electrical signal used by the sensor.',lib:'temperature.get_signalUnit()',pro:'def get_signalUnit()',cmt:'<p>Returns the measuring unit of the electrical signal used by the sensor.</p>',ret:'a string corresponding to the measuring unit of the electrical signal used by the sensor',ext:'On failure, throws an exception or returns <tt>Y_SIGNALUNIT_INVALID</tt>.'};
+doc['Temperature']['get_signalValue']={syn:'Returns the current value of the electrical signal measured by the sensor.',lib:'temperature.get_signalValue()',pro:'def get_signalValue()',cmt:'<p>Returns the current value of the electrical signal measured by the sensor.</p>',ret:'a floating point number corresponding to the current value of the electrical signal measured by the sensor',ext:'On failure, throws an exception or returns <tt>Y_SIGNALVALUE_INVALID</tt>.'};
+doc['Temperature']['get_unit']={syn:'Returns the measuring unit for the temperature.',lib:'temperature.get_unit()',pro:'def get_unit()',cmt:'<p>Returns the measuring unit for the temperature.</p>',ret:'a string corresponding to the measuring unit for the temperature',ext:'On failure, throws an exception or returns <tt>Y_UNIT_INVALID</tt>.'};
+doc['Temperature']['get_userData']={syn:'Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>.',lib:'temperature.get_userData()',pro:'def get_userData()',cmt:'<p>Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>. This attribute is never touched directly by the API, and is at disposal of the caller to store a context.</p>',ret:'the object stored previously by the caller.'};
+doc['Temperature']['isOnline']={syn:'Checks if the temperature sensor is currently reachable, without raising any error.',lib:'temperature.isOnline()',pro:'def isOnline()',cmt:'<p>Checks if the temperature sensor is currently reachable, without raising any error. If there is a cached value for the temperature sensor in cache, that has not yet expired, the device is considered reachable. No exception is raised if there is an error while trying to contact the device hosting the temperature sensor.</p>',ret:'<tt>true</tt> if the temperature sensor can be reached, and <tt>false</tt> otherwise'};
+doc['Temperature']['load']={syn:'Preloads the temperature sensor cache with a specified validity duration.',lib:'temperature.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Preloads the temperature sensor cache with a specified validity duration. By default, whenever accessing a device, all function attributes are kept in cache for the standard duration (5 ms). This method can be used to temporarily mark the cache as valid for a longer period, in order to reduce network traffic for instance.</p>',par:{msValidity:'an integer corresponding to the validity attributed to the loaded function parameters, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Temperature']['loadAttribute']={syn:'Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.',lib:'temperature.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'On failure, throws an exception or returns an empty string.'};
+doc['Temperature']['loadCalibrationPoints']={syn:'Retrieves error correction data points previously entered using the method <tt>calibrateFromPoints</tt>.',lib:'temperature.loadCalibrationPoints()',pro:'def loadCalibrationPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Retrieves error correction data points previously entered using the method <tt>calibrateFromPoints</tt>.</p>',par:{rawValues:'array of floating point numbers, that will be filled by the function with the raw sensor values for the correction points.',refValues:'array of floating point numbers, that will be filled by the function with the desired values for the correction points.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Temperature']['loadThermistorResponseTable']={syn:'Retrieves the thermistor response table previously configured using the <tt>set_thermistorResponseTable</tt> function.',lib:'temperature.loadThermistorResponseTable()',pro:'def loadThermistorResponseTable(<span id=pn>tempValues</span>, <span id=pn>resValues</span>)',cmt:'<p>Retrieves the thermistor response table previously configured using the <tt>set_thermistorResponseTable</tt> function. This function can only be used with a temperature sensor based on thermistors.</p>',par:{tempValues:'array of floating point numbers, that is filled by the function with all temperatures (in degrees Celcius) for which the resistance of the thermistor is specified.',resValues:'array of floating point numbers, that is filled by the function with the value (in Ohms) for each of the temperature included in the first argument, index by index.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Temperature']['muteValueCallbacks']={syn:'Disable the propagation of every new advertised value to the parent hub.',lib:'temperature.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>Disable the propagation of every new advertised value to the parent hub. You can use this function to save bandwidth and CPU on computers with limited resources, or to prevent unwanted invocations of the HTTP callback. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Temperature']['nextTemperature']={syn:'Continues the enumeration of temperature sensors started using <tt>yFirstTemperature()</tt>.',lib:'temperature.nextTemperature()',pro:'def nextTemperature()',cmt:'<p>Continues the enumeration of temperature sensors started using <tt>yFirstTemperature()</tt>.</p>',ret:'a pointer to a <tt>YTemperature</tt> object, corresponding to a temperature sensor currently online, or a <tt>null</tt> pointer if there are no more temperature sensors to enumerate.'};
+doc['Temperature']['registerTimedReportCallback']={syn:'Registers the callback function that is invoked on every periodic timed notification.',lib:'temperature.registerTimedReportCallback()',pro:'def registerTimedReportCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every periodic timed notification. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and an YMeasure object describing the new advertised value.'}};
+doc['Temperature']['registerValueCallback']={syn:'Registers the callback function that is invoked on every change of advertised value.',lib:'temperature.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every change of advertised value. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and the character string describing the new advertised value.'}};
+doc['Temperature']['set_highestValue']={syn:'Changes the recorded maximal value observed.',lib:'temperature.set_highestValue()',pro:'def set_highestValue(<span id=pn>newval</span>)',cmt:'<p>Changes the recorded maximal value observed.</p>',par:{newval:'a floating point number corresponding to the recorded maximal value observed'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Temperature']['set_logFrequency']={syn:'Changes the datalogger recording frequency for this function.',lib:'temperature.set_logFrequency()',pro:'def set_logFrequency(<span id=pn>newval</span>)',cmt:'<p>Changes the datalogger recording frequency for this function. The frequency can be specified as samples per second, as sample per minute (for instance \x2215/m\x22) or in samples per hour (eg. \x224/h\x22). To disable recording for this function, use the value \x22OFF\x22.</p>',par:{newval:'a string corresponding to the datalogger recording frequency for this function'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Temperature']['set_logicalName']={syn:'Changes the logical name of the temperature sensor.',lib:'temperature.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Changes the logical name of the temperature sensor. You can use <tt>yCheckLogicalName()</tt> prior to this call to make sure that your parameter is valid. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the logical name of the temperature sensor.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Temperature']['set_lowestValue']={syn:'Changes the recorded minimal value observed.',lib:'temperature.set_lowestValue()',pro:'def set_lowestValue(<span id=pn>newval</span>)',cmt:'<p>Changes the recorded minimal value observed.</p>',par:{newval:'a floating point number corresponding to the recorded minimal value observed'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Temperature']['set_ntcParameters']={syn:'Configure NTC thermistor parameters in order to properly compute the temperature from the measured resistance.',lib:'temperature.set_ntcParameters()',pro:'def set_ntcParameters(<span id=pn>res25</span>, <span id=pn>beta</span>)',cmt:'<p>Configure NTC thermistor parameters in order to properly compute the temperature from the measured resistance. For increased precision, you can enter a complete mapping table using set_thermistorResponseTable. This function can only be used with a temperature sensor based on thermistors.</p>',par:{res25:'thermistor resistance at 25 degrees Celsius',beta:'Beta value'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Temperature']['set_reportFrequency']={syn:'Changes the timed value notification frequency for this function.',lib:'temperature.set_reportFrequency()',pro:'def set_reportFrequency(<span id=pn>newval</span>)',cmt:'<p>Changes the timed value notification frequency for this function. The frequency can be specified as samples per second, as sample per minute (for instance \x2215/m\x22) or in samples per hour (eg. \x224/h\x22). To disable timed value notifications for this function, use the value \x22OFF\x22.</p>',par:{newval:'a string corresponding to the timed value notification frequency for this function'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Temperature']['set_resolution']={syn:'Changes the resolution of the measured physical values.',lib:'temperature.set_resolution()',pro:'def set_resolution(<span id=pn>newval</span>)',cmt:'<p>Changes the resolution of the measured physical values. The resolution corresponds to the numerical precision when displaying value. It does not change the precision of the measure itself.</p>',par:{newval:'a floating point number corresponding to the resolution of the measured physical values'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Temperature']['set_sensorType']={syn:'Modifies the temperature sensor type.',lib:'temperature.set_sensorType()',pro:'def set_sensorType(<span id=pn>newval</span>)',cmt:'<p>Modifies the temperature sensor type. This function is used to define the type of thermocouple (K,E...) used with the device. It has no effect if module is using a digital sensor or a thermistor. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a value among <tt>Y_SENSORTYPE_DIGITAL</tt>, <tt>Y_SENSORTYPE_TYPE_K</tt>, <tt>Y_SENSORTYPE_TYPE_E</tt>, <tt>Y_SENSORTYPE_TYPE_J</tt>, <tt>Y_SENSORTYPE_TYPE_N</tt>, <tt>Y_SENSORTYPE_TYPE_R</tt>, <tt>Y_SENSORTYPE_TYPE_S</tt>, <tt>Y_SENSORTYPE_TYPE_T</tt>, <tt>Y_SENSORTYPE_PT100_4WIRES</tt>, <tt>Y_SENSORTYPE_PT100_3WIRES</tt>, <tt>Y_SENSORTYPE_PT100_2WIRES</tt>, <tt>Y_SENSORTYPE_RES_OHM</tt>, <tt>Y_SENSORTYPE_RES_NTC</tt> and <tt>Y_SENSORTYPE_RES_LINEAR</tt>'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Temperature']['set_thermistorResponseTable']={syn:'Records a thermistor response table, in order to interpolate the temperature from the measured resistance.',lib:'temperature.set_thermistorResponseTable()',pro:'def set_thermistorResponseTable(<span id=pn>tempValues</span>, <span id=pn>resValues</span>)',cmt:'<p>Records a thermistor response table, in order to interpolate the temperature from the measured resistance. This function can only be used with a temperature sensor based on thermistors.</p>',par:{tempValues:'array of floating point numbers, corresponding to all temperatures (in degrees Celcius) for which the resistance of the thermistor is specified.',resValues:'array of floating point numbers, corresponding to the resistance values (in Ohms) for each of the temperature included in the first argument, index by index.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Temperature']['set_unit']={syn:'Changes the measuring unit for the measured temperature.',lib:'temperature.set_unit()',pro:'def set_unit(<span id=pn>newval</span>)',cmt:'<p>Changes the measuring unit for the measured temperature. That unit is a string. If that strings end with the letter F all temperatures values will returned in Fahrenheit degrees. If that String ends with the letter K all values will be returned in Kelvin degrees. If that string ends with the letter C all values will be returned in Celsius degrees. If the string ends with any other character the change will be ignored. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept. WARNING: if a specific calibration is defined for the temperature function, a unit system change will probably break it.</p>',par:{newval:'a string corresponding to the measuring unit for the measured temperature'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Temperature']['set_userData']={syn:'Stores a user context provided as argument in the userData attribute of the function.',lib:'temperature.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Stores a user context provided as argument in the userData attribute of the function. This attribute is never touched by the API, and is at disposal of the caller to store a context.</p>',par:{data:'any kind of object to be stored'}};
+doc['Temperature']['startDataLogger']={syn:'Starts the data logger on the device.',lib:'temperature.startDataLogger()',pro:'def startDataLogger()',cmt:'<p>Starts the data logger on the device. Note that the data logger will only save the measures on this sensor if the logFrequency is not set to \x22OFF\x22.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.'};
+doc['Temperature']['stopDataLogger']={syn:'Stops the datalogger on the device.',lib:'temperature.stopDataLogger()',pro:'def stopDataLogger()',cmt:'<p>Stops the datalogger on the device.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.'};
+doc['Temperature']['unmuteValueCallbacks']={syn:'Re-enable the propagation of every new advertised value to the parent hub.',lib:'temperature.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>Re-enable the propagation of every new advertised value to the parent hub. This function reverts the effect of a previous call to <tt>muteValueCallbacks()</tt>. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+//--- (end of generated code: Temperature)
+//--- (generated code: DataLogger)
+doc['DataLogger']={'':{syn:'DataLogger function interface',inc:'from yocto_datalogger import *',cmt:'<p>Yoctopuce sensors include a non-volatile memory capable of storing ongoing measured data automatically, without requiring a permanent connection to a computer. The DataLogger function controls the global parameters of the internal data logger.</p>'}};
+doc['DataLogger']['FindDataLogger']={syn:'Retrieves a data logger for a given identifier.',lib:'YDataLogger.FindDataLogger()',pro:'def FindDataLogger(<span id=pn>func</span>)',cmt:'<p>Retrieves a data logger for a given identifier. The identifier can be specified using several formats:<br> <ul> <li>FunctionLogicalName</li> <li>ModuleSerialNumber.FunctionIdentifier</li> <li>ModuleSerialNumber.FunctionLogicalName</li> <li>ModuleLogicalName.FunctionIdentifier</li> <li>ModuleLogicalName.FunctionLogicalName</li> </ul></p><p> This function does not require that the data logger is online at the time it is invoked. The returned object is nevertheless valid. Use the method <tt>YDataLogger.isOnline()</tt> to test if the data logger is indeed online at a given time. In case of ambiguity when looking for a data logger by logical name, no error is notified: the first instance found is returned. The search is performed first by hardware name, then by logical name.</p>',par:{func:'a string that uniquely characterizes the data logger'},ret:'a <tt>YDataLogger</tt> object allowing you to drive the data logger.'};
+doc['DataLogger']['FirstDataLogger']={syn:'Starts the enumeration of data loggers currently accessible.',lib:'YDataLogger.FirstDataLogger()',pro:'def FirstDataLogger()',cmt:'<p>Starts the enumeration of data loggers currently accessible. Use the method <tt>YDataLogger.nextDataLogger()</tt> to iterate on next data loggers.</p>',ret:'a pointer to a <tt>YDataLogger</tt> object, corresponding to the first data logger currently online, or a <tt>null</tt> pointer if there are none.'};
+doc['DataLogger']['clearCache']={syn:'Invalidates the cache.',lib:'datalogger.clearCache()',pro:'def clearCache()',cmt:'<p>Invalidates the cache. Invalidates the cache of the data logger attributes. Forces the next call to get_xxx() or loadxxx() to use values that come from the device.</p>'};
+doc['DataLogger']['describe']={syn:'Returns a short text that describes unambiguously the instance of the data logger in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'datalogger.describe()',pro:'def describe()',cmt:'<p>Returns a short text that describes unambiguously the instance of the data logger in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. More precisely, <tt>TYPE</tt> is the type of the function, <tt>NAME</tt> it the name used for the first access to the function, <tt>SERIAL</tt> is the serial number of the module if the module is connected or <tt>\x22unresolved\x22</tt>, and <tt>FUNCTIONID</tt> is the hardware identifier of the function if the module is connected. For example, this method returns <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> if the module is already connected or <tt>Relay(BadCustomeName.relay1)=unresolved</tt> if the module has not yet been connected. This method does not trigger any USB or TCP transaction and can therefore be used in a debugger.</p>',ret:'a string that describes the data logger (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['DataLogger']['forgetAllDataStreams']={syn:'Clears the data logger memory and discards all recorded data streams.',lib:'datalogger.forgetAllDataStreams()',pro:'def forgetAllDataStreams()',cmt:'<p>Clears the data logger memory and discards all recorded data streams. This method also resets the current run index to zero.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['DataLogger']['get_advertisedValue']={syn:'Returns the current value of the data logger (no more than 6 characters).',lib:'datalogger.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Returns the current value of the data logger (no more than 6 characters).</p>',ret:'a string corresponding to the current value of the data logger (no more than 6 characters).',ext:'On failure, throws an exception or returns <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['DataLogger']['get_autoStart']={syn:'Returns the default activation state of the data logger on power up.',lib:'datalogger.get_autoStart()',pro:'def get_autoStart()',cmt:'<p>Returns the default activation state of the data logger on power up.</p>',ret:'either <tt>Y_AUTOSTART_OFF</tt> or <tt>Y_AUTOSTART_ON</tt>, according to the default activation state of the data logger on power up',ext:'On failure, throws an exception or returns <tt>Y_AUTOSTART_INVALID</tt>.'};
+doc['DataLogger']['get_beaconDriven']={syn:'Return true if the data logger is synchronised with the localization beacon.',lib:'datalogger.get_beaconDriven()',pro:'def get_beaconDriven()',cmt:'<p>Return true if the data logger is synchronised with the localization beacon.</p>',ret:'either <tt>Y_BEACONDRIVEN_OFF</tt> or <tt>Y_BEACONDRIVEN_ON</tt>',ext:'On failure, throws an exception or returns <tt>Y_BEACONDRIVEN_INVALID</tt>.'};
+doc['DataLogger']['get_currentRunIndex']={syn:'Returns the current run number, corresponding to the number of times the module was powered on with the dataLogger enabled at some point.',lib:'datalogger.get_currentRunIndex()',pro:'def get_currentRunIndex()',cmt:'<p>Returns the current run number, corresponding to the number of times the module was powered on with the dataLogger enabled at some point.</p>',ret:'an integer corresponding to the current run number, corresponding to the number of times the module was powered on with the dataLogger enabled at some point',ext:'On failure, throws an exception or returns <tt>Y_CURRENTRUNINDEX_INVALID</tt>.'};
+doc['DataLogger']['get_dataSets']={syn:'Returns a list of YDataSet objects that can be used to retrieve all measures stored by the data logger.',lib:'datalogger.get_dataSets()',pro:'def get_dataSets()',cmt:'<p>Returns a list of YDataSet objects that can be used to retrieve all measures stored by the data logger.</p><p> This function only works if the device uses a recent firmware, as YDataSet objects are not supported by firmwares older than version 13000.</p>',ret:'a list of YDataSet object.',ext:'On failure, throws an exception or returns an empty list.'};
+doc['DataLogger']['get_dataStreams']={syn:'Builds a list of all data streams hold by the data logger (legacy method).',lib:'datalogger.get_dataStreams()',pro:'def get_dataStreams(<span id=pn>v</span>)',cmt:'<p>Builds a list of all data streams hold by the data logger (legacy method). The caller must pass by reference an empty array to hold YDataStream objects, and the function fills it with objects describing available data sequences.</p><p> This is the old way to retrieve data from the DataLogger. For new applications, you should rather use <tt>get_dataSets()</tt> method, or call directly <tt>get_recordedData()</tt> on the sensor object.</p>',par:{v:'an array of YDataStream objects to be filled in'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['DataLogger']['get_errorMessage']={syn:'Returns the error message of the latest error with the data logger.',lib:'datalogger.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Returns the error message of the latest error with the data logger. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a string corresponding to the latest error message that occured while using the data logger object'};
+doc['DataLogger']['get_errorType']={syn:'Returns the numerical error code of the latest error with the data logger.',lib:'datalogger.get_errorType()',pro:'def get_errorType()',cmt:'<p>Returns the numerical error code of the latest error with the data logger. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a number corresponding to the code of the latest error that occurred while using the data logger object'};
+doc['DataLogger']['get_friendlyName']={syn:'Returns a global identifier of the data logger in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>.',lib:'datalogger.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Returns a global identifier of the data logger in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>. The returned string uses the logical names of the module and of the data logger if they are defined, otherwise the serial number of the module and the hardware identifier of the data logger (for example: <tt>MyCustomName.relay1</tt>)</p>',ret:'a string that uniquely identifies the data logger using logical names (ex: <tt>MyCustomName.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['DataLogger']['get_functionDescriptor']={syn:'Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function.',lib:'datalogger.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function. This identifier can be used to test if two instances of <tt>YFunction</tt> reference the same physical function on the same physical device.</p>',ret:'an identifier of type <tt>YFUN_DESCR</tt>.',ext:'If the function has never been contacted, the returned value is <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>.'};
+doc['DataLogger']['get_functionId']={syn:'Returns the hardware identifier of the data logger, without reference to the module.',lib:'datalogger.get_functionId()',pro:'def get_functionId()',cmt:'<p>Returns the hardware identifier of the data logger, without reference to the module. For example <tt>relay1</tt></p>',ret:'a string that identifies the data logger (ex: <tt>relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['DataLogger']['get_hardwareId']={syn:'Returns the unique hardware identifier of the data logger in the form <tt>SERIAL.FUNCTIONID</tt>.',lib:'datalogger.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Returns the unique hardware identifier of the data logger in the form <tt>SERIAL.FUNCTIONID</tt>. The unique hardware identifier is composed of the device serial number and of the hardware identifier of the data logger (for example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'a string that uniquely identifies the data logger (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['DataLogger']['get_logicalName']={syn:'Returns the logical name of the data logger.',lib:'datalogger.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Returns the logical name of the data logger.</p>',ret:'a string corresponding to the logical name of the data logger.',ext:'On failure, throws an exception or returns <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['DataLogger']['get_module']={syn:'Gets the <tt>YModule</tt> object for the device on which the function is located.',lib:'datalogger.get_module()',pro:'def get_module()',cmt:'<p>Gets the <tt>YModule</tt> object for the device on which the function is located. If the function cannot be located on any module, the returned instance of <tt>YModule</tt> is not shown as on-line.</p>',ret:'an instance of <tt>YModule</tt>'};
+doc['DataLogger']['get_recording']={syn:'Returns the current activation state of the data logger.',lib:'datalogger.get_recording()',pro:'def get_recording()',cmt:'<p>Returns the current activation state of the data logger.</p>',ret:'a value among <tt>Y_RECORDING_OFF</tt>, <tt>Y_RECORDING_ON</tt> and <tt>Y_RECORDING_PENDING</tt> corresponding to the current activation state of the data logger',ext:'On failure, throws an exception or returns <tt>Y_RECORDING_INVALID</tt>.'};
+doc['DataLogger']['get_timeUTC']={syn:'Returns the Unix timestamp for current UTC time, if known.',lib:'datalogger.get_timeUTC()',pro:'def get_timeUTC()',cmt:'<p>Returns the Unix timestamp for current UTC time, if known.</p>',ret:'an integer corresponding to the Unix timestamp for current UTC time, if known',ext:'On failure, throws an exception or returns <tt>Y_TIMEUTC_INVALID</tt>.'};
+doc['DataLogger']['get_userData']={syn:'Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>.',lib:'datalogger.get_userData()',pro:'def get_userData()',cmt:'<p>Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>. This attribute is never touched directly by the API, and is at disposal of the caller to store a context.</p>',ret:'the object stored previously by the caller.'};
+doc['DataLogger']['isOnline']={syn:'Checks if the data logger is currently reachable, without raising any error.',lib:'datalogger.isOnline()',pro:'def isOnline()',cmt:'<p>Checks if the data logger is currently reachable, without raising any error. If there is a cached value for the data logger in cache, that has not yet expired, the device is considered reachable. No exception is raised if there is an error while trying to contact the device hosting the data logger.</p>',ret:'<tt>true</tt> if the data logger can be reached, and <tt>false</tt> otherwise'};
+doc['DataLogger']['load']={syn:'Preloads the data logger cache with a specified validity duration.',lib:'datalogger.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Preloads the data logger cache with a specified validity duration. By default, whenever accessing a device, all function attributes are kept in cache for the standard duration (5 ms). This method can be used to temporarily mark the cache as valid for a longer period, in order to reduce network traffic for instance.</p>',par:{msValidity:'an integer corresponding to the validity attributed to the loaded function parameters, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['DataLogger']['loadAttribute']={syn:'Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.',lib:'datalogger.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'On failure, throws an exception or returns an empty string.'};
+doc['DataLogger']['muteValueCallbacks']={syn:'Disable the propagation of every new advertised value to the parent hub.',lib:'datalogger.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>Disable the propagation of every new advertised value to the parent hub. You can use this function to save bandwidth and CPU on computers with limited resources, or to prevent unwanted invocations of the HTTP callback. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['DataLogger']['nextDataLogger']={syn:'Continues the enumeration of data loggers started using <tt>yFirstDataLogger()</tt>.',lib:'datalogger.nextDataLogger()',pro:'def nextDataLogger()',cmt:'<p>Continues the enumeration of data loggers started using <tt>yFirstDataLogger()</tt>.</p>',ret:'a pointer to a <tt>YDataLogger</tt> object, corresponding to a data logger currently online, or a <tt>null</tt> pointer if there are no more data loggers to enumerate.'};
+doc['DataLogger']['registerValueCallback']={syn:'Registers the callback function that is invoked on every change of advertised value.',lib:'datalogger.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every change of advertised value. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and the character string describing the new advertised value.'}};
+doc['DataLogger']['set_autoStart']={syn:'Changes the default activation state of the data logger on power up.',lib:'datalogger.set_autoStart()',pro:'def set_autoStart(<span id=pn>newval</span>)',cmt:'<p>Changes the default activation state of the data logger on power up. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'either <tt>Y_AUTOSTART_OFF</tt> or <tt>Y_AUTOSTART_ON</tt>, according to the default activation state of the data logger on power up'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['DataLogger']['set_beaconDriven']={syn:'Changes the type of synchronisation of the data logger.',lib:'datalogger.set_beaconDriven()',pro:'def set_beaconDriven(<span id=pn>newval</span>)',cmt:'<p>Changes the type of synchronisation of the data logger. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'either <tt>Y_BEACONDRIVEN_OFF</tt> or <tt>Y_BEACONDRIVEN_ON</tt>, according to the type of synchronisation of the data logger'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['DataLogger']['set_logicalName']={syn:'Changes the logical name of the data logger.',lib:'datalogger.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Changes the logical name of the data logger. You can use <tt>yCheckLogicalName()</tt> prior to this call to make sure that your parameter is valid. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the logical name of the data logger.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['DataLogger']['set_recording']={syn:'Changes the activation state of the data logger to start/stop recording data.',lib:'datalogger.set_recording()',pro:'def set_recording(<span id=pn>newval</span>)',cmt:'<p>Changes the activation state of the data logger to start/stop recording data.</p>',par:{newval:'a value among <tt>Y_RECORDING_OFF</tt>, <tt>Y_RECORDING_ON</tt> and <tt>Y_RECORDING_PENDING</tt> corresponding to the activation state of the data logger to start/stop recording data'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['DataLogger']['set_timeUTC']={syn:'Changes the current UTC time reference used for recorded data.',lib:'datalogger.set_timeUTC()',pro:'def set_timeUTC(<span id=pn>newval</span>)',cmt:'<p>Changes the current UTC time reference used for recorded data.</p>',par:{newval:'an integer corresponding to the current UTC time reference used for recorded data'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['DataLogger']['set_userData']={syn:'Stores a user context provided as argument in the userData attribute of the function.',lib:'datalogger.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Stores a user context provided as argument in the userData attribute of the function. This attribute is never touched by the API, and is at disposal of the caller to store a context.</p>',par:{data:'any kind of object to be stored'}};
+doc['DataLogger']['unmuteValueCallbacks']={syn:'Re-enable the propagation of every new advertised value to the parent hub.',lib:'datalogger.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>Re-enable the propagation of every new advertised value to the parent hub. This function reverts the effect of a previous call to <tt>muteValueCallbacks()</tt>. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+//--- (end of generated code: DataLogger)
+//--- (generated code: DualPower)
+doc['DualPower']={'':{syn:'External power supply control interface',inc:'from yocto_dualpower import *',cmt:'<p>Yoctopuce application programming interface allows you to control the power source to use for module functions that require high current. The module can also automatically disconnect the external power when a voltage drop is observed on the external power source (external battery running out of power).</p>'}};
+doc['DualPower']['FindDualPower']={syn:'Retrieves a dual power control for a given identifier.',lib:'YDualPower.FindDualPower()',pro:'def FindDualPower(<span id=pn>func</span>)',cmt:'<p>Retrieves a dual power control for a given identifier. The identifier can be specified using several formats:<br> <ul> <li>FunctionLogicalName</li> <li>ModuleSerialNumber.FunctionIdentifier</li> <li>ModuleSerialNumber.FunctionLogicalName</li> <li>ModuleLogicalName.FunctionIdentifier</li> <li>ModuleLogicalName.FunctionLogicalName</li> </ul></p><p> This function does not require that the power control is online at the time it is invoked. The returned object is nevertheless valid. Use the method <tt>YDualPower.isOnline()</tt> to test if the power control is indeed online at a given time. In case of ambiguity when looking for a dual power control by logical name, no error is notified: the first instance found is returned. The search is performed first by hardware name, then by logical name.</p>',par:{func:'a string that uniquely characterizes the power control'},ret:'a <tt>YDualPower</tt> object allowing you to drive the power control.'};
+doc['DualPower']['FirstDualPower']={syn:'Starts the enumeration of dual power controls currently accessible.',lib:'YDualPower.FirstDualPower()',pro:'def FirstDualPower()',cmt:'<p>Starts the enumeration of dual power controls currently accessible. Use the method <tt>YDualPower.nextDualPower()</tt> to iterate on next dual power controls.</p>',ret:'a pointer to a <tt>YDualPower</tt> object, corresponding to the first dual power control currently online, or a <tt>null</tt> pointer if there are none.'};
+doc['DualPower']['clearCache']={syn:'Invalidates the cache.',lib:'dualpower.clearCache()',pro:'def clearCache()',cmt:'<p>Invalidates the cache. Invalidates the cache of the power control attributes. Forces the next call to get_xxx() or loadxxx() to use values that come from the device.</p>'};
+doc['DualPower']['describe']={syn:'Returns a short text that describes unambiguously the instance of the power control in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'dualpower.describe()',pro:'def describe()',cmt:'<p>Returns a short text that describes unambiguously the instance of the power control in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. More precisely, <tt>TYPE</tt> is the type of the function, <tt>NAME</tt> it the name used for the first access to the function, <tt>SERIAL</tt> is the serial number of the module if the module is connected or <tt>\x22unresolved\x22</tt>, and <tt>FUNCTIONID</tt> is the hardware identifier of the function if the module is connected. For example, this method returns <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> if the module is already connected or <tt>Relay(BadCustomeName.relay1)=unresolved</tt> if the module has not yet been connected. This method does not trigger any USB or TCP transaction and can therefore be used in a debugger.</p>',ret:'a string that describes the power control (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['DualPower']['get_advertisedValue']={syn:'Returns the current value of the power control (no more than 6 characters).',lib:'dualpower.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Returns the current value of the power control (no more than 6 characters).</p>',ret:'a string corresponding to the current value of the power control (no more than 6 characters).',ext:'On failure, throws an exception or returns <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['DualPower']['get_errorMessage']={syn:'Returns the error message of the latest error with the power control.',lib:'dualpower.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Returns the error message of the latest error with the power control. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a string corresponding to the latest error message that occured while using the power control object'};
+doc['DualPower']['get_errorType']={syn:'Returns the numerical error code of the latest error with the power control.',lib:'dualpower.get_errorType()',pro:'def get_errorType()',cmt:'<p>Returns the numerical error code of the latest error with the power control. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a number corresponding to the code of the latest error that occurred while using the power control object'};
+doc['DualPower']['get_extVoltage']={syn:'Returns the measured voltage on the external power source, in millivolts.',lib:'dualpower.get_extVoltage()',pro:'def get_extVoltage()',cmt:'<p>Returns the measured voltage on the external power source, in millivolts.</p>',ret:'an integer corresponding to the measured voltage on the external power source, in millivolts',ext:'On failure, throws an exception or returns <tt>Y_EXTVOLTAGE_INVALID</tt>.'};
+doc['DualPower']['get_friendlyName']={syn:'Returns a global identifier of the power control in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>.',lib:'dualpower.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Returns a global identifier of the power control in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>. The returned string uses the logical names of the module and of the power control if they are defined, otherwise the serial number of the module and the hardware identifier of the power control (for example: <tt>MyCustomName.relay1</tt>)</p>',ret:'a string that uniquely identifies the power control using logical names (ex: <tt>MyCustomName.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['DualPower']['get_functionDescriptor']={syn:'Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function.',lib:'dualpower.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function. This identifier can be used to test if two instances of <tt>YFunction</tt> reference the same physical function on the same physical device.</p>',ret:'an identifier of type <tt>YFUN_DESCR</tt>.',ext:'If the function has never been contacted, the returned value is <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>.'};
+doc['DualPower']['get_functionId']={syn:'Returns the hardware identifier of the power control, without reference to the module.',lib:'dualpower.get_functionId()',pro:'def get_functionId()',cmt:'<p>Returns the hardware identifier of the power control, without reference to the module. For example <tt>relay1</tt></p>',ret:'a string that identifies the power control (ex: <tt>relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['DualPower']['get_hardwareId']={syn:'Returns the unique hardware identifier of the power control in the form <tt>SERIAL.FUNCTIONID</tt>.',lib:'dualpower.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Returns the unique hardware identifier of the power control in the form <tt>SERIAL.FUNCTIONID</tt>. The unique hardware identifier is composed of the device serial number and of the hardware identifier of the power control (for example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'a string that uniquely identifies the power control (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['DualPower']['get_logicalName']={syn:'Returns the logical name of the power control.',lib:'dualpower.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Returns the logical name of the power control.</p>',ret:'a string corresponding to the logical name of the power control.',ext:'On failure, throws an exception or returns <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['DualPower']['get_module']={syn:'Gets the <tt>YModule</tt> object for the device on which the function is located.',lib:'dualpower.get_module()',pro:'def get_module()',cmt:'<p>Gets the <tt>YModule</tt> object for the device on which the function is located. If the function cannot be located on any module, the returned instance of <tt>YModule</tt> is not shown as on-line.</p>',ret:'an instance of <tt>YModule</tt>'};
+doc['DualPower']['get_powerControl']={syn:'Returns the selected power source for module functions that require lots of current.',lib:'dualpower.get_powerControl()',pro:'def get_powerControl()',cmt:'<p>Returns the selected power source for module functions that require lots of current.</p>',ret:'a value among <tt>Y_POWERCONTROL_AUTO</tt>, <tt>Y_POWERCONTROL_FROM_USB</tt>, <tt>Y_POWERCONTROL_FROM_EXT</tt> and <tt>Y_POWERCONTROL_OFF</tt> corresponding to the selected power source for module functions that require lots of current',ext:'On failure, throws an exception or returns <tt>Y_POWERCONTROL_INVALID</tt>.'};
+doc['DualPower']['get_powerState']={syn:'Returns the current power source for module functions that require lots of current.',lib:'dualpower.get_powerState()',pro:'def get_powerState()',cmt:'<p>Returns the current power source for module functions that require lots of current.</p>',ret:'a value among <tt>Y_POWERSTATE_OFF</tt>, <tt>Y_POWERSTATE_FROM_USB</tt> and <tt>Y_POWERSTATE_FROM_EXT</tt> corresponding to the current power source for module functions that require lots of current',ext:'On failure, throws an exception or returns <tt>Y_POWERSTATE_INVALID</tt>.'};
+doc['DualPower']['get_userData']={syn:'Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>.',lib:'dualpower.get_userData()',pro:'def get_userData()',cmt:'<p>Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>. This attribute is never touched directly by the API, and is at disposal of the caller to store a context.</p>',ret:'the object stored previously by the caller.'};
+doc['DualPower']['isOnline']={syn:'Checks if the power control is currently reachable, without raising any error.',lib:'dualpower.isOnline()',pro:'def isOnline()',cmt:'<p>Checks if the power control is currently reachable, without raising any error. If there is a cached value for the power control in cache, that has not yet expired, the device is considered reachable. No exception is raised if there is an error while trying to contact the device hosting the power control.</p>',ret:'<tt>true</tt> if the power control can be reached, and <tt>false</tt> otherwise'};
+doc['DualPower']['load']={syn:'Preloads the power control cache with a specified validity duration.',lib:'dualpower.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Preloads the power control cache with a specified validity duration. By default, whenever accessing a device, all function attributes are kept in cache for the standard duration (5 ms). This method can be used to temporarily mark the cache as valid for a longer period, in order to reduce network traffic for instance.</p>',par:{msValidity:'an integer corresponding to the validity attributed to the loaded function parameters, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['DualPower']['loadAttribute']={syn:'Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.',lib:'dualpower.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'On failure, throws an exception or returns an empty string.'};
+doc['DualPower']['muteValueCallbacks']={syn:'Disable the propagation of every new advertised value to the parent hub.',lib:'dualpower.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>Disable the propagation of every new advertised value to the parent hub. You can use this function to save bandwidth and CPU on computers with limited resources, or to prevent unwanted invocations of the HTTP callback. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['DualPower']['nextDualPower']={syn:'Continues the enumeration of dual power controls started using <tt>yFirstDualPower()</tt>.',lib:'dualpower.nextDualPower()',pro:'def nextDualPower()',cmt:'<p>Continues the enumeration of dual power controls started using <tt>yFirstDualPower()</tt>.</p>',ret:'a pointer to a <tt>YDualPower</tt> object, corresponding to a dual power control currently online, or a <tt>null</tt> pointer if there are no more dual power controls to enumerate.'};
+doc['DualPower']['registerValueCallback']={syn:'Registers the callback function that is invoked on every change of advertised value.',lib:'dualpower.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every change of advertised value. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and the character string describing the new advertised value.'}};
+doc['DualPower']['set_logicalName']={syn:'Changes the logical name of the power control.',lib:'dualpower.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Changes the logical name of the power control. You can use <tt>yCheckLogicalName()</tt> prior to this call to make sure that your parameter is valid. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the logical name of the power control.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['DualPower']['set_powerControl']={syn:'Changes the selected power source for module functions that require lots of current.',lib:'dualpower.set_powerControl()',pro:'def set_powerControl(<span id=pn>newval</span>)',cmt:'<p>Changes the selected power source for module functions that require lots of current.</p>',par:{newval:'a value among <tt>Y_POWERCONTROL_AUTO</tt>, <tt>Y_POWERCONTROL_FROM_USB</tt>, <tt>Y_POWERCONTROL_FROM_EXT</tt> and <tt>Y_POWERCONTROL_OFF</tt> corresponding to the selected power source for module functions that require lots of current'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['DualPower']['set_userData']={syn:'Stores a user context provided as argument in the userData attribute of the function.',lib:'dualpower.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Stores a user context provided as argument in the userData attribute of the function. This attribute is never touched by the API, and is at disposal of the caller to store a context.</p>',par:{data:'any kind of object to be stored'}};
+doc['DualPower']['unmuteValueCallbacks']={syn:'Re-enable the propagation of every new advertised value to the parent hub.',lib:'dualpower.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>Re-enable the propagation of every new advertised value to the parent hub. This function reverts the effect of a previous call to <tt>muteValueCallbacks()</tt>. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+//--- (end of generated code: DualPower)
+//--- (generated code: Servo)
+doc['Servo']={'':{syn:'Servo function interface',inc:'from yocto_servo import *',cmt:'<p>Yoctopuce application programming interface allows you not only to move a servo to a given position, but also to specify the time interval in which the move should be performed. This makes it possible to synchronize two servos involved in a same move.</p>'}};
+doc['Servo']['FindServo']={syn:'Retrieves a servo for a given identifier.',lib:'YServo.FindServo()',pro:'def FindServo(<span id=pn>func</span>)',cmt:'<p>Retrieves a servo for a given identifier. The identifier can be specified using several formats:<br> <ul> <li>FunctionLogicalName</li> <li>ModuleSerialNumber.FunctionIdentifier</li> <li>ModuleSerialNumber.FunctionLogicalName</li> <li>ModuleLogicalName.FunctionIdentifier</li> <li>ModuleLogicalName.FunctionLogicalName</li> </ul></p><p> This function does not require that the servo is online at the time it is invoked. The returned object is nevertheless valid. Use the method <tt>YServo.isOnline()</tt> to test if the servo is indeed online at a given time. In case of ambiguity when looking for a servo by logical name, no error is notified: the first instance found is returned. The search is performed first by hardware name, then by logical name.</p>',par:{func:'a string that uniquely characterizes the servo'},ret:'a <tt>YServo</tt> object allowing you to drive the servo.'};
+doc['Servo']['FirstServo']={syn:'Starts the enumeration of servos currently accessible.',lib:'YServo.FirstServo()',pro:'def FirstServo()',cmt:'<p>Starts the enumeration of servos currently accessible. Use the method <tt>YServo.nextServo()</tt> to iterate on next servos.</p>',ret:'a pointer to a <tt>YServo</tt> object, corresponding to the first servo currently online, or a <tt>null</tt> pointer if there are none.'};
+doc['Servo']['clearCache']={syn:'Invalidates the cache.',lib:'servo.clearCache()',pro:'def clearCache()',cmt:'<p>Invalidates the cache. Invalidates the cache of the servo attributes. Forces the next call to get_xxx() or loadxxx() to use values that come from the device.</p>'};
+doc['Servo']['describe']={syn:'Returns a short text that describes unambiguously the instance of the servo in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'servo.describe()',pro:'def describe()',cmt:'<p>Returns a short text that describes unambiguously the instance of the servo in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. More precisely, <tt>TYPE</tt> is the type of the function, <tt>NAME</tt> it the name used for the first access to the function, <tt>SERIAL</tt> is the serial number of the module if the module is connected or <tt>\x22unresolved\x22</tt>, and <tt>FUNCTIONID</tt> is the hardware identifier of the function if the module is connected. For example, this method returns <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> if the module is already connected or <tt>Relay(BadCustomeName.relay1)=unresolved</tt> if the module has not yet been connected. This method does not trigger any USB or TCP transaction and can therefore be used in a debugger.</p>',ret:'a string that describes the servo (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['Servo']['get_advertisedValue']={syn:'Returns the current value of the servo (no more than 6 characters).',lib:'servo.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Returns the current value of the servo (no more than 6 characters).</p>',ret:'a string corresponding to the current value of the servo (no more than 6 characters).',ext:'On failure, throws an exception or returns <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['Servo']['get_enabled']={syn:'Returns the state of the servos.',lib:'servo.get_enabled()',pro:'def get_enabled()',cmt:'<p>Returns the state of the servos.</p>',ret:'either <tt>Y_ENABLED_FALSE</tt> or <tt>Y_ENABLED_TRUE</tt>, according to the state of the servos',ext:'On failure, throws an exception or returns <tt>Y_ENABLED_INVALID</tt>.'};
+doc['Servo']['get_enabledAtPowerOn']={syn:'Returns the servo signal generator state at power up.',lib:'servo.get_enabledAtPowerOn()',pro:'def get_enabledAtPowerOn()',cmt:'<p>Returns the servo signal generator state at power up.</p>',ret:'either <tt>Y_ENABLEDATPOWERON_FALSE</tt> or <tt>Y_ENABLEDATPOWERON_TRUE</tt>, according to the servo signal generator state at power up',ext:'On failure, throws an exception or returns <tt>Y_ENABLEDATPOWERON_INVALID</tt>.'};
+doc['Servo']['get_errorMessage']={syn:'Returns the error message of the latest error with the servo.',lib:'servo.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Returns the error message of the latest error with the servo. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a string corresponding to the latest error message that occured while using the servo object'};
+doc['Servo']['get_errorType']={syn:'Returns the numerical error code of the latest error with the servo.',lib:'servo.get_errorType()',pro:'def get_errorType()',cmt:'<p>Returns the numerical error code of the latest error with the servo. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a number corresponding to the code of the latest error that occurred while using the servo object'};
+doc['Servo']['get_friendlyName']={syn:'Returns a global identifier of the servo in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>.',lib:'servo.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Returns a global identifier of the servo in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>. The returned string uses the logical names of the module and of the servo if they are defined, otherwise the serial number of the module and the hardware identifier of the servo (for example: <tt>MyCustomName.relay1</tt>)</p>',ret:'a string that uniquely identifies the servo using logical names (ex: <tt>MyCustomName.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['Servo']['get_functionDescriptor']={syn:'Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function.',lib:'servo.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function. This identifier can be used to test if two instances of <tt>YFunction</tt> reference the same physical function on the same physical device.</p>',ret:'an identifier of type <tt>YFUN_DESCR</tt>.',ext:'If the function has never been contacted, the returned value is <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>.'};
+doc['Servo']['get_functionId']={syn:'Returns the hardware identifier of the servo, without reference to the module.',lib:'servo.get_functionId()',pro:'def get_functionId()',cmt:'<p>Returns the hardware identifier of the servo, without reference to the module. For example <tt>relay1</tt></p>',ret:'a string that identifies the servo (ex: <tt>relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['Servo']['get_hardwareId']={syn:'Returns the unique hardware identifier of the servo in the form <tt>SERIAL.FUNCTIONID</tt>.',lib:'servo.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Returns the unique hardware identifier of the servo in the form <tt>SERIAL.FUNCTIONID</tt>. The unique hardware identifier is composed of the device serial number and of the hardware identifier of the servo (for example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'a string that uniquely identifies the servo (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['Servo']['get_logicalName']={syn:'Returns the logical name of the servo.',lib:'servo.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Returns the logical name of the servo.</p>',ret:'a string corresponding to the logical name of the servo.',ext:'On failure, throws an exception or returns <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['Servo']['get_module']={syn:'Gets the <tt>YModule</tt> object for the device on which the function is located.',lib:'servo.get_module()',pro:'def get_module()',cmt:'<p>Gets the <tt>YModule</tt> object for the device on which the function is located. If the function cannot be located on any module, the returned instance of <tt>YModule</tt> is not shown as on-line.</p>',ret:'an instance of <tt>YModule</tt>'};
+doc['Servo']['get_neutral']={syn:'Returns the duration in microseconds of a neutral pulse for the servo.',lib:'servo.get_neutral()',pro:'def get_neutral()',cmt:'<p>Returns the duration in microseconds of a neutral pulse for the servo.</p>',ret:'an integer corresponding to the duration in microseconds of a neutral pulse for the servo',ext:'On failure, throws an exception or returns <tt>Y_NEUTRAL_INVALID</tt>.'};
+doc['Servo']['get_position']={syn:'Returns the current servo position.',lib:'servo.get_position()',pro:'def get_position()',cmt:'<p>Returns the current servo position.</p>',ret:'an integer corresponding to the current servo position',ext:'On failure, throws an exception or returns <tt>Y_POSITION_INVALID</tt>.'};
+doc['Servo']['get_positionAtPowerOn']={syn:'Returns the servo position at device power up.',lib:'servo.get_positionAtPowerOn()',pro:'def get_positionAtPowerOn()',cmt:'<p>Returns the servo position at device power up.</p>',ret:'an integer corresponding to the servo position at device power up',ext:'On failure, throws an exception or returns <tt>Y_POSITIONATPOWERON_INVALID</tt>.'};
+doc['Servo']['get_range']={syn:'Returns the current range of use of the servo.',lib:'servo.get_range()',pro:'def get_range()',cmt:'<p>Returns the current range of use of the servo.</p>',ret:'an integer corresponding to the current range of use of the servo',ext:'On failure, throws an exception or returns <tt>Y_RANGE_INVALID</tt>.'};
+doc['Servo']['get_userData']={syn:'Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>.',lib:'servo.get_userData()',pro:'def get_userData()',cmt:'<p>Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>. This attribute is never touched directly by the API, and is at disposal of the caller to store a context.</p>',ret:'the object stored previously by the caller.'};
+doc['Servo']['isOnline']={syn:'Checks if the servo is currently reachable, without raising any error.',lib:'servo.isOnline()',pro:'def isOnline()',cmt:'<p>Checks if the servo is currently reachable, without raising any error. If there is a cached value for the servo in cache, that has not yet expired, the device is considered reachable. No exception is raised if there is an error while trying to contact the device hosting the servo.</p>',ret:'<tt>true</tt> if the servo can be reached, and <tt>false</tt> otherwise'};
+doc['Servo']['load']={syn:'Preloads the servo cache with a specified validity duration.',lib:'servo.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Preloads the servo cache with a specified validity duration. By default, whenever accessing a device, all function attributes are kept in cache for the standard duration (5 ms). This method can be used to temporarily mark the cache as valid for a longer period, in order to reduce network traffic for instance.</p>',par:{msValidity:'an integer corresponding to the validity attributed to the loaded function parameters, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Servo']['loadAttribute']={syn:'Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.',lib:'servo.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'On failure, throws an exception or returns an empty string.'};
+doc['Servo']['move']={syn:'Performs a smooth move at constant speed toward a given position.',lib:'servo.move()',pro:'def move(<span id=pn>target</span>, <span id=pn>ms_duration</span>)',cmt:'<p>Performs a smooth move at constant speed toward a given position.</p>',par:{target:'new position at the end of the move',ms_duration:'total duration of the move, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Servo']['muteValueCallbacks']={syn:'Disable the propagation of every new advertised value to the parent hub.',lib:'servo.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>Disable the propagation of every new advertised value to the parent hub. You can use this function to save bandwidth and CPU on computers with limited resources, or to prevent unwanted invocations of the HTTP callback. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Servo']['nextServo']={syn:'Continues the enumeration of servos started using <tt>yFirstServo()</tt>.',lib:'servo.nextServo()',pro:'def nextServo()',cmt:'<p>Continues the enumeration of servos started using <tt>yFirstServo()</tt>.</p>',ret:'a pointer to a <tt>YServo</tt> object, corresponding to a servo currently online, or a <tt>null</tt> pointer if there are no more servos to enumerate.'};
+doc['Servo']['registerValueCallback']={syn:'Registers the callback function that is invoked on every change of advertised value.',lib:'servo.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every change of advertised value. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and the character string describing the new advertised value.'}};
+doc['Servo']['set_enabled']={syn:'Stops or starts the servo.',lib:'servo.set_enabled()',pro:'def set_enabled(<span id=pn>newval</span>)',cmt:'<p>Stops or starts the servo.</p>',par:{newval:'either <tt>Y_ENABLED_FALSE</tt> or <tt>Y_ENABLED_TRUE</tt>'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Servo']['set_enabledAtPowerOn']={syn:'Configure the servo signal generator state at power up.',lib:'servo.set_enabledAtPowerOn()',pro:'def set_enabledAtPowerOn(<span id=pn>newval</span>)',cmt:'<p>Configure the servo signal generator state at power up. Remember to call the matching module <tt>saveToFlash()</tt> method, otherwise this call will have no effect.</p>',par:{newval:'either <tt>Y_ENABLEDATPOWERON_FALSE</tt> or <tt>Y_ENABLEDATPOWERON_TRUE</tt>'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Servo']['set_logicalName']={syn:'Changes the logical name of the servo.',lib:'servo.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Changes the logical name of the servo. You can use <tt>yCheckLogicalName()</tt> prior to this call to make sure that your parameter is valid. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the logical name of the servo.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Servo']['set_neutral']={syn:'Changes the duration of the pulse corresponding to the neutral position of the servo.',lib:'servo.set_neutral()',pro:'def set_neutral(<span id=pn>newval</span>)',cmt:'<p>Changes the duration of the pulse corresponding to the neutral position of the servo. The duration is specified in microseconds, and the standard value is 1500 [us]. This setting makes it possible to shift the range of use of the servo. Be aware that using a range higher than what is supported by the servo is likely to damage the servo. Remember to call the matching module <tt>saveToFlash()</tt> method, otherwise this call will have no effect.</p>',par:{newval:'an integer corresponding to the duration of the pulse corresponding to the neutral position of the servo'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Servo']['set_position']={syn:'Changes immediately the servo driving position.',lib:'servo.set_position()',pro:'def set_position(<span id=pn>newval</span>)',cmt:'<p>Changes immediately the servo driving position.</p>',par:{newval:'an integer corresponding to immediately the servo driving position'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Servo']['set_positionAtPowerOn']={syn:'Configure the servo position at device power up.',lib:'servo.set_positionAtPowerOn()',pro:'def set_positionAtPowerOn(<span id=pn>newval</span>)',cmt:'<p>Configure the servo position at device power up. Remember to call the matching module <tt>saveToFlash()</tt> method, otherwise this call will have no effect.</p>',par:{newval:'an integer'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Servo']['set_range']={syn:'Changes the range of use of the servo, specified in per cents.',lib:'servo.set_range()',pro:'def set_range(<span id=pn>newval</span>)',cmt:'<p>Changes the range of use of the servo, specified in per cents. A range of 100% corresponds to a standard control signal, that varies from 1 [ms] to 2 [ms], When using a servo that supports a double range, from 0.5 [ms] to 2.5 [ms], you can select a range of 200%. Be aware that using a range higher than what is supported by the servo is likely to damage the servo. Remember to call the matching module <tt>saveToFlash()</tt> method, otherwise this call will have no effect.</p>',par:{newval:'an integer corresponding to the range of use of the servo, specified in per cents'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Servo']['set_userData']={syn:'Stores a user context provided as argument in the userData attribute of the function.',lib:'servo.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Stores a user context provided as argument in the userData attribute of the function. This attribute is never touched by the API, and is at disposal of the caller to store a context.</p>',par:{data:'any kind of object to be stored'}};
+doc['Servo']['unmuteValueCallbacks']={syn:'Re-enable the propagation of every new advertised value to the parent hub.',lib:'servo.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>Re-enable the propagation of every new advertised value to the parent hub. This function reverts the effect of a previous call to <tt>muteValueCallbacks()</tt>. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+//--- (end of generated code: Servo)
+//--- (generated code: Relay)
+doc['Relay']={'':{syn:'Relay function interface',inc:'from yocto_relay import *',cmt:'<p>The Yoctopuce application programming interface allows you to switch the relay state. This change is not persistent: the relay will automatically return to its idle position whenever power is lost or if the module is restarted. The library can also generate automatically short pulses of determined duration. On devices with two output for each relay (double throw), the two outputs are named A and B, with output A corresponding to the idle position (at power off) and the output B corresponding to the active state. If you prefer the alternate default state, simply switch your cables on the board.</p>'}};
+doc['Relay']['FindRelay']={syn:'Retrieves a relay for a given identifier.',lib:'YRelay.FindRelay()',pro:'def FindRelay(<span id=pn>func</span>)',cmt:'<p>Retrieves a relay for a given identifier. The identifier can be specified using several formats:<br> <ul> <li>FunctionLogicalName</li> <li>ModuleSerialNumber.FunctionIdentifier</li> <li>ModuleSerialNumber.FunctionLogicalName</li> <li>ModuleLogicalName.FunctionIdentifier</li> <li>ModuleLogicalName.FunctionLogicalName</li> </ul></p><p> This function does not require that the relay is online at the time it is invoked. The returned object is nevertheless valid. Use the method <tt>YRelay.isOnline()</tt> to test if the relay is indeed online at a given time. In case of ambiguity when looking for a relay by logical name, no error is notified: the first instance found is returned. The search is performed first by hardware name, then by logical name.</p>',par:{func:'a string that uniquely characterizes the relay'},ret:'a <tt>YRelay</tt> object allowing you to drive the relay.'};
+doc['Relay']['FirstRelay']={syn:'Starts the enumeration of relays currently accessible.',lib:'YRelay.FirstRelay()',pro:'def FirstRelay()',cmt:'<p>Starts the enumeration of relays currently accessible. Use the method <tt>YRelay.nextRelay()</tt> to iterate on next relays.</p>',ret:'a pointer to a <tt>YRelay</tt> object, corresponding to the first relay currently online, or a <tt>null</tt> pointer if there are none.'};
+doc['Relay']['clearCache']={syn:'Invalidates the cache.',lib:'relay.clearCache()',pro:'def clearCache()',cmt:'<p>Invalidates the cache. Invalidates the cache of the relay attributes. Forces the next call to get_xxx() or loadxxx() to use values that come from the device.</p>'};
+doc['Relay']['delayedPulse']={syn:'Schedules a pulse.',lib:'relay.delayedPulse()',pro:'def delayedPulse(<span id=pn>ms_delay</span>, <span id=pn>ms_duration</span>)',cmt:'<p>Schedules a pulse.</p>',par:{ms_delay:'waiting time before the pulse, in millisecondes',ms_duration:'pulse duration, in millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Relay']['describe']={syn:'Returns a short text that describes unambiguously the instance of the relay in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'relay.describe()',pro:'def describe()',cmt:'<p>Returns a short text that describes unambiguously the instance of the relay in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. More precisely, <tt>TYPE</tt> is the type of the function, <tt>NAME</tt> it the name used for the first access to the function, <tt>SERIAL</tt> is the serial number of the module if the module is connected or <tt>\x22unresolved\x22</tt>, and <tt>FUNCTIONID</tt> is the hardware identifier of the function if the module is connected. For example, this method returns <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> if the module is already connected or <tt>Relay(BadCustomeName.relay1)=unresolved</tt> if the module has not yet been connected. This method does not trigger any USB or TCP transaction and can therefore be used in a debugger.</p>',ret:'a string that describes the relay (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['Relay']['get_advertisedValue']={syn:'Returns the current value of the relay (no more than 6 characters).',lib:'relay.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Returns the current value of the relay (no more than 6 characters).</p>',ret:'a string corresponding to the current value of the relay (no more than 6 characters).',ext:'On failure, throws an exception or returns <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['Relay']['get_countdown']={syn:'Returns the number of milliseconds remaining before a pulse (delayedPulse() call) When there is no scheduled pulse, returns zero.',lib:'relay.get_countdown()',pro:'def get_countdown()',cmt:'<p>Returns the number of milliseconds remaining before a pulse (delayedPulse() call) When there is no scheduled pulse, returns zero.</p>',ret:'an integer corresponding to the number of milliseconds remaining before a pulse (delayedPulse() call) When there is no scheduled pulse, returns zero',ext:'On failure, throws an exception or returns <tt>Y_COUNTDOWN_INVALID</tt>.'};
+doc['Relay']['get_errorMessage']={syn:'Returns the error message of the latest error with the relay.',lib:'relay.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Returns the error message of the latest error with the relay. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a string corresponding to the latest error message that occured while using the relay object'};
+doc['Relay']['get_errorType']={syn:'Returns the numerical error code of the latest error with the relay.',lib:'relay.get_errorType()',pro:'def get_errorType()',cmt:'<p>Returns the numerical error code of the latest error with the relay. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a number corresponding to the code of the latest error that occurred while using the relay object'};
+doc['Relay']['get_friendlyName']={syn:'Returns a global identifier of the relay in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>.',lib:'relay.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Returns a global identifier of the relay in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>. The returned string uses the logical names of the module and of the relay if they are defined, otherwise the serial number of the module and the hardware identifier of the relay (for example: <tt>MyCustomName.relay1</tt>)</p>',ret:'a string that uniquely identifies the relay using logical names (ex: <tt>MyCustomName.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['Relay']['get_functionDescriptor']={syn:'Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function.',lib:'relay.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function. This identifier can be used to test if two instances of <tt>YFunction</tt> reference the same physical function on the same physical device.</p>',ret:'an identifier of type <tt>YFUN_DESCR</tt>.',ext:'If the function has never been contacted, the returned value is <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>.'};
+doc['Relay']['get_functionId']={syn:'Returns the hardware identifier of the relay, without reference to the module.',lib:'relay.get_functionId()',pro:'def get_functionId()',cmt:'<p>Returns the hardware identifier of the relay, without reference to the module. For example <tt>relay1</tt></p>',ret:'a string that identifies the relay (ex: <tt>relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['Relay']['get_hardwareId']={syn:'Returns the unique hardware identifier of the relay in the form <tt>SERIAL.FUNCTIONID</tt>.',lib:'relay.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Returns the unique hardware identifier of the relay in the form <tt>SERIAL.FUNCTIONID</tt>. The unique hardware identifier is composed of the device serial number and of the hardware identifier of the relay (for example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'a string that uniquely identifies the relay (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['Relay']['get_logicalName']={syn:'Returns the logical name of the relay.',lib:'relay.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Returns the logical name of the relay.</p>',ret:'a string corresponding to the logical name of the relay.',ext:'On failure, throws an exception or returns <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['Relay']['get_maxTimeOnStateA']={syn:'Retourne the maximum time (ms) allowed for $THEFUNCTIONS$ to stay in state A before automatically switching back in to B state.',lib:'relay.get_maxTimeOnStateA()',pro:'def get_maxTimeOnStateA()',cmt:'<p>Retourne the maximum time (ms) allowed for $THEFUNCTIONS$ to stay in state A before automatically switching back in to B state. Zero means no maximum time.</p>',ret:'an integer',ext:'On failure, throws an exception or returns <tt>Y_MAXTIMEONSTATEA_INVALID</tt>.'};
+doc['Relay']['get_maxTimeOnStateB']={syn:'Retourne the maximum time (ms) allowed for $THEFUNCTIONS$ to stay in state B before automatically switching back in to A state.',lib:'relay.get_maxTimeOnStateB()',pro:'def get_maxTimeOnStateB()',cmt:'<p>Retourne the maximum time (ms) allowed for $THEFUNCTIONS$ to stay in state B before automatically switching back in to A state. Zero means no maximum time.</p>',ret:'an integer',ext:'On failure, throws an exception or returns <tt>Y_MAXTIMEONSTATEB_INVALID</tt>.'};
+doc['Relay']['get_module']={syn:'Gets the <tt>YModule</tt> object for the device on which the function is located.',lib:'relay.get_module()',pro:'def get_module()',cmt:'<p>Gets the <tt>YModule</tt> object for the device on which the function is located. If the function cannot be located on any module, the returned instance of <tt>YModule</tt> is not shown as on-line.</p>',ret:'an instance of <tt>YModule</tt>'};
+doc['Relay']['get_output']={syn:'Returns the output state of the relays, when used as a simple switch (single throw).',lib:'relay.get_output()',pro:'def get_output()',cmt:'<p>Returns the output state of the relays, when used as a simple switch (single throw).</p>',ret:'either <tt>Y_OUTPUT_OFF</tt> or <tt>Y_OUTPUT_ON</tt>, according to the output state of the relays, when used as a simple switch (single throw)',ext:'On failure, throws an exception or returns <tt>Y_OUTPUT_INVALID</tt>.'};
+doc['Relay']['get_pulseTimer']={syn:'Returns the number of milliseconds remaining before the relays is returned to idle position (state A), during a measured pulse generation.',lib:'relay.get_pulseTimer()',pro:'def get_pulseTimer()',cmt:'<p>Returns the number of milliseconds remaining before the relays is returned to idle position (state A), during a measured pulse generation. When there is no ongoing pulse, returns zero.</p>',ret:'an integer corresponding to the number of milliseconds remaining before the relays is returned to idle position (state A), during a measured pulse generation',ext:'On failure, throws an exception or returns <tt>Y_PULSETIMER_INVALID</tt>.'};
+doc['Relay']['get_state']={syn:'Returns the state of the relays (A for the idle position, B for the active position).',lib:'relay.get_state()',pro:'def get_state()',cmt:'<p>Returns the state of the relays (A for the idle position, B for the active position).</p>',ret:'either <tt>Y_STATE_A</tt> or <tt>Y_STATE_B</tt>, according to the state of the relays (A for the idle position, B for the active position)',ext:'On failure, throws an exception or returns <tt>Y_STATE_INVALID</tt>.'};
+doc['Relay']['get_stateAtPowerOn']={syn:'Returns the state of the relays at device startup (A for the idle position, B for the active position, UNCHANGED for no change).',lib:'relay.get_stateAtPowerOn()',pro:'def get_stateAtPowerOn()',cmt:'<p>Returns the state of the relays at device startup (A for the idle position, B for the active position, UNCHANGED for no change).</p>',ret:'a value among <tt>Y_STATEATPOWERON_UNCHANGED</tt>, <tt>Y_STATEATPOWERON_A</tt> and <tt>Y_STATEATPOWERON_B</tt> corresponding to the state of the relays at device startup (A for the idle position, B for the active position, UNCHANGED for no change)',ext:'On failure, throws an exception or returns <tt>Y_STATEATPOWERON_INVALID</tt>.'};
+doc['Relay']['get_userData']={syn:'Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>.',lib:'relay.get_userData()',pro:'def get_userData()',cmt:'<p>Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>. This attribute is never touched directly by the API, and is at disposal of the caller to store a context.</p>',ret:'the object stored previously by the caller.'};
+doc['Relay']['isOnline']={syn:'Checks if the relay is currently reachable, without raising any error.',lib:'relay.isOnline()',pro:'def isOnline()',cmt:'<p>Checks if the relay is currently reachable, without raising any error. If there is a cached value for the relay in cache, that has not yet expired, the device is considered reachable. No exception is raised if there is an error while trying to contact the device hosting the relay.</p>',ret:'<tt>true</tt> if the relay can be reached, and <tt>false</tt> otherwise'};
+doc['Relay']['load']={syn:'Preloads the relay cache with a specified validity duration.',lib:'relay.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Preloads the relay cache with a specified validity duration. By default, whenever accessing a device, all function attributes are kept in cache for the standard duration (5 ms). This method can be used to temporarily mark the cache as valid for a longer period, in order to reduce network traffic for instance.</p>',par:{msValidity:'an integer corresponding to the validity attributed to the loaded function parameters, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Relay']['loadAttribute']={syn:'Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.',lib:'relay.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'On failure, throws an exception or returns an empty string.'};
+doc['Relay']['muteValueCallbacks']={syn:'Disable the propagation of every new advertised value to the parent hub.',lib:'relay.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>Disable the propagation of every new advertised value to the parent hub. You can use this function to save bandwidth and CPU on computers with limited resources, or to prevent unwanted invocations of the HTTP callback. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Relay']['nextRelay']={syn:'Continues the enumeration of relays started using <tt>yFirstRelay()</tt>.',lib:'relay.nextRelay()',pro:'def nextRelay()',cmt:'<p>Continues the enumeration of relays started using <tt>yFirstRelay()</tt>.</p>',ret:'a pointer to a <tt>YRelay</tt> object, corresponding to a relay currently online, or a <tt>null</tt> pointer if there are no more relays to enumerate.'};
+doc['Relay']['pulse']={syn:'Sets the relay to output B (active) for a specified duration, then brings it automatically back to output A (idle state).',lib:'relay.pulse()',pro:'def pulse(<span id=pn>ms_duration</span>)',cmt:'<p>Sets the relay to output B (active) for a specified duration, then brings it automatically back to output A (idle state).</p>',par:{ms_duration:'pulse duration, in millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Relay']['registerValueCallback']={syn:'Registers the callback function that is invoked on every change of advertised value.',lib:'relay.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every change of advertised value. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and the character string describing the new advertised value.'}};
+doc['Relay']['set_logicalName']={syn:'Changes the logical name of the relay.',lib:'relay.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Changes the logical name of the relay. You can use <tt>yCheckLogicalName()</tt> prior to this call to make sure that your parameter is valid. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the logical name of the relay.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Relay']['set_maxTimeOnStateA']={syn:'Sets the maximum time (ms) allowed for $THEFUNCTIONS$ to stay in state A before automatically switching back in to B state.',lib:'relay.set_maxTimeOnStateA()',pro:'def set_maxTimeOnStateA(<span id=pn>newval</span>)',cmt:'<p>Sets the maximum time (ms) allowed for $THEFUNCTIONS$ to stay in state A before automatically switching back in to B state. Use zero for no maximum time.</p>',par:{newval:'an integer'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Relay']['set_maxTimeOnStateB']={syn:'Sets the maximum time (ms) allowed for $THEFUNCTIONS$ to stay in state B before automatically switching back in to A state.',lib:'relay.set_maxTimeOnStateB()',pro:'def set_maxTimeOnStateB(<span id=pn>newval</span>)',cmt:'<p>Sets the maximum time (ms) allowed for $THEFUNCTIONS$ to stay in state B before automatically switching back in to A state. Use zero for no maximum time.</p>',par:{newval:'an integer'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Relay']['set_output']={syn:'Changes the output state of the relays, when used as a simple switch (single throw).',lib:'relay.set_output()',pro:'def set_output(<span id=pn>newval</span>)',cmt:'<p>Changes the output state of the relays, when used as a simple switch (single throw).</p>',par:{newval:'either <tt>Y_OUTPUT_OFF</tt> or <tt>Y_OUTPUT_ON</tt>, according to the output state of the relays, when used as a simple switch (single throw)'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Relay']['set_state']={syn:'Changes the state of the relays (A for the idle position, B for the active position).',lib:'relay.set_state()',pro:'def set_state(<span id=pn>newval</span>)',cmt:'<p>Changes the state of the relays (A for the idle position, B for the active position).</p>',par:{newval:'either <tt>Y_STATE_A</tt> or <tt>Y_STATE_B</tt>, according to the state of the relays (A for the idle position, B for the active position)'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Relay']['set_stateAtPowerOn']={syn:'Preset the state of the relays at device startup (A for the idle position, B for the active position, UNCHANGED for no modification).',lib:'relay.set_stateAtPowerOn()',pro:'def set_stateAtPowerOn(<span id=pn>newval</span>)',cmt:'<p>Preset the state of the relays at device startup (A for the idle position, B for the active position, UNCHANGED for no modification). Remember to call the matching module <tt>saveToFlash()</tt> method, otherwise this call will have no effect.</p>',par:{newval:'a value among <tt>Y_STATEATPOWERON_UNCHANGED</tt>, <tt>Y_STATEATPOWERON_A</tt> and <tt>Y_STATEATPOWERON_B</tt>'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Relay']['set_userData']={syn:'Stores a user context provided as argument in the userData attribute of the function.',lib:'relay.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Stores a user context provided as argument in the userData attribute of the function. This attribute is never touched by the API, and is at disposal of the caller to store a context.</p>',par:{data:'any kind of object to be stored'}};
+doc['Relay']['unmuteValueCallbacks']={syn:'Re-enable the propagation of every new advertised value to the parent hub.',lib:'relay.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>Re-enable the propagation of every new advertised value to the parent hub. This function reverts the effect of a previous call to <tt>muteValueCallbacks()</tt>. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+//--- (end of generated code: Relay)
+//--- (generated code: Humidity)
+doc['Humidity']={'':{syn:'Humidity function interface',inc:'from yocto_humidity import *',cmt:'<p>The Yoctopuce class YHumidity allows you to read and configure Yoctopuce humidity sensors. It inherits from YSensor class the core functions to read measurements, register callback functions, access to the autonomous datalogger.</p>'}};
+doc['Humidity']['FindHumidity']={syn:'Retrieves a humidity sensor for a given identifier.',lib:'YHumidity.FindHumidity()',pro:'def FindHumidity(<span id=pn>func</span>)',cmt:'<p>Retrieves a humidity sensor for a given identifier. The identifier can be specified using several formats:<br> <ul> <li>FunctionLogicalName</li> <li>ModuleSerialNumber.FunctionIdentifier</li> <li>ModuleSerialNumber.FunctionLogicalName</li> <li>ModuleLogicalName.FunctionIdentifier</li> <li>ModuleLogicalName.FunctionLogicalName</li> </ul></p><p> This function does not require that the humidity sensor is online at the time it is invoked. The returned object is nevertheless valid. Use the method <tt>YHumidity.isOnline()</tt> to test if the humidity sensor is indeed online at a given time. In case of ambiguity when looking for a humidity sensor by logical name, no error is notified: the first instance found is returned. The search is performed first by hardware name, then by logical name.</p>',par:{func:'a string that uniquely characterizes the humidity sensor'},ret:'a <tt>YHumidity</tt> object allowing you to drive the humidity sensor.'};
+doc['Humidity']['FirstHumidity']={syn:'Starts the enumeration of humidity sensors currently accessible.',lib:'YHumidity.FirstHumidity()',pro:'def FirstHumidity()',cmt:'<p>Starts the enumeration of humidity sensors currently accessible. Use the method <tt>YHumidity.nextHumidity()</tt> to iterate on next humidity sensors.</p>',ret:'a pointer to a <tt>YHumidity</tt> object, corresponding to the first humidity sensor currently online, or a <tt>null</tt> pointer if there are none.'};
+doc['Humidity']['calibrateFromPoints']={syn:'Configures error correction data points, in particular to compensate for a possible perturbation of the measure caused by an enclosure.',lib:'humidity.calibrateFromPoints()',pro:'def calibrateFromPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Configures error correction data points, in particular to compensate for a possible perturbation of the measure caused by an enclosure. It is possible to configure up to five correction points. Correction points must be provided in ascending order, and be in the range of the sensor. The device will automatically perform a linear interpolation of the error correction between specified points. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p><p> For more information on advanced capabilities to refine the calibration of sensors, please contact support@yoctopuce.com.</p>',par:{rawValues:'array of floating point numbers, corresponding to the raw values returned by the sensor for the correction points.',refValues:'array of floating point numbers, corresponding to the corrected values for the correction points.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Humidity']['clearCache']={syn:'Invalidates the cache.',lib:'humidity.clearCache()',pro:'def clearCache()',cmt:'<p>Invalidates the cache. Invalidates the cache of the humidity sensor attributes. Forces the next call to get_xxx() or loadxxx() to use values that come from the device.</p>'};
+doc['Humidity']['describe']={syn:'Returns a short text that describes unambiguously the instance of the humidity sensor in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'humidity.describe()',pro:'def describe()',cmt:'<p>Returns a short text that describes unambiguously the instance of the humidity sensor in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. More precisely, <tt>TYPE</tt> is the type of the function, <tt>NAME</tt> it the name used for the first access to the function, <tt>SERIAL</tt> is the serial number of the module if the module is connected or <tt>\x22unresolved\x22</tt>, and <tt>FUNCTIONID</tt> is the hardware identifier of the function if the module is connected. For example, this method returns <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> if the module is already connected or <tt>Relay(BadCustomeName.relay1)=unresolved</tt> if the module has not yet been connected. This method does not trigger any USB or TCP transaction and can therefore be used in a debugger.</p>',ret:'a string that describes the humidity sensor (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['Humidity']['get_absHum']={syn:'Returns the current absolute humidity, in grams per cubic meter of air.',lib:'humidity.get_absHum()',pro:'def get_absHum()',cmt:'<p>Returns the current absolute humidity, in grams per cubic meter of air.</p>',ret:'a floating point number corresponding to the current absolute humidity, in grams per cubic meter of air',ext:'On failure, throws an exception or returns <tt>Y_ABSHUM_INVALID</tt>.'};
+doc['Humidity']['get_advertisedValue']={syn:'Returns the current value of the humidity sensor (no more than 6 characters).',lib:'humidity.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Returns the current value of the humidity sensor (no more than 6 characters).</p>',ret:'a string corresponding to the current value of the humidity sensor (no more than 6 characters).',ext:'On failure, throws an exception or returns <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['Humidity']['get_currentRawValue']={syn:'Returns the uncalibrated, unrounded raw value returned by the sensor, in %RH, as a floating point number.',lib:'humidity.get_currentRawValue()',pro:'def get_currentRawValue()',cmt:'<p>Returns the uncalibrated, unrounded raw value returned by the sensor, in %RH, as a floating point number.</p>',ret:'a floating point number corresponding to the uncalibrated, unrounded raw value returned by the sensor, in %RH, as a floating point number',ext:'On failure, throws an exception or returns <tt>Y_CURRENTRAWVALUE_INVALID</tt>.'};
+doc['Humidity']['get_currentValue']={syn:'Returns the current value of the humidity, in %RH, as a floating point number.',lib:'humidity.get_currentValue()',pro:'def get_currentValue()',cmt:'<p>Returns the current value of the humidity, in %RH, as a floating point number.</p>',ret:'a floating point number corresponding to the current value of the humidity, in %RH, as a floating point number',ext:'On failure, throws an exception or returns <tt>Y_CURRENTVALUE_INVALID</tt>.'};
+doc['Humidity']['get_errorMessage']={syn:'Returns the error message of the latest error with the humidity sensor.',lib:'humidity.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Returns the error message of the latest error with the humidity sensor. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a string corresponding to the latest error message that occured while using the humidity sensor object'};
+doc['Humidity']['get_errorType']={syn:'Returns the numerical error code of the latest error with the humidity sensor.',lib:'humidity.get_errorType()',pro:'def get_errorType()',cmt:'<p>Returns the numerical error code of the latest error with the humidity sensor. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a number corresponding to the code of the latest error that occurred while using the humidity sensor object'};
+doc['Humidity']['get_friendlyName']={syn:'Returns a global identifier of the humidity sensor in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>.',lib:'humidity.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Returns a global identifier of the humidity sensor in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>. The returned string uses the logical names of the module and of the humidity sensor if they are defined, otherwise the serial number of the module and the hardware identifier of the humidity sensor (for example: <tt>MyCustomName.relay1</tt>)</p>',ret:'a string that uniquely identifies the humidity sensor using logical names (ex: <tt>MyCustomName.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['Humidity']['get_functionDescriptor']={syn:'Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function.',lib:'humidity.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function. This identifier can be used to test if two instances of <tt>YFunction</tt> reference the same physical function on the same physical device.</p>',ret:'an identifier of type <tt>YFUN_DESCR</tt>.',ext:'If the function has never been contacted, the returned value is <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>.'};
+doc['Humidity']['get_functionId']={syn:'Returns the hardware identifier of the humidity sensor, without reference to the module.',lib:'humidity.get_functionId()',pro:'def get_functionId()',cmt:'<p>Returns the hardware identifier of the humidity sensor, without reference to the module. For example <tt>relay1</tt></p>',ret:'a string that identifies the humidity sensor (ex: <tt>relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['Humidity']['get_hardwareId']={syn:'Returns the unique hardware identifier of the humidity sensor in the form <tt>SERIAL.FUNCTIONID</tt>.',lib:'humidity.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Returns the unique hardware identifier of the humidity sensor in the form <tt>SERIAL.FUNCTIONID</tt>. The unique hardware identifier is composed of the device serial number and of the hardware identifier of the humidity sensor (for example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'a string that uniquely identifies the humidity sensor (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['Humidity']['get_highestValue']={syn:'Returns the maximal value observed for the humidity since the device was started.',lib:'humidity.get_highestValue()',pro:'def get_highestValue()',cmt:'<p>Returns the maximal value observed for the humidity since the device was started.</p>',ret:'a floating point number corresponding to the maximal value observed for the humidity since the device was started',ext:'On failure, throws an exception or returns <tt>Y_HIGHESTVALUE_INVALID</tt>.'};
+doc['Humidity']['get_logFrequency']={syn:'Returns the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory.',lib:'humidity.get_logFrequency()',pro:'def get_logFrequency()',cmt:'<p>Returns the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory.</p>',ret:'a string corresponding to the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory',ext:'On failure, throws an exception or returns <tt>Y_LOGFREQUENCY_INVALID</tt>.'};
+doc['Humidity']['get_logicalName']={syn:'Returns the logical name of the humidity sensor.',lib:'humidity.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Returns the logical name of the humidity sensor.</p>',ret:'a string corresponding to the logical name of the humidity sensor.',ext:'On failure, throws an exception or returns <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['Humidity']['get_lowestValue']={syn:'Returns the minimal value observed for the humidity since the device was started.',lib:'humidity.get_lowestValue()',pro:'def get_lowestValue()',cmt:'<p>Returns the minimal value observed for the humidity since the device was started.</p>',ret:'a floating point number corresponding to the minimal value observed for the humidity since the device was started',ext:'On failure, throws an exception or returns <tt>Y_LOWESTVALUE_INVALID</tt>.'};
+doc['Humidity']['get_module']={syn:'Gets the <tt>YModule</tt> object for the device on which the function is located.',lib:'humidity.get_module()',pro:'def get_module()',cmt:'<p>Gets the <tt>YModule</tt> object for the device on which the function is located. If the function cannot be located on any module, the returned instance of <tt>YModule</tt> is not shown as on-line.</p>',ret:'an instance of <tt>YModule</tt>'};
+doc['Humidity']['get_recordedData']={syn:'Retrieves a DataSet object holding historical data for this sensor, for a specified time interval.',lib:'humidity.get_recordedData()',pro:'def get_recordedData(<span id=pn>startTime</span>, <span id=pn>endTime</span>)',cmt:'<p>Retrieves a DataSet object holding historical data for this sensor, for a specified time interval. The measures will be retrieved from the data logger, which must have been turned on at the desired time. See the documentation of the DataSet class for information on how to get an overview of the recorded data, and how to load progressively a large set of measures from the data logger.</p><p> This function only works if the device uses a recent firmware, as DataSet objects are not supported by firmwares older than version 13000.</p>',par:{startTime:'the start of the desired measure time interval, as a Unix timestamp, i.e. the number of seconds since January 1, 1970 UTC. The special value 0 can be used to include any meaasure, without initial limit.',endTime:'the end of the desired measure time interval, as a Unix timestamp, i.e. the number of seconds since January 1, 1970 UTC. The special value 0 can be used to include any meaasure, without ending limit.'},ret:'an instance of YDataSet, providing access to historical data. Past measures can be loaded progressively using methods from the YDataSet object.'};
+doc['Humidity']['get_relHum']={syn:'Returns the current relative humidity, in per cents.',lib:'humidity.get_relHum()',pro:'def get_relHum()',cmt:'<p>Returns the current relative humidity, in per cents.</p>',ret:'a floating point number corresponding to the current relative humidity, in per cents',ext:'On failure, throws an exception or returns <tt>Y_RELHUM_INVALID</tt>.'};
+doc['Humidity']['get_reportFrequency']={syn:'Returns the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function.',lib:'humidity.get_reportFrequency()',pro:'def get_reportFrequency()',cmt:'<p>Returns the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function.</p>',ret:'a string corresponding to the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function',ext:'On failure, throws an exception or returns <tt>Y_REPORTFREQUENCY_INVALID</tt>.'};
+doc['Humidity']['get_resolution']={syn:'Returns the resolution of the measured values.',lib:'humidity.get_resolution()',pro:'def get_resolution()',cmt:'<p>Returns the resolution of the measured values. The resolution corresponds to the numerical precision of the measures, which is not always the same as the actual precision of the sensor.</p>',ret:'a floating point number corresponding to the resolution of the measured values',ext:'On failure, throws an exception or returns <tt>Y_RESOLUTION_INVALID</tt>.'};
+doc['Humidity']['get_sensorState']={syn:'Returns the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now.',lib:'humidity.get_sensorState()',pro:'def get_sensorState()',cmt:'<p>Returns the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now.</p>',ret:'an integer corresponding to the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now',ext:'On failure, throws an exception or returns <tt>Y_SENSORSTATE_INVALID</tt>.'};
+doc['Humidity']['get_unit']={syn:'Returns the measuring unit for the humidity.',lib:'humidity.get_unit()',pro:'def get_unit()',cmt:'<p>Returns the measuring unit for the humidity.</p>',ret:'a string corresponding to the measuring unit for the humidity',ext:'On failure, throws an exception or returns <tt>Y_UNIT_INVALID</tt>.'};
+doc['Humidity']['get_userData']={syn:'Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>.',lib:'humidity.get_userData()',pro:'def get_userData()',cmt:'<p>Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>. This attribute is never touched directly by the API, and is at disposal of the caller to store a context.</p>',ret:'the object stored previously by the caller.'};
+doc['Humidity']['isOnline']={syn:'Checks if the humidity sensor is currently reachable, without raising any error.',lib:'humidity.isOnline()',pro:'def isOnline()',cmt:'<p>Checks if the humidity sensor is currently reachable, without raising any error. If there is a cached value for the humidity sensor in cache, that has not yet expired, the device is considered reachable. No exception is raised if there is an error while trying to contact the device hosting the humidity sensor.</p>',ret:'<tt>true</tt> if the humidity sensor can be reached, and <tt>false</tt> otherwise'};
+doc['Humidity']['load']={syn:'Preloads the humidity sensor cache with a specified validity duration.',lib:'humidity.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Preloads the humidity sensor cache with a specified validity duration. By default, whenever accessing a device, all function attributes are kept in cache for the standard duration (5 ms). This method can be used to temporarily mark the cache as valid for a longer period, in order to reduce network traffic for instance.</p>',par:{msValidity:'an integer corresponding to the validity attributed to the loaded function parameters, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Humidity']['loadAttribute']={syn:'Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.',lib:'humidity.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'On failure, throws an exception or returns an empty string.'};
+doc['Humidity']['loadCalibrationPoints']={syn:'Retrieves error correction data points previously entered using the method <tt>calibrateFromPoints</tt>.',lib:'humidity.loadCalibrationPoints()',pro:'def loadCalibrationPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Retrieves error correction data points previously entered using the method <tt>calibrateFromPoints</tt>.</p>',par:{rawValues:'array of floating point numbers, that will be filled by the function with the raw sensor values for the correction points.',refValues:'array of floating point numbers, that will be filled by the function with the desired values for the correction points.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Humidity']['muteValueCallbacks']={syn:'Disable the propagation of every new advertised value to the parent hub.',lib:'humidity.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>Disable the propagation of every new advertised value to the parent hub. You can use this function to save bandwidth and CPU on computers with limited resources, or to prevent unwanted invocations of the HTTP callback. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Humidity']['nextHumidity']={syn:'Continues the enumeration of humidity sensors started using <tt>yFirstHumidity()</tt>.',lib:'humidity.nextHumidity()',pro:'def nextHumidity()',cmt:'<p>Continues the enumeration of humidity sensors started using <tt>yFirstHumidity()</tt>.</p>',ret:'a pointer to a <tt>YHumidity</tt> object, corresponding to a humidity sensor currently online, or a <tt>null</tt> pointer if there are no more humidity sensors to enumerate.'};
+doc['Humidity']['registerTimedReportCallback']={syn:'Registers the callback function that is invoked on every periodic timed notification.',lib:'humidity.registerTimedReportCallback()',pro:'def registerTimedReportCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every periodic timed notification. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and an YMeasure object describing the new advertised value.'}};
+doc['Humidity']['registerValueCallback']={syn:'Registers the callback function that is invoked on every change of advertised value.',lib:'humidity.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every change of advertised value. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and the character string describing the new advertised value.'}};
+doc['Humidity']['set_highestValue']={syn:'Changes the recorded maximal value observed.',lib:'humidity.set_highestValue()',pro:'def set_highestValue(<span id=pn>newval</span>)',cmt:'<p>Changes the recorded maximal value observed.</p>',par:{newval:'a floating point number corresponding to the recorded maximal value observed'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Humidity']['set_logFrequency']={syn:'Changes the datalogger recording frequency for this function.',lib:'humidity.set_logFrequency()',pro:'def set_logFrequency(<span id=pn>newval</span>)',cmt:'<p>Changes the datalogger recording frequency for this function. The frequency can be specified as samples per second, as sample per minute (for instance \x2215/m\x22) or in samples per hour (eg. \x224/h\x22). To disable recording for this function, use the value \x22OFF\x22.</p>',par:{newval:'a string corresponding to the datalogger recording frequency for this function'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Humidity']['set_logicalName']={syn:'Changes the logical name of the humidity sensor.',lib:'humidity.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Changes the logical name of the humidity sensor. You can use <tt>yCheckLogicalName()</tt> prior to this call to make sure that your parameter is valid. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the logical name of the humidity sensor.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Humidity']['set_lowestValue']={syn:'Changes the recorded minimal value observed.',lib:'humidity.set_lowestValue()',pro:'def set_lowestValue(<span id=pn>newval</span>)',cmt:'<p>Changes the recorded minimal value observed.</p>',par:{newval:'a floating point number corresponding to the recorded minimal value observed'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Humidity']['set_reportFrequency']={syn:'Changes the timed value notification frequency for this function.',lib:'humidity.set_reportFrequency()',pro:'def set_reportFrequency(<span id=pn>newval</span>)',cmt:'<p>Changes the timed value notification frequency for this function. The frequency can be specified as samples per second, as sample per minute (for instance \x2215/m\x22) or in samples per hour (eg. \x224/h\x22). To disable timed value notifications for this function, use the value \x22OFF\x22.</p>',par:{newval:'a string corresponding to the timed value notification frequency for this function'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Humidity']['set_resolution']={syn:'Changes the resolution of the measured physical values.',lib:'humidity.set_resolution()',pro:'def set_resolution(<span id=pn>newval</span>)',cmt:'<p>Changes the resolution of the measured physical values. The resolution corresponds to the numerical precision when displaying value. It does not change the precision of the measure itself.</p>',par:{newval:'a floating point number corresponding to the resolution of the measured physical values'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Humidity']['set_unit']={syn:'Changes the primary unit for measuring humidity.',lib:'humidity.set_unit()',pro:'def set_unit(<span id=pn>newval</span>)',cmt:'<p>Changes the primary unit for measuring humidity. That unit is a string. If that strings starts with the letter \x27g\x27, the primary measured value is the absolute humidity, in g/m3. Otherwise, the primary measured value will be the relative humidity (RH), in per cents.</p><p> Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the primary unit for measuring humidity'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Humidity']['set_userData']={syn:'Stores a user context provided as argument in the userData attribute of the function.',lib:'humidity.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Stores a user context provided as argument in the userData attribute of the function. This attribute is never touched by the API, and is at disposal of the caller to store a context.</p>',par:{data:'any kind of object to be stored'}};
+doc['Humidity']['startDataLogger']={syn:'Starts the data logger on the device.',lib:'humidity.startDataLogger()',pro:'def startDataLogger()',cmt:'<p>Starts the data logger on the device. Note that the data logger will only save the measures on this sensor if the logFrequency is not set to \x22OFF\x22.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.'};
+doc['Humidity']['stopDataLogger']={syn:'Stops the datalogger on the device.',lib:'humidity.stopDataLogger()',pro:'def stopDataLogger()',cmt:'<p>Stops the datalogger on the device.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.'};
+doc['Humidity']['unmuteValueCallbacks']={syn:'Re-enable the propagation of every new advertised value to the parent hub.',lib:'humidity.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>Re-enable the propagation of every new advertised value to the parent hub. This function reverts the effect of a previous call to <tt>muteValueCallbacks()</tt>. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+//--- (end of generated code: Humidity)
+//--- (generated code: Pressure)
+doc['Pressure']={'':{syn:'Pressure function interface',inc:'from yocto_pressure import *',cmt:'<p>The Yoctopuce class YPressure allows you to read and configure Yoctopuce pressure sensors. It inherits from YSensor class the core functions to read measurements, register callback functions, access to the autonomous datalogger.</p>'}};
+doc['Pressure']['FindPressure']={syn:'Retrieves a pressure sensor for a given identifier.',lib:'YPressure.FindPressure()',pro:'def FindPressure(<span id=pn>func</span>)',cmt:'<p>Retrieves a pressure sensor for a given identifier. The identifier can be specified using several formats:<br> <ul> <li>FunctionLogicalName</li> <li>ModuleSerialNumber.FunctionIdentifier</li> <li>ModuleSerialNumber.FunctionLogicalName</li> <li>ModuleLogicalName.FunctionIdentifier</li> <li>ModuleLogicalName.FunctionLogicalName</li> </ul></p><p> This function does not require that the pressure sensor is online at the time it is invoked. The returned object is nevertheless valid. Use the method <tt>YPressure.isOnline()</tt> to test if the pressure sensor is indeed online at a given time. In case of ambiguity when looking for a pressure sensor by logical name, no error is notified: the first instance found is returned. The search is performed first by hardware name, then by logical name.</p>',par:{func:'a string that uniquely characterizes the pressure sensor'},ret:'a <tt>YPressure</tt> object allowing you to drive the pressure sensor.'};
+doc['Pressure']['FirstPressure']={syn:'Starts the enumeration of pressure sensors currently accessible.',lib:'YPressure.FirstPressure()',pro:'def FirstPressure()',cmt:'<p>Starts the enumeration of pressure sensors currently accessible. Use the method <tt>YPressure.nextPressure()</tt> to iterate on next pressure sensors.</p>',ret:'a pointer to a <tt>YPressure</tt> object, corresponding to the first pressure sensor currently online, or a <tt>null</tt> pointer if there are none.'};
+doc['Pressure']['calibrateFromPoints']={syn:'Configures error correction data points, in particular to compensate for a possible perturbation of the measure caused by an enclosure.',lib:'pressure.calibrateFromPoints()',pro:'def calibrateFromPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Configures error correction data points, in particular to compensate for a possible perturbation of the measure caused by an enclosure. It is possible to configure up to five correction points. Correction points must be provided in ascending order, and be in the range of the sensor. The device will automatically perform a linear interpolation of the error correction between specified points. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p><p> For more information on advanced capabilities to refine the calibration of sensors, please contact support@yoctopuce.com.</p>',par:{rawValues:'array of floating point numbers, corresponding to the raw values returned by the sensor for the correction points.',refValues:'array of floating point numbers, corresponding to the corrected values for the correction points.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Pressure']['clearCache']={syn:'Invalidates the cache.',lib:'pressure.clearCache()',pro:'def clearCache()',cmt:'<p>Invalidates the cache. Invalidates the cache of the pressure sensor attributes. Forces the next call to get_xxx() or loadxxx() to use values that come from the device.</p>'};
+doc['Pressure']['describe']={syn:'Returns a short text that describes unambiguously the instance of the pressure sensor in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'pressure.describe()',pro:'def describe()',cmt:'<p>Returns a short text that describes unambiguously the instance of the pressure sensor in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. More precisely, <tt>TYPE</tt> is the type of the function, <tt>NAME</tt> it the name used for the first access to the function, <tt>SERIAL</tt> is the serial number of the module if the module is connected or <tt>\x22unresolved\x22</tt>, and <tt>FUNCTIONID</tt> is the hardware identifier of the function if the module is connected. For example, this method returns <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> if the module is already connected or <tt>Relay(BadCustomeName.relay1)=unresolved</tt> if the module has not yet been connected. This method does not trigger any USB or TCP transaction and can therefore be used in a debugger.</p>',ret:'a string that describes the pressure sensor (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['Pressure']['get_advertisedValue']={syn:'Returns the current value of the pressure sensor (no more than 6 characters).',lib:'pressure.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Returns the current value of the pressure sensor (no more than 6 characters).</p>',ret:'a string corresponding to the current value of the pressure sensor (no more than 6 characters).',ext:'On failure, throws an exception or returns <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['Pressure']['get_currentRawValue']={syn:'Returns the uncalibrated, unrounded raw value returned by the sensor, in millibar (hPa), as a floating point number.',lib:'pressure.get_currentRawValue()',pro:'def get_currentRawValue()',cmt:'<p>Returns the uncalibrated, unrounded raw value returned by the sensor, in millibar (hPa), as a floating point number.</p>',ret:'a floating point number corresponding to the uncalibrated, unrounded raw value returned by the sensor, in millibar (hPa), as a floating point number',ext:'On failure, throws an exception or returns <tt>Y_CURRENTRAWVALUE_INVALID</tt>.'};
+doc['Pressure']['get_currentValue']={syn:'Returns the current value of the pressure, in millibar (hPa), as a floating point number.',lib:'pressure.get_currentValue()',pro:'def get_currentValue()',cmt:'<p>Returns the current value of the pressure, in millibar (hPa), as a floating point number.</p>',ret:'a floating point number corresponding to the current value of the pressure, in millibar (hPa), as a floating point number',ext:'On failure, throws an exception or returns <tt>Y_CURRENTVALUE_INVALID</tt>.'};
+doc['Pressure']['get_errorMessage']={syn:'Returns the error message of the latest error with the pressure sensor.',lib:'pressure.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Returns the error message of the latest error with the pressure sensor. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a string corresponding to the latest error message that occured while using the pressure sensor object'};
+doc['Pressure']['get_errorType']={syn:'Returns the numerical error code of the latest error with the pressure sensor.',lib:'pressure.get_errorType()',pro:'def get_errorType()',cmt:'<p>Returns the numerical error code of the latest error with the pressure sensor. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a number corresponding to the code of the latest error that occurred while using the pressure sensor object'};
+doc['Pressure']['get_friendlyName']={syn:'Returns a global identifier of the pressure sensor in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>.',lib:'pressure.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Returns a global identifier of the pressure sensor in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>. The returned string uses the logical names of the module and of the pressure sensor if they are defined, otherwise the serial number of the module and the hardware identifier of the pressure sensor (for example: <tt>MyCustomName.relay1</tt>)</p>',ret:'a string that uniquely identifies the pressure sensor using logical names (ex: <tt>MyCustomName.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['Pressure']['get_functionDescriptor']={syn:'Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function.',lib:'pressure.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function. This identifier can be used to test if two instances of <tt>YFunction</tt> reference the same physical function on the same physical device.</p>',ret:'an identifier of type <tt>YFUN_DESCR</tt>.',ext:'If the function has never been contacted, the returned value is <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>.'};
+doc['Pressure']['get_functionId']={syn:'Returns the hardware identifier of the pressure sensor, without reference to the module.',lib:'pressure.get_functionId()',pro:'def get_functionId()',cmt:'<p>Returns the hardware identifier of the pressure sensor, without reference to the module. For example <tt>relay1</tt></p>',ret:'a string that identifies the pressure sensor (ex: <tt>relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['Pressure']['get_hardwareId']={syn:'Returns the unique hardware identifier of the pressure sensor in the form <tt>SERIAL.FUNCTIONID</tt>.',lib:'pressure.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Returns the unique hardware identifier of the pressure sensor in the form <tt>SERIAL.FUNCTIONID</tt>. The unique hardware identifier is composed of the device serial number and of the hardware identifier of the pressure sensor (for example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'a string that uniquely identifies the pressure sensor (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['Pressure']['get_highestValue']={syn:'Returns the maximal value observed for the pressure since the device was started.',lib:'pressure.get_highestValue()',pro:'def get_highestValue()',cmt:'<p>Returns the maximal value observed for the pressure since the device was started.</p>',ret:'a floating point number corresponding to the maximal value observed for the pressure since the device was started',ext:'On failure, throws an exception or returns <tt>Y_HIGHESTVALUE_INVALID</tt>.'};
+doc['Pressure']['get_logFrequency']={syn:'Returns the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory.',lib:'pressure.get_logFrequency()',pro:'def get_logFrequency()',cmt:'<p>Returns the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory.</p>',ret:'a string corresponding to the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory',ext:'On failure, throws an exception or returns <tt>Y_LOGFREQUENCY_INVALID</tt>.'};
+doc['Pressure']['get_logicalName']={syn:'Returns the logical name of the pressure sensor.',lib:'pressure.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Returns the logical name of the pressure sensor.</p>',ret:'a string corresponding to the logical name of the pressure sensor.',ext:'On failure, throws an exception or returns <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['Pressure']['get_lowestValue']={syn:'Returns the minimal value observed for the pressure since the device was started.',lib:'pressure.get_lowestValue()',pro:'def get_lowestValue()',cmt:'<p>Returns the minimal value observed for the pressure since the device was started.</p>',ret:'a floating point number corresponding to the minimal value observed for the pressure since the device was started',ext:'On failure, throws an exception or returns <tt>Y_LOWESTVALUE_INVALID</tt>.'};
+doc['Pressure']['get_module']={syn:'Gets the <tt>YModule</tt> object for the device on which the function is located.',lib:'pressure.get_module()',pro:'def get_module()',cmt:'<p>Gets the <tt>YModule</tt> object for the device on which the function is located. If the function cannot be located on any module, the returned instance of <tt>YModule</tt> is not shown as on-line.</p>',ret:'an instance of <tt>YModule</tt>'};
+doc['Pressure']['get_recordedData']={syn:'Retrieves a DataSet object holding historical data for this sensor, for a specified time interval.',lib:'pressure.get_recordedData()',pro:'def get_recordedData(<span id=pn>startTime</span>, <span id=pn>endTime</span>)',cmt:'<p>Retrieves a DataSet object holding historical data for this sensor, for a specified time interval. The measures will be retrieved from the data logger, which must have been turned on at the desired time. See the documentation of the DataSet class for information on how to get an overview of the recorded data, and how to load progressively a large set of measures from the data logger.</p><p> This function only works if the device uses a recent firmware, as DataSet objects are not supported by firmwares older than version 13000.</p>',par:{startTime:'the start of the desired measure time interval, as a Unix timestamp, i.e. the number of seconds since January 1, 1970 UTC. The special value 0 can be used to include any meaasure, without initial limit.',endTime:'the end of the desired measure time interval, as a Unix timestamp, i.e. the number of seconds since January 1, 1970 UTC. The special value 0 can be used to include any meaasure, without ending limit.'},ret:'an instance of YDataSet, providing access to historical data. Past measures can be loaded progressively using methods from the YDataSet object.'};
+doc['Pressure']['get_reportFrequency']={syn:'Returns the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function.',lib:'pressure.get_reportFrequency()',pro:'def get_reportFrequency()',cmt:'<p>Returns the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function.</p>',ret:'a string corresponding to the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function',ext:'On failure, throws an exception or returns <tt>Y_REPORTFREQUENCY_INVALID</tt>.'};
+doc['Pressure']['get_resolution']={syn:'Returns the resolution of the measured values.',lib:'pressure.get_resolution()',pro:'def get_resolution()',cmt:'<p>Returns the resolution of the measured values. The resolution corresponds to the numerical precision of the measures, which is not always the same as the actual precision of the sensor.</p>',ret:'a floating point number corresponding to the resolution of the measured values',ext:'On failure, throws an exception or returns <tt>Y_RESOLUTION_INVALID</tt>.'};
+doc['Pressure']['get_sensorState']={syn:'Returns the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now.',lib:'pressure.get_sensorState()',pro:'def get_sensorState()',cmt:'<p>Returns the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now.</p>',ret:'an integer corresponding to the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now',ext:'On failure, throws an exception or returns <tt>Y_SENSORSTATE_INVALID</tt>.'};
+doc['Pressure']['get_unit']={syn:'Returns the measuring unit for the pressure.',lib:'pressure.get_unit()',pro:'def get_unit()',cmt:'<p>Returns the measuring unit for the pressure.</p>',ret:'a string corresponding to the measuring unit for the pressure',ext:'On failure, throws an exception or returns <tt>Y_UNIT_INVALID</tt>.'};
+doc['Pressure']['get_userData']={syn:'Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>.',lib:'pressure.get_userData()',pro:'def get_userData()',cmt:'<p>Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>. This attribute is never touched directly by the API, and is at disposal of the caller to store a context.</p>',ret:'the object stored previously by the caller.'};
+doc['Pressure']['isOnline']={syn:'Checks if the pressure sensor is currently reachable, without raising any error.',lib:'pressure.isOnline()',pro:'def isOnline()',cmt:'<p>Checks if the pressure sensor is currently reachable, without raising any error. If there is a cached value for the pressure sensor in cache, that has not yet expired, the device is considered reachable. No exception is raised if there is an error while trying to contact the device hosting the pressure sensor.</p>',ret:'<tt>true</tt> if the pressure sensor can be reached, and <tt>false</tt> otherwise'};
+doc['Pressure']['load']={syn:'Preloads the pressure sensor cache with a specified validity duration.',lib:'pressure.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Preloads the pressure sensor cache with a specified validity duration. By default, whenever accessing a device, all function attributes are kept in cache for the standard duration (5 ms). This method can be used to temporarily mark the cache as valid for a longer period, in order to reduce network traffic for instance.</p>',par:{msValidity:'an integer corresponding to the validity attributed to the loaded function parameters, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Pressure']['loadAttribute']={syn:'Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.',lib:'pressure.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'On failure, throws an exception or returns an empty string.'};
+doc['Pressure']['loadCalibrationPoints']={syn:'Retrieves error correction data points previously entered using the method <tt>calibrateFromPoints</tt>.',lib:'pressure.loadCalibrationPoints()',pro:'def loadCalibrationPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Retrieves error correction data points previously entered using the method <tt>calibrateFromPoints</tt>.</p>',par:{rawValues:'array of floating point numbers, that will be filled by the function with the raw sensor values for the correction points.',refValues:'array of floating point numbers, that will be filled by the function with the desired values for the correction points.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Pressure']['muteValueCallbacks']={syn:'Disable the propagation of every new advertised value to the parent hub.',lib:'pressure.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>Disable the propagation of every new advertised value to the parent hub. You can use this function to save bandwidth and CPU on computers with limited resources, or to prevent unwanted invocations of the HTTP callback. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Pressure']['nextPressure']={syn:'Continues the enumeration of pressure sensors started using <tt>yFirstPressure()</tt>.',lib:'pressure.nextPressure()',pro:'def nextPressure()',cmt:'<p>Continues the enumeration of pressure sensors started using <tt>yFirstPressure()</tt>.</p>',ret:'a pointer to a <tt>YPressure</tt> object, corresponding to a pressure sensor currently online, or a <tt>null</tt> pointer if there are no more pressure sensors to enumerate.'};
+doc['Pressure']['registerTimedReportCallback']={syn:'Registers the callback function that is invoked on every periodic timed notification.',lib:'pressure.registerTimedReportCallback()',pro:'def registerTimedReportCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every periodic timed notification. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and an YMeasure object describing the new advertised value.'}};
+doc['Pressure']['registerValueCallback']={syn:'Registers the callback function that is invoked on every change of advertised value.',lib:'pressure.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every change of advertised value. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and the character string describing the new advertised value.'}};
+doc['Pressure']['set_highestValue']={syn:'Changes the recorded maximal value observed.',lib:'pressure.set_highestValue()',pro:'def set_highestValue(<span id=pn>newval</span>)',cmt:'<p>Changes the recorded maximal value observed.</p>',par:{newval:'a floating point number corresponding to the recorded maximal value observed'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Pressure']['set_logFrequency']={syn:'Changes the datalogger recording frequency for this function.',lib:'pressure.set_logFrequency()',pro:'def set_logFrequency(<span id=pn>newval</span>)',cmt:'<p>Changes the datalogger recording frequency for this function. The frequency can be specified as samples per second, as sample per minute (for instance \x2215/m\x22) or in samples per hour (eg. \x224/h\x22). To disable recording for this function, use the value \x22OFF\x22.</p>',par:{newval:'a string corresponding to the datalogger recording frequency for this function'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Pressure']['set_logicalName']={syn:'Changes the logical name of the pressure sensor.',lib:'pressure.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Changes the logical name of the pressure sensor. You can use <tt>yCheckLogicalName()</tt> prior to this call to make sure that your parameter is valid. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the logical name of the pressure sensor.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Pressure']['set_lowestValue']={syn:'Changes the recorded minimal value observed.',lib:'pressure.set_lowestValue()',pro:'def set_lowestValue(<span id=pn>newval</span>)',cmt:'<p>Changes the recorded minimal value observed.</p>',par:{newval:'a floating point number corresponding to the recorded minimal value observed'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Pressure']['set_reportFrequency']={syn:'Changes the timed value notification frequency for this function.',lib:'pressure.set_reportFrequency()',pro:'def set_reportFrequency(<span id=pn>newval</span>)',cmt:'<p>Changes the timed value notification frequency for this function. The frequency can be specified as samples per second, as sample per minute (for instance \x2215/m\x22) or in samples per hour (eg. \x224/h\x22). To disable timed value notifications for this function, use the value \x22OFF\x22.</p>',par:{newval:'a string corresponding to the timed value notification frequency for this function'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Pressure']['set_resolution']={syn:'Changes the resolution of the measured physical values.',lib:'pressure.set_resolution()',pro:'def set_resolution(<span id=pn>newval</span>)',cmt:'<p>Changes the resolution of the measured physical values. The resolution corresponds to the numerical precision when displaying value. It does not change the precision of the measure itself.</p>',par:{newval:'a floating point number corresponding to the resolution of the measured physical values'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Pressure']['set_userData']={syn:'Stores a user context provided as argument in the userData attribute of the function.',lib:'pressure.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Stores a user context provided as argument in the userData attribute of the function. This attribute is never touched by the API, and is at disposal of the caller to store a context.</p>',par:{data:'any kind of object to be stored'}};
+doc['Pressure']['startDataLogger']={syn:'Starts the data logger on the device.',lib:'pressure.startDataLogger()',pro:'def startDataLogger()',cmt:'<p>Starts the data logger on the device. Note that the data logger will only save the measures on this sensor if the logFrequency is not set to \x22OFF\x22.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.'};
+doc['Pressure']['stopDataLogger']={syn:'Stops the datalogger on the device.',lib:'pressure.stopDataLogger()',pro:'def stopDataLogger()',cmt:'<p>Stops the datalogger on the device.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.'};
+doc['Pressure']['unmuteValueCallbacks']={syn:'Re-enable the propagation of every new advertised value to the parent hub.',lib:'pressure.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>Re-enable the propagation of every new advertised value to the parent hub. This function reverts the effect of a previous call to <tt>muteValueCallbacks()</tt>. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+//--- (end of generated code: Pressure)
+//--- (generated code: LightSensor)
+doc['LightSensor']={'':{syn:'LightSensor function interface',inc:'from yocto_lightsensor import *',cmt:'<p>The Yoctopuce class YLightSensor allows you to read and configure Yoctopuce light sensors. It inherits from YSensor class the core functions to read measurements, register callback functions, access to the autonomous datalogger. This class adds the ability to easily perform a one-point linear calibration to compensate the effect of a glass or filter placed in front of the sensor. For some light sensors with several working modes, this class can select the desired working mode.</p>'}};
+doc['LightSensor']['FindLightSensor']={syn:'Retrieves a light sensor for a given identifier.',lib:'YLightSensor.FindLightSensor()',pro:'def FindLightSensor(<span id=pn>func</span>)',cmt:'<p>Retrieves a light sensor for a given identifier. The identifier can be specified using several formats:<br> <ul> <li>FunctionLogicalName</li> <li>ModuleSerialNumber.FunctionIdentifier</li> <li>ModuleSerialNumber.FunctionLogicalName</li> <li>ModuleLogicalName.FunctionIdentifier</li> <li>ModuleLogicalName.FunctionLogicalName</li> </ul></p><p> This function does not require that the light sensor is online at the time it is invoked. The returned object is nevertheless valid. Use the method <tt>YLightSensor.isOnline()</tt> to test if the light sensor is indeed online at a given time. In case of ambiguity when looking for a light sensor by logical name, no error is notified: the first instance found is returned. The search is performed first by hardware name, then by logical name.</p>',par:{func:'a string that uniquely characterizes the light sensor'},ret:'a <tt>YLightSensor</tt> object allowing you to drive the light sensor.'};
+doc['LightSensor']['FirstLightSensor']={syn:'Starts the enumeration of light sensors currently accessible.',lib:'YLightSensor.FirstLightSensor()',pro:'def FirstLightSensor()',cmt:'<p>Starts the enumeration of light sensors currently accessible. Use the method <tt>YLightSensor.nextLightSensor()</tt> to iterate on next light sensors.</p>',ret:'a pointer to a <tt>YLightSensor</tt> object, corresponding to the first light sensor currently online, or a <tt>null</tt> pointer if there are none.'};
+doc['LightSensor']['calibrate']={syn:'Changes the sensor-specific calibration parameter so that the current value matches a desired target (linear scaling).',lib:'lightsensor.calibrate()',pro:'def calibrate(<span id=pn>calibratedVal</span>)',cmt:'<p>Changes the sensor-specific calibration parameter so that the current value matches a desired target (linear scaling).</p>',par:{calibratedVal:'the desired target value.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['LightSensor']['calibrateFromPoints']={syn:'Configures error correction data points, in particular to compensate for a possible perturbation of the measure caused by an enclosure.',lib:'lightsensor.calibrateFromPoints()',pro:'def calibrateFromPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Configures error correction data points, in particular to compensate for a possible perturbation of the measure caused by an enclosure. It is possible to configure up to five correction points. Correction points must be provided in ascending order, and be in the range of the sensor. The device will automatically perform a linear interpolation of the error correction between specified points. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p><p> For more information on advanced capabilities to refine the calibration of sensors, please contact support@yoctopuce.com.</p>',par:{rawValues:'array of floating point numbers, corresponding to the raw values returned by the sensor for the correction points.',refValues:'array of floating point numbers, corresponding to the corrected values for the correction points.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['LightSensor']['clearCache']={syn:'Invalidates the cache.',lib:'lightsensor.clearCache()',pro:'def clearCache()',cmt:'<p>Invalidates the cache. Invalidates the cache of the light sensor attributes. Forces the next call to get_xxx() or loadxxx() to use values that come from the device.</p>'};
+doc['LightSensor']['describe']={syn:'Returns a short text that describes unambiguously the instance of the light sensor in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'lightsensor.describe()',pro:'def describe()',cmt:'<p>Returns a short text that describes unambiguously the instance of the light sensor in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. More precisely, <tt>TYPE</tt> is the type of the function, <tt>NAME</tt> it the name used for the first access to the function, <tt>SERIAL</tt> is the serial number of the module if the module is connected or <tt>\x22unresolved\x22</tt>, and <tt>FUNCTIONID</tt> is the hardware identifier of the function if the module is connected. For example, this method returns <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> if the module is already connected or <tt>Relay(BadCustomeName.relay1)=unresolved</tt> if the module has not yet been connected. This method does not trigger any USB or TCP transaction and can therefore be used in a debugger.</p>',ret:'a string that describes the light sensor (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['LightSensor']['get_advertisedValue']={syn:'Returns the current value of the light sensor (no more than 6 characters).',lib:'lightsensor.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Returns the current value of the light sensor (no more than 6 characters).</p>',ret:'a string corresponding to the current value of the light sensor (no more than 6 characters).',ext:'On failure, throws an exception or returns <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['LightSensor']['get_currentRawValue']={syn:'Returns the uncalibrated, unrounded raw value returned by the sensor, in the specified unit, as a floating point number.',lib:'lightsensor.get_currentRawValue()',pro:'def get_currentRawValue()',cmt:'<p>Returns the uncalibrated, unrounded raw value returned by the sensor, in the specified unit, as a floating point number.</p>',ret:'a floating point number corresponding to the uncalibrated, unrounded raw value returned by the sensor, in the specified unit, as a floating point number',ext:'On failure, throws an exception or returns <tt>Y_CURRENTRAWVALUE_INVALID</tt>.'};
+doc['LightSensor']['get_currentValue']={syn:'Returns the current value of the ambient light, in the specified unit, as a floating point number.',lib:'lightsensor.get_currentValue()',pro:'def get_currentValue()',cmt:'<p>Returns the current value of the ambient light, in the specified unit, as a floating point number.</p>',ret:'a floating point number corresponding to the current value of the ambient light, in the specified unit, as a floating point number',ext:'On failure, throws an exception or returns <tt>Y_CURRENTVALUE_INVALID</tt>.'};
+doc['LightSensor']['get_errorMessage']={syn:'Returns the error message of the latest error with the light sensor.',lib:'lightsensor.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Returns the error message of the latest error with the light sensor. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a string corresponding to the latest error message that occured while using the light sensor object'};
+doc['LightSensor']['get_errorType']={syn:'Returns the numerical error code of the latest error with the light sensor.',lib:'lightsensor.get_errorType()',pro:'def get_errorType()',cmt:'<p>Returns the numerical error code of the latest error with the light sensor. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a number corresponding to the code of the latest error that occurred while using the light sensor object'};
+doc['LightSensor']['get_friendlyName']={syn:'Returns a global identifier of the light sensor in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>.',lib:'lightsensor.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Returns a global identifier of the light sensor in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>. The returned string uses the logical names of the module and of the light sensor if they are defined, otherwise the serial number of the module and the hardware identifier of the light sensor (for example: <tt>MyCustomName.relay1</tt>)</p>',ret:'a string that uniquely identifies the light sensor using logical names (ex: <tt>MyCustomName.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['LightSensor']['get_functionDescriptor']={syn:'Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function.',lib:'lightsensor.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function. This identifier can be used to test if two instances of <tt>YFunction</tt> reference the same physical function on the same physical device.</p>',ret:'an identifier of type <tt>YFUN_DESCR</tt>.',ext:'If the function has never been contacted, the returned value is <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>.'};
+doc['LightSensor']['get_functionId']={syn:'Returns the hardware identifier of the light sensor, without reference to the module.',lib:'lightsensor.get_functionId()',pro:'def get_functionId()',cmt:'<p>Returns the hardware identifier of the light sensor, without reference to the module. For example <tt>relay1</tt></p>',ret:'a string that identifies the light sensor (ex: <tt>relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['LightSensor']['get_hardwareId']={syn:'Returns the unique hardware identifier of the light sensor in the form <tt>SERIAL.FUNCTIONID</tt>.',lib:'lightsensor.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Returns the unique hardware identifier of the light sensor in the form <tt>SERIAL.FUNCTIONID</tt>. The unique hardware identifier is composed of the device serial number and of the hardware identifier of the light sensor (for example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'a string that uniquely identifies the light sensor (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['LightSensor']['get_highestValue']={syn:'Returns the maximal value observed for the ambient light since the device was started.',lib:'lightsensor.get_highestValue()',pro:'def get_highestValue()',cmt:'<p>Returns the maximal value observed for the ambient light since the device was started.</p>',ret:'a floating point number corresponding to the maximal value observed for the ambient light since the device was started',ext:'On failure, throws an exception or returns <tt>Y_HIGHESTVALUE_INVALID</tt>.'};
+doc['LightSensor']['get_logFrequency']={syn:'Returns the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory.',lib:'lightsensor.get_logFrequency()',pro:'def get_logFrequency()',cmt:'<p>Returns the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory.</p>',ret:'a string corresponding to the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory',ext:'On failure, throws an exception or returns <tt>Y_LOGFREQUENCY_INVALID</tt>.'};
+doc['LightSensor']['get_logicalName']={syn:'Returns the logical name of the light sensor.',lib:'lightsensor.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Returns the logical name of the light sensor.</p>',ret:'a string corresponding to the logical name of the light sensor.',ext:'On failure, throws an exception or returns <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['LightSensor']['get_lowestValue']={syn:'Returns the minimal value observed for the ambient light since the device was started.',lib:'lightsensor.get_lowestValue()',pro:'def get_lowestValue()',cmt:'<p>Returns the minimal value observed for the ambient light since the device was started.</p>',ret:'a floating point number corresponding to the minimal value observed for the ambient light since the device was started',ext:'On failure, throws an exception or returns <tt>Y_LOWESTVALUE_INVALID</tt>.'};
+doc['LightSensor']['get_measureType']={syn:'Returns the type of light measure.',lib:'lightsensor.get_measureType()',pro:'def get_measureType()',cmt:'<p>Returns the type of light measure.</p>',ret:'a value among <tt>Y_MEASURETYPE_HUMAN_EYE</tt>, <tt>Y_MEASURETYPE_WIDE_SPECTRUM</tt>, <tt>Y_MEASURETYPE_INFRARED</tt>, <tt>Y_MEASURETYPE_HIGH_RATE</tt> and <tt>Y_MEASURETYPE_HIGH_ENERGY</tt> corresponding to the type of light measure',ext:'On failure, throws an exception or returns <tt>Y_MEASURETYPE_INVALID</tt>.'};
+doc['LightSensor']['get_module']={syn:'Gets the <tt>YModule</tt> object for the device on which the function is located.',lib:'lightsensor.get_module()',pro:'def get_module()',cmt:'<p>Gets the <tt>YModule</tt> object for the device on which the function is located. If the function cannot be located on any module, the returned instance of <tt>YModule</tt> is not shown as on-line.</p>',ret:'an instance of <tt>YModule</tt>'};
+doc['LightSensor']['get_recordedData']={syn:'Retrieves a DataSet object holding historical data for this sensor, for a specified time interval.',lib:'lightsensor.get_recordedData()',pro:'def get_recordedData(<span id=pn>startTime</span>, <span id=pn>endTime</span>)',cmt:'<p>Retrieves a DataSet object holding historical data for this sensor, for a specified time interval. The measures will be retrieved from the data logger, which must have been turned on at the desired time. See the documentation of the DataSet class for information on how to get an overview of the recorded data, and how to load progressively a large set of measures from the data logger.</p><p> This function only works if the device uses a recent firmware, as DataSet objects are not supported by firmwares older than version 13000.</p>',par:{startTime:'the start of the desired measure time interval, as a Unix timestamp, i.e. the number of seconds since January 1, 1970 UTC. The special value 0 can be used to include any meaasure, without initial limit.',endTime:'the end of the desired measure time interval, as a Unix timestamp, i.e. the number of seconds since January 1, 1970 UTC. The special value 0 can be used to include any meaasure, without ending limit.'},ret:'an instance of YDataSet, providing access to historical data. Past measures can be loaded progressively using methods from the YDataSet object.'};
+doc['LightSensor']['get_reportFrequency']={syn:'Returns the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function.',lib:'lightsensor.get_reportFrequency()',pro:'def get_reportFrequency()',cmt:'<p>Returns the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function.</p>',ret:'a string corresponding to the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function',ext:'On failure, throws an exception or returns <tt>Y_REPORTFREQUENCY_INVALID</tt>.'};
+doc['LightSensor']['get_resolution']={syn:'Returns the resolution of the measured values.',lib:'lightsensor.get_resolution()',pro:'def get_resolution()',cmt:'<p>Returns the resolution of the measured values. The resolution corresponds to the numerical precision of the measures, which is not always the same as the actual precision of the sensor.</p>',ret:'a floating point number corresponding to the resolution of the measured values',ext:'On failure, throws an exception or returns <tt>Y_RESOLUTION_INVALID</tt>.'};
+doc['LightSensor']['get_sensorState']={syn:'Returns the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now.',lib:'lightsensor.get_sensorState()',pro:'def get_sensorState()',cmt:'<p>Returns the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now.</p>',ret:'an integer corresponding to the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now',ext:'On failure, throws an exception or returns <tt>Y_SENSORSTATE_INVALID</tt>.'};
+doc['LightSensor']['get_unit']={syn:'Returns the measuring unit for the ambient light.',lib:'lightsensor.get_unit()',pro:'def get_unit()',cmt:'<p>Returns the measuring unit for the ambient light.</p>',ret:'a string corresponding to the measuring unit for the ambient light',ext:'On failure, throws an exception or returns <tt>Y_UNIT_INVALID</tt>.'};
+doc['LightSensor']['get_userData']={syn:'Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>.',lib:'lightsensor.get_userData()',pro:'def get_userData()',cmt:'<p>Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>. This attribute is never touched directly by the API, and is at disposal of the caller to store a context.</p>',ret:'the object stored previously by the caller.'};
+doc['LightSensor']['isOnline']={syn:'Checks if the light sensor is currently reachable, without raising any error.',lib:'lightsensor.isOnline()',pro:'def isOnline()',cmt:'<p>Checks if the light sensor is currently reachable, without raising any error. If there is a cached value for the light sensor in cache, that has not yet expired, the device is considered reachable. No exception is raised if there is an error while trying to contact the device hosting the light sensor.</p>',ret:'<tt>true</tt> if the light sensor can be reached, and <tt>false</tt> otherwise'};
+doc['LightSensor']['load']={syn:'Preloads the light sensor cache with a specified validity duration.',lib:'lightsensor.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Preloads the light sensor cache with a specified validity duration. By default, whenever accessing a device, all function attributes are kept in cache for the standard duration (5 ms). This method can be used to temporarily mark the cache as valid for a longer period, in order to reduce network traffic for instance.</p>',par:{msValidity:'an integer corresponding to the validity attributed to the loaded function parameters, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['LightSensor']['loadAttribute']={syn:'Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.',lib:'lightsensor.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'On failure, throws an exception or returns an empty string.'};
+doc['LightSensor']['loadCalibrationPoints']={syn:'Retrieves error correction data points previously entered using the method <tt>calibrateFromPoints</tt>.',lib:'lightsensor.loadCalibrationPoints()',pro:'def loadCalibrationPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Retrieves error correction data points previously entered using the method <tt>calibrateFromPoints</tt>.</p>',par:{rawValues:'array of floating point numbers, that will be filled by the function with the raw sensor values for the correction points.',refValues:'array of floating point numbers, that will be filled by the function with the desired values for the correction points.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['LightSensor']['muteValueCallbacks']={syn:'Disable the propagation of every new advertised value to the parent hub.',lib:'lightsensor.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>Disable the propagation of every new advertised value to the parent hub. You can use this function to save bandwidth and CPU on computers with limited resources, or to prevent unwanted invocations of the HTTP callback. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['LightSensor']['nextLightSensor']={syn:'Continues the enumeration of light sensors started using <tt>yFirstLightSensor()</tt>.',lib:'lightsensor.nextLightSensor()',pro:'def nextLightSensor()',cmt:'<p>Continues the enumeration of light sensors started using <tt>yFirstLightSensor()</tt>.</p>',ret:'a pointer to a <tt>YLightSensor</tt> object, corresponding to a light sensor currently online, or a <tt>null</tt> pointer if there are no more light sensors to enumerate.'};
+doc['LightSensor']['registerTimedReportCallback']={syn:'Registers the callback function that is invoked on every periodic timed notification.',lib:'lightsensor.registerTimedReportCallback()',pro:'def registerTimedReportCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every periodic timed notification. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and an YMeasure object describing the new advertised value.'}};
+doc['LightSensor']['registerValueCallback']={syn:'Registers the callback function that is invoked on every change of advertised value.',lib:'lightsensor.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every change of advertised value. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and the character string describing the new advertised value.'}};
+doc['LightSensor']['set_highestValue']={syn:'Changes the recorded maximal value observed.',lib:'lightsensor.set_highestValue()',pro:'def set_highestValue(<span id=pn>newval</span>)',cmt:'<p>Changes the recorded maximal value observed.</p>',par:{newval:'a floating point number corresponding to the recorded maximal value observed'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['LightSensor']['set_logFrequency']={syn:'Changes the datalogger recording frequency for this function.',lib:'lightsensor.set_logFrequency()',pro:'def set_logFrequency(<span id=pn>newval</span>)',cmt:'<p>Changes the datalogger recording frequency for this function. The frequency can be specified as samples per second, as sample per minute (for instance \x2215/m\x22) or in samples per hour (eg. \x224/h\x22). To disable recording for this function, use the value \x22OFF\x22.</p>',par:{newval:'a string corresponding to the datalogger recording frequency for this function'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['LightSensor']['set_logicalName']={syn:'Changes the logical name of the light sensor.',lib:'lightsensor.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Changes the logical name of the light sensor. You can use <tt>yCheckLogicalName()</tt> prior to this call to make sure that your parameter is valid. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the logical name of the light sensor.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['LightSensor']['set_lowestValue']={syn:'Changes the recorded minimal value observed.',lib:'lightsensor.set_lowestValue()',pro:'def set_lowestValue(<span id=pn>newval</span>)',cmt:'<p>Changes the recorded minimal value observed.</p>',par:{newval:'a floating point number corresponding to the recorded minimal value observed'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['LightSensor']['set_measureType']={syn:'Modify the light sensor type used in the device.',lib:'lightsensor.set_measureType()',pro:'def set_measureType(<span id=pn>newval</span>)',cmt:'<p>Modify the light sensor type used in the device. The measure can either approximate the response of the human eye, focus on a specific light spectrum, depending on the capabilities of the light-sensitive cell. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a value among <tt>Y_MEASURETYPE_HUMAN_EYE</tt>, <tt>Y_MEASURETYPE_WIDE_SPECTRUM</tt>, <tt>Y_MEASURETYPE_INFRARED</tt>, <tt>Y_MEASURETYPE_HIGH_RATE</tt> and <tt>Y_MEASURETYPE_HIGH_ENERGY</tt>'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['LightSensor']['set_reportFrequency']={syn:'Changes the timed value notification frequency for this function.',lib:'lightsensor.set_reportFrequency()',pro:'def set_reportFrequency(<span id=pn>newval</span>)',cmt:'<p>Changes the timed value notification frequency for this function. The frequency can be specified as samples per second, as sample per minute (for instance \x2215/m\x22) or in samples per hour (eg. \x224/h\x22). To disable timed value notifications for this function, use the value \x22OFF\x22.</p>',par:{newval:'a string corresponding to the timed value notification frequency for this function'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['LightSensor']['set_resolution']={syn:'Changes the resolution of the measured physical values.',lib:'lightsensor.set_resolution()',pro:'def set_resolution(<span id=pn>newval</span>)',cmt:'<p>Changes the resolution of the measured physical values. The resolution corresponds to the numerical precision when displaying value. It does not change the precision of the measure itself.</p>',par:{newval:'a floating point number corresponding to the resolution of the measured physical values'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['LightSensor']['set_userData']={syn:'Stores a user context provided as argument in the userData attribute of the function.',lib:'lightsensor.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Stores a user context provided as argument in the userData attribute of the function. This attribute is never touched by the API, and is at disposal of the caller to store a context.</p>',par:{data:'any kind of object to be stored'}};
+doc['LightSensor']['startDataLogger']={syn:'Starts the data logger on the device.',lib:'lightsensor.startDataLogger()',pro:'def startDataLogger()',cmt:'<p>Starts the data logger on the device. Note that the data logger will only save the measures on this sensor if the logFrequency is not set to \x22OFF\x22.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.'};
+doc['LightSensor']['stopDataLogger']={syn:'Stops the datalogger on the device.',lib:'lightsensor.stopDataLogger()',pro:'def stopDataLogger()',cmt:'<p>Stops the datalogger on the device.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.'};
+doc['LightSensor']['unmuteValueCallbacks']={syn:'Re-enable the propagation of every new advertised value to the parent hub.',lib:'lightsensor.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>Re-enable the propagation of every new advertised value to the parent hub. This function reverts the effect of a previous call to <tt>muteValueCallbacks()</tt>. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+//--- (end of generated code: LightSensor)
+//--- (generated code: HubPort)
+doc['HubPort']={'':{syn:'Yocto-hub port interface',inc:'from yocto_hubport import *',cmt:'<p>YHubPort objects provide control over the power supply for every YoctoHub port and provide information about the device connected to it. The logical name of a YHubPort is always automatically set to the unique serial number of the Yoctopuce device connected to it.</p>'}};
+doc['HubPort']['FindHubPort']={syn:'Retrieves a Yocto-hub port for a given identifier.',lib:'YHubPort.FindHubPort()',pro:'def FindHubPort(<span id=pn>func</span>)',cmt:'<p>Retrieves a Yocto-hub port for a given identifier. The identifier can be specified using several formats:<br> <ul> <li>FunctionLogicalName</li> <li>ModuleSerialNumber.FunctionIdentifier</li> <li>ModuleSerialNumber.FunctionLogicalName</li> <li>ModuleLogicalName.FunctionIdentifier</li> <li>ModuleLogicalName.FunctionLogicalName</li> </ul></p><p> This function does not require that the Yocto-hub port is online at the time it is invoked. The returned object is nevertheless valid. Use the method <tt>YHubPort.isOnline()</tt> to test if the Yocto-hub port is indeed online at a given time. In case of ambiguity when looking for a Yocto-hub port by logical name, no error is notified: the first instance found is returned. The search is performed first by hardware name, then by logical name.</p>',par:{func:'a string that uniquely characterizes the Yocto-hub port'},ret:'a <tt>YHubPort</tt> object allowing you to drive the Yocto-hub port.'};
+doc['HubPort']['FirstHubPort']={syn:'Starts the enumeration of Yocto-hub ports currently accessible.',lib:'YHubPort.FirstHubPort()',pro:'def FirstHubPort()',cmt:'<p>Starts the enumeration of Yocto-hub ports currently accessible. Use the method <tt>YHubPort.nextHubPort()</tt> to iterate on next Yocto-hub ports.</p>',ret:'a pointer to a <tt>YHubPort</tt> object, corresponding to the first Yocto-hub port currently online, or a <tt>null</tt> pointer if there are none.'};
+doc['HubPort']['clearCache']={syn:'Invalidates the cache.',lib:'hubport.clearCache()',pro:'def clearCache()',cmt:'<p>Invalidates the cache. Invalidates the cache of the Yocto-hub port attributes. Forces the next call to get_xxx() or loadxxx() to use values that come from the device.</p>'};
+doc['HubPort']['describe']={syn:'Returns a short text that describes unambiguously the instance of the Yocto-hub port in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'hubport.describe()',pro:'def describe()',cmt:'<p>Returns a short text that describes unambiguously the instance of the Yocto-hub port in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. More precisely, <tt>TYPE</tt> is the type of the function, <tt>NAME</tt> it the name used for the first access to the function, <tt>SERIAL</tt> is the serial number of the module if the module is connected or <tt>\x22unresolved\x22</tt>, and <tt>FUNCTIONID</tt> is the hardware identifier of the function if the module is connected. For example, this method returns <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> if the module is already connected or <tt>Relay(BadCustomeName.relay1)=unresolved</tt> if the module has not yet been connected. This method does not trigger any USB or TCP transaction and can therefore be used in a debugger.</p>',ret:'a string that describes the Yocto-hub port (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['HubPort']['get_advertisedValue']={syn:'Returns the current value of the Yocto-hub port (no more than 6 characters).',lib:'hubport.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Returns the current value of the Yocto-hub port (no more than 6 characters).</p>',ret:'a string corresponding to the current value of the Yocto-hub port (no more than 6 characters).',ext:'On failure, throws an exception or returns <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['HubPort']['get_baudRate']={syn:'Returns the current baud rate used by this Yocto-hub port, in kbps.',lib:'hubport.get_baudRate()',pro:'def get_baudRate()',cmt:'<p>Returns the current baud rate used by this Yocto-hub port, in kbps. The default value is 1000 kbps, but a slower rate may be used if communication problems are encountered.</p>',ret:'an integer corresponding to the current baud rate used by this Yocto-hub port, in kbps',ext:'On failure, throws an exception or returns <tt>Y_BAUDRATE_INVALID</tt>.'};
+doc['HubPort']['get_enabled']={syn:'Returns true if the Yocto-hub port is powered, false otherwise.',lib:'hubport.get_enabled()',pro:'def get_enabled()',cmt:'<p>Returns true if the Yocto-hub port is powered, false otherwise.</p>',ret:'either <tt>Y_ENABLED_FALSE</tt> or <tt>Y_ENABLED_TRUE</tt>, according to true if the Yocto-hub port is powered, false otherwise',ext:'On failure, throws an exception or returns <tt>Y_ENABLED_INVALID</tt>.'};
+doc['HubPort']['get_errorMessage']={syn:'Returns the error message of the latest error with the Yocto-hub port.',lib:'hubport.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Returns the error message of the latest error with the Yocto-hub port. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a string corresponding to the latest error message that occured while using the Yocto-hub port object'};
+doc['HubPort']['get_errorType']={syn:'Returns the numerical error code of the latest error with the Yocto-hub port.',lib:'hubport.get_errorType()',pro:'def get_errorType()',cmt:'<p>Returns the numerical error code of the latest error with the Yocto-hub port. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a number corresponding to the code of the latest error that occurred while using the Yocto-hub port object'};
+doc['HubPort']['get_friendlyName']={syn:'Returns a global identifier of the Yocto-hub port in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>.',lib:'hubport.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Returns a global identifier of the Yocto-hub port in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>. The returned string uses the logical names of the module and of the Yocto-hub port if they are defined, otherwise the serial number of the module and the hardware identifier of the Yocto-hub port (for example: <tt>MyCustomName.relay1</tt>)</p>',ret:'a string that uniquely identifies the Yocto-hub port using logical names (ex: <tt>MyCustomName.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['HubPort']['get_functionDescriptor']={syn:'Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function.',lib:'hubport.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function. This identifier can be used to test if two instances of <tt>YFunction</tt> reference the same physical function on the same physical device.</p>',ret:'an identifier of type <tt>YFUN_DESCR</tt>.',ext:'If the function has never been contacted, the returned value is <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>.'};
+doc['HubPort']['get_functionId']={syn:'Returns the hardware identifier of the Yocto-hub port, without reference to the module.',lib:'hubport.get_functionId()',pro:'def get_functionId()',cmt:'<p>Returns the hardware identifier of the Yocto-hub port, without reference to the module. For example <tt>relay1</tt></p>',ret:'a string that identifies the Yocto-hub port (ex: <tt>relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['HubPort']['get_hardwareId']={syn:'Returns the unique hardware identifier of the Yocto-hub port in the form <tt>SERIAL.FUNCTIONID</tt>.',lib:'hubport.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Returns the unique hardware identifier of the Yocto-hub port in the form <tt>SERIAL.FUNCTIONID</tt>. The unique hardware identifier is composed of the device serial number and of the hardware identifier of the Yocto-hub port (for example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'a string that uniquely identifies the Yocto-hub port (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['HubPort']['get_logicalName']={syn:'Returns the logical name of the Yocto-hub port.',lib:'hubport.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Returns the logical name of the Yocto-hub port.</p>',ret:'a string corresponding to the logical name of the Yocto-hub port.',ext:'On failure, throws an exception or returns <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['HubPort']['get_module']={syn:'Gets the <tt>YModule</tt> object for the device on which the function is located.',lib:'hubport.get_module()',pro:'def get_module()',cmt:'<p>Gets the <tt>YModule</tt> object for the device on which the function is located. If the function cannot be located on any module, the returned instance of <tt>YModule</tt> is not shown as on-line.</p>',ret:'an instance of <tt>YModule</tt>'};
+doc['HubPort']['get_portState']={syn:'Returns the current state of the Yocto-hub port.',lib:'hubport.get_portState()',pro:'def get_portState()',cmt:'<p>Returns the current state of the Yocto-hub port.</p>',ret:'a value among <tt>Y_PORTSTATE_OFF</tt>, <tt>Y_PORTSTATE_OVRLD</tt>, <tt>Y_PORTSTATE_ON</tt>, <tt>Y_PORTSTATE_RUN</tt> and <tt>Y_PORTSTATE_PROG</tt> corresponding to the current state of the Yocto-hub port',ext:'On failure, throws an exception or returns <tt>Y_PORTSTATE_INVALID</tt>.'};
+doc['HubPort']['get_userData']={syn:'Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>.',lib:'hubport.get_userData()',pro:'def get_userData()',cmt:'<p>Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>. This attribute is never touched directly by the API, and is at disposal of the caller to store a context.</p>',ret:'the object stored previously by the caller.'};
+doc['HubPort']['isOnline']={syn:'Checks if the Yocto-hub port is currently reachable, without raising any error.',lib:'hubport.isOnline()',pro:'def isOnline()',cmt:'<p>Checks if the Yocto-hub port is currently reachable, without raising any error. If there is a cached value for the Yocto-hub port in cache, that has not yet expired, the device is considered reachable. No exception is raised if there is an error while trying to contact the device hosting the Yocto-hub port.</p>',ret:'<tt>true</tt> if the Yocto-hub port can be reached, and <tt>false</tt> otherwise'};
+doc['HubPort']['load']={syn:'Preloads the Yocto-hub port cache with a specified validity duration.',lib:'hubport.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Preloads the Yocto-hub port cache with a specified validity duration. By default, whenever accessing a device, all function attributes are kept in cache for the standard duration (5 ms). This method can be used to temporarily mark the cache as valid for a longer period, in order to reduce network traffic for instance.</p>',par:{msValidity:'an integer corresponding to the validity attributed to the loaded function parameters, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['HubPort']['loadAttribute']={syn:'Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.',lib:'hubport.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'On failure, throws an exception or returns an empty string.'};
+doc['HubPort']['muteValueCallbacks']={syn:'Disable the propagation of every new advertised value to the parent hub.',lib:'hubport.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>Disable the propagation of every new advertised value to the parent hub. You can use this function to save bandwidth and CPU on computers with limited resources, or to prevent unwanted invocations of the HTTP callback. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['HubPort']['nextHubPort']={syn:'Continues the enumeration of Yocto-hub ports started using <tt>yFirstHubPort()</tt>.',lib:'hubport.nextHubPort()',pro:'def nextHubPort()',cmt:'<p>Continues the enumeration of Yocto-hub ports started using <tt>yFirstHubPort()</tt>.</p>',ret:'a pointer to a <tt>YHubPort</tt> object, corresponding to a Yocto-hub port currently online, or a <tt>null</tt> pointer if there are no more Yocto-hub ports to enumerate.'};
+doc['HubPort']['registerValueCallback']={syn:'Registers the callback function that is invoked on every change of advertised value.',lib:'hubport.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every change of advertised value. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and the character string describing the new advertised value.'}};
+doc['HubPort']['set_enabled']={syn:'Changes the activation of the Yocto-hub port.',lib:'hubport.set_enabled()',pro:'def set_enabled(<span id=pn>newval</span>)',cmt:'<p>Changes the activation of the Yocto-hub port. If the port is enabled, the connected module is powered. Otherwise, port power is shut down.</p>',par:{newval:'either <tt>Y_ENABLED_FALSE</tt> or <tt>Y_ENABLED_TRUE</tt>, according to the activation of the Yocto-hub port'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['HubPort']['set_logicalName']={syn:'Changes the logical name of the Yocto-hub port.',lib:'hubport.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Changes the logical name of the Yocto-hub port. You can use <tt>yCheckLogicalName()</tt> prior to this call to make sure that your parameter is valid. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the logical name of the Yocto-hub port.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['HubPort']['set_userData']={syn:'Stores a user context provided as argument in the userData attribute of the function.',lib:'hubport.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Stores a user context provided as argument in the userData attribute of the function. This attribute is never touched by the API, and is at disposal of the caller to store a context.</p>',par:{data:'any kind of object to be stored'}};
+doc['HubPort']['unmuteValueCallbacks']={syn:'Re-enable the propagation of every new advertised value to the parent hub.',lib:'hubport.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>Re-enable the propagation of every new advertised value to the parent hub. This function reverts the effect of a previous call to <tt>muteValueCallbacks()</tt>. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+//--- (end of generated code: HubPort)
+//--- (generated code: AnButton)
+doc['AnButton']={'':{syn:'AnButton function interface',inc:'from yocto_anbutton import *',cmt:'<p>Yoctopuce application programming interface allows you to measure the state of a simple button as well as to read an analog potentiometer (variable resistance). This can be use for instance with a continuous rotating knob, a throttle grip or a joystick. The module is capable to calibrate itself on min and max values, in order to compute a calibrated value that varies proportionally with the potentiometer position, regardless of its total resistance.</p>'}};
+doc['AnButton']['FindAnButton']={syn:'Retrieves an analog input for a given identifier.',lib:'YAnButton.FindAnButton()',pro:'def FindAnButton(<span id=pn>func</span>)',cmt:'<p>Retrieves an analog input for a given identifier. The identifier can be specified using several formats:<br> <ul> <li>FunctionLogicalName</li> <li>ModuleSerialNumber.FunctionIdentifier</li> <li>ModuleSerialNumber.FunctionLogicalName</li> <li>ModuleLogicalName.FunctionIdentifier</li> <li>ModuleLogicalName.FunctionLogicalName</li> </ul></p><p> This function does not require that the analog input is online at the time it is invoked. The returned object is nevertheless valid. Use the method <tt>YAnButton.isOnline()</tt> to test if the analog input is indeed online at a given time. In case of ambiguity when looking for an analog input by logical name, no error is notified: the first instance found is returned. The search is performed first by hardware name, then by logical name.</p>',par:{func:'a string that uniquely characterizes the analog input'},ret:'a <tt>YAnButton</tt> object allowing you to drive the analog input.'};
+doc['AnButton']['FirstAnButton']={syn:'Starts the enumeration of analog inputs currently accessible.',lib:'YAnButton.FirstAnButton()',pro:'def FirstAnButton()',cmt:'<p>Starts the enumeration of analog inputs currently accessible. Use the method <tt>YAnButton.nextAnButton()</tt> to iterate on next analog inputs.</p>',ret:'a pointer to a <tt>YAnButton</tt> object, corresponding to the first analog input currently online, or a <tt>null</tt> pointer if there are none.'};
+doc['AnButton']['clearCache']={syn:'Invalidates the cache.',lib:'anbutton.clearCache()',pro:'def clearCache()',cmt:'<p>Invalidates the cache. Invalidates the cache of the analog input attributes. Forces the next call to get_xxx() or loadxxx() to use values that come from the device.</p>'};
+doc['AnButton']['describe']={syn:'Returns a short text that describes unambiguously the instance of the analog input in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'anbutton.describe()',pro:'def describe()',cmt:'<p>Returns a short text that describes unambiguously the instance of the analog input in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. More precisely, <tt>TYPE</tt> is the type of the function, <tt>NAME</tt> it the name used for the first access to the function, <tt>SERIAL</tt> is the serial number of the module if the module is connected or <tt>\x22unresolved\x22</tt>, and <tt>FUNCTIONID</tt> is the hardware identifier of the function if the module is connected. For example, this method returns <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> if the module is already connected or <tt>Relay(BadCustomeName.relay1)=unresolved</tt> if the module has not yet been connected. This method does not trigger any USB or TCP transaction and can therefore be used in a debugger.</p>',ret:'a string that describes the analog input (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['AnButton']['get_advertisedValue']={syn:'Returns the current value of the analog input (no more than 6 characters).',lib:'anbutton.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Returns the current value of the analog input (no more than 6 characters).</p>',ret:'a string corresponding to the current value of the analog input (no more than 6 characters).',ext:'On failure, throws an exception or returns <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['AnButton']['get_analogCalibration']={syn:'Tells if a calibration process is currently ongoing.',lib:'anbutton.get_analogCalibration()',pro:'def get_analogCalibration()',cmt:'<p>Tells if a calibration process is currently ongoing.</p>',ret:'either <tt>Y_ANALOGCALIBRATION_OFF</tt> or <tt>Y_ANALOGCALIBRATION_ON</tt>',ext:'On failure, throws an exception or returns <tt>Y_ANALOGCALIBRATION_INVALID</tt>.'};
+doc['AnButton']['get_calibratedValue']={syn:'Returns the current calibrated input value (between 0 and 1000, included).',lib:'anbutton.get_calibratedValue()',pro:'def get_calibratedValue()',cmt:'<p>Returns the current calibrated input value (between 0 and 1000, included).</p>',ret:'an integer corresponding to the current calibrated input value (between 0 and 1000, included)',ext:'On failure, throws an exception or returns <tt>Y_CALIBRATEDVALUE_INVALID</tt>.'};
+doc['AnButton']['get_calibrationMax']={syn:'Returns the maximal value measured during the calibration (between 0 and 4095, included).',lib:'anbutton.get_calibrationMax()',pro:'def get_calibrationMax()',cmt:'<p>Returns the maximal value measured during the calibration (between 0 and 4095, included).</p>',ret:'an integer corresponding to the maximal value measured during the calibration (between 0 and 4095, included)',ext:'On failure, throws an exception or returns <tt>Y_CALIBRATIONMAX_INVALID</tt>.'};
+doc['AnButton']['get_calibrationMin']={syn:'Returns the minimal value measured during the calibration (between 0 and 4095, included).',lib:'anbutton.get_calibrationMin()',pro:'def get_calibrationMin()',cmt:'<p>Returns the minimal value measured during the calibration (between 0 and 4095, included).</p>',ret:'an integer corresponding to the minimal value measured during the calibration (between 0 and 4095, included)',ext:'On failure, throws an exception or returns <tt>Y_CALIBRATIONMIN_INVALID</tt>.'};
+doc['AnButton']['get_errorMessage']={syn:'Returns the error message of the latest error with the analog input.',lib:'anbutton.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Returns the error message of the latest error with the analog input. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a string corresponding to the latest error message that occured while using the analog input object'};
+doc['AnButton']['get_errorType']={syn:'Returns the numerical error code of the latest error with the analog input.',lib:'anbutton.get_errorType()',pro:'def get_errorType()',cmt:'<p>Returns the numerical error code of the latest error with the analog input. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a number corresponding to the code of the latest error that occurred while using the analog input object'};
+doc['AnButton']['get_friendlyName']={syn:'Returns a global identifier of the analog input in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>.',lib:'anbutton.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Returns a global identifier of the analog input in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>. The returned string uses the logical names of the module and of the analog input if they are defined, otherwise the serial number of the module and the hardware identifier of the analog input (for example: <tt>MyCustomName.relay1</tt>)</p>',ret:'a string that uniquely identifies the analog input using logical names (ex: <tt>MyCustomName.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['AnButton']['get_functionDescriptor']={syn:'Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function.',lib:'anbutton.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function. This identifier can be used to test if two instances of <tt>YFunction</tt> reference the same physical function on the same physical device.</p>',ret:'an identifier of type <tt>YFUN_DESCR</tt>.',ext:'If the function has never been contacted, the returned value is <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>.'};
+doc['AnButton']['get_functionId']={syn:'Returns the hardware identifier of the analog input, without reference to the module.',lib:'anbutton.get_functionId()',pro:'def get_functionId()',cmt:'<p>Returns the hardware identifier of the analog input, without reference to the module. For example <tt>relay1</tt></p>',ret:'a string that identifies the analog input (ex: <tt>relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['AnButton']['get_hardwareId']={syn:'Returns the unique hardware identifier of the analog input in the form <tt>SERIAL.FUNCTIONID</tt>.',lib:'anbutton.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Returns the unique hardware identifier of the analog input in the form <tt>SERIAL.FUNCTIONID</tt>. The unique hardware identifier is composed of the device serial number and of the hardware identifier of the analog input (for example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'a string that uniquely identifies the analog input (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['AnButton']['get_isPressed']={syn:'Returns true if the input (considered as binary) is active (closed contact), and false otherwise.',lib:'anbutton.get_isPressed()',pro:'def get_isPressed()',cmt:'<p>Returns true if the input (considered as binary) is active (closed contact), and false otherwise.</p>',ret:'either <tt>Y_ISPRESSED_FALSE</tt> or <tt>Y_ISPRESSED_TRUE</tt>, according to true if the input (considered as binary) is active (closed contact), and false otherwise',ext:'On failure, throws an exception or returns <tt>Y_ISPRESSED_INVALID</tt>.'};
+doc['AnButton']['get_lastTimePressed']={syn:'Returns the number of elapsed milliseconds between the module power on and the last time the input button was pressed (the input contact transitioned from open to closed).',lib:'anbutton.get_lastTimePressed()',pro:'def get_lastTimePressed()',cmt:'<p>Returns the number of elapsed milliseconds between the module power on and the last time the input button was pressed (the input contact transitioned from open to closed).</p>',ret:'an integer corresponding to the number of elapsed milliseconds between the module power on and the last time the input button was pressed (the input contact transitioned from open to closed)',ext:'On failure, throws an exception or returns <tt>Y_LASTTIMEPRESSED_INVALID</tt>.'};
+doc['AnButton']['get_lastTimeReleased']={syn:'Returns the number of elapsed milliseconds between the module power on and the last time the input button was released (the input contact transitioned from closed to open).',lib:'anbutton.get_lastTimeReleased()',pro:'def get_lastTimeReleased()',cmt:'<p>Returns the number of elapsed milliseconds between the module power on and the last time the input button was released (the input contact transitioned from closed to open).</p>',ret:'an integer corresponding to the number of elapsed milliseconds between the module power on and the last time the input button was released (the input contact transitioned from closed to open)',ext:'On failure, throws an exception or returns <tt>Y_LASTTIMERELEASED_INVALID</tt>.'};
+doc['AnButton']['get_logicalName']={syn:'Returns the logical name of the analog input.',lib:'anbutton.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Returns the logical name of the analog input.</p>',ret:'a string corresponding to the logical name of the analog input.',ext:'On failure, throws an exception or returns <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['AnButton']['get_module']={syn:'Gets the <tt>YModule</tt> object for the device on which the function is located.',lib:'anbutton.get_module()',pro:'def get_module()',cmt:'<p>Gets the <tt>YModule</tt> object for the device on which the function is located. If the function cannot be located on any module, the returned instance of <tt>YModule</tt> is not shown as on-line.</p>',ret:'an instance of <tt>YModule</tt>'};
+doc['AnButton']['get_pulseCounter']={syn:'Returns the pulse counter value.',lib:'anbutton.get_pulseCounter()',pro:'def get_pulseCounter()',cmt:'<p>Returns the pulse counter value. The value is a 32 bit integer. In case of overflow (>=2^32), the counter will wrap. To reset the counter, just \x09 call the resetCounter() method.</p>',ret:'an integer corresponding to the pulse counter value',ext:'On failure, throws an exception or returns <tt>Y_PULSECOUNTER_INVALID</tt>.'};
+doc['AnButton']['get_pulseTimer']={syn:'Returns the timer of the pulses counter (ms).',lib:'anbutton.get_pulseTimer()',pro:'def get_pulseTimer()',cmt:'<p>Returns the timer of the pulses counter (ms).</p>',ret:'an integer corresponding to the timer of the pulses counter (ms)',ext:'On failure, throws an exception or returns <tt>Y_PULSETIMER_INVALID</tt>.'};
+doc['AnButton']['get_rawValue']={syn:'Returns the current measured input value as-is (between 0 and 4095, included).',lib:'anbutton.get_rawValue()',pro:'def get_rawValue()',cmt:'<p>Returns the current measured input value as-is (between 0 and 4095, included).</p>',ret:'an integer corresponding to the current measured input value as-is (between 0 and 4095, included)',ext:'On failure, throws an exception or returns <tt>Y_RAWVALUE_INVALID</tt>.'};
+doc['AnButton']['get_sensitivity']={syn:'Returns the sensibility for the input (between 1 and 1000) for triggering user callbacks.',lib:'anbutton.get_sensitivity()',pro:'def get_sensitivity()',cmt:'<p>Returns the sensibility for the input (between 1 and 1000) for triggering user callbacks.</p>',ret:'an integer corresponding to the sensibility for the input (between 1 and 1000) for triggering user callbacks',ext:'On failure, throws an exception or returns <tt>Y_SENSITIVITY_INVALID</tt>.'};
+doc['AnButton']['get_userData']={syn:'Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>.',lib:'anbutton.get_userData()',pro:'def get_userData()',cmt:'<p>Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>. This attribute is never touched directly by the API, and is at disposal of the caller to store a context.</p>',ret:'the object stored previously by the caller.'};
+doc['AnButton']['isOnline']={syn:'Checks if the analog input is currently reachable, without raising any error.',lib:'anbutton.isOnline()',pro:'def isOnline()',cmt:'<p>Checks if the analog input is currently reachable, without raising any error. If there is a cached value for the analog input in cache, that has not yet expired, the device is considered reachable. No exception is raised if there is an error while trying to contact the device hosting the analog input.</p>',ret:'<tt>true</tt> if the analog input can be reached, and <tt>false</tt> otherwise'};
+doc['AnButton']['load']={syn:'Preloads the analog input cache with a specified validity duration.',lib:'anbutton.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Preloads the analog input cache with a specified validity duration. By default, whenever accessing a device, all function attributes are kept in cache for the standard duration (5 ms). This method can be used to temporarily mark the cache as valid for a longer period, in order to reduce network traffic for instance.</p>',par:{msValidity:'an integer corresponding to the validity attributed to the loaded function parameters, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['AnButton']['loadAttribute']={syn:'Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.',lib:'anbutton.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'On failure, throws an exception or returns an empty string.'};
+doc['AnButton']['muteValueCallbacks']={syn:'Disable the propagation of every new advertised value to the parent hub.',lib:'anbutton.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>Disable the propagation of every new advertised value to the parent hub. You can use this function to save bandwidth and CPU on computers with limited resources, or to prevent unwanted invocations of the HTTP callback. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['AnButton']['nextAnButton']={syn:'Continues the enumeration of analog inputs started using <tt>yFirstAnButton()</tt>.',lib:'anbutton.nextAnButton()',pro:'def nextAnButton()',cmt:'<p>Continues the enumeration of analog inputs started using <tt>yFirstAnButton()</tt>.</p>',ret:'a pointer to a <tt>YAnButton</tt> object, corresponding to an analog input currently online, or a <tt>null</tt> pointer if there are no more analog inputs to enumerate.'};
+doc['AnButton']['registerValueCallback']={syn:'Registers the callback function that is invoked on every change of advertised value.',lib:'anbutton.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every change of advertised value. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and the character string describing the new advertised value.'}};
+doc['AnButton']['resetCounter']={syn:'Returns the pulse counter value as well as its timer.',lib:'anbutton.resetCounter()',pro:'def resetCounter()',cmt:'<p>Returns the pulse counter value as well as its timer.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['AnButton']['set_analogCalibration']={syn:'Starts or stops the calibration process.',lib:'anbutton.set_analogCalibration()',pro:'def set_analogCalibration(<span id=pn>newval</span>)',cmt:'<p>Starts or stops the calibration process. Remember to call the <tt>saveToFlash()</tt> method of the module at the end of the calibration if the modification must be kept.</p>',par:{newval:'either <tt>Y_ANALOGCALIBRATION_OFF</tt> or <tt>Y_ANALOGCALIBRATION_ON</tt>'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['AnButton']['set_calibrationMax']={syn:'Changes the maximal calibration value for the input (between 0 and 4095, included), without actually starting the automated calibration.',lib:'anbutton.set_calibrationMax()',pro:'def set_calibrationMax(<span id=pn>newval</span>)',cmt:'<p>Changes the maximal calibration value for the input (between 0 and 4095, included), without actually starting the automated calibration. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'an integer corresponding to the maximal calibration value for the input (between 0 and 4095, included), without actually starting the automated calibration'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['AnButton']['set_calibrationMin']={syn:'Changes the minimal calibration value for the input (between 0 and 4095, included), without actually starting the automated calibration.',lib:'anbutton.set_calibrationMin()',pro:'def set_calibrationMin(<span id=pn>newval</span>)',cmt:'<p>Changes the minimal calibration value for the input (between 0 and 4095, included), without actually starting the automated calibration. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'an integer corresponding to the minimal calibration value for the input (between 0 and 4095, included), without actually starting the automated calibration'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['AnButton']['set_logicalName']={syn:'Changes the logical name of the analog input.',lib:'anbutton.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Changes the logical name of the analog input. You can use <tt>yCheckLogicalName()</tt> prior to this call to make sure that your parameter is valid. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the logical name of the analog input.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['AnButton']['set_sensitivity']={syn:'Changes the sensibility for the input (between 1 and 1000) for triggering user callbacks.',lib:'anbutton.set_sensitivity()',pro:'def set_sensitivity(<span id=pn>newval</span>)',cmt:'<p>Changes the sensibility for the input (between 1 and 1000) for triggering user callbacks. The sensibility is used to filter variations around a fixed value, but does not preclude the transmission of events when the input value evolves constantly in the same direction. Special case: when the value 1000 is used, the callback will only be thrown when the logical state of the input switches from pressed to released and back. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'an integer corresponding to the sensibility for the input (between 1 and 1000) for triggering user callbacks'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['AnButton']['set_userData']={syn:'Stores a user context provided as argument in the userData attribute of the function.',lib:'anbutton.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Stores a user context provided as argument in the userData attribute of the function. This attribute is never touched by the API, and is at disposal of the caller to store a context.</p>',par:{data:'any kind of object to be stored'}};
+doc['AnButton']['unmuteValueCallbacks']={syn:'Re-enable the propagation of every new advertised value to the parent hub.',lib:'anbutton.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>Re-enable the propagation of every new advertised value to the parent hub. This function reverts the effect of a previous call to <tt>muteValueCallbacks()</tt>. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+//--- (end of generated code: AnButton)
+//--- (generated code: Voltage)
+doc['Voltage']={'':{syn:'Voltage function interface',inc:'from yocto_voltage import *',cmt:'<p>The Yoctopuce class YVoltage allows you to read and configure Yoctopuce voltage sensors. It inherits from YSensor class the core functions to read measurements, register callback functions, access to the autonomous datalogger.</p>'}};
+doc['Voltage']['FindVoltage']={syn:'Retrieves a voltage sensor for a given identifier.',lib:'YVoltage.FindVoltage()',pro:'def FindVoltage(<span id=pn>func</span>)',cmt:'<p>Retrieves a voltage sensor for a given identifier. The identifier can be specified using several formats:<br> <ul> <li>FunctionLogicalName</li> <li>ModuleSerialNumber.FunctionIdentifier</li> <li>ModuleSerialNumber.FunctionLogicalName</li> <li>ModuleLogicalName.FunctionIdentifier</li> <li>ModuleLogicalName.FunctionLogicalName</li> </ul></p><p> This function does not require that the voltage sensor is online at the time it is invoked. The returned object is nevertheless valid. Use the method <tt>YVoltage.isOnline()</tt> to test if the voltage sensor is indeed online at a given time. In case of ambiguity when looking for a voltage sensor by logical name, no error is notified: the first instance found is returned. The search is performed first by hardware name, then by logical name.</p>',par:{func:'a string that uniquely characterizes the voltage sensor'},ret:'a <tt>YVoltage</tt> object allowing you to drive the voltage sensor.'};
+doc['Voltage']['FirstVoltage']={syn:'Starts the enumeration of voltage sensors currently accessible.',lib:'YVoltage.FirstVoltage()',pro:'def FirstVoltage()',cmt:'<p>Starts the enumeration of voltage sensors currently accessible. Use the method <tt>YVoltage.nextVoltage()</tt> to iterate on next voltage sensors.</p>',ret:'a pointer to a <tt>YVoltage</tt> object, corresponding to the first voltage sensor currently online, or a <tt>null</tt> pointer if there are none.'};
+doc['Voltage']['calibrateFromPoints']={syn:'Configures error correction data points, in particular to compensate for a possible perturbation of the measure caused by an enclosure.',lib:'voltage.calibrateFromPoints()',pro:'def calibrateFromPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Configures error correction data points, in particular to compensate for a possible perturbation of the measure caused by an enclosure. It is possible to configure up to five correction points. Correction points must be provided in ascending order, and be in the range of the sensor. The device will automatically perform a linear interpolation of the error correction between specified points. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p><p> For more information on advanced capabilities to refine the calibration of sensors, please contact support@yoctopuce.com.</p>',par:{rawValues:'array of floating point numbers, corresponding to the raw values returned by the sensor for the correction points.',refValues:'array of floating point numbers, corresponding to the corrected values for the correction points.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Voltage']['clearCache']={syn:'Invalidates the cache.',lib:'voltage.clearCache()',pro:'def clearCache()',cmt:'<p>Invalidates the cache. Invalidates the cache of the voltage sensor attributes. Forces the next call to get_xxx() or loadxxx() to use values that come from the device.</p>'};
+doc['Voltage']['describe']={syn:'Returns a short text that describes unambiguously the instance of the voltage sensor in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'voltage.describe()',pro:'def describe()',cmt:'<p>Returns a short text that describes unambiguously the instance of the voltage sensor in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. More precisely, <tt>TYPE</tt> is the type of the function, <tt>NAME</tt> it the name used for the first access to the function, <tt>SERIAL</tt> is the serial number of the module if the module is connected or <tt>\x22unresolved\x22</tt>, and <tt>FUNCTIONID</tt> is the hardware identifier of the function if the module is connected. For example, this method returns <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> if the module is already connected or <tt>Relay(BadCustomeName.relay1)=unresolved</tt> if the module has not yet been connected. This method does not trigger any USB or TCP transaction and can therefore be used in a debugger.</p>',ret:'a string that describes the voltage sensor (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['Voltage']['get_advertisedValue']={syn:'Returns the current value of the voltage sensor (no more than 6 characters).',lib:'voltage.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Returns the current value of the voltage sensor (no more than 6 characters).</p>',ret:'a string corresponding to the current value of the voltage sensor (no more than 6 characters).',ext:'On failure, throws an exception or returns <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['Voltage']['get_currentRawValue']={syn:'Returns the uncalibrated, unrounded raw value returned by the sensor, in Volt, as a floating point number.',lib:'voltage.get_currentRawValue()',pro:'def get_currentRawValue()',cmt:'<p>Returns the uncalibrated, unrounded raw value returned by the sensor, in Volt, as a floating point number.</p>',ret:'a floating point number corresponding to the uncalibrated, unrounded raw value returned by the sensor, in Volt, as a floating point number',ext:'On failure, throws an exception or returns <tt>Y_CURRENTRAWVALUE_INVALID</tt>.'};
+doc['Voltage']['get_currentValue']={syn:'Returns the current value of the voltage, in Volt, as a floating point number.',lib:'voltage.get_currentValue()',pro:'def get_currentValue()',cmt:'<p>Returns the current value of the voltage, in Volt, as a floating point number.</p>',ret:'a floating point number corresponding to the current value of the voltage, in Volt, as a floating point number',ext:'On failure, throws an exception or returns <tt>Y_CURRENTVALUE_INVALID</tt>.'};
+doc['Voltage']['get_errorMessage']={syn:'Returns the error message of the latest error with the voltage sensor.',lib:'voltage.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Returns the error message of the latest error with the voltage sensor. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a string corresponding to the latest error message that occured while using the voltage sensor object'};
+doc['Voltage']['get_errorType']={syn:'Returns the numerical error code of the latest error with the voltage sensor.',lib:'voltage.get_errorType()',pro:'def get_errorType()',cmt:'<p>Returns the numerical error code of the latest error with the voltage sensor. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a number corresponding to the code of the latest error that occurred while using the voltage sensor object'};
+doc['Voltage']['get_friendlyName']={syn:'Returns a global identifier of the voltage sensor in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>.',lib:'voltage.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Returns a global identifier of the voltage sensor in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>. The returned string uses the logical names of the module and of the voltage sensor if they are defined, otherwise the serial number of the module and the hardware identifier of the voltage sensor (for example: <tt>MyCustomName.relay1</tt>)</p>',ret:'a string that uniquely identifies the voltage sensor using logical names (ex: <tt>MyCustomName.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['Voltage']['get_functionDescriptor']={syn:'Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function.',lib:'voltage.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function. This identifier can be used to test if two instances of <tt>YFunction</tt> reference the same physical function on the same physical device.</p>',ret:'an identifier of type <tt>YFUN_DESCR</tt>.',ext:'If the function has never been contacted, the returned value is <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>.'};
+doc['Voltage']['get_functionId']={syn:'Returns the hardware identifier of the voltage sensor, without reference to the module.',lib:'voltage.get_functionId()',pro:'def get_functionId()',cmt:'<p>Returns the hardware identifier of the voltage sensor, without reference to the module. For example <tt>relay1</tt></p>',ret:'a string that identifies the voltage sensor (ex: <tt>relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['Voltage']['get_hardwareId']={syn:'Returns the unique hardware identifier of the voltage sensor in the form <tt>SERIAL.FUNCTIONID</tt>.',lib:'voltage.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Returns the unique hardware identifier of the voltage sensor in the form <tt>SERIAL.FUNCTIONID</tt>. The unique hardware identifier is composed of the device serial number and of the hardware identifier of the voltage sensor (for example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'a string that uniquely identifies the voltage sensor (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['Voltage']['get_highestValue']={syn:'Returns the maximal value observed for the voltage since the device was started.',lib:'voltage.get_highestValue()',pro:'def get_highestValue()',cmt:'<p>Returns the maximal value observed for the voltage since the device was started.</p>',ret:'a floating point number corresponding to the maximal value observed for the voltage since the device was started',ext:'On failure, throws an exception or returns <tt>Y_HIGHESTVALUE_INVALID</tt>.'};
+doc['Voltage']['get_logFrequency']={syn:'Returns the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory.',lib:'voltage.get_logFrequency()',pro:'def get_logFrequency()',cmt:'<p>Returns the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory.</p>',ret:'a string corresponding to the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory',ext:'On failure, throws an exception or returns <tt>Y_LOGFREQUENCY_INVALID</tt>.'};
+doc['Voltage']['get_logicalName']={syn:'Returns the logical name of the voltage sensor.',lib:'voltage.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Returns the logical name of the voltage sensor.</p>',ret:'a string corresponding to the logical name of the voltage sensor.',ext:'On failure, throws an exception or returns <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['Voltage']['get_lowestValue']={syn:'Returns the minimal value observed for the voltage since the device was started.',lib:'voltage.get_lowestValue()',pro:'def get_lowestValue()',cmt:'<p>Returns the minimal value observed for the voltage since the device was started.</p>',ret:'a floating point number corresponding to the minimal value observed for the voltage since the device was started',ext:'On failure, throws an exception or returns <tt>Y_LOWESTVALUE_INVALID</tt>.'};
+doc['Voltage']['get_module']={syn:'Gets the <tt>YModule</tt> object for the device on which the function is located.',lib:'voltage.get_module()',pro:'def get_module()',cmt:'<p>Gets the <tt>YModule</tt> object for the device on which the function is located. If the function cannot be located on any module, the returned instance of <tt>YModule</tt> is not shown as on-line.</p>',ret:'an instance of <tt>YModule</tt>'};
+doc['Voltage']['get_recordedData']={syn:'Retrieves a DataSet object holding historical data for this sensor, for a specified time interval.',lib:'voltage.get_recordedData()',pro:'def get_recordedData(<span id=pn>startTime</span>, <span id=pn>endTime</span>)',cmt:'<p>Retrieves a DataSet object holding historical data for this sensor, for a specified time interval. The measures will be retrieved from the data logger, which must have been turned on at the desired time. See the documentation of the DataSet class for information on how to get an overview of the recorded data, and how to load progressively a large set of measures from the data logger.</p><p> This function only works if the device uses a recent firmware, as DataSet objects are not supported by firmwares older than version 13000.</p>',par:{startTime:'the start of the desired measure time interval, as a Unix timestamp, i.e. the number of seconds since January 1, 1970 UTC. The special value 0 can be used to include any meaasure, without initial limit.',endTime:'the end of the desired measure time interval, as a Unix timestamp, i.e. the number of seconds since January 1, 1970 UTC. The special value 0 can be used to include any meaasure, without ending limit.'},ret:'an instance of YDataSet, providing access to historical data. Past measures can be loaded progressively using methods from the YDataSet object.'};
+doc['Voltage']['get_reportFrequency']={syn:'Returns the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function.',lib:'voltage.get_reportFrequency()',pro:'def get_reportFrequency()',cmt:'<p>Returns the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function.</p>',ret:'a string corresponding to the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function',ext:'On failure, throws an exception or returns <tt>Y_REPORTFREQUENCY_INVALID</tt>.'};
+doc['Voltage']['get_resolution']={syn:'Returns the resolution of the measured values.',lib:'voltage.get_resolution()',pro:'def get_resolution()',cmt:'<p>Returns the resolution of the measured values. The resolution corresponds to the numerical precision of the measures, which is not always the same as the actual precision of the sensor.</p>',ret:'a floating point number corresponding to the resolution of the measured values',ext:'On failure, throws an exception or returns <tt>Y_RESOLUTION_INVALID</tt>.'};
+doc['Voltage']['get_sensorState']={syn:'Returns the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now.',lib:'voltage.get_sensorState()',pro:'def get_sensorState()',cmt:'<p>Returns the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now.</p>',ret:'an integer corresponding to the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now',ext:'On failure, throws an exception or returns <tt>Y_SENSORSTATE_INVALID</tt>.'};
+doc['Voltage']['get_unit']={syn:'Returns the measuring unit for the voltage.',lib:'voltage.get_unit()',pro:'def get_unit()',cmt:'<p>Returns the measuring unit for the voltage.</p>',ret:'a string corresponding to the measuring unit for the voltage',ext:'On failure, throws an exception or returns <tt>Y_UNIT_INVALID</tt>.'};
+doc['Voltage']['get_userData']={syn:'Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>.',lib:'voltage.get_userData()',pro:'def get_userData()',cmt:'<p>Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>. This attribute is never touched directly by the API, and is at disposal of the caller to store a context.</p>',ret:'the object stored previously by the caller.'};
+doc['Voltage']['isOnline']={syn:'Checks if the voltage sensor is currently reachable, without raising any error.',lib:'voltage.isOnline()',pro:'def isOnline()',cmt:'<p>Checks if the voltage sensor is currently reachable, without raising any error. If there is a cached value for the voltage sensor in cache, that has not yet expired, the device is considered reachable. No exception is raised if there is an error while trying to contact the device hosting the voltage sensor.</p>',ret:'<tt>true</tt> if the voltage sensor can be reached, and <tt>false</tt> otherwise'};
+doc['Voltage']['load']={syn:'Preloads the voltage sensor cache with a specified validity duration.',lib:'voltage.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Preloads the voltage sensor cache with a specified validity duration. By default, whenever accessing a device, all function attributes are kept in cache for the standard duration (5 ms). This method can be used to temporarily mark the cache as valid for a longer period, in order to reduce network traffic for instance.</p>',par:{msValidity:'an integer corresponding to the validity attributed to the loaded function parameters, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Voltage']['loadAttribute']={syn:'Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.',lib:'voltage.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'On failure, throws an exception or returns an empty string.'};
+doc['Voltage']['loadCalibrationPoints']={syn:'Retrieves error correction data points previously entered using the method <tt>calibrateFromPoints</tt>.',lib:'voltage.loadCalibrationPoints()',pro:'def loadCalibrationPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Retrieves error correction data points previously entered using the method <tt>calibrateFromPoints</tt>.</p>',par:{rawValues:'array of floating point numbers, that will be filled by the function with the raw sensor values for the correction points.',refValues:'array of floating point numbers, that will be filled by the function with the desired values for the correction points.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Voltage']['muteValueCallbacks']={syn:'Disable the propagation of every new advertised value to the parent hub.',lib:'voltage.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>Disable the propagation of every new advertised value to the parent hub. You can use this function to save bandwidth and CPU on computers with limited resources, or to prevent unwanted invocations of the HTTP callback. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Voltage']['nextVoltage']={syn:'Continues the enumeration of voltage sensors started using <tt>yFirstVoltage()</tt>.',lib:'voltage.nextVoltage()',pro:'def nextVoltage()',cmt:'<p>Continues the enumeration of voltage sensors started using <tt>yFirstVoltage()</tt>.</p>',ret:'a pointer to a <tt>YVoltage</tt> object, corresponding to a voltage sensor currently online, or a <tt>null</tt> pointer if there are no more voltage sensors to enumerate.'};
+doc['Voltage']['registerTimedReportCallback']={syn:'Registers the callback function that is invoked on every periodic timed notification.',lib:'voltage.registerTimedReportCallback()',pro:'def registerTimedReportCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every periodic timed notification. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and an YMeasure object describing the new advertised value.'}};
+doc['Voltage']['registerValueCallback']={syn:'Registers the callback function that is invoked on every change of advertised value.',lib:'voltage.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every change of advertised value. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and the character string describing the new advertised value.'}};
+doc['Voltage']['set_highestValue']={syn:'Changes the recorded maximal value observed.',lib:'voltage.set_highestValue()',pro:'def set_highestValue(<span id=pn>newval</span>)',cmt:'<p>Changes the recorded maximal value observed.</p>',par:{newval:'a floating point number corresponding to the recorded maximal value observed'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Voltage']['set_logFrequency']={syn:'Changes the datalogger recording frequency for this function.',lib:'voltage.set_logFrequency()',pro:'def set_logFrequency(<span id=pn>newval</span>)',cmt:'<p>Changes the datalogger recording frequency for this function. The frequency can be specified as samples per second, as sample per minute (for instance \x2215/m\x22) or in samples per hour (eg. \x224/h\x22). To disable recording for this function, use the value \x22OFF\x22.</p>',par:{newval:'a string corresponding to the datalogger recording frequency for this function'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Voltage']['set_logicalName']={syn:'Changes the logical name of the voltage sensor.',lib:'voltage.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Changes the logical name of the voltage sensor. You can use <tt>yCheckLogicalName()</tt> prior to this call to make sure that your parameter is valid. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the logical name of the voltage sensor.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Voltage']['set_lowestValue']={syn:'Changes the recorded minimal value observed.',lib:'voltage.set_lowestValue()',pro:'def set_lowestValue(<span id=pn>newval</span>)',cmt:'<p>Changes the recorded minimal value observed.</p>',par:{newval:'a floating point number corresponding to the recorded minimal value observed'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Voltage']['set_reportFrequency']={syn:'Changes the timed value notification frequency for this function.',lib:'voltage.set_reportFrequency()',pro:'def set_reportFrequency(<span id=pn>newval</span>)',cmt:'<p>Changes the timed value notification frequency for this function. The frequency can be specified as samples per second, as sample per minute (for instance \x2215/m\x22) or in samples per hour (eg. \x224/h\x22). To disable timed value notifications for this function, use the value \x22OFF\x22.</p>',par:{newval:'a string corresponding to the timed value notification frequency for this function'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Voltage']['set_resolution']={syn:'Changes the resolution of the measured physical values.',lib:'voltage.set_resolution()',pro:'def set_resolution(<span id=pn>newval</span>)',cmt:'<p>Changes the resolution of the measured physical values. The resolution corresponds to the numerical precision when displaying value. It does not change the precision of the measure itself.</p>',par:{newval:'a floating point number corresponding to the resolution of the measured physical values'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Voltage']['set_userData']={syn:'Stores a user context provided as argument in the userData attribute of the function.',lib:'voltage.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Stores a user context provided as argument in the userData attribute of the function. This attribute is never touched by the API, and is at disposal of the caller to store a context.</p>',par:{data:'any kind of object to be stored'}};
+doc['Voltage']['startDataLogger']={syn:'Starts the data logger on the device.',lib:'voltage.startDataLogger()',pro:'def startDataLogger()',cmt:'<p>Starts the data logger on the device. Note that the data logger will only save the measures on this sensor if the logFrequency is not set to \x22OFF\x22.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.'};
+doc['Voltage']['stopDataLogger']={syn:'Stops the datalogger on the device.',lib:'voltage.stopDataLogger()',pro:'def stopDataLogger()',cmt:'<p>Stops the datalogger on the device.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.'};
+doc['Voltage']['unmuteValueCallbacks']={syn:'Re-enable the propagation of every new advertised value to the parent hub.',lib:'voltage.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>Re-enable the propagation of every new advertised value to the parent hub. This function reverts the effect of a previous call to <tt>muteValueCallbacks()</tt>. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+//--- (end of generated code: Voltage)
+//--- (generated code: Current)
+doc['Current']={'':{syn:'Current function interface',inc:'from yocto_current import *',cmt:'<p>The Yoctopuce class YCurrent allows you to read and configure Yoctopuce current sensors. It inherits from YSensor class the core functions to read measurements, register callback functions, access to the autonomous datalogger.</p>'}};
+doc['Current']['FindCurrent']={syn:'Retrieves a current sensor for a given identifier.',lib:'YCurrent.FindCurrent()',pro:'def FindCurrent(<span id=pn>func</span>)',cmt:'<p>Retrieves a current sensor for a given identifier. The identifier can be specified using several formats:<br> <ul> <li>FunctionLogicalName</li> <li>ModuleSerialNumber.FunctionIdentifier</li> <li>ModuleSerialNumber.FunctionLogicalName</li> <li>ModuleLogicalName.FunctionIdentifier</li> <li>ModuleLogicalName.FunctionLogicalName</li> </ul></p><p> This function does not require that the current sensor is online at the time it is invoked. The returned object is nevertheless valid. Use the method <tt>YCurrent.isOnline()</tt> to test if the current sensor is indeed online at a given time. In case of ambiguity when looking for a current sensor by logical name, no error is notified: the first instance found is returned. The search is performed first by hardware name, then by logical name.</p>',par:{func:'a string that uniquely characterizes the current sensor'},ret:'a <tt>YCurrent</tt> object allowing you to drive the current sensor.'};
+doc['Current']['FirstCurrent']={syn:'Starts the enumeration of current sensors currently accessible.',lib:'YCurrent.FirstCurrent()',pro:'def FirstCurrent()',cmt:'<p>Starts the enumeration of current sensors currently accessible. Use the method <tt>YCurrent.nextCurrent()</tt> to iterate on next current sensors.</p>',ret:'a pointer to a <tt>YCurrent</tt> object, corresponding to the first current sensor currently online, or a <tt>null</tt> pointer if there are none.'};
+doc['Current']['calibrateFromPoints']={syn:'Configures error correction data points, in particular to compensate for a possible perturbation of the measure caused by an enclosure.',lib:'current.calibrateFromPoints()',pro:'def calibrateFromPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Configures error correction data points, in particular to compensate for a possible perturbation of the measure caused by an enclosure. It is possible to configure up to five correction points. Correction points must be provided in ascending order, and be in the range of the sensor. The device will automatically perform a linear interpolation of the error correction between specified points. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p><p> For more information on advanced capabilities to refine the calibration of sensors, please contact support@yoctopuce.com.</p>',par:{rawValues:'array of floating point numbers, corresponding to the raw values returned by the sensor for the correction points.',refValues:'array of floating point numbers, corresponding to the corrected values for the correction points.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Current']['clearCache']={syn:'Invalidates the cache.',lib:'current.clearCache()',pro:'def clearCache()',cmt:'<p>Invalidates the cache. Invalidates the cache of the current sensor attributes. Forces the next call to get_xxx() or loadxxx() to use values that come from the device.</p>'};
+doc['Current']['describe']={syn:'Returns a short text that describes unambiguously the instance of the current sensor in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'current.describe()',pro:'def describe()',cmt:'<p>Returns a short text that describes unambiguously the instance of the current sensor in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. More precisely, <tt>TYPE</tt> is the type of the function, <tt>NAME</tt> it the name used for the first access to the function, <tt>SERIAL</tt> is the serial number of the module if the module is connected or <tt>\x22unresolved\x22</tt>, and <tt>FUNCTIONID</tt> is the hardware identifier of the function if the module is connected. For example, this method returns <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> if the module is already connected or <tt>Relay(BadCustomeName.relay1)=unresolved</tt> if the module has not yet been connected. This method does not trigger any USB or TCP transaction and can therefore be used in a debugger.</p>',ret:'a string that describes the current sensor (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['Current']['get_advertisedValue']={syn:'Returns the current value of the current sensor (no more than 6 characters).',lib:'current.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Returns the current value of the current sensor (no more than 6 characters).</p>',ret:'a string corresponding to the current value of the current sensor (no more than 6 characters).',ext:'On failure, throws an exception or returns <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['Current']['get_currentRawValue']={syn:'Returns the uncalibrated, unrounded raw value returned by the sensor, in mA, as a floating point number.',lib:'current.get_currentRawValue()',pro:'def get_currentRawValue()',cmt:'<p>Returns the uncalibrated, unrounded raw value returned by the sensor, in mA, as a floating point number.</p>',ret:'a floating point number corresponding to the uncalibrated, unrounded raw value returned by the sensor, in mA, as a floating point number',ext:'On failure, throws an exception or returns <tt>Y_CURRENTRAWVALUE_INVALID</tt>.'};
+doc['Current']['get_currentValue']={syn:'Returns the current value of the current, in mA, as a floating point number.',lib:'current.get_currentValue()',pro:'def get_currentValue()',cmt:'<p>Returns the current value of the current, in mA, as a floating point number.</p>',ret:'a floating point number corresponding to the current value of the current, in mA, as a floating point number',ext:'On failure, throws an exception or returns <tt>Y_CURRENTVALUE_INVALID</tt>.'};
+doc['Current']['get_errorMessage']={syn:'Returns the error message of the latest error with the current sensor.',lib:'current.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Returns the error message of the latest error with the current sensor. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a string corresponding to the latest error message that occured while using the current sensor object'};
+doc['Current']['get_errorType']={syn:'Returns the numerical error code of the latest error with the current sensor.',lib:'current.get_errorType()',pro:'def get_errorType()',cmt:'<p>Returns the numerical error code of the latest error with the current sensor. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a number corresponding to the code of the latest error that occurred while using the current sensor object'};
+doc['Current']['get_friendlyName']={syn:'Returns a global identifier of the current sensor in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>.',lib:'current.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Returns a global identifier of the current sensor in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>. The returned string uses the logical names of the module and of the current sensor if they are defined, otherwise the serial number of the module and the hardware identifier of the current sensor (for example: <tt>MyCustomName.relay1</tt>)</p>',ret:'a string that uniquely identifies the current sensor using logical names (ex: <tt>MyCustomName.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['Current']['get_functionDescriptor']={syn:'Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function.',lib:'current.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function. This identifier can be used to test if two instances of <tt>YFunction</tt> reference the same physical function on the same physical device.</p>',ret:'an identifier of type <tt>YFUN_DESCR</tt>.',ext:'If the function has never been contacted, the returned value is <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>.'};
+doc['Current']['get_functionId']={syn:'Returns the hardware identifier of the current sensor, without reference to the module.',lib:'current.get_functionId()',pro:'def get_functionId()',cmt:'<p>Returns the hardware identifier of the current sensor, without reference to the module. For example <tt>relay1</tt></p>',ret:'a string that identifies the current sensor (ex: <tt>relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['Current']['get_hardwareId']={syn:'Returns the unique hardware identifier of the current sensor in the form <tt>SERIAL.FUNCTIONID</tt>.',lib:'current.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Returns the unique hardware identifier of the current sensor in the form <tt>SERIAL.FUNCTIONID</tt>. The unique hardware identifier is composed of the device serial number and of the hardware identifier of the current sensor (for example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'a string that uniquely identifies the current sensor (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['Current']['get_highestValue']={syn:'Returns the maximal value observed for the current since the device was started.',lib:'current.get_highestValue()',pro:'def get_highestValue()',cmt:'<p>Returns the maximal value observed for the current since the device was started.</p>',ret:'a floating point number corresponding to the maximal value observed for the current since the device was started',ext:'On failure, throws an exception or returns <tt>Y_HIGHESTVALUE_INVALID</tt>.'};
+doc['Current']['get_logFrequency']={syn:'Returns the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory.',lib:'current.get_logFrequency()',pro:'def get_logFrequency()',cmt:'<p>Returns the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory.</p>',ret:'a string corresponding to the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory',ext:'On failure, throws an exception or returns <tt>Y_LOGFREQUENCY_INVALID</tt>.'};
+doc['Current']['get_logicalName']={syn:'Returns the logical name of the current sensor.',lib:'current.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Returns the logical name of the current sensor.</p>',ret:'a string corresponding to the logical name of the current sensor.',ext:'On failure, throws an exception or returns <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['Current']['get_lowestValue']={syn:'Returns the minimal value observed for the current since the device was started.',lib:'current.get_lowestValue()',pro:'def get_lowestValue()',cmt:'<p>Returns the minimal value observed for the current since the device was started.</p>',ret:'a floating point number corresponding to the minimal value observed for the current since the device was started',ext:'On failure, throws an exception or returns <tt>Y_LOWESTVALUE_INVALID</tt>.'};
+doc['Current']['get_module']={syn:'Gets the <tt>YModule</tt> object for the device on which the function is located.',lib:'current.get_module()',pro:'def get_module()',cmt:'<p>Gets the <tt>YModule</tt> object for the device on which the function is located. If the function cannot be located on any module, the returned instance of <tt>YModule</tt> is not shown as on-line.</p>',ret:'an instance of <tt>YModule</tt>'};
+doc['Current']['get_recordedData']={syn:'Retrieves a DataSet object holding historical data for this sensor, for a specified time interval.',lib:'current.get_recordedData()',pro:'def get_recordedData(<span id=pn>startTime</span>, <span id=pn>endTime</span>)',cmt:'<p>Retrieves a DataSet object holding historical data for this sensor, for a specified time interval. The measures will be retrieved from the data logger, which must have been turned on at the desired time. See the documentation of the DataSet class for information on how to get an overview of the recorded data, and how to load progressively a large set of measures from the data logger.</p><p> This function only works if the device uses a recent firmware, as DataSet objects are not supported by firmwares older than version 13000.</p>',par:{startTime:'the start of the desired measure time interval, as a Unix timestamp, i.e. the number of seconds since January 1, 1970 UTC. The special value 0 can be used to include any meaasure, without initial limit.',endTime:'the end of the desired measure time interval, as a Unix timestamp, i.e. the number of seconds since January 1, 1970 UTC. The special value 0 can be used to include any meaasure, without ending limit.'},ret:'an instance of YDataSet, providing access to historical data. Past measures can be loaded progressively using methods from the YDataSet object.'};
+doc['Current']['get_reportFrequency']={syn:'Returns the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function.',lib:'current.get_reportFrequency()',pro:'def get_reportFrequency()',cmt:'<p>Returns the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function.</p>',ret:'a string corresponding to the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function',ext:'On failure, throws an exception or returns <tt>Y_REPORTFREQUENCY_INVALID</tt>.'};
+doc['Current']['get_resolution']={syn:'Returns the resolution of the measured values.',lib:'current.get_resolution()',pro:'def get_resolution()',cmt:'<p>Returns the resolution of the measured values. The resolution corresponds to the numerical precision of the measures, which is not always the same as the actual precision of the sensor.</p>',ret:'a floating point number corresponding to the resolution of the measured values',ext:'On failure, throws an exception or returns <tt>Y_RESOLUTION_INVALID</tt>.'};
+doc['Current']['get_sensorState']={syn:'Returns the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now.',lib:'current.get_sensorState()',pro:'def get_sensorState()',cmt:'<p>Returns the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now.</p>',ret:'an integer corresponding to the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now',ext:'On failure, throws an exception or returns <tt>Y_SENSORSTATE_INVALID</tt>.'};
+doc['Current']['get_unit']={syn:'Returns the measuring unit for the current.',lib:'current.get_unit()',pro:'def get_unit()',cmt:'<p>Returns the measuring unit for the current.</p>',ret:'a string corresponding to the measuring unit for the current',ext:'On failure, throws an exception or returns <tt>Y_UNIT_INVALID</tt>.'};
+doc['Current']['get_userData']={syn:'Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>.',lib:'current.get_userData()',pro:'def get_userData()',cmt:'<p>Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>. This attribute is never touched directly by the API, and is at disposal of the caller to store a context.</p>',ret:'the object stored previously by the caller.'};
+doc['Current']['isOnline']={syn:'Checks if the current sensor is currently reachable, without raising any error.',lib:'current.isOnline()',pro:'def isOnline()',cmt:'<p>Checks if the current sensor is currently reachable, without raising any error. If there is a cached value for the current sensor in cache, that has not yet expired, the device is considered reachable. No exception is raised if there is an error while trying to contact the device hosting the current sensor.</p>',ret:'<tt>true</tt> if the current sensor can be reached, and <tt>false</tt> otherwise'};
+doc['Current']['load']={syn:'Preloads the current sensor cache with a specified validity duration.',lib:'current.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Preloads the current sensor cache with a specified validity duration. By default, whenever accessing a device, all function attributes are kept in cache for the standard duration (5 ms). This method can be used to temporarily mark the cache as valid for a longer period, in order to reduce network traffic for instance.</p>',par:{msValidity:'an integer corresponding to the validity attributed to the loaded function parameters, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Current']['loadAttribute']={syn:'Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.',lib:'current.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'On failure, throws an exception or returns an empty string.'};
+doc['Current']['loadCalibrationPoints']={syn:'Retrieves error correction data points previously entered using the method <tt>calibrateFromPoints</tt>.',lib:'current.loadCalibrationPoints()',pro:'def loadCalibrationPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Retrieves error correction data points previously entered using the method <tt>calibrateFromPoints</tt>.</p>',par:{rawValues:'array of floating point numbers, that will be filled by the function with the raw sensor values for the correction points.',refValues:'array of floating point numbers, that will be filled by the function with the desired values for the correction points.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Current']['muteValueCallbacks']={syn:'Disable the propagation of every new advertised value to the parent hub.',lib:'current.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>Disable the propagation of every new advertised value to the parent hub. You can use this function to save bandwidth and CPU on computers with limited resources, or to prevent unwanted invocations of the HTTP callback. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Current']['nextCurrent']={syn:'Continues the enumeration of current sensors started using <tt>yFirstCurrent()</tt>.',lib:'current.nextCurrent()',pro:'def nextCurrent()',cmt:'<p>Continues the enumeration of current sensors started using <tt>yFirstCurrent()</tt>.</p>',ret:'a pointer to a <tt>YCurrent</tt> object, corresponding to a current sensor currently online, or a <tt>null</tt> pointer if there are no more current sensors to enumerate.'};
+doc['Current']['registerTimedReportCallback']={syn:'Registers the callback function that is invoked on every periodic timed notification.',lib:'current.registerTimedReportCallback()',pro:'def registerTimedReportCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every periodic timed notification. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and an YMeasure object describing the new advertised value.'}};
+doc['Current']['registerValueCallback']={syn:'Registers the callback function that is invoked on every change of advertised value.',lib:'current.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every change of advertised value. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and the character string describing the new advertised value.'}};
+doc['Current']['set_highestValue']={syn:'Changes the recorded maximal value observed.',lib:'current.set_highestValue()',pro:'def set_highestValue(<span id=pn>newval</span>)',cmt:'<p>Changes the recorded maximal value observed.</p>',par:{newval:'a floating point number corresponding to the recorded maximal value observed'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Current']['set_logFrequency']={syn:'Changes the datalogger recording frequency for this function.',lib:'current.set_logFrequency()',pro:'def set_logFrequency(<span id=pn>newval</span>)',cmt:'<p>Changes the datalogger recording frequency for this function. The frequency can be specified as samples per second, as sample per minute (for instance \x2215/m\x22) or in samples per hour (eg. \x224/h\x22). To disable recording for this function, use the value \x22OFF\x22.</p>',par:{newval:'a string corresponding to the datalogger recording frequency for this function'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Current']['set_logicalName']={syn:'Changes the logical name of the current sensor.',lib:'current.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Changes the logical name of the current sensor. You can use <tt>yCheckLogicalName()</tt> prior to this call to make sure that your parameter is valid. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the logical name of the current sensor.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Current']['set_lowestValue']={syn:'Changes the recorded minimal value observed.',lib:'current.set_lowestValue()',pro:'def set_lowestValue(<span id=pn>newval</span>)',cmt:'<p>Changes the recorded minimal value observed.</p>',par:{newval:'a floating point number corresponding to the recorded minimal value observed'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Current']['set_reportFrequency']={syn:'Changes the timed value notification frequency for this function.',lib:'current.set_reportFrequency()',pro:'def set_reportFrequency(<span id=pn>newval</span>)',cmt:'<p>Changes the timed value notification frequency for this function. The frequency can be specified as samples per second, as sample per minute (for instance \x2215/m\x22) or in samples per hour (eg. \x224/h\x22). To disable timed value notifications for this function, use the value \x22OFF\x22.</p>',par:{newval:'a string corresponding to the timed value notification frequency for this function'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Current']['set_resolution']={syn:'Changes the resolution of the measured physical values.',lib:'current.set_resolution()',pro:'def set_resolution(<span id=pn>newval</span>)',cmt:'<p>Changes the resolution of the measured physical values. The resolution corresponds to the numerical precision when displaying value. It does not change the precision of the measure itself.</p>',par:{newval:'a floating point number corresponding to the resolution of the measured physical values'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Current']['set_userData']={syn:'Stores a user context provided as argument in the userData attribute of the function.',lib:'current.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Stores a user context provided as argument in the userData attribute of the function. This attribute is never touched by the API, and is at disposal of the caller to store a context.</p>',par:{data:'any kind of object to be stored'}};
+doc['Current']['startDataLogger']={syn:'Starts the data logger on the device.',lib:'current.startDataLogger()',pro:'def startDataLogger()',cmt:'<p>Starts the data logger on the device. Note that the data logger will only save the measures on this sensor if the logFrequency is not set to \x22OFF\x22.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.'};
+doc['Current']['stopDataLogger']={syn:'Stops the datalogger on the device.',lib:'current.stopDataLogger()',pro:'def stopDataLogger()',cmt:'<p>Stops the datalogger on the device.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.'};
+doc['Current']['unmuteValueCallbacks']={syn:'Re-enable the propagation of every new advertised value to the parent hub.',lib:'current.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>Re-enable the propagation of every new advertised value to the parent hub. This function reverts the effect of a previous call to <tt>muteValueCallbacks()</tt>. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+//--- (end of generated code: Current)
+//--- (generated code: CarbonDioxide)
+doc['CarbonDioxide']={'':{syn:'CarbonDioxide function interface',inc:'from yocto_carbondioxide import *',cmt:'<p>The Yoctopuce class YCarbonDioxide allows you to read and configure Yoctopuce CO2 sensors. It inherits from YSensor class the core functions to read measurements, register callback functions, access to the autonomous datalogger. This class adds the ability to perform manual calibration if reuired.</p>'}};
+doc['CarbonDioxide']['FindCarbonDioxide']={syn:'Retrieves a CO2 sensor for a given identifier.',lib:'YCarbonDioxide.FindCarbonDioxide()',pro:'def FindCarbonDioxide(<span id=pn>func</span>)',cmt:'<p>Retrieves a CO2 sensor for a given identifier. The identifier can be specified using several formats:<br> <ul> <li>FunctionLogicalName</li> <li>ModuleSerialNumber.FunctionIdentifier</li> <li>ModuleSerialNumber.FunctionLogicalName</li> <li>ModuleLogicalName.FunctionIdentifier</li> <li>ModuleLogicalName.FunctionLogicalName</li> </ul></p><p> This function does not require that the CO2 sensor is online at the time it is invoked. The returned object is nevertheless valid. Use the method <tt>YCarbonDioxide.isOnline()</tt> to test if the CO2 sensor is indeed online at a given time. In case of ambiguity when looking for a CO2 sensor by logical name, no error is notified: the first instance found is returned. The search is performed first by hardware name, then by logical name.</p>',par:{func:'a string that uniquely characterizes the CO2 sensor'},ret:'a <tt>YCarbonDioxide</tt> object allowing you to drive the CO2 sensor.'};
+doc['CarbonDioxide']['FirstCarbonDioxide']={syn:'Starts the enumeration of CO2 sensors currently accessible.',lib:'YCarbonDioxide.FirstCarbonDioxide()',pro:'def FirstCarbonDioxide()',cmt:'<p>Starts the enumeration of CO2 sensors currently accessible. Use the method <tt>YCarbonDioxide.nextCarbonDioxide()</tt> to iterate on next CO2 sensors.</p>',ret:'a pointer to a <tt>YCarbonDioxide</tt> object, corresponding to the first CO2 sensor currently online, or a <tt>null</tt> pointer if there are none.'};
+doc['CarbonDioxide']['calibrateFromPoints']={syn:'Configures error correction data points, in particular to compensate for a possible perturbation of the measure caused by an enclosure.',lib:'carbondioxide.calibrateFromPoints()',pro:'def calibrateFromPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Configures error correction data points, in particular to compensate for a possible perturbation of the measure caused by an enclosure. It is possible to configure up to five correction points. Correction points must be provided in ascending order, and be in the range of the sensor. The device will automatically perform a linear interpolation of the error correction between specified points. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p><p> For more information on advanced capabilities to refine the calibration of sensors, please contact support@yoctopuce.com.</p>',par:{rawValues:'array of floating point numbers, corresponding to the raw values returned by the sensor for the correction points.',refValues:'array of floating point numbers, corresponding to the corrected values for the correction points.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['CarbonDioxide']['clearCache']={syn:'Invalidates the cache.',lib:'carbondioxide.clearCache()',pro:'def clearCache()',cmt:'<p>Invalidates the cache. Invalidates the cache of the CO2 sensor attributes. Forces the next call to get_xxx() or loadxxx() to use values that come from the device.</p>'};
+doc['CarbonDioxide']['describe']={syn:'Returns a short text that describes unambiguously the instance of the CO2 sensor in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'carbondioxide.describe()',pro:'def describe()',cmt:'<p>Returns a short text that describes unambiguously the instance of the CO2 sensor in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. More precisely, <tt>TYPE</tt> is the type of the function, <tt>NAME</tt> it the name used for the first access to the function, <tt>SERIAL</tt> is the serial number of the module if the module is connected or <tt>\x22unresolved\x22</tt>, and <tt>FUNCTIONID</tt> is the hardware identifier of the function if the module is connected. For example, this method returns <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> if the module is already connected or <tt>Relay(BadCustomeName.relay1)=unresolved</tt> if the module has not yet been connected. This method does not trigger any USB or TCP transaction and can therefore be used in a debugger.</p>',ret:'a string that describes the CO2 sensor (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['CarbonDioxide']['get_abcPeriod']={syn:'Returns the Automatic Baseline Calibration period, in hours.',lib:'carbondioxide.get_abcPeriod()',pro:'def get_abcPeriod()',cmt:'<p>Returns the Automatic Baseline Calibration period, in hours. A negative value means that automatic baseline calibration is disabled.</p>',ret:'an integer corresponding to the Automatic Baseline Calibration period, in hours',ext:'On failure, throws an exception or returns <tt>Y_ABCPERIOD_INVALID</tt>.'};
+doc['CarbonDioxide']['get_advertisedValue']={syn:'Returns the current value of the CO2 sensor (no more than 6 characters).',lib:'carbondioxide.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Returns the current value of the CO2 sensor (no more than 6 characters).</p>',ret:'a string corresponding to the current value of the CO2 sensor (no more than 6 characters).',ext:'On failure, throws an exception or returns <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['CarbonDioxide']['get_currentRawValue']={syn:'Returns the uncalibrated, unrounded raw value returned by the sensor, in ppm (vol), as a floating point number.',lib:'carbondioxide.get_currentRawValue()',pro:'def get_currentRawValue()',cmt:'<p>Returns the uncalibrated, unrounded raw value returned by the sensor, in ppm (vol), as a floating point number.</p>',ret:'a floating point number corresponding to the uncalibrated, unrounded raw value returned by the sensor, in ppm (vol), as a floating point number',ext:'On failure, throws an exception or returns <tt>Y_CURRENTRAWVALUE_INVALID</tt>.'};
+doc['CarbonDioxide']['get_currentValue']={syn:'Returns the current value of the CO2 concentration, in ppm (vol), as a floating point number.',lib:'carbondioxide.get_currentValue()',pro:'def get_currentValue()',cmt:'<p>Returns the current value of the CO2 concentration, in ppm (vol), as a floating point number.</p>',ret:'a floating point number corresponding to the current value of the CO2 concentration, in ppm (vol), as a floating point number',ext:'On failure, throws an exception or returns <tt>Y_CURRENTVALUE_INVALID</tt>.'};
+doc['CarbonDioxide']['get_errorMessage']={syn:'Returns the error message of the latest error with the CO2 sensor.',lib:'carbondioxide.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Returns the error message of the latest error with the CO2 sensor. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a string corresponding to the latest error message that occured while using the CO2 sensor object'};
+doc['CarbonDioxide']['get_errorType']={syn:'Returns the numerical error code of the latest error with the CO2 sensor.',lib:'carbondioxide.get_errorType()',pro:'def get_errorType()',cmt:'<p>Returns the numerical error code of the latest error with the CO2 sensor. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a number corresponding to the code of the latest error that occurred while using the CO2 sensor object'};
+doc['CarbonDioxide']['get_friendlyName']={syn:'Returns a global identifier of the CO2 sensor in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>.',lib:'carbondioxide.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Returns a global identifier of the CO2 sensor in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>. The returned string uses the logical names of the module and of the CO2 sensor if they are defined, otherwise the serial number of the module and the hardware identifier of the CO2 sensor (for example: <tt>MyCustomName.relay1</tt>)</p>',ret:'a string that uniquely identifies the CO2 sensor using logical names (ex: <tt>MyCustomName.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['CarbonDioxide']['get_functionDescriptor']={syn:'Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function.',lib:'carbondioxide.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function. This identifier can be used to test if two instances of <tt>YFunction</tt> reference the same physical function on the same physical device.</p>',ret:'an identifier of type <tt>YFUN_DESCR</tt>.',ext:'If the function has never been contacted, the returned value is <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>.'};
+doc['CarbonDioxide']['get_functionId']={syn:'Returns the hardware identifier of the CO2 sensor, without reference to the module.',lib:'carbondioxide.get_functionId()',pro:'def get_functionId()',cmt:'<p>Returns the hardware identifier of the CO2 sensor, without reference to the module. For example <tt>relay1</tt></p>',ret:'a string that identifies the CO2 sensor (ex: <tt>relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['CarbonDioxide']['get_hardwareId']={syn:'Returns the unique hardware identifier of the CO2 sensor in the form <tt>SERIAL.FUNCTIONID</tt>.',lib:'carbondioxide.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Returns the unique hardware identifier of the CO2 sensor in the form <tt>SERIAL.FUNCTIONID</tt>. The unique hardware identifier is composed of the device serial number and of the hardware identifier of the CO2 sensor (for example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'a string that uniquely identifies the CO2 sensor (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['CarbonDioxide']['get_highestValue']={syn:'Returns the maximal value observed for the CO2 concentration since the device was started.',lib:'carbondioxide.get_highestValue()',pro:'def get_highestValue()',cmt:'<p>Returns the maximal value observed for the CO2 concentration since the device was started.</p>',ret:'a floating point number corresponding to the maximal value observed for the CO2 concentration since the device was started',ext:'On failure, throws an exception or returns <tt>Y_HIGHESTVALUE_INVALID</tt>.'};
+doc['CarbonDioxide']['get_logFrequency']={syn:'Returns the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory.',lib:'carbondioxide.get_logFrequency()',pro:'def get_logFrequency()',cmt:'<p>Returns the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory.</p>',ret:'a string corresponding to the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory',ext:'On failure, throws an exception or returns <tt>Y_LOGFREQUENCY_INVALID</tt>.'};
+doc['CarbonDioxide']['get_logicalName']={syn:'Returns the logical name of the CO2 sensor.',lib:'carbondioxide.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Returns the logical name of the CO2 sensor.</p>',ret:'a string corresponding to the logical name of the CO2 sensor.',ext:'On failure, throws an exception or returns <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['CarbonDioxide']['get_lowestValue']={syn:'Returns the minimal value observed for the CO2 concentration since the device was started.',lib:'carbondioxide.get_lowestValue()',pro:'def get_lowestValue()',cmt:'<p>Returns the minimal value observed for the CO2 concentration since the device was started.</p>',ret:'a floating point number corresponding to the minimal value observed for the CO2 concentration since the device was started',ext:'On failure, throws an exception or returns <tt>Y_LOWESTVALUE_INVALID</tt>.'};
+doc['CarbonDioxide']['get_module']={syn:'Gets the <tt>YModule</tt> object for the device on which the function is located.',lib:'carbondioxide.get_module()',pro:'def get_module()',cmt:'<p>Gets the <tt>YModule</tt> object for the device on which the function is located. If the function cannot be located on any module, the returned instance of <tt>YModule</tt> is not shown as on-line.</p>',ret:'an instance of <tt>YModule</tt>'};
+doc['CarbonDioxide']['get_recordedData']={syn:'Retrieves a DataSet object holding historical data for this sensor, for a specified time interval.',lib:'carbondioxide.get_recordedData()',pro:'def get_recordedData(<span id=pn>startTime</span>, <span id=pn>endTime</span>)',cmt:'<p>Retrieves a DataSet object holding historical data for this sensor, for a specified time interval. The measures will be retrieved from the data logger, which must have been turned on at the desired time. See the documentation of the DataSet class for information on how to get an overview of the recorded data, and how to load progressively a large set of measures from the data logger.</p><p> This function only works if the device uses a recent firmware, as DataSet objects are not supported by firmwares older than version 13000.</p>',par:{startTime:'the start of the desired measure time interval, as a Unix timestamp, i.e. the number of seconds since January 1, 1970 UTC. The special value 0 can be used to include any meaasure, without initial limit.',endTime:'the end of the desired measure time interval, as a Unix timestamp, i.e. the number of seconds since January 1, 1970 UTC. The special value 0 can be used to include any meaasure, without ending limit.'},ret:'an instance of YDataSet, providing access to historical data. Past measures can be loaded progressively using methods from the YDataSet object.'};
+doc['CarbonDioxide']['get_reportFrequency']={syn:'Returns the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function.',lib:'carbondioxide.get_reportFrequency()',pro:'def get_reportFrequency()',cmt:'<p>Returns the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function.</p>',ret:'a string corresponding to the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function',ext:'On failure, throws an exception or returns <tt>Y_REPORTFREQUENCY_INVALID</tt>.'};
+doc['CarbonDioxide']['get_resolution']={syn:'Returns the resolution of the measured values.',lib:'carbondioxide.get_resolution()',pro:'def get_resolution()',cmt:'<p>Returns the resolution of the measured values. The resolution corresponds to the numerical precision of the measures, which is not always the same as the actual precision of the sensor.</p>',ret:'a floating point number corresponding to the resolution of the measured values',ext:'On failure, throws an exception or returns <tt>Y_RESOLUTION_INVALID</tt>.'};
+doc['CarbonDioxide']['get_sensorState']={syn:'Returns the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now.',lib:'carbondioxide.get_sensorState()',pro:'def get_sensorState()',cmt:'<p>Returns the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now.</p>',ret:'an integer corresponding to the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now',ext:'On failure, throws an exception or returns <tt>Y_SENSORSTATE_INVALID</tt>.'};
+doc['CarbonDioxide']['get_unit']={syn:'Returns the measuring unit for the CO2 concentration.',lib:'carbondioxide.get_unit()',pro:'def get_unit()',cmt:'<p>Returns the measuring unit for the CO2 concentration.</p>',ret:'a string corresponding to the measuring unit for the CO2 concentration',ext:'On failure, throws an exception or returns <tt>Y_UNIT_INVALID</tt>.'};
+doc['CarbonDioxide']['get_userData']={syn:'Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>.',lib:'carbondioxide.get_userData()',pro:'def get_userData()',cmt:'<p>Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>. This attribute is never touched directly by the API, and is at disposal of the caller to store a context.</p>',ret:'the object stored previously by the caller.'};
+doc['CarbonDioxide']['isOnline']={syn:'Checks if the CO2 sensor is currently reachable, without raising any error.',lib:'carbondioxide.isOnline()',pro:'def isOnline()',cmt:'<p>Checks if the CO2 sensor is currently reachable, without raising any error. If there is a cached value for the CO2 sensor in cache, that has not yet expired, the device is considered reachable. No exception is raised if there is an error while trying to contact the device hosting the CO2 sensor.</p>',ret:'<tt>true</tt> if the CO2 sensor can be reached, and <tt>false</tt> otherwise'};
+doc['CarbonDioxide']['load']={syn:'Preloads the CO2 sensor cache with a specified validity duration.',lib:'carbondioxide.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Preloads the CO2 sensor cache with a specified validity duration. By default, whenever accessing a device, all function attributes are kept in cache for the standard duration (5 ms). This method can be used to temporarily mark the cache as valid for a longer period, in order to reduce network traffic for instance.</p>',par:{msValidity:'an integer corresponding to the validity attributed to the loaded function parameters, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['CarbonDioxide']['loadAttribute']={syn:'Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.',lib:'carbondioxide.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'On failure, throws an exception or returns an empty string.'};
+doc['CarbonDioxide']['loadCalibrationPoints']={syn:'Retrieves error correction data points previously entered using the method <tt>calibrateFromPoints</tt>.',lib:'carbondioxide.loadCalibrationPoints()',pro:'def loadCalibrationPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Retrieves error correction data points previously entered using the method <tt>calibrateFromPoints</tt>.</p>',par:{rawValues:'array of floating point numbers, that will be filled by the function with the raw sensor values for the correction points.',refValues:'array of floating point numbers, that will be filled by the function with the desired values for the correction points.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['CarbonDioxide']['muteValueCallbacks']={syn:'Disable the propagation of every new advertised value to the parent hub.',lib:'carbondioxide.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>Disable the propagation of every new advertised value to the parent hub. You can use this function to save bandwidth and CPU on computers with limited resources, or to prevent unwanted invocations of the HTTP callback. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['CarbonDioxide']['nextCarbonDioxide']={syn:'Continues the enumeration of CO2 sensors started using <tt>yFirstCarbonDioxide()</tt>.',lib:'carbondioxide.nextCarbonDioxide()',pro:'def nextCarbonDioxide()',cmt:'<p>Continues the enumeration of CO2 sensors started using <tt>yFirstCarbonDioxide()</tt>.</p>',ret:'a pointer to a <tt>YCarbonDioxide</tt> object, corresponding to a CO2 sensor currently online, or a <tt>null</tt> pointer if there are no more CO2 sensors to enumerate.'};
+doc['CarbonDioxide']['registerTimedReportCallback']={syn:'Registers the callback function that is invoked on every periodic timed notification.',lib:'carbondioxide.registerTimedReportCallback()',pro:'def registerTimedReportCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every periodic timed notification. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and an YMeasure object describing the new advertised value.'}};
+doc['CarbonDioxide']['registerValueCallback']={syn:'Registers the callback function that is invoked on every change of advertised value.',lib:'carbondioxide.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every change of advertised value. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and the character string describing the new advertised value.'}};
+doc['CarbonDioxide']['set_abcPeriod']={syn:'Modifies Automatic Baseline Calibration period, in hours.',lib:'carbondioxide.set_abcPeriod()',pro:'def set_abcPeriod(<span id=pn>newval</span>)',cmt:'<p>Modifies Automatic Baseline Calibration period, in hours. If you need to disable automatic baseline calibration (for instance when using the sensor in an environment that is constantly above 400ppm CO2), set the period to -1. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'an integer'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['CarbonDioxide']['set_highestValue']={syn:'Changes the recorded maximal value observed.',lib:'carbondioxide.set_highestValue()',pro:'def set_highestValue(<span id=pn>newval</span>)',cmt:'<p>Changes the recorded maximal value observed.</p>',par:{newval:'a floating point number corresponding to the recorded maximal value observed'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['CarbonDioxide']['set_logFrequency']={syn:'Changes the datalogger recording frequency for this function.',lib:'carbondioxide.set_logFrequency()',pro:'def set_logFrequency(<span id=pn>newval</span>)',cmt:'<p>Changes the datalogger recording frequency for this function. The frequency can be specified as samples per second, as sample per minute (for instance \x2215/m\x22) or in samples per hour (eg. \x224/h\x22). To disable recording for this function, use the value \x22OFF\x22.</p>',par:{newval:'a string corresponding to the datalogger recording frequency for this function'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['CarbonDioxide']['set_logicalName']={syn:'Changes the logical name of the CO2 sensor.',lib:'carbondioxide.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Changes the logical name of the CO2 sensor. You can use <tt>yCheckLogicalName()</tt> prior to this call to make sure that your parameter is valid. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the logical name of the CO2 sensor.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['CarbonDioxide']['set_lowestValue']={syn:'Changes the recorded minimal value observed.',lib:'carbondioxide.set_lowestValue()',pro:'def set_lowestValue(<span id=pn>newval</span>)',cmt:'<p>Changes the recorded minimal value observed.</p>',par:{newval:'a floating point number corresponding to the recorded minimal value observed'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['CarbonDioxide']['set_reportFrequency']={syn:'Changes the timed value notification frequency for this function.',lib:'carbondioxide.set_reportFrequency()',pro:'def set_reportFrequency(<span id=pn>newval</span>)',cmt:'<p>Changes the timed value notification frequency for this function. The frequency can be specified as samples per second, as sample per minute (for instance \x2215/m\x22) or in samples per hour (eg. \x224/h\x22). To disable timed value notifications for this function, use the value \x22OFF\x22.</p>',par:{newval:'a string corresponding to the timed value notification frequency for this function'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['CarbonDioxide']['set_resolution']={syn:'Changes the resolution of the measured physical values.',lib:'carbondioxide.set_resolution()',pro:'def set_resolution(<span id=pn>newval</span>)',cmt:'<p>Changes the resolution of the measured physical values. The resolution corresponds to the numerical precision when displaying value. It does not change the precision of the measure itself.</p>',par:{newval:'a floating point number corresponding to the resolution of the measured physical values'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['CarbonDioxide']['set_userData']={syn:'Stores a user context provided as argument in the userData attribute of the function.',lib:'carbondioxide.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Stores a user context provided as argument in the userData attribute of the function. This attribute is never touched by the API, and is at disposal of the caller to store a context.</p>',par:{data:'any kind of object to be stored'}};
+doc['CarbonDioxide']['startDataLogger']={syn:'Starts the data logger on the device.',lib:'carbondioxide.startDataLogger()',pro:'def startDataLogger()',cmt:'<p>Starts the data logger on the device. Note that the data logger will only save the measures on this sensor if the logFrequency is not set to \x22OFF\x22.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.'};
+doc['CarbonDioxide']['stopDataLogger']={syn:'Stops the datalogger on the device.',lib:'carbondioxide.stopDataLogger()',pro:'def stopDataLogger()',cmt:'<p>Stops the datalogger on the device.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.'};
+doc['CarbonDioxide']['triggerBaselineCalibration']={syn:'Triggers a baseline calibration at standard CO2 ambiant level (400ppm).',lib:'carbondioxide.triggerBaselineCalibration()',pro:'def triggerBaselineCalibration()',cmt:'<p>Triggers a baseline calibration at standard CO2 ambiant level (400ppm). It is normally not necessary to manually calibrate the sensor, because the built-in automatic baseline calibration procedure will automatically fix any long-term drift based on the lowest level of CO2 observed over the automatic calibration period. However, if you disable automatic baseline calibration, you may want to manually trigger a calibration from time to time. Before starting a baseline calibration, make sure to put the sensor in a standard environment (e.g. outside in fresh air) at around 400ppm.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['CarbonDioxide']['triggerZeroCalibration']={syn:'Triggers a zero calibration of the sensor on carbon dioxide-free air.',lib:'carbondioxide.triggerZeroCalibration()',pro:'def triggerZeroCalibration()',cmt:'<p>Triggers a zero calibration of the sensor on carbon dioxide-free air. It is normally not necessary to manually calibrate the sensor, because the built-in automatic baseline calibration procedure will automatically fix any long-term drift based on the lowest level of CO2 observed over the automatic calibration period. However, if you disable automatic baseline calibration, you may want to manually trigger a calibration from time to time. Before starting a zero calibration, you should circulate carbon dioxide-free air within the sensor for a minute or two, using a small pipe connected to the sensor. Please contact support@yoctopuce.com for more details on the zero calibration procedure.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['CarbonDioxide']['unmuteValueCallbacks']={syn:'Re-enable the propagation of every new advertised value to the parent hub.',lib:'carbondioxide.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>Re-enable the propagation of every new advertised value to the parent hub. This function reverts the effect of a previous call to <tt>muteValueCallbacks()</tt>. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+//--- (end of generated code: CarbonDioxide)
+//--- (generated code: Led)
+doc['Led']={'':{syn:'Led function interface',inc:'from yocto_led import *',cmt:'<p>The Yoctopuce application programming interface allows you not only to drive the intensity of the LED, but also to have it blink at various preset frequencies.</p>'}};
+doc['Led']['FindLed']={syn:'Retrieves a LED for a given identifier.',lib:'YLed.FindLed()',pro:'def FindLed(<span id=pn>func</span>)',cmt:'<p>Retrieves a LED for a given identifier. The identifier can be specified using several formats:<br> <ul> <li>FunctionLogicalName</li> <li>ModuleSerialNumber.FunctionIdentifier</li> <li>ModuleSerialNumber.FunctionLogicalName</li> <li>ModuleLogicalName.FunctionIdentifier</li> <li>ModuleLogicalName.FunctionLogicalName</li> </ul></p><p> This function does not require that the LED is online at the time it is invoked. The returned object is nevertheless valid. Use the method <tt>YLed.isOnline()</tt> to test if the LED is indeed online at a given time. In case of ambiguity when looking for a LED by logical name, no error is notified: the first instance found is returned. The search is performed first by hardware name, then by logical name.</p>',par:{func:'a string that uniquely characterizes the LED'},ret:'a <tt>YLed</tt> object allowing you to drive the LED.'};
+doc['Led']['FirstLed']={syn:'Starts the enumeration of LEDs currently accessible.',lib:'YLed.FirstLed()',pro:'def FirstLed()',cmt:'<p>Starts the enumeration of LEDs currently accessible. Use the method <tt>YLed.nextLed()</tt> to iterate on next LEDs.</p>',ret:'a pointer to a <tt>YLed</tt> object, corresponding to the first LED currently online, or a <tt>null</tt> pointer if there are none.'};
+doc['Led']['clearCache']={syn:'Invalidates the cache.',lib:'led.clearCache()',pro:'def clearCache()',cmt:'<p>Invalidates the cache. Invalidates the cache of the LED attributes. Forces the next call to get_xxx() or loadxxx() to use values that come from the device.</p>'};
+doc['Led']['describe']={syn:'Returns a short text that describes unambiguously the instance of the LED in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'led.describe()',pro:'def describe()',cmt:'<p>Returns a short text that describes unambiguously the instance of the LED in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. More precisely, <tt>TYPE</tt> is the type of the function, <tt>NAME</tt> it the name used for the first access to the function, <tt>SERIAL</tt> is the serial number of the module if the module is connected or <tt>\x22unresolved\x22</tt>, and <tt>FUNCTIONID</tt> is the hardware identifier of the function if the module is connected. For example, this method returns <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> if the module is already connected or <tt>Relay(BadCustomeName.relay1)=unresolved</tt> if the module has not yet been connected. This method does not trigger any USB or TCP transaction and can therefore be used in a debugger.</p>',ret:'a string that describes the LED (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['Led']['get_advertisedValue']={syn:'Returns the current value of the LED (no more than 6 characters).',lib:'led.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Returns the current value of the LED (no more than 6 characters).</p>',ret:'a string corresponding to the current value of the LED (no more than 6 characters).',ext:'On failure, throws an exception or returns <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['Led']['get_blinking']={syn:'Returns the current LED signaling mode.',lib:'led.get_blinking()',pro:'def get_blinking()',cmt:'<p>Returns the current LED signaling mode.</p>',ret:'a value among <tt>Y_BLINKING_STILL</tt>, <tt>Y_BLINKING_RELAX</tt>, <tt>Y_BLINKING_AWARE</tt>, <tt>Y_BLINKING_RUN</tt>, <tt>Y_BLINKING_CALL</tt> and <tt>Y_BLINKING_PANIC</tt> corresponding to the current LED signaling mode',ext:'On failure, throws an exception or returns <tt>Y_BLINKING_INVALID</tt>.'};
+doc['Led']['get_errorMessage']={syn:'Returns the error message of the latest error with the LED.',lib:'led.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Returns the error message of the latest error with the LED. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a string corresponding to the latest error message that occured while using the LED object'};
+doc['Led']['get_errorType']={syn:'Returns the numerical error code of the latest error with the LED.',lib:'led.get_errorType()',pro:'def get_errorType()',cmt:'<p>Returns the numerical error code of the latest error with the LED. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a number corresponding to the code of the latest error that occurred while using the LED object'};
+doc['Led']['get_friendlyName']={syn:'Returns a global identifier of the LED in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>.',lib:'led.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Returns a global identifier of the LED in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>. The returned string uses the logical names of the module and of the LED if they are defined, otherwise the serial number of the module and the hardware identifier of the LED (for example: <tt>MyCustomName.relay1</tt>)</p>',ret:'a string that uniquely identifies the LED using logical names (ex: <tt>MyCustomName.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['Led']['get_functionDescriptor']={syn:'Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function.',lib:'led.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function. This identifier can be used to test if two instances of <tt>YFunction</tt> reference the same physical function on the same physical device.</p>',ret:'an identifier of type <tt>YFUN_DESCR</tt>.',ext:'If the function has never been contacted, the returned value is <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>.'};
+doc['Led']['get_functionId']={syn:'Returns the hardware identifier of the LED, without reference to the module.',lib:'led.get_functionId()',pro:'def get_functionId()',cmt:'<p>Returns the hardware identifier of the LED, without reference to the module. For example <tt>relay1</tt></p>',ret:'a string that identifies the LED (ex: <tt>relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['Led']['get_hardwareId']={syn:'Returns the unique hardware identifier of the LED in the form <tt>SERIAL.FUNCTIONID</tt>.',lib:'led.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Returns the unique hardware identifier of the LED in the form <tt>SERIAL.FUNCTIONID</tt>. The unique hardware identifier is composed of the device serial number and of the hardware identifier of the LED (for example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'a string that uniquely identifies the LED (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['Led']['get_logicalName']={syn:'Returns the logical name of the LED.',lib:'led.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Returns the logical name of the LED.</p>',ret:'a string corresponding to the logical name of the LED.',ext:'On failure, throws an exception or returns <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['Led']['get_luminosity']={syn:'Returns the current LED intensity (in per cent).',lib:'led.get_luminosity()',pro:'def get_luminosity()',cmt:'<p>Returns the current LED intensity (in per cent).</p>',ret:'an integer corresponding to the current LED intensity (in per cent)',ext:'On failure, throws an exception or returns <tt>Y_LUMINOSITY_INVALID</tt>.'};
+doc['Led']['get_module']={syn:'Gets the <tt>YModule</tt> object for the device on which the function is located.',lib:'led.get_module()',pro:'def get_module()',cmt:'<p>Gets the <tt>YModule</tt> object for the device on which the function is located. If the function cannot be located on any module, the returned instance of <tt>YModule</tt> is not shown as on-line.</p>',ret:'an instance of <tt>YModule</tt>'};
+doc['Led']['get_power']={syn:'Returns the current LED state.',lib:'led.get_power()',pro:'def get_power()',cmt:'<p>Returns the current LED state.</p>',ret:'either <tt>Y_POWER_OFF</tt> or <tt>Y_POWER_ON</tt>, according to the current LED state',ext:'On failure, throws an exception or returns <tt>Y_POWER_INVALID</tt>.'};
+doc['Led']['get_userData']={syn:'Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>.',lib:'led.get_userData()',pro:'def get_userData()',cmt:'<p>Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>. This attribute is never touched directly by the API, and is at disposal of the caller to store a context.</p>',ret:'the object stored previously by the caller.'};
+doc['Led']['isOnline']={syn:'Checks if the LED is currently reachable, without raising any error.',lib:'led.isOnline()',pro:'def isOnline()',cmt:'<p>Checks if the LED is currently reachable, without raising any error. If there is a cached value for the LED in cache, that has not yet expired, the device is considered reachable. No exception is raised if there is an error while trying to contact the device hosting the LED.</p>',ret:'<tt>true</tt> if the LED can be reached, and <tt>false</tt> otherwise'};
+doc['Led']['load']={syn:'Preloads the LED cache with a specified validity duration.',lib:'led.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Preloads the LED cache with a specified validity duration. By default, whenever accessing a device, all function attributes are kept in cache for the standard duration (5 ms). This method can be used to temporarily mark the cache as valid for a longer period, in order to reduce network traffic for instance.</p>',par:{msValidity:'an integer corresponding to the validity attributed to the loaded function parameters, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Led']['loadAttribute']={syn:'Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.',lib:'led.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'On failure, throws an exception or returns an empty string.'};
+doc['Led']['muteValueCallbacks']={syn:'Disable the propagation of every new advertised value to the parent hub.',lib:'led.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>Disable the propagation of every new advertised value to the parent hub. You can use this function to save bandwidth and CPU on computers with limited resources, or to prevent unwanted invocations of the HTTP callback. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Led']['nextLed']={syn:'Continues the enumeration of LEDs started using <tt>yFirstLed()</tt>.',lib:'led.nextLed()',pro:'def nextLed()',cmt:'<p>Continues the enumeration of LEDs started using <tt>yFirstLed()</tt>.</p>',ret:'a pointer to a <tt>YLed</tt> object, corresponding to a LED currently online, or a <tt>null</tt> pointer if there are no more LEDs to enumerate.'};
+doc['Led']['registerValueCallback']={syn:'Registers the callback function that is invoked on every change of advertised value.',lib:'led.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every change of advertised value. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and the character string describing the new advertised value.'}};
+doc['Led']['set_blinking']={syn:'Changes the current LED signaling mode.',lib:'led.set_blinking()',pro:'def set_blinking(<span id=pn>newval</span>)',cmt:'<p>Changes the current LED signaling mode.</p>',par:{newval:'a value among <tt>Y_BLINKING_STILL</tt>, <tt>Y_BLINKING_RELAX</tt>, <tt>Y_BLINKING_AWARE</tt>, <tt>Y_BLINKING_RUN</tt>, <tt>Y_BLINKING_CALL</tt> and <tt>Y_BLINKING_PANIC</tt> corresponding to the current LED signaling mode'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Led']['set_logicalName']={syn:'Changes the logical name of the LED.',lib:'led.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Changes the logical name of the LED. You can use <tt>yCheckLogicalName()</tt> prior to this call to make sure that your parameter is valid. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the logical name of the LED.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Led']['set_luminosity']={syn:'Changes the current LED intensity (in per cent).',lib:'led.set_luminosity()',pro:'def set_luminosity(<span id=pn>newval</span>)',cmt:'<p>Changes the current LED intensity (in per cent).</p>',par:{newval:'an integer corresponding to the current LED intensity (in per cent)'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Led']['set_power']={syn:'Changes the state of the LED.',lib:'led.set_power()',pro:'def set_power(<span id=pn>newval</span>)',cmt:'<p>Changes the state of the LED.</p>',par:{newval:'either <tt>Y_POWER_OFF</tt> or <tt>Y_POWER_ON</tt>, according to the state of the LED'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Led']['set_userData']={syn:'Stores a user context provided as argument in the userData attribute of the function.',lib:'led.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Stores a user context provided as argument in the userData attribute of the function. This attribute is never touched by the API, and is at disposal of the caller to store a context.</p>',par:{data:'any kind of object to be stored'}};
+doc['Led']['unmuteValueCallbacks']={syn:'Re-enable the propagation of every new advertised value to the parent hub.',lib:'led.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>Re-enable the propagation of every new advertised value to the parent hub. This function reverts the effect of a previous call to <tt>muteValueCallbacks()</tt>. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+//--- (end of generated code: Led)
+//--- (generated code: VSource)
+doc['VSource']={'':{syn:'Voltage source function interface',inc:'from yocto_vsource import *',cmt:'<p>Yoctopuce application programming interface allows you to control the module voltage output. You affect absolute output values or make transitions</p>'}};
+doc['VSource']['FindVSource']={syn:'Retrieves a voltage source for a given identifier.',lib:'YVSource.FindVSource()',pro:'def FindVSource(<span id=pn>func</span>)',cmt:'<p>Retrieves a voltage source for a given identifier. The identifier can be specified using several formats:<br> <ul> <li>FunctionLogicalName</li> <li>ModuleSerialNumber.FunctionIdentifier</li> <li>ModuleSerialNumber.FunctionLogicalName</li> <li>ModuleLogicalName.FunctionIdentifier</li> <li>ModuleLogicalName.FunctionLogicalName</li> </ul> This function does not require that the voltage source is online at the time it is invoked. The returned object is nevertheless valid. Use the method <tt>YVSource.isOnline()</tt> to test if the voltage source is indeed online at a given time. In case of ambiguity when looking for a voltage source by logical name, no error is notified: the first instance found is returned. The search is performed first by hardware name, then by logical name.</p>',par:{func:'a string that uniquely characterizes the voltage source'},ret:'a <tt>YVSource</tt> object allowing you to drive the voltage source.'};
+doc['VSource']['FirstVSource']={syn:'Starts the enumeration of voltage sources currently accessible.',lib:'YVSource.FirstVSource()',pro:'def FirstVSource()',cmt:'<p>Starts the enumeration of voltage sources currently accessible. Use the method <tt>YVSource.nextVSource()</tt> to iterate on next voltage sources.</p>',ret:'a pointer to a <tt>YVSource</tt> object, corresponding to the first voltage source currently online, or a <tt>null</tt> pointer if there are none.'};
+doc['VSource']['get_advertisedValue']={syn:'Returns the current value of the voltage source (no more than 6 characters).',lib:'vsource.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Returns the current value of the voltage source (no more than 6 characters).</p>',ret:'a string corresponding to the current value of the voltage source (no more than 6 characters)',ext:'On failure, throws an exception or returns <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['VSource']['get_errorMessage']={syn:'Returns the error message of the latest error with this function.',lib:'vsource.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Returns the error message of the latest error with this function. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a string corresponding to the latest error message that occured while using this function object'};
+doc['VSource']['get_errorType']={syn:'Returns the numerical error code of the latest error with this function.',lib:'vsource.get_errorType()',pro:'def get_errorType()',cmt:'<p>Returns the numerical error code of the latest error with this function. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a number corresponding to the code of the latest error that occured while using this function object'};
+doc['VSource']['get_extPowerFailure']={syn:'Returns true if external power supply voltage is too low.',lib:'vsource.get_extPowerFailure()',pro:'def get_extPowerFailure()',cmt:'<p>Returns true if external power supply voltage is too low.</p>',ret:'either <tt>Y_EXTPOWERFAILURE_FALSE</tt> or <tt>Y_EXTPOWERFAILURE_TRUE</tt>, according to true if external power supply voltage is too low',ext:'On failure, throws an exception or returns <tt>Y_EXTPOWERFAILURE_INVALID</tt>.'};
+doc['VSource']['get_failure']={syn:'Returns true if the module is in failure mode.',lib:'vsource.get_failure()',pro:'def get_failure()',cmt:'<p>Returns true if the module is in failure mode. More information can be obtained by testing get_overheat, get_overcurrent etc... When a error condition is met, the output voltage is set to z\xE9ro and cannot be changed until the reset() function is called.</p>',ret:'either <tt>Y_FAILURE_FALSE</tt> or <tt>Y_FAILURE_TRUE</tt>, according to true if the module is in failure mode',ext:'On failure, throws an exception or returns <tt>Y_FAILURE_INVALID</tt>.'};
+doc['VSource']['get_functionDescriptor']={syn:'Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function.',lib:'vsource.get_vsourceDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function. This identifier can be used to test if two instances of <tt>YFunction</tt> reference the same physical function on the same physical device.</p>',ret:'an identifier of type <tt>YFUN_DESCR</tt>. If the function has never been contacted, the returned value is <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>.'};
+doc['VSource']['get_logicalName']={syn:'Returns the logical name of the voltage source.',lib:'vsource.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Returns the logical name of the voltage source.</p>',ret:'a string corresponding to the logical name of the voltage source',ext:'On failure, throws an exception or returns <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['VSource']['get_module']={syn:'Gets the <tt>YModule</tt> object for the device on which the function is located.',lib:'vsource.get_module()',pro:'def get_module()',cmt:'<p>Gets the <tt>YModule</tt> object for the device on which the function is located. If the function cannot be located on any module, the returned instance of <tt>YModule</tt> is not shown as on-line.</p>',ret:'an instance of <tt>YModule</tt>'};
+doc['VSource']['get_overCurrent']={syn:'Returns true if the appliance connected to the device is too greedy .',lib:'vsource.get_overCurrent()',pro:'def get_overCurrent()',cmt:'<p>Returns true if the appliance connected to the device is too greedy .</p>',ret:'either <tt>Y_OVERCURRENT_FALSE</tt> or <tt>Y_OVERCURRENT_TRUE</tt>, according to true if the appliance connected to the device is too greedy',ext:'On failure, throws an exception or returns <tt>Y_OVERCURRENT_INVALID</tt>.'};
+doc['VSource']['get_overHeat']={syn:'Returns TRUE if the module is overheating.',lib:'vsource.get_overHeat()',pro:'def get_overHeat()',cmt:'<p>Returns TRUE if the module is overheating.</p>',ret:'either <tt>Y_OVERHEAT_FALSE</tt> or <tt>Y_OVERHEAT_TRUE</tt>, according to TRUE if the module is overheating',ext:'On failure, throws an exception or returns <tt>Y_OVERHEAT_INVALID</tt>.'};
+doc['VSource']['get_overLoad']={syn:'Returns true if the device is not able to maintaint the requested voltage output .',lib:'vsource.get_overLoad()',pro:'def get_overLoad()',cmt:'<p>Returns true if the device is not able to maintaint the requested voltage output .</p>',ret:'either <tt>Y_OVERLOAD_FALSE</tt> or <tt>Y_OVERLOAD_TRUE</tt>, according to true if the device is not able to maintaint the requested voltage output',ext:'On failure, throws an exception or returns <tt>Y_OVERLOAD_INVALID</tt>.'};
+doc['VSource']['get_regulationFailure']={syn:'Returns true if the voltage output is too high regarding the requested voltage .',lib:'vsource.get_regulationFailure()',pro:'def get_regulationFailure()',cmt:'<p>Returns true if the voltage output is too high regarding the requested voltage .</p>',ret:'either <tt>Y_REGULATIONFAILURE_FALSE</tt> or <tt>Y_REGULATIONFAILURE_TRUE</tt>, according to true if the voltage output is too high regarding the requested voltage',ext:'On failure, throws an exception or returns <tt>Y_REGULATIONFAILURE_INVALID</tt>.'};
+doc['VSource']['get_unit']={syn:'Returns the measuring unit for the voltage.',lib:'vsource.get_unit()',pro:'def get_unit()',cmt:'<p>Returns the measuring unit for the voltage.</p>',ret:'a string corresponding to the measuring unit for the voltage',ext:'On failure, throws an exception or returns <tt>Y_UNIT_INVALID</tt>.'};
+doc['VSource']['get_userData']={syn:'Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>.',lib:'vsource.get_userData()',pro:'def get_userData()',cmt:'<p>Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>. This attribute is never touched directly by the API, and is at disposal of the caller to store a context.</p>',ret:'the object stored previously by the caller.'};
+doc['VSource']['get_voltage']={syn:'Returns the voltage output command (mV) ',lib:'vsource.get_voltage()',pro:'def get_voltage()',cmt:'<p>Returns the voltage output command (mV)</p>',ret:'an integer corresponding to the voltage output command (mV)',ext:'On failure, throws an exception or returns <tt>Y_VOLTAGE_INVALID</tt>.'};
+doc['VSource']['isOnline']={syn:'Checks if the function is currently reachable, without raising any error.',lib:'vsource.isOnline()',pro:'def isOnline()',cmt:'<p>Checks if the function is currently reachable, without raising any error. If there is a cached value for the function in cache, that has not yet expired, the device is considered reachable. No exception is raised if there is an error while trying to contact the device hosting the requested function.</p>',ret:'<tt>true</tt> if the function can be reached, and <tt>false</tt> otherwise'};
+doc['VSource']['load']={syn:'Preloads the function cache with a specified validity duration.',lib:'vsource.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Preloads the function cache with a specified validity duration. By default, whenever accessing a device, all function attributes are kept in cache for the standard duration (5 ms). This method can be used to temporarily mark the cache as valid for a longer period, in order to reduce network trafic for instance.</p>',par:{msValidity:'an integer corresponding to the validity attributed to the loaded function parameters, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds. On failure, throws an exception or returns a negative error code.'};
+doc['VSource']['nextVSource']={syn:'Continues the enumeration of voltage sources started using <tt>yFirstVSource()</tt>.',lib:'vsource.nextVSource()',pro:'def nextVSource()',cmt:'<p>Continues the enumeration of voltage sources started using <tt>yFirstVSource()</tt>.</p>',ret:'a pointer to a <tt>YVSource</tt> object, corresponding to a voltage source currently online, or a <tt>null</tt> pointer if there are no more voltage sources to enumerate.'};
+doc['VSource']['pulse']={syn:'Sets device output to a specific volatage, for a specified duration, then brings it automatically to 0V.',lib:'vsource.pulse()',pro:'def pulse(<span id=pn>voltage</span>, <span id=pn>ms_duration</span>)',cmt:'<p>Sets device output to a specific volatage, for a specified duration, then brings it automatically to 0V.</p>',par:{voltage:'pulse voltage, in millivolts',ms_duration:'pulse duration, in millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['VSource']['registerValueCallback']={syn:'Registers the callback function that is invoked on every change of advertised value.',lib:'vsource.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every change of advertised value. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and the character string describing the new advertised value.'}};
+doc['VSource']['set_logicalName']={syn:'Changes the logical name of the voltage source.',lib:'vsource.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Changes the logical name of the voltage source. You can use <tt>yCheckLogicalName()</tt> prior to this call to make sure that your parameter is valid. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the logical name of the voltage source'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['VSource']['set_userData']={syn:'Stores a user context provided as argument in the userData attribute of the function.',lib:'vsource.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Stores a user context provided as argument in the userData attribute of the function. This attribute is never touched by the API, and is at disposal of the caller to store a context.</p>',par:{data:'any kind of object to be stored'}};
+doc['VSource']['set_voltage']={syn:'Tunes the device output voltage (milliVolts).',lib:'vsource.set_voltage()',pro:'def set_voltage(<span id=pn>newval</span>)',cmt:'<p>Tunes the device output voltage (milliVolts).</p>',par:{newval:'an integer'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['VSource']['voltageMove']={syn:'Performs a smooth move at constant speed toward a given value.',lib:'vsource.voltageMove()',pro:'def voltageMove(<span id=pn>target</span>, <span id=pn>ms_duration</span>)',cmt:'<p>Performs a smooth move at constant speed toward a given value.</p>',par:{target:'new output value at end of transition, in milliVolts.',ms_duration:'transition duration, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+//--- (end of generated code: VSource)
+//--- (generated code: Network)
+doc['Network']={'':{syn:'Network function interface',inc:'from yocto_network import *',cmt:'<p>YNetwork objects provide access to TCP/IP parameters of Yoctopuce modules that include a built-in network interface.</p>'}};
+doc['Network']['FindNetwork']={syn:'Retrieves a network interface for a given identifier.',lib:'YNetwork.FindNetwork()',pro:'def FindNetwork(<span id=pn>func</span>)',cmt:'<p>Retrieves a network interface for a given identifier. The identifier can be specified using several formats:<br> <ul> <li>FunctionLogicalName</li> <li>ModuleSerialNumber.FunctionIdentifier</li> <li>ModuleSerialNumber.FunctionLogicalName</li> <li>ModuleLogicalName.FunctionIdentifier</li> <li>ModuleLogicalName.FunctionLogicalName</li> </ul></p><p> This function does not require that the network interface is online at the time it is invoked. The returned object is nevertheless valid. Use the method <tt>YNetwork.isOnline()</tt> to test if the network interface is indeed online at a given time. In case of ambiguity when looking for a network interface by logical name, no error is notified: the first instance found is returned. The search is performed first by hardware name, then by logical name.</p>',par:{func:'a string that uniquely characterizes the network interface'},ret:'a <tt>YNetwork</tt> object allowing you to drive the network interface.'};
+doc['Network']['FirstNetwork']={syn:'Starts the enumeration of network interfaces currently accessible.',lib:'YNetwork.FirstNetwork()',pro:'def FirstNetwork()',cmt:'<p>Starts the enumeration of network interfaces currently accessible. Use the method <tt>YNetwork.nextNetwork()</tt> to iterate on next network interfaces.</p>',ret:'a pointer to a <tt>YNetwork</tt> object, corresponding to the first network interface currently online, or a <tt>null</tt> pointer if there are none.'};
+doc['Network']['callbackLogin']={syn:'Connects to the notification callback and saves the credentials required to log into it.',lib:'network.callbackLogin()',pro:'def callbackLogin(<span id=pn>username</span>, <span id=pn>password</span>)',cmt:'<p>Connects to the notification callback and saves the credentials required to log into it. The password is not stored into the module, only a hashed copy of the credentials are saved. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{username:'username required to log to the callback',password:'password required to log to the callback'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Network']['clearCache']={syn:'Invalidates the cache.',lib:'network.clearCache()',pro:'def clearCache()',cmt:'<p>Invalidates the cache. Invalidates the cache of the network interface attributes. Forces the next call to get_xxx() or loadxxx() to use values that come from the device.</p>'};
+doc['Network']['describe']={syn:'Returns a short text that describes unambiguously the instance of the network interface in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'network.describe()',pro:'def describe()',cmt:'<p>Returns a short text that describes unambiguously the instance of the network interface in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. More precisely, <tt>TYPE</tt> is the type of the function, <tt>NAME</tt> it the name used for the first access to the function, <tt>SERIAL</tt> is the serial number of the module if the module is connected or <tt>\x22unresolved\x22</tt>, and <tt>FUNCTIONID</tt> is the hardware identifier of the function if the module is connected. For example, this method returns <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> if the module is already connected or <tt>Relay(BadCustomeName.relay1)=unresolved</tt> if the module has not yet been connected. This method does not trigger any USB or TCP transaction and can therefore be used in a debugger.</p>',ret:'a string that describes the network interface (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['Network']['get_adminPassword']={syn:'Returns a hash string if a password has been set for user \x22admin\x22, or an empty string otherwise.',lib:'network.get_adminPassword()',pro:'def get_adminPassword()',cmt:'<p>Returns a hash string if a password has been set for user \x22admin\x22, or an empty string otherwise.</p>',ret:'a string corresponding to a hash string if a password has been set for user \x22admin\x22, or an empty string otherwise',ext:'On failure, throws an exception or returns <tt>Y_ADMINPASSWORD_INVALID</tt>.'};
+doc['Network']['get_advertisedValue']={syn:'Returns the current value of the network interface (no more than 6 characters).',lib:'network.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Returns the current value of the network interface (no more than 6 characters).</p>',ret:'a string corresponding to the current value of the network interface (no more than 6 characters).',ext:'On failure, throws an exception or returns <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['Network']['get_callbackCredentials']={syn:'Returns a hashed version of the notification callback credentials if set, or an empty string otherwise.',lib:'network.get_callbackCredentials()',pro:'def get_callbackCredentials()',cmt:'<p>Returns a hashed version of the notification callback credentials if set, or an empty string otherwise.</p>',ret:'a string corresponding to a hashed version of the notification callback credentials if set, or an empty string otherwise',ext:'On failure, throws an exception or returns <tt>Y_CALLBACKCREDENTIALS_INVALID</tt>.'};
+doc['Network']['get_callbackEncoding']={syn:'Returns the encoding standard to use for representing notification values.',lib:'network.get_callbackEncoding()',pro:'def get_callbackEncoding()',cmt:'<p>Returns the encoding standard to use for representing notification values.</p>',ret:'a value among <tt>Y_CALLBACKENCODING_FORM</tt>, <tt>Y_CALLBACKENCODING_JSON</tt>, <tt>Y_CALLBACKENCODING_JSON_ARRAY</tt>, <tt>Y_CALLBACKENCODING_CSV</tt>, <tt>Y_CALLBACKENCODING_YOCTO_API</tt>, <tt>Y_CALLBACKENCODING_JSON_NUM</tt>, <tt>Y_CALLBACKENCODING_EMONCMS</tt>, <tt>Y_CALLBACKENCODING_AZURE</tt>, <tt>Y_CALLBACKENCODING_INFLUXDB</tt> and <tt>Y_CALLBACKENCODING_MQTT</tt> corresponding to the encoding standard to use for representing notification values',ext:'On failure, throws an exception or returns <tt>Y_CALLBACKENCODING_INVALID</tt>.'};
+doc['Network']['get_callbackInitialDelay']={syn:'Returns the initial waiting time before first callback notifications, in seconds.',lib:'network.get_callbackInitialDelay()',pro:'def get_callbackInitialDelay()',cmt:'<p>Returns the initial waiting time before first callback notifications, in seconds.</p>',ret:'an integer corresponding to the initial waiting time before first callback notifications, in seconds',ext:'On failure, throws an exception or returns <tt>Y_CALLBACKINITIALDELAY_INVALID</tt>.'};
+doc['Network']['get_callbackMaxDelay']={syn:'Returns the maximum waiting time between two callback notifications, in seconds.',lib:'network.get_callbackMaxDelay()',pro:'def get_callbackMaxDelay()',cmt:'<p>Returns the maximum waiting time between two callback notifications, in seconds.</p>',ret:'an integer corresponding to the maximum waiting time between two callback notifications, in seconds',ext:'On failure, throws an exception or returns <tt>Y_CALLBACKMAXDELAY_INVALID</tt>.'};
+doc['Network']['get_callbackMethod']={syn:'Returns the HTTP method used to notify callbacks for significant state changes.',lib:'network.get_callbackMethod()',pro:'def get_callbackMethod()',cmt:'<p>Returns the HTTP method used to notify callbacks for significant state changes.</p>',ret:'a value among <tt>Y_CALLBACKMETHOD_POST</tt>, <tt>Y_CALLBACKMETHOD_GET</tt> and <tt>Y_CALLBACKMETHOD_PUT</tt> corresponding to the HTTP method used to notify callbacks for significant state changes',ext:'On failure, throws an exception or returns <tt>Y_CALLBACKMETHOD_INVALID</tt>.'};
+doc['Network']['get_callbackMinDelay']={syn:'Returns the minimum waiting time between two callback notifications, in seconds.',lib:'network.get_callbackMinDelay()',pro:'def get_callbackMinDelay()',cmt:'<p>Returns the minimum waiting time between two callback notifications, in seconds.</p>',ret:'an integer corresponding to the minimum waiting time between two callback notifications, in seconds',ext:'On failure, throws an exception or returns <tt>Y_CALLBACKMINDELAY_INVALID</tt>.'};
+doc['Network']['get_callbackUrl']={syn:'Returns the callback URL to notify of significant state changes.',lib:'network.get_callbackUrl()',pro:'def get_callbackUrl()',cmt:'<p>Returns the callback URL to notify of significant state changes.</p>',ret:'a string corresponding to the callback URL to notify of significant state changes',ext:'On failure, throws an exception or returns <tt>Y_CALLBACKURL_INVALID</tt>.'};
+doc['Network']['get_defaultPage']={syn:'Returns the HTML page to serve for the URL \x22/\x22\x22 of the hub.',lib:'network.get_defaultPage()',pro:'def get_defaultPage()',cmt:'<p>Returns the HTML page to serve for the URL \x22/\x22\x22 of the hub.</p>',ret:'a string corresponding to the HTML page to serve for the URL \x22/\x22\x22 of the hub',ext:'On failure, throws an exception or returns <tt>Y_DEFAULTPAGE_INVALID</tt>.'};
+doc['Network']['get_discoverable']={syn:'Returns the activation state of the multicast announce protocols to allow easy discovery of the module in the network neighborhood (uPnP/Bonjour protocol).',lib:'network.get_discoverable()',pro:'def get_discoverable()',cmt:'<p>Returns the activation state of the multicast announce protocols to allow easy discovery of the module in the network neighborhood (uPnP/Bonjour protocol).</p>',ret:'either <tt>Y_DISCOVERABLE_FALSE</tt> or <tt>Y_DISCOVERABLE_TRUE</tt>, according to the activation state of the multicast announce protocols to allow easy discovery of the module in the network neighborhood (uPnP/Bonjour protocol)',ext:'On failure, throws an exception or returns <tt>Y_DISCOVERABLE_INVALID</tt>.'};
+doc['Network']['get_errorMessage']={syn:'Returns the error message of the latest error with the network interface.',lib:'network.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Returns the error message of the latest error with the network interface. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a string corresponding to the latest error message that occured while using the network interface object'};
+doc['Network']['get_errorType']={syn:'Returns the numerical error code of the latest error with the network interface.',lib:'network.get_errorType()',pro:'def get_errorType()',cmt:'<p>Returns the numerical error code of the latest error with the network interface. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a number corresponding to the code of the latest error that occurred while using the network interface object'};
+doc['Network']['get_friendlyName']={syn:'Returns a global identifier of the network interface in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>.',lib:'network.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Returns a global identifier of the network interface in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>. The returned string uses the logical names of the module and of the network interface if they are defined, otherwise the serial number of the module and the hardware identifier of the network interface (for example: <tt>MyCustomName.relay1</tt>)</p>',ret:'a string that uniquely identifies the network interface using logical names (ex: <tt>MyCustomName.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['Network']['get_functionDescriptor']={syn:'Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function.',lib:'network.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function. This identifier can be used to test if two instances of <tt>YFunction</tt> reference the same physical function on the same physical device.</p>',ret:'an identifier of type <tt>YFUN_DESCR</tt>.',ext:'If the function has never been contacted, the returned value is <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>.'};
+doc['Network']['get_functionId']={syn:'Returns the hardware identifier of the network interface, without reference to the module.',lib:'network.get_functionId()',pro:'def get_functionId()',cmt:'<p>Returns the hardware identifier of the network interface, without reference to the module. For example <tt>relay1</tt></p>',ret:'a string that identifies the network interface (ex: <tt>relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['Network']['get_hardwareId']={syn:'Returns the unique hardware identifier of the network interface in the form <tt>SERIAL.FUNCTIONID</tt>.',lib:'network.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Returns the unique hardware identifier of the network interface in the form <tt>SERIAL.FUNCTIONID</tt>. The unique hardware identifier is composed of the device serial number and of the hardware identifier of the network interface (for example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'a string that uniquely identifies the network interface (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['Network']['get_httpPort']={syn:'Returns the HTML page to serve for the URL \x22/\x22\x22 of the hub.',lib:'network.get_httpPort()',pro:'def get_httpPort()',cmt:'<p>Returns the HTML page to serve for the URL \x22/\x22\x22 of the hub.</p>',ret:'an integer corresponding to the HTML page to serve for the URL \x22/\x22\x22 of the hub',ext:'On failure, throws an exception or returns <tt>Y_HTTPPORT_INVALID</tt>.'};
+doc['Network']['get_ipAddress']={syn:'Returns the IP address currently in use by the device.',lib:'network.get_ipAddress()',pro:'def get_ipAddress()',cmt:'<p>Returns the IP address currently in use by the device. The address may have been configured statically, or provided by a DHCP server.</p>',ret:'a string corresponding to the IP address currently in use by the device',ext:'On failure, throws an exception or returns <tt>Y_IPADDRESS_INVALID</tt>.'};
+doc['Network']['get_logicalName']={syn:'Returns the logical name of the network interface.',lib:'network.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Returns the logical name of the network interface.</p>',ret:'a string corresponding to the logical name of the network interface.',ext:'On failure, throws an exception or returns <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['Network']['get_macAddress']={syn:'Returns the MAC address of the network interface.',lib:'network.get_macAddress()',pro:'def get_macAddress()',cmt:'<p>Returns the MAC address of the network interface. The MAC address is also available on a sticker on the module, in both numeric and barcode forms.</p>',ret:'a string corresponding to the MAC address of the network interface',ext:'On failure, throws an exception or returns <tt>Y_MACADDRESS_INVALID</tt>.'};
+doc['Network']['get_module']={syn:'Gets the <tt>YModule</tt> object for the device on which the function is located.',lib:'network.get_module()',pro:'def get_module()',cmt:'<p>Gets the <tt>YModule</tt> object for the device on which the function is located. If the function cannot be located on any module, the returned instance of <tt>YModule</tt> is not shown as on-line.</p>',ret:'an instance of <tt>YModule</tt>'};
+doc['Network']['get_ntpServer']={syn:'Returns the IP address of the NTP server to be used by the device.',lib:'network.get_ntpServer()',pro:'def get_ntpServer()',cmt:'<p>Returns the IP address of the NTP server to be used by the device.</p>',ret:'a string corresponding to the IP address of the NTP server to be used by the device',ext:'On failure, throws an exception or returns <tt>Y_NTPSERVER_INVALID</tt>.'};
+doc['Network']['get_poeCurrent']={syn:'Returns the current consumed by the module from Power-over-Ethernet (PoE), in milli-amps.',lib:'network.get_poeCurrent()',pro:'def get_poeCurrent()',cmt:'<p>Returns the current consumed by the module from Power-over-Ethernet (PoE), in milli-amps. The current consumption is measured after converting PoE source to 5 Volt, and should never exceed 1800 mA.</p>',ret:'an integer corresponding to the current consumed by the module from Power-over-Ethernet (PoE), in milli-amps',ext:'On failure, throws an exception or returns <tt>Y_POECURRENT_INVALID</tt>.'};
+doc['Network']['get_primaryDNS']={syn:'Returns the IP address of the primary name server to be used by the module.',lib:'network.get_primaryDNS()',pro:'def get_primaryDNS()',cmt:'<p>Returns the IP address of the primary name server to be used by the module.</p>',ret:'a string corresponding to the IP address of the primary name server to be used by the module',ext:'On failure, throws an exception or returns <tt>Y_PRIMARYDNS_INVALID</tt>.'};
+doc['Network']['get_readiness']={syn:'Returns the current established working mode of the network interface.',lib:'network.get_readiness()',pro:'def get_readiness()',cmt:'<p>Returns the current established working mode of the network interface. Level zero (DOWN_0) means that no hardware link has been detected. Either there is no signal on the network cable, or the selected wireless access point cannot be detected. Level 1 (LIVE_1) is reached when the network is detected, but is not yet connected. For a wireless network, this shows that the requested SSID is present. Level 2 (LINK_2) is reached when the hardware connection is established. For a wired network connection, level 2 means that the cable is attached at both ends. For a connection to a wireless access point, it shows that the security parameters are properly configured. For an ad-hoc wireless connection, it means that there is at least one other device connected on the ad-hoc network. Level 3 (DHCP_3) is reached when an IP address has been obtained using DHCP. Level 4 (DNS_4) is reached when the DNS server is reachable on the network. Level 5 (WWW_5) is reached when global connectivity is demonstrated by properly loading the current time from an NTP server.</p>',ret:'a value among <tt>Y_READINESS_DOWN</tt>, <tt>Y_READINESS_EXISTS</tt>, <tt>Y_READINESS_LINKED</tt>, <tt>Y_READINESS_LAN_OK</tt> and <tt>Y_READINESS_WWW_OK</tt> corresponding to the current established working mode of the network interface',ext:'On failure, throws an exception or returns <tt>Y_READINESS_INVALID</tt>.'};
+doc['Network']['get_router']={syn:'Returns the IP address of the router on the device subnet (default gateway).',lib:'network.get_router()',pro:'def get_router()',cmt:'<p>Returns the IP address of the router on the device subnet (default gateway).</p>',ret:'a string corresponding to the IP address of the router on the device subnet (default gateway)',ext:'On failure, throws an exception or returns <tt>Y_ROUTER_INVALID</tt>.'};
+doc['Network']['get_secondaryDNS']={syn:'Returns the IP address of the secondary name server to be used by the module.',lib:'network.get_secondaryDNS()',pro:'def get_secondaryDNS()',cmt:'<p>Returns the IP address of the secondary name server to be used by the module.</p>',ret:'a string corresponding to the IP address of the secondary name server to be used by the module',ext:'On failure, throws an exception or returns <tt>Y_SECONDARYDNS_INVALID</tt>.'};
+doc['Network']['get_subnetMask']={syn:'Returns the subnet mask currently used by the device.',lib:'network.get_subnetMask()',pro:'def get_subnetMask()',cmt:'<p>Returns the subnet mask currently used by the device.</p>',ret:'a string corresponding to the subnet mask currently used by the device',ext:'On failure, throws an exception or returns <tt>Y_SUBNETMASK_INVALID</tt>.'};
+doc['Network']['get_userData']={syn:'Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>.',lib:'network.get_userData()',pro:'def get_userData()',cmt:'<p>Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>. This attribute is never touched directly by the API, and is at disposal of the caller to store a context.</p>',ret:'the object stored previously by the caller.'};
+doc['Network']['get_userPassword']={syn:'Returns a hash string if a password has been set for \x22user\x22 user, or an empty string otherwise.',lib:'network.get_userPassword()',pro:'def get_userPassword()',cmt:'<p>Returns a hash string if a password has been set for \x22user\x22 user, or an empty string otherwise.</p>',ret:'a string corresponding to a hash string if a password has been set for \x22user\x22 user, or an empty string otherwise',ext:'On failure, throws an exception or returns <tt>Y_USERPASSWORD_INVALID</tt>.'};
+doc['Network']['get_wwwWatchdogDelay']={syn:'Returns the allowed downtime of the WWW link (in seconds) before triggering an automated reboot to try to recover Internet connectivity.',lib:'network.get_wwwWatchdogDelay()',pro:'def get_wwwWatchdogDelay()',cmt:'<p>Returns the allowed downtime of the WWW link (in seconds) before triggering an automated reboot to try to recover Internet connectivity. A zero value disables automated reboot in case of Internet connectivity loss.</p>',ret:'an integer corresponding to the allowed downtime of the WWW link (in seconds) before triggering an automated reboot to try to recover Internet connectivity',ext:'On failure, throws an exception or returns <tt>Y_WWWWATCHDOGDELAY_INVALID</tt>.'};
+doc['Network']['isOnline']={syn:'Checks if the network interface is currently reachable, without raising any error.',lib:'network.isOnline()',pro:'def isOnline()',cmt:'<p>Checks if the network interface is currently reachable, without raising any error. If there is a cached value for the network interface in cache, that has not yet expired, the device is considered reachable. No exception is raised if there is an error while trying to contact the device hosting the network interface.</p>',ret:'<tt>true</tt> if the network interface can be reached, and <tt>false</tt> otherwise'};
+doc['Network']['load']={syn:'Preloads the network interface cache with a specified validity duration.',lib:'network.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Preloads the network interface cache with a specified validity duration. By default, whenever accessing a device, all function attributes are kept in cache for the standard duration (5 ms). This method can be used to temporarily mark the cache as valid for a longer period, in order to reduce network traffic for instance.</p>',par:{msValidity:'an integer corresponding to the validity attributed to the loaded function parameters, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Network']['loadAttribute']={syn:'Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.',lib:'network.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'On failure, throws an exception or returns an empty string.'};
+doc['Network']['muteValueCallbacks']={syn:'Disable the propagation of every new advertised value to the parent hub.',lib:'network.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>Disable the propagation of every new advertised value to the parent hub. You can use this function to save bandwidth and CPU on computers with limited resources, or to prevent unwanted invocations of the HTTP callback. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Network']['nextNetwork']={syn:'Continues the enumeration of network interfaces started using <tt>yFirstNetwork()</tt>.',lib:'network.nextNetwork()',pro:'def nextNetwork()',cmt:'<p>Continues the enumeration of network interfaces started using <tt>yFirstNetwork()</tt>.</p>',ret:'a pointer to a <tt>YNetwork</tt> object, corresponding to a network interface currently online, or a <tt>null</tt> pointer if there are no more network interfaces to enumerate.'};
+doc['Network']['ping']={syn:'Pings host to test the network connectivity.',lib:'network.ping()',pro:'def ping(<span id=pn>host</span>)',cmt:'<p>Pings host to test the network connectivity. Sends four ICMP ECHO_REQUEST requests from the module to the target host. This method returns a string with the result of the 4 ICMP ECHO_REQUEST requests.</p>',par:{host:'the hostname or the IP address of the target'},ret:'a string with the result of the ping.'};
+doc['Network']['registerValueCallback']={syn:'Registers the callback function that is invoked on every change of advertised value.',lib:'network.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every change of advertised value. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and the character string describing the new advertised value.'}};
+doc['Network']['set_adminPassword']={syn:'Changes the password for the \x22admin\x22 user.',lib:'network.set_adminPassword()',pro:'def set_adminPassword(<span id=pn>newval</span>)',cmt:'<p>Changes the password for the \x22admin\x22 user. This password becomes instantly required to perform any change of the module state. If the specified value is an empty string, a password is not required anymore. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the password for the \x22admin\x22 user'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Network']['set_callbackCredentials']={syn:'Changes the credentials required to connect to the callback address.',lib:'network.set_callbackCredentials()',pro:'def set_callbackCredentials(<span id=pn>newval</span>)',cmt:'<p>Changes the credentials required to connect to the callback address. The credentials must be provided as returned by function <tt>get_callbackCredentials</tt>, in the form <tt>username:hash</tt>. The method used to compute the hash varies according to the the authentication scheme implemented by the callback, For Basic authentication, the hash is the MD5 of the string <tt>username:password</tt>. For Digest authentication, the hash is the MD5 of the string <tt>username:realm:password</tt>. For a simpler way to configure callback credentials, use function <tt>callbackLogin</tt> instead. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the credentials required to connect to the callback address'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Network']['set_callbackEncoding']={syn:'Changes the encoding standard to use for representing notification values.',lib:'network.set_callbackEncoding()',pro:'def set_callbackEncoding(<span id=pn>newval</span>)',cmt:'<p>Changes the encoding standard to use for representing notification values.</p>',par:{newval:'a value among <tt>Y_CALLBACKENCODING_FORM</tt>, <tt>Y_CALLBACKENCODING_JSON</tt>, <tt>Y_CALLBACKENCODING_JSON_ARRAY</tt>, <tt>Y_CALLBACKENCODING_CSV</tt>, <tt>Y_CALLBACKENCODING_YOCTO_API</tt>, <tt>Y_CALLBACKENCODING_JSON_NUM</tt>, <tt>Y_CALLBACKENCODING_EMONCMS</tt>, <tt>Y_CALLBACKENCODING_AZURE</tt>, <tt>Y_CALLBACKENCODING_INFLUXDB</tt> and <tt>Y_CALLBACKENCODING_MQTT</tt> corresponding to the encoding standard to use for representing notification values'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Network']['set_callbackInitialDelay']={syn:'Changes the initial waiting time before first callback notifications, in seconds.',lib:'network.set_callbackInitialDelay()',pro:'def set_callbackInitialDelay(<span id=pn>newval</span>)',cmt:'<p>Changes the initial waiting time before first callback notifications, in seconds.</p>',par:{newval:'an integer corresponding to the initial waiting time before first callback notifications, in seconds'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Network']['set_callbackMaxDelay']={syn:'Changes the maximum waiting time between two callback notifications, in seconds.',lib:'network.set_callbackMaxDelay()',pro:'def set_callbackMaxDelay(<span id=pn>newval</span>)',cmt:'<p>Changes the maximum waiting time between two callback notifications, in seconds.</p>',par:{newval:'an integer corresponding to the maximum waiting time between two callback notifications, in seconds'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Network']['set_callbackMethod']={syn:'Changes the HTTP method used to notify callbacks for significant state changes.',lib:'network.set_callbackMethod()',pro:'def set_callbackMethod(<span id=pn>newval</span>)',cmt:'<p>Changes the HTTP method used to notify callbacks for significant state changes.</p>',par:{newval:'a value among <tt>Y_CALLBACKMETHOD_POST</tt>, <tt>Y_CALLBACKMETHOD_GET</tt> and <tt>Y_CALLBACKMETHOD_PUT</tt> corresponding to the HTTP method used to notify callbacks for significant state changes'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Network']['set_callbackMinDelay']={syn:'Changes the minimum waiting time between two callback notifications, in seconds.',lib:'network.set_callbackMinDelay()',pro:'def set_callbackMinDelay(<span id=pn>newval</span>)',cmt:'<p>Changes the minimum waiting time between two callback notifications, in seconds.</p>',par:{newval:'an integer corresponding to the minimum waiting time between two callback notifications, in seconds'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Network']['set_callbackUrl']={syn:'Changes the callback URL to notify significant state changes.',lib:'network.set_callbackUrl()',pro:'def set_callbackUrl(<span id=pn>newval</span>)',cmt:'<p>Changes the callback URL to notify significant state changes. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the callback URL to notify significant state changes'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Network']['set_defaultPage']={syn:'Changes the default HTML page returned by the hub.',lib:'network.set_defaultPage()',pro:'def set_defaultPage(<span id=pn>newval</span>)',cmt:'<p>Changes the default HTML page returned by the hub. If not value are set the hub return \x22index.html\x22 which is the web interface of the hub. It is possible de change this page for file that has been uploaded on the hub.</p>',par:{newval:'a string corresponding to the default HTML page returned by the hub'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Network']['set_discoverable']={syn:'Changes the activation state of the multicast announce protocols to allow easy discovery of the module in the network neighborhood (uPnP/Bonjour protocol).',lib:'network.set_discoverable()',pro:'def set_discoverable(<span id=pn>newval</span>)',cmt:'<p>Changes the activation state of the multicast announce protocols to allow easy discovery of the module in the network neighborhood (uPnP/Bonjour protocol).</p>',par:{newval:'either <tt>Y_DISCOVERABLE_FALSE</tt> or <tt>Y_DISCOVERABLE_TRUE</tt>, according to the activation state of the multicast announce protocols to allow easy discovery of the module in the network neighborhood (uPnP/Bonjour protocol)'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Network']['set_httpPort']={syn:'Changes the default HTML page returned by the hub.',lib:'network.set_httpPort()',pro:'def set_httpPort(<span id=pn>newval</span>)',cmt:'<p>Changes the default HTML page returned by the hub. If not value are set the hub return \x22index.html\x22 which is the web interface of the hub. It is possible de change this page for file that has been uploaded on the hub.</p>',par:{newval:'an integer corresponding to the default HTML page returned by the hub'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Network']['set_logicalName']={syn:'Changes the logical name of the network interface.',lib:'network.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Changes the logical name of the network interface. You can use <tt>yCheckLogicalName()</tt> prior to this call to make sure that your parameter is valid. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the logical name of the network interface.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Network']['set_ntpServer']={syn:'Changes the IP address of the NTP server to be used by the module.',lib:'network.set_ntpServer()',pro:'def set_ntpServer(<span id=pn>newval</span>)',cmt:'<p>Changes the IP address of the NTP server to be used by the module. Remember to call the <tt>saveToFlash()</tt> method and then to reboot the module to apply this setting.</p>',par:{newval:'a string corresponding to the IP address of the NTP server to be used by the module'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Network']['set_primaryDNS']={syn:'Changes the IP address of the primary name server to be used by the module.',lib:'network.set_primaryDNS()',pro:'def set_primaryDNS(<span id=pn>newval</span>)',cmt:'<p>Changes the IP address of the primary name server to be used by the module. When using DHCP, if a value is specified, it overrides the value received from the DHCP server. Remember to call the <tt>saveToFlash()</tt> method and then to reboot the module to apply this setting.</p>',par:{newval:'a string corresponding to the IP address of the primary name server to be used by the module'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Network']['set_secondaryDNS']={syn:'Changes the IP address of the secondary name server to be used by the module.',lib:'network.set_secondaryDNS()',pro:'def set_secondaryDNS(<span id=pn>newval</span>)',cmt:'<p>Changes the IP address of the secondary name server to be used by the module. When using DHCP, if a value is specified, it overrides the value received from the DHCP server. Remember to call the <tt>saveToFlash()</tt> method and then to reboot the module to apply this setting.</p>',par:{newval:'a string corresponding to the IP address of the secondary name server to be used by the module'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Network']['set_userData']={syn:'Stores a user context provided as argument in the userData attribute of the function.',lib:'network.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Stores a user context provided as argument in the userData attribute of the function. This attribute is never touched by the API, and is at disposal of the caller to store a context.</p>',par:{data:'any kind of object to be stored'}};
+doc['Network']['set_userPassword']={syn:'Changes the password for the \x22user\x22 user.',lib:'network.set_userPassword()',pro:'def set_userPassword(<span id=pn>newval</span>)',cmt:'<p>Changes the password for the \x22user\x22 user. This password becomes instantly required to perform any use of the module. If the specified value is an empty string, a password is not required anymore. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the password for the \x22user\x22 user'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Network']['set_wwwWatchdogDelay']={syn:'Changes the allowed downtime of the WWW link (in seconds) before triggering an automated reboot to try to recover Internet connectivity.',lib:'network.set_wwwWatchdogDelay()',pro:'def set_wwwWatchdogDelay(<span id=pn>newval</span>)',cmt:'<p>Changes the allowed downtime of the WWW link (in seconds) before triggering an automated reboot to try to recover Internet connectivity. A zero value disables automated reboot in case of Internet connectivity loss. The smallest valid non-zero timeout is 90 seconds.</p>',par:{newval:'an integer corresponding to the allowed downtime of the WWW link (in seconds) before triggering an automated reboot to try to recover Internet connectivity'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Network']['triggerCallback']={syn:'Trigger an HTTP callback quickly.',lib:'network.triggerCallback()',pro:'def triggerCallback()',cmt:'<p>Trigger an HTTP callback quickly. This function can even be called within an HTTP callback, in which case the next callback will be triggered 5 seconds after the end of the current callback, regardless if the minimum time between callbacks configured in the device.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Network']['unmuteValueCallbacks']={syn:'Re-enable the propagation of every new advertised value to the parent hub.',lib:'network.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>Re-enable the propagation of every new advertised value to the parent hub. This function reverts the effect of a previous call to <tt>muteValueCallbacks()</tt>. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Network']['useDHCP']={syn:'Changes the configuration of the network interface to enable the use of an IP address received from a DHCP server.',lib:'network.useDHCP()',pro:'def useDHCP(<span id=pn>fallbackIpAddr</span>, <span id=pn>fallbackSubnetMaskLen</span>, <span id=pn>fallbackRouter</span>)',cmt:'<p>Changes the configuration of the network interface to enable the use of an IP address received from a DHCP server. Until an address is received from a DHCP server, the module uses the IP parameters specified to this function. Remember to call the <tt>saveToFlash()</tt> method and then to reboot the module to apply this setting.</p>',par:{fallbackIpAddr:'fallback IP address, to be used when no DHCP reply is received',fallbackSubnetMaskLen:'fallback subnet mask length when no DHCP reply is received, as an integer (eg. 24 means 255.255.255.0)',fallbackRouter:'fallback router IP address, to be used when no DHCP reply is received'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Network']['useStaticIP']={syn:'Changes the configuration of the network interface to use a static IP address.',lib:'network.useStaticIP()',pro:'def useStaticIP(<span id=pn>ipAddress</span>, <span id=pn>subnetMaskLen</span>, <span id=pn>router</span>)',cmt:'<p>Changes the configuration of the network interface to use a static IP address. Remember to call the <tt>saveToFlash()</tt> method and then to reboot the module to apply this setting.</p>',par:{ipAddress:'device IP address',subnetMaskLen:'subnet mask length, as an integer (eg. 24 means 255.255.255.0)',router:'router IP address (default gateway)'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+//--- (end of generated code: Network)
+//--- (generated code: Wireless)
+doc['Wireless']={'':{syn:'Wireless function interface',inc:'from yocto_wireless import *',cmt:'<p>YWireless functions provides control over wireless network parameters and status for devices that are wireless-enabled.</p>'}};
+doc['Wireless']['FindWireless']={syn:'Retrieves a wireless lan interface for a given identifier.',lib:'YWireless.FindWireless()',pro:'def FindWireless(<span id=pn>func</span>)',cmt:'<p>Retrieves a wireless lan interface for a given identifier. The identifier can be specified using several formats:<br> <ul> <li>FunctionLogicalName</li> <li>ModuleSerialNumber.FunctionIdentifier</li> <li>ModuleSerialNumber.FunctionLogicalName</li> <li>ModuleLogicalName.FunctionIdentifier</li> <li>ModuleLogicalName.FunctionLogicalName</li> </ul></p><p> This function does not require that the wireless lan interface is online at the time it is invoked. The returned object is nevertheless valid. Use the method <tt>YWireless.isOnline()</tt> to test if the wireless lan interface is indeed online at a given time. In case of ambiguity when looking for a wireless lan interface by logical name, no error is notified: the first instance found is returned. The search is performed first by hardware name, then by logical name.</p>',par:{func:'a string that uniquely characterizes the wireless lan interface'},ret:'a <tt>YWireless</tt> object allowing you to drive the wireless lan interface.'};
+doc['Wireless']['FirstWireless']={syn:'Starts the enumeration of wireless lan interfaces currently accessible.',lib:'YWireless.FirstWireless()',pro:'def FirstWireless()',cmt:'<p>Starts the enumeration of wireless lan interfaces currently accessible. Use the method <tt>YWireless.nextWireless()</tt> to iterate on next wireless lan interfaces.</p>',ret:'a pointer to a <tt>YWireless</tt> object, corresponding to the first wireless lan interface currently online, or a <tt>null</tt> pointer if there are none.'};
+doc['Wireless']['adhocNetwork']={syn:'Changes the configuration of the wireless lan interface to create an ad-hoc wireless network, without using an access point.',lib:'wireless.adhocNetwork()',pro:'def adhocNetwork(<span id=pn>ssid</span>, <span id=pn>securityKey</span>)',cmt:'<p>Changes the configuration of the wireless lan interface to create an ad-hoc wireless network, without using an access point. On the YoctoHub-Wireless-g, it is best to use softAPNetworkInstead(), which emulates an access point (Soft AP) which is more efficient and more widely supported than ad-hoc networks.</p><p> When a security key is specified for an ad-hoc network, the network is protected by a WEP40 key (5 characters or 10 hexadecimal digits) or WEP128 key (13 characters or 26 hexadecimal digits). It is recommended to use a well-randomized WEP128 key using 26 hexadecimal digits to maximize security. Remember to call the <tt>saveToFlash()</tt> method and then to reboot the module to apply this setting.</p>',par:{ssid:'the name of the network to connect to',securityKey:'the network key, as a character string'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Wireless']['clearCache']={syn:'Invalidates the cache.',lib:'wireless.clearCache()',pro:'def clearCache()',cmt:'<p>Invalidates the cache. Invalidates the cache of the wireless lan interface attributes. Forces the next call to get_xxx() or loadxxx() to use values that come from the device.</p>'};
+doc['Wireless']['describe']={syn:'Returns a short text that describes unambiguously the instance of the wireless lan interface in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'wireless.describe()',pro:'def describe()',cmt:'<p>Returns a short text that describes unambiguously the instance of the wireless lan interface in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. More precisely, <tt>TYPE</tt> is the type of the function, <tt>NAME</tt> it the name used for the first access to the function, <tt>SERIAL</tt> is the serial number of the module if the module is connected or <tt>\x22unresolved\x22</tt>, and <tt>FUNCTIONID</tt> is the hardware identifier of the function if the module is connected. For example, this method returns <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> if the module is already connected or <tt>Relay(BadCustomeName.relay1)=unresolved</tt> if the module has not yet been connected. This method does not trigger any USB or TCP transaction and can therefore be used in a debugger.</p>',ret:'a string that describes the wireless lan interface (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['Wireless']['get_advertisedValue']={syn:'Returns the current value of the wireless lan interface (no more than 6 characters).',lib:'wireless.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Returns the current value of the wireless lan interface (no more than 6 characters).</p>',ret:'a string corresponding to the current value of the wireless lan interface (no more than 6 characters).',ext:'On failure, throws an exception or returns <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['Wireless']['get_channel']={syn:'Returns the 802.11 channel currently used, or 0 when the selected network has not been found.',lib:'wireless.get_channel()',pro:'def get_channel()',cmt:'<p>Returns the 802.11 channel currently used, or 0 when the selected network has not been found.</p>',ret:'an integer corresponding to the 802.11 channel currently used, or 0 when the selected network has not been found',ext:'On failure, throws an exception or returns <tt>Y_CHANNEL_INVALID</tt>.'};
+doc['Wireless']['get_detectedWlans']={syn:'Returns a list of YWlanRecord objects that describe detected Wireless networks.',lib:'wireless.get_detectedWlans()',pro:'def get_detectedWlans()',cmt:'<p>Returns a list of YWlanRecord objects that describe detected Wireless networks. This list is not updated when the module is already connected to an acces point (infrastructure mode). To force an update of this list, <tt>adhocNetwork()</tt> must be called to disconnect the module from the current network. The returned list must be unallocated by the caller.</p>',ret:'a list of <tt>YWlanRecord</tt> objects, containing the SSID, channel, link quality and the type of security of the wireless network.',ext:'On failure, throws an exception or returns an empty list.'};
+doc['Wireless']['get_errorMessage']={syn:'Returns the error message of the latest error with the wireless lan interface.',lib:'wireless.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Returns the error message of the latest error with the wireless lan interface. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a string corresponding to the latest error message that occured while using the wireless lan interface object'};
+doc['Wireless']['get_errorType']={syn:'Returns the numerical error code of the latest error with the wireless lan interface.',lib:'wireless.get_errorType()',pro:'def get_errorType()',cmt:'<p>Returns the numerical error code of the latest error with the wireless lan interface. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a number corresponding to the code of the latest error that occurred while using the wireless lan interface object'};
+doc['Wireless']['get_friendlyName']={syn:'Returns a global identifier of the wireless lan interface in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>.',lib:'wireless.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Returns a global identifier of the wireless lan interface in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>. The returned string uses the logical names of the module and of the wireless lan interface if they are defined, otherwise the serial number of the module and the hardware identifier of the wireless lan interface (for example: <tt>MyCustomName.relay1</tt>)</p>',ret:'a string that uniquely identifies the wireless lan interface using logical names (ex: <tt>MyCustomName.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['Wireless']['get_functionDescriptor']={syn:'Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function.',lib:'wireless.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function. This identifier can be used to test if two instances of <tt>YFunction</tt> reference the same physical function on the same physical device.</p>',ret:'an identifier of type <tt>YFUN_DESCR</tt>.',ext:'If the function has never been contacted, the returned value is <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>.'};
+doc['Wireless']['get_functionId']={syn:'Returns the hardware identifier of the wireless lan interface, without reference to the module.',lib:'wireless.get_functionId()',pro:'def get_functionId()',cmt:'<p>Returns the hardware identifier of the wireless lan interface, without reference to the module. For example <tt>relay1</tt></p>',ret:'a string that identifies the wireless lan interface (ex: <tt>relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['Wireless']['get_hardwareId']={syn:'Returns the unique hardware identifier of the wireless lan interface in the form <tt>SERIAL.FUNCTIONID</tt>.',lib:'wireless.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Returns the unique hardware identifier of the wireless lan interface in the form <tt>SERIAL.FUNCTIONID</tt>. The unique hardware identifier is composed of the device serial number and of the hardware identifier of the wireless lan interface (for example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'a string that uniquely identifies the wireless lan interface (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['Wireless']['get_linkQuality']={syn:'Returns the link quality, expressed in percent.',lib:'wireless.get_linkQuality()',pro:'def get_linkQuality()',cmt:'<p>Returns the link quality, expressed in percent.</p>',ret:'an integer corresponding to the link quality, expressed in percent',ext:'On failure, throws an exception or returns <tt>Y_LINKQUALITY_INVALID</tt>.'};
+doc['Wireless']['get_logicalName']={syn:'Returns the logical name of the wireless lan interface.',lib:'wireless.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Returns the logical name of the wireless lan interface.</p>',ret:'a string corresponding to the logical name of the wireless lan interface.',ext:'On failure, throws an exception or returns <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['Wireless']['get_message']={syn:'Returns the latest status message from the wireless interface.',lib:'wireless.get_message()',pro:'def get_message()',cmt:'<p>Returns the latest status message from the wireless interface.</p>',ret:'a string corresponding to the latest status message from the wireless interface',ext:'On failure, throws an exception or returns <tt>Y_MESSAGE_INVALID</tt>.'};
+doc['Wireless']['get_module']={syn:'Gets the <tt>YModule</tt> object for the device on which the function is located.',lib:'wireless.get_module()',pro:'def get_module()',cmt:'<p>Gets the <tt>YModule</tt> object for the device on which the function is located. If the function cannot be located on any module, the returned instance of <tt>YModule</tt> is not shown as on-line.</p>',ret:'an instance of <tt>YModule</tt>'};
+doc['Wireless']['get_security']={syn:'Returns the security algorithm used by the selected wireless network.',lib:'wireless.get_security()',pro:'def get_security()',cmt:'<p>Returns the security algorithm used by the selected wireless network.</p>',ret:'a value among <tt>Y_SECURITY_UNKNOWN</tt>, <tt>Y_SECURITY_OPEN</tt>, <tt>Y_SECURITY_WEP</tt>, <tt>Y_SECURITY_WPA</tt> and <tt>Y_SECURITY_WPA2</tt> corresponding to the security algorithm used by the selected wireless network',ext:'On failure, throws an exception or returns <tt>Y_SECURITY_INVALID</tt>.'};
+doc['Wireless']['get_ssid']={syn:'Returns the wireless network name (SSID).',lib:'wireless.get_ssid()',pro:'def get_ssid()',cmt:'<p>Returns the wireless network name (SSID).</p>',ret:'a string corresponding to the wireless network name (SSID)',ext:'On failure, throws an exception or returns <tt>Y_SSID_INVALID</tt>.'};
+doc['Wireless']['get_userData']={syn:'Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>.',lib:'wireless.get_userData()',pro:'def get_userData()',cmt:'<p>Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>. This attribute is never touched directly by the API, and is at disposal of the caller to store a context.</p>',ret:'the object stored previously by the caller.'};
+doc['Wireless']['isOnline']={syn:'Checks if the wireless lan interface is currently reachable, without raising any error.',lib:'wireless.isOnline()',pro:'def isOnline()',cmt:'<p>Checks if the wireless lan interface is currently reachable, without raising any error. If there is a cached value for the wireless lan interface in cache, that has not yet expired, the device is considered reachable. No exception is raised if there is an error while trying to contact the device hosting the wireless lan interface.</p>',ret:'<tt>true</tt> if the wireless lan interface can be reached, and <tt>false</tt> otherwise'};
+doc['Wireless']['joinNetwork']={syn:'Changes the configuration of the wireless lan interface to connect to an existing access point (infrastructure mode).',lib:'wireless.joinNetwork()',pro:'def joinNetwork(<span id=pn>ssid</span>, <span id=pn>securityKey</span>)',cmt:'<p>Changes the configuration of the wireless lan interface to connect to an existing access point (infrastructure mode). Remember to call the <tt>saveToFlash()</tt> method and then to reboot the module to apply this setting.</p>',par:{ssid:'the name of the network to connect to',securityKey:'the network key, as a character string'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Wireless']['load']={syn:'Preloads the wireless lan interface cache with a specified validity duration.',lib:'wireless.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Preloads the wireless lan interface cache with a specified validity duration. By default, whenever accessing a device, all function attributes are kept in cache for the standard duration (5 ms). This method can be used to temporarily mark the cache as valid for a longer period, in order to reduce network traffic for instance.</p>',par:{msValidity:'an integer corresponding to the validity attributed to the loaded function parameters, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Wireless']['loadAttribute']={syn:'Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.',lib:'wireless.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'On failure, throws an exception or returns an empty string.'};
+doc['Wireless']['muteValueCallbacks']={syn:'Disable the propagation of every new advertised value to the parent hub.',lib:'wireless.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>Disable the propagation of every new advertised value to the parent hub. You can use this function to save bandwidth and CPU on computers with limited resources, or to prevent unwanted invocations of the HTTP callback. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Wireless']['nextWireless']={syn:'Continues the enumeration of wireless lan interfaces started using <tt>yFirstWireless()</tt>.',lib:'wireless.nextWireless()',pro:'def nextWireless()',cmt:'<p>Continues the enumeration of wireless lan interfaces started using <tt>yFirstWireless()</tt>.</p>',ret:'a pointer to a <tt>YWireless</tt> object, corresponding to a wireless lan interface currently online, or a <tt>null</tt> pointer if there are no more wireless lan interfaces to enumerate.'};
+doc['Wireless']['registerValueCallback']={syn:'Registers the callback function that is invoked on every change of advertised value.',lib:'wireless.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every change of advertised value. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and the character string describing the new advertised value.'}};
+doc['Wireless']['set_logicalName']={syn:'Changes the logical name of the wireless lan interface.',lib:'wireless.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Changes the logical name of the wireless lan interface. You can use <tt>yCheckLogicalName()</tt> prior to this call to make sure that your parameter is valid. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the logical name of the wireless lan interface.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Wireless']['set_userData']={syn:'Stores a user context provided as argument in the userData attribute of the function.',lib:'wireless.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Stores a user context provided as argument in the userData attribute of the function. This attribute is never touched by the API, and is at disposal of the caller to store a context.</p>',par:{data:'any kind of object to be stored'}};
+doc['Wireless']['softAPNetwork']={syn:'Changes the configuration of the wireless lan interface to create a new wireless network by emulating a WiFi access point (Soft AP).',lib:'wireless.softAPNetwork()',pro:'def softAPNetwork(<span id=pn>ssid</span>, <span id=pn>securityKey</span>)',cmt:'<p>Changes the configuration of the wireless lan interface to create a new wireless network by emulating a WiFi access point (Soft AP). This function can only be used with the YoctoHub-Wireless-g.</p><p> When a security key is specified for a SoftAP network, the network is protected by a WEP40 key (5 characters or 10 hexadecimal digits) or WEP128 key (13 characters or 26 hexadecimal digits). It is recommended to use a well-randomized WEP128 key using 26 hexadecimal digits to maximize security. Remember to call the <tt>saveToFlash()</tt> method and then to reboot the module to apply this setting.</p>',par:{ssid:'the name of the network to connect to',securityKey:'the network key, as a character string'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Wireless']['unmuteValueCallbacks']={syn:'Re-enable the propagation of every new advertised value to the parent hub.',lib:'wireless.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>Re-enable the propagation of every new advertised value to the parent hub. This function reverts the effect of a previous call to <tt>muteValueCallbacks()</tt>. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+//--- (end of generated code: Wireless)
+//--- (generated code: Voc)
+doc['Voc']={'':{syn:'Voc function interface',inc:'from yocto_voc import *',cmt:'<p>The Yoctopuce class YVoc allows you to read and configure Yoctopuce Volatile Organic Compound sensors. It inherits from YSensor class the core functions to read measurements, register callback functions, access to the autonomous datalogger.</p>'}};
+doc['Voc']['FindVoc']={syn:'Retrieves a Volatile Organic Compound sensor for a given identifier.',lib:'YVoc.FindVoc()',pro:'def FindVoc(<span id=pn>func</span>)',cmt:'<p>Retrieves a Volatile Organic Compound sensor for a given identifier. The identifier can be specified using several formats:<br> <ul> <li>FunctionLogicalName</li> <li>ModuleSerialNumber.FunctionIdentifier</li> <li>ModuleSerialNumber.FunctionLogicalName</li> <li>ModuleLogicalName.FunctionIdentifier</li> <li>ModuleLogicalName.FunctionLogicalName</li> </ul></p><p> This function does not require that the Volatile Organic Compound sensor is online at the time it is invoked. The returned object is nevertheless valid. Use the method <tt>YVoc.isOnline()</tt> to test if the Volatile Organic Compound sensor is indeed online at a given time. In case of ambiguity when looking for a Volatile Organic Compound sensor by logical name, no error is notified: the first instance found is returned. The search is performed first by hardware name, then by logical name.</p>',par:{func:'a string that uniquely characterizes the Volatile Organic Compound sensor'},ret:'a <tt>YVoc</tt> object allowing you to drive the Volatile Organic Compound sensor.'};
+doc['Voc']['FirstVoc']={syn:'Starts the enumeration of Volatile Organic Compound sensors currently accessible.',lib:'YVoc.FirstVoc()',pro:'def FirstVoc()',cmt:'<p>Starts the enumeration of Volatile Organic Compound sensors currently accessible. Use the method <tt>YVoc.nextVoc()</tt> to iterate on next Volatile Organic Compound sensors.</p>',ret:'a pointer to a <tt>YVoc</tt> object, corresponding to the first Volatile Organic Compound sensor currently online, or a <tt>null</tt> pointer if there are none.'};
+doc['Voc']['calibrateFromPoints']={syn:'Configures error correction data points, in particular to compensate for a possible perturbation of the measure caused by an enclosure.',lib:'voc.calibrateFromPoints()',pro:'def calibrateFromPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Configures error correction data points, in particular to compensate for a possible perturbation of the measure caused by an enclosure. It is possible to configure up to five correction points. Correction points must be provided in ascending order, and be in the range of the sensor. The device will automatically perform a linear interpolation of the error correction between specified points. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p><p> For more information on advanced capabilities to refine the calibration of sensors, please contact support@yoctopuce.com.</p>',par:{rawValues:'array of floating point numbers, corresponding to the raw values returned by the sensor for the correction points.',refValues:'array of floating point numbers, corresponding to the corrected values for the correction points.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Voc']['clearCache']={syn:'Invalidates the cache.',lib:'voc.clearCache()',pro:'def clearCache()',cmt:'<p>Invalidates the cache. Invalidates the cache of the Volatile Organic Compound sensor attributes. Forces the next call to get_xxx() or loadxxx() to use values that come from the device.</p>'};
+doc['Voc']['describe']={syn:'Returns a short text that describes unambiguously the instance of the Volatile Organic Compound sensor in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'voc.describe()',pro:'def describe()',cmt:'<p>Returns a short text that describes unambiguously the instance of the Volatile Organic Compound sensor in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. More precisely, <tt>TYPE</tt> is the type of the function, <tt>NAME</tt> it the name used for the first access to the function, <tt>SERIAL</tt> is the serial number of the module if the module is connected or <tt>\x22unresolved\x22</tt>, and <tt>FUNCTIONID</tt> is the hardware identifier of the function if the module is connected. For example, this method returns <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> if the module is already connected or <tt>Relay(BadCustomeName.relay1)=unresolved</tt> if the module has not yet been connected. This method does not trigger any USB or TCP transaction and can therefore be used in a debugger.</p>',ret:'a string that describes the Volatile Organic Compound sensor (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['Voc']['get_advertisedValue']={syn:'Returns the current value of the Volatile Organic Compound sensor (no more than 6 characters).',lib:'voc.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Returns the current value of the Volatile Organic Compound sensor (no more than 6 characters).</p>',ret:'a string corresponding to the current value of the Volatile Organic Compound sensor (no more than 6 characters).',ext:'On failure, throws an exception or returns <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['Voc']['get_currentRawValue']={syn:'Returns the uncalibrated, unrounded raw value returned by the sensor, in ppm (vol), as a floating point number.',lib:'voc.get_currentRawValue()',pro:'def get_currentRawValue()',cmt:'<p>Returns the uncalibrated, unrounded raw value returned by the sensor, in ppm (vol), as a floating point number.</p>',ret:'a floating point number corresponding to the uncalibrated, unrounded raw value returned by the sensor, in ppm (vol), as a floating point number',ext:'On failure, throws an exception or returns <tt>Y_CURRENTRAWVALUE_INVALID</tt>.'};
+doc['Voc']['get_currentValue']={syn:'Returns the current value of the estimated VOC concentration, in ppm (vol), as a floating point number.',lib:'voc.get_currentValue()',pro:'def get_currentValue()',cmt:'<p>Returns the current value of the estimated VOC concentration, in ppm (vol), as a floating point number.</p>',ret:'a floating point number corresponding to the current value of the estimated VOC concentration, in ppm (vol), as a floating point number',ext:'On failure, throws an exception or returns <tt>Y_CURRENTVALUE_INVALID</tt>.'};
+doc['Voc']['get_errorMessage']={syn:'Returns the error message of the latest error with the Volatile Organic Compound sensor.',lib:'voc.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Returns the error message of the latest error with the Volatile Organic Compound sensor. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a string corresponding to the latest error message that occured while using the Volatile Organic Compound sensor object'};
+doc['Voc']['get_errorType']={syn:'Returns the numerical error code of the latest error with the Volatile Organic Compound sensor.',lib:'voc.get_errorType()',pro:'def get_errorType()',cmt:'<p>Returns the numerical error code of the latest error with the Volatile Organic Compound sensor. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a number corresponding to the code of the latest error that occurred while using the Volatile Organic Compound sensor object'};
+doc['Voc']['get_friendlyName']={syn:'Returns a global identifier of the Volatile Organic Compound sensor in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>.',lib:'voc.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Returns a global identifier of the Volatile Organic Compound sensor in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>. The returned string uses the logical names of the module and of the Volatile Organic Compound sensor if they are defined, otherwise the serial number of the module and the hardware identifier of the Volatile Organic Compound sensor (for example: <tt>MyCustomName.relay1</tt>)</p>',ret:'a string that uniquely identifies the Volatile Organic Compound sensor using logical names (ex: <tt>MyCustomName.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['Voc']['get_functionDescriptor']={syn:'Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function.',lib:'voc.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function. This identifier can be used to test if two instances of <tt>YFunction</tt> reference the same physical function on the same physical device.</p>',ret:'an identifier of type <tt>YFUN_DESCR</tt>.',ext:'If the function has never been contacted, the returned value is <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>.'};
+doc['Voc']['get_functionId']={syn:'Returns the hardware identifier of the Volatile Organic Compound sensor, without reference to the module.',lib:'voc.get_functionId()',pro:'def get_functionId()',cmt:'<p>Returns the hardware identifier of the Volatile Organic Compound sensor, without reference to the module. For example <tt>relay1</tt></p>',ret:'a string that identifies the Volatile Organic Compound sensor (ex: <tt>relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['Voc']['get_hardwareId']={syn:'Returns the unique hardware identifier of the Volatile Organic Compound sensor in the form <tt>SERIAL.FUNCTIONID</tt>.',lib:'voc.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Returns the unique hardware identifier of the Volatile Organic Compound sensor in the form <tt>SERIAL.FUNCTIONID</tt>. The unique hardware identifier is composed of the device serial number and of the hardware identifier of the Volatile Organic Compound sensor (for example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'a string that uniquely identifies the Volatile Organic Compound sensor (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['Voc']['get_highestValue']={syn:'Returns the maximal value observed for the estimated VOC concentration since the device was started.',lib:'voc.get_highestValue()',pro:'def get_highestValue()',cmt:'<p>Returns the maximal value observed for the estimated VOC concentration since the device was started.</p>',ret:'a floating point number corresponding to the maximal value observed for the estimated VOC concentration since the device was started',ext:'On failure, throws an exception or returns <tt>Y_HIGHESTVALUE_INVALID</tt>.'};
+doc['Voc']['get_logFrequency']={syn:'Returns the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory.',lib:'voc.get_logFrequency()',pro:'def get_logFrequency()',cmt:'<p>Returns the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory.</p>',ret:'a string corresponding to the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory',ext:'On failure, throws an exception or returns <tt>Y_LOGFREQUENCY_INVALID</tt>.'};
+doc['Voc']['get_logicalName']={syn:'Returns the logical name of the Volatile Organic Compound sensor.',lib:'voc.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Returns the logical name of the Volatile Organic Compound sensor.</p>',ret:'a string corresponding to the logical name of the Volatile Organic Compound sensor.',ext:'On failure, throws an exception or returns <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['Voc']['get_lowestValue']={syn:'Returns the minimal value observed for the estimated VOC concentration since the device was started.',lib:'voc.get_lowestValue()',pro:'def get_lowestValue()',cmt:'<p>Returns the minimal value observed for the estimated VOC concentration since the device was started.</p>',ret:'a floating point number corresponding to the minimal value observed for the estimated VOC concentration since the device was started',ext:'On failure, throws an exception or returns <tt>Y_LOWESTVALUE_INVALID</tt>.'};
+doc['Voc']['get_module']={syn:'Gets the <tt>YModule</tt> object for the device on which the function is located.',lib:'voc.get_module()',pro:'def get_module()',cmt:'<p>Gets the <tt>YModule</tt> object for the device on which the function is located. If the function cannot be located on any module, the returned instance of <tt>YModule</tt> is not shown as on-line.</p>',ret:'an instance of <tt>YModule</tt>'};
+doc['Voc']['get_recordedData']={syn:'Retrieves a DataSet object holding historical data for this sensor, for a specified time interval.',lib:'voc.get_recordedData()',pro:'def get_recordedData(<span id=pn>startTime</span>, <span id=pn>endTime</span>)',cmt:'<p>Retrieves a DataSet object holding historical data for this sensor, for a specified time interval. The measures will be retrieved from the data logger, which must have been turned on at the desired time. See the documentation of the DataSet class for information on how to get an overview of the recorded data, and how to load progressively a large set of measures from the data logger.</p><p> This function only works if the device uses a recent firmware, as DataSet objects are not supported by firmwares older than version 13000.</p>',par:{startTime:'the start of the desired measure time interval, as a Unix timestamp, i.e. the number of seconds since January 1, 1970 UTC. The special value 0 can be used to include any meaasure, without initial limit.',endTime:'the end of the desired measure time interval, as a Unix timestamp, i.e. the number of seconds since January 1, 1970 UTC. The special value 0 can be used to include any meaasure, without ending limit.'},ret:'an instance of YDataSet, providing access to historical data. Past measures can be loaded progressively using methods from the YDataSet object.'};
+doc['Voc']['get_reportFrequency']={syn:'Returns the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function.',lib:'voc.get_reportFrequency()',pro:'def get_reportFrequency()',cmt:'<p>Returns the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function.</p>',ret:'a string corresponding to the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function',ext:'On failure, throws an exception or returns <tt>Y_REPORTFREQUENCY_INVALID</tt>.'};
+doc['Voc']['get_resolution']={syn:'Returns the resolution of the measured values.',lib:'voc.get_resolution()',pro:'def get_resolution()',cmt:'<p>Returns the resolution of the measured values. The resolution corresponds to the numerical precision of the measures, which is not always the same as the actual precision of the sensor.</p>',ret:'a floating point number corresponding to the resolution of the measured values',ext:'On failure, throws an exception or returns <tt>Y_RESOLUTION_INVALID</tt>.'};
+doc['Voc']['get_sensorState']={syn:'Returns the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now.',lib:'voc.get_sensorState()',pro:'def get_sensorState()',cmt:'<p>Returns the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now.</p>',ret:'an integer corresponding to the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now',ext:'On failure, throws an exception or returns <tt>Y_SENSORSTATE_INVALID</tt>.'};
+doc['Voc']['get_unit']={syn:'Returns the measuring unit for the estimated VOC concentration.',lib:'voc.get_unit()',pro:'def get_unit()',cmt:'<p>Returns the measuring unit for the estimated VOC concentration.</p>',ret:'a string corresponding to the measuring unit for the estimated VOC concentration',ext:'On failure, throws an exception or returns <tt>Y_UNIT_INVALID</tt>.'};
+doc['Voc']['get_userData']={syn:'Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>.',lib:'voc.get_userData()',pro:'def get_userData()',cmt:'<p>Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>. This attribute is never touched directly by the API, and is at disposal of the caller to store a context.</p>',ret:'the object stored previously by the caller.'};
+doc['Voc']['isOnline']={syn:'Checks if the Volatile Organic Compound sensor is currently reachable, without raising any error.',lib:'voc.isOnline()',pro:'def isOnline()',cmt:'<p>Checks if the Volatile Organic Compound sensor is currently reachable, without raising any error. If there is a cached value for the Volatile Organic Compound sensor in cache, that has not yet expired, the device is considered reachable. No exception is raised if there is an error while trying to contact the device hosting the Volatile Organic Compound sensor.</p>',ret:'<tt>true</tt> if the Volatile Organic Compound sensor can be reached, and <tt>false</tt> otherwise'};
+doc['Voc']['load']={syn:'Preloads the Volatile Organic Compound sensor cache with a specified validity duration.',lib:'voc.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Preloads the Volatile Organic Compound sensor cache with a specified validity duration. By default, whenever accessing a device, all function attributes are kept in cache for the standard duration (5 ms). This method can be used to temporarily mark the cache as valid for a longer period, in order to reduce network traffic for instance.</p>',par:{msValidity:'an integer corresponding to the validity attributed to the loaded function parameters, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Voc']['loadAttribute']={syn:'Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.',lib:'voc.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'On failure, throws an exception or returns an empty string.'};
+doc['Voc']['loadCalibrationPoints']={syn:'Retrieves error correction data points previously entered using the method <tt>calibrateFromPoints</tt>.',lib:'voc.loadCalibrationPoints()',pro:'def loadCalibrationPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Retrieves error correction data points previously entered using the method <tt>calibrateFromPoints</tt>.</p>',par:{rawValues:'array of floating point numbers, that will be filled by the function with the raw sensor values for the correction points.',refValues:'array of floating point numbers, that will be filled by the function with the desired values for the correction points.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Voc']['muteValueCallbacks']={syn:'Disable the propagation of every new advertised value to the parent hub.',lib:'voc.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>Disable the propagation of every new advertised value to the parent hub. You can use this function to save bandwidth and CPU on computers with limited resources, or to prevent unwanted invocations of the HTTP callback. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Voc']['nextVoc']={syn:'Continues the enumeration of Volatile Organic Compound sensors started using <tt>yFirstVoc()</tt>.',lib:'voc.nextVoc()',pro:'def nextVoc()',cmt:'<p>Continues the enumeration of Volatile Organic Compound sensors started using <tt>yFirstVoc()</tt>.</p>',ret:'a pointer to a <tt>YVoc</tt> object, corresponding to a Volatile Organic Compound sensor currently online, or a <tt>null</tt> pointer if there are no more Volatile Organic Compound sensors to enumerate.'};
+doc['Voc']['registerTimedReportCallback']={syn:'Registers the callback function that is invoked on every periodic timed notification.',lib:'voc.registerTimedReportCallback()',pro:'def registerTimedReportCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every periodic timed notification. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and an YMeasure object describing the new advertised value.'}};
+doc['Voc']['registerValueCallback']={syn:'Registers the callback function that is invoked on every change of advertised value.',lib:'voc.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every change of advertised value. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and the character string describing the new advertised value.'}};
+doc['Voc']['set_highestValue']={syn:'Changes the recorded maximal value observed.',lib:'voc.set_highestValue()',pro:'def set_highestValue(<span id=pn>newval</span>)',cmt:'<p>Changes the recorded maximal value observed.</p>',par:{newval:'a floating point number corresponding to the recorded maximal value observed'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Voc']['set_logFrequency']={syn:'Changes the datalogger recording frequency for this function.',lib:'voc.set_logFrequency()',pro:'def set_logFrequency(<span id=pn>newval</span>)',cmt:'<p>Changes the datalogger recording frequency for this function. The frequency can be specified as samples per second, as sample per minute (for instance \x2215/m\x22) or in samples per hour (eg. \x224/h\x22). To disable recording for this function, use the value \x22OFF\x22.</p>',par:{newval:'a string corresponding to the datalogger recording frequency for this function'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Voc']['set_logicalName']={syn:'Changes the logical name of the Volatile Organic Compound sensor.',lib:'voc.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Changes the logical name of the Volatile Organic Compound sensor. You can use <tt>yCheckLogicalName()</tt> prior to this call to make sure that your parameter is valid. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the logical name of the Volatile Organic Compound sensor.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Voc']['set_lowestValue']={syn:'Changes the recorded minimal value observed.',lib:'voc.set_lowestValue()',pro:'def set_lowestValue(<span id=pn>newval</span>)',cmt:'<p>Changes the recorded minimal value observed.</p>',par:{newval:'a floating point number corresponding to the recorded minimal value observed'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Voc']['set_reportFrequency']={syn:'Changes the timed value notification frequency for this function.',lib:'voc.set_reportFrequency()',pro:'def set_reportFrequency(<span id=pn>newval</span>)',cmt:'<p>Changes the timed value notification frequency for this function. The frequency can be specified as samples per second, as sample per minute (for instance \x2215/m\x22) or in samples per hour (eg. \x224/h\x22). To disable timed value notifications for this function, use the value \x22OFF\x22.</p>',par:{newval:'a string corresponding to the timed value notification frequency for this function'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Voc']['set_resolution']={syn:'Changes the resolution of the measured physical values.',lib:'voc.set_resolution()',pro:'def set_resolution(<span id=pn>newval</span>)',cmt:'<p>Changes the resolution of the measured physical values. The resolution corresponds to the numerical precision when displaying value. It does not change the precision of the measure itself.</p>',par:{newval:'a floating point number corresponding to the resolution of the measured physical values'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Voc']['set_userData']={syn:'Stores a user context provided as argument in the userData attribute of the function.',lib:'voc.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Stores a user context provided as argument in the userData attribute of the function. This attribute is never touched by the API, and is at disposal of the caller to store a context.</p>',par:{data:'any kind of object to be stored'}};
+doc['Voc']['startDataLogger']={syn:'Starts the data logger on the device.',lib:'voc.startDataLogger()',pro:'def startDataLogger()',cmt:'<p>Starts the data logger on the device. Note that the data logger will only save the measures on this sensor if the logFrequency is not set to \x22OFF\x22.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.'};
+doc['Voc']['stopDataLogger']={syn:'Stops the datalogger on the device.',lib:'voc.stopDataLogger()',pro:'def stopDataLogger()',cmt:'<p>Stops the datalogger on the device.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.'};
+doc['Voc']['unmuteValueCallbacks']={syn:'Re-enable the propagation of every new advertised value to the parent hub.',lib:'voc.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>Re-enable the propagation of every new advertised value to the parent hub. This function reverts the effect of a previous call to <tt>muteValueCallbacks()</tt>. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+//--- (end of generated code: Voc)
+//--- (generated code: Watchdog)
+doc['Watchdog']={'':{syn:'Watchdog function interface',inc:'from yocto_watchdog import *',cmt:'<p>The watchog function works like a relay and can cause a brief power cut to an appliance after a preset delay to force this appliance to reset. The Watchdog must be called from time to time to reset the timer and prevent the appliance reset. The watchdog can be driven direcly with <i>pulse</i> and <i>delayedpulse</i> methods to switch off an appliance for a given duration.</p>'}};
+doc['Watchdog']['FindWatchdog']={syn:'Retrieves a watchdog for a given identifier.',lib:'YWatchdog.FindWatchdog()',pro:'def FindWatchdog(<span id=pn>func</span>)',cmt:'<p>Retrieves a watchdog for a given identifier. The identifier can be specified using several formats:<br> <ul> <li>FunctionLogicalName</li> <li>ModuleSerialNumber.FunctionIdentifier</li> <li>ModuleSerialNumber.FunctionLogicalName</li> <li>ModuleLogicalName.FunctionIdentifier</li> <li>ModuleLogicalName.FunctionLogicalName</li> </ul></p><p> This function does not require that the watchdog is online at the time it is invoked. The returned object is nevertheless valid. Use the method <tt>YWatchdog.isOnline()</tt> to test if the watchdog is indeed online at a given time. In case of ambiguity when looking for a watchdog by logical name, no error is notified: the first instance found is returned. The search is performed first by hardware name, then by logical name.</p>',par:{func:'a string that uniquely characterizes the watchdog'},ret:'a <tt>YWatchdog</tt> object allowing you to drive the watchdog.'};
+doc['Watchdog']['FirstWatchdog']={syn:'Starts the enumeration of watchdog currently accessible.',lib:'YWatchdog.FirstWatchdog()',pro:'def FirstWatchdog()',cmt:'<p>Starts the enumeration of watchdog currently accessible. Use the method <tt>YWatchdog.nextWatchdog()</tt> to iterate on next watchdog.</p>',ret:'a pointer to a <tt>YWatchdog</tt> object, corresponding to the first watchdog currently online, or a <tt>null</tt> pointer if there are none.'};
+doc['Watchdog']['clearCache']={syn:'Invalidates the cache.',lib:'watchdog.clearCache()',pro:'def clearCache()',cmt:'<p>Invalidates the cache. Invalidates the cache of the watchdog attributes. Forces the next call to get_xxx() or loadxxx() to use values that come from the device.</p>'};
+doc['Watchdog']['delayedPulse']={syn:'Schedules a pulse.',lib:'watchdog.delayedPulse()',pro:'def delayedPulse(<span id=pn>ms_delay</span>, <span id=pn>ms_duration</span>)',cmt:'<p>Schedules a pulse.</p>',par:{ms_delay:'waiting time before the pulse, in millisecondes',ms_duration:'pulse duration, in millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Watchdog']['describe']={syn:'Returns a short text that describes unambiguously the instance of the watchdog in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'watchdog.describe()',pro:'def describe()',cmt:'<p>Returns a short text that describes unambiguously the instance of the watchdog in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. More precisely, <tt>TYPE</tt> is the type of the function, <tt>NAME</tt> it the name used for the first access to the function, <tt>SERIAL</tt> is the serial number of the module if the module is connected or <tt>\x22unresolved\x22</tt>, and <tt>FUNCTIONID</tt> is the hardware identifier of the function if the module is connected. For example, this method returns <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> if the module is already connected or <tt>Relay(BadCustomeName.relay1)=unresolved</tt> if the module has not yet been connected. This method does not trigger any USB or TCP transaction and can therefore be used in a debugger.</p>',ret:'a string that describes the watchdog (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['Watchdog']['get_advertisedValue']={syn:'Returns the current value of the watchdog (no more than 6 characters).',lib:'watchdog.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Returns the current value of the watchdog (no more than 6 characters).</p>',ret:'a string corresponding to the current value of the watchdog (no more than 6 characters).',ext:'On failure, throws an exception or returns <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['Watchdog']['get_autoStart']={syn:'Returns the watchdog runing state at module power on.',lib:'watchdog.get_autoStart()',pro:'def get_autoStart()',cmt:'<p>Returns the watchdog runing state at module power on.</p>',ret:'either <tt>Y_AUTOSTART_OFF</tt> or <tt>Y_AUTOSTART_ON</tt>, according to the watchdog runing state at module power on',ext:'On failure, throws an exception or returns <tt>Y_AUTOSTART_INVALID</tt>.'};
+doc['Watchdog']['get_countdown']={syn:'Returns the number of milliseconds remaining before a pulse (delayedPulse() call) When there is no scheduled pulse, returns zero.',lib:'watchdog.get_countdown()',pro:'def get_countdown()',cmt:'<p>Returns the number of milliseconds remaining before a pulse (delayedPulse() call) When there is no scheduled pulse, returns zero.</p>',ret:'an integer corresponding to the number of milliseconds remaining before a pulse (delayedPulse() call) When there is no scheduled pulse, returns zero',ext:'On failure, throws an exception or returns <tt>Y_COUNTDOWN_INVALID</tt>.'};
+doc['Watchdog']['get_errorMessage']={syn:'Returns the error message of the latest error with the watchdog.',lib:'watchdog.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Returns the error message of the latest error with the watchdog. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a string corresponding to the latest error message that occured while using the watchdog object'};
+doc['Watchdog']['get_errorType']={syn:'Returns the numerical error code of the latest error with the watchdog.',lib:'watchdog.get_errorType()',pro:'def get_errorType()',cmt:'<p>Returns the numerical error code of the latest error with the watchdog. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a number corresponding to the code of the latest error that occurred while using the watchdog object'};
+doc['Watchdog']['get_friendlyName']={syn:'Returns a global identifier of the watchdog in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>.',lib:'watchdog.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Returns a global identifier of the watchdog in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>. The returned string uses the logical names of the module and of the watchdog if they are defined, otherwise the serial number of the module and the hardware identifier of the watchdog (for example: <tt>MyCustomName.relay1</tt>)</p>',ret:'a string that uniquely identifies the watchdog using logical names (ex: <tt>MyCustomName.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['Watchdog']['get_functionDescriptor']={syn:'Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function.',lib:'watchdog.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function. This identifier can be used to test if two instances of <tt>YFunction</tt> reference the same physical function on the same physical device.</p>',ret:'an identifier of type <tt>YFUN_DESCR</tt>.',ext:'If the function has never been contacted, the returned value is <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>.'};
+doc['Watchdog']['get_functionId']={syn:'Returns the hardware identifier of the watchdog, without reference to the module.',lib:'watchdog.get_functionId()',pro:'def get_functionId()',cmt:'<p>Returns the hardware identifier of the watchdog, without reference to the module. For example <tt>relay1</tt></p>',ret:'a string that identifies the watchdog (ex: <tt>relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['Watchdog']['get_hardwareId']={syn:'Returns the unique hardware identifier of the watchdog in the form <tt>SERIAL.FUNCTIONID</tt>.',lib:'watchdog.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Returns the unique hardware identifier of the watchdog in the form <tt>SERIAL.FUNCTIONID</tt>. The unique hardware identifier is composed of the device serial number and of the hardware identifier of the watchdog (for example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'a string that uniquely identifies the watchdog (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['Watchdog']['get_logicalName']={syn:'Returns the logical name of the watchdog.',lib:'watchdog.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Returns the logical name of the watchdog.</p>',ret:'a string corresponding to the logical name of the watchdog.',ext:'On failure, throws an exception or returns <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['Watchdog']['get_maxTimeOnStateA']={syn:'Retourne the maximum time (ms) allowed for $THEFUNCTIONS$ to stay in state A before automatically switching back in to B state.',lib:'watchdog.get_maxTimeOnStateA()',pro:'def get_maxTimeOnStateA()',cmt:'<p>Retourne the maximum time (ms) allowed for $THEFUNCTIONS$ to stay in state A before automatically switching back in to B state. Zero means no maximum time.</p>',ret:'an integer',ext:'On failure, throws an exception or returns <tt>Y_MAXTIMEONSTATEA_INVALID</tt>.'};
+doc['Watchdog']['get_maxTimeOnStateB']={syn:'Retourne the maximum time (ms) allowed for $THEFUNCTIONS$ to stay in state B before automatically switching back in to A state.',lib:'watchdog.get_maxTimeOnStateB()',pro:'def get_maxTimeOnStateB()',cmt:'<p>Retourne the maximum time (ms) allowed for $THEFUNCTIONS$ to stay in state B before automatically switching back in to A state. Zero means no maximum time.</p>',ret:'an integer',ext:'On failure, throws an exception or returns <tt>Y_MAXTIMEONSTATEB_INVALID</tt>.'};
+doc['Watchdog']['get_module']={syn:'Gets the <tt>YModule</tt> object for the device on which the function is located.',lib:'watchdog.get_module()',pro:'def get_module()',cmt:'<p>Gets the <tt>YModule</tt> object for the device on which the function is located. If the function cannot be located on any module, the returned instance of <tt>YModule</tt> is not shown as on-line.</p>',ret:'an instance of <tt>YModule</tt>'};
+doc['Watchdog']['get_output']={syn:'Returns the output state of the watchdog, when used as a simple switch (single throw).',lib:'watchdog.get_output()',pro:'def get_output()',cmt:'<p>Returns the output state of the watchdog, when used as a simple switch (single throw).</p>',ret:'either <tt>Y_OUTPUT_OFF</tt> or <tt>Y_OUTPUT_ON</tt>, according to the output state of the watchdog, when used as a simple switch (single throw)',ext:'On failure, throws an exception or returns <tt>Y_OUTPUT_INVALID</tt>.'};
+doc['Watchdog']['get_pulseTimer']={syn:'Returns the number of milliseconds remaining before the watchdog is returned to idle position (state A), during a measured pulse generation.',lib:'watchdog.get_pulseTimer()',pro:'def get_pulseTimer()',cmt:'<p>Returns the number of milliseconds remaining before the watchdog is returned to idle position (state A), during a measured pulse generation. When there is no ongoing pulse, returns zero.</p>',ret:'an integer corresponding to the number of milliseconds remaining before the watchdog is returned to idle position (state A), during a measured pulse generation',ext:'On failure, throws an exception or returns <tt>Y_PULSETIMER_INVALID</tt>.'};
+doc['Watchdog']['get_running']={syn:'Returns the watchdog running state.',lib:'watchdog.get_running()',pro:'def get_running()',cmt:'<p>Returns the watchdog running state.</p>',ret:'either <tt>Y_RUNNING_OFF</tt> or <tt>Y_RUNNING_ON</tt>, according to the watchdog running state',ext:'On failure, throws an exception or returns <tt>Y_RUNNING_INVALID</tt>.'};
+doc['Watchdog']['get_state']={syn:'Returns the state of the watchdog (A for the idle position, B for the active position).',lib:'watchdog.get_state()',pro:'def get_state()',cmt:'<p>Returns the state of the watchdog (A for the idle position, B for the active position).</p>',ret:'either <tt>Y_STATE_A</tt> or <tt>Y_STATE_B</tt>, according to the state of the watchdog (A for the idle position, B for the active position)',ext:'On failure, throws an exception or returns <tt>Y_STATE_INVALID</tt>.'};
+doc['Watchdog']['get_stateAtPowerOn']={syn:'Returns the state of the watchdog at device startup (A for the idle position, B for the active position, UNCHANGED for no change).',lib:'watchdog.get_stateAtPowerOn()',pro:'def get_stateAtPowerOn()',cmt:'<p>Returns the state of the watchdog at device startup (A for the idle position, B for the active position, UNCHANGED for no change).</p>',ret:'a value among <tt>Y_STATEATPOWERON_UNCHANGED</tt>, <tt>Y_STATEATPOWERON_A</tt> and <tt>Y_STATEATPOWERON_B</tt> corresponding to the state of the watchdog at device startup (A for the idle position, B for the active position, UNCHANGED for no change)',ext:'On failure, throws an exception or returns <tt>Y_STATEATPOWERON_INVALID</tt>.'};
+doc['Watchdog']['get_triggerDelay']={syn:'Returns the waiting duration before a reset is automatically triggered by the watchdog, in milliseconds.',lib:'watchdog.get_triggerDelay()',pro:'def get_triggerDelay()',cmt:'<p>Returns the waiting duration before a reset is automatically triggered by the watchdog, in milliseconds.</p>',ret:'an integer corresponding to the waiting duration before a reset is automatically triggered by the watchdog, in milliseconds',ext:'On failure, throws an exception or returns <tt>Y_TRIGGERDELAY_INVALID</tt>.'};
+doc['Watchdog']['get_triggerDuration']={syn:'Returns the duration of resets caused by the watchdog, in milliseconds.',lib:'watchdog.get_triggerDuration()',pro:'def get_triggerDuration()',cmt:'<p>Returns the duration of resets caused by the watchdog, in milliseconds.</p>',ret:'an integer corresponding to the duration of resets caused by the watchdog, in milliseconds',ext:'On failure, throws an exception or returns <tt>Y_TRIGGERDURATION_INVALID</tt>.'};
+doc['Watchdog']['get_userData']={syn:'Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>.',lib:'watchdog.get_userData()',pro:'def get_userData()',cmt:'<p>Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>. This attribute is never touched directly by the API, and is at disposal of the caller to store a context.</p>',ret:'the object stored previously by the caller.'};
+doc['Watchdog']['isOnline']={syn:'Checks if the watchdog is currently reachable, without raising any error.',lib:'watchdog.isOnline()',pro:'def isOnline()',cmt:'<p>Checks if the watchdog is currently reachable, without raising any error. If there is a cached value for the watchdog in cache, that has not yet expired, the device is considered reachable. No exception is raised if there is an error while trying to contact the device hosting the watchdog.</p>',ret:'<tt>true</tt> if the watchdog can be reached, and <tt>false</tt> otherwise'};
+doc['Watchdog']['load']={syn:'Preloads the watchdog cache with a specified validity duration.',lib:'watchdog.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Preloads the watchdog cache with a specified validity duration. By default, whenever accessing a device, all function attributes are kept in cache for the standard duration (5 ms). This method can be used to temporarily mark the cache as valid for a longer period, in order to reduce network traffic for instance.</p>',par:{msValidity:'an integer corresponding to the validity attributed to the loaded function parameters, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Watchdog']['loadAttribute']={syn:'Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.',lib:'watchdog.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'On failure, throws an exception or returns an empty string.'};
+doc['Watchdog']['muteValueCallbacks']={syn:'Disable the propagation of every new advertised value to the parent hub.',lib:'watchdog.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>Disable the propagation of every new advertised value to the parent hub. You can use this function to save bandwidth and CPU on computers with limited resources, or to prevent unwanted invocations of the HTTP callback. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Watchdog']['nextWatchdog']={syn:'Continues the enumeration of watchdog started using <tt>yFirstWatchdog()</tt>.',lib:'watchdog.nextWatchdog()',pro:'def nextWatchdog()',cmt:'<p>Continues the enumeration of watchdog started using <tt>yFirstWatchdog()</tt>.</p>',ret:'a pointer to a <tt>YWatchdog</tt> object, corresponding to a watchdog currently online, or a <tt>null</tt> pointer if there are no more watchdog to enumerate.'};
+doc['Watchdog']['pulse']={syn:'Sets the relay to output B (active) for a specified duration, then brings it automatically back to output A (idle state).',lib:'watchdog.pulse()',pro:'def pulse(<span id=pn>ms_duration</span>)',cmt:'<p>Sets the relay to output B (active) for a specified duration, then brings it automatically back to output A (idle state).</p>',par:{ms_duration:'pulse duration, in millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Watchdog']['registerValueCallback']={syn:'Registers the callback function that is invoked on every change of advertised value.',lib:'watchdog.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every change of advertised value. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and the character string describing the new advertised value.'}};
+doc['Watchdog']['resetWatchdog']={syn:'Resets the watchdog.',lib:'watchdog.resetWatchdog()',pro:'def resetWatchdog()',cmt:'<p>Resets the watchdog. When the watchdog is running, this function must be called on a regular basis to prevent the watchog to trigger</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Watchdog']['set_autoStart']={syn:'Changes the watchdog runningsttae at module power on.',lib:'watchdog.set_autoStart()',pro:'def set_autoStart(<span id=pn>newval</span>)',cmt:'<p>Changes the watchdog runningsttae at module power on. Remember to call the <tt>saveToFlash()</tt> method and then to reboot the module to apply this setting.</p>',par:{newval:'either <tt>Y_AUTOSTART_OFF</tt> or <tt>Y_AUTOSTART_ON</tt>, according to the watchdog runningsttae at module power on'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Watchdog']['set_logicalName']={syn:'Changes the logical name of the watchdog.',lib:'watchdog.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Changes the logical name of the watchdog. You can use <tt>yCheckLogicalName()</tt> prior to this call to make sure that your parameter is valid. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the logical name of the watchdog.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Watchdog']['set_maxTimeOnStateA']={syn:'Sets the maximum time (ms) allowed for $THEFUNCTIONS$ to stay in state A before automatically switching back in to B state.',lib:'watchdog.set_maxTimeOnStateA()',pro:'def set_maxTimeOnStateA(<span id=pn>newval</span>)',cmt:'<p>Sets the maximum time (ms) allowed for $THEFUNCTIONS$ to stay in state A before automatically switching back in to B state. Use zero for no maximum time.</p>',par:{newval:'an integer'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Watchdog']['set_maxTimeOnStateB']={syn:'Sets the maximum time (ms) allowed for $THEFUNCTIONS$ to stay in state B before automatically switching back in to A state.',lib:'watchdog.set_maxTimeOnStateB()',pro:'def set_maxTimeOnStateB(<span id=pn>newval</span>)',cmt:'<p>Sets the maximum time (ms) allowed for $THEFUNCTIONS$ to stay in state B before automatically switching back in to A state. Use zero for no maximum time.</p>',par:{newval:'an integer'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Watchdog']['set_output']={syn:'Changes the output state of the watchdog, when used as a simple switch (single throw).',lib:'watchdog.set_output()',pro:'def set_output(<span id=pn>newval</span>)',cmt:'<p>Changes the output state of the watchdog, when used as a simple switch (single throw).</p>',par:{newval:'either <tt>Y_OUTPUT_OFF</tt> or <tt>Y_OUTPUT_ON</tt>, according to the output state of the watchdog, when used as a simple switch (single throw)'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Watchdog']['set_running']={syn:'Changes the running state of the watchdog.',lib:'watchdog.set_running()',pro:'def set_running(<span id=pn>newval</span>)',cmt:'<p>Changes the running state of the watchdog.</p>',par:{newval:'either <tt>Y_RUNNING_OFF</tt> or <tt>Y_RUNNING_ON</tt>, according to the running state of the watchdog'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Watchdog']['set_state']={syn:'Changes the state of the watchdog (A for the idle position, B for the active position).',lib:'watchdog.set_state()',pro:'def set_state(<span id=pn>newval</span>)',cmt:'<p>Changes the state of the watchdog (A for the idle position, B for the active position).</p>',par:{newval:'either <tt>Y_STATE_A</tt> or <tt>Y_STATE_B</tt>, according to the state of the watchdog (A for the idle position, B for the active position)'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Watchdog']['set_stateAtPowerOn']={syn:'Preset the state of the watchdog at device startup (A for the idle position, B for the active position, UNCHANGED for no modification).',lib:'watchdog.set_stateAtPowerOn()',pro:'def set_stateAtPowerOn(<span id=pn>newval</span>)',cmt:'<p>Preset the state of the watchdog at device startup (A for the idle position, B for the active position, UNCHANGED for no modification). Remember to call the matching module <tt>saveToFlash()</tt> method, otherwise this call will have no effect.</p>',par:{newval:'a value among <tt>Y_STATEATPOWERON_UNCHANGED</tt>, <tt>Y_STATEATPOWERON_A</tt> and <tt>Y_STATEATPOWERON_B</tt>'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Watchdog']['set_triggerDelay']={syn:'Changes the waiting delay before a reset is triggered by the watchdog, in milliseconds.',lib:'watchdog.set_triggerDelay()',pro:'def set_triggerDelay(<span id=pn>newval</span>)',cmt:'<p>Changes the waiting delay before a reset is triggered by the watchdog, in milliseconds.</p>',par:{newval:'an integer corresponding to the waiting delay before a reset is triggered by the watchdog, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Watchdog']['set_triggerDuration']={syn:'Changes the duration of resets caused by the watchdog, in milliseconds.',lib:'watchdog.set_triggerDuration()',pro:'def set_triggerDuration(<span id=pn>newval</span>)',cmt:'<p>Changes the duration of resets caused by the watchdog, in milliseconds.</p>',par:{newval:'an integer corresponding to the duration of resets caused by the watchdog, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Watchdog']['set_userData']={syn:'Stores a user context provided as argument in the userData attribute of the function.',lib:'watchdog.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Stores a user context provided as argument in the userData attribute of the function. This attribute is never touched by the API, and is at disposal of the caller to store a context.</p>',par:{data:'any kind of object to be stored'}};
+doc['Watchdog']['unmuteValueCallbacks']={syn:'Re-enable the propagation of every new advertised value to the parent hub.',lib:'watchdog.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>Re-enable the propagation of every new advertised value to the parent hub. This function reverts the effect of a previous call to <tt>muteValueCallbacks()</tt>. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+//--- (end of generated code: Watchdog)
+//--- (generated code: Power)
+doc['Power']={'':{syn:'Power function interface',inc:'from yocto_power import *',cmt:'<p>The Yoctopuce class YPower allows you to read and configure Yoctopuce power sensors. It inherits from YSensor class the core functions to read measurements, register callback functions, access to the autonomous datalogger. This class adds the ability to access the energy counter and the power factor.</p>'}};
+doc['Power']['FindPower']={syn:'Retrieves a electrical power sensor for a given identifier.',lib:'YPower.FindPower()',pro:'def FindPower(<span id=pn>func</span>)',cmt:'<p>Retrieves a electrical power sensor for a given identifier. The identifier can be specified using several formats:<br> <ul> <li>FunctionLogicalName</li> <li>ModuleSerialNumber.FunctionIdentifier</li> <li>ModuleSerialNumber.FunctionLogicalName</li> <li>ModuleLogicalName.FunctionIdentifier</li> <li>ModuleLogicalName.FunctionLogicalName</li> </ul></p><p> This function does not require that the electrical power sensor is online at the time it is invoked. The returned object is nevertheless valid. Use the method <tt>YPower.isOnline()</tt> to test if the electrical power sensor is indeed online at a given time. In case of ambiguity when looking for a electrical power sensor by logical name, no error is notified: the first instance found is returned. The search is performed first by hardware name, then by logical name.</p>',par:{func:'a string that uniquely characterizes the electrical power sensor'},ret:'a <tt>YPower</tt> object allowing you to drive the electrical power sensor.'};
+doc['Power']['FirstPower']={syn:'Starts the enumeration of electrical power sensors currently accessible.',lib:'YPower.FirstPower()',pro:'def FirstPower()',cmt:'<p>Starts the enumeration of electrical power sensors currently accessible. Use the method <tt>YPower.nextPower()</tt> to iterate on next electrical power sensors.</p>',ret:'a pointer to a <tt>YPower</tt> object, corresponding to the first electrical power sensor currently online, or a <tt>null</tt> pointer if there are none.'};
+doc['Power']['calibrateFromPoints']={syn:'Configures error correction data points, in particular to compensate for a possible perturbation of the measure caused by an enclosure.',lib:'power.calibrateFromPoints()',pro:'def calibrateFromPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Configures error correction data points, in particular to compensate for a possible perturbation of the measure caused by an enclosure. It is possible to configure up to five correction points. Correction points must be provided in ascending order, and be in the range of the sensor. The device will automatically perform a linear interpolation of the error correction between specified points. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p><p> For more information on advanced capabilities to refine the calibration of sensors, please contact support@yoctopuce.com.</p>',par:{rawValues:'array of floating point numbers, corresponding to the raw values returned by the sensor for the correction points.',refValues:'array of floating point numbers, corresponding to the corrected values for the correction points.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Power']['clearCache']={syn:'Invalidates the cache.',lib:'power.clearCache()',pro:'def clearCache()',cmt:'<p>Invalidates the cache. Invalidates the cache of the electrical power sensor attributes. Forces the next call to get_xxx() or loadxxx() to use values that come from the device.</p>'};
+doc['Power']['describe']={syn:'Returns a short text that describes unambiguously the instance of the electrical power sensor in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'power.describe()',pro:'def describe()',cmt:'<p>Returns a short text that describes unambiguously the instance of the electrical power sensor in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. More precisely, <tt>TYPE</tt> is the type of the function, <tt>NAME</tt> it the name used for the first access to the function, <tt>SERIAL</tt> is the serial number of the module if the module is connected or <tt>\x22unresolved\x22</tt>, and <tt>FUNCTIONID</tt> is the hardware identifier of the function if the module is connected. For example, this method returns <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> if the module is already connected or <tt>Relay(BadCustomeName.relay1)=unresolved</tt> if the module has not yet been connected. This method does not trigger any USB or TCP transaction and can therefore be used in a debugger.</p>',ret:'a string that describes the electrical power sensor (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['Power']['get_advertisedValue']={syn:'Returns the current value of the electrical power sensor (no more than 6 characters).',lib:'power.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Returns the current value of the electrical power sensor (no more than 6 characters).</p>',ret:'a string corresponding to the current value of the electrical power sensor (no more than 6 characters).',ext:'On failure, throws an exception or returns <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['Power']['get_cosPhi']={syn:'Returns the power factor (the ratio between the real power consumed, measured in W, and the apparent power provided, measured in VA).',lib:'power.get_cosPhi()',pro:'def get_cosPhi()',cmt:'<p>Returns the power factor (the ratio between the real power consumed, measured in W, and the apparent power provided, measured in VA).</p>',ret:'a floating point number corresponding to the power factor (the ratio between the real power consumed, measured in W, and the apparent power provided, measured in VA)',ext:'On failure, throws an exception or returns <tt>Y_COSPHI_INVALID</tt>.'};
+doc['Power']['get_currentRawValue']={syn:'Returns the uncalibrated, unrounded raw value returned by the sensor, in Watt, as a floating point number.',lib:'power.get_currentRawValue()',pro:'def get_currentRawValue()',cmt:'<p>Returns the uncalibrated, unrounded raw value returned by the sensor, in Watt, as a floating point number.</p>',ret:'a floating point number corresponding to the uncalibrated, unrounded raw value returned by the sensor, in Watt, as a floating point number',ext:'On failure, throws an exception or returns <tt>Y_CURRENTRAWVALUE_INVALID</tt>.'};
+doc['Power']['get_currentValue']={syn:'Returns the current value of the electrical power, in Watt, as a floating point number.',lib:'power.get_currentValue()',pro:'def get_currentValue()',cmt:'<p>Returns the current value of the electrical power, in Watt, as a floating point number.</p>',ret:'a floating point number corresponding to the current value of the electrical power, in Watt, as a floating point number',ext:'On failure, throws an exception or returns <tt>Y_CURRENTVALUE_INVALID</tt>.'};
+doc['Power']['get_errorMessage']={syn:'Returns the error message of the latest error with the electrical power sensor.',lib:'power.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Returns the error message of the latest error with the electrical power sensor. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a string corresponding to the latest error message that occured while using the electrical power sensor object'};
+doc['Power']['get_errorType']={syn:'Returns the numerical error code of the latest error with the electrical power sensor.',lib:'power.get_errorType()',pro:'def get_errorType()',cmt:'<p>Returns the numerical error code of the latest error with the electrical power sensor. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a number corresponding to the code of the latest error that occurred while using the electrical power sensor object'};
+doc['Power']['get_friendlyName']={syn:'Returns a global identifier of the electrical power sensor in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>.',lib:'power.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Returns a global identifier of the electrical power sensor in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>. The returned string uses the logical names of the module and of the electrical power sensor if they are defined, otherwise the serial number of the module and the hardware identifier of the electrical power sensor (for example: <tt>MyCustomName.relay1</tt>)</p>',ret:'a string that uniquely identifies the electrical power sensor using logical names (ex: <tt>MyCustomName.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['Power']['get_functionDescriptor']={syn:'Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function.',lib:'power.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function. This identifier can be used to test if two instances of <tt>YFunction</tt> reference the same physical function on the same physical device.</p>',ret:'an identifier of type <tt>YFUN_DESCR</tt>.',ext:'If the function has never been contacted, the returned value is <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>.'};
+doc['Power']['get_functionId']={syn:'Returns the hardware identifier of the electrical power sensor, without reference to the module.',lib:'power.get_functionId()',pro:'def get_functionId()',cmt:'<p>Returns the hardware identifier of the electrical power sensor, without reference to the module. For example <tt>relay1</tt></p>',ret:'a string that identifies the electrical power sensor (ex: <tt>relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['Power']['get_hardwareId']={syn:'Returns the unique hardware identifier of the electrical power sensor in the form <tt>SERIAL.FUNCTIONID</tt>.',lib:'power.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Returns the unique hardware identifier of the electrical power sensor in the form <tt>SERIAL.FUNCTIONID</tt>. The unique hardware identifier is composed of the device serial number and of the hardware identifier of the electrical power sensor (for example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'a string that uniquely identifies the electrical power sensor (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['Power']['get_highestValue']={syn:'Returns the maximal value observed for the electrical power since the device was started.',lib:'power.get_highestValue()',pro:'def get_highestValue()',cmt:'<p>Returns the maximal value observed for the electrical power since the device was started.</p>',ret:'a floating point number corresponding to the maximal value observed for the electrical power since the device was started',ext:'On failure, throws an exception or returns <tt>Y_HIGHESTVALUE_INVALID</tt>.'};
+doc['Power']['get_logFrequency']={syn:'Returns the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory.',lib:'power.get_logFrequency()',pro:'def get_logFrequency()',cmt:'<p>Returns the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory.</p>',ret:'a string corresponding to the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory',ext:'On failure, throws an exception or returns <tt>Y_LOGFREQUENCY_INVALID</tt>.'};
+doc['Power']['get_logicalName']={syn:'Returns the logical name of the electrical power sensor.',lib:'power.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Returns the logical name of the electrical power sensor.</p>',ret:'a string corresponding to the logical name of the electrical power sensor.',ext:'On failure, throws an exception or returns <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['Power']['get_lowestValue']={syn:'Returns the minimal value observed for the electrical power since the device was started.',lib:'power.get_lowestValue()',pro:'def get_lowestValue()',cmt:'<p>Returns the minimal value observed for the electrical power since the device was started.</p>',ret:'a floating point number corresponding to the minimal value observed for the electrical power since the device was started',ext:'On failure, throws an exception or returns <tt>Y_LOWESTVALUE_INVALID</tt>.'};
+doc['Power']['get_meter']={syn:'Returns the energy counter, maintained by the wattmeter by integrating the power consumption over time.',lib:'power.get_meter()',pro:'def get_meter()',cmt:'<p>Returns the energy counter, maintained by the wattmeter by integrating the power consumption over time. Note that this counter is reset at each start of the device.</p>',ret:'a floating point number corresponding to the energy counter, maintained by the wattmeter by integrating the power consumption over time',ext:'On failure, throws an exception or returns <tt>Y_METER_INVALID</tt>.'};
+doc['Power']['get_meterTimer']={syn:'Returns the elapsed time since last energy counter reset, in seconds.',lib:'power.get_meterTimer()',pro:'def get_meterTimer()',cmt:'<p>Returns the elapsed time since last energy counter reset, in seconds.</p>',ret:'an integer corresponding to the elapsed time since last energy counter reset, in seconds',ext:'On failure, throws an exception or returns <tt>Y_METERTIMER_INVALID</tt>.'};
+doc['Power']['get_module']={syn:'Gets the <tt>YModule</tt> object for the device on which the function is located.',lib:'power.get_module()',pro:'def get_module()',cmt:'<p>Gets the <tt>YModule</tt> object for the device on which the function is located. If the function cannot be located on any module, the returned instance of <tt>YModule</tt> is not shown as on-line.</p>',ret:'an instance of <tt>YModule</tt>'};
+doc['Power']['get_recordedData']={syn:'Retrieves a DataSet object holding historical data for this sensor, for a specified time interval.',lib:'power.get_recordedData()',pro:'def get_recordedData(<span id=pn>startTime</span>, <span id=pn>endTime</span>)',cmt:'<p>Retrieves a DataSet object holding historical data for this sensor, for a specified time interval. The measures will be retrieved from the data logger, which must have been turned on at the desired time. See the documentation of the DataSet class for information on how to get an overview of the recorded data, and how to load progressively a large set of measures from the data logger.</p><p> This function only works if the device uses a recent firmware, as DataSet objects are not supported by firmwares older than version 13000.</p>',par:{startTime:'the start of the desired measure time interval, as a Unix timestamp, i.e. the number of seconds since January 1, 1970 UTC. The special value 0 can be used to include any meaasure, without initial limit.',endTime:'the end of the desired measure time interval, as a Unix timestamp, i.e. the number of seconds since January 1, 1970 UTC. The special value 0 can be used to include any meaasure, without ending limit.'},ret:'an instance of YDataSet, providing access to historical data. Past measures can be loaded progressively using methods from the YDataSet object.'};
+doc['Power']['get_reportFrequency']={syn:'Returns the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function.',lib:'power.get_reportFrequency()',pro:'def get_reportFrequency()',cmt:'<p>Returns the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function.</p>',ret:'a string corresponding to the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function',ext:'On failure, throws an exception or returns <tt>Y_REPORTFREQUENCY_INVALID</tt>.'};
+doc['Power']['get_resolution']={syn:'Returns the resolution of the measured values.',lib:'power.get_resolution()',pro:'def get_resolution()',cmt:'<p>Returns the resolution of the measured values. The resolution corresponds to the numerical precision of the measures, which is not always the same as the actual precision of the sensor.</p>',ret:'a floating point number corresponding to the resolution of the measured values',ext:'On failure, throws an exception or returns <tt>Y_RESOLUTION_INVALID</tt>.'};
+doc['Power']['get_sensorState']={syn:'Returns the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now.',lib:'power.get_sensorState()',pro:'def get_sensorState()',cmt:'<p>Returns the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now.</p>',ret:'an integer corresponding to the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now',ext:'On failure, throws an exception or returns <tt>Y_SENSORSTATE_INVALID</tt>.'};
+doc['Power']['get_unit']={syn:'Returns the measuring unit for the electrical power.',lib:'power.get_unit()',pro:'def get_unit()',cmt:'<p>Returns the measuring unit for the electrical power.</p>',ret:'a string corresponding to the measuring unit for the electrical power',ext:'On failure, throws an exception or returns <tt>Y_UNIT_INVALID</tt>.'};
+doc['Power']['get_userData']={syn:'Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>.',lib:'power.get_userData()',pro:'def get_userData()',cmt:'<p>Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>. This attribute is never touched directly by the API, and is at disposal of the caller to store a context.</p>',ret:'the object stored previously by the caller.'};
+doc['Power']['isOnline']={syn:'Checks if the electrical power sensor is currently reachable, without raising any error.',lib:'power.isOnline()',pro:'def isOnline()',cmt:'<p>Checks if the electrical power sensor is currently reachable, without raising any error. If there is a cached value for the electrical power sensor in cache, that has not yet expired, the device is considered reachable. No exception is raised if there is an error while trying to contact the device hosting the electrical power sensor.</p>',ret:'<tt>true</tt> if the electrical power sensor can be reached, and <tt>false</tt> otherwise'};
+doc['Power']['load']={syn:'Preloads the electrical power sensor cache with a specified validity duration.',lib:'power.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Preloads the electrical power sensor cache with a specified validity duration. By default, whenever accessing a device, all function attributes are kept in cache for the standard duration (5 ms). This method can be used to temporarily mark the cache as valid for a longer period, in order to reduce network traffic for instance.</p>',par:{msValidity:'an integer corresponding to the validity attributed to the loaded function parameters, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Power']['loadAttribute']={syn:'Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.',lib:'power.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'On failure, throws an exception or returns an empty string.'};
+doc['Power']['loadCalibrationPoints']={syn:'Retrieves error correction data points previously entered using the method <tt>calibrateFromPoints</tt>.',lib:'power.loadCalibrationPoints()',pro:'def loadCalibrationPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Retrieves error correction data points previously entered using the method <tt>calibrateFromPoints</tt>.</p>',par:{rawValues:'array of floating point numbers, that will be filled by the function with the raw sensor values for the correction points.',refValues:'array of floating point numbers, that will be filled by the function with the desired values for the correction points.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Power']['muteValueCallbacks']={syn:'Disable the propagation of every new advertised value to the parent hub.',lib:'power.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>Disable the propagation of every new advertised value to the parent hub. You can use this function to save bandwidth and CPU on computers with limited resources, or to prevent unwanted invocations of the HTTP callback. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Power']['nextPower']={syn:'Continues the enumeration of electrical power sensors started using <tt>yFirstPower()</tt>.',lib:'power.nextPower()',pro:'def nextPower()',cmt:'<p>Continues the enumeration of electrical power sensors started using <tt>yFirstPower()</tt>.</p>',ret:'a pointer to a <tt>YPower</tt> object, corresponding to a electrical power sensor currently online, or a <tt>null</tt> pointer if there are no more electrical power sensors to enumerate.'};
+doc['Power']['registerTimedReportCallback']={syn:'Registers the callback function that is invoked on every periodic timed notification.',lib:'power.registerTimedReportCallback()',pro:'def registerTimedReportCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every periodic timed notification. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and an YMeasure object describing the new advertised value.'}};
+doc['Power']['registerValueCallback']={syn:'Registers the callback function that is invoked on every change of advertised value.',lib:'power.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every change of advertised value. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and the character string describing the new advertised value.'}};
+doc['Power']['reset']={syn:'Resets the energy counter.',lib:'power.reset()',pro:'def reset()',cmt:'<p>Resets the energy counter.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Power']['set_highestValue']={syn:'Changes the recorded maximal value observed.',lib:'power.set_highestValue()',pro:'def set_highestValue(<span id=pn>newval</span>)',cmt:'<p>Changes the recorded maximal value observed.</p>',par:{newval:'a floating point number corresponding to the recorded maximal value observed'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Power']['set_logFrequency']={syn:'Changes the datalogger recording frequency for this function.',lib:'power.set_logFrequency()',pro:'def set_logFrequency(<span id=pn>newval</span>)',cmt:'<p>Changes the datalogger recording frequency for this function. The frequency can be specified as samples per second, as sample per minute (for instance \x2215/m\x22) or in samples per hour (eg. \x224/h\x22). To disable recording for this function, use the value \x22OFF\x22.</p>',par:{newval:'a string corresponding to the datalogger recording frequency for this function'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Power']['set_logicalName']={syn:'Changes the logical name of the electrical power sensor.',lib:'power.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Changes the logical name of the electrical power sensor. You can use <tt>yCheckLogicalName()</tt> prior to this call to make sure that your parameter is valid. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the logical name of the electrical power sensor.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Power']['set_lowestValue']={syn:'Changes the recorded minimal value observed.',lib:'power.set_lowestValue()',pro:'def set_lowestValue(<span id=pn>newval</span>)',cmt:'<p>Changes the recorded minimal value observed.</p>',par:{newval:'a floating point number corresponding to the recorded minimal value observed'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Power']['set_reportFrequency']={syn:'Changes the timed value notification frequency for this function.',lib:'power.set_reportFrequency()',pro:'def set_reportFrequency(<span id=pn>newval</span>)',cmt:'<p>Changes the timed value notification frequency for this function. The frequency can be specified as samples per second, as sample per minute (for instance \x2215/m\x22) or in samples per hour (eg. \x224/h\x22). To disable timed value notifications for this function, use the value \x22OFF\x22.</p>',par:{newval:'a string corresponding to the timed value notification frequency for this function'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Power']['set_resolution']={syn:'Changes the resolution of the measured physical values.',lib:'power.set_resolution()',pro:'def set_resolution(<span id=pn>newval</span>)',cmt:'<p>Changes the resolution of the measured physical values. The resolution corresponds to the numerical precision when displaying value. It does not change the precision of the measure itself.</p>',par:{newval:'a floating point number corresponding to the resolution of the measured physical values'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Power']['set_userData']={syn:'Stores a user context provided as argument in the userData attribute of the function.',lib:'power.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Stores a user context provided as argument in the userData attribute of the function. This attribute is never touched by the API, and is at disposal of the caller to store a context.</p>',par:{data:'any kind of object to be stored'}};
+doc['Power']['startDataLogger']={syn:'Starts the data logger on the device.',lib:'power.startDataLogger()',pro:'def startDataLogger()',cmt:'<p>Starts the data logger on the device. Note that the data logger will only save the measures on this sensor if the logFrequency is not set to \x22OFF\x22.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.'};
+doc['Power']['stopDataLogger']={syn:'Stops the datalogger on the device.',lib:'power.stopDataLogger()',pro:'def stopDataLogger()',cmt:'<p>Stops the datalogger on the device.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.'};
+doc['Power']['unmuteValueCallbacks']={syn:'Re-enable the propagation of every new advertised value to the parent hub.',lib:'power.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>Re-enable the propagation of every new advertised value to the parent hub. This function reverts the effect of a previous call to <tt>muteValueCallbacks()</tt>. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+//--- (end of generated code: Power)
+//--- (generated code: Display)
+doc['Display']={'':{syn:'Display function interface',inc:'from yocto_display import *',cmt:'<p>Yoctopuce display interface has been designed to easily show information and images. The device provides built-in multi-layer rendering. Layers can be drawn offline, individually, and freely moved on the display. It can also replay recorded sequences (animations).</p>'}};
+doc['Display']['FindDisplay']={syn:'Retrieves a display for a given identifier.',lib:'YDisplay.FindDisplay()',pro:'def FindDisplay(<span id=pn>func</span>)',cmt:'<p>Retrieves a display for a given identifier. The identifier can be specified using several formats:<br> <ul> <li>FunctionLogicalName</li> <li>ModuleSerialNumber.FunctionIdentifier</li> <li>ModuleSerialNumber.FunctionLogicalName</li> <li>ModuleLogicalName.FunctionIdentifier</li> <li>ModuleLogicalName.FunctionLogicalName</li> </ul></p><p> This function does not require that the display is online at the time it is invoked. The returned object is nevertheless valid. Use the method <tt>YDisplay.isOnline()</tt> to test if the display is indeed online at a given time. In case of ambiguity when looking for a display by logical name, no error is notified: the first instance found is returned. The search is performed first by hardware name, then by logical name.</p>',par:{func:'a string that uniquely characterizes the display'},ret:'a <tt>YDisplay</tt> object allowing you to drive the display.'};
+doc['Display']['FirstDisplay']={syn:'Starts the enumeration of displays currently accessible.',lib:'YDisplay.FirstDisplay()',pro:'def FirstDisplay()',cmt:'<p>Starts the enumeration of displays currently accessible. Use the method <tt>YDisplay.nextDisplay()</tt> to iterate on next displays.</p>',ret:'a pointer to a <tt>YDisplay</tt> object, corresponding to the first display currently online, or a <tt>null</tt> pointer if there are none.'};
+doc['Display']['clearCache']={syn:'Invalidates the cache.',lib:'display.clearCache()',pro:'def clearCache()',cmt:'<p>Invalidates the cache. Invalidates the cache of the display attributes. Forces the next call to get_xxx() or loadxxx() to use values that come from the device.</p>'};
+doc['Display']['copyLayerContent']={syn:'Copies the whole content of a layer to another layer.',lib:'display.copyLayerContent()',pro:'def copyLayerContent(<span id=pn>srcLayerId</span>, <span id=pn>dstLayerId</span>)',cmt:'<p>Copies the whole content of a layer to another layer. The color and transparency of all the pixels from the destination layer are set to match the source pixels. This method only affects the displayed content, but does not change any property of the layer object. Note that layer 0 has no transparency support (it is always completely opaque).</p>',par:{srcLayerId:'the identifier of the source layer (a number in range 0..layerCount-1)',dstLayerId:'the identifier of the destination layer (a number in range 0..layerCount-1)'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Display']['describe']={syn:'Returns a short text that describes unambiguously the instance of the display in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'display.describe()',pro:'def describe()',cmt:'<p>Returns a short text that describes unambiguously the instance of the display in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. More precisely, <tt>TYPE</tt> is the type of the function, <tt>NAME</tt> it the name used for the first access to the function, <tt>SERIAL</tt> is the serial number of the module if the module is connected or <tt>\x22unresolved\x22</tt>, and <tt>FUNCTIONID</tt> is the hardware identifier of the function if the module is connected. For example, this method returns <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> if the module is already connected or <tt>Relay(BadCustomeName.relay1)=unresolved</tt> if the module has not yet been connected. This method does not trigger any USB or TCP transaction and can therefore be used in a debugger.</p>',ret:'a string that describes the display (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['Display']['fade']={syn:'Smoothly changes the brightness of the screen to produce a fade-in or fade-out effect.',lib:'display.fade()',pro:'def fade(<span id=pn>brightness</span>, <span id=pn>duration</span>)',cmt:'<p>Smoothly changes the brightness of the screen to produce a fade-in or fade-out effect.</p>',par:{brightness:'the new screen brightness',duration:'duration of the brightness transition, in milliseconds.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Display']['get_advertisedValue']={syn:'Returns the current value of the display (no more than 6 characters).',lib:'display.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Returns the current value of the display (no more than 6 characters).</p>',ret:'a string corresponding to the current value of the display (no more than 6 characters).',ext:'On failure, throws an exception or returns <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['Display']['get_brightness']={syn:'Returns the luminosity of the module informative leds (from 0 to 100).',lib:'display.get_brightness()',pro:'def get_brightness()',cmt:'<p>Returns the luminosity of the module informative leds (from 0 to 100).</p>',ret:'an integer corresponding to the luminosity of the module informative leds (from 0 to 100)',ext:'On failure, throws an exception or returns <tt>Y_BRIGHTNESS_INVALID</tt>.'};
+doc['Display']['get_displayHeight']={syn:'Returns the display height, in pixels.',lib:'display.get_displayHeight()',pro:'def get_displayHeight()',cmt:'<p>Returns the display height, in pixels.</p>',ret:'an integer corresponding to the display height, in pixels',ext:'On failure, throws an exception or returns <tt>Y_DISPLAYHEIGHT_INVALID</tt>.'};
+doc['Display']['get_displayLayer']={syn:'Returns a YDisplayLayer object that can be used to draw on the specified layer.',lib:'display.get_displayLayer()',pro:'def get_displayLayer(<span id=pn>layerId</span>)',cmt:'<p>Returns a YDisplayLayer object that can be used to draw on the specified layer. The content is displayed only when the layer is active on the screen (and not masked by other overlapping layers).</p>',par:{layerId:'the identifier of the layer (a number in range 0..layerCount-1)'},ret:'an <tt>YDisplayLayer</tt> object',ext:'On failure, throws an exception or returns <tt>null</tt>.'};
+doc['Display']['get_displayType']={syn:'Returns the display type: monochrome, gray levels or full color.',lib:'display.get_displayType()',pro:'def get_displayType()',cmt:'<p>Returns the display type: monochrome, gray levels or full color.</p>',ret:'a value among <tt>Y_DISPLAYTYPE_MONO</tt>, <tt>Y_DISPLAYTYPE_GRAY</tt> and <tt>Y_DISPLAYTYPE_RGB</tt> corresponding to the display type: monochrome, gray levels or full color',ext:'On failure, throws an exception or returns <tt>Y_DISPLAYTYPE_INVALID</tt>.'};
+doc['Display']['get_displayWidth']={syn:'Returns the display width, in pixels.',lib:'display.get_displayWidth()',pro:'def get_displayWidth()',cmt:'<p>Returns the display width, in pixels.</p>',ret:'an integer corresponding to the display width, in pixels',ext:'On failure, throws an exception or returns <tt>Y_DISPLAYWIDTH_INVALID</tt>.'};
+doc['Display']['get_enabled']={syn:'Returns true if the screen is powered, false otherwise.',lib:'display.get_enabled()',pro:'def get_enabled()',cmt:'<p>Returns true if the screen is powered, false otherwise.</p>',ret:'either <tt>Y_ENABLED_FALSE</tt> or <tt>Y_ENABLED_TRUE</tt>, according to true if the screen is powered, false otherwise',ext:'On failure, throws an exception or returns <tt>Y_ENABLED_INVALID</tt>.'};
+doc['Display']['get_errorMessage']={syn:'Returns the error message of the latest error with the display.',lib:'display.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Returns the error message of the latest error with the display. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a string corresponding to the latest error message that occured while using the display object'};
+doc['Display']['get_errorType']={syn:'Returns the numerical error code of the latest error with the display.',lib:'display.get_errorType()',pro:'def get_errorType()',cmt:'<p>Returns the numerical error code of the latest error with the display. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a number corresponding to the code of the latest error that occurred while using the display object'};
+doc['Display']['get_friendlyName']={syn:'Returns a global identifier of the display in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>.',lib:'display.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Returns a global identifier of the display in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>. The returned string uses the logical names of the module and of the display if they are defined, otherwise the serial number of the module and the hardware identifier of the display (for example: <tt>MyCustomName.relay1</tt>)</p>',ret:'a string that uniquely identifies the display using logical names (ex: <tt>MyCustomName.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['Display']['get_functionDescriptor']={syn:'Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function.',lib:'display.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function. This identifier can be used to test if two instances of <tt>YFunction</tt> reference the same physical function on the same physical device.</p>',ret:'an identifier of type <tt>YFUN_DESCR</tt>.',ext:'If the function has never been contacted, the returned value is <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>.'};
+doc['Display']['get_functionId']={syn:'Returns the hardware identifier of the display, without reference to the module.',lib:'display.get_functionId()',pro:'def get_functionId()',cmt:'<p>Returns the hardware identifier of the display, without reference to the module. For example <tt>relay1</tt></p>',ret:'a string that identifies the display (ex: <tt>relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['Display']['get_hardwareId']={syn:'Returns the unique hardware identifier of the display in the form <tt>SERIAL.FUNCTIONID</tt>.',lib:'display.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Returns the unique hardware identifier of the display in the form <tt>SERIAL.FUNCTIONID</tt>. The unique hardware identifier is composed of the device serial number and of the hardware identifier of the display (for example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'a string that uniquely identifies the display (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['Display']['get_layerCount']={syn:'Returns the number of available layers to draw on.',lib:'display.get_layerCount()',pro:'def get_layerCount()',cmt:'<p>Returns the number of available layers to draw on.</p>',ret:'an integer corresponding to the number of available layers to draw on',ext:'On failure, throws an exception or returns <tt>Y_LAYERCOUNT_INVALID</tt>.'};
+doc['Display']['get_layerHeight']={syn:'Returns the height of the layers to draw on, in pixels.',lib:'display.get_layerHeight()',pro:'def get_layerHeight()',cmt:'<p>Returns the height of the layers to draw on, in pixels.</p>',ret:'an integer corresponding to the height of the layers to draw on, in pixels',ext:'On failure, throws an exception or returns <tt>Y_LAYERHEIGHT_INVALID</tt>.'};
+doc['Display']['get_layerWidth']={syn:'Returns the width of the layers to draw on, in pixels.',lib:'display.get_layerWidth()',pro:'def get_layerWidth()',cmt:'<p>Returns the width of the layers to draw on, in pixels.</p>',ret:'an integer corresponding to the width of the layers to draw on, in pixels',ext:'On failure, throws an exception or returns <tt>Y_LAYERWIDTH_INVALID</tt>.'};
+doc['Display']['get_logicalName']={syn:'Returns the logical name of the display.',lib:'display.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Returns the logical name of the display.</p>',ret:'a string corresponding to the logical name of the display.',ext:'On failure, throws an exception or returns <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['Display']['get_module']={syn:'Gets the <tt>YModule</tt> object for the device on which the function is located.',lib:'display.get_module()',pro:'def get_module()',cmt:'<p>Gets the <tt>YModule</tt> object for the device on which the function is located. If the function cannot be located on any module, the returned instance of <tt>YModule</tt> is not shown as on-line.</p>',ret:'an instance of <tt>YModule</tt>'};
+doc['Display']['get_orientation']={syn:'Returns the currently selected display orientation.',lib:'display.get_orientation()',pro:'def get_orientation()',cmt:'<p>Returns the currently selected display orientation.</p>',ret:'a value among <tt>Y_ORIENTATION_LEFT</tt>, <tt>Y_ORIENTATION_UP</tt>, <tt>Y_ORIENTATION_RIGHT</tt> and <tt>Y_ORIENTATION_DOWN</tt> corresponding to the currently selected display orientation',ext:'On failure, throws an exception or returns <tt>Y_ORIENTATION_INVALID</tt>.'};
+doc['Display']['get_startupSeq']={syn:'Returns the name of the sequence to play when the displayed is powered on.',lib:'display.get_startupSeq()',pro:'def get_startupSeq()',cmt:'<p>Returns the name of the sequence to play when the displayed is powered on.</p>',ret:'a string corresponding to the name of the sequence to play when the displayed is powered on',ext:'On failure, throws an exception or returns <tt>Y_STARTUPSEQ_INVALID</tt>.'};
+doc['Display']['get_userData']={syn:'Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>.',lib:'display.get_userData()',pro:'def get_userData()',cmt:'<p>Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>. This attribute is never touched directly by the API, and is at disposal of the caller to store a context.</p>',ret:'the object stored previously by the caller.'};
+doc['Display']['isOnline']={syn:'Checks if the display is currently reachable, without raising any error.',lib:'display.isOnline()',pro:'def isOnline()',cmt:'<p>Checks if the display is currently reachable, without raising any error. If there is a cached value for the display in cache, that has not yet expired, the device is considered reachable. No exception is raised if there is an error while trying to contact the device hosting the display.</p>',ret:'<tt>true</tt> if the display can be reached, and <tt>false</tt> otherwise'};
+doc['Display']['load']={syn:'Preloads the display cache with a specified validity duration.',lib:'display.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Preloads the display cache with a specified validity duration. By default, whenever accessing a device, all function attributes are kept in cache for the standard duration (5 ms). This method can be used to temporarily mark the cache as valid for a longer period, in order to reduce network traffic for instance.</p>',par:{msValidity:'an integer corresponding to the validity attributed to the loaded function parameters, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Display']['loadAttribute']={syn:'Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.',lib:'display.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'On failure, throws an exception or returns an empty string.'};
+doc['Display']['muteValueCallbacks']={syn:'Disable the propagation of every new advertised value to the parent hub.',lib:'display.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>Disable the propagation of every new advertised value to the parent hub. You can use this function to save bandwidth and CPU on computers with limited resources, or to prevent unwanted invocations of the HTTP callback. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Display']['newSequence']={syn:'Starts to record all display commands into a sequence, for later replay.',lib:'display.newSequence()',pro:'def newSequence()',cmt:'<p>Starts to record all display commands into a sequence, for later replay. The name used to store the sequence is specified when calling <tt>saveSequence()</tt>, once the recording is complete.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Display']['nextDisplay']={syn:'Continues the enumeration of displays started using <tt>yFirstDisplay()</tt>.',lib:'display.nextDisplay()',pro:'def nextDisplay()',cmt:'<p>Continues the enumeration of displays started using <tt>yFirstDisplay()</tt>.</p>',ret:'a pointer to a <tt>YDisplay</tt> object, corresponding to a display currently online, or a <tt>null</tt> pointer if there are no more displays to enumerate.'};
+doc['Display']['pauseSequence']={syn:'Waits for a specified delay (in milliseconds) before playing next commands in current sequence.',lib:'display.pauseSequence()',pro:'def pauseSequence(<span id=pn>delay_ms</span>)',cmt:'<p>Waits for a specified delay (in milliseconds) before playing next commands in current sequence. This method can be used while recording a display sequence, to insert a timed wait in the sequence (without any immediate effect). It can also be used dynamically while playing a pre-recorded sequence, to suspend or resume the execution of the sequence. To cancel a delay, call the same method with a zero delay.</p>',par:{delay_ms:'the duration to wait, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Display']['playSequence']={syn:'Replays a display sequence previously recorded using <tt>newSequence()</tt> and <tt>saveSequence()</tt>.',lib:'display.playSequence()',pro:'def playSequence(<span id=pn>sequenceName</span>)',cmt:'<p>Replays a display sequence previously recorded using <tt>newSequence()</tt> and <tt>saveSequence()</tt>.</p>',par:{sequenceName:'the name of the newly created sequence'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Display']['registerValueCallback']={syn:'Registers the callback function that is invoked on every change of advertised value.',lib:'display.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every change of advertised value. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and the character string describing the new advertised value.'}};
+doc['Display']['resetAll']={syn:'Clears the display screen and resets all display layers to their default state.',lib:'display.resetAll()',pro:'def resetAll()',cmt:'<p>Clears the display screen and resets all display layers to their default state. Using this function in a sequence will kill the sequence play-back. Don\x27t use that function to reset the display at sequence start-up.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Display']['saveSequence']={syn:'Stops recording display commands and saves the sequence into the specified file on the display internal memory.',lib:'display.saveSequence()',pro:'def saveSequence(<span id=pn>sequenceName</span>)',cmt:'<p>Stops recording display commands and saves the sequence into the specified file on the display internal memory. The sequence can be later replayed using <tt>playSequence()</tt>.</p>',par:{sequenceName:'the name of the newly created sequence'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Display']['set_brightness']={syn:'Changes the brightness of the display.',lib:'display.set_brightness()',pro:'def set_brightness(<span id=pn>newval</span>)',cmt:'<p>Changes the brightness of the display. The parameter is a value between 0 and 100. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'an integer corresponding to the brightness of the display'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Display']['set_enabled']={syn:'Changes the power state of the display.',lib:'display.set_enabled()',pro:'def set_enabled(<span id=pn>newval</span>)',cmt:'<p>Changes the power state of the display.</p>',par:{newval:'either <tt>Y_ENABLED_FALSE</tt> or <tt>Y_ENABLED_TRUE</tt>, according to the power state of the display'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Display']['set_logicalName']={syn:'Changes the logical name of the display.',lib:'display.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Changes the logical name of the display. You can use <tt>yCheckLogicalName()</tt> prior to this call to make sure that your parameter is valid. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the logical name of the display.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Display']['set_orientation']={syn:'Changes the display orientation.',lib:'display.set_orientation()',pro:'def set_orientation(<span id=pn>newval</span>)',cmt:'<p>Changes the display orientation. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a value among <tt>Y_ORIENTATION_LEFT</tt>, <tt>Y_ORIENTATION_UP</tt>, <tt>Y_ORIENTATION_RIGHT</tt> and <tt>Y_ORIENTATION_DOWN</tt> corresponding to the display orientation'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Display']['set_startupSeq']={syn:'Changes the name of the sequence to play when the displayed is powered on.',lib:'display.set_startupSeq()',pro:'def set_startupSeq(<span id=pn>newval</span>)',cmt:'<p>Changes the name of the sequence to play when the displayed is powered on. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the name of the sequence to play when the displayed is powered on'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Display']['set_userData']={syn:'Stores a user context provided as argument in the userData attribute of the function.',lib:'display.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Stores a user context provided as argument in the userData attribute of the function. This attribute is never touched by the API, and is at disposal of the caller to store a context.</p>',par:{data:'any kind of object to be stored'}};
+doc['Display']['stopSequence']={syn:'Stops immediately any ongoing sequence replay.',lib:'display.stopSequence()',pro:'def stopSequence()',cmt:'<p>Stops immediately any ongoing sequence replay. The display is left as is.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Display']['swapLayerContent']={syn:'Swaps the whole content of two layers.',lib:'display.swapLayerContent()',pro:'def swapLayerContent(<span id=pn>layerIdA</span>, <span id=pn>layerIdB</span>)',cmt:'<p>Swaps the whole content of two layers. The color and transparency of all the pixels from the two layers are swapped. This method only affects the displayed content, but does not change any property of the layer objects. In particular, the visibility of each layer stays unchanged. When used between onae hidden layer and a visible layer, this method makes it possible to easily implement double-buffering. Note that layer 0 has no transparency support (it is always completely opaque).</p>',par:{layerIdA:'the first layer (a number in range 0..layerCount-1)',layerIdB:'the second layer (a number in range 0..layerCount-1)'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Display']['unmuteValueCallbacks']={syn:'Re-enable the propagation of every new advertised value to the parent hub.',lib:'display.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>Re-enable the propagation of every new advertised value to the parent hub. This function reverts the effect of a previous call to <tt>muteValueCallbacks()</tt>. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Display']['upload']={syn:'Uploads an arbitrary file (for instance a GIF file) to the display, to the specified full path name.',lib:'display.upload()',pro:'def upload(<span id=pn>pathname</span>, <span id=pn>content</span>)',cmt:'<p>Uploads an arbitrary file (for instance a GIF file) to the display, to the specified full path name. If a file already exists with the same path name, its content is overwritten.</p>',par:{pathname:'path and name of the new file to create',content:'binary buffer with the content to set'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+//--- (end of generated code: Display)
+//--- (generated code: Files)
+doc['Files']={'':{syn:'Files function interface',inc:'from yocto_files import *',cmt:'<p>The filesystem interface makes it possible to store files on some devices, for instance to design a custom web UI (for networked devices) or to add fonts (on display devices).</p>'}};
+doc['Files']['FindFiles']={syn:'Retrieves a filesystem for a given identifier.',lib:'YFiles.FindFiles()',pro:'def FindFiles(<span id=pn>func</span>)',cmt:'<p>Retrieves a filesystem for a given identifier. The identifier can be specified using several formats:<br> <ul> <li>FunctionLogicalName</li> <li>ModuleSerialNumber.FunctionIdentifier</li> <li>ModuleSerialNumber.FunctionLogicalName</li> <li>ModuleLogicalName.FunctionIdentifier</li> <li>ModuleLogicalName.FunctionLogicalName</li> </ul></p><p> This function does not require that the filesystem is online at the time it is invoked. The returned object is nevertheless valid. Use the method <tt>YFiles.isOnline()</tt> to test if the filesystem is indeed online at a given time. In case of ambiguity when looking for a filesystem by logical name, no error is notified: the first instance found is returned. The search is performed first by hardware name, then by logical name.</p>',par:{func:'a string that uniquely characterizes the filesystem'},ret:'a <tt>YFiles</tt> object allowing you to drive the filesystem.'};
+doc['Files']['FirstFiles']={syn:'Starts the enumeration of filesystems currently accessible.',lib:'YFiles.FirstFiles()',pro:'def FirstFiles()',cmt:'<p>Starts the enumeration of filesystems currently accessible. Use the method <tt>YFiles.nextFiles()</tt> to iterate on next filesystems.</p>',ret:'a pointer to a <tt>YFiles</tt> object, corresponding to the first filesystem currently online, or a <tt>null</tt> pointer if there are none.'};
+doc['Files']['clearCache']={syn:'Invalidates the cache.',lib:'files.clearCache()',pro:'def clearCache()',cmt:'<p>Invalidates the cache. Invalidates the cache of the filesystem attributes. Forces the next call to get_xxx() or loadxxx() to use values that come from the device.</p>'};
+doc['Files']['describe']={syn:'Returns a short text that describes unambiguously the instance of the filesystem in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'files.describe()',pro:'def describe()',cmt:'<p>Returns a short text that describes unambiguously the instance of the filesystem in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. More precisely, <tt>TYPE</tt> is the type of the function, <tt>NAME</tt> it the name used for the first access to the function, <tt>SERIAL</tt> is the serial number of the module if the module is connected or <tt>\x22unresolved\x22</tt>, and <tt>FUNCTIONID</tt> is the hardware identifier of the function if the module is connected. For example, this method returns <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> if the module is already connected or <tt>Relay(BadCustomeName.relay1)=unresolved</tt> if the module has not yet been connected. This method does not trigger any USB or TCP transaction and can therefore be used in a debugger.</p>',ret:'a string that describes the filesystem (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['Files']['download']={syn:'Downloads the requested file and returns a binary buffer with its content.',lib:'files.download()',pro:'def download(<span id=pn>pathname</span>)',cmt:'<p>Downloads the requested file and returns a binary buffer with its content.</p>',par:{pathname:'path and name of the file to download'},ret:'a binary buffer with the file content',ext:'On failure, throws an exception or returns an empty content.'};
+doc['Files']['fileExist']={syn:'Test if a file exist on the filesystem of the module.',lib:'files.fileExist()',pro:'def fileExist(<span id=pn>filename</span>)',cmt:'<p>Test if a file exist on the filesystem of the module.</p>',par:{filename:'the file name to test.'},ret:'a true if the file existe, false ortherwise.',ext:'On failure, throws an exception.'};
+doc['Files']['format_fs']={syn:'Reinitialize the filesystem to its clean, unfragmented, empty state.',lib:'files.format_fs()',pro:'def format_fs()',cmt:'<p>Reinitialize the filesystem to its clean, unfragmented, empty state. All files previously uploaded are permanently lost.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Files']['get_advertisedValue']={syn:'Returns the current value of the filesystem (no more than 6 characters).',lib:'files.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Returns the current value of the filesystem (no more than 6 characters).</p>',ret:'a string corresponding to the current value of the filesystem (no more than 6 characters).',ext:'On failure, throws an exception or returns <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['Files']['get_errorMessage']={syn:'Returns the error message of the latest error with the filesystem.',lib:'files.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Returns the error message of the latest error with the filesystem. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a string corresponding to the latest error message that occured while using the filesystem object'};
+doc['Files']['get_errorType']={syn:'Returns the numerical error code of the latest error with the filesystem.',lib:'files.get_errorType()',pro:'def get_errorType()',cmt:'<p>Returns the numerical error code of the latest error with the filesystem. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a number corresponding to the code of the latest error that occurred while using the filesystem object'};
+doc['Files']['get_filesCount']={syn:'Returns the number of files currently loaded in the filesystem.',lib:'files.get_filesCount()',pro:'def get_filesCount()',cmt:'<p>Returns the number of files currently loaded in the filesystem.</p>',ret:'an integer corresponding to the number of files currently loaded in the filesystem',ext:'On failure, throws an exception or returns <tt>Y_FILESCOUNT_INVALID</tt>.'};
+doc['Files']['get_freeSpace']={syn:'Returns the free space for uploading new files to the filesystem, in bytes.',lib:'files.get_freeSpace()',pro:'def get_freeSpace()',cmt:'<p>Returns the free space for uploading new files to the filesystem, in bytes.</p>',ret:'an integer corresponding to the free space for uploading new files to the filesystem, in bytes',ext:'On failure, throws an exception or returns <tt>Y_FREESPACE_INVALID</tt>.'};
+doc['Files']['get_friendlyName']={syn:'Returns a global identifier of the filesystem in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>.',lib:'files.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Returns a global identifier of the filesystem in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>. The returned string uses the logical names of the module and of the filesystem if they are defined, otherwise the serial number of the module and the hardware identifier of the filesystem (for example: <tt>MyCustomName.relay1</tt>)</p>',ret:'a string that uniquely identifies the filesystem using logical names (ex: <tt>MyCustomName.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['Files']['get_functionDescriptor']={syn:'Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function.',lib:'files.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function. This identifier can be used to test if two instances of <tt>YFunction</tt> reference the same physical function on the same physical device.</p>',ret:'an identifier of type <tt>YFUN_DESCR</tt>.',ext:'If the function has never been contacted, the returned value is <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>.'};
+doc['Files']['get_functionId']={syn:'Returns the hardware identifier of the filesystem, without reference to the module.',lib:'files.get_functionId()',pro:'def get_functionId()',cmt:'<p>Returns the hardware identifier of the filesystem, without reference to the module. For example <tt>relay1</tt></p>',ret:'a string that identifies the filesystem (ex: <tt>relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['Files']['get_hardwareId']={syn:'Returns the unique hardware identifier of the filesystem in the form <tt>SERIAL.FUNCTIONID</tt>.',lib:'files.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Returns the unique hardware identifier of the filesystem in the form <tt>SERIAL.FUNCTIONID</tt>. The unique hardware identifier is composed of the device serial number and of the hardware identifier of the filesystem (for example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'a string that uniquely identifies the filesystem (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['Files']['get_list']={syn:'Returns a list of YFileRecord objects that describe files currently loaded in the filesystem.',lib:'files.get_list()',pro:'def get_list(<span id=pn>pattern</span>)',cmt:'<p>Returns a list of YFileRecord objects that describe files currently loaded in the filesystem.</p>',par:{pattern:'an optional filter pattern, using star and question marks as wildcards. When an empty pattern is provided, all file records are returned.'},ret:'a list of <tt>YFileRecord</tt> objects, containing the file path and name, byte size and 32-bit CRC of the file content.',ext:'On failure, throws an exception or returns an empty list.'};
+doc['Files']['get_logicalName']={syn:'Returns the logical name of the filesystem.',lib:'files.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Returns the logical name of the filesystem.</p>',ret:'a string corresponding to the logical name of the filesystem.',ext:'On failure, throws an exception or returns <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['Files']['get_module']={syn:'Gets the <tt>YModule</tt> object for the device on which the function is located.',lib:'files.get_module()',pro:'def get_module()',cmt:'<p>Gets the <tt>YModule</tt> object for the device on which the function is located. If the function cannot be located on any module, the returned instance of <tt>YModule</tt> is not shown as on-line.</p>',ret:'an instance of <tt>YModule</tt>'};
+doc['Files']['get_userData']={syn:'Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>.',lib:'files.get_userData()',pro:'def get_userData()',cmt:'<p>Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>. This attribute is never touched directly by the API, and is at disposal of the caller to store a context.</p>',ret:'the object stored previously by the caller.'};
+doc['Files']['isOnline']={syn:'Checks if the filesystem is currently reachable, without raising any error.',lib:'files.isOnline()',pro:'def isOnline()',cmt:'<p>Checks if the filesystem is currently reachable, without raising any error. If there is a cached value for the filesystem in cache, that has not yet expired, the device is considered reachable. No exception is raised if there is an error while trying to contact the device hosting the filesystem.</p>',ret:'<tt>true</tt> if the filesystem can be reached, and <tt>false</tt> otherwise'};
+doc['Files']['load']={syn:'Preloads the filesystem cache with a specified validity duration.',lib:'files.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Preloads the filesystem cache with a specified validity duration. By default, whenever accessing a device, all function attributes are kept in cache for the standard duration (5 ms). This method can be used to temporarily mark the cache as valid for a longer period, in order to reduce network traffic for instance.</p>',par:{msValidity:'an integer corresponding to the validity attributed to the loaded function parameters, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Files']['loadAttribute']={syn:'Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.',lib:'files.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'On failure, throws an exception or returns an empty string.'};
+doc['Files']['muteValueCallbacks']={syn:'Disable the propagation of every new advertised value to the parent hub.',lib:'files.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>Disable the propagation of every new advertised value to the parent hub. You can use this function to save bandwidth and CPU on computers with limited resources, or to prevent unwanted invocations of the HTTP callback. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Files']['nextFiles']={syn:'Continues the enumeration of filesystems started using <tt>yFirstFiles()</tt>.',lib:'files.nextFiles()',pro:'def nextFiles()',cmt:'<p>Continues the enumeration of filesystems started using <tt>yFirstFiles()</tt>.</p>',ret:'a pointer to a <tt>YFiles</tt> object, corresponding to a filesystem currently online, or a <tt>null</tt> pointer if there are no more filesystems to enumerate.'};
+doc['Files']['registerValueCallback']={syn:'Registers the callback function that is invoked on every change of advertised value.',lib:'files.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every change of advertised value. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and the character string describing the new advertised value.'}};
+doc['Files']['remove']={syn:'Deletes a file, given by its full path name, from the filesystem.',lib:'files.remove()',pro:'def remove(<span id=pn>pathname</span>)',cmt:'<p>Deletes a file, given by its full path name, from the filesystem. Because of filesystem fragmentation, deleting a file may not always free up the whole space used by the file. However, rewriting a file with the same path name will always reuse any space not freed previously. If you need to ensure that no space is taken by previously deleted files, you can use <tt>format_fs</tt> to fully reinitialize the filesystem.</p>',par:{pathname:'path and name of the file to remove.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Files']['set_logicalName']={syn:'Changes the logical name of the filesystem.',lib:'files.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Changes the logical name of the filesystem. You can use <tt>yCheckLogicalName()</tt> prior to this call to make sure that your parameter is valid. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the logical name of the filesystem.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Files']['set_userData']={syn:'Stores a user context provided as argument in the userData attribute of the function.',lib:'files.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Stores a user context provided as argument in the userData attribute of the function. This attribute is never touched by the API, and is at disposal of the caller to store a context.</p>',par:{data:'any kind of object to be stored'}};
+doc['Files']['unmuteValueCallbacks']={syn:'Re-enable the propagation of every new advertised value to the parent hub.',lib:'files.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>Re-enable the propagation of every new advertised value to the parent hub. This function reverts the effect of a previous call to <tt>muteValueCallbacks()</tt>. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Files']['upload']={syn:'Uploads a file to the filesystem, to the specified full path name.',lib:'files.upload()',pro:'def upload(<span id=pn>pathname</span>, <span id=pn>content</span>)',cmt:'<p>Uploads a file to the filesystem, to the specified full path name. If a file already exists with the same path name, its content is overwritten.</p>',par:{pathname:'path and name of the new file to create',content:'binary buffer with the content to set'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+//--- (end of generated code: Files)
+//--- (generated code: RealTimeClock)
+doc['RealTimeClock']={'':{syn:'Real Time Clock function interface',inc:'from yocto_realtimeclock import *',cmt:'<p>The RealTimeClock function maintains and provides current date and time, even accross power cut lasting several days. It is the base for automated wake-up functions provided by the WakeUpScheduler. The current time may represent a local time as well as an UTC time, but no automatic time change will occur to account for daylight saving time.</p>'}};
+doc['RealTimeClock']['FindRealTimeClock']={syn:'Retrieves a clock for a given identifier.',lib:'YRealTimeClock.FindRealTimeClock()',pro:'def FindRealTimeClock(<span id=pn>func</span>)',cmt:'<p>Retrieves a clock for a given identifier. The identifier can be specified using several formats:<br> <ul> <li>FunctionLogicalName</li> <li>ModuleSerialNumber.FunctionIdentifier</li> <li>ModuleSerialNumber.FunctionLogicalName</li> <li>ModuleLogicalName.FunctionIdentifier</li> <li>ModuleLogicalName.FunctionLogicalName</li> </ul></p><p> This function does not require that the clock is online at the time it is invoked. The returned object is nevertheless valid. Use the method <tt>YRealTimeClock.isOnline()</tt> to test if the clock is indeed online at a given time. In case of ambiguity when looking for a clock by logical name, no error is notified: the first instance found is returned. The search is performed first by hardware name, then by logical name.</p>',par:{func:'a string that uniquely characterizes the clock'},ret:'a <tt>YRealTimeClock</tt> object allowing you to drive the clock.'};
+doc['RealTimeClock']['FirstRealTimeClock']={syn:'Starts the enumeration of clocks currently accessible.',lib:'YRealTimeClock.FirstRealTimeClock()',pro:'def FirstRealTimeClock()',cmt:'<p>Starts the enumeration of clocks currently accessible. Use the method <tt>YRealTimeClock.nextRealTimeClock()</tt> to iterate on next clocks.</p>',ret:'a pointer to a <tt>YRealTimeClock</tt> object, corresponding to the first clock currently online, or a <tt>null</tt> pointer if there are none.'};
+doc['RealTimeClock']['clearCache']={syn:'Invalidates the cache.',lib:'realtimeclock.clearCache()',pro:'def clearCache()',cmt:'<p>Invalidates the cache. Invalidates the cache of the clock attributes. Forces the next call to get_xxx() or loadxxx() to use values that come from the device.</p>'};
+doc['RealTimeClock']['describe']={syn:'Returns a short text that describes unambiguously the instance of the clock in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'realtimeclock.describe()',pro:'def describe()',cmt:'<p>Returns a short text that describes unambiguously the instance of the clock in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. More precisely, <tt>TYPE</tt> is the type of the function, <tt>NAME</tt> it the name used for the first access to the function, <tt>SERIAL</tt> is the serial number of the module if the module is connected or <tt>\x22unresolved\x22</tt>, and <tt>FUNCTIONID</tt> is the hardware identifier of the function if the module is connected. For example, this method returns <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> if the module is already connected or <tt>Relay(BadCustomeName.relay1)=unresolved</tt> if the module has not yet been connected. This method does not trigger any USB or TCP transaction and can therefore be used in a debugger.</p>',ret:'a string that describes the clock (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['RealTimeClock']['get_advertisedValue']={syn:'Returns the current value of the clock (no more than 6 characters).',lib:'realtimeclock.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Returns the current value of the clock (no more than 6 characters).</p>',ret:'a string corresponding to the current value of the clock (no more than 6 characters).',ext:'On failure, throws an exception or returns <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['RealTimeClock']['get_dateTime']={syn:'Returns the current time in the form \x22YYYY/MM/DD hh:mm:ss\x22.',lib:'realtimeclock.get_dateTime()',pro:'def get_dateTime()',cmt:'<p>Returns the current time in the form \x22YYYY/MM/DD hh:mm:ss\x22.</p>',ret:'a string corresponding to the current time in the form \x22YYYY/MM/DD hh:mm:ss\x22',ext:'On failure, throws an exception or returns <tt>Y_DATETIME_INVALID</tt>.'};
+doc['RealTimeClock']['get_errorMessage']={syn:'Returns the error message of the latest error with the clock.',lib:'realtimeclock.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Returns the error message of the latest error with the clock. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a string corresponding to the latest error message that occured while using the clock object'};
+doc['RealTimeClock']['get_errorType']={syn:'Returns the numerical error code of the latest error with the clock.',lib:'realtimeclock.get_errorType()',pro:'def get_errorType()',cmt:'<p>Returns the numerical error code of the latest error with the clock. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a number corresponding to the code of the latest error that occurred while using the clock object'};
+doc['RealTimeClock']['get_friendlyName']={syn:'Returns a global identifier of the clock in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>.',lib:'realtimeclock.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Returns a global identifier of the clock in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>. The returned string uses the logical names of the module and of the clock if they are defined, otherwise the serial number of the module and the hardware identifier of the clock (for example: <tt>MyCustomName.relay1</tt>)</p>',ret:'a string that uniquely identifies the clock using logical names (ex: <tt>MyCustomName.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['RealTimeClock']['get_functionDescriptor']={syn:'Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function.',lib:'realtimeclock.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function. This identifier can be used to test if two instances of <tt>YFunction</tt> reference the same physical function on the same physical device.</p>',ret:'an identifier of type <tt>YFUN_DESCR</tt>.',ext:'If the function has never been contacted, the returned value is <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>.'};
+doc['RealTimeClock']['get_functionId']={syn:'Returns the hardware identifier of the clock, without reference to the module.',lib:'realtimeclock.get_functionId()',pro:'def get_functionId()',cmt:'<p>Returns the hardware identifier of the clock, without reference to the module. For example <tt>relay1</tt></p>',ret:'a string that identifies the clock (ex: <tt>relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['RealTimeClock']['get_hardwareId']={syn:'Returns the unique hardware identifier of the clock in the form <tt>SERIAL.FUNCTIONID</tt>.',lib:'realtimeclock.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Returns the unique hardware identifier of the clock in the form <tt>SERIAL.FUNCTIONID</tt>. The unique hardware identifier is composed of the device serial number and of the hardware identifier of the clock (for example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'a string that uniquely identifies the clock (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['RealTimeClock']['get_logicalName']={syn:'Returns the logical name of the clock.',lib:'realtimeclock.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Returns the logical name of the clock.</p>',ret:'a string corresponding to the logical name of the clock.',ext:'On failure, throws an exception or returns <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['RealTimeClock']['get_module']={syn:'Gets the <tt>YModule</tt> object for the device on which the function is located.',lib:'realtimeclock.get_module()',pro:'def get_module()',cmt:'<p>Gets the <tt>YModule</tt> object for the device on which the function is located. If the function cannot be located on any module, the returned instance of <tt>YModule</tt> is not shown as on-line.</p>',ret:'an instance of <tt>YModule</tt>'};
+doc['RealTimeClock']['get_timeSet']={syn:'Returns true if the clock has been set, and false otherwise.',lib:'realtimeclock.get_timeSet()',pro:'def get_timeSet()',cmt:'<p>Returns true if the clock has been set, and false otherwise.</p>',ret:'either <tt>Y_TIMESET_FALSE</tt> or <tt>Y_TIMESET_TRUE</tt>, according to true if the clock has been set, and false otherwise',ext:'On failure, throws an exception or returns <tt>Y_TIMESET_INVALID</tt>.'};
+doc['RealTimeClock']['get_unixTime']={syn:'Returns the current time in Unix format (number of elapsed seconds since Jan 1st, 1970).',lib:'realtimeclock.get_unixTime()',pro:'def get_unixTime()',cmt:'<p>Returns the current time in Unix format (number of elapsed seconds since Jan 1st, 1970).</p>',ret:'an integer corresponding to the current time in Unix format (number of elapsed seconds since Jan 1st, 1970)',ext:'On failure, throws an exception or returns <tt>Y_UNIXTIME_INVALID</tt>.'};
+doc['RealTimeClock']['get_userData']={syn:'Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>.',lib:'realtimeclock.get_userData()',pro:'def get_userData()',cmt:'<p>Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>. This attribute is never touched directly by the API, and is at disposal of the caller to store a context.</p>',ret:'the object stored previously by the caller.'};
+doc['RealTimeClock']['get_utcOffset']={syn:'Returns the number of seconds between current time and UTC time (time zone).',lib:'realtimeclock.get_utcOffset()',pro:'def get_utcOffset()',cmt:'<p>Returns the number of seconds between current time and UTC time (time zone).</p>',ret:'an integer corresponding to the number of seconds between current time and UTC time (time zone)',ext:'On failure, throws an exception or returns <tt>Y_UTCOFFSET_INVALID</tt>.'};
+doc['RealTimeClock']['isOnline']={syn:'Checks if the clock is currently reachable, without raising any error.',lib:'realtimeclock.isOnline()',pro:'def isOnline()',cmt:'<p>Checks if the clock is currently reachable, without raising any error. If there is a cached value for the clock in cache, that has not yet expired, the device is considered reachable. No exception is raised if there is an error while trying to contact the device hosting the clock.</p>',ret:'<tt>true</tt> if the clock can be reached, and <tt>false</tt> otherwise'};
+doc['RealTimeClock']['load']={syn:'Preloads the clock cache with a specified validity duration.',lib:'realtimeclock.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Preloads the clock cache with a specified validity duration. By default, whenever accessing a device, all function attributes are kept in cache for the standard duration (5 ms). This method can be used to temporarily mark the cache as valid for a longer period, in order to reduce network traffic for instance.</p>',par:{msValidity:'an integer corresponding to the validity attributed to the loaded function parameters, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['RealTimeClock']['loadAttribute']={syn:'Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.',lib:'realtimeclock.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'On failure, throws an exception or returns an empty string.'};
+doc['RealTimeClock']['muteValueCallbacks']={syn:'Disable the propagation of every new advertised value to the parent hub.',lib:'realtimeclock.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>Disable the propagation of every new advertised value to the parent hub. You can use this function to save bandwidth and CPU on computers with limited resources, or to prevent unwanted invocations of the HTTP callback. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['RealTimeClock']['nextRealTimeClock']={syn:'Continues the enumeration of clocks started using <tt>yFirstRealTimeClock()</tt>.',lib:'realtimeclock.nextRealTimeClock()',pro:'def nextRealTimeClock()',cmt:'<p>Continues the enumeration of clocks started using <tt>yFirstRealTimeClock()</tt>.</p>',ret:'a pointer to a <tt>YRealTimeClock</tt> object, corresponding to a clock currently online, or a <tt>null</tt> pointer if there are no more clocks to enumerate.'};
+doc['RealTimeClock']['registerValueCallback']={syn:'Registers the callback function that is invoked on every change of advertised value.',lib:'realtimeclock.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every change of advertised value. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and the character string describing the new advertised value.'}};
+doc['RealTimeClock']['set_logicalName']={syn:'Changes the logical name of the clock.',lib:'realtimeclock.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Changes the logical name of the clock. You can use <tt>yCheckLogicalName()</tt> prior to this call to make sure that your parameter is valid. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the logical name of the clock.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['RealTimeClock']['set_unixTime']={syn:'Changes the current time.',lib:'realtimeclock.set_unixTime()',pro:'def set_unixTime(<span id=pn>newval</span>)',cmt:'<p>Changes the current time. Time is specifid in Unix format (number of elapsed seconds since Jan 1st, 1970).</p>',par:{newval:'an integer corresponding to the current time'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['RealTimeClock']['set_userData']={syn:'Stores a user context provided as argument in the userData attribute of the function.',lib:'realtimeclock.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Stores a user context provided as argument in the userData attribute of the function. This attribute is never touched by the API, and is at disposal of the caller to store a context.</p>',par:{data:'any kind of object to be stored'}};
+doc['RealTimeClock']['set_utcOffset']={syn:'Changes the number of seconds between current time and UTC time (time zone).',lib:'realtimeclock.set_utcOffset()',pro:'def set_utcOffset(<span id=pn>newval</span>)',cmt:'<p>Changes the number of seconds between current time and UTC time (time zone). The timezone is automatically rounded to the nearest multiple of 15 minutes.</p>',par:{newval:'an integer corresponding to the number of seconds between current time and UTC time (time zone)'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['RealTimeClock']['unmuteValueCallbacks']={syn:'Re-enable the propagation of every new advertised value to the parent hub.',lib:'realtimeclock.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>Re-enable the propagation of every new advertised value to the parent hub. This function reverts the effect of a previous call to <tt>muteValueCallbacks()</tt>. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+//--- (end of generated code: RealTimeClock)
+//--- (generated code: WakeUpMonitor)
+doc['WakeUpMonitor']={'':{syn:'WakeUpMonitor function interface',inc:'from yocto_wakeupmonitor import *',cmt:'<p>The WakeUpMonitor function handles globally all wake-up sources, as well as automated sleep mode.</p>'}};
+doc['WakeUpMonitor']['FindWakeUpMonitor']={syn:'Retrieves a monitor for a given identifier.',lib:'YWakeUpMonitor.FindWakeUpMonitor()',pro:'def FindWakeUpMonitor(<span id=pn>func</span>)',cmt:'<p>Retrieves a monitor for a given identifier. The identifier can be specified using several formats:<br> <ul> <li>FunctionLogicalName</li> <li>ModuleSerialNumber.FunctionIdentifier</li> <li>ModuleSerialNumber.FunctionLogicalName</li> <li>ModuleLogicalName.FunctionIdentifier</li> <li>ModuleLogicalName.FunctionLogicalName</li> </ul></p><p> This function does not require that the monitor is online at the time it is invoked. The returned object is nevertheless valid. Use the method <tt>YWakeUpMonitor.isOnline()</tt> to test if the monitor is indeed online at a given time. In case of ambiguity when looking for a monitor by logical name, no error is notified: the first instance found is returned. The search is performed first by hardware name, then by logical name.</p>',par:{func:'a string that uniquely characterizes the monitor'},ret:'a <tt>YWakeUpMonitor</tt> object allowing you to drive the monitor.'};
+doc['WakeUpMonitor']['FirstWakeUpMonitor']={syn:'Starts the enumeration of monitors currently accessible.',lib:'YWakeUpMonitor.FirstWakeUpMonitor()',pro:'def FirstWakeUpMonitor()',cmt:'<p>Starts the enumeration of monitors currently accessible. Use the method <tt>YWakeUpMonitor.nextWakeUpMonitor()</tt> to iterate on next monitors.</p>',ret:'a pointer to a <tt>YWakeUpMonitor</tt> object, corresponding to the first monitor currently online, or a <tt>null</tt> pointer if there are none.'};
+doc['WakeUpMonitor']['clearCache']={syn:'Invalidates the cache.',lib:'wakeupmonitor.clearCache()',pro:'def clearCache()',cmt:'<p>Invalidates the cache. Invalidates the cache of the monitor attributes. Forces the next call to get_xxx() or loadxxx() to use values that come from the device.</p>'};
+doc['WakeUpMonitor']['describe']={syn:'Returns a short text that describes unambiguously the instance of the monitor in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'wakeupmonitor.describe()',pro:'def describe()',cmt:'<p>Returns a short text that describes unambiguously the instance of the monitor in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. More precisely, <tt>TYPE</tt> is the type of the function, <tt>NAME</tt> it the name used for the first access to the function, <tt>SERIAL</tt> is the serial number of the module if the module is connected or <tt>\x22unresolved\x22</tt>, and <tt>FUNCTIONID</tt> is the hardware identifier of the function if the module is connected. For example, this method returns <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> if the module is already connected or <tt>Relay(BadCustomeName.relay1)=unresolved</tt> if the module has not yet been connected. This method does not trigger any USB or TCP transaction and can therefore be used in a debugger.</p>',ret:'a string that describes the monitor (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['WakeUpMonitor']['get_advertisedValue']={syn:'Returns the current value of the monitor (no more than 6 characters).',lib:'wakeupmonitor.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Returns the current value of the monitor (no more than 6 characters).</p>',ret:'a string corresponding to the current value of the monitor (no more than 6 characters).',ext:'On failure, throws an exception or returns <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['WakeUpMonitor']['get_errorMessage']={syn:'Returns the error message of the latest error with the monitor.',lib:'wakeupmonitor.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Returns the error message of the latest error with the monitor. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a string corresponding to the latest error message that occured while using the monitor object'};
+doc['WakeUpMonitor']['get_errorType']={syn:'Returns the numerical error code of the latest error with the monitor.',lib:'wakeupmonitor.get_errorType()',pro:'def get_errorType()',cmt:'<p>Returns the numerical error code of the latest error with the monitor. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a number corresponding to the code of the latest error that occurred while using the monitor object'};
+doc['WakeUpMonitor']['get_friendlyName']={syn:'Returns a global identifier of the monitor in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>.',lib:'wakeupmonitor.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Returns a global identifier of the monitor in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>. The returned string uses the logical names of the module and of the monitor if they are defined, otherwise the serial number of the module and the hardware identifier of the monitor (for example: <tt>MyCustomName.relay1</tt>)</p>',ret:'a string that uniquely identifies the monitor using logical names (ex: <tt>MyCustomName.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['WakeUpMonitor']['get_functionDescriptor']={syn:'Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function.',lib:'wakeupmonitor.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function. This identifier can be used to test if two instances of <tt>YFunction</tt> reference the same physical function on the same physical device.</p>',ret:'an identifier of type <tt>YFUN_DESCR</tt>.',ext:'If the function has never been contacted, the returned value is <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>.'};
+doc['WakeUpMonitor']['get_functionId']={syn:'Returns the hardware identifier of the monitor, without reference to the module.',lib:'wakeupmonitor.get_functionId()',pro:'def get_functionId()',cmt:'<p>Returns the hardware identifier of the monitor, without reference to the module. For example <tt>relay1</tt></p>',ret:'a string that identifies the monitor (ex: <tt>relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['WakeUpMonitor']['get_hardwareId']={syn:'Returns the unique hardware identifier of the monitor in the form <tt>SERIAL.FUNCTIONID</tt>.',lib:'wakeupmonitor.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Returns the unique hardware identifier of the monitor in the form <tt>SERIAL.FUNCTIONID</tt>. The unique hardware identifier is composed of the device serial number and of the hardware identifier of the monitor (for example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'a string that uniquely identifies the monitor (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['WakeUpMonitor']['get_logicalName']={syn:'Returns the logical name of the monitor.',lib:'wakeupmonitor.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Returns the logical name of the monitor.</p>',ret:'a string corresponding to the logical name of the monitor.',ext:'On failure, throws an exception or returns <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['WakeUpMonitor']['get_module']={syn:'Gets the <tt>YModule</tt> object for the device on which the function is located.',lib:'wakeupmonitor.get_module()',pro:'def get_module()',cmt:'<p>Gets the <tt>YModule</tt> object for the device on which the function is located. If the function cannot be located on any module, the returned instance of <tt>YModule</tt> is not shown as on-line.</p>',ret:'an instance of <tt>YModule</tt>'};
+doc['WakeUpMonitor']['get_nextWakeUp']={syn:'Returns the next scheduled wake up date/time (UNIX format).',lib:'wakeupmonitor.get_nextWakeUp()',pro:'def get_nextWakeUp()',cmt:'<p>Returns the next scheduled wake up date/time (UNIX format).</p>',ret:'an integer corresponding to the next scheduled wake up date/time (UNIX format)',ext:'On failure, throws an exception or returns <tt>Y_NEXTWAKEUP_INVALID</tt>.'};
+doc['WakeUpMonitor']['get_powerDuration']={syn:'Returns the maximal wake up time (in seconds) before automatically going to sleep.',lib:'wakeupmonitor.get_powerDuration()',pro:'def get_powerDuration()',cmt:'<p>Returns the maximal wake up time (in seconds) before automatically going to sleep.</p>',ret:'an integer corresponding to the maximal wake up time (in seconds) before automatically going to sleep',ext:'On failure, throws an exception or returns <tt>Y_POWERDURATION_INVALID</tt>.'};
+doc['WakeUpMonitor']['get_sleepCountdown']={syn:'Returns the delay before the next sleep period.',lib:'wakeupmonitor.get_sleepCountdown()',pro:'def get_sleepCountdown()',cmt:'<p>Returns the delay before the next sleep period.</p>',ret:'an integer corresponding to the delay before the next sleep period',ext:'On failure, throws an exception or returns <tt>Y_SLEEPCOUNTDOWN_INVALID</tt>.'};
+doc['WakeUpMonitor']['get_userData']={syn:'Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>.',lib:'wakeupmonitor.get_userData()',pro:'def get_userData()',cmt:'<p>Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>. This attribute is never touched directly by the API, and is at disposal of the caller to store a context.</p>',ret:'the object stored previously by the caller.'};
+doc['WakeUpMonitor']['get_wakeUpReason']={syn:'Returns the latest wake up reason.',lib:'wakeupmonitor.get_wakeUpReason()',pro:'def get_wakeUpReason()',cmt:'<p>Returns the latest wake up reason.</p>',ret:'a value among <tt>Y_WAKEUPREASON_USBPOWER</tt>, <tt>Y_WAKEUPREASON_EXTPOWER</tt>, <tt>Y_WAKEUPREASON_ENDOFSLEEP</tt>, <tt>Y_WAKEUPREASON_EXTSIG1</tt>, <tt>Y_WAKEUPREASON_SCHEDULE1</tt> and <tt>Y_WAKEUPREASON_SCHEDULE2</tt> corresponding to the latest wake up reason',ext:'On failure, throws an exception or returns <tt>Y_WAKEUPREASON_INVALID</tt>.'};
+doc['WakeUpMonitor']['get_wakeUpState']={syn:'Returns the current state of the monitor.',lib:'wakeupmonitor.get_wakeUpState()',pro:'def get_wakeUpState()',cmt:'<p>Returns the current state of the monitor.</p>',ret:'either <tt>Y_WAKEUPSTATE_SLEEPING</tt> or <tt>Y_WAKEUPSTATE_AWAKE</tt>, according to the current state of the monitor',ext:'On failure, throws an exception or returns <tt>Y_WAKEUPSTATE_INVALID</tt>.'};
+doc['WakeUpMonitor']['isOnline']={syn:'Checks if the monitor is currently reachable, without raising any error.',lib:'wakeupmonitor.isOnline()',pro:'def isOnline()',cmt:'<p>Checks if the monitor is currently reachable, without raising any error. If there is a cached value for the monitor in cache, that has not yet expired, the device is considered reachable. No exception is raised if there is an error while trying to contact the device hosting the monitor.</p>',ret:'<tt>true</tt> if the monitor can be reached, and <tt>false</tt> otherwise'};
+doc['WakeUpMonitor']['load']={syn:'Preloads the monitor cache with a specified validity duration.',lib:'wakeupmonitor.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Preloads the monitor cache with a specified validity duration. By default, whenever accessing a device, all function attributes are kept in cache for the standard duration (5 ms). This method can be used to temporarily mark the cache as valid for a longer period, in order to reduce network traffic for instance.</p>',par:{msValidity:'an integer corresponding to the validity attributed to the loaded function parameters, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['WakeUpMonitor']['loadAttribute']={syn:'Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.',lib:'wakeupmonitor.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'On failure, throws an exception or returns an empty string.'};
+doc['WakeUpMonitor']['muteValueCallbacks']={syn:'Disable the propagation of every new advertised value to the parent hub.',lib:'wakeupmonitor.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>Disable the propagation of every new advertised value to the parent hub. You can use this function to save bandwidth and CPU on computers with limited resources, or to prevent unwanted invocations of the HTTP callback. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['WakeUpMonitor']['nextWakeUpMonitor']={syn:'Continues the enumeration of monitors started using <tt>yFirstWakeUpMonitor()</tt>.',lib:'wakeupmonitor.nextWakeUpMonitor()',pro:'def nextWakeUpMonitor()',cmt:'<p>Continues the enumeration of monitors started using <tt>yFirstWakeUpMonitor()</tt>.</p>',ret:'a pointer to a <tt>YWakeUpMonitor</tt> object, corresponding to a monitor currently online, or a <tt>null</tt> pointer if there are no more monitors to enumerate.'};
+doc['WakeUpMonitor']['registerValueCallback']={syn:'Registers the callback function that is invoked on every change of advertised value.',lib:'wakeupmonitor.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every change of advertised value. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and the character string describing the new advertised value.'}};
+doc['WakeUpMonitor']['resetSleepCountDown']={syn:'Resets the sleep countdown.',lib:'wakeupmonitor.resetSleepCountDown()',pro:'def resetSleepCountDown()',cmt:'<p>Resets the sleep countdown.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds. On failure, throws an exception or returns a negative error code.'};
+doc['WakeUpMonitor']['set_logicalName']={syn:'Changes the logical name of the monitor.',lib:'wakeupmonitor.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Changes the logical name of the monitor. You can use <tt>yCheckLogicalName()</tt> prior to this call to make sure that your parameter is valid. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the logical name of the monitor.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['WakeUpMonitor']['set_nextWakeUp']={syn:'Changes the days of the week when a wake up must take place.',lib:'wakeupmonitor.set_nextWakeUp()',pro:'def set_nextWakeUp(<span id=pn>newval</span>)',cmt:'<p>Changes the days of the week when a wake up must take place.</p>',par:{newval:'an integer corresponding to the days of the week when a wake up must take place'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['WakeUpMonitor']['set_powerDuration']={syn:'Changes the maximal wake up time (seconds) before automatically going to sleep.',lib:'wakeupmonitor.set_powerDuration()',pro:'def set_powerDuration(<span id=pn>newval</span>)',cmt:'<p>Changes the maximal wake up time (seconds) before automatically going to sleep.</p>',par:{newval:'an integer corresponding to the maximal wake up time (seconds) before automatically going to sleep'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['WakeUpMonitor']['set_sleepCountdown']={syn:'Changes the delay before the next sleep period.',lib:'wakeupmonitor.set_sleepCountdown()',pro:'def set_sleepCountdown(<span id=pn>newval</span>)',cmt:'<p>Changes the delay before the next sleep period.</p>',par:{newval:'an integer corresponding to the delay before the next sleep period'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['WakeUpMonitor']['set_userData']={syn:'Stores a user context provided as argument in the userData attribute of the function.',lib:'wakeupmonitor.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Stores a user context provided as argument in the userData attribute of the function. This attribute is never touched by the API, and is at disposal of the caller to store a context.</p>',par:{data:'any kind of object to be stored'}};
+doc['WakeUpMonitor']['sleep']={syn:'Goes to sleep until the next wake up condition is met, the RTC time must have been set before calling this function.',lib:'wakeupmonitor.sleep()',pro:'def sleep(<span id=pn>secBeforeSleep</span>)',cmt:'<p>Goes to sleep until the next wake up condition is met, the RTC time must have been set before calling this function.</p>',par:{secBeforeSleep:'number of seconds before going into sleep mode,'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['WakeUpMonitor']['sleepFor']={syn:'Goes to sleep for a specific duration or until the next wake up condition is met, the RTC time must have been set before calling this function.',lib:'wakeupmonitor.sleepFor()',pro:'def sleepFor(<span id=pn>secUntilWakeUp</span>, <span id=pn>secBeforeSleep</span>)',cmt:'<p>Goes to sleep for a specific duration or until the next wake up condition is met, the RTC time must have been set before calling this function. The count down before sleep can be canceled with resetSleepCountDown.</p>',par:{secUntilWakeUp:'number of seconds before next wake up',secBeforeSleep:'number of seconds before going into sleep mode'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['WakeUpMonitor']['sleepUntil']={syn:'Go to sleep until a specific date is reached or until the next wake up condition is met, the RTC time must have been set before calling this function.',lib:'wakeupmonitor.sleepUntil()',pro:'def sleepUntil(<span id=pn>wakeUpTime</span>, <span id=pn>secBeforeSleep</span>)',cmt:'<p>Go to sleep until a specific date is reached or until the next wake up condition is met, the RTC time must have been set before calling this function. The count down before sleep can be canceled with resetSleepCountDown.</p>',par:{wakeUpTime:'wake-up datetime (UNIX format)',secBeforeSleep:'number of seconds before going into sleep mode'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['WakeUpMonitor']['unmuteValueCallbacks']={syn:'Re-enable the propagation of every new advertised value to the parent hub.',lib:'wakeupmonitor.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>Re-enable the propagation of every new advertised value to the parent hub. This function reverts the effect of a previous call to <tt>muteValueCallbacks()</tt>. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['WakeUpMonitor']['wakeUp']={syn:'Forces a wake up.',lib:'wakeupmonitor.wakeUp()',pro:'def wakeUp()',cmt:'<p>Forces a wake up.</p>'};
+//--- (end of generated code: WakeUpMonitor)
+//--- (generated code: WakeUpSchedule)
+doc['WakeUpSchedule']={'':{syn:'WakeUpSchedule function interface',inc:'from yocto_wakeupschedule import *',cmt:'<p>The WakeUpSchedule function implements a wake up condition. The wake up time is specified as a set of months and/or days and/or hours and/or minutes when the wake up should happen.</p>'}};
+doc['WakeUpSchedule']['FindWakeUpSchedule']={syn:'Retrieves a wake up schedule for a given identifier.',lib:'YWakeUpSchedule.FindWakeUpSchedule()',pro:'def FindWakeUpSchedule(<span id=pn>func</span>)',cmt:'<p>Retrieves a wake up schedule for a given identifier. The identifier can be specified using several formats:<br> <ul> <li>FunctionLogicalName</li> <li>ModuleSerialNumber.FunctionIdentifier</li> <li>ModuleSerialNumber.FunctionLogicalName</li> <li>ModuleLogicalName.FunctionIdentifier</li> <li>ModuleLogicalName.FunctionLogicalName</li> </ul></p><p> This function does not require that the wake up schedule is online at the time it is invoked. The returned object is nevertheless valid. Use the method <tt>YWakeUpSchedule.isOnline()</tt> to test if the wake up schedule is indeed online at a given time. In case of ambiguity when looking for a wake up schedule by logical name, no error is notified: the first instance found is returned. The search is performed first by hardware name, then by logical name.</p>',par:{func:'a string that uniquely characterizes the wake up schedule'},ret:'a <tt>YWakeUpSchedule</tt> object allowing you to drive the wake up schedule.'};
+doc['WakeUpSchedule']['FirstWakeUpSchedule']={syn:'Starts the enumeration of wake up schedules currently accessible.',lib:'YWakeUpSchedule.FirstWakeUpSchedule()',pro:'def FirstWakeUpSchedule()',cmt:'<p>Starts the enumeration of wake up schedules currently accessible. Use the method <tt>YWakeUpSchedule.nextWakeUpSchedule()</tt> to iterate on next wake up schedules.</p>',ret:'a pointer to a <tt>YWakeUpSchedule</tt> object, corresponding to the first wake up schedule currently online, or a <tt>null</tt> pointer if there are none.'};
+doc['WakeUpSchedule']['clearCache']={syn:'Invalidates the cache.',lib:'wakeupschedule.clearCache()',pro:'def clearCache()',cmt:'<p>Invalidates the cache. Invalidates the cache of the wake up schedule attributes. Forces the next call to get_xxx() or loadxxx() to use values that come from the device.</p>'};
+doc['WakeUpSchedule']['describe']={syn:'Returns a short text that describes unambiguously the instance of the wake up schedule in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'wakeupschedule.describe()',pro:'def describe()',cmt:'<p>Returns a short text that describes unambiguously the instance of the wake up schedule in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. More precisely, <tt>TYPE</tt> is the type of the function, <tt>NAME</tt> it the name used for the first access to the function, <tt>SERIAL</tt> is the serial number of the module if the module is connected or <tt>\x22unresolved\x22</tt>, and <tt>FUNCTIONID</tt> is the hardware identifier of the function if the module is connected. For example, this method returns <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> if the module is already connected or <tt>Relay(BadCustomeName.relay1)=unresolved</tt> if the module has not yet been connected. This method does not trigger any USB or TCP transaction and can therefore be used in a debugger.</p>',ret:'a string that describes the wake up schedule (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['WakeUpSchedule']['get_advertisedValue']={syn:'Returns the current value of the wake up schedule (no more than 6 characters).',lib:'wakeupschedule.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Returns the current value of the wake up schedule (no more than 6 characters).</p>',ret:'a string corresponding to the current value of the wake up schedule (no more than 6 characters).',ext:'On failure, throws an exception or returns <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['WakeUpSchedule']['get_errorMessage']={syn:'Returns the error message of the latest error with the wake up schedule.',lib:'wakeupschedule.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Returns the error message of the latest error with the wake up schedule. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a string corresponding to the latest error message that occured while using the wake up schedule object'};
+doc['WakeUpSchedule']['get_errorType']={syn:'Returns the numerical error code of the latest error with the wake up schedule.',lib:'wakeupschedule.get_errorType()',pro:'def get_errorType()',cmt:'<p>Returns the numerical error code of the latest error with the wake up schedule. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a number corresponding to the code of the latest error that occurred while using the wake up schedule object'};
+doc['WakeUpSchedule']['get_friendlyName']={syn:'Returns a global identifier of the wake up schedule in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>.',lib:'wakeupschedule.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Returns a global identifier of the wake up schedule in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>. The returned string uses the logical names of the module and of the wake up schedule if they are defined, otherwise the serial number of the module and the hardware identifier of the wake up schedule (for example: <tt>MyCustomName.relay1</tt>)</p>',ret:'a string that uniquely identifies the wake up schedule using logical names (ex: <tt>MyCustomName.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['WakeUpSchedule']['get_functionDescriptor']={syn:'Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function.',lib:'wakeupschedule.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function. This identifier can be used to test if two instances of <tt>YFunction</tt> reference the same physical function on the same physical device.</p>',ret:'an identifier of type <tt>YFUN_DESCR</tt>.',ext:'If the function has never been contacted, the returned value is <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>.'};
+doc['WakeUpSchedule']['get_functionId']={syn:'Returns the hardware identifier of the wake up schedule, without reference to the module.',lib:'wakeupschedule.get_functionId()',pro:'def get_functionId()',cmt:'<p>Returns the hardware identifier of the wake up schedule, without reference to the module. For example <tt>relay1</tt></p>',ret:'a string that identifies the wake up schedule (ex: <tt>relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['WakeUpSchedule']['get_hardwareId']={syn:'Returns the unique hardware identifier of the wake up schedule in the form <tt>SERIAL.FUNCTIONID</tt>.',lib:'wakeupschedule.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Returns the unique hardware identifier of the wake up schedule in the form <tt>SERIAL.FUNCTIONID</tt>. The unique hardware identifier is composed of the device serial number and of the hardware identifier of the wake up schedule (for example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'a string that uniquely identifies the wake up schedule (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['WakeUpSchedule']['get_hours']={syn:'Returns the hours scheduled for wake up.',lib:'wakeupschedule.get_hours()',pro:'def get_hours()',cmt:'<p>Returns the hours scheduled for wake up.</p>',ret:'an integer corresponding to the hours scheduled for wake up',ext:'On failure, throws an exception or returns <tt>Y_HOURS_INVALID</tt>.'};
+doc['WakeUpSchedule']['get_logicalName']={syn:'Returns the logical name of the wake up schedule.',lib:'wakeupschedule.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Returns the logical name of the wake up schedule.</p>',ret:'a string corresponding to the logical name of the wake up schedule.',ext:'On failure, throws an exception or returns <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['WakeUpSchedule']['get_minutes']={syn:'Returns all the minutes of each hour that are scheduled for wake up.',lib:'wakeupschedule.get_minutes()',pro:'def get_minutes()',cmt:'<p>Returns all the minutes of each hour that are scheduled for wake up.</p>'};
+doc['WakeUpSchedule']['get_minutesA']={syn:'Returns the minutes in the 00-29 interval of each hour scheduled for wake up.',lib:'wakeupschedule.get_minutesA()',pro:'def get_minutesA()',cmt:'<p>Returns the minutes in the 00-29 interval of each hour scheduled for wake up.</p>',ret:'an integer corresponding to the minutes in the 00-29 interval of each hour scheduled for wake up',ext:'On failure, throws an exception or returns <tt>Y_MINUTESA_INVALID</tt>.'};
+doc['WakeUpSchedule']['get_minutesB']={syn:'Returns the minutes in the 30-59 intervalof each hour scheduled for wake up.',lib:'wakeupschedule.get_minutesB()',pro:'def get_minutesB()',cmt:'<p>Returns the minutes in the 30-59 intervalof each hour scheduled for wake up.</p>',ret:'an integer corresponding to the minutes in the 30-59 intervalof each hour scheduled for wake up',ext:'On failure, throws an exception or returns <tt>Y_MINUTESB_INVALID</tt>.'};
+doc['WakeUpSchedule']['get_module']={syn:'Gets the <tt>YModule</tt> object for the device on which the function is located.',lib:'wakeupschedule.get_module()',pro:'def get_module()',cmt:'<p>Gets the <tt>YModule</tt> object for the device on which the function is located. If the function cannot be located on any module, the returned instance of <tt>YModule</tt> is not shown as on-line.</p>',ret:'an instance of <tt>YModule</tt>'};
+doc['WakeUpSchedule']['get_monthDays']={syn:'Returns the days of the month scheduled for wake up.',lib:'wakeupschedule.get_monthDays()',pro:'def get_monthDays()',cmt:'<p>Returns the days of the month scheduled for wake up.</p>',ret:'an integer corresponding to the days of the month scheduled for wake up',ext:'On failure, throws an exception or returns <tt>Y_MONTHDAYS_INVALID</tt>.'};
+doc['WakeUpSchedule']['get_months']={syn:'Returns the months scheduled for wake up.',lib:'wakeupschedule.get_months()',pro:'def get_months()',cmt:'<p>Returns the months scheduled for wake up.</p>',ret:'an integer corresponding to the months scheduled for wake up',ext:'On failure, throws an exception or returns <tt>Y_MONTHS_INVALID</tt>.'};
+doc['WakeUpSchedule']['get_nextOccurence']={syn:'Returns the date/time (seconds) of the next wake up occurence.',lib:'wakeupschedule.get_nextOccurence()',pro:'def get_nextOccurence()',cmt:'<p>Returns the date/time (seconds) of the next wake up occurence.</p>',ret:'an integer corresponding to the date/time (seconds) of the next wake up occurence',ext:'On failure, throws an exception or returns <tt>Y_NEXTOCCURENCE_INVALID</tt>.'};
+doc['WakeUpSchedule']['get_userData']={syn:'Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>.',lib:'wakeupschedule.get_userData()',pro:'def get_userData()',cmt:'<p>Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>. This attribute is never touched directly by the API, and is at disposal of the caller to store a context.</p>',ret:'the object stored previously by the caller.'};
+doc['WakeUpSchedule']['get_weekDays']={syn:'Returns the days of the week scheduled for wake up.',lib:'wakeupschedule.get_weekDays()',pro:'def get_weekDays()',cmt:'<p>Returns the days of the week scheduled for wake up.</p>',ret:'an integer corresponding to the days of the week scheduled for wake up',ext:'On failure, throws an exception or returns <tt>Y_WEEKDAYS_INVALID</tt>.'};
+doc['WakeUpSchedule']['isOnline']={syn:'Checks if the wake up schedule is currently reachable, without raising any error.',lib:'wakeupschedule.isOnline()',pro:'def isOnline()',cmt:'<p>Checks if the wake up schedule is currently reachable, without raising any error. If there is a cached value for the wake up schedule in cache, that has not yet expired, the device is considered reachable. No exception is raised if there is an error while trying to contact the device hosting the wake up schedule.</p>',ret:'<tt>true</tt> if the wake up schedule can be reached, and <tt>false</tt> otherwise'};
+doc['WakeUpSchedule']['load']={syn:'Preloads the wake up schedule cache with a specified validity duration.',lib:'wakeupschedule.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Preloads the wake up schedule cache with a specified validity duration. By default, whenever accessing a device, all function attributes are kept in cache for the standard duration (5 ms). This method can be used to temporarily mark the cache as valid for a longer period, in order to reduce network traffic for instance.</p>',par:{msValidity:'an integer corresponding to the validity attributed to the loaded function parameters, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['WakeUpSchedule']['loadAttribute']={syn:'Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.',lib:'wakeupschedule.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'On failure, throws an exception or returns an empty string.'};
+doc['WakeUpSchedule']['muteValueCallbacks']={syn:'Disable the propagation of every new advertised value to the parent hub.',lib:'wakeupschedule.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>Disable the propagation of every new advertised value to the parent hub. You can use this function to save bandwidth and CPU on computers with limited resources, or to prevent unwanted invocations of the HTTP callback. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['WakeUpSchedule']['nextWakeUpSchedule']={syn:'Continues the enumeration of wake up schedules started using <tt>yFirstWakeUpSchedule()</tt>.',lib:'wakeupschedule.nextWakeUpSchedule()',pro:'def nextWakeUpSchedule()',cmt:'<p>Continues the enumeration of wake up schedules started using <tt>yFirstWakeUpSchedule()</tt>.</p>',ret:'a pointer to a <tt>YWakeUpSchedule</tt> object, corresponding to a wake up schedule currently online, or a <tt>null</tt> pointer if there are no more wake up schedules to enumerate.'};
+doc['WakeUpSchedule']['registerValueCallback']={syn:'Registers the callback function that is invoked on every change of advertised value.',lib:'wakeupschedule.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every change of advertised value. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and the character string describing the new advertised value.'}};
+doc['WakeUpSchedule']['set_hours']={syn:'Changes the hours when a wake up must take place.',lib:'wakeupschedule.set_hours()',pro:'def set_hours(<span id=pn>newval</span>)',cmt:'<p>Changes the hours when a wake up must take place.</p>',par:{newval:'an integer corresponding to the hours when a wake up must take place'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['WakeUpSchedule']['set_logicalName']={syn:'Changes the logical name of the wake up schedule.',lib:'wakeupschedule.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Changes the logical name of the wake up schedule. You can use <tt>yCheckLogicalName()</tt> prior to this call to make sure that your parameter is valid. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the logical name of the wake up schedule.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['WakeUpSchedule']['set_minutes']={syn:'Changes all the minutes where a wake up must take place.',lib:'wakeupschedule.set_minutes()',pro:'def set_minutes(<span id=pn>bitmap</span>)',cmt:'<p>Changes all the minutes where a wake up must take place.</p>',par:{bitmap:'Minutes 00-59 of each hour scheduled for wake up.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['WakeUpSchedule']['set_minutesA']={syn:'Changes the minutes in the 00-29 interval when a wake up must take place.',lib:'wakeupschedule.set_minutesA()',pro:'def set_minutesA(<span id=pn>newval</span>)',cmt:'<p>Changes the minutes in the 00-29 interval when a wake up must take place.</p>',par:{newval:'an integer corresponding to the minutes in the 00-29 interval when a wake up must take place'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['WakeUpSchedule']['set_minutesB']={syn:'Changes the minutes in the 30-59 interval when a wake up must take place.',lib:'wakeupschedule.set_minutesB()',pro:'def set_minutesB(<span id=pn>newval</span>)',cmt:'<p>Changes the minutes in the 30-59 interval when a wake up must take place.</p>',par:{newval:'an integer corresponding to the minutes in the 30-59 interval when a wake up must take place'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['WakeUpSchedule']['set_monthDays']={syn:'Changes the days of the month when a wake up must take place.',lib:'wakeupschedule.set_monthDays()',pro:'def set_monthDays(<span id=pn>newval</span>)',cmt:'<p>Changes the days of the month when a wake up must take place.</p>',par:{newval:'an integer corresponding to the days of the month when a wake up must take place'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['WakeUpSchedule']['set_months']={syn:'Changes the months when a wake up must take place.',lib:'wakeupschedule.set_months()',pro:'def set_months(<span id=pn>newval</span>)',cmt:'<p>Changes the months when a wake up must take place.</p>',par:{newval:'an integer corresponding to the months when a wake up must take place'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['WakeUpSchedule']['set_userData']={syn:'Stores a user context provided as argument in the userData attribute of the function.',lib:'wakeupschedule.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Stores a user context provided as argument in the userData attribute of the function. This attribute is never touched by the API, and is at disposal of the caller to store a context.</p>',par:{data:'any kind of object to be stored'}};
+doc['WakeUpSchedule']['set_weekDays']={syn:'Changes the days of the week when a wake up must take place.',lib:'wakeupschedule.set_weekDays()',pro:'def set_weekDays(<span id=pn>newval</span>)',cmt:'<p>Changes the days of the week when a wake up must take place.</p>',par:{newval:'an integer corresponding to the days of the week when a wake up must take place'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['WakeUpSchedule']['unmuteValueCallbacks']={syn:'Re-enable the propagation of every new advertised value to the parent hub.',lib:'wakeupschedule.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>Re-enable the propagation of every new advertised value to the parent hub. This function reverts the effect of a previous call to <tt>muteValueCallbacks()</tt>. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+//--- (end of generated code: WakeUpSchedule)
+//--- (generated code: GenericSensor)
+doc['GenericSensor']={'':{syn:'GenericSensor function interface',inc:'from yocto_genericsensor import *',cmt:'<p>The YGenericSensor class allows you to read and configure Yoctopuce signal transducers. It inherits from YSensor class the core functions to read measurements, register callback functions, access to the autonomous datalogger. This class adds the ability to configure the automatic conversion between the measured signal and the corresponding engineering unit.</p>'}};
+doc['GenericSensor']['FindGenericSensor']={syn:'Retrieves a generic sensor for a given identifier.',lib:'YGenericSensor.FindGenericSensor()',pro:'def FindGenericSensor(<span id=pn>func</span>)',cmt:'<p>Retrieves a generic sensor for a given identifier. The identifier can be specified using several formats:<br> <ul> <li>FunctionLogicalName</li> <li>ModuleSerialNumber.FunctionIdentifier</li> <li>ModuleSerialNumber.FunctionLogicalName</li> <li>ModuleLogicalName.FunctionIdentifier</li> <li>ModuleLogicalName.FunctionLogicalName</li> </ul></p><p> This function does not require that the generic sensor is online at the time it is invoked. The returned object is nevertheless valid. Use the method <tt>YGenericSensor.isOnline()</tt> to test if the generic sensor is indeed online at a given time. In case of ambiguity when looking for a generic sensor by logical name, no error is notified: the first instance found is returned. The search is performed first by hardware name, then by logical name.</p>',par:{func:'a string that uniquely characterizes the generic sensor'},ret:'a <tt>YGenericSensor</tt> object allowing you to drive the generic sensor.'};
+doc['GenericSensor']['FirstGenericSensor']={syn:'Starts the enumeration of generic sensors currently accessible.',lib:'YGenericSensor.FirstGenericSensor()',pro:'def FirstGenericSensor()',cmt:'<p>Starts the enumeration of generic sensors currently accessible. Use the method <tt>YGenericSensor.nextGenericSensor()</tt> to iterate on next generic sensors.</p>',ret:'a pointer to a <tt>YGenericSensor</tt> object, corresponding to the first generic sensor currently online, or a <tt>null</tt> pointer if there are none.'};
+doc['GenericSensor']['calibrateFromPoints']={syn:'Configures error correction data points, in particular to compensate for a possible perturbation of the measure caused by an enclosure.',lib:'genericsensor.calibrateFromPoints()',pro:'def calibrateFromPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Configures error correction data points, in particular to compensate for a possible perturbation of the measure caused by an enclosure. It is possible to configure up to five correction points. Correction points must be provided in ascending order, and be in the range of the sensor. The device will automatically perform a linear interpolation of the error correction between specified points. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p><p> For more information on advanced capabilities to refine the calibration of sensors, please contact support@yoctopuce.com.</p>',par:{rawValues:'array of floating point numbers, corresponding to the raw values returned by the sensor for the correction points.',refValues:'array of floating point numbers, corresponding to the corrected values for the correction points.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['GenericSensor']['clearCache']={syn:'Invalidates the cache.',lib:'genericsensor.clearCache()',pro:'def clearCache()',cmt:'<p>Invalidates the cache. Invalidates the cache of the generic sensor attributes. Forces the next call to get_xxx() or loadxxx() to use values that come from the device.</p>'};
+doc['GenericSensor']['describe']={syn:'Returns a short text that describes unambiguously the instance of the generic sensor in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'genericsensor.describe()',pro:'def describe()',cmt:'<p>Returns a short text that describes unambiguously the instance of the generic sensor in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. More precisely, <tt>TYPE</tt> is the type of the function, <tt>NAME</tt> it the name used for the first access to the function, <tt>SERIAL</tt> is the serial number of the module if the module is connected or <tt>\x22unresolved\x22</tt>, and <tt>FUNCTIONID</tt> is the hardware identifier of the function if the module is connected. For example, this method returns <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> if the module is already connected or <tt>Relay(BadCustomeName.relay1)=unresolved</tt> if the module has not yet been connected. This method does not trigger any USB or TCP transaction and can therefore be used in a debugger.</p>',ret:'a string that describes the generic sensor (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['GenericSensor']['get_advertisedValue']={syn:'Returns the current value of the generic sensor (no more than 6 characters).',lib:'genericsensor.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Returns the current value of the generic sensor (no more than 6 characters).</p>',ret:'a string corresponding to the current value of the generic sensor (no more than 6 characters).',ext:'On failure, throws an exception or returns <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['GenericSensor']['get_currentRawValue']={syn:'Returns the uncalibrated, unrounded raw value returned by the sensor.',lib:'genericsensor.get_currentRawValue()',pro:'def get_currentRawValue()',cmt:'<p>Returns the uncalibrated, unrounded raw value returned by the sensor.</p>',ret:'a floating point number corresponding to the uncalibrated, unrounded raw value returned by the sensor',ext:'On failure, throws an exception or returns <tt>Y_CURRENTRAWVALUE_INVALID</tt>.'};
+doc['GenericSensor']['get_currentValue']={syn:'Returns the current measured value.',lib:'genericsensor.get_currentValue()',pro:'def get_currentValue()',cmt:'<p>Returns the current measured value.</p>',ret:'a floating point number corresponding to the current measured value',ext:'On failure, throws an exception or returns <tt>Y_CURRENTVALUE_INVALID</tt>.'};
+doc['GenericSensor']['get_errorMessage']={syn:'Returns the error message of the latest error with the generic sensor.',lib:'genericsensor.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Returns the error message of the latest error with the generic sensor. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a string corresponding to the latest error message that occured while using the generic sensor object'};
+doc['GenericSensor']['get_errorType']={syn:'Returns the numerical error code of the latest error with the generic sensor.',lib:'genericsensor.get_errorType()',pro:'def get_errorType()',cmt:'<p>Returns the numerical error code of the latest error with the generic sensor. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a number corresponding to the code of the latest error that occurred while using the generic sensor object'};
+doc['GenericSensor']['get_friendlyName']={syn:'Returns a global identifier of the generic sensor in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>.',lib:'genericsensor.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Returns a global identifier of the generic sensor in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>. The returned string uses the logical names of the module and of the generic sensor if they are defined, otherwise the serial number of the module and the hardware identifier of the generic sensor (for example: <tt>MyCustomName.relay1</tt>)</p>',ret:'a string that uniquely identifies the generic sensor using logical names (ex: <tt>MyCustomName.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['GenericSensor']['get_functionDescriptor']={syn:'Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function.',lib:'genericsensor.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function. This identifier can be used to test if two instances of <tt>YFunction</tt> reference the same physical function on the same physical device.</p>',ret:'an identifier of type <tt>YFUN_DESCR</tt>.',ext:'If the function has never been contacted, the returned value is <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>.'};
+doc['GenericSensor']['get_functionId']={syn:'Returns the hardware identifier of the generic sensor, without reference to the module.',lib:'genericsensor.get_functionId()',pro:'def get_functionId()',cmt:'<p>Returns the hardware identifier of the generic sensor, without reference to the module. For example <tt>relay1</tt></p>',ret:'a string that identifies the generic sensor (ex: <tt>relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['GenericSensor']['get_hardwareId']={syn:'Returns the unique hardware identifier of the generic sensor in the form <tt>SERIAL.FUNCTIONID</tt>.',lib:'genericsensor.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Returns the unique hardware identifier of the generic sensor in the form <tt>SERIAL.FUNCTIONID</tt>. The unique hardware identifier is composed of the device serial number and of the hardware identifier of the generic sensor (for example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'a string that uniquely identifies the generic sensor (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['GenericSensor']['get_highestValue']={syn:'Returns the maximal value observed for the measure since the device was started.',lib:'genericsensor.get_highestValue()',pro:'def get_highestValue()',cmt:'<p>Returns the maximal value observed for the measure since the device was started.</p>',ret:'a floating point number corresponding to the maximal value observed for the measure since the device was started',ext:'On failure, throws an exception or returns <tt>Y_HIGHESTVALUE_INVALID</tt>.'};
+doc['GenericSensor']['get_logFrequency']={syn:'Returns the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory.',lib:'genericsensor.get_logFrequency()',pro:'def get_logFrequency()',cmt:'<p>Returns the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory.</p>',ret:'a string corresponding to the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory',ext:'On failure, throws an exception or returns <tt>Y_LOGFREQUENCY_INVALID</tt>.'};
+doc['GenericSensor']['get_logicalName']={syn:'Returns the logical name of the generic sensor.',lib:'genericsensor.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Returns the logical name of the generic sensor.</p>',ret:'a string corresponding to the logical name of the generic sensor.',ext:'On failure, throws an exception or returns <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['GenericSensor']['get_lowestValue']={syn:'Returns the minimal value observed for the measure since the device was started.',lib:'genericsensor.get_lowestValue()',pro:'def get_lowestValue()',cmt:'<p>Returns the minimal value observed for the measure since the device was started.</p>',ret:'a floating point number corresponding to the minimal value observed for the measure since the device was started',ext:'On failure, throws an exception or returns <tt>Y_LOWESTVALUE_INVALID</tt>.'};
+doc['GenericSensor']['get_module']={syn:'Gets the <tt>YModule</tt> object for the device on which the function is located.',lib:'genericsensor.get_module()',pro:'def get_module()',cmt:'<p>Gets the <tt>YModule</tt> object for the device on which the function is located. If the function cannot be located on any module, the returned instance of <tt>YModule</tt> is not shown as on-line.</p>',ret:'an instance of <tt>YModule</tt>'};
+doc['GenericSensor']['get_recordedData']={syn:'Retrieves a DataSet object holding historical data for this sensor, for a specified time interval.',lib:'genericsensor.get_recordedData()',pro:'def get_recordedData(<span id=pn>startTime</span>, <span id=pn>endTime</span>)',cmt:'<p>Retrieves a DataSet object holding historical data for this sensor, for a specified time interval. The measures will be retrieved from the data logger, which must have been turned on at the desired time. See the documentation of the DataSet class for information on how to get an overview of the recorded data, and how to load progressively a large set of measures from the data logger.</p><p> This function only works if the device uses a recent firmware, as DataSet objects are not supported by firmwares older than version 13000.</p>',par:{startTime:'the start of the desired measure time interval, as a Unix timestamp, i.e. the number of seconds since January 1, 1970 UTC. The special value 0 can be used to include any meaasure, without initial limit.',endTime:'the end of the desired measure time interval, as a Unix timestamp, i.e. the number of seconds since January 1, 1970 UTC. The special value 0 can be used to include any meaasure, without ending limit.'},ret:'an instance of YDataSet, providing access to historical data. Past measures can be loaded progressively using methods from the YDataSet object.'};
+doc['GenericSensor']['get_reportFrequency']={syn:'Returns the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function.',lib:'genericsensor.get_reportFrequency()',pro:'def get_reportFrequency()',cmt:'<p>Returns the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function.</p>',ret:'a string corresponding to the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function',ext:'On failure, throws an exception or returns <tt>Y_REPORTFREQUENCY_INVALID</tt>.'};
+doc['GenericSensor']['get_resolution']={syn:'Returns the resolution of the measured values.',lib:'genericsensor.get_resolution()',pro:'def get_resolution()',cmt:'<p>Returns the resolution of the measured values. The resolution corresponds to the numerical precision of the measures, which is not always the same as the actual precision of the sensor.</p>',ret:'a floating point number corresponding to the resolution of the measured values',ext:'On failure, throws an exception or returns <tt>Y_RESOLUTION_INVALID</tt>.'};
+doc['GenericSensor']['get_sensorState']={syn:'Returns the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now.',lib:'genericsensor.get_sensorState()',pro:'def get_sensorState()',cmt:'<p>Returns the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now.</p>',ret:'an integer corresponding to the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now',ext:'On failure, throws an exception or returns <tt>Y_SENSORSTATE_INVALID</tt>.'};
+doc['GenericSensor']['get_signalBias']={syn:'Returns the electric signal bias for zero shift adjustment.',lib:'genericsensor.get_signalBias()',pro:'def get_signalBias()',cmt:'<p>Returns the electric signal bias for zero shift adjustment. A positive bias means that the signal is over-reporting the measure, while a negative bias means that the signal is underreporting the measure.</p>',ret:'a floating point number corresponding to the electric signal bias for zero shift adjustment',ext:'On failure, throws an exception or returns <tt>Y_SIGNALBIAS_INVALID</tt>.'};
+doc['GenericSensor']['get_signalRange']={syn:'Returns the electric signal range used by the sensor.',lib:'genericsensor.get_signalRange()',pro:'def get_signalRange()',cmt:'<p>Returns the electric signal range used by the sensor.</p>',ret:'a string corresponding to the electric signal range used by the sensor',ext:'On failure, throws an exception or returns <tt>Y_SIGNALRANGE_INVALID</tt>.'};
+doc['GenericSensor']['get_signalSampling']={syn:'Returns the electric signal sampling method to use.',lib:'genericsensor.get_signalSampling()',pro:'def get_signalSampling()',cmt:'<p>Returns the electric signal sampling method to use. The <tt>HIGH_RATE</tt> method uses the highest sampling frequency, without any filtering. The <tt>HIGH_RATE_FILTERED</tt> method adds a windowed 7-sample median filter. The <tt>LOW_NOISE</tt> method uses a reduced acquisition frequency to reduce noise. The <tt>LOW_NOISE_FILTERED</tt> method combines a reduced frequency with the median filter to get measures as stable as possible when working on a noisy signal.</p>',ret:'a value among <tt>Y_SIGNALSAMPLING_HIGH_RATE</tt>, <tt>Y_SIGNALSAMPLING_HIGH_RATE_FILTERED</tt>, <tt>Y_SIGNALSAMPLING_LOW_NOISE</tt> and <tt>Y_SIGNALSAMPLING_LOW_NOISE_FILTERED</tt> corresponding to the electric signal sampling method to use',ext:'On failure, throws an exception or returns <tt>Y_SIGNALSAMPLING_INVALID</tt>.'};
+doc['GenericSensor']['get_signalUnit']={syn:'Returns the measuring unit of the electrical signal used by the sensor.',lib:'genericsensor.get_signalUnit()',pro:'def get_signalUnit()',cmt:'<p>Returns the measuring unit of the electrical signal used by the sensor.</p>',ret:'a string corresponding to the measuring unit of the electrical signal used by the sensor',ext:'On failure, throws an exception or returns <tt>Y_SIGNALUNIT_INVALID</tt>.'};
+doc['GenericSensor']['get_signalValue']={syn:'Returns the current value of the electrical signal measured by the sensor.',lib:'genericsensor.get_signalValue()',pro:'def get_signalValue()',cmt:'<p>Returns the current value of the electrical signal measured by the sensor.</p>',ret:'a floating point number corresponding to the current value of the electrical signal measured by the sensor',ext:'On failure, throws an exception or returns <tt>Y_SIGNALVALUE_INVALID</tt>.'};
+doc['GenericSensor']['get_unit']={syn:'Returns the measuring unit for the measure.',lib:'genericsensor.get_unit()',pro:'def get_unit()',cmt:'<p>Returns the measuring unit for the measure.</p>',ret:'a string corresponding to the measuring unit for the measure',ext:'On failure, throws an exception or returns <tt>Y_UNIT_INVALID</tt>.'};
+doc['GenericSensor']['get_userData']={syn:'Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>.',lib:'genericsensor.get_userData()',pro:'def get_userData()',cmt:'<p>Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>. This attribute is never touched directly by the API, and is at disposal of the caller to store a context.</p>',ret:'the object stored previously by the caller.'};
+doc['GenericSensor']['get_valueRange']={syn:'Returns the physical value range measured by the sensor.',lib:'genericsensor.get_valueRange()',pro:'def get_valueRange()',cmt:'<p>Returns the physical value range measured by the sensor.</p>',ret:'a string corresponding to the physical value range measured by the sensor',ext:'On failure, throws an exception or returns <tt>Y_VALUERANGE_INVALID</tt>.'};
+doc['GenericSensor']['isOnline']={syn:'Checks if the generic sensor is currently reachable, without raising any error.',lib:'genericsensor.isOnline()',pro:'def isOnline()',cmt:'<p>Checks if the generic sensor is currently reachable, without raising any error. If there is a cached value for the generic sensor in cache, that has not yet expired, the device is considered reachable. No exception is raised if there is an error while trying to contact the device hosting the generic sensor.</p>',ret:'<tt>true</tt> if the generic sensor can be reached, and <tt>false</tt> otherwise'};
+doc['GenericSensor']['load']={syn:'Preloads the generic sensor cache with a specified validity duration.',lib:'genericsensor.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Preloads the generic sensor cache with a specified validity duration. By default, whenever accessing a device, all function attributes are kept in cache for the standard duration (5 ms). This method can be used to temporarily mark the cache as valid for a longer period, in order to reduce network traffic for instance.</p>',par:{msValidity:'an integer corresponding to the validity attributed to the loaded function parameters, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['GenericSensor']['loadAttribute']={syn:'Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.',lib:'genericsensor.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'On failure, throws an exception or returns an empty string.'};
+doc['GenericSensor']['loadCalibrationPoints']={syn:'Retrieves error correction data points previously entered using the method <tt>calibrateFromPoints</tt>.',lib:'genericsensor.loadCalibrationPoints()',pro:'def loadCalibrationPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Retrieves error correction data points previously entered using the method <tt>calibrateFromPoints</tt>.</p>',par:{rawValues:'array of floating point numbers, that will be filled by the function with the raw sensor values for the correction points.',refValues:'array of floating point numbers, that will be filled by the function with the desired values for the correction points.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['GenericSensor']['muteValueCallbacks']={syn:'Disable the propagation of every new advertised value to the parent hub.',lib:'genericsensor.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>Disable the propagation of every new advertised value to the parent hub. You can use this function to save bandwidth and CPU on computers with limited resources, or to prevent unwanted invocations of the HTTP callback. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['GenericSensor']['nextGenericSensor']={syn:'Continues the enumeration of generic sensors started using <tt>yFirstGenericSensor()</tt>.',lib:'genericsensor.nextGenericSensor()',pro:'def nextGenericSensor()',cmt:'<p>Continues the enumeration of generic sensors started using <tt>yFirstGenericSensor()</tt>.</p>',ret:'a pointer to a <tt>YGenericSensor</tt> object, corresponding to a generic sensor currently online, or a <tt>null</tt> pointer if there are no more generic sensors to enumerate.'};
+doc['GenericSensor']['registerTimedReportCallback']={syn:'Registers the callback function that is invoked on every periodic timed notification.',lib:'genericsensor.registerTimedReportCallback()',pro:'def registerTimedReportCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every periodic timed notification. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and an YMeasure object describing the new advertised value.'}};
+doc['GenericSensor']['registerValueCallback']={syn:'Registers the callback function that is invoked on every change of advertised value.',lib:'genericsensor.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every change of advertised value. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and the character string describing the new advertised value.'}};
+doc['GenericSensor']['set_highestValue']={syn:'Changes the recorded maximal value observed.',lib:'genericsensor.set_highestValue()',pro:'def set_highestValue(<span id=pn>newval</span>)',cmt:'<p>Changes the recorded maximal value observed.</p>',par:{newval:'a floating point number corresponding to the recorded maximal value observed'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['GenericSensor']['set_logFrequency']={syn:'Changes the datalogger recording frequency for this function.',lib:'genericsensor.set_logFrequency()',pro:'def set_logFrequency(<span id=pn>newval</span>)',cmt:'<p>Changes the datalogger recording frequency for this function. The frequency can be specified as samples per second, as sample per minute (for instance \x2215/m\x22) or in samples per hour (eg. \x224/h\x22). To disable recording for this function, use the value \x22OFF\x22.</p>',par:{newval:'a string corresponding to the datalogger recording frequency for this function'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['GenericSensor']['set_logicalName']={syn:'Changes the logical name of the generic sensor.',lib:'genericsensor.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Changes the logical name of the generic sensor. You can use <tt>yCheckLogicalName()</tt> prior to this call to make sure that your parameter is valid. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the logical name of the generic sensor.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['GenericSensor']['set_lowestValue']={syn:'Changes the recorded minimal value observed.',lib:'genericsensor.set_lowestValue()',pro:'def set_lowestValue(<span id=pn>newval</span>)',cmt:'<p>Changes the recorded minimal value observed.</p>',par:{newval:'a floating point number corresponding to the recorded minimal value observed'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['GenericSensor']['set_reportFrequency']={syn:'Changes the timed value notification frequency for this function.',lib:'genericsensor.set_reportFrequency()',pro:'def set_reportFrequency(<span id=pn>newval</span>)',cmt:'<p>Changes the timed value notification frequency for this function. The frequency can be specified as samples per second, as sample per minute (for instance \x2215/m\x22) or in samples per hour (eg. \x224/h\x22). To disable timed value notifications for this function, use the value \x22OFF\x22.</p>',par:{newval:'a string corresponding to the timed value notification frequency for this function'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['GenericSensor']['set_resolution']={syn:'Changes the resolution of the measured physical values.',lib:'genericsensor.set_resolution()',pro:'def set_resolution(<span id=pn>newval</span>)',cmt:'<p>Changes the resolution of the measured physical values. The resolution corresponds to the numerical precision when displaying value. It does not change the precision of the measure itself.</p>',par:{newval:'a floating point number corresponding to the resolution of the measured physical values'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['GenericSensor']['set_signalBias']={syn:'Changes the electric signal bias for zero shift adjustment.',lib:'genericsensor.set_signalBias()',pro:'def set_signalBias(<span id=pn>newval</span>)',cmt:'<p>Changes the electric signal bias for zero shift adjustment. If your electric signal reads positif when it should be zero, setup a positive signalBias of the same value to fix the zero shift.</p>',par:{newval:'a floating point number corresponding to the electric signal bias for zero shift adjustment'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['GenericSensor']['set_signalRange']={syn:'Changes the electric signal range used by the sensor.',lib:'genericsensor.set_signalRange()',pro:'def set_signalRange(<span id=pn>newval</span>)',cmt:'<p>Changes the electric signal range used by the sensor.</p>',par:{newval:'a string corresponding to the electric signal range used by the sensor'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['GenericSensor']['set_signalSampling']={syn:'Changes the electric signal sampling method to use.',lib:'genericsensor.set_signalSampling()',pro:'def set_signalSampling(<span id=pn>newval</span>)',cmt:'<p>Changes the electric signal sampling method to use. The <tt>HIGH_RATE</tt> method uses the highest sampling frequency, without any filtering. The <tt>HIGH_RATE_FILTERED</tt> method adds a windowed 7-sample median filter. The <tt>LOW_NOISE</tt> method uses a reduced acquisition frequency to reduce noise. The <tt>LOW_NOISE_FILTERED</tt> method combines a reduced frequency with the median filter to get measures as stable as possible when working on a noisy signal.</p>',par:{newval:'a value among <tt>Y_SIGNALSAMPLING_HIGH_RATE</tt>, <tt>Y_SIGNALSAMPLING_HIGH_RATE_FILTERED</tt>, <tt>Y_SIGNALSAMPLING_LOW_NOISE</tt> and <tt>Y_SIGNALSAMPLING_LOW_NOISE_FILTERED</tt> corresponding to the electric signal sampling method to use'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['GenericSensor']['set_unit']={syn:'Changes the measuring unit for the measured value.',lib:'genericsensor.set_unit()',pro:'def set_unit(<span id=pn>newval</span>)',cmt:'<p>Changes the measuring unit for the measured value. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the measuring unit for the measured value'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['GenericSensor']['set_userData']={syn:'Stores a user context provided as argument in the userData attribute of the function.',lib:'genericsensor.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Stores a user context provided as argument in the userData attribute of the function. This attribute is never touched by the API, and is at disposal of the caller to store a context.</p>',par:{data:'any kind of object to be stored'}};
+doc['GenericSensor']['set_valueRange']={syn:'Changes the physical value range measured by the sensor.',lib:'genericsensor.set_valueRange()',pro:'def set_valueRange(<span id=pn>newval</span>)',cmt:'<p>Changes the physical value range measured by the sensor. As a side effect, the range modification may automatically modify the display resolution.</p>',par:{newval:'a string corresponding to the physical value range measured by the sensor'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['GenericSensor']['startDataLogger']={syn:'Starts the data logger on the device.',lib:'genericsensor.startDataLogger()',pro:'def startDataLogger()',cmt:'<p>Starts the data logger on the device. Note that the data logger will only save the measures on this sensor if the logFrequency is not set to \x22OFF\x22.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.'};
+doc['GenericSensor']['stopDataLogger']={syn:'Stops the datalogger on the device.',lib:'genericsensor.stopDataLogger()',pro:'def stopDataLogger()',cmt:'<p>Stops the datalogger on the device.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.'};
+doc['GenericSensor']['unmuteValueCallbacks']={syn:'Re-enable the propagation of every new advertised value to the parent hub.',lib:'genericsensor.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>Re-enable the propagation of every new advertised value to the parent hub. This function reverts the effect of a previous call to <tt>muteValueCallbacks()</tt>. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['GenericSensor']['zeroAdjust']={syn:'Adjusts the signal bias so that the current signal value is need precisely as zero.',lib:'genericsensor.zeroAdjust()',pro:'def zeroAdjust()',cmt:'<p>Adjusts the signal bias so that the current signal value is need precisely as zero.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+//--- (end of generated code: GenericSensor)
+//--- (generated code: DigitalIO)
+doc['DigitalIO']={'':{syn:'Digital IO function interface',inc:'from yocto_digitalio import *',cmt:'<p>The Yoctopuce application programming interface allows you to switch the state of each bit of the I/O port. You can switch all bits at once, or one by one. The library can also automatically generate short pulses of a determined duration. Electrical behavior of each I/O can be modified (open drain and reverse polarity).</p>'}};
+doc['DigitalIO']['FindDigitalIO']={syn:'Retrieves a digital IO port for a given identifier.',lib:'YDigitalIO.FindDigitalIO()',pro:'def FindDigitalIO(<span id=pn>func</span>)',cmt:'<p>Retrieves a digital IO port for a given identifier. The identifier can be specified using several formats:<br> <ul> <li>FunctionLogicalName</li> <li>ModuleSerialNumber.FunctionIdentifier</li> <li>ModuleSerialNumber.FunctionLogicalName</li> <li>ModuleLogicalName.FunctionIdentifier</li> <li>ModuleLogicalName.FunctionLogicalName</li> </ul></p><p> This function does not require that the digital IO port is online at the time it is invoked. The returned object is nevertheless valid. Use the method <tt>YDigitalIO.isOnline()</tt> to test if the digital IO port is indeed online at a given time. In case of ambiguity when looking for a digital IO port by logical name, no error is notified: the first instance found is returned. The search is performed first by hardware name, then by logical name.</p>',par:{func:'a string that uniquely characterizes the digital IO port'},ret:'a <tt>YDigitalIO</tt> object allowing you to drive the digital IO port.'};
+doc['DigitalIO']['FirstDigitalIO']={syn:'Starts the enumeration of digital IO ports currently accessible.',lib:'YDigitalIO.FirstDigitalIO()',pro:'def FirstDigitalIO()',cmt:'<p>Starts the enumeration of digital IO ports currently accessible. Use the method <tt>YDigitalIO.nextDigitalIO()</tt> to iterate on next digital IO ports.</p>',ret:'a pointer to a <tt>YDigitalIO</tt> object, corresponding to the first digital IO port currently online, or a <tt>null</tt> pointer if there are none.'};
+doc['DigitalIO']['clearCache']={syn:'Invalidates the cache.',lib:'digitalio.clearCache()',pro:'def clearCache()',cmt:'<p>Invalidates the cache. Invalidates the cache of the digital IO port attributes. Forces the next call to get_xxx() or loadxxx() to use values that come from the device.</p>'};
+doc['DigitalIO']['delayedPulse']={syn:'Schedules a pulse on a single bit for a specified duration.',lib:'digitalio.delayedPulse()',pro:'def delayedPulse(<span id=pn>bitno</span>, <span id=pn>ms_delay</span>, <span id=pn>ms_duration</span>)',cmt:'<p>Schedules a pulse on a single bit for a specified duration. The specified bit will be turned to 1, and then back to 0 after the given duration.</p>',par:{bitno:'the bit number; lowest bit has index 0',ms_delay:'waiting time before the pulse, in milliseconds',ms_duration:'desired pulse duration in milliseconds. Be aware that the device time resolution is not guaranteed up to the millisecond.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['DigitalIO']['describe']={syn:'Returns a short text that describes unambiguously the instance of the digital IO port in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'digitalio.describe()',pro:'def describe()',cmt:'<p>Returns a short text that describes unambiguously the instance of the digital IO port in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. More precisely, <tt>TYPE</tt> is the type of the function, <tt>NAME</tt> it the name used for the first access to the function, <tt>SERIAL</tt> is the serial number of the module if the module is connected or <tt>\x22unresolved\x22</tt>, and <tt>FUNCTIONID</tt> is the hardware identifier of the function if the module is connected. For example, this method returns <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> if the module is already connected or <tt>Relay(BadCustomeName.relay1)=unresolved</tt> if the module has not yet been connected. This method does not trigger any USB or TCP transaction and can therefore be used in a debugger.</p>',ret:'a string that describes the digital IO port (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['DigitalIO']['get_advertisedValue']={syn:'Returns the current value of the digital IO port (no more than 6 characters).',lib:'digitalio.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Returns the current value of the digital IO port (no more than 6 characters).</p>',ret:'a string corresponding to the current value of the digital IO port (no more than 6 characters).',ext:'On failure, throws an exception or returns <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['DigitalIO']['get_bitDirection']={syn:'Returns the direction of a single bit from the I/O port (0 means the bit is an input, 1 an output).',lib:'digitalio.get_bitDirection()',pro:'def get_bitDirection(<span id=pn>bitno</span>)',cmt:'<p>Returns the direction of a single bit from the I/O port (0 means the bit is an input, 1 an output).</p>',par:{bitno:'the bit number; lowest bit has index 0'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['DigitalIO']['get_bitOpenDrain']={syn:'Returns the type of electrical interface of a single bit from the I/O port.',lib:'digitalio.get_bitOpenDrain()',pro:'def get_bitOpenDrain(<span id=pn>bitno</span>)',cmt:'<p>Returns the type of electrical interface of a single bit from the I/O port. (0 means the bit is an input, 1 an output).</p>',par:{bitno:'the bit number; lowest bit has index 0'},ret:'0 means the a bit is a regular input/output, 1 means the bit is an open-drain (open-collector) input/output.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['DigitalIO']['get_bitPolarity']={syn:'Returns the polarity of a single bit from the I/O port (0 means the I/O works in regular mode, 1 means the I/O works in reverse mode).',lib:'digitalio.get_bitPolarity()',pro:'def get_bitPolarity(<span id=pn>bitno</span>)',cmt:'<p>Returns the polarity of a single bit from the I/O port (0 means the I/O works in regular mode, 1 means the I/O works in reverse mode).</p>',par:{bitno:'the bit number; lowest bit has index 0'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['DigitalIO']['get_bitState']={syn:'Returns the state of a single bit of the I/O port.',lib:'digitalio.get_bitState()',pro:'def get_bitState(<span id=pn>bitno</span>)',cmt:'<p>Returns the state of a single bit of the I/O port.</p>',par:{bitno:'the bit number; lowest bit has index 0'},ret:'the bit state (0 or 1)',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['DigitalIO']['get_errorMessage']={syn:'Returns the error message of the latest error with the digital IO port.',lib:'digitalio.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Returns the error message of the latest error with the digital IO port. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a string corresponding to the latest error message that occured while using the digital IO port object'};
+doc['DigitalIO']['get_errorType']={syn:'Returns the numerical error code of the latest error with the digital IO port.',lib:'digitalio.get_errorType()',pro:'def get_errorType()',cmt:'<p>Returns the numerical error code of the latest error with the digital IO port. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a number corresponding to the code of the latest error that occurred while using the digital IO port object'};
+doc['DigitalIO']['get_friendlyName']={syn:'Returns a global identifier of the digital IO port in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>.',lib:'digitalio.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Returns a global identifier of the digital IO port in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>. The returned string uses the logical names of the module and of the digital IO port if they are defined, otherwise the serial number of the module and the hardware identifier of the digital IO port (for example: <tt>MyCustomName.relay1</tt>)</p>',ret:'a string that uniquely identifies the digital IO port using logical names (ex: <tt>MyCustomName.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['DigitalIO']['get_functionDescriptor']={syn:'Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function.',lib:'digitalio.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function. This identifier can be used to test if two instances of <tt>YFunction</tt> reference the same physical function on the same physical device.</p>',ret:'an identifier of type <tt>YFUN_DESCR</tt>.',ext:'If the function has never been contacted, the returned value is <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>.'};
+doc['DigitalIO']['get_functionId']={syn:'Returns the hardware identifier of the digital IO port, without reference to the module.',lib:'digitalio.get_functionId()',pro:'def get_functionId()',cmt:'<p>Returns the hardware identifier of the digital IO port, without reference to the module. For example <tt>relay1</tt></p>',ret:'a string that identifies the digital IO port (ex: <tt>relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['DigitalIO']['get_hardwareId']={syn:'Returns the unique hardware identifier of the digital IO port in the form <tt>SERIAL.FUNCTIONID</tt>.',lib:'digitalio.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Returns the unique hardware identifier of the digital IO port in the form <tt>SERIAL.FUNCTIONID</tt>. The unique hardware identifier is composed of the device serial number and of the hardware identifier of the digital IO port (for example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'a string that uniquely identifies the digital IO port (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['DigitalIO']['get_logicalName']={syn:'Returns the logical name of the digital IO port.',lib:'digitalio.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Returns the logical name of the digital IO port.</p>',ret:'a string corresponding to the logical name of the digital IO port.',ext:'On failure, throws an exception or returns <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['DigitalIO']['get_module']={syn:'Gets the <tt>YModule</tt> object for the device on which the function is located.',lib:'digitalio.get_module()',pro:'def get_module()',cmt:'<p>Gets the <tt>YModule</tt> object for the device on which the function is located. If the function cannot be located on any module, the returned instance of <tt>YModule</tt> is not shown as on-line.</p>',ret:'an instance of <tt>YModule</tt>'};
+doc['DigitalIO']['get_outputVoltage']={syn:'Returns the voltage source used to drive output bits.',lib:'digitalio.get_outputVoltage()',pro:'def get_outputVoltage()',cmt:'<p>Returns the voltage source used to drive output bits.</p>',ret:'a value among <tt>Y_OUTPUTVOLTAGE_USB_5V</tt>, <tt>Y_OUTPUTVOLTAGE_USB_3V</tt> and <tt>Y_OUTPUTVOLTAGE_EXT_V</tt> corresponding to the voltage source used to drive output bits',ext:'On failure, throws an exception or returns <tt>Y_OUTPUTVOLTAGE_INVALID</tt>.'};
+doc['DigitalIO']['get_portDirection']={syn:'Returns the IO direction of all bits of the port: 0 makes a bit an input, 1 makes it an output.',lib:'digitalio.get_portDirection()',pro:'def get_portDirection()',cmt:'<p>Returns the IO direction of all bits of the port: 0 makes a bit an input, 1 makes it an output.</p>',ret:'an integer corresponding to the IO direction of all bits of the port: 0 makes a bit an input, 1 makes it an output',ext:'On failure, throws an exception or returns <tt>Y_PORTDIRECTION_INVALID</tt>.'};
+doc['DigitalIO']['get_portOpenDrain']={syn:'Returns the electrical interface for each bit of the port.',lib:'digitalio.get_portOpenDrain()',pro:'def get_portOpenDrain()',cmt:'<p>Returns the electrical interface for each bit of the port. For each bit set to 0 the matching I/O works in the regular, intuitive way, for each bit set to 1, the I/O works in reverse mode.</p>',ret:'an integer corresponding to the electrical interface for each bit of the port',ext:'On failure, throws an exception or returns <tt>Y_PORTOPENDRAIN_INVALID</tt>.'};
+doc['DigitalIO']['get_portPolarity']={syn:'Returns the polarity of all the bits of the port.',lib:'digitalio.get_portPolarity()',pro:'def get_portPolarity()',cmt:'<p>Returns the polarity of all the bits of the port. For each bit set to 0, the matching I/O works the regular, intuitive way; for each bit set to 1, the I/O works in reverse mode.</p>',ret:'an integer corresponding to the polarity of all the bits of the port',ext:'On failure, throws an exception or returns <tt>Y_PORTPOLARITY_INVALID</tt>.'};
+doc['DigitalIO']['get_portSize']={syn:'Returns the number of bits implemented in the I/O port.',lib:'digitalio.get_portSize()',pro:'def get_portSize()',cmt:'<p>Returns the number of bits implemented in the I/O port.</p>',ret:'an integer corresponding to the number of bits implemented in the I/O port',ext:'On failure, throws an exception or returns <tt>Y_PORTSIZE_INVALID</tt>.'};
+doc['DigitalIO']['get_portState']={syn:'Returns the digital IO port state: bit 0 represents input 0, and so on.',lib:'digitalio.get_portState()',pro:'def get_portState()',cmt:'<p>Returns the digital IO port state: bit 0 represents input 0, and so on.</p>',ret:'an integer corresponding to the digital IO port state: bit 0 represents input 0, and so on',ext:'On failure, throws an exception or returns <tt>Y_PORTSTATE_INVALID</tt>.'};
+doc['DigitalIO']['get_userData']={syn:'Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>.',lib:'digitalio.get_userData()',pro:'def get_userData()',cmt:'<p>Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>. This attribute is never touched directly by the API, and is at disposal of the caller to store a context.</p>',ret:'the object stored previously by the caller.'};
+doc['DigitalIO']['isOnline']={syn:'Checks if the digital IO port is currently reachable, without raising any error.',lib:'digitalio.isOnline()',pro:'def isOnline()',cmt:'<p>Checks if the digital IO port is currently reachable, without raising any error. If there is a cached value for the digital IO port in cache, that has not yet expired, the device is considered reachable. No exception is raised if there is an error while trying to contact the device hosting the digital IO port.</p>',ret:'<tt>true</tt> if the digital IO port can be reached, and <tt>false</tt> otherwise'};
+doc['DigitalIO']['load']={syn:'Preloads the digital IO port cache with a specified validity duration.',lib:'digitalio.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Preloads the digital IO port cache with a specified validity duration. By default, whenever accessing a device, all function attributes are kept in cache for the standard duration (5 ms). This method can be used to temporarily mark the cache as valid for a longer period, in order to reduce network traffic for instance.</p>',par:{msValidity:'an integer corresponding to the validity attributed to the loaded function parameters, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['DigitalIO']['loadAttribute']={syn:'Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.',lib:'digitalio.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'On failure, throws an exception or returns an empty string.'};
+doc['DigitalIO']['muteValueCallbacks']={syn:'Disable the propagation of every new advertised value to the parent hub.',lib:'digitalio.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>Disable the propagation of every new advertised value to the parent hub. You can use this function to save bandwidth and CPU on computers with limited resources, or to prevent unwanted invocations of the HTTP callback. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['DigitalIO']['nextDigitalIO']={syn:'Continues the enumeration of digital IO ports started using <tt>yFirstDigitalIO()</tt>.',lib:'digitalio.nextDigitalIO()',pro:'def nextDigitalIO()',cmt:'<p>Continues the enumeration of digital IO ports started using <tt>yFirstDigitalIO()</tt>.</p>',ret:'a pointer to a <tt>YDigitalIO</tt> object, corresponding to a digital IO port currently online, or a <tt>null</tt> pointer if there are no more digital IO ports to enumerate.'};
+doc['DigitalIO']['pulse']={syn:'Triggers a pulse on a single bit for a specified duration.',lib:'digitalio.pulse()',pro:'def pulse(<span id=pn>bitno</span>, <span id=pn>ms_duration</span>)',cmt:'<p>Triggers a pulse on a single bit for a specified duration. The specified bit will be turned to 1, and then back to 0 after the given duration.</p>',par:{bitno:'the bit number; lowest bit has index 0',ms_duration:'desired pulse duration in milliseconds. Be aware that the device time resolution is not guaranteed up to the millisecond.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['DigitalIO']['registerValueCallback']={syn:'Registers the callback function that is invoked on every change of advertised value.',lib:'digitalio.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every change of advertised value. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and the character string describing the new advertised value.'}};
+doc['DigitalIO']['set_bitDirection']={syn:'Changes the direction of a single bit from the I/O port.',lib:'digitalio.set_bitDirection()',pro:'def set_bitDirection(<span id=pn>bitno</span>, <span id=pn>bitdirection</span>)',cmt:'<p>Changes the direction of a single bit from the I/O port.</p>',par:{bitno:'the bit number; lowest bit has index 0',bitdirection:'direction to set, 0 makes the bit an input, 1 makes it an output. Remember to call the <tt>saveToFlash()</tt> method to make sure the setting is kept after a reboot.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['DigitalIO']['set_bitOpenDrain']={syn:'Changes the electrical interface of a single bit from the I/O port.',lib:'digitalio.set_bitOpenDrain()',pro:'def set_bitOpenDrain(<span id=pn>bitno</span>, <span id=pn>opendrain</span>)',cmt:'<p>Changes the electrical interface of a single bit from the I/O port.</p>',par:{bitno:'the bit number; lowest bit has index 0',opendrain:'0 makes a bit a regular input/output, 1 makes it an open-drain (open-collector) input/output. Remember to call the <tt>saveToFlash()</tt> method to make sure the setting is kept after a reboot.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['DigitalIO']['set_bitPolarity']={syn:'Changes the polarity of a single bit from the I/O port.',lib:'digitalio.set_bitPolarity()',pro:'def set_bitPolarity(<span id=pn>bitno</span>, <span id=pn>bitpolarity</span>)',cmt:'<p>Changes the polarity of a single bit from the I/O port.</p>',par:{bitno:'the bit number; lowest bit has index 0.',bitpolarity:'polarity to set, 0 makes the I/O work in regular mode, 1 makes the I/O works in reverse mode. Remember to call the <tt>saveToFlash()</tt> method to make sure the setting is kept after a reboot.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['DigitalIO']['set_bitState']={syn:'Sets a single bit of the I/O port.',lib:'digitalio.set_bitState()',pro:'def set_bitState(<span id=pn>bitno</span>, <span id=pn>bitstate</span>)',cmt:'<p>Sets a single bit of the I/O port.</p>',par:{bitno:'the bit number; lowest bit has index 0',bitstate:'the state of the bit (1 or 0)'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['DigitalIO']['set_logicalName']={syn:'Changes the logical name of the digital IO port.',lib:'digitalio.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Changes the logical name of the digital IO port. You can use <tt>yCheckLogicalName()</tt> prior to this call to make sure that your parameter is valid. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the logical name of the digital IO port.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['DigitalIO']['set_outputVoltage']={syn:'Changes the voltage source used to drive output bits.',lib:'digitalio.set_outputVoltage()',pro:'def set_outputVoltage(<span id=pn>newval</span>)',cmt:'<p>Changes the voltage source used to drive output bits. Remember to call the <tt>saveToFlash()</tt> method to make sure the setting is kept after a reboot.</p>',par:{newval:'a value among <tt>Y_OUTPUTVOLTAGE_USB_5V</tt>, <tt>Y_OUTPUTVOLTAGE_USB_3V</tt> and <tt>Y_OUTPUTVOLTAGE_EXT_V</tt> corresponding to the voltage source used to drive output bits'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['DigitalIO']['set_portDirection']={syn:'Changes the IO direction of all bits of the port: 0 makes a bit an input, 1 makes it an output.',lib:'digitalio.set_portDirection()',pro:'def set_portDirection(<span id=pn>newval</span>)',cmt:'<p>Changes the IO direction of all bits of the port: 0 makes a bit an input, 1 makes it an output. Remember to call the <tt>saveToFlash()</tt> method to make sure the setting is kept after a reboot.</p>',par:{newval:'an integer corresponding to the IO direction of all bits of the port: 0 makes a bit an input, 1 makes it an output'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['DigitalIO']['set_portOpenDrain']={syn:'Changes the electrical interface for each bit of the port.',lib:'digitalio.set_portOpenDrain()',pro:'def set_portOpenDrain(<span id=pn>newval</span>)',cmt:'<p>Changes the electrical interface for each bit of the port. 0 makes a bit a regular input/output, 1 makes it an open-drain (open-collector) input/output. Remember to call the <tt>saveToFlash()</tt> method to make sure the setting is kept after a reboot.</p>',par:{newval:'an integer corresponding to the electrical interface for each bit of the port'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['DigitalIO']['set_portPolarity']={syn:'Changes the polarity of all the bits of the port: For each bit set to 0, the matching I/O works the regular, intuitive way; for each bit set to 1, the I/O works in reverse mode.',lib:'digitalio.set_portPolarity()',pro:'def set_portPolarity(<span id=pn>newval</span>)',cmt:'<p>Changes the polarity of all the bits of the port: For each bit set to 0, the matching I/O works the regular, intuitive way; for each bit set to 1, the I/O works in reverse mode. Remember to call the <tt>saveToFlash()</tt> method to make sure the setting will be kept after a reboot.</p>',par:{newval:'an integer corresponding to the polarity of all the bits of the port: For each bit set to 0, the matching I/O works the regular, intuitive way; for each bit set to 1, the I/O works in reverse mode'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['DigitalIO']['set_portState']={syn:'Changes the digital IO port state: bit 0 represents input 0, and so on.',lib:'digitalio.set_portState()',pro:'def set_portState(<span id=pn>newval</span>)',cmt:'<p>Changes the digital IO port state: bit 0 represents input 0, and so on. This function has no effect on bits configured as input in <tt>portDirection</tt>.</p>',par:{newval:'an integer corresponding to the digital IO port state: bit 0 represents input 0, and so on'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['DigitalIO']['set_userData']={syn:'Stores a user context provided as argument in the userData attribute of the function.',lib:'digitalio.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Stores a user context provided as argument in the userData attribute of the function. This attribute is never touched by the API, and is at disposal of the caller to store a context.</p>',par:{data:'any kind of object to be stored'}};
+doc['DigitalIO']['toggle_bitState']={syn:'Reverts a single bit of the I/O port.',lib:'digitalio.toggle_bitState()',pro:'def toggle_bitState(<span id=pn>bitno</span>)',cmt:'<p>Reverts a single bit of the I/O port.</p>',par:{bitno:'the bit number; lowest bit has index 0'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['DigitalIO']['unmuteValueCallbacks']={syn:'Re-enable the propagation of every new advertised value to the parent hub.',lib:'digitalio.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>Re-enable the propagation of every new advertised value to the parent hub. This function reverts the effect of a previous call to <tt>muteValueCallbacks()</tt>. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+//--- (end of generated code: DigitalIO)
+//--- (generated code: OsControl)
+doc['OsControl']={'':{syn:'OS control',inc:'from yocto_oscontrol import *',cmt:'<p>The OScontrol object allows some control over the operating system running a VirtualHub. OsControl is available on the VirtualHub software only. This feature must be activated at the VirtualHub start up with -o option.</p>'}};
+doc['OsControl']['FindOsControl']={syn:'Retrieves OS control for a given identifier.',lib:'YOsControl.FindOsControl()',pro:'def FindOsControl(<span id=pn>func</span>)',cmt:'<p>Retrieves OS control for a given identifier. The identifier can be specified using several formats:<br> <ul> <li>FunctionLogicalName</li> <li>ModuleSerialNumber.FunctionIdentifier</li> <li>ModuleSerialNumber.FunctionLogicalName</li> <li>ModuleLogicalName.FunctionIdentifier</li> <li>ModuleLogicalName.FunctionLogicalName</li> </ul></p><p> This function does not require that the OS control is online at the time it is invoked. The returned object is nevertheless valid. Use the method <tt>YOsControl.isOnline()</tt> to test if the OS control is indeed online at a given time. In case of ambiguity when looking for OS control by logical name, no error is notified: the first instance found is returned. The search is performed first by hardware name, then by logical name.</p>',par:{func:'a string that uniquely characterizes the OS control'},ret:'a <tt>YOsControl</tt> object allowing you to drive the OS control.'};
+doc['OsControl']['FirstOsControl']={syn:'Starts the enumeration of OS control currently accessible.',lib:'YOsControl.FirstOsControl()',pro:'def FirstOsControl()',cmt:'<p>Starts the enumeration of OS control currently accessible. Use the method <tt>YOsControl.nextOsControl()</tt> to iterate on next OS control.</p>',ret:'a pointer to a <tt>YOsControl</tt> object, corresponding to the first OS control currently online, or a <tt>null</tt> pointer if there are none.'};
+doc['OsControl']['clearCache']={syn:'Invalidates the cache.',lib:'oscontrol.clearCache()',pro:'def clearCache()',cmt:'<p>Invalidates the cache. Invalidates the cache of the OS control attributes. Forces the next call to get_xxx() or loadxxx() to use values that come from the device.</p>'};
+doc['OsControl']['describe']={syn:'Returns a short text that describes unambiguously the instance of the OS control in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'oscontrol.describe()',pro:'def describe()',cmt:'<p>Returns a short text that describes unambiguously the instance of the OS control in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. More precisely, <tt>TYPE</tt> is the type of the function, <tt>NAME</tt> it the name used for the first access to the function, <tt>SERIAL</tt> is the serial number of the module if the module is connected or <tt>\x22unresolved\x22</tt>, and <tt>FUNCTIONID</tt> is the hardware identifier of the function if the module is connected. For example, this method returns <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> if the module is already connected or <tt>Relay(BadCustomeName.relay1)=unresolved</tt> if the module has not yet been connected. This method does not trigger any USB or TCP transaction and can therefore be used in a debugger.</p>',ret:'a string that describes the OS control (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['OsControl']['get_advertisedValue']={syn:'Returns the current value of the OS control (no more than 6 characters).',lib:'oscontrol.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Returns the current value of the OS control (no more than 6 characters).</p>',ret:'a string corresponding to the current value of the OS control (no more than 6 characters).',ext:'On failure, throws an exception or returns <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['OsControl']['get_errorMessage']={syn:'Returns the error message of the latest error with the OS control.',lib:'oscontrol.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Returns the error message of the latest error with the OS control. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a string corresponding to the latest error message that occured while using the OS control object'};
+doc['OsControl']['get_errorType']={syn:'Returns the numerical error code of the latest error with the OS control.',lib:'oscontrol.get_errorType()',pro:'def get_errorType()',cmt:'<p>Returns the numerical error code of the latest error with the OS control. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a number corresponding to the code of the latest error that occurred while using the OS control object'};
+doc['OsControl']['get_friendlyName']={syn:'Returns a global identifier of the OS control in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>.',lib:'oscontrol.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Returns a global identifier of the OS control in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>. The returned string uses the logical names of the module and of the OS control if they are defined, otherwise the serial number of the module and the hardware identifier of the OS control (for example: <tt>MyCustomName.relay1</tt>)</p>',ret:'a string that uniquely identifies the OS control using logical names (ex: <tt>MyCustomName.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['OsControl']['get_functionDescriptor']={syn:'Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function.',lib:'oscontrol.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function. This identifier can be used to test if two instances of <tt>YFunction</tt> reference the same physical function on the same physical device.</p>',ret:'an identifier of type <tt>YFUN_DESCR</tt>.',ext:'If the function has never been contacted, the returned value is <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>.'};
+doc['OsControl']['get_functionId']={syn:'Returns the hardware identifier of the OS control, without reference to the module.',lib:'oscontrol.get_functionId()',pro:'def get_functionId()',cmt:'<p>Returns the hardware identifier of the OS control, without reference to the module. For example <tt>relay1</tt></p>',ret:'a string that identifies the OS control (ex: <tt>relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['OsControl']['get_hardwareId']={syn:'Returns the unique hardware identifier of the OS control in the form <tt>SERIAL.FUNCTIONID</tt>.',lib:'oscontrol.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Returns the unique hardware identifier of the OS control in the form <tt>SERIAL.FUNCTIONID</tt>. The unique hardware identifier is composed of the device serial number and of the hardware identifier of the OS control (for example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'a string that uniquely identifies the OS control (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['OsControl']['get_logicalName']={syn:'Returns the logical name of the OS control.',lib:'oscontrol.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Returns the logical name of the OS control.</p>',ret:'a string corresponding to the logical name of the OS control.',ext:'On failure, throws an exception or returns <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['OsControl']['get_module']={syn:'Gets the <tt>YModule</tt> object for the device on which the function is located.',lib:'oscontrol.get_module()',pro:'def get_module()',cmt:'<p>Gets the <tt>YModule</tt> object for the device on which the function is located. If the function cannot be located on any module, the returned instance of <tt>YModule</tt> is not shown as on-line.</p>',ret:'an instance of <tt>YModule</tt>'};
+doc['OsControl']['get_shutdownCountdown']={syn:'Returns the remaining number of seconds before the OS shutdown, or zero when no shutdown has been scheduled.',lib:'oscontrol.get_shutdownCountdown()',pro:'def get_shutdownCountdown()',cmt:'<p>Returns the remaining number of seconds before the OS shutdown, or zero when no shutdown has been scheduled.</p>',ret:'an integer corresponding to the remaining number of seconds before the OS shutdown, or zero when no shutdown has been scheduled',ext:'On failure, throws an exception or returns <tt>Y_SHUTDOWNCOUNTDOWN_INVALID</tt>.'};
+doc['OsControl']['get_userData']={syn:'Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>.',lib:'oscontrol.get_userData()',pro:'def get_userData()',cmt:'<p>Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>. This attribute is never touched directly by the API, and is at disposal of the caller to store a context.</p>',ret:'the object stored previously by the caller.'};
+doc['OsControl']['isOnline']={syn:'Checks if the OS control is currently reachable, without raising any error.',lib:'oscontrol.isOnline()',pro:'def isOnline()',cmt:'<p>Checks if the OS control is currently reachable, without raising any error. If there is a cached value for the OS control in cache, that has not yet expired, the device is considered reachable. No exception is raised if there is an error while trying to contact the device hosting the OS control.</p>',ret:'<tt>true</tt> if the OS control can be reached, and <tt>false</tt> otherwise'};
+doc['OsControl']['load']={syn:'Preloads the OS control cache with a specified validity duration.',lib:'oscontrol.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Preloads the OS control cache with a specified validity duration. By default, whenever accessing a device, all function attributes are kept in cache for the standard duration (5 ms). This method can be used to temporarily mark the cache as valid for a longer period, in order to reduce network traffic for instance.</p>',par:{msValidity:'an integer corresponding to the validity attributed to the loaded function parameters, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['OsControl']['loadAttribute']={syn:'Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.',lib:'oscontrol.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'On failure, throws an exception or returns an empty string.'};
+doc['OsControl']['muteValueCallbacks']={syn:'Disable the propagation of every new advertised value to the parent hub.',lib:'oscontrol.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>Disable the propagation of every new advertised value to the parent hub. You can use this function to save bandwidth and CPU on computers with limited resources, or to prevent unwanted invocations of the HTTP callback. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['OsControl']['nextOsControl']={syn:'Continues the enumeration of OS control started using <tt>yFirstOsControl()</tt>.',lib:'oscontrol.nextOsControl()',pro:'def nextOsControl()',cmt:'<p>Continues the enumeration of OS control started using <tt>yFirstOsControl()</tt>.</p>',ret:'a pointer to a <tt>YOsControl</tt> object, corresponding to OS control currently online, or a <tt>null</tt> pointer if there are no more OS control to enumerate.'};
+doc['OsControl']['registerValueCallback']={syn:'Registers the callback function that is invoked on every change of advertised value.',lib:'oscontrol.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every change of advertised value. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and the character string describing the new advertised value.'}};
+doc['OsControl']['set_logicalName']={syn:'Changes the logical name of the OS control.',lib:'oscontrol.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Changes the logical name of the OS control. You can use <tt>yCheckLogicalName()</tt> prior to this call to make sure that your parameter is valid. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the logical name of the OS control.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['OsControl']['set_userData']={syn:'Stores a user context provided as argument in the userData attribute of the function.',lib:'oscontrol.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Stores a user context provided as argument in the userData attribute of the function. This attribute is never touched by the API, and is at disposal of the caller to store a context.</p>',par:{data:'any kind of object to be stored'}};
+doc['OsControl']['shutdown']={syn:'Schedules an OS shutdown after a given number of seconds.',lib:'oscontrol.shutdown()',pro:'def shutdown(<span id=pn>secBeforeShutDown</span>)',cmt:'<p>Schedules an OS shutdown after a given number of seconds.</p>',par:{secBeforeShutDown:'number of seconds before shutdown'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['OsControl']['unmuteValueCallbacks']={syn:'Re-enable the propagation of every new advertised value to the parent hub.',lib:'oscontrol.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>Re-enable the propagation of every new advertised value to the parent hub. This function reverts the effect of a previous call to <tt>muteValueCallbacks()</tt>. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+//--- (end of generated code: OsControl)
+//--- (generated code: YAPI)
+doc['YAPI']={'':{syn:'General functions',inc:'from yocto_api import *',cmt:'<p>These general functions should be used to initialize and configure the Yoctopuce library. In most cases, a simple call to function <tt>yRegisterHub()</tt> should be enough. The module-specific functions <tt>yFind...()</tt> or <tt>yFirst...()</tt> should then be used to retrieve an object that provides interaction with the module.</p>'}};
+doc['YAPI']['CheckLogicalName']={syn:'Checks if a given string is valid as logical name for a module or a function.',lib:'YAPI.CheckLogicalName()',pro:'def CheckLogicalName(<span id=pn>name</span>)',cmt:'<p>Checks if a given string is valid as logical name for a module or a function. A valid logical name has a maximum of 19 characters, all among <tt>A..Z</tt>, <tt>a..z</tt>, <tt>0..9</tt>, <tt>_</tt>, and <tt>-</tt>. If you try to configure a logical name with an incorrect string, the invalid characters are ignored.</p>',par:{name:'a string containing the name to check.'},ret:'<tt>true</tt> if the name is valid, <tt>false</tt> otherwise.'};
+doc['YAPI']['DisableExceptions']={syn:'Disables the use of exceptions to report runtime errors.',lib:'YAPI.DisableExceptions()',pro:'def DisableExceptions()',cmt:'<p>Disables the use of exceptions to report runtime errors. When exceptions are disabled, every function returns a specific error value which depends on its type and which is documented in this reference manual.</p>'};
+doc['YAPI']['EnableExceptions']={syn:'Re-enables the use of exceptions for runtime error handling.',lib:'YAPI.EnableExceptions()',pro:'def EnableExceptions()',cmt:'<p>Re-enables the use of exceptions for runtime error handling. Be aware than when exceptions are enabled, every function that fails triggers an exception. If the exception is not caught by the user code, it either fires the debugger or aborts (i.e. crash) the program. On failure, throws an exception or returns a negative error code.</p>'};
+doc['YAPI']['FreeAPI']={syn:'Frees dynamically allocated memory blocks used by the Yoctopuce library.',lib:'YAPI.FreeAPI()',pro:'def FreeAPI()',cmt:'<p>Frees dynamically allocated memory blocks used by the Yoctopuce library. It is generally not required to call this function, unless you want to free all dynamically allocated memory blocks in order to track a memory leak for instance. You should not call any other library function after calling <tt>yFreeAPI()</tt>, or your program will crash.</p>'};
+doc['YAPI']['GetAPIVersion']={syn:'Returns the version identifier for the Yoctopuce library in use.',lib:'YAPI.GetAPIVersion()',pro:'def GetAPIVersion()',cmt:'<p>Returns the version identifier for the Yoctopuce library in use. The version is a string in the form <tt>\x22Major.Minor.Build\x22</tt>, for instance <tt>\x221.01.5535\x22</tt>. For languages using an external DLL (for instance C#, VisualBasic or Delphi), the character string includes as well the DLL version, for instance <tt>\x221.01.5535 (1.01.5439)\x22</tt>.</p><p> If you want to verify in your code that the library version is compatible with the version that you have used during development, verify that the major number is strictly equal and that the minor number is greater or equal. The build number is not relevant with respect to the library compatibility.</p>',ret:'a character string describing the library version.'};
+doc['YAPI']['GetTickCount']={syn:'Returns the current value of a monotone millisecond-based time counter.',lib:'YAPI.GetTickCount()',pro:'def GetTickCount()',cmt:'<p>Returns the current value of a monotone millisecond-based time counter. This counter can be used to compute delays in relation with Yoctopuce devices, which also uses the millisecond as timebase.</p>',ret:'a long integer corresponding to the millisecond counter.'};
+doc['YAPI']['HandleEvents']={syn:'Maintains the device-to-library communication channel.',lib:'YAPI.HandleEvents()',pro:'def HandleEvents(<span id=pn>errmsg</span>=None)',cmt:'<p>Maintains the device-to-library communication channel. If your program includes significant loops, you may want to include a call to this function to make sure that the library takes care of the information pushed by the modules on the communication channels. This is not strictly necessary, but it may improve the reactivity of the library for the following commands.</p><p> This function may signal an error in case there is a communication problem while contacting a module.</p>',par:{errmsg:'a string passed by reference to receive any error message.'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['YAPI']['InitAPI']={syn:'Initializes the Yoctopuce programming library explicitly.',lib:'YAPI.InitAPI()',pro:'def InitAPI(<span id=pn>mode</span>, <span id=pn>errmsg</span>=None)',cmt:'<p>Initializes the Yoctopuce programming library explicitly. It is not strictly needed to call <tt>yInitAPI()</tt>, as the library is automatically initialized when calling <tt>yRegisterHub()</tt> for the first time.</p><p> When <tt>Y_DETECT_NONE</tt> is used as detection <tt>mode</tt>, you must explicitly use <tt>yRegisterHub()</tt> to point the API to the VirtualHub on which your devices are connected before trying to access them.</p>',par:{mode:'an integer corresponding to the type of automatic device detection to use. Possible values are <tt>Y_DETECT_NONE</tt>, <tt>Y_DETECT_USB</tt>, <tt>Y_DETECT_NET</tt>, and <tt>Y_DETECT_ALL</tt>.',errmsg:'a string passed by reference to receive any error message.'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['YAPI']['PreregisterHub']={syn:'Fault-tolerant alternative to RegisterHub().',lib:'YAPI.PreregisterHub()',pro:'def PreregisterHub(<span id=pn>url</span>, <span id=pn>errmsg</span>=None)',cmt:'<p>Fault-tolerant alternative to RegisterHub(). This function has the same purpose and same arguments as <tt>RegisterHub()</tt>, but does not trigger an error when the selected hub is not available at the time of the function call. This makes it possible to register a network hub independently of the current connectivity, and to try to contact it only when a device is actively needed.</p>',par:{url:'a string containing either <ui>\x22usb\x22</ui>,<ui>\x22callback\x22</ui> or the root URL of the hub to monitor',errmsg:'a string passed by reference to receive any error message.'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['YAPI']['RegisterDeviceArrivalCallback']={syn:'Register a callback function, to be called each time a device is plugged.',lib:'YAPI.RegisterDeviceArrivalCallback()',pro:'def RegisterDeviceArrivalCallback(<span id=pn>arrivalCallback</span>)',cmt:'<p>Register a callback function, to be called each time a device is plugged. This callback will be invoked while <tt>yUpdateDeviceList</tt> is running. You will have to call this function on a regular basis.</p>',par:{arrivalCallback:'a procedure taking a <tt>YModule</tt> parameter, or <tt>null</tt> to unregister a previously registered callback.'}};
+doc['YAPI']['RegisterDeviceRemovalCallback']={syn:'Register a callback function, to be called each time a device is unplugged.',lib:'YAPI.RegisterDeviceRemovalCallback()',pro:'def RegisterDeviceRemovalCallback(<span id=pn>removalCallback</span>)',cmt:'<p>Register a callback function, to be called each time a device is unplugged. This callback will be invoked while <tt>yUpdateDeviceList</tt> is running. You will have to call this function on a regular basis.</p>',par:{removalCallback:'a procedure taking a <tt>YModule</tt> parameter, or <tt>null</tt> to unregister a previously registered callback.'}};
+doc['YAPI']['RegisterHub']={syn:'Setup the Yoctopuce library to use modules connected on a given machine.',lib:'YAPI.RegisterHub()',pro:'def RegisterHub(<span id=pn>url</span>, <span id=pn>errmsg</span>=None)',cmt:'<p>Setup the Yoctopuce library to use modules connected on a given machine. The parameter will determine how the API will work. Use the following values:</p><p> <b>usb</b>: When the <ui>usb</ui> keyword is used, the API will work with devices connected directly to the USB bus. Some programming languages such a Javascript, PHP, and Java don\x27t provide direct access to USB hardware, so <ui>usb</ui> will not work with these. In this case, use a VirtualHub or a networked YoctoHub (see below).</p><p> <b><i>x.x.x.x</i></b> or <b><i>hostname</i></b>: The API will use the devices connected to the host with the given IP address or hostname. That host can be a regular computer running a VirtualHub, or a networked YoctoHub such as YoctoHub-Ethernet or YoctoHub-Wireless. If you want to use the VirtualHub running on you local computer, use the IP address 127.0.0.1.</p><p> <b>callback</b>: that keyword make the API run in \x22<i>HTTP Callback</i>\x22 mode. This a special mode allowing to take control of Yoctopuce devices through a NAT filter when using a VirtualHub or a networked YoctoHub. You only need to configure your hub to call your server script on a regular basis. This mode is currently available for PHP and Node.JS only.</p><p> Be aware that only one application can use direct USB access at a given time on a machine. Multiple access would cause conflicts while trying to access the USB modules. In particular, this means that you must stop the VirtualHub software before starting an application that uses direct USB access. The workaround for this limitation is to setup the library to use the VirtualHub rather than direct USB access.</p><p> If access control has been activated on the hub, virtual or not, you want to reach, the URL parameter should look like:</p><p> <tt>http://username:password@address:port</tt></p><p> You can call <i>RegisterHub</i> several times to connect to several machines.</p>',par:{url:'a string containing either <ui>\x22usb\x22</ui>,<ui>\x22callback\x22</ui> or the root URL of the hub to monitor',errmsg:'a string passed by reference to receive any error message.'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['YAPI']['RegisterHubDiscoveryCallback']={syn:'Register a callback function, to be called each time an Network Hub send an SSDP message.',lib:'YAPI.RegisterHubDiscoveryCallback()',pro:'def RegisterHubDiscoveryCallback(<span id=pn>hubDiscoveryCallback</span>)',cmt:'<p>Register a callback function, to be called each time an Network Hub send an SSDP message. The callback has two string parameter, the first one contain the serial number of the hub and the second contain the URL of the network hub (this URL can be passed to RegisterHub). This callback will be invoked while yUpdateDeviceList is running. You will have to call this function on a regular basis.</p>',par:{hubDiscoveryCallback:'a procedure taking two string parameter, or null to unregister a previously registered callback.'}};
+doc['YAPI']['RegisterLogFunction']={syn:'Registers a log callback function.',lib:'YAPI.RegisterLogFunction()',pro:'def RegisterLogFunction(<span id=pn>logfun</span>)',cmt:'<p>Registers a log callback function. This callback will be called each time the API have something to say. Quite useful to debug the API.</p>',par:{logfun:'a procedure taking a string parameter, or <tt>null</tt> to unregister a previously registered callback.'}};
+doc['YAPI']['SelectArchitecture']={syn:'Select the architecture or the library to be loaded to access to USB.',lib:'YAPI.SelectArchitecture()',pro:'def SelectArchitecture(<span id=pn>arch</span>)',cmt:'<p>Select the architecture or the library to be loaded to access to USB. By default, the Python library automatically detects the appropriate library to use. However, for Linux ARM, it not possible to reliably distinguish between a Hard Float (armhf) and a Soft Float (armel) install. For in this case, it is therefore recommended to manually select the proper architecture by calling <tt>SelectArchitecture()</tt> before any other call to the library.</p>',par:{arch:'A string containing the architecture to use. Possibles value are: <tt>\x22armhf\x22</tt>,<tt>\x22armel\x22</tt>, <tt>\x22i386\x22</tt>,<tt>\x22x86_64\x22</tt>,<tt>\x2232bit\x22</tt>, <tt>\x2264bit\x22</tt>'},ret:'nothing.',ext:'On failure, throws an exception.'};
+doc['YAPI']['Sleep']={syn:'Pauses the execution flow for a specified duration.',lib:'YAPI.Sleep()',pro:'def Sleep(<span id=pn>ms_duration</span>, <span id=pn>errmsg</span>=None)',cmt:'<p>Pauses the execution flow for a specified duration. This function implements a passive waiting loop, meaning that it does not consume CPU cycles significantly. The processor is left available for other threads and processes. During the pause, the library nevertheless reads from time to time information from the Yoctopuce modules by calling <tt>yHandleEvents()</tt>, in order to stay up-to-date.</p><p> This function may signal an error in case there is a communication problem while contacting a module.</p>',par:{ms_duration:'an integer corresponding to the duration of the pause, in milliseconds.',errmsg:'a string passed by reference to receive any error message.'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['YAPI']['TestHub']={syn:'Test if the hub is reachable.',lib:'YAPI.TestHub()',pro:'def TestHub(<span id=pn>url</span>, <span id=pn>mstimeout</span>, <span id=pn>errmsg</span>=None)',cmt:'<p>Test if the hub is reachable. This method do not register the hub, it only test if the hub is usable. The url parameter follow the same convention as the <tt>RegisterHub</tt> method. This method is useful to verify the authentication parameters for a hub. It is possible to force this method to return after mstimeout milliseconds.</p>',par:{url:'a string containing either <ui>\x22usb\x22</ui>,<ui>\x22callback\x22</ui> or the root URL of the hub to monitor',mstimeout:'the number of millisecond available to test the connection.',errmsg:'a string passed by reference to receive any error message.'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure returns a negative error code.'};
+doc['YAPI']['TriggerHubDiscovery']={syn:'Force a hub discovery, if a callback as been registered with <tt>yRegisterDeviceRemovalCallback</tt> it will be called for each net work hub that will respond to the discovery.',lib:'YAPI.TriggerHubDiscovery()',pro:'def TriggerHubDiscovery(<span id=pn>errmsg</span>=None)',cmt:'<p>Force a hub discovery, if a callback as been registered with <tt>yRegisterDeviceRemovalCallback</tt> it will be called for each net work hub that will respond to the discovery.</p>',par:{errmsg:'a string passed by reference to receive any error message.'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds. On failure, throws an exception or returns a negative error code.'};
+doc['YAPI']['UnregisterHub']={syn:'Setup the Yoctopuce library to no more use modules connected on a previously registered machine with RegisterHub.',lib:'YAPI.UnregisterHub()',pro:'def UnregisterHub(<span id=pn>url</span>)',cmt:'<p>Setup the Yoctopuce library to no more use modules connected on a previously registered machine with RegisterHub.</p>',par:{url:'a string containing either <ui>\x22usb\x22</ui> or the root URL of the hub to monitor'}};
+doc['YAPI']['UpdateDeviceList']={syn:'Triggers a (re)detection of connected Yoctopuce modules.',lib:'YAPI.UpdateDeviceList()',pro:'def UpdateDeviceList(<span id=pn>errmsg</span>=None)',cmt:'<p>Triggers a (re)detection of connected Yoctopuce modules. The library searches the machines or USB ports previously registered using <tt>yRegisterHub()</tt>, and invokes any user-defined callback function in case a change in the list of connected devices is detected.</p><p> This function can be called as frequently as desired to refresh the device list and to make the application aware of hot-plug events.</p>',par:{errmsg:'a string passed by reference to receive any error message.'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+//--- (end of generated code: YAPI)
+//--- (generated code: DataStream)
+doc['DataStream']={'':{syn:'Unformatted data sequence',inc:'from yocto_api import *',cmt:'<p>YDataStream objects represent bare recorded measure sequences, exactly as found within the data logger present on Yoctopuce sensors.</p><p> In most cases, it is not necessary to use YDataStream objects directly, as the YDataSet objects (returned by the <tt>get_recordedData()</tt> method from sensors and the <tt>get_dataSets()</tt> method from the data logger) provide a more convenient interface.</p>'}};
+doc['DataStream']['get_averageValue']={syn:'Returns the average of all measures observed within this stream.',lib:'datastream.get_averageValue()',pro:'def get_averageValue()',cmt:'<p>Returns the average of all measures observed within this stream. If the device uses a firmware older than version 13000, this method will always return Y_DATA_INVALID.</p>',ret:'a floating-point number corresponding to the average value, or Y_DATA_INVALID if the stream is not yet complete (still recording).',ext:'On failure, throws an exception or returns Y_DATA_INVALID.'};
+doc['DataStream']['get_columnCount']={syn:'Returns the number of data columns present in this stream.',lib:'datastream.get_columnCount()',pro:'def get_columnCount()',cmt:'<p>Returns the number of data columns present in this stream. The meaning of the values present in each column can be obtained using the method <tt>get_columnNames()</tt>.</p><p> If the device uses a firmware older than version 13000, this method fetches the whole data stream from the device if not yet done, which can cause a little delay.</p>',ret:'an unsigned number corresponding to the number of columns.',ext:'On failure, throws an exception or returns zero.'};
+doc['DataStream']['get_columnNames']={syn:'Returns the title (or meaning) of each data column present in this stream.',lib:'datastream.get_columnNames()',pro:'def get_columnNames()',cmt:'<p>Returns the title (or meaning) of each data column present in this stream. In most case, the title of the data column is the hardware identifier of the sensor that produced the data. For streams recorded at a lower recording rate, the dataLogger stores the min, average and max value during each measure interval into three columns with suffixes _min, _avg and _max respectively.</p><p> If the device uses a firmware older than version 13000, this method fetches the whole data stream from the device if not yet done, which can cause a little delay.</p>',ret:'a list containing as many strings as there are columns in the data stream.',ext:'On failure, throws an exception or returns an empty array.'};
+doc['DataStream']['get_data']={syn:'Returns a single measure from the data stream, specified by its row and column index.',lib:'datastream.get_data()',pro:'def get_data(<span id=pn>row</span>, <span id=pn>col</span>)',cmt:'<p>Returns a single measure from the data stream, specified by its row and column index. The meaning of the values present in each column can be obtained using the method get_columnNames().</p><p> This method fetches the whole data stream from the device, if not yet done.</p>',par:{row:'row index',col:'column index'},ret:'a floating-point number',ext:'On failure, throws an exception or returns Y_DATA_INVALID.'};
+doc['DataStream']['get_dataRows']={syn:'Returns the whole data set contained in the stream, as a bidimensional table of numbers.',lib:'datastream.get_dataRows()',pro:'def get_dataRows()',cmt:'<p>Returns the whole data set contained in the stream, as a bidimensional table of numbers. The meaning of the values present in each column can be obtained using the method <tt>get_columnNames()</tt>.</p><p> This method fetches the whole data stream from the device, if not yet done.</p>',ret:'a list containing as many elements as there are rows in the data stream. Each row itself is a list of floating-point numbers.',ext:'On failure, throws an exception or returns an empty array.'};
+doc['DataStream']['get_dataSamplesIntervalMs']={syn:'Returns the number of milliseconds between two consecutive rows of this data stream.',lib:'datastream.get_dataSamplesIntervalMs()',pro:'def get_dataSamplesIntervalMs()',cmt:'<p>Returns the number of milliseconds between two consecutive rows of this data stream. By default, the data logger records one row per second, but the recording frequency can be changed for each device function</p>',ret:'an unsigned number corresponding to a number of milliseconds.'};
+doc['DataStream']['get_duration']={syn:'Returns the approximate duration of this stream, in seconds.',lib:'datastream.get_duration()',pro:'def get_duration()',cmt:'<p>Returns the approximate duration of this stream, in seconds.</p>',ret:'the number of seconds covered by this stream.',ext:'On failure, throws an exception or returns Y_DURATION_INVALID.'};
+doc['DataStream']['get_maxValue']={syn:'Returns the largest measure observed within this stream.',lib:'datastream.get_maxValue()',pro:'def get_maxValue()',cmt:'<p>Returns the largest measure observed within this stream. If the device uses a firmware older than version 13000, this method will always return Y_DATA_INVALID.</p>',ret:'a floating-point number corresponding to the largest value, or Y_DATA_INVALID if the stream is not yet complete (still recording).',ext:'On failure, throws an exception or returns Y_DATA_INVALID.'};
+doc['DataStream']['get_minValue']={syn:'Returns the smallest measure observed within this stream.',lib:'datastream.get_minValue()',pro:'def get_minValue()',cmt:'<p>Returns the smallest measure observed within this stream. If the device uses a firmware older than version 13000, this method will always return Y_DATA_INVALID.</p>',ret:'a floating-point number corresponding to the smallest value, or Y_DATA_INVALID if the stream is not yet complete (still recording).',ext:'On failure, throws an exception or returns Y_DATA_INVALID.'};
+doc['DataStream']['get_rowCount']={syn:'Returns the number of data rows present in this stream.',lib:'datastream.get_rowCount()',pro:'def get_rowCount()',cmt:'<p>Returns the number of data rows present in this stream.</p><p> If the device uses a firmware older than version 13000, this method fetches the whole data stream from the device if not yet done, which can cause a little delay.</p>',ret:'an unsigned number corresponding to the number of rows.',ext:'On failure, throws an exception or returns zero.'};
+doc['DataStream']['get_runIndex']={syn:'Returns the run index of the data stream.',lib:'datastream.get_runIndex()',pro:'def get_runIndex()',cmt:'<p>Returns the run index of the data stream. A run can be made of multiple datastreams, for different time intervals.</p>',ret:'an unsigned number corresponding to the run index.'};
+doc['DataStream']['get_startTime']={syn:'Returns the relative start time of the data stream, measured in seconds.',lib:'datastream.get_startTime()',pro:'def get_startTime()',cmt:'<p>Returns the relative start time of the data stream, measured in seconds. For recent firmwares, the value is relative to the present time, which means the value is always negative. If the device uses a firmware older than version 13000, value is relative to the start of the time the device was powered on, and is always positive. If you need an absolute UTC timestamp, use <tt>get_startTimeUTC()</tt>.</p>',ret:'an unsigned number corresponding to the number of seconds between the start of the run and the beginning of this data stream.'};
+doc['DataStream']['get_startTimeUTC']={syn:'Returns the start time of the data stream, relative to the Jan 1, 1970.',lib:'datastream.get_startTimeUTC()',pro:'def get_startTimeUTC()',cmt:'<p>Returns the start time of the data stream, relative to the Jan 1, 1970. If the UTC time was not set in the datalogger at the time of the recording of this data stream, this method returns 0.</p>',ret:'an unsigned number corresponding to the number of seconds between the Jan 1, 1970 and the beginning of this data stream (i.e. Unix time representation of the absolute time).'};
+//--- (end of generated code: DataStream)
+//--- (generated code: DataSet)
+doc['DataSet']={'':{syn:'Recorded data sequence',inc:'from yocto_api import *',cmt:'<p>YDataSet objects make it possible to retrieve a set of recorded measures for a given sensor and a specified time interval. They can be used to load data points with a progress report. When the YDataSet object is instantiated by the <tt>get_recordedData()</tt> function, no data is yet loaded from the module. It is only when the <tt>loadMore()</tt> method is called over and over than data will be effectively loaded from the dataLogger.</p><p> A preview of available measures is available using the function <tt>get_preview()</tt> as soon as <tt>loadMore()</tt> has been called once. Measures themselves are available using function <tt>get_measures()</tt> when loaded by subsequent calls to <tt>loadMore()</tt>.</p><p> This class can only be used on devices that use a recent firmware, as YDataSet objects are not supported by firmwares older than version 13000.</p>'}};
+doc['DataSet']['get_endTimeUTC']={syn:'Returns the end time of the dataset, relative to the Jan 1, 1970.',lib:'dataset.get_endTimeUTC()',pro:'def get_endTimeUTC()',cmt:'<p>Returns the end time of the dataset, relative to the Jan 1, 1970. When the YDataSet is created, the end time is the value passed in parameter to the <tt>get_dataSet()</tt> function. After the very first call to <tt>loadMore()</tt>, the end time is updated to reflect the timestamp of the last measure actually found in the dataLogger within the specified range.</p>',ret:'an unsigned number corresponding to the number of seconds between the Jan 1, 1970 and the end of this data set (i.e. Unix time representation of the absolute time).'};
+doc['DataSet']['get_functionId']={syn:'Returns the hardware identifier of the function that performed the measure, without reference to the module.',lib:'dataset.get_functionId()',pro:'def get_functionId()',cmt:'<p>Returns the hardware identifier of the function that performed the measure, without reference to the module. For example <tt>temperature1</tt>.</p>',ret:'a string that identifies the function (ex: <tt>temperature1</tt>)'};
+doc['DataSet']['get_hardwareId']={syn:'Returns the unique hardware identifier of the function who performed the measures, in the form <tt>SERIAL.FUNCTIONID</tt>.',lib:'dataset.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Returns the unique hardware identifier of the function who performed the measures, in the form <tt>SERIAL.FUNCTIONID</tt>. The unique hardware identifier is composed of the device serial number and of the hardware identifier of the function (for example <tt>THRMCPL1-123456.temperature1</tt>)</p>',ret:'a string that uniquely identifies the function (ex: <tt>THRMCPL1-123456.temperature1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['DataSet']['get_measures']={syn:'Returns all measured values currently available for this DataSet, as a list of YMeasure objects.',lib:'dataset.get_measures()',pro:'def get_measures()',cmt:'<p>Returns all measured values currently available for this DataSet, as a list of YMeasure objects. Each item includes: - the start of the measure time interval - the end of the measure time interval - the minimal value observed during the time interval - the average value observed during the time interval - the maximal value observed during the time interval</p><p> Before calling this method, you should call <tt>loadMore()</tt> to load data from the device. You may have to call loadMore() several time until all rows are loaded, but you can start looking at available data rows before the load is complete.</p><p> The oldest measures are always loaded first, and the most recent measures will be loaded last. As a result, timestamps are normally sorted in ascending order within the measure table, unless there was an unexpected adjustment of the datalogger UTC clock.</p>',ret:'a table of records, where each record depicts the measured value for a given time interval',ext:'On failure, throws an exception or returns an empty array.'};
+doc['DataSet']['get_measuresAt']={syn:'Returns the detailed set of measures for the time interval corresponding to a given condensed measures previously returned by <tt>get_preview()</tt>.',lib:'dataset.get_measuresAt()',pro:'def get_measuresAt(<span id=pn>measure</span>)',cmt:'<p>Returns the detailed set of measures for the time interval corresponding to a given condensed measures previously returned by <tt>get_preview()</tt>. The result is provided as a list of YMeasure objects.</p>',par:{measure:'condensed measure from the list previously returned by <tt>get_preview()</tt>.'},ret:'a table of records, where each record depicts the measured values during a time interval',ext:'On failure, throws an exception or returns an empty array.'};
+doc['DataSet']['get_preview']={syn:'Returns a condensed version of the measures that can retrieved in this YDataSet, as a list of YMeasure objects.',lib:'dataset.get_preview()',pro:'def get_preview()',cmt:'<p>Returns a condensed version of the measures that can retrieved in this YDataSet, as a list of YMeasure objects. Each item includes: - the start of a time interval - the end of a time interval - the minimal value observed during the time interval - the average value observed during the time interval - the maximal value observed during the time interval</p><p> This preview is available as soon as <tt>loadMore()</tt> has been called for the first time.</p>',ret:'a table of records, where each record depicts the measured values during a time interval',ext:'On failure, throws an exception or returns an empty array.'};
+doc['DataSet']['get_progress']={syn:'Returns the progress of the downloads of the measures from the data logger, on a scale from 0 to 100.',lib:'dataset.get_progress()',pro:'def get_progress()',cmt:'<p>Returns the progress of the downloads of the measures from the data logger, on a scale from 0 to 100. When the object is instantiated by <tt>get_dataSet</tt>, the progress is zero. Each time <tt>loadMore()</tt> is invoked, the progress is updated, to reach the value 100 only once all measures have been loaded.</p>',ret:'an integer in the range 0 to 100 (percentage of completion).'};
+doc['DataSet']['get_startTimeUTC']={syn:'Returns the start time of the dataset, relative to the Jan 1, 1970.',lib:'dataset.get_startTimeUTC()',pro:'def get_startTimeUTC()',cmt:'<p>Returns the start time of the dataset, relative to the Jan 1, 1970. When the YDataSet is created, the start time is the value passed in parameter to the <tt>get_dataSet()</tt> function. After the very first call to <tt>loadMore()</tt>, the start time is updated to reflect the timestamp of the first measure actually found in the dataLogger within the specified range.</p>',ret:'an unsigned number corresponding to the number of seconds between the Jan 1, 1970 and the beginning of this data set (i.e. Unix time representation of the absolute time).'};
+doc['DataSet']['get_summary']={syn:'Returns an YMeasure object which summarizes the whole DataSet.',lib:'dataset.get_summary()',pro:'def get_summary()',cmt:'<p>Returns an YMeasure object which summarizes the whole DataSet. In includes the following information: - the start of a time interval - the end of a time interval - the minimal value observed during the time interval - the average value observed during the time interval - the maximal value observed during the time interval</p><p> This summary is available as soon as <tt>loadMore()</tt> has been called for the first time.</p>',ret:'an YMeasure object'};
+doc['DataSet']['get_unit']={syn:'Returns the measuring unit for the measured value.',lib:'dataset.get_unit()',pro:'def get_unit()',cmt:'<p>Returns the measuring unit for the measured value.</p>',ret:'a string that represents a physical unit.',ext:'On failure, throws an exception or returns <tt>Y_UNIT_INVALID</tt>.'};
+doc['DataSet']['loadMore']={syn:'Loads the the next block of measures from the dataLogger, and updates the progress indicator.',lib:'dataset.loadMore()',pro:'def loadMore()',cmt:'<p>Loads the the next block of measures from the dataLogger, and updates the progress indicator.</p>',ret:'an integer in the range 0 to 100 (percentage of completion), or a negative error code in case of failure.',ext:'On failure, throws an exception or returns a negative error code.'};
+//--- (end of generated code: DataSet)
+//--- (generated code: Measure)
+doc['Measure']={'':{syn:'Measured value',inc:'from yocto_api import *',cmt:'<p>YMeasure objects are used within the API to represent a value measured at a specified time. These objects are used in particular in conjunction with the YDataSet class.</p>'}};
+doc['Measure']['get_averageValue']={syn:'Returns the average value observed during the time interval covered by this measure.',lib:'measure.get_averageValue()',pro:'def get_averageValue()',cmt:'<p>Returns the average value observed during the time interval covered by this measure.</p>',ret:'a floating-point number corresponding to the average value observed.'};
+doc['Measure']['get_endTimeUTC']={syn:'Returns the end time of the measure, relative to the Jan 1, 1970 UTC (Unix timestamp).',lib:'measure.get_endTimeUTC()',pro:'def get_endTimeUTC()',cmt:'<p>Returns the end time of the measure, relative to the Jan 1, 1970 UTC (Unix timestamp). When the recording rate is higher than 1 sample per second, the timestamp may have a fractional part.</p>',ret:'an floating point number corresponding to the number of seconds between the Jan 1, 1970 UTC and the end of this measure.'};
+doc['Measure']['get_maxValue']={syn:'Returns the largest value observed during the time interval covered by this measure.',lib:'measure.get_maxValue()',pro:'def get_maxValue()',cmt:'<p>Returns the largest value observed during the time interval covered by this measure.</p>',ret:'a floating-point number corresponding to the largest value observed.'};
+doc['Measure']['get_minValue']={syn:'Returns the smallest value observed during the time interval covered by this measure.',lib:'measure.get_minValue()',pro:'def get_minValue()',cmt:'<p>Returns the smallest value observed during the time interval covered by this measure.</p>',ret:'a floating-point number corresponding to the smallest value observed.'};
+doc['Measure']['get_startTimeUTC']={syn:'Returns the start time of the measure, relative to the Jan 1, 1970 UTC (Unix timestamp).',lib:'measure.get_startTimeUTC()',pro:'def get_startTimeUTC()',cmt:'<p>Returns the start time of the measure, relative to the Jan 1, 1970 UTC (Unix timestamp). When the recording rate is higher then 1 sample per second, the timestamp may have a fractional part.</p>',ret:'an floating point number corresponding to the number of seconds between the Jan 1, 1970 UTC and the beginning of this measure.'};
+//--- (end of generated code: Measure)
+//--- (generated code: DisplayLayer)
+doc['DisplayLayer']={'':{syn:'DisplayLayer object interface',inc:'from yocto_display import *',cmt:'<p>A DisplayLayer is an image layer containing objects to display (bitmaps, text, etc.). The content is displayed only when the layer is active on the screen (and not masked by other overlapping layers).</p>'}};
+doc['DisplayLayer']['clear']={syn:'Erases the whole content of the layer (makes it fully transparent).',lib:'displaylayer.clear()',pro:'def clear()',cmt:'<p>Erases the whole content of the layer (makes it fully transparent). This method does not change any other attribute of the layer. To reinitialize the layer attributes to defaults settings, use the method <tt>reset()</tt> instead.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['DisplayLayer']['clearConsole']={syn:'Blanks the console area within console margins, and resets the console pointer to the upper left corner of the console.',lib:'displaylayer.clearConsole()',pro:'def clearConsole()',cmt:'<p>Blanks the console area within console margins, and resets the console pointer to the upper left corner of the console.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['DisplayLayer']['consoleOut']={syn:'Outputs a message in the console area, and advances the console pointer accordingly.',lib:'displaylayer.consoleOut()',pro:'def consoleOut(<span id=pn>text</span>)',cmt:'<p>Outputs a message in the console area, and advances the console pointer accordingly. The console pointer position is automatically moved to the beginning of the next line when a newline character is met, or when the right margin is hit. When the new text to display extends below the lower margin, the console area is automatically scrolled up.</p>',par:{text:'the message to display'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['DisplayLayer']['drawBar']={syn:'Draws a filled rectangular bar at a specified position.',lib:'displaylayer.drawBar()',pro:'def drawBar(<span id=pn>x1</span>, <span id=pn>y1</span>, <span id=pn>x2</span>, <span id=pn>y2</span>)',cmt:'<p>Draws a filled rectangular bar at a specified position.</p>',par:{x1:'the distance from left of layer to the left border of the rectangle, in pixels',y1:'the distance from top of layer to the top border of the rectangle, in pixels',x2:'the distance from left of layer to the right border of the rectangle, in pixels',y2:'the distance from top of layer to the bottom border of the rectangle, in pixels'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['DisplayLayer']['drawBitmap']={syn:'Draws a bitmap at the specified position.',lib:'displaylayer.drawBitmap()',pro:'def drawBitmap(<span id=pn>x</span>, <span id=pn>y</span>, <span id=pn>w</span>, <span id=pn>bitmap</span>, <span id=pn>bgcol</span>)',cmt:'<p>Draws a bitmap at the specified position. The bitmap is provided as a binary object, where each pixel maps to a bit, from left to right and from top to bottom. The most significant bit of each byte maps to the leftmost pixel, and the least significant bit maps to the rightmost pixel. Bits set to 1 are drawn using the layer selected pen color. Bits set to 0 are drawn using the specified background gray level, unless -1 is specified, in which case they are not drawn at all (as if transparent).</p>',par:{x:'the distance from left of layer to the left of the bitmap, in pixels',y:'the distance from top of layer to the top of the bitmap, in pixels',w:'the width of the bitmap, in pixels',bitmap:'a binary object',bgcol:'the background gray level to use for zero bits (0 = black, 255 = white), or -1 to leave the pixels unchanged'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['DisplayLayer']['drawCircle']={syn:'Draws an empty circle at a specified position.',lib:'displaylayer.drawCircle()',pro:'def drawCircle(<span id=pn>x</span>, <span id=pn>y</span>, <span id=pn>r</span>)',cmt:'<p>Draws an empty circle at a specified position.</p>',par:{x:'the distance from left of layer to the center of the circle, in pixels',y:'the distance from top of layer to the center of the circle, in pixels',r:'the radius of the circle, in pixels'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['DisplayLayer']['drawDisc']={syn:'Draws a filled disc at a given position.',lib:'displaylayer.drawDisc()',pro:'def drawDisc(<span id=pn>x</span>, <span id=pn>y</span>, <span id=pn>r</span>)',cmt:'<p>Draws a filled disc at a given position.</p>',par:{x:'the distance from left of layer to the center of the disc, in pixels',y:'the distance from top of layer to the center of the disc, in pixels',r:'the radius of the disc, in pixels'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['DisplayLayer']['drawImage']={syn:'Draws a GIF image at the specified position.',lib:'displaylayer.drawImage()',pro:'def drawImage(<span id=pn>x</span>, <span id=pn>y</span>, <span id=pn>imagename</span>)',cmt:'<p>Draws a GIF image at the specified position. The GIF image must have been previously uploaded to the device built-in memory. If you experience problems using an image file, check the device logs for any error message such as missing image file or bad image file format.</p>',par:{x:'the distance from left of layer to the left of the image, in pixels',y:'the distance from top of layer to the top of the image, in pixels',imagename:'the GIF file name'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['DisplayLayer']['drawPixel']={syn:'Draws a single pixel at the specified position.',lib:'displaylayer.drawPixel()',pro:'def drawPixel(<span id=pn>x</span>, <span id=pn>y</span>)',cmt:'<p>Draws a single pixel at the specified position.</p>',par:{x:'the distance from left of layer, in pixels',y:'the distance from top of layer, in pixels'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['DisplayLayer']['drawRect']={syn:'Draws an empty rectangle at a specified position.',lib:'displaylayer.drawRect()',pro:'def drawRect(<span id=pn>x1</span>, <span id=pn>y1</span>, <span id=pn>x2</span>, <span id=pn>y2</span>)',cmt:'<p>Draws an empty rectangle at a specified position.</p>',par:{x1:'the distance from left of layer to the left border of the rectangle, in pixels',y1:'the distance from top of layer to the top border of the rectangle, in pixels',x2:'the distance from left of layer to the right border of the rectangle, in pixels',y2:'the distance from top of layer to the bottom border of the rectangle, in pixels'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['DisplayLayer']['drawText']={syn:'Draws a text string at the specified position.',lib:'displaylayer.drawText()',pro:'def drawText(<span id=pn>x</span>, <span id=pn>y</span>, <span id=pn>anchor</span>, <span id=pn>text</span>)',cmt:'<p>Draws a text string at the specified position. The point of the text that is aligned to the specified pixel position is called the anchor point, and can be chosen among several options. Text is rendered from left to right, without implicit wrapping.</p>',par:{x:'the distance from left of layer to the text anchor point, in pixels',y:'the distance from top of layer to the text anchor point, in pixels',anchor:'the text anchor point, chosen among the <tt>Y_ALIGN</tt> enumeration: <tt>Y_ALIGN_TOP_LEFT</tt>, <tt>Y_ALIGN_CENTER_LEFT</tt>, <tt>Y_ALIGN_BASELINE_LEFT</tt>, <tt>Y_ALIGN_BOTTOM_LEFT</tt>, <tt>Y_ALIGN_TOP_CENTER</tt>, <tt>Y_ALIGN_CENTER</tt>, <tt>Y_ALIGN_BASELINE_CENTER</tt>, <tt>Y_ALIGN_BOTTOM_CENTER</tt>, <tt>Y_ALIGN_TOP_DECIMAL</tt>, <tt>Y_ALIGN_CENTER_DECIMAL</tt>, <tt>Y_ALIGN_BASELINE_DECIMAL</tt>, <tt>Y_ALIGN_BOTTOM_DECIMAL</tt>, <tt>Y_ALIGN_TOP_RIGHT</tt>, <tt>Y_ALIGN_CENTER_RIGHT</tt>, <tt>Y_ALIGN_BASELINE_RIGHT</tt>, <tt>Y_ALIGN_BOTTOM_RIGHT</tt>.',text:'the text string to draw'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['DisplayLayer']['get_display']={syn:'Gets parent YDisplay.',lib:'displaylayer.get_display()',pro:'def get_display()',cmt:'<p>Gets parent YDisplay. Returns the parent YDisplay object of the current YDisplayLayer.</p>',ret:'an <tt>YDisplay</tt> object'};
+doc['DisplayLayer']['get_displayHeight']={syn:'Returns the display height, in pixels.',lib:'displaylayer.get_displayHeight()',pro:'def get_displayHeight()',cmt:'<p>Returns the display height, in pixels.</p>',ret:'an integer corresponding to the display height, in pixels On failure, throws an exception or returns Y_DISPLAYHEIGHT_INVALID.'};
+doc['DisplayLayer']['get_displayWidth']={syn:'Returns the display width, in pixels.',lib:'displaylayer.get_displayWidth()',pro:'def get_displayWidth()',cmt:'<p>Returns the display width, in pixels.</p>',ret:'an integer corresponding to the display width, in pixels On failure, throws an exception or returns Y_DISPLAYWIDTH_INVALID.'};
+doc['DisplayLayer']['get_layerHeight']={syn:'Returns the height of the layers to draw on, in pixels.',lib:'displaylayer.get_layerHeight()',pro:'def get_layerHeight()',cmt:'<p>Returns the height of the layers to draw on, in pixels.</p>',ret:'an integer corresponding to the height of the layers to draw on, in pixels',ext:'On failure, throws an exception or returns Y_LAYERHEIGHT_INVALID.'};
+doc['DisplayLayer']['get_layerWidth']={syn:'Returns the width of the layers to draw on, in pixels.',lib:'displaylayer.get_layerWidth()',pro:'def get_layerWidth()',cmt:'<p>Returns the width of the layers to draw on, in pixels.</p>',ret:'an integer corresponding to the width of the layers to draw on, in pixels',ext:'On failure, throws an exception or returns Y_LAYERWIDTH_INVALID.'};
+doc['DisplayLayer']['hide']={syn:'Hides the layer.',lib:'displaylayer.hide()',pro:'def hide()',cmt:'<p>Hides the layer. The state of the layer is perserved but the layer is not displayed on the screen until the next call to <tt>unhide()</tt>. Hiding the layer can positively affect the drawing speed, since it postpones the rendering until all operations are completed (double-buffering).</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['DisplayLayer']['lineTo']={syn:'Draws a line from current drawing pointer position to the specified position.',lib:'displaylayer.lineTo()',pro:'def lineTo(<span id=pn>x</span>, <span id=pn>y</span>)',cmt:'<p>Draws a line from current drawing pointer position to the specified position. The specified destination pixel is included in the line. The pointer position is then moved to the end point of the line.</p>',par:{x:'the distance from left of layer to the end point of the line, in pixels',y:'the distance from top of layer to the end point of the line, in pixels'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['DisplayLayer']['moveTo']={syn:'Moves the drawing pointer of this layer to the specified position.',lib:'displaylayer.moveTo()',pro:'def moveTo(<span id=pn>x</span>, <span id=pn>y</span>)',cmt:'<p>Moves the drawing pointer of this layer to the specified position.</p>',par:{x:'the distance from left of layer, in pixels',y:'the distance from top of layer, in pixels'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['DisplayLayer']['reset']={syn:'Reverts the layer to its initial state (fully transparent, default settings).',lib:'displaylayer.reset()',pro:'def reset()',cmt:'<p>Reverts the layer to its initial state (fully transparent, default settings). Reinitializes the drawing pointer to the upper left position, and selects the most visible pen color. If you only want to erase the layer content, use the method <tt>clear()</tt> instead.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['DisplayLayer']['selectColorPen']={syn:'Selects the pen color for all subsequent drawing functions, including text drawing.',lib:'displaylayer.selectColorPen()',pro:'def selectColorPen(<span id=pn>color</span>)',cmt:'<p>Selects the pen color for all subsequent drawing functions, including text drawing. The pen color is provided as an RGB value. For grayscale or monochrome displays, the value is automatically converted to the proper range.</p>',par:{color:'the desired pen color, as a 24-bit RGB value'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['DisplayLayer']['selectEraser']={syn:'Selects an eraser instead of a pen for all subsequent drawing functions, except for bitmap copy functions.',lib:'displaylayer.selectEraser()',pro:'def selectEraser()',cmt:'<p>Selects an eraser instead of a pen for all subsequent drawing functions, except for bitmap copy functions. Any point drawn using the eraser becomes transparent (as when the layer is empty), showing the other layers beneath it.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['DisplayLayer']['selectFont']={syn:'Selects a font to use for the next text drawing functions, by providing the name of the font file.',lib:'displaylayer.selectFont()',pro:'def selectFont(<span id=pn>fontname</span>)',cmt:'<p>Selects a font to use for the next text drawing functions, by providing the name of the font file. You can use a built-in font as well as a font file that you have previously uploaded to the device built-in memory. If you experience problems selecting a font file, check the device logs for any error message such as missing font file or bad font file format.</p>',par:{fontname:'the font file name'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['DisplayLayer']['selectGrayPen']={syn:'Selects the pen gray level for all subsequent drawing functions, including text drawing.',lib:'displaylayer.selectGrayPen()',pro:'def selectGrayPen(<span id=pn>graylevel</span>)',cmt:'<p>Selects the pen gray level for all subsequent drawing functions, including text drawing. The gray level is provided as a number between 0 (black) and 255 (white, or whichever the lighest color is). For monochrome displays (without gray levels), any value lower than 128 is rendered as black, and any value equal or above to 128 is non-black.</p>',par:{graylevel:'the desired gray level, from 0 to 255'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['DisplayLayer']['setAntialiasingMode']={syn:'Enables or disables anti-aliasing for drawing oblique lines and circles.',lib:'displaylayer.setAntialiasingMode()',pro:'def setAntialiasingMode(<span id=pn>mode</span>)',cmt:'<p>Enables or disables anti-aliasing for drawing oblique lines and circles. Anti-aliasing provides a smoother aspect when looked from far enough, but it can add fuzzyness when the display is looked from very close. At the end of the day, it is your personal choice. Anti-aliasing is enabled by default on grayscale and color displays, but you can disable it if you prefer. This setting has no effect on monochrome displays.</p>',par:{mode:'<t>true</t> to enable antialiasing, <t>false</t> to disable it.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['DisplayLayer']['setConsoleBackground']={syn:'Sets up the background color used by the <tt>clearConsole</tt> function and by the console scrolling feature.',lib:'displaylayer.setConsoleBackground()',pro:'def setConsoleBackground(<span id=pn>bgcol</span>)',cmt:'<p>Sets up the background color used by the <tt>clearConsole</tt> function and by the console scrolling feature.</p>',par:{bgcol:'the background gray level to use when scrolling (0 = black, 255 = white), or -1 for transparent'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['DisplayLayer']['setConsoleMargins']={syn:'Sets up display margins for the <tt>consoleOut</tt> function.',lib:'displaylayer.setConsoleMargins()',pro:'def setConsoleMargins(<span id=pn>x1</span>, <span id=pn>y1</span>, <span id=pn>x2</span>, <span id=pn>y2</span>)',cmt:'<p>Sets up display margins for the <tt>consoleOut</tt> function.</p>',par:{x1:'the distance from left of layer to the left margin, in pixels',y1:'the distance from top of layer to the top margin, in pixels',x2:'the distance from left of layer to the right margin, in pixels',y2:'the distance from top of layer to the bottom margin, in pixels'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['DisplayLayer']['setConsoleWordWrap']={syn:'Sets up the wrapping behaviour used by the <tt>consoleOut</tt> function.',lib:'displaylayer.setConsoleWordWrap()',pro:'def setConsoleWordWrap(<span id=pn>wordwrap</span>)',cmt:'<p>Sets up the wrapping behaviour used by the <tt>consoleOut</tt> function.</p>',par:{wordwrap:'<tt>true</tt> to wrap only between words, <tt>false</tt> to wrap on the last column anyway.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['DisplayLayer']['setLayerPosition']={syn:'Sets the position of the layer relative to the display upper left corner.',lib:'displaylayer.setLayerPosition()',pro:'def setLayerPosition(<span id=pn>x</span>, <span id=pn>y</span>, <span id=pn>scrollTime</span>)',cmt:'<p>Sets the position of the layer relative to the display upper left corner. When smooth scrolling is used, the display offset of the layer is automatically updated during the next milliseconds to animate the move of the layer.</p>',par:{x:'the distance from left of display to the upper left corner of the layer',y:'the distance from top of display to the upper left corner of the layer',scrollTime:'number of milliseconds to use for smooth scrolling, or 0 if the scrolling should be immediate.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['DisplayLayer']['unhide']={syn:'Shows the layer.',lib:'displaylayer.unhide()',pro:'def unhide()',cmt:'<p>Shows the layer. Shows the layer again after a hide command.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+//--- (end of generated code: DisplayLayer)
+//--- (generated code: Sensor)
+doc['Sensor']={'':{syn:'Sensor function interface',inc:'from yocto_api import *',cmt:'<p>The YSensor class is the parent class for all Yoctopuce sensors. It can be used to read the current value and unit of any sensor, read the min/max value, configure autonomous recording frequency and access recorded data. It also provide a function to register a callback invoked each time the observed value changes, or at a predefined interval. Using this class rather than a specific subclass makes it possible to create generic applications that work with any Yoctopuce sensor, even those that do not yet exist. Note: The YAnButton class is the only analog input which does not inherit from YSensor.</p>'}};
+doc['Sensor']['FindSensor']={syn:'Retrieves a sensor for a given identifier.',lib:'YSensor.FindSensor()',pro:'def FindSensor(<span id=pn>func</span>)',cmt:'<p>Retrieves a sensor for a given identifier. The identifier can be specified using several formats:<br> <ul> <li>FunctionLogicalName</li> <li>ModuleSerialNumber.FunctionIdentifier</li> <li>ModuleSerialNumber.FunctionLogicalName</li> <li>ModuleLogicalName.FunctionIdentifier</li> <li>ModuleLogicalName.FunctionLogicalName</li> </ul></p><p> This function does not require that the sensor is online at the time it is invoked. The returned object is nevertheless valid. Use the method <tt>YSensor.isOnline()</tt> to test if the sensor is indeed online at a given time. In case of ambiguity when looking for a sensor by logical name, no error is notified: the first instance found is returned. The search is performed first by hardware name, then by logical name.</p>',par:{func:'a string that uniquely characterizes the sensor'},ret:'a <tt>YSensor</tt> object allowing you to drive the sensor.'};
+doc['Sensor']['FirstSensor']={syn:'Starts the enumeration of sensors currently accessible.',lib:'YSensor.FirstSensor()',pro:'def FirstSensor()',cmt:'<p>Starts the enumeration of sensors currently accessible. Use the method <tt>YSensor.nextSensor()</tt> to iterate on next sensors.</p>',ret:'a pointer to a <tt>YSensor</tt> object, corresponding to the first sensor currently online, or a <tt>null</tt> pointer if there are none.'};
+doc['Sensor']['calibrateFromPoints']={syn:'Configures error correction data points, in particular to compensate for a possible perturbation of the measure caused by an enclosure.',lib:'sensor.calibrateFromPoints()',pro:'def calibrateFromPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Configures error correction data points, in particular to compensate for a possible perturbation of the measure caused by an enclosure. It is possible to configure up to five correction points. Correction points must be provided in ascending order, and be in the range of the sensor. The device will automatically perform a linear interpolation of the error correction between specified points. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p><p> For more information on advanced capabilities to refine the calibration of sensors, please contact support@yoctopuce.com.</p>',par:{rawValues:'array of floating point numbers, corresponding to the raw values returned by the sensor for the correction points.',refValues:'array of floating point numbers, corresponding to the corrected values for the correction points.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Sensor']['clearCache']={syn:'Invalidates the cache.',lib:'sensor.clearCache()',pro:'def clearCache()',cmt:'<p>Invalidates the cache. Invalidates the cache of the sensor attributes. Forces the next call to get_xxx() or loadxxx() to use values that come from the device.</p>'};
+doc['Sensor']['describe']={syn:'Returns a short text that describes unambiguously the instance of the sensor in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'sensor.describe()',pro:'def describe()',cmt:'<p>Returns a short text that describes unambiguously the instance of the sensor in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. More precisely, <tt>TYPE</tt> is the type of the function, <tt>NAME</tt> it the name used for the first access to the function, <tt>SERIAL</tt> is the serial number of the module if the module is connected or <tt>\x22unresolved\x22</tt>, and <tt>FUNCTIONID</tt> is the hardware identifier of the function if the module is connected. For example, this method returns <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> if the module is already connected or <tt>Relay(BadCustomeName.relay1)=unresolved</tt> if the module has not yet been connected. This method does not trigger any USB or TCP transaction and can therefore be used in a debugger.</p>',ret:'a string that describes the sensor (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['Sensor']['get_advertisedValue']={syn:'Returns the current value of the sensor (no more than 6 characters).',lib:'sensor.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Returns the current value of the sensor (no more than 6 characters).</p>',ret:'a string corresponding to the current value of the sensor (no more than 6 characters).',ext:'On failure, throws an exception or returns <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['Sensor']['get_currentRawValue']={syn:'Returns the uncalibrated, unrounded raw value returned by the sensor, in the specified unit, as a floating point number.',lib:'sensor.get_currentRawValue()',pro:'def get_currentRawValue()',cmt:'<p>Returns the uncalibrated, unrounded raw value returned by the sensor, in the specified unit, as a floating point number.</p>',ret:'a floating point number corresponding to the uncalibrated, unrounded raw value returned by the sensor, in the specified unit, as a floating point number',ext:'On failure, throws an exception or returns <tt>Y_CURRENTRAWVALUE_INVALID</tt>.'};
+doc['Sensor']['get_currentValue']={syn:'Returns the current value of the measure, in the specified unit, as a floating point number.',lib:'sensor.get_currentValue()',pro:'def get_currentValue()',cmt:'<p>Returns the current value of the measure, in the specified unit, as a floating point number.</p>',ret:'a floating point number corresponding to the current value of the measure, in the specified unit, as a floating point number',ext:'On failure, throws an exception or returns <tt>Y_CURRENTVALUE_INVALID</tt>.'};
+doc['Sensor']['get_errorMessage']={syn:'Returns the error message of the latest error with the sensor.',lib:'sensor.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Returns the error message of the latest error with the sensor. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a string corresponding to the latest error message that occured while using the sensor object'};
+doc['Sensor']['get_errorType']={syn:'Returns the numerical error code of the latest error with the sensor.',lib:'sensor.get_errorType()',pro:'def get_errorType()',cmt:'<p>Returns the numerical error code of the latest error with the sensor. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a number corresponding to the code of the latest error that occurred while using the sensor object'};
+doc['Sensor']['get_friendlyName']={syn:'Returns a global identifier of the sensor in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>.',lib:'sensor.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Returns a global identifier of the sensor in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>. The returned string uses the logical names of the module and of the sensor if they are defined, otherwise the serial number of the module and the hardware identifier of the sensor (for example: <tt>MyCustomName.relay1</tt>)</p>',ret:'a string that uniquely identifies the sensor using logical names (ex: <tt>MyCustomName.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['Sensor']['get_functionDescriptor']={syn:'Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function.',lib:'sensor.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function. This identifier can be used to test if two instances of <tt>YFunction</tt> reference the same physical function on the same physical device.</p>',ret:'an identifier of type <tt>YFUN_DESCR</tt>.',ext:'If the function has never been contacted, the returned value is <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>.'};
+doc['Sensor']['get_functionId']={syn:'Returns the hardware identifier of the sensor, without reference to the module.',lib:'sensor.get_functionId()',pro:'def get_functionId()',cmt:'<p>Returns the hardware identifier of the sensor, without reference to the module. For example <tt>relay1</tt></p>',ret:'a string that identifies the sensor (ex: <tt>relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['Sensor']['get_hardwareId']={syn:'Returns the unique hardware identifier of the sensor in the form <tt>SERIAL.FUNCTIONID</tt>.',lib:'sensor.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Returns the unique hardware identifier of the sensor in the form <tt>SERIAL.FUNCTIONID</tt>. The unique hardware identifier is composed of the device serial number and of the hardware identifier of the sensor (for example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'a string that uniquely identifies the sensor (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['Sensor']['get_highestValue']={syn:'Returns the maximal value observed for the measure since the device was started.',lib:'sensor.get_highestValue()',pro:'def get_highestValue()',cmt:'<p>Returns the maximal value observed for the measure since the device was started.</p>',ret:'a floating point number corresponding to the maximal value observed for the measure since the device was started',ext:'On failure, throws an exception or returns <tt>Y_HIGHESTVALUE_INVALID</tt>.'};
+doc['Sensor']['get_logFrequency']={syn:'Returns the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory.',lib:'sensor.get_logFrequency()',pro:'def get_logFrequency()',cmt:'<p>Returns the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory.</p>',ret:'a string corresponding to the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory',ext:'On failure, throws an exception or returns <tt>Y_LOGFREQUENCY_INVALID</tt>.'};
+doc['Sensor']['get_logicalName']={syn:'Returns the logical name of the sensor.',lib:'sensor.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Returns the logical name of the sensor.</p>',ret:'a string corresponding to the logical name of the sensor.',ext:'On failure, throws an exception or returns <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['Sensor']['get_lowestValue']={syn:'Returns the minimal value observed for the measure since the device was started.',lib:'sensor.get_lowestValue()',pro:'def get_lowestValue()',cmt:'<p>Returns the minimal value observed for the measure since the device was started.</p>',ret:'a floating point number corresponding to the minimal value observed for the measure since the device was started',ext:'On failure, throws an exception or returns <tt>Y_LOWESTVALUE_INVALID</tt>.'};
+doc['Sensor']['get_module']={syn:'Gets the <tt>YModule</tt> object for the device on which the function is located.',lib:'sensor.get_module()',pro:'def get_module()',cmt:'<p>Gets the <tt>YModule</tt> object for the device on which the function is located. If the function cannot be located on any module, the returned instance of <tt>YModule</tt> is not shown as on-line.</p>',ret:'an instance of <tt>YModule</tt>'};
+doc['Sensor']['get_recordedData']={syn:'Retrieves a DataSet object holding historical data for this sensor, for a specified time interval.',lib:'sensor.get_recordedData()',pro:'def get_recordedData(<span id=pn>startTime</span>, <span id=pn>endTime</span>)',cmt:'<p>Retrieves a DataSet object holding historical data for this sensor, for a specified time interval. The measures will be retrieved from the data logger, which must have been turned on at the desired time. See the documentation of the DataSet class for information on how to get an overview of the recorded data, and how to load progressively a large set of measures from the data logger.</p><p> This function only works if the device uses a recent firmware, as DataSet objects are not supported by firmwares older than version 13000.</p>',par:{startTime:'the start of the desired measure time interval, as a Unix timestamp, i.e. the number of seconds since January 1, 1970 UTC. The special value 0 can be used to include any meaasure, without initial limit.',endTime:'the end of the desired measure time interval, as a Unix timestamp, i.e. the number of seconds since January 1, 1970 UTC. The special value 0 can be used to include any meaasure, without ending limit.'},ret:'an instance of YDataSet, providing access to historical data. Past measures can be loaded progressively using methods from the YDataSet object.'};
+doc['Sensor']['get_reportFrequency']={syn:'Returns the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function.',lib:'sensor.get_reportFrequency()',pro:'def get_reportFrequency()',cmt:'<p>Returns the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function.</p>',ret:'a string corresponding to the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function',ext:'On failure, throws an exception or returns <tt>Y_REPORTFREQUENCY_INVALID</tt>.'};
+doc['Sensor']['get_resolution']={syn:'Returns the resolution of the measured values.',lib:'sensor.get_resolution()',pro:'def get_resolution()',cmt:'<p>Returns the resolution of the measured values. The resolution corresponds to the numerical precision of the measures, which is not always the same as the actual precision of the sensor.</p>',ret:'a floating point number corresponding to the resolution of the measured values',ext:'On failure, throws an exception or returns <tt>Y_RESOLUTION_INVALID</tt>.'};
+doc['Sensor']['get_sensorState']={syn:'Returns the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now.',lib:'sensor.get_sensorState()',pro:'def get_sensorState()',cmt:'<p>Returns the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now.</p>',ret:'an integer corresponding to the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now',ext:'On failure, throws an exception or returns <tt>Y_SENSORSTATE_INVALID</tt>.'};
+doc['Sensor']['get_unit']={syn:'Returns the measuring unit for the measure.',lib:'sensor.get_unit()',pro:'def get_unit()',cmt:'<p>Returns the measuring unit for the measure.</p>',ret:'a string corresponding to the measuring unit for the measure',ext:'On failure, throws an exception or returns <tt>Y_UNIT_INVALID</tt>.'};
+doc['Sensor']['get_userData']={syn:'Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>.',lib:'sensor.get_userData()',pro:'def get_userData()',cmt:'<p>Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>. This attribute is never touched directly by the API, and is at disposal of the caller to store a context.</p>',ret:'the object stored previously by the caller.'};
+doc['Sensor']['isOnline']={syn:'Checks if the sensor is currently reachable, without raising any error.',lib:'sensor.isOnline()',pro:'def isOnline()',cmt:'<p>Checks if the sensor is currently reachable, without raising any error. If there is a cached value for the sensor in cache, that has not yet expired, the device is considered reachable. No exception is raised if there is an error while trying to contact the device hosting the sensor.</p>',ret:'<tt>true</tt> if the sensor can be reached, and <tt>false</tt> otherwise'};
+doc['Sensor']['isSensorReady']={syn:'Checks if the sensor is currently able to provide an up-to-date measure.',lib:'sensor.isSensorReady()',pro:'def isSensorReady()',cmt:'<p>Checks if the sensor is currently able to provide an up-to-date measure. Returns false if the device is unreachable, or if the sensor does not have a current measure to transmit. No exception is raised if there is an error while trying to contact the device hosting $THEFUNCTION$.</p>',ret:'<tt>true</tt> if the sensor can provide an up-to-date measure, and <tt>false</tt> otherwise'};
+doc['Sensor']['load']={syn:'Preloads the sensor cache with a specified validity duration.',lib:'sensor.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Preloads the sensor cache with a specified validity duration. By default, whenever accessing a device, all function attributes are kept in cache for the standard duration (5 ms). This method can be used to temporarily mark the cache as valid for a longer period, in order to reduce network traffic for instance.</p>',par:{msValidity:'an integer corresponding to the validity attributed to the loaded function parameters, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Sensor']['loadAttribute']={syn:'Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.',lib:'sensor.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'On failure, throws an exception or returns an empty string.'};
+doc['Sensor']['loadCalibrationPoints']={syn:'Retrieves error correction data points previously entered using the method <tt>calibrateFromPoints</tt>.',lib:'sensor.loadCalibrationPoints()',pro:'def loadCalibrationPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Retrieves error correction data points previously entered using the method <tt>calibrateFromPoints</tt>.</p>',par:{rawValues:'array of floating point numbers, that will be filled by the function with the raw sensor values for the correction points.',refValues:'array of floating point numbers, that will be filled by the function with the desired values for the correction points.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Sensor']['muteValueCallbacks']={syn:'Disable the propagation of every new advertised value to the parent hub.',lib:'sensor.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>Disable the propagation of every new advertised value to the parent hub. You can use this function to save bandwidth and CPU on computers with limited resources, or to prevent unwanted invocations of the HTTP callback. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Sensor']['nextSensor']={syn:'Continues the enumeration of sensors started using <tt>yFirstSensor()</tt>.',lib:'sensor.nextSensor()',pro:'def nextSensor()',cmt:'<p>Continues the enumeration of sensors started using <tt>yFirstSensor()</tt>.</p>',ret:'a pointer to a <tt>YSensor</tt> object, corresponding to a sensor currently online, or a <tt>null</tt> pointer if there are no more sensors to enumerate.'};
+doc['Sensor']['registerTimedReportCallback']={syn:'Registers the callback function that is invoked on every periodic timed notification.',lib:'sensor.registerTimedReportCallback()',pro:'def registerTimedReportCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every periodic timed notification. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and an YMeasure object describing the new advertised value.'}};
+doc['Sensor']['registerValueCallback']={syn:'Registers the callback function that is invoked on every change of advertised value.',lib:'sensor.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every change of advertised value. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and the character string describing the new advertised value.'}};
+doc['Sensor']['set_highestValue']={syn:'Changes the recorded maximal value observed.',lib:'sensor.set_highestValue()',pro:'def set_highestValue(<span id=pn>newval</span>)',cmt:'<p>Changes the recorded maximal value observed.</p>',par:{newval:'a floating point number corresponding to the recorded maximal value observed'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Sensor']['set_logFrequency']={syn:'Changes the datalogger recording frequency for this function.',lib:'sensor.set_logFrequency()',pro:'def set_logFrequency(<span id=pn>newval</span>)',cmt:'<p>Changes the datalogger recording frequency for this function. The frequency can be specified as samples per second, as sample per minute (for instance \x2215/m\x22) or in samples per hour (eg. \x224/h\x22). To disable recording for this function, use the value \x22OFF\x22.</p>',par:{newval:'a string corresponding to the datalogger recording frequency for this function'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Sensor']['set_logicalName']={syn:'Changes the logical name of the sensor.',lib:'sensor.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Changes the logical name of the sensor. You can use <tt>yCheckLogicalName()</tt> prior to this call to make sure that your parameter is valid. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the logical name of the sensor.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Sensor']['set_lowestValue']={syn:'Changes the recorded minimal value observed.',lib:'sensor.set_lowestValue()',pro:'def set_lowestValue(<span id=pn>newval</span>)',cmt:'<p>Changes the recorded minimal value observed.</p>',par:{newval:'a floating point number corresponding to the recorded minimal value observed'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Sensor']['set_reportFrequency']={syn:'Changes the timed value notification frequency for this function.',lib:'sensor.set_reportFrequency()',pro:'def set_reportFrequency(<span id=pn>newval</span>)',cmt:'<p>Changes the timed value notification frequency for this function. The frequency can be specified as samples per second, as sample per minute (for instance \x2215/m\x22) or in samples per hour (eg. \x224/h\x22). To disable timed value notifications for this function, use the value \x22OFF\x22.</p>',par:{newval:'a string corresponding to the timed value notification frequency for this function'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Sensor']['set_resolution']={syn:'Changes the resolution of the measured physical values.',lib:'sensor.set_resolution()',pro:'def set_resolution(<span id=pn>newval</span>)',cmt:'<p>Changes the resolution of the measured physical values. The resolution corresponds to the numerical precision when displaying value. It does not change the precision of the measure itself.</p>',par:{newval:'a floating point number corresponding to the resolution of the measured physical values'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Sensor']['set_userData']={syn:'Stores a user context provided as argument in the userData attribute of the function.',lib:'sensor.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Stores a user context provided as argument in the userData attribute of the function. This attribute is never touched by the API, and is at disposal of the caller to store a context.</p>',par:{data:'any kind of object to be stored'}};
+doc['Sensor']['startDataLogger']={syn:'Starts the data logger on the device.',lib:'sensor.startDataLogger()',pro:'def startDataLogger()',cmt:'<p>Starts the data logger on the device. Note that the data logger will only save the measures on this sensor if the logFrequency is not set to \x22OFF\x22.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.'};
+doc['Sensor']['stopDataLogger']={syn:'Stops the datalogger on the device.',lib:'sensor.stopDataLogger()',pro:'def stopDataLogger()',cmt:'<p>Stops the datalogger on the device.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.'};
+doc['Sensor']['unmuteValueCallbacks']={syn:'Re-enable the propagation of every new advertised value to the parent hub.',lib:'sensor.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>Re-enable the propagation of every new advertised value to the parent hub. This function reverts the effect of a previous call to <tt>muteValueCallbacks()</tt>. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+//--- (end of generated code: Sensor)
+//--- (generated code: Accelerometer)
+doc['Accelerometer']={'':{syn:'Accelerometer function interface',inc:'from yocto_accelerometer import *',cmt:'<p>The YSensor class is the parent class for all Yoctopuce sensors. It can be used to read the current value and unit of any sensor, read the min/max value, configure autonomous recording frequency and access recorded data. It also provide a function to register a callback invoked each time the observed value changes, or at a predefined interval. Using this class rather than a specific subclass makes it possible to create generic applications that work with any Yoctopuce sensor, even those that do not yet exist. Note: The YAnButton class is the only analog input which does not inherit from YSensor.</p>'}};
+doc['Accelerometer']['FindAccelerometer']={syn:'Retrieves an accelerometer for a given identifier.',lib:'YAccelerometer.FindAccelerometer()',pro:'def FindAccelerometer(<span id=pn>func</span>)',cmt:'<p>Retrieves an accelerometer for a given identifier. The identifier can be specified using several formats:<br> <ul> <li>FunctionLogicalName</li> <li>ModuleSerialNumber.FunctionIdentifier</li> <li>ModuleSerialNumber.FunctionLogicalName</li> <li>ModuleLogicalName.FunctionIdentifier</li> <li>ModuleLogicalName.FunctionLogicalName</li> </ul></p><p> This function does not require that the accelerometer is online at the time it is invoked. The returned object is nevertheless valid. Use the method <tt>YAccelerometer.isOnline()</tt> to test if the accelerometer is indeed online at a given time. In case of ambiguity when looking for an accelerometer by logical name, no error is notified: the first instance found is returned. The search is performed first by hardware name, then by logical name.</p>',par:{func:'a string that uniquely characterizes the accelerometer'},ret:'a <tt>YAccelerometer</tt> object allowing you to drive the accelerometer.'};
+doc['Accelerometer']['FirstAccelerometer']={syn:'Starts the enumeration of accelerometers currently accessible.',lib:'YAccelerometer.FirstAccelerometer()',pro:'def FirstAccelerometer()',cmt:'<p>Starts the enumeration of accelerometers currently accessible. Use the method <tt>YAccelerometer.nextAccelerometer()</tt> to iterate on next accelerometers.</p>',ret:'a pointer to a <tt>YAccelerometer</tt> object, corresponding to the first accelerometer currently online, or a <tt>null</tt> pointer if there are none.'};
+doc['Accelerometer']['calibrateFromPoints']={syn:'Configures error correction data points, in particular to compensate for a possible perturbation of the measure caused by an enclosure.',lib:'accelerometer.calibrateFromPoints()',pro:'def calibrateFromPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Configures error correction data points, in particular to compensate for a possible perturbation of the measure caused by an enclosure. It is possible to configure up to five correction points. Correction points must be provided in ascending order, and be in the range of the sensor. The device will automatically perform a linear interpolation of the error correction between specified points. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p><p> For more information on advanced capabilities to refine the calibration of sensors, please contact support@yoctopuce.com.</p>',par:{rawValues:'array of floating point numbers, corresponding to the raw values returned by the sensor for the correction points.',refValues:'array of floating point numbers, corresponding to the corrected values for the correction points.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Accelerometer']['clearCache']={syn:'Invalidates the cache.',lib:'accelerometer.clearCache()',pro:'def clearCache()',cmt:'<p>Invalidates the cache. Invalidates the cache of the accelerometer attributes. Forces the next call to get_xxx() or loadxxx() to use values that come from the device.</p>'};
+doc['Accelerometer']['describe']={syn:'Returns a short text that describes unambiguously the instance of the accelerometer in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'accelerometer.describe()',pro:'def describe()',cmt:'<p>Returns a short text that describes unambiguously the instance of the accelerometer in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. More precisely, <tt>TYPE</tt> is the type of the function, <tt>NAME</tt> it the name used for the first access to the function, <tt>SERIAL</tt> is the serial number of the module if the module is connected or <tt>\x22unresolved\x22</tt>, and <tt>FUNCTIONID</tt> is the hardware identifier of the function if the module is connected. For example, this method returns <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> if the module is already connected or <tt>Relay(BadCustomeName.relay1)=unresolved</tt> if the module has not yet been connected. This method does not trigger any USB or TCP transaction and can therefore be used in a debugger.</p>',ret:'a string that describes the accelerometer (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['Accelerometer']['get_advertisedValue']={syn:'Returns the current value of the accelerometer (no more than 6 characters).',lib:'accelerometer.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Returns the current value of the accelerometer (no more than 6 characters).</p>',ret:'a string corresponding to the current value of the accelerometer (no more than 6 characters).',ext:'On failure, throws an exception or returns <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['Accelerometer']['get_bandwidth']={syn:'Returns the measure update frequency, measured in Hz (Yocto-3D-V2 only).',lib:'accelerometer.get_bandwidth()',pro:'def get_bandwidth()',cmt:'<p>Returns the measure update frequency, measured in Hz (Yocto-3D-V2 only).</p>',ret:'an integer corresponding to the measure update frequency, measured in Hz (Yocto-3D-V2 only)',ext:'On failure, throws an exception or returns <tt>Y_BANDWIDTH_INVALID</tt>.'};
+doc['Accelerometer']['get_currentRawValue']={syn:'Returns the uncalibrated, unrounded raw value returned by the sensor, in g, as a floating point number.',lib:'accelerometer.get_currentRawValue()',pro:'def get_currentRawValue()',cmt:'<p>Returns the uncalibrated, unrounded raw value returned by the sensor, in g, as a floating point number.</p>',ret:'a floating point number corresponding to the uncalibrated, unrounded raw value returned by the sensor, in g, as a floating point number',ext:'On failure, throws an exception or returns <tt>Y_CURRENTRAWVALUE_INVALID</tt>.'};
+doc['Accelerometer']['get_currentValue']={syn:'Returns the current value of the acceleration, in g, as a floating point number.',lib:'accelerometer.get_currentValue()',pro:'def get_currentValue()',cmt:'<p>Returns the current value of the acceleration, in g, as a floating point number.</p>',ret:'a floating point number corresponding to the current value of the acceleration, in g, as a floating point number',ext:'On failure, throws an exception or returns <tt>Y_CURRENTVALUE_INVALID</tt>.'};
+doc['Accelerometer']['get_errorMessage']={syn:'Returns the error message of the latest error with the accelerometer.',lib:'accelerometer.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Returns the error message of the latest error with the accelerometer. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a string corresponding to the latest error message that occured while using the accelerometer object'};
+doc['Accelerometer']['get_errorType']={syn:'Returns the numerical error code of the latest error with the accelerometer.',lib:'accelerometer.get_errorType()',pro:'def get_errorType()',cmt:'<p>Returns the numerical error code of the latest error with the accelerometer. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a number corresponding to the code of the latest error that occurred while using the accelerometer object'};
+doc['Accelerometer']['get_friendlyName']={syn:'Returns a global identifier of the accelerometer in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>.',lib:'accelerometer.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Returns a global identifier of the accelerometer in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>. The returned string uses the logical names of the module and of the accelerometer if they are defined, otherwise the serial number of the module and the hardware identifier of the accelerometer (for example: <tt>MyCustomName.relay1</tt>)</p>',ret:'a string that uniquely identifies the accelerometer using logical names (ex: <tt>MyCustomName.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['Accelerometer']['get_functionDescriptor']={syn:'Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function.',lib:'accelerometer.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function. This identifier can be used to test if two instances of <tt>YFunction</tt> reference the same physical function on the same physical device.</p>',ret:'an identifier of type <tt>YFUN_DESCR</tt>.',ext:'If the function has never been contacted, the returned value is <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>.'};
+doc['Accelerometer']['get_functionId']={syn:'Returns the hardware identifier of the accelerometer, without reference to the module.',lib:'accelerometer.get_functionId()',pro:'def get_functionId()',cmt:'<p>Returns the hardware identifier of the accelerometer, without reference to the module. For example <tt>relay1</tt></p>',ret:'a string that identifies the accelerometer (ex: <tt>relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['Accelerometer']['get_hardwareId']={syn:'Returns the unique hardware identifier of the accelerometer in the form <tt>SERIAL.FUNCTIONID</tt>.',lib:'accelerometer.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Returns the unique hardware identifier of the accelerometer in the form <tt>SERIAL.FUNCTIONID</tt>. The unique hardware identifier is composed of the device serial number and of the hardware identifier of the accelerometer (for example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'a string that uniquely identifies the accelerometer (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['Accelerometer']['get_highestValue']={syn:'Returns the maximal value observed for the acceleration since the device was started.',lib:'accelerometer.get_highestValue()',pro:'def get_highestValue()',cmt:'<p>Returns the maximal value observed for the acceleration since the device was started.</p>',ret:'a floating point number corresponding to the maximal value observed for the acceleration since the device was started',ext:'On failure, throws an exception or returns <tt>Y_HIGHESTVALUE_INVALID</tt>.'};
+doc['Accelerometer']['get_logFrequency']={syn:'Returns the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory.',lib:'accelerometer.get_logFrequency()',pro:'def get_logFrequency()',cmt:'<p>Returns the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory.</p>',ret:'a string corresponding to the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory',ext:'On failure, throws an exception or returns <tt>Y_LOGFREQUENCY_INVALID</tt>.'};
+doc['Accelerometer']['get_logicalName']={syn:'Returns the logical name of the accelerometer.',lib:'accelerometer.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Returns the logical name of the accelerometer.</p>',ret:'a string corresponding to the logical name of the accelerometer.',ext:'On failure, throws an exception or returns <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['Accelerometer']['get_lowestValue']={syn:'Returns the minimal value observed for the acceleration since the device was started.',lib:'accelerometer.get_lowestValue()',pro:'def get_lowestValue()',cmt:'<p>Returns the minimal value observed for the acceleration since the device was started.</p>',ret:'a floating point number corresponding to the minimal value observed for the acceleration since the device was started',ext:'On failure, throws an exception or returns <tt>Y_LOWESTVALUE_INVALID</tt>.'};
+doc['Accelerometer']['get_module']={syn:'Gets the <tt>YModule</tt> object for the device on which the function is located.',lib:'accelerometer.get_module()',pro:'def get_module()',cmt:'<p>Gets the <tt>YModule</tt> object for the device on which the function is located. If the function cannot be located on any module, the returned instance of <tt>YModule</tt> is not shown as on-line.</p>',ret:'an instance of <tt>YModule</tt>'};
+doc['Accelerometer']['get_recordedData']={syn:'Retrieves a DataSet object holding historical data for this sensor, for a specified time interval.',lib:'accelerometer.get_recordedData()',pro:'def get_recordedData(<span id=pn>startTime</span>, <span id=pn>endTime</span>)',cmt:'<p>Retrieves a DataSet object holding historical data for this sensor, for a specified time interval. The measures will be retrieved from the data logger, which must have been turned on at the desired time. See the documentation of the DataSet class for information on how to get an overview of the recorded data, and how to load progressively a large set of measures from the data logger.</p><p> This function only works if the device uses a recent firmware, as DataSet objects are not supported by firmwares older than version 13000.</p>',par:{startTime:'the start of the desired measure time interval, as a Unix timestamp, i.e. the number of seconds since January 1, 1970 UTC. The special value 0 can be used to include any meaasure, without initial limit.',endTime:'the end of the desired measure time interval, as a Unix timestamp, i.e. the number of seconds since January 1, 1970 UTC. The special value 0 can be used to include any meaasure, without ending limit.'},ret:'an instance of YDataSet, providing access to historical data. Past measures can be loaded progressively using methods from the YDataSet object.'};
+doc['Accelerometer']['get_reportFrequency']={syn:'Returns the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function.',lib:'accelerometer.get_reportFrequency()',pro:'def get_reportFrequency()',cmt:'<p>Returns the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function.</p>',ret:'a string corresponding to the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function',ext:'On failure, throws an exception or returns <tt>Y_REPORTFREQUENCY_INVALID</tt>.'};
+doc['Accelerometer']['get_resolution']={syn:'Returns the resolution of the measured values.',lib:'accelerometer.get_resolution()',pro:'def get_resolution()',cmt:'<p>Returns the resolution of the measured values. The resolution corresponds to the numerical precision of the measures, which is not always the same as the actual precision of the sensor.</p>',ret:'a floating point number corresponding to the resolution of the measured values',ext:'On failure, throws an exception or returns <tt>Y_RESOLUTION_INVALID</tt>.'};
+doc['Accelerometer']['get_sensorState']={syn:'Returns the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now.',lib:'accelerometer.get_sensorState()',pro:'def get_sensorState()',cmt:'<p>Returns the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now.</p>',ret:'an integer corresponding to the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now',ext:'On failure, throws an exception or returns <tt>Y_SENSORSTATE_INVALID</tt>.'};
+doc['Accelerometer']['get_unit']={syn:'Returns the measuring unit for the acceleration.',lib:'accelerometer.get_unit()',pro:'def get_unit()',cmt:'<p>Returns the measuring unit for the acceleration.</p>',ret:'a string corresponding to the measuring unit for the acceleration',ext:'On failure, throws an exception or returns <tt>Y_UNIT_INVALID</tt>.'};
+doc['Accelerometer']['get_userData']={syn:'Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>.',lib:'accelerometer.get_userData()',pro:'def get_userData()',cmt:'<p>Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>. This attribute is never touched directly by the API, and is at disposal of the caller to store a context.</p>',ret:'the object stored previously by the caller.'};
+doc['Accelerometer']['get_xValue']={syn:'Returns the X component of the acceleration, as a floating point number.',lib:'accelerometer.get_xValue()',pro:'def get_xValue()',cmt:'<p>Returns the X component of the acceleration, as a floating point number.</p>',ret:'a floating point number corresponding to the X component of the acceleration, as a floating point number',ext:'On failure, throws an exception or returns <tt>Y_XVALUE_INVALID</tt>.'};
+doc['Accelerometer']['get_yValue']={syn:'Returns the Y component of the acceleration, as a floating point number.',lib:'accelerometer.get_yValue()',pro:'def get_yValue()',cmt:'<p>Returns the Y component of the acceleration, as a floating point number.</p>',ret:'a floating point number corresponding to the Y component of the acceleration, as a floating point number',ext:'On failure, throws an exception or returns <tt>Y_YVALUE_INVALID</tt>.'};
+doc['Accelerometer']['get_zValue']={syn:'Returns the Z component of the acceleration, as a floating point number.',lib:'accelerometer.get_zValue()',pro:'def get_zValue()',cmt:'<p>Returns the Z component of the acceleration, as a floating point number.</p>',ret:'a floating point number corresponding to the Z component of the acceleration, as a floating point number',ext:'On failure, throws an exception or returns <tt>Y_ZVALUE_INVALID</tt>.'};
+doc['Accelerometer']['isOnline']={syn:'Checks if the accelerometer is currently reachable, without raising any error.',lib:'accelerometer.isOnline()',pro:'def isOnline()',cmt:'<p>Checks if the accelerometer is currently reachable, without raising any error. If there is a cached value for the accelerometer in cache, that has not yet expired, the device is considered reachable. No exception is raised if there is an error while trying to contact the device hosting the accelerometer.</p>',ret:'<tt>true</tt> if the accelerometer can be reached, and <tt>false</tt> otherwise'};
+doc['Accelerometer']['load']={syn:'Preloads the accelerometer cache with a specified validity duration.',lib:'accelerometer.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Preloads the accelerometer cache with a specified validity duration. By default, whenever accessing a device, all function attributes are kept in cache for the standard duration (5 ms). This method can be used to temporarily mark the cache as valid for a longer period, in order to reduce network traffic for instance.</p>',par:{msValidity:'an integer corresponding to the validity attributed to the loaded function parameters, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Accelerometer']['loadAttribute']={syn:'Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.',lib:'accelerometer.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'On failure, throws an exception or returns an empty string.'};
+doc['Accelerometer']['loadCalibrationPoints']={syn:'Retrieves error correction data points previously entered using the method <tt>calibrateFromPoints</tt>.',lib:'accelerometer.loadCalibrationPoints()',pro:'def loadCalibrationPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Retrieves error correction data points previously entered using the method <tt>calibrateFromPoints</tt>.</p>',par:{rawValues:'array of floating point numbers, that will be filled by the function with the raw sensor values for the correction points.',refValues:'array of floating point numbers, that will be filled by the function with the desired values for the correction points.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Accelerometer']['muteValueCallbacks']={syn:'Disable the propagation of every new advertised value to the parent hub.',lib:'accelerometer.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>Disable the propagation of every new advertised value to the parent hub. You can use this function to save bandwidth and CPU on computers with limited resources, or to prevent unwanted invocations of the HTTP callback. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Accelerometer']['nextAccelerometer']={syn:'Continues the enumeration of accelerometers started using <tt>yFirstAccelerometer()</tt>.',lib:'accelerometer.nextAccelerometer()',pro:'def nextAccelerometer()',cmt:'<p>Continues the enumeration of accelerometers started using <tt>yFirstAccelerometer()</tt>.</p>',ret:'a pointer to a <tt>YAccelerometer</tt> object, corresponding to an accelerometer currently online, or a <tt>null</tt> pointer if there are no more accelerometers to enumerate.'};
+doc['Accelerometer']['registerTimedReportCallback']={syn:'Registers the callback function that is invoked on every periodic timed notification.',lib:'accelerometer.registerTimedReportCallback()',pro:'def registerTimedReportCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every periodic timed notification. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and an YMeasure object describing the new advertised value.'}};
+doc['Accelerometer']['registerValueCallback']={syn:'Registers the callback function that is invoked on every change of advertised value.',lib:'accelerometer.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every change of advertised value. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and the character string describing the new advertised value.'}};
+doc['Accelerometer']['set_bandwidth']={syn:'Changes the measure update frequency, measured in Hz (Yocto-3D-V2 only).',lib:'accelerometer.set_bandwidth()',pro:'def set_bandwidth(<span id=pn>newval</span>)',cmt:'<p>Changes the measure update frequency, measured in Hz (Yocto-3D-V2 only). When the frequency is lower, the device performs averaging.</p>',par:{newval:'an integer corresponding to the measure update frequency, measured in Hz (Yocto-3D-V2 only)'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Accelerometer']['set_highestValue']={syn:'Changes the recorded maximal value observed.',lib:'accelerometer.set_highestValue()',pro:'def set_highestValue(<span id=pn>newval</span>)',cmt:'<p>Changes the recorded maximal value observed.</p>',par:{newval:'a floating point number corresponding to the recorded maximal value observed'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Accelerometer']['set_logFrequency']={syn:'Changes the datalogger recording frequency for this function.',lib:'accelerometer.set_logFrequency()',pro:'def set_logFrequency(<span id=pn>newval</span>)',cmt:'<p>Changes the datalogger recording frequency for this function. The frequency can be specified as samples per second, as sample per minute (for instance \x2215/m\x22) or in samples per hour (eg. \x224/h\x22). To disable recording for this function, use the value \x22OFF\x22.</p>',par:{newval:'a string corresponding to the datalogger recording frequency for this function'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Accelerometer']['set_logicalName']={syn:'Changes the logical name of the accelerometer.',lib:'accelerometer.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Changes the logical name of the accelerometer. You can use <tt>yCheckLogicalName()</tt> prior to this call to make sure that your parameter is valid. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the logical name of the accelerometer.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Accelerometer']['set_lowestValue']={syn:'Changes the recorded minimal value observed.',lib:'accelerometer.set_lowestValue()',pro:'def set_lowestValue(<span id=pn>newval</span>)',cmt:'<p>Changes the recorded minimal value observed.</p>',par:{newval:'a floating point number corresponding to the recorded minimal value observed'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Accelerometer']['set_reportFrequency']={syn:'Changes the timed value notification frequency for this function.',lib:'accelerometer.set_reportFrequency()',pro:'def set_reportFrequency(<span id=pn>newval</span>)',cmt:'<p>Changes the timed value notification frequency for this function. The frequency can be specified as samples per second, as sample per minute (for instance \x2215/m\x22) or in samples per hour (eg. \x224/h\x22). To disable timed value notifications for this function, use the value \x22OFF\x22.</p>',par:{newval:'a string corresponding to the timed value notification frequency for this function'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Accelerometer']['set_resolution']={syn:'Changes the resolution of the measured physical values.',lib:'accelerometer.set_resolution()',pro:'def set_resolution(<span id=pn>newval</span>)',cmt:'<p>Changes the resolution of the measured physical values. The resolution corresponds to the numerical precision when displaying value. It does not change the precision of the measure itself.</p>',par:{newval:'a floating point number corresponding to the resolution of the measured physical values'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Accelerometer']['set_userData']={syn:'Stores a user context provided as argument in the userData attribute of the function.',lib:'accelerometer.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Stores a user context provided as argument in the userData attribute of the function. This attribute is never touched by the API, and is at disposal of the caller to store a context.</p>',par:{data:'any kind of object to be stored'}};
+doc['Accelerometer']['startDataLogger']={syn:'Starts the data logger on the device.',lib:'accelerometer.startDataLogger()',pro:'def startDataLogger()',cmt:'<p>Starts the data logger on the device. Note that the data logger will only save the measures on this sensor if the logFrequency is not set to \x22OFF\x22.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.'};
+doc['Accelerometer']['stopDataLogger']={syn:'Stops the datalogger on the device.',lib:'accelerometer.stopDataLogger()',pro:'def stopDataLogger()',cmt:'<p>Stops the datalogger on the device.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.'};
+doc['Accelerometer']['unmuteValueCallbacks']={syn:'Re-enable the propagation of every new advertised value to the parent hub.',lib:'accelerometer.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>Re-enable the propagation of every new advertised value to the parent hub. This function reverts the effect of a previous call to <tt>muteValueCallbacks()</tt>. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+//--- (end of generated code: Accelerometer)
+//--- (generated code: Magnetometer)
+doc['Magnetometer']={'':{syn:'Magnetometer function interface',inc:'from yocto_magnetometer import *',cmt:'<p>The YSensor class is the parent class for all Yoctopuce sensors. It can be used to read the current value and unit of any sensor, read the min/max value, configure autonomous recording frequency and access recorded data. It also provide a function to register a callback invoked each time the observed value changes, or at a predefined interval. Using this class rather than a specific subclass makes it possible to create generic applications that work with any Yoctopuce sensor, even those that do not yet exist. Note: The YAnButton class is the only analog input which does not inherit from YSensor.</p>'}};
+doc['Magnetometer']['FindMagnetometer']={syn:'Retrieves a magnetometer for a given identifier.',lib:'YMagnetometer.FindMagnetometer()',pro:'def FindMagnetometer(<span id=pn>func</span>)',cmt:'<p>Retrieves a magnetometer for a given identifier. The identifier can be specified using several formats:<br> <ul> <li>FunctionLogicalName</li> <li>ModuleSerialNumber.FunctionIdentifier</li> <li>ModuleSerialNumber.FunctionLogicalName</li> <li>ModuleLogicalName.FunctionIdentifier</li> <li>ModuleLogicalName.FunctionLogicalName</li> </ul></p><p> This function does not require that the magnetometer is online at the time it is invoked. The returned object is nevertheless valid. Use the method <tt>YMagnetometer.isOnline()</tt> to test if the magnetometer is indeed online at a given time. In case of ambiguity when looking for a magnetometer by logical name, no error is notified: the first instance found is returned. The search is performed first by hardware name, then by logical name.</p>',par:{func:'a string that uniquely characterizes the magnetometer'},ret:'a <tt>YMagnetometer</tt> object allowing you to drive the magnetometer.'};
+doc['Magnetometer']['FirstMagnetometer']={syn:'Starts the enumeration of magnetometers currently accessible.',lib:'YMagnetometer.FirstMagnetometer()',pro:'def FirstMagnetometer()',cmt:'<p>Starts the enumeration of magnetometers currently accessible. Use the method <tt>YMagnetometer.nextMagnetometer()</tt> to iterate on next magnetometers.</p>',ret:'a pointer to a <tt>YMagnetometer</tt> object, corresponding to the first magnetometer currently online, or a <tt>null</tt> pointer if there are none.'};
+doc['Magnetometer']['calibrateFromPoints']={syn:'Configures error correction data points, in particular to compensate for a possible perturbation of the measure caused by an enclosure.',lib:'magnetometer.calibrateFromPoints()',pro:'def calibrateFromPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Configures error correction data points, in particular to compensate for a possible perturbation of the measure caused by an enclosure. It is possible to configure up to five correction points. Correction points must be provided in ascending order, and be in the range of the sensor. The device will automatically perform a linear interpolation of the error correction between specified points. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p><p> For more information on advanced capabilities to refine the calibration of sensors, please contact support@yoctopuce.com.</p>',par:{rawValues:'array of floating point numbers, corresponding to the raw values returned by the sensor for the correction points.',refValues:'array of floating point numbers, corresponding to the corrected values for the correction points.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Magnetometer']['clearCache']={syn:'Invalidates the cache.',lib:'magnetometer.clearCache()',pro:'def clearCache()',cmt:'<p>Invalidates the cache. Invalidates the cache of the magnetometer attributes. Forces the next call to get_xxx() or loadxxx() to use values that come from the device.</p>'};
+doc['Magnetometer']['describe']={syn:'Returns a short text that describes unambiguously the instance of the magnetometer in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'magnetometer.describe()',pro:'def describe()',cmt:'<p>Returns a short text that describes unambiguously the instance of the magnetometer in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. More precisely, <tt>TYPE</tt> is the type of the function, <tt>NAME</tt> it the name used for the first access to the function, <tt>SERIAL</tt> is the serial number of the module if the module is connected or <tt>\x22unresolved\x22</tt>, and <tt>FUNCTIONID</tt> is the hardware identifier of the function if the module is connected. For example, this method returns <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> if the module is already connected or <tt>Relay(BadCustomeName.relay1)=unresolved</tt> if the module has not yet been connected. This method does not trigger any USB or TCP transaction and can therefore be used in a debugger.</p>',ret:'a string that describes the magnetometer (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['Magnetometer']['get_advertisedValue']={syn:'Returns the current value of the magnetometer (no more than 6 characters).',lib:'magnetometer.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Returns the current value of the magnetometer (no more than 6 characters).</p>',ret:'a string corresponding to the current value of the magnetometer (no more than 6 characters).',ext:'On failure, throws an exception or returns <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['Magnetometer']['get_bandwidth']={syn:'Returns the measure update frequency, measured in Hz (Yocto-3D-V2 only).',lib:'magnetometer.get_bandwidth()',pro:'def get_bandwidth()',cmt:'<p>Returns the measure update frequency, measured in Hz (Yocto-3D-V2 only).</p>',ret:'an integer corresponding to the measure update frequency, measured in Hz (Yocto-3D-V2 only)',ext:'On failure, throws an exception or returns <tt>Y_BANDWIDTH_INVALID</tt>.'};
+doc['Magnetometer']['get_currentRawValue']={syn:'Returns the uncalibrated, unrounded raw value returned by the sensor, in mT, as a floating point number.',lib:'magnetometer.get_currentRawValue()',pro:'def get_currentRawValue()',cmt:'<p>Returns the uncalibrated, unrounded raw value returned by the sensor, in mT, as a floating point number.</p>',ret:'a floating point number corresponding to the uncalibrated, unrounded raw value returned by the sensor, in mT, as a floating point number',ext:'On failure, throws an exception or returns <tt>Y_CURRENTRAWVALUE_INVALID</tt>.'};
+doc['Magnetometer']['get_currentValue']={syn:'Returns the current value of the magnetic field, in mT, as a floating point number.',lib:'magnetometer.get_currentValue()',pro:'def get_currentValue()',cmt:'<p>Returns the current value of the magnetic field, in mT, as a floating point number.</p>',ret:'a floating point number corresponding to the current value of the magnetic field, in mT, as a floating point number',ext:'On failure, throws an exception or returns <tt>Y_CURRENTVALUE_INVALID</tt>.'};
+doc['Magnetometer']['get_errorMessage']={syn:'Returns the error message of the latest error with the magnetometer.',lib:'magnetometer.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Returns the error message of the latest error with the magnetometer. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a string corresponding to the latest error message that occured while using the magnetometer object'};
+doc['Magnetometer']['get_errorType']={syn:'Returns the numerical error code of the latest error with the magnetometer.',lib:'magnetometer.get_errorType()',pro:'def get_errorType()',cmt:'<p>Returns the numerical error code of the latest error with the magnetometer. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a number corresponding to the code of the latest error that occurred while using the magnetometer object'};
+doc['Magnetometer']['get_friendlyName']={syn:'Returns a global identifier of the magnetometer in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>.',lib:'magnetometer.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Returns a global identifier of the magnetometer in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>. The returned string uses the logical names of the module and of the magnetometer if they are defined, otherwise the serial number of the module and the hardware identifier of the magnetometer (for example: <tt>MyCustomName.relay1</tt>)</p>',ret:'a string that uniquely identifies the magnetometer using logical names (ex: <tt>MyCustomName.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['Magnetometer']['get_functionDescriptor']={syn:'Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function.',lib:'magnetometer.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function. This identifier can be used to test if two instances of <tt>YFunction</tt> reference the same physical function on the same physical device.</p>',ret:'an identifier of type <tt>YFUN_DESCR</tt>.',ext:'If the function has never been contacted, the returned value is <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>.'};
+doc['Magnetometer']['get_functionId']={syn:'Returns the hardware identifier of the magnetometer, without reference to the module.',lib:'magnetometer.get_functionId()',pro:'def get_functionId()',cmt:'<p>Returns the hardware identifier of the magnetometer, without reference to the module. For example <tt>relay1</tt></p>',ret:'a string that identifies the magnetometer (ex: <tt>relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['Magnetometer']['get_hardwareId']={syn:'Returns the unique hardware identifier of the magnetometer in the form <tt>SERIAL.FUNCTIONID</tt>.',lib:'magnetometer.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Returns the unique hardware identifier of the magnetometer in the form <tt>SERIAL.FUNCTIONID</tt>. The unique hardware identifier is composed of the device serial number and of the hardware identifier of the magnetometer (for example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'a string that uniquely identifies the magnetometer (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['Magnetometer']['get_highestValue']={syn:'Returns the maximal value observed for the magnetic field since the device was started.',lib:'magnetometer.get_highestValue()',pro:'def get_highestValue()',cmt:'<p>Returns the maximal value observed for the magnetic field since the device was started.</p>',ret:'a floating point number corresponding to the maximal value observed for the magnetic field since the device was started',ext:'On failure, throws an exception or returns <tt>Y_HIGHESTVALUE_INVALID</tt>.'};
+doc['Magnetometer']['get_logFrequency']={syn:'Returns the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory.',lib:'magnetometer.get_logFrequency()',pro:'def get_logFrequency()',cmt:'<p>Returns the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory.</p>',ret:'a string corresponding to the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory',ext:'On failure, throws an exception or returns <tt>Y_LOGFREQUENCY_INVALID</tt>.'};
+doc['Magnetometer']['get_logicalName']={syn:'Returns the logical name of the magnetometer.',lib:'magnetometer.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Returns the logical name of the magnetometer.</p>',ret:'a string corresponding to the logical name of the magnetometer.',ext:'On failure, throws an exception or returns <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['Magnetometer']['get_lowestValue']={syn:'Returns the minimal value observed for the magnetic field since the device was started.',lib:'magnetometer.get_lowestValue()',pro:'def get_lowestValue()',cmt:'<p>Returns the minimal value observed for the magnetic field since the device was started.</p>',ret:'a floating point number corresponding to the minimal value observed for the magnetic field since the device was started',ext:'On failure, throws an exception or returns <tt>Y_LOWESTVALUE_INVALID</tt>.'};
+doc['Magnetometer']['get_module']={syn:'Gets the <tt>YModule</tt> object for the device on which the function is located.',lib:'magnetometer.get_module()',pro:'def get_module()',cmt:'<p>Gets the <tt>YModule</tt> object for the device on which the function is located. If the function cannot be located on any module, the returned instance of <tt>YModule</tt> is not shown as on-line.</p>',ret:'an instance of <tt>YModule</tt>'};
+doc['Magnetometer']['get_recordedData']={syn:'Retrieves a DataSet object holding historical data for this sensor, for a specified time interval.',lib:'magnetometer.get_recordedData()',pro:'def get_recordedData(<span id=pn>startTime</span>, <span id=pn>endTime</span>)',cmt:'<p>Retrieves a DataSet object holding historical data for this sensor, for a specified time interval. The measures will be retrieved from the data logger, which must have been turned on at the desired time. See the documentation of the DataSet class for information on how to get an overview of the recorded data, and how to load progressively a large set of measures from the data logger.</p><p> This function only works if the device uses a recent firmware, as DataSet objects are not supported by firmwares older than version 13000.</p>',par:{startTime:'the start of the desired measure time interval, as a Unix timestamp, i.e. the number of seconds since January 1, 1970 UTC. The special value 0 can be used to include any meaasure, without initial limit.',endTime:'the end of the desired measure time interval, as a Unix timestamp, i.e. the number of seconds since January 1, 1970 UTC. The special value 0 can be used to include any meaasure, without ending limit.'},ret:'an instance of YDataSet, providing access to historical data. Past measures can be loaded progressively using methods from the YDataSet object.'};
+doc['Magnetometer']['get_reportFrequency']={syn:'Returns the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function.',lib:'magnetometer.get_reportFrequency()',pro:'def get_reportFrequency()',cmt:'<p>Returns the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function.</p>',ret:'a string corresponding to the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function',ext:'On failure, throws an exception or returns <tt>Y_REPORTFREQUENCY_INVALID</tt>.'};
+doc['Magnetometer']['get_resolution']={syn:'Returns the resolution of the measured values.',lib:'magnetometer.get_resolution()',pro:'def get_resolution()',cmt:'<p>Returns the resolution of the measured values. The resolution corresponds to the numerical precision of the measures, which is not always the same as the actual precision of the sensor.</p>',ret:'a floating point number corresponding to the resolution of the measured values',ext:'On failure, throws an exception or returns <tt>Y_RESOLUTION_INVALID</tt>.'};
+doc['Magnetometer']['get_sensorState']={syn:'Returns the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now.',lib:'magnetometer.get_sensorState()',pro:'def get_sensorState()',cmt:'<p>Returns the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now.</p>',ret:'an integer corresponding to the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now',ext:'On failure, throws an exception or returns <tt>Y_SENSORSTATE_INVALID</tt>.'};
+doc['Magnetometer']['get_unit']={syn:'Returns the measuring unit for the magnetic field.',lib:'magnetometer.get_unit()',pro:'def get_unit()',cmt:'<p>Returns the measuring unit for the magnetic field.</p>',ret:'a string corresponding to the measuring unit for the magnetic field',ext:'On failure, throws an exception or returns <tt>Y_UNIT_INVALID</tt>.'};
+doc['Magnetometer']['get_userData']={syn:'Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>.',lib:'magnetometer.get_userData()',pro:'def get_userData()',cmt:'<p>Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>. This attribute is never touched directly by the API, and is at disposal of the caller to store a context.</p>',ret:'the object stored previously by the caller.'};
+doc['Magnetometer']['get_xValue']={syn:'Returns the X component of the magnetic field, as a floating point number.',lib:'magnetometer.get_xValue()',pro:'def get_xValue()',cmt:'<p>Returns the X component of the magnetic field, as a floating point number.</p>',ret:'a floating point number corresponding to the X component of the magnetic field, as a floating point number',ext:'On failure, throws an exception or returns <tt>Y_XVALUE_INVALID</tt>.'};
+doc['Magnetometer']['get_yValue']={syn:'Returns the Y component of the magnetic field, as a floating point number.',lib:'magnetometer.get_yValue()',pro:'def get_yValue()',cmt:'<p>Returns the Y component of the magnetic field, as a floating point number.</p>',ret:'a floating point number corresponding to the Y component of the magnetic field, as a floating point number',ext:'On failure, throws an exception or returns <tt>Y_YVALUE_INVALID</tt>.'};
+doc['Magnetometer']['get_zValue']={syn:'Returns the Z component of the magnetic field, as a floating point number.',lib:'magnetometer.get_zValue()',pro:'def get_zValue()',cmt:'<p>Returns the Z component of the magnetic field, as a floating point number.</p>',ret:'a floating point number corresponding to the Z component of the magnetic field, as a floating point number',ext:'On failure, throws an exception or returns <tt>Y_ZVALUE_INVALID</tt>.'};
+doc['Magnetometer']['isOnline']={syn:'Checks if the magnetometer is currently reachable, without raising any error.',lib:'magnetometer.isOnline()',pro:'def isOnline()',cmt:'<p>Checks if the magnetometer is currently reachable, without raising any error. If there is a cached value for the magnetometer in cache, that has not yet expired, the device is considered reachable. No exception is raised if there is an error while trying to contact the device hosting the magnetometer.</p>',ret:'<tt>true</tt> if the magnetometer can be reached, and <tt>false</tt> otherwise'};
+doc['Magnetometer']['load']={syn:'Preloads the magnetometer cache with a specified validity duration.',lib:'magnetometer.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Preloads the magnetometer cache with a specified validity duration. By default, whenever accessing a device, all function attributes are kept in cache for the standard duration (5 ms). This method can be used to temporarily mark the cache as valid for a longer period, in order to reduce network traffic for instance.</p>',par:{msValidity:'an integer corresponding to the validity attributed to the loaded function parameters, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Magnetometer']['loadAttribute']={syn:'Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.',lib:'magnetometer.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'On failure, throws an exception or returns an empty string.'};
+doc['Magnetometer']['loadCalibrationPoints']={syn:'Retrieves error correction data points previously entered using the method <tt>calibrateFromPoints</tt>.',lib:'magnetometer.loadCalibrationPoints()',pro:'def loadCalibrationPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Retrieves error correction data points previously entered using the method <tt>calibrateFromPoints</tt>.</p>',par:{rawValues:'array of floating point numbers, that will be filled by the function with the raw sensor values for the correction points.',refValues:'array of floating point numbers, that will be filled by the function with the desired values for the correction points.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Magnetometer']['muteValueCallbacks']={syn:'Disable the propagation of every new advertised value to the parent hub.',lib:'magnetometer.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>Disable the propagation of every new advertised value to the parent hub. You can use this function to save bandwidth and CPU on computers with limited resources, or to prevent unwanted invocations of the HTTP callback. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Magnetometer']['nextMagnetometer']={syn:'Continues the enumeration of magnetometers started using <tt>yFirstMagnetometer()</tt>.',lib:'magnetometer.nextMagnetometer()',pro:'def nextMagnetometer()',cmt:'<p>Continues the enumeration of magnetometers started using <tt>yFirstMagnetometer()</tt>.</p>',ret:'a pointer to a <tt>YMagnetometer</tt> object, corresponding to a magnetometer currently online, or a <tt>null</tt> pointer if there are no more magnetometers to enumerate.'};
+doc['Magnetometer']['registerTimedReportCallback']={syn:'Registers the callback function that is invoked on every periodic timed notification.',lib:'magnetometer.registerTimedReportCallback()',pro:'def registerTimedReportCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every periodic timed notification. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and an YMeasure object describing the new advertised value.'}};
+doc['Magnetometer']['registerValueCallback']={syn:'Registers the callback function that is invoked on every change of advertised value.',lib:'magnetometer.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every change of advertised value. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and the character string describing the new advertised value.'}};
+doc['Magnetometer']['set_bandwidth']={syn:'Changes the measure update frequency, measured in Hz (Yocto-3D-V2 only).',lib:'magnetometer.set_bandwidth()',pro:'def set_bandwidth(<span id=pn>newval</span>)',cmt:'<p>Changes the measure update frequency, measured in Hz (Yocto-3D-V2 only). When the frequency is lower, the device performs averaging.</p>',par:{newval:'an integer corresponding to the measure update frequency, measured in Hz (Yocto-3D-V2 only)'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Magnetometer']['set_highestValue']={syn:'Changes the recorded maximal value observed.',lib:'magnetometer.set_highestValue()',pro:'def set_highestValue(<span id=pn>newval</span>)',cmt:'<p>Changes the recorded maximal value observed.</p>',par:{newval:'a floating point number corresponding to the recorded maximal value observed'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Magnetometer']['set_logFrequency']={syn:'Changes the datalogger recording frequency for this function.',lib:'magnetometer.set_logFrequency()',pro:'def set_logFrequency(<span id=pn>newval</span>)',cmt:'<p>Changes the datalogger recording frequency for this function. The frequency can be specified as samples per second, as sample per minute (for instance \x2215/m\x22) or in samples per hour (eg. \x224/h\x22). To disable recording for this function, use the value \x22OFF\x22.</p>',par:{newval:'a string corresponding to the datalogger recording frequency for this function'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Magnetometer']['set_logicalName']={syn:'Changes the logical name of the magnetometer.',lib:'magnetometer.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Changes the logical name of the magnetometer. You can use <tt>yCheckLogicalName()</tt> prior to this call to make sure that your parameter is valid. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the logical name of the magnetometer.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Magnetometer']['set_lowestValue']={syn:'Changes the recorded minimal value observed.',lib:'magnetometer.set_lowestValue()',pro:'def set_lowestValue(<span id=pn>newval</span>)',cmt:'<p>Changes the recorded minimal value observed.</p>',par:{newval:'a floating point number corresponding to the recorded minimal value observed'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Magnetometer']['set_reportFrequency']={syn:'Changes the timed value notification frequency for this function.',lib:'magnetometer.set_reportFrequency()',pro:'def set_reportFrequency(<span id=pn>newval</span>)',cmt:'<p>Changes the timed value notification frequency for this function. The frequency can be specified as samples per second, as sample per minute (for instance \x2215/m\x22) or in samples per hour (eg. \x224/h\x22). To disable timed value notifications for this function, use the value \x22OFF\x22.</p>',par:{newval:'a string corresponding to the timed value notification frequency for this function'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Magnetometer']['set_resolution']={syn:'Changes the resolution of the measured physical values.',lib:'magnetometer.set_resolution()',pro:'def set_resolution(<span id=pn>newval</span>)',cmt:'<p>Changes the resolution of the measured physical values. The resolution corresponds to the numerical precision when displaying value. It does not change the precision of the measure itself.</p>',par:{newval:'a floating point number corresponding to the resolution of the measured physical values'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Magnetometer']['set_userData']={syn:'Stores a user context provided as argument in the userData attribute of the function.',lib:'magnetometer.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Stores a user context provided as argument in the userData attribute of the function. This attribute is never touched by the API, and is at disposal of the caller to store a context.</p>',par:{data:'any kind of object to be stored'}};
+doc['Magnetometer']['startDataLogger']={syn:'Starts the data logger on the device.',lib:'magnetometer.startDataLogger()',pro:'def startDataLogger()',cmt:'<p>Starts the data logger on the device. Note that the data logger will only save the measures on this sensor if the logFrequency is not set to \x22OFF\x22.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.'};
+doc['Magnetometer']['stopDataLogger']={syn:'Stops the datalogger on the device.',lib:'magnetometer.stopDataLogger()',pro:'def stopDataLogger()',cmt:'<p>Stops the datalogger on the device.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.'};
+doc['Magnetometer']['unmuteValueCallbacks']={syn:'Re-enable the propagation of every new advertised value to the parent hub.',lib:'magnetometer.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>Re-enable the propagation of every new advertised value to the parent hub. This function reverts the effect of a previous call to <tt>muteValueCallbacks()</tt>. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+//--- (end of generated code: Magnetometer)
+//--- (generated code: RefFrame)
+doc['RefFrame']={'':{syn:'Reference frame configuration',inc:'from yocto_refframe import *',cmt:'<p>This class is used to setup the base orientation of the Yocto-3D, so that the orientation functions, relative to the earth surface plane, use the proper reference frame. The class also implements a tridimensional sensor calibration process, which can compensate for local variations of standard gravity and improve the precision of the tilt sensors.</p>'}};
+doc['RefFrame']['FindRefFrame']={syn:'Retrieves a reference frame for a given identifier.',lib:'YRefFrame.FindRefFrame()',pro:'def FindRefFrame(<span id=pn>func</span>)',cmt:'<p>Retrieves a reference frame for a given identifier. The identifier can be specified using several formats:<br> <ul> <li>FunctionLogicalName</li> <li>ModuleSerialNumber.FunctionIdentifier</li> <li>ModuleSerialNumber.FunctionLogicalName</li> <li>ModuleLogicalName.FunctionIdentifier</li> <li>ModuleLogicalName.FunctionLogicalName</li> </ul></p><p> This function does not require that the reference frame is online at the time it is invoked. The returned object is nevertheless valid. Use the method <tt>YRefFrame.isOnline()</tt> to test if the reference frame is indeed online at a given time. In case of ambiguity when looking for a reference frame by logical name, no error is notified: the first instance found is returned. The search is performed first by hardware name, then by logical name.</p>',par:{func:'a string that uniquely characterizes the reference frame'},ret:'a <tt>YRefFrame</tt> object allowing you to drive the reference frame.'};
+doc['RefFrame']['FirstRefFrame']={syn:'Starts the enumeration of reference frames currently accessible.',lib:'YRefFrame.FirstRefFrame()',pro:'def FirstRefFrame()',cmt:'<p>Starts the enumeration of reference frames currently accessible. Use the method <tt>YRefFrame.nextRefFrame()</tt> to iterate on next reference frames.</p>',ret:'a pointer to a <tt>YRefFrame</tt> object, corresponding to the first reference frame currently online, or a <tt>null</tt> pointer if there are none.'};
+doc['RefFrame']['cancel3DCalibration']={syn:'Aborts the sensors tridimensional calibration process et restores normal settings.',lib:'refframe.cancel3DCalibration()',pro:'def cancel3DCalibration()',cmt:'<p>Aborts the sensors tridimensional calibration process et restores normal settings.</p><p> On failure, throws an exception or returns a negative error code.</p>'};
+doc['RefFrame']['clearCache']={syn:'Invalidates the cache.',lib:'refframe.clearCache()',pro:'def clearCache()',cmt:'<p>Invalidates the cache. Invalidates the cache of the reference frame attributes. Forces the next call to get_xxx() or loadxxx() to use values that come from the device.</p>'};
+doc['RefFrame']['describe']={syn:'Returns a short text that describes unambiguously the instance of the reference frame in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'refframe.describe()',pro:'def describe()',cmt:'<p>Returns a short text that describes unambiguously the instance of the reference frame in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. More precisely, <tt>TYPE</tt> is the type of the function, <tt>NAME</tt> it the name used for the first access to the function, <tt>SERIAL</tt> is the serial number of the module if the module is connected or <tt>\x22unresolved\x22</tt>, and <tt>FUNCTIONID</tt> is the hardware identifier of the function if the module is connected. For example, this method returns <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> if the module is already connected or <tt>Relay(BadCustomeName.relay1)=unresolved</tt> if the module has not yet been connected. This method does not trigger any USB or TCP transaction and can therefore be used in a debugger.</p>',ret:'a string that describes the reference frame (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['RefFrame']['get_3DCalibrationHint']={syn:'Returns instructions to proceed to the tridimensional calibration initiated with method <tt>start3DCalibration</tt>.',lib:'refframe.get_3DCalibrationHint()',pro:'def get_3DCalibrationHint()',cmt:'<p>Returns instructions to proceed to the tridimensional calibration initiated with method <tt>start3DCalibration</tt>.</p>',ret:'a character string.'};
+doc['RefFrame']['get_3DCalibrationLogMsg']={syn:'Returns the latest log message from the calibration process.',lib:'refframe.get_3DCalibrationLogMsg()',pro:'def get_3DCalibrationLogMsg()',cmt:'<p>Returns the latest log message from the calibration process. When no new message is available, returns an empty string.</p>',ret:'a character string.'};
+doc['RefFrame']['get_3DCalibrationProgress']={syn:'Returns the global process indicator for the tridimensional calibration initiated with method <tt>start3DCalibration</tt>.',lib:'refframe.get_3DCalibrationProgress()',pro:'def get_3DCalibrationProgress()',cmt:'<p>Returns the global process indicator for the tridimensional calibration initiated with method <tt>start3DCalibration</tt>.</p>',ret:'an integer between 0 (not started) and 100 (stage completed).'};
+doc['RefFrame']['get_3DCalibrationStage']={syn:'Returns index of the current stage of the calibration initiated with method <tt>start3DCalibration</tt>.',lib:'refframe.get_3DCalibrationStage()',pro:'def get_3DCalibrationStage()',cmt:'<p>Returns index of the current stage of the calibration initiated with method <tt>start3DCalibration</tt>.</p>',ret:'an integer, growing each time a calibration stage is completed.'};
+doc['RefFrame']['get_3DCalibrationStageProgress']={syn:'Returns the process indicator for the current stage of the calibration initiated with method <tt>start3DCalibration</tt>.',lib:'refframe.get_3DCalibrationStageProgress()',pro:'def get_3DCalibrationStageProgress()',cmt:'<p>Returns the process indicator for the current stage of the calibration initiated with method <tt>start3DCalibration</tt>.</p>',ret:'an integer between 0 (not started) and 100 (stage completed).'};
+doc['RefFrame']['get_advertisedValue']={syn:'Returns the current value of the reference frame (no more than 6 characters).',lib:'refframe.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Returns the current value of the reference frame (no more than 6 characters).</p>',ret:'a string corresponding to the current value of the reference frame (no more than 6 characters).',ext:'On failure, throws an exception or returns <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['RefFrame']['get_bearing']={syn:'Returns the reference bearing used by the compass.',lib:'refframe.get_bearing()',pro:'def get_bearing()',cmt:'<p>Returns the reference bearing used by the compass. The relative bearing indicated by the compass is the difference between the measured magnetic heading and the reference bearing indicated here.</p>',ret:'a floating point number corresponding to the reference bearing used by the compass',ext:'On failure, throws an exception or returns <tt>Y_BEARING_INVALID</tt>.'};
+doc['RefFrame']['get_calibrationState']={syn:'Returns the 3D sensor calibration state (Yocto-3D-V2 only).',lib:'refframe.get_calibrationState()',pro:'def get_calibrationState()',cmt:'<p>Returns the 3D sensor calibration state (Yocto-3D-V2 only). This function returns an integer representing the calibration state of the 3 inertial sensors of the BNO055 chip, found in the Yocto-3D-V2. Hundredths show the calibration state of the accelerometer, tenths show the calibration state of the magnetometer while units show the calibration state of the gyroscope. For each sensor, the value 0 means no calibration and the value 3 means full calibration.</p>',ret:'an integer representing the calibration state of Yocto-3D-V2: 333 when fully calibrated, 0 when not calibrated at all.',ext:'On failure, throws an exception or returns a negative error code. For the Yocto-3D (V1), this function always return -3 (unsupported function).'};
+doc['RefFrame']['get_errorMessage']={syn:'Returns the error message of the latest error with the reference frame.',lib:'refframe.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Returns the error message of the latest error with the reference frame. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a string corresponding to the latest error message that occured while using the reference frame object'};
+doc['RefFrame']['get_errorType']={syn:'Returns the numerical error code of the latest error with the reference frame.',lib:'refframe.get_errorType()',pro:'def get_errorType()',cmt:'<p>Returns the numerical error code of the latest error with the reference frame. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a number corresponding to the code of the latest error that occurred while using the reference frame object'};
+doc['RefFrame']['get_friendlyName']={syn:'Returns a global identifier of the reference frame in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>.',lib:'refframe.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Returns a global identifier of the reference frame in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>. The returned string uses the logical names of the module and of the reference frame if they are defined, otherwise the serial number of the module and the hardware identifier of the reference frame (for example: <tt>MyCustomName.relay1</tt>)</p>',ret:'a string that uniquely identifies the reference frame using logical names (ex: <tt>MyCustomName.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['RefFrame']['get_functionDescriptor']={syn:'Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function.',lib:'refframe.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function. This identifier can be used to test if two instances of <tt>YFunction</tt> reference the same physical function on the same physical device.</p>',ret:'an identifier of type <tt>YFUN_DESCR</tt>.',ext:'If the function has never been contacted, the returned value is <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>.'};
+doc['RefFrame']['get_functionId']={syn:'Returns the hardware identifier of the reference frame, without reference to the module.',lib:'refframe.get_functionId()',pro:'def get_functionId()',cmt:'<p>Returns the hardware identifier of the reference frame, without reference to the module. For example <tt>relay1</tt></p>',ret:'a string that identifies the reference frame (ex: <tt>relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['RefFrame']['get_hardwareId']={syn:'Returns the unique hardware identifier of the reference frame in the form <tt>SERIAL.FUNCTIONID</tt>.',lib:'refframe.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Returns the unique hardware identifier of the reference frame in the form <tt>SERIAL.FUNCTIONID</tt>. The unique hardware identifier is composed of the device serial number and of the hardware identifier of the reference frame (for example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'a string that uniquely identifies the reference frame (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['RefFrame']['get_logicalName']={syn:'Returns the logical name of the reference frame.',lib:'refframe.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Returns the logical name of the reference frame.</p>',ret:'a string corresponding to the logical name of the reference frame.',ext:'On failure, throws an exception or returns <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['RefFrame']['get_measureQuality']={syn:'Returns estimated quality of the orientation (Yocto-3D-V2 only).',lib:'refframe.get_measureQuality()',pro:'def get_measureQuality()',cmt:'<p>Returns estimated quality of the orientation (Yocto-3D-V2 only). This function returns an integer between 0 and 3 representing the degree of confidence of the position estimate. When the value is 3, the estimation is reliable. Below 3, one should expect sudden corrections, in particular for heading (<tt>compass</tt> function). The most frequent causes for values below 3 are magnetic interferences, and accelerations or rotations beyond the sensor range.</p>',ret:'an integer between 0 and 3 (3 when the measure is reliable)',ext:'On failure, throws an exception or returns a negative error code. For the Yocto-3D (V1), this function always return -3 (unsupported function).'};
+doc['RefFrame']['get_module']={syn:'Gets the <tt>YModule</tt> object for the device on which the function is located.',lib:'refframe.get_module()',pro:'def get_module()',cmt:'<p>Gets the <tt>YModule</tt> object for the device on which the function is located. If the function cannot be located on any module, the returned instance of <tt>YModule</tt> is not shown as on-line.</p>',ret:'an instance of <tt>YModule</tt>'};
+doc['RefFrame']['get_mountOrientation']={syn:'Returns the installation orientation of the device, as configured in order to define the reference frame for the compass and the pitch/roll tilt sensors.',lib:'refframe.get_mountOrientation()',pro:'def get_mountOrientation()',cmt:'<p>Returns the installation orientation of the device, as configured in order to define the reference frame for the compass and the pitch/roll tilt sensors.</p>',ret:'a value among the enumeration <tt>Y_MOUNTORIENTATION</tt> (<tt>Y_MOUNTORIENTATION_TWELVE</tt>, <tt>Y_MOUNTORIENTATION_THREE</tt>, <tt>Y_MOUNTORIENTATION_SIX</tt>, <tt>Y_MOUNTORIENTATION_NINE</tt>) corresponding to the orientation of the \x22X\x22 arrow on the device, as on a clock dial seen from an observer in the center of the box. On the bottom face, the 12H orientation points to the front, while on the top face, the 12H orientation points to the rear.',ext:'On failure, throws an exception or returns Y_MOUNTORIENTATION_INVALID.'};
+doc['RefFrame']['get_mountPosition']={syn:'Returns the installation position of the device, as configured in order to define the reference frame for the compass and the pitch/roll tilt sensors.',lib:'refframe.get_mountPosition()',pro:'def get_mountPosition()',cmt:'<p>Returns the installation position of the device, as configured in order to define the reference frame for the compass and the pitch/roll tilt sensors.</p>',ret:'a value among the <tt>Y_MOUNTPOSITION</tt> enumeration (<tt>Y_MOUNTPOSITION_BOTTOM</tt>, <tt>Y_MOUNTPOSITION_TOP</tt>, <tt>Y_MOUNTPOSITION_FRONT</tt>, <tt>Y_MOUNTPOSITION_RIGHT</tt>, <tt>Y_MOUNTPOSITION_REAR</tt>, <tt>Y_MOUNTPOSITION_LEFT</tt>), corresponding to the installation in a box, on one of the six faces.',ext:'On failure, throws an exception or returns Y_MOUNTPOSITION_INVALID.'};
+doc['RefFrame']['get_userData']={syn:'Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>.',lib:'refframe.get_userData()',pro:'def get_userData()',cmt:'<p>Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>. This attribute is never touched directly by the API, and is at disposal of the caller to store a context.</p>',ret:'the object stored previously by the caller.'};
+doc['RefFrame']['isOnline']={syn:'Checks if the reference frame is currently reachable, without raising any error.',lib:'refframe.isOnline()',pro:'def isOnline()',cmt:'<p>Checks if the reference frame is currently reachable, without raising any error. If there is a cached value for the reference frame in cache, that has not yet expired, the device is considered reachable. No exception is raised if there is an error while trying to contact the device hosting the reference frame.</p>',ret:'<tt>true</tt> if the reference frame can be reached, and <tt>false</tt> otherwise'};
+doc['RefFrame']['load']={syn:'Preloads the reference frame cache with a specified validity duration.',lib:'refframe.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Preloads the reference frame cache with a specified validity duration. By default, whenever accessing a device, all function attributes are kept in cache for the standard duration (5 ms). This method can be used to temporarily mark the cache as valid for a longer period, in order to reduce network traffic for instance.</p>',par:{msValidity:'an integer corresponding to the validity attributed to the loaded function parameters, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['RefFrame']['loadAttribute']={syn:'Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.',lib:'refframe.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'On failure, throws an exception or returns an empty string.'};
+doc['RefFrame']['more3DCalibration']={syn:'Continues the sensors tridimensional calibration process previously initiated using method <tt>start3DCalibration</tt>.',lib:'refframe.more3DCalibration()',pro:'def more3DCalibration()',cmt:'<p>Continues the sensors tridimensional calibration process previously initiated using method <tt>start3DCalibration</tt>. This method should be called approximately 5 times per second, while positioning the device according to the instructions provided by method <tt>get_3DCalibrationHint</tt>. Note that the instructions change during the calibration process.</p><p> On failure, throws an exception or returns a negative error code.</p>'};
+doc['RefFrame']['muteValueCallbacks']={syn:'Disable the propagation of every new advertised value to the parent hub.',lib:'refframe.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>Disable the propagation of every new advertised value to the parent hub. You can use this function to save bandwidth and CPU on computers with limited resources, or to prevent unwanted invocations of the HTTP callback. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['RefFrame']['nextRefFrame']={syn:'Continues the enumeration of reference frames started using <tt>yFirstRefFrame()</tt>.',lib:'refframe.nextRefFrame()',pro:'def nextRefFrame()',cmt:'<p>Continues the enumeration of reference frames started using <tt>yFirstRefFrame()</tt>.</p>',ret:'a pointer to a <tt>YRefFrame</tt> object, corresponding to a reference frame currently online, or a <tt>null</tt> pointer if there are no more reference frames to enumerate.'};
+doc['RefFrame']['registerValueCallback']={syn:'Registers the callback function that is invoked on every change of advertised value.',lib:'refframe.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every change of advertised value. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and the character string describing the new advertised value.'}};
+doc['RefFrame']['save3DCalibration']={syn:'Applies the sensors tridimensional calibration parameters that have just been computed.',lib:'refframe.save3DCalibration()',pro:'def save3DCalibration()',cmt:'<p>Applies the sensors tridimensional calibration parameters that have just been computed. Remember to call the <tt>saveToFlash()</tt> method of the module if the changes must be kept when the device is restarted.</p><p> On failure, throws an exception or returns a negative error code.</p>'};
+doc['RefFrame']['set_bearing']={syn:'Changes the reference bearing used by the compass.',lib:'refframe.set_bearing()',pro:'def set_bearing(<span id=pn>newval</span>)',cmt:'<p>Changes the reference bearing used by the compass. The relative bearing indicated by the compass is the difference between the measured magnetic heading and the reference bearing indicated here.</p><p> For instance, if you setup as reference bearing the value of the earth magnetic declination, the compass will provide the orientation relative to the geographic North.</p><p> Similarly, when the sensor is not mounted along the standard directions because it has an additional yaw angle, you can set this angle in the reference bearing so that the compass provides the expected natural direction.</p><p> Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a floating point number corresponding to the reference bearing used by the compass'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['RefFrame']['set_logicalName']={syn:'Changes the logical name of the reference frame.',lib:'refframe.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Changes the logical name of the reference frame. You can use <tt>yCheckLogicalName()</tt> prior to this call to make sure that your parameter is valid. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the logical name of the reference frame.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['RefFrame']['set_mountPosition']={syn:'Changes the compass and tilt sensor frame of reference.',lib:'refframe.set_mountPosition()',pro:'def set_mountPosition(<span id=pn>position</span>, <span id=pn>orientation</span>)',cmt:'<p>Changes the compass and tilt sensor frame of reference. The magnetic compass and the tilt sensors (pitch and roll) naturally work in the plane parallel to the earth surface. In case the device is not installed upright and horizontally, you must select its reference orientation (parallel to the earth surface) so that the measures are made relative to this position.</p>',par:{position:'a value among the <tt>Y_MOUNTPOSITION</tt> enumeration (<tt>Y_MOUNTPOSITION_BOTTOM</tt>, <tt>Y_MOUNTPOSITION_TOP</tt>, <tt>Y_MOUNTPOSITION_FRONT</tt>, <tt>Y_MOUNTPOSITION_RIGHT</tt>, <tt>Y_MOUNTPOSITION_REAR</tt>, <tt>Y_MOUNTPOSITION_LEFT</tt>), corresponding to the installation in a box, on one of the six faces.',orientation:'a value among the enumeration <tt>Y_MOUNTORIENTATION</tt> (<tt>Y_MOUNTORIENTATION_TWELVE</tt>, <tt>Y_MOUNTORIENTATION_THREE</tt>, <tt>Y_MOUNTORIENTATION_SIX</tt>, <tt>Y_MOUNTORIENTATION_NINE</tt>) corresponding to the orientation of the \x22X\x22 arrow on the device, as on a clock dial seen from an observer in the center of the box. On the bottom face, the 12H orientation points to the front, while on the top face, the 12H orientation points to the rear.'},ext:'On failure, throws an exception or returns a negative error code.'};
+doc['RefFrame']['set_userData']={syn:'Stores a user context provided as argument in the userData attribute of the function.',lib:'refframe.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Stores a user context provided as argument in the userData attribute of the function. This attribute is never touched by the API, and is at disposal of the caller to store a context.</p>',par:{data:'any kind of object to be stored'}};
+doc['RefFrame']['start3DCalibration']={syn:'Initiates the sensors tridimensional calibration process.',lib:'refframe.start3DCalibration()',pro:'def start3DCalibration()',cmt:'<p>Initiates the sensors tridimensional calibration process. This calibration is used at low level for inertial position estimation and to enhance the precision of the tilt sensors.</p><p> After calling this method, the device should be moved according to the instructions provided by method <tt>get_3DCalibrationHint</tt>, and <tt>more3DCalibration</tt> should be invoked about 5 times per second. The calibration procedure is completed when the method <tt>get_3DCalibrationProgress</tt> returns 100. At this point, the computed calibration parameters can be applied using method <tt>save3DCalibration</tt>. The calibration process can be canceled at any time using method <tt>cancel3DCalibration</tt>.</p><p> On failure, throws an exception or returns a negative error code.</p>'};
+doc['RefFrame']['unmuteValueCallbacks']={syn:'Re-enable the propagation of every new advertised value to the parent hub.',lib:'refframe.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>Re-enable the propagation of every new advertised value to the parent hub. This function reverts the effect of a previous call to <tt>muteValueCallbacks()</tt>. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+//--- (end of generated code: RefFrame)
+//--- (generated code: Compass)
+doc['Compass']={'':{syn:'Compass function interface',inc:'from yocto_compass import *',cmt:'<p>The YSensor class is the parent class for all Yoctopuce sensors. It can be used to read the current value and unit of any sensor, read the min/max value, configure autonomous recording frequency and access recorded data. It also provide a function to register a callback invoked each time the observed value changes, or at a predefined interval. Using this class rather than a specific subclass makes it possible to create generic applications that work with any Yoctopuce sensor, even those that do not yet exist. Note: The YAnButton class is the only analog input which does not inherit from YSensor.</p>'}};
+doc['Compass']['FindCompass']={syn:'Retrieves a compass for a given identifier.',lib:'YCompass.FindCompass()',pro:'def FindCompass(<span id=pn>func</span>)',cmt:'<p>Retrieves a compass for a given identifier. The identifier can be specified using several formats:<br> <ul> <li>FunctionLogicalName</li> <li>ModuleSerialNumber.FunctionIdentifier</li> <li>ModuleSerialNumber.FunctionLogicalName</li> <li>ModuleLogicalName.FunctionIdentifier</li> <li>ModuleLogicalName.FunctionLogicalName</li> </ul></p><p> This function does not require that the compass is online at the time it is invoked. The returned object is nevertheless valid. Use the method <tt>YCompass.isOnline()</tt> to test if the compass is indeed online at a given time. In case of ambiguity when looking for a compass by logical name, no error is notified: the first instance found is returned. The search is performed first by hardware name, then by logical name.</p>',par:{func:'a string that uniquely characterizes the compass'},ret:'a <tt>YCompass</tt> object allowing you to drive the compass.'};
+doc['Compass']['FirstCompass']={syn:'Starts the enumeration of compasses currently accessible.',lib:'YCompass.FirstCompass()',pro:'def FirstCompass()',cmt:'<p>Starts the enumeration of compasses currently accessible. Use the method <tt>YCompass.nextCompass()</tt> to iterate on next compasses.</p>',ret:'a pointer to a <tt>YCompass</tt> object, corresponding to the first compass currently online, or a <tt>null</tt> pointer if there are none.'};
+doc['Compass']['calibrateFromPoints']={syn:'Configures error correction data points, in particular to compensate for a possible perturbation of the measure caused by an enclosure.',lib:'compass.calibrateFromPoints()',pro:'def calibrateFromPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Configures error correction data points, in particular to compensate for a possible perturbation of the measure caused by an enclosure. It is possible to configure up to five correction points. Correction points must be provided in ascending order, and be in the range of the sensor. The device will automatically perform a linear interpolation of the error correction between specified points. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p><p> For more information on advanced capabilities to refine the calibration of sensors, please contact support@yoctopuce.com.</p>',par:{rawValues:'array of floating point numbers, corresponding to the raw values returned by the sensor for the correction points.',refValues:'array of floating point numbers, corresponding to the corrected values for the correction points.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Compass']['clearCache']={syn:'Invalidates the cache.',lib:'compass.clearCache()',pro:'def clearCache()',cmt:'<p>Invalidates the cache. Invalidates the cache of the compass attributes. Forces the next call to get_xxx() or loadxxx() to use values that come from the device.</p>'};
+doc['Compass']['describe']={syn:'Returns a short text that describes unambiguously the instance of the compass in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'compass.describe()',pro:'def describe()',cmt:'<p>Returns a short text that describes unambiguously the instance of the compass in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. More precisely, <tt>TYPE</tt> is the type of the function, <tt>NAME</tt> it the name used for the first access to the function, <tt>SERIAL</tt> is the serial number of the module if the module is connected or <tt>\x22unresolved\x22</tt>, and <tt>FUNCTIONID</tt> is the hardware identifier of the function if the module is connected. For example, this method returns <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> if the module is already connected or <tt>Relay(BadCustomeName.relay1)=unresolved</tt> if the module has not yet been connected. This method does not trigger any USB or TCP transaction and can therefore be used in a debugger.</p>',ret:'a string that describes the compass (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['Compass']['get_advertisedValue']={syn:'Returns the current value of the compass (no more than 6 characters).',lib:'compass.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Returns the current value of the compass (no more than 6 characters).</p>',ret:'a string corresponding to the current value of the compass (no more than 6 characters).',ext:'On failure, throws an exception or returns <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['Compass']['get_bandwidth']={syn:'Returns the measure update frequency, measured in Hz (Yocto-3D-V2 only).',lib:'compass.get_bandwidth()',pro:'def get_bandwidth()',cmt:'<p>Returns the measure update frequency, measured in Hz (Yocto-3D-V2 only).</p>',ret:'an integer corresponding to the measure update frequency, measured in Hz (Yocto-3D-V2 only)',ext:'On failure, throws an exception or returns <tt>Y_BANDWIDTH_INVALID</tt>.'};
+doc['Compass']['get_currentRawValue']={syn:'Returns the uncalibrated, unrounded raw value returned by the sensor, in degrees, as a floating point number.',lib:'compass.get_currentRawValue()',pro:'def get_currentRawValue()',cmt:'<p>Returns the uncalibrated, unrounded raw value returned by the sensor, in degrees, as a floating point number.</p>',ret:'a floating point number corresponding to the uncalibrated, unrounded raw value returned by the sensor, in degrees, as a floating point number',ext:'On failure, throws an exception or returns <tt>Y_CURRENTRAWVALUE_INVALID</tt>.'};
+doc['Compass']['get_currentValue']={syn:'Returns the current value of the relative bearing, in degrees, as a floating point number.',lib:'compass.get_currentValue()',pro:'def get_currentValue()',cmt:'<p>Returns the current value of the relative bearing, in degrees, as a floating point number.</p>',ret:'a floating point number corresponding to the current value of the relative bearing, in degrees, as a floating point number',ext:'On failure, throws an exception or returns <tt>Y_CURRENTVALUE_INVALID</tt>.'};
+doc['Compass']['get_errorMessage']={syn:'Returns the error message of the latest error with the compass.',lib:'compass.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Returns the error message of the latest error with the compass. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a string corresponding to the latest error message that occured while using the compass object'};
+doc['Compass']['get_errorType']={syn:'Returns the numerical error code of the latest error with the compass.',lib:'compass.get_errorType()',pro:'def get_errorType()',cmt:'<p>Returns the numerical error code of the latest error with the compass. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a number corresponding to the code of the latest error that occurred while using the compass object'};
+doc['Compass']['get_friendlyName']={syn:'Returns a global identifier of the compass in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>.',lib:'compass.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Returns a global identifier of the compass in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>. The returned string uses the logical names of the module and of the compass if they are defined, otherwise the serial number of the module and the hardware identifier of the compass (for example: <tt>MyCustomName.relay1</tt>)</p>',ret:'a string that uniquely identifies the compass using logical names (ex: <tt>MyCustomName.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['Compass']['get_functionDescriptor']={syn:'Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function.',lib:'compass.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function. This identifier can be used to test if two instances of <tt>YFunction</tt> reference the same physical function on the same physical device.</p>',ret:'an identifier of type <tt>YFUN_DESCR</tt>.',ext:'If the function has never been contacted, the returned value is <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>.'};
+doc['Compass']['get_functionId']={syn:'Returns the hardware identifier of the compass, without reference to the module.',lib:'compass.get_functionId()',pro:'def get_functionId()',cmt:'<p>Returns the hardware identifier of the compass, without reference to the module. For example <tt>relay1</tt></p>',ret:'a string that identifies the compass (ex: <tt>relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['Compass']['get_hardwareId']={syn:'Returns the unique hardware identifier of the compass in the form <tt>SERIAL.FUNCTIONID</tt>.',lib:'compass.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Returns the unique hardware identifier of the compass in the form <tt>SERIAL.FUNCTIONID</tt>. The unique hardware identifier is composed of the device serial number and of the hardware identifier of the compass (for example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'a string that uniquely identifies the compass (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['Compass']['get_highestValue']={syn:'Returns the maximal value observed for the relative bearing since the device was started.',lib:'compass.get_highestValue()',pro:'def get_highestValue()',cmt:'<p>Returns the maximal value observed for the relative bearing since the device was started.</p>',ret:'a floating point number corresponding to the maximal value observed for the relative bearing since the device was started',ext:'On failure, throws an exception or returns <tt>Y_HIGHESTVALUE_INVALID</tt>.'};
+doc['Compass']['get_logFrequency']={syn:'Returns the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory.',lib:'compass.get_logFrequency()',pro:'def get_logFrequency()',cmt:'<p>Returns the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory.</p>',ret:'a string corresponding to the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory',ext:'On failure, throws an exception or returns <tt>Y_LOGFREQUENCY_INVALID</tt>.'};
+doc['Compass']['get_logicalName']={syn:'Returns the logical name of the compass.',lib:'compass.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Returns the logical name of the compass.</p>',ret:'a string corresponding to the logical name of the compass.',ext:'On failure, throws an exception or returns <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['Compass']['get_lowestValue']={syn:'Returns the minimal value observed for the relative bearing since the device was started.',lib:'compass.get_lowestValue()',pro:'def get_lowestValue()',cmt:'<p>Returns the minimal value observed for the relative bearing since the device was started.</p>',ret:'a floating point number corresponding to the minimal value observed for the relative bearing since the device was started',ext:'On failure, throws an exception or returns <tt>Y_LOWESTVALUE_INVALID</tt>.'};
+doc['Compass']['get_magneticHeading']={syn:'Returns the magnetic heading, regardless of the configured bearing.',lib:'compass.get_magneticHeading()',pro:'def get_magneticHeading()',cmt:'<p>Returns the magnetic heading, regardless of the configured bearing.</p>',ret:'a floating point number corresponding to the magnetic heading, regardless of the configured bearing',ext:'On failure, throws an exception or returns <tt>Y_MAGNETICHEADING_INVALID</tt>.'};
+doc['Compass']['get_module']={syn:'Gets the <tt>YModule</tt> object for the device on which the function is located.',lib:'compass.get_module()',pro:'def get_module()',cmt:'<p>Gets the <tt>YModule</tt> object for the device on which the function is located. If the function cannot be located on any module, the returned instance of <tt>YModule</tt> is not shown as on-line.</p>',ret:'an instance of <tt>YModule</tt>'};
+doc['Compass']['get_recordedData']={syn:'Retrieves a DataSet object holding historical data for this sensor, for a specified time interval.',lib:'compass.get_recordedData()',pro:'def get_recordedData(<span id=pn>startTime</span>, <span id=pn>endTime</span>)',cmt:'<p>Retrieves a DataSet object holding historical data for this sensor, for a specified time interval. The measures will be retrieved from the data logger, which must have been turned on at the desired time. See the documentation of the DataSet class for information on how to get an overview of the recorded data, and how to load progressively a large set of measures from the data logger.</p><p> This function only works if the device uses a recent firmware, as DataSet objects are not supported by firmwares older than version 13000.</p>',par:{startTime:'the start of the desired measure time interval, as a Unix timestamp, i.e. the number of seconds since January 1, 1970 UTC. The special value 0 can be used to include any meaasure, without initial limit.',endTime:'the end of the desired measure time interval, as a Unix timestamp, i.e. the number of seconds since January 1, 1970 UTC. The special value 0 can be used to include any meaasure, without ending limit.'},ret:'an instance of YDataSet, providing access to historical data. Past measures can be loaded progressively using methods from the YDataSet object.'};
+doc['Compass']['get_reportFrequency']={syn:'Returns the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function.',lib:'compass.get_reportFrequency()',pro:'def get_reportFrequency()',cmt:'<p>Returns the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function.</p>',ret:'a string corresponding to the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function',ext:'On failure, throws an exception or returns <tt>Y_REPORTFREQUENCY_INVALID</tt>.'};
+doc['Compass']['get_resolution']={syn:'Returns the resolution of the measured values.',lib:'compass.get_resolution()',pro:'def get_resolution()',cmt:'<p>Returns the resolution of the measured values. The resolution corresponds to the numerical precision of the measures, which is not always the same as the actual precision of the sensor.</p>',ret:'a floating point number corresponding to the resolution of the measured values',ext:'On failure, throws an exception or returns <tt>Y_RESOLUTION_INVALID</tt>.'};
+doc['Compass']['get_sensorState']={syn:'Returns the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now.',lib:'compass.get_sensorState()',pro:'def get_sensorState()',cmt:'<p>Returns the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now.</p>',ret:'an integer corresponding to the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now',ext:'On failure, throws an exception or returns <tt>Y_SENSORSTATE_INVALID</tt>.'};
+doc['Compass']['get_unit']={syn:'Returns the measuring unit for the relative bearing.',lib:'compass.get_unit()',pro:'def get_unit()',cmt:'<p>Returns the measuring unit for the relative bearing.</p>',ret:'a string corresponding to the measuring unit for the relative bearing',ext:'On failure, throws an exception or returns <tt>Y_UNIT_INVALID</tt>.'};
+doc['Compass']['get_userData']={syn:'Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>.',lib:'compass.get_userData()',pro:'def get_userData()',cmt:'<p>Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>. This attribute is never touched directly by the API, and is at disposal of the caller to store a context.</p>',ret:'the object stored previously by the caller.'};
+doc['Compass']['isOnline']={syn:'Checks if the compass is currently reachable, without raising any error.',lib:'compass.isOnline()',pro:'def isOnline()',cmt:'<p>Checks if the compass is currently reachable, without raising any error. If there is a cached value for the compass in cache, that has not yet expired, the device is considered reachable. No exception is raised if there is an error while trying to contact the device hosting the compass.</p>',ret:'<tt>true</tt> if the compass can be reached, and <tt>false</tt> otherwise'};
+doc['Compass']['load']={syn:'Preloads the compass cache with a specified validity duration.',lib:'compass.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Preloads the compass cache with a specified validity duration. By default, whenever accessing a device, all function attributes are kept in cache for the standard duration (5 ms). This method can be used to temporarily mark the cache as valid for a longer period, in order to reduce network traffic for instance.</p>',par:{msValidity:'an integer corresponding to the validity attributed to the loaded function parameters, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Compass']['loadAttribute']={syn:'Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.',lib:'compass.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'On failure, throws an exception or returns an empty string.'};
+doc['Compass']['loadCalibrationPoints']={syn:'Retrieves error correction data points previously entered using the method <tt>calibrateFromPoints</tt>.',lib:'compass.loadCalibrationPoints()',pro:'def loadCalibrationPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Retrieves error correction data points previously entered using the method <tt>calibrateFromPoints</tt>.</p>',par:{rawValues:'array of floating point numbers, that will be filled by the function with the raw sensor values for the correction points.',refValues:'array of floating point numbers, that will be filled by the function with the desired values for the correction points.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Compass']['muteValueCallbacks']={syn:'Disable the propagation of every new advertised value to the parent hub.',lib:'compass.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>Disable the propagation of every new advertised value to the parent hub. You can use this function to save bandwidth and CPU on computers with limited resources, or to prevent unwanted invocations of the HTTP callback. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Compass']['nextCompass']={syn:'Continues the enumeration of compasses started using <tt>yFirstCompass()</tt>.',lib:'compass.nextCompass()',pro:'def nextCompass()',cmt:'<p>Continues the enumeration of compasses started using <tt>yFirstCompass()</tt>.</p>',ret:'a pointer to a <tt>YCompass</tt> object, corresponding to a compass currently online, or a <tt>null</tt> pointer if there are no more compasses to enumerate.'};
+doc['Compass']['registerTimedReportCallback']={syn:'Registers the callback function that is invoked on every periodic timed notification.',lib:'compass.registerTimedReportCallback()',pro:'def registerTimedReportCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every periodic timed notification. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and an YMeasure object describing the new advertised value.'}};
+doc['Compass']['registerValueCallback']={syn:'Registers the callback function that is invoked on every change of advertised value.',lib:'compass.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every change of advertised value. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and the character string describing the new advertised value.'}};
+doc['Compass']['set_bandwidth']={syn:'Changes the measure update frequency, measured in Hz (Yocto-3D-V2 only).',lib:'compass.set_bandwidth()',pro:'def set_bandwidth(<span id=pn>newval</span>)',cmt:'<p>Changes the measure update frequency, measured in Hz (Yocto-3D-V2 only). When the frequency is lower, the device performs averaging.</p>',par:{newval:'an integer corresponding to the measure update frequency, measured in Hz (Yocto-3D-V2 only)'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Compass']['set_highestValue']={syn:'Changes the recorded maximal value observed.',lib:'compass.set_highestValue()',pro:'def set_highestValue(<span id=pn>newval</span>)',cmt:'<p>Changes the recorded maximal value observed.</p>',par:{newval:'a floating point number corresponding to the recorded maximal value observed'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Compass']['set_logFrequency']={syn:'Changes the datalogger recording frequency for this function.',lib:'compass.set_logFrequency()',pro:'def set_logFrequency(<span id=pn>newval</span>)',cmt:'<p>Changes the datalogger recording frequency for this function. The frequency can be specified as samples per second, as sample per minute (for instance \x2215/m\x22) or in samples per hour (eg. \x224/h\x22). To disable recording for this function, use the value \x22OFF\x22.</p>',par:{newval:'a string corresponding to the datalogger recording frequency for this function'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Compass']['set_logicalName']={syn:'Changes the logical name of the compass.',lib:'compass.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Changes the logical name of the compass. You can use <tt>yCheckLogicalName()</tt> prior to this call to make sure that your parameter is valid. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the logical name of the compass.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Compass']['set_lowestValue']={syn:'Changes the recorded minimal value observed.',lib:'compass.set_lowestValue()',pro:'def set_lowestValue(<span id=pn>newval</span>)',cmt:'<p>Changes the recorded minimal value observed.</p>',par:{newval:'a floating point number corresponding to the recorded minimal value observed'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Compass']['set_reportFrequency']={syn:'Changes the timed value notification frequency for this function.',lib:'compass.set_reportFrequency()',pro:'def set_reportFrequency(<span id=pn>newval</span>)',cmt:'<p>Changes the timed value notification frequency for this function. The frequency can be specified as samples per second, as sample per minute (for instance \x2215/m\x22) or in samples per hour (eg. \x224/h\x22). To disable timed value notifications for this function, use the value \x22OFF\x22.</p>',par:{newval:'a string corresponding to the timed value notification frequency for this function'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Compass']['set_resolution']={syn:'Changes the resolution of the measured physical values.',lib:'compass.set_resolution()',pro:'def set_resolution(<span id=pn>newval</span>)',cmt:'<p>Changes the resolution of the measured physical values. The resolution corresponds to the numerical precision when displaying value. It does not change the precision of the measure itself.</p>',par:{newval:'a floating point number corresponding to the resolution of the measured physical values'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Compass']['set_userData']={syn:'Stores a user context provided as argument in the userData attribute of the function.',lib:'compass.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Stores a user context provided as argument in the userData attribute of the function. This attribute is never touched by the API, and is at disposal of the caller to store a context.</p>',par:{data:'any kind of object to be stored'}};
+doc['Compass']['startDataLogger']={syn:'Starts the data logger on the device.',lib:'compass.startDataLogger()',pro:'def startDataLogger()',cmt:'<p>Starts the data logger on the device. Note that the data logger will only save the measures on this sensor if the logFrequency is not set to \x22OFF\x22.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.'};
+doc['Compass']['stopDataLogger']={syn:'Stops the datalogger on the device.',lib:'compass.stopDataLogger()',pro:'def stopDataLogger()',cmt:'<p>Stops the datalogger on the device.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.'};
+doc['Compass']['unmuteValueCallbacks']={syn:'Re-enable the propagation of every new advertised value to the parent hub.',lib:'compass.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>Re-enable the propagation of every new advertised value to the parent hub. This function reverts the effect of a previous call to <tt>muteValueCallbacks()</tt>. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+//--- (end of generated code: Compass)
+//--- (generated code: Gyro)
+doc['Gyro']={'':{syn:'Gyroscope function interface',inc:'from yocto_gyro import *',cmt:'<p>The YSensor class is the parent class for all Yoctopuce sensors. It can be used to read the current value and unit of any sensor, read the min/max value, configure autonomous recording frequency and access recorded data. It also provide a function to register a callback invoked each time the observed value changes, or at a predefined interval. Using this class rather than a specific subclass makes it possible to create generic applications that work with any Yoctopuce sensor, even those that do not yet exist. Note: The YAnButton class is the only analog input which does not inherit from YSensor.</p>'}};
+doc['Gyro']['FindGyro']={syn:'Retrieves a gyroscope for a given identifier.',lib:'YGyro.FindGyro()',pro:'def FindGyro(<span id=pn>func</span>)',cmt:'<p>Retrieves a gyroscope for a given identifier. The identifier can be specified using several formats:<br> <ul> <li>FunctionLogicalName</li> <li>ModuleSerialNumber.FunctionIdentifier</li> <li>ModuleSerialNumber.FunctionLogicalName</li> <li>ModuleLogicalName.FunctionIdentifier</li> <li>ModuleLogicalName.FunctionLogicalName</li> </ul></p><p> This function does not require that the gyroscope is online at the time it is invoked. The returned object is nevertheless valid. Use the method <tt>YGyro.isOnline()</tt> to test if the gyroscope is indeed online at a given time. In case of ambiguity when looking for a gyroscope by logical name, no error is notified: the first instance found is returned. The search is performed first by hardware name, then by logical name.</p>',par:{func:'a string that uniquely characterizes the gyroscope'},ret:'a <tt>YGyro</tt> object allowing you to drive the gyroscope.'};
+doc['Gyro']['FirstGyro']={syn:'Starts the enumeration of gyroscopes currently accessible.',lib:'YGyro.FirstGyro()',pro:'def FirstGyro()',cmt:'<p>Starts the enumeration of gyroscopes currently accessible. Use the method <tt>YGyro.nextGyro()</tt> to iterate on next gyroscopes.</p>',ret:'a pointer to a <tt>YGyro</tt> object, corresponding to the first gyro currently online, or a <tt>null</tt> pointer if there are none.'};
+doc['Gyro']['calibrateFromPoints']={syn:'Configures error correction data points, in particular to compensate for a possible perturbation of the measure caused by an enclosure.',lib:'gyro.calibrateFromPoints()',pro:'def calibrateFromPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Configures error correction data points, in particular to compensate for a possible perturbation of the measure caused by an enclosure. It is possible to configure up to five correction points. Correction points must be provided in ascending order, and be in the range of the sensor. The device will automatically perform a linear interpolation of the error correction between specified points. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p><p> For more information on advanced capabilities to refine the calibration of sensors, please contact support@yoctopuce.com.</p>',par:{rawValues:'array of floating point numbers, corresponding to the raw values returned by the sensor for the correction points.',refValues:'array of floating point numbers, corresponding to the corrected values for the correction points.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Gyro']['clearCache']={syn:'Invalidates the cache.',lib:'gyro.clearCache()',pro:'def clearCache()',cmt:'<p>Invalidates the cache. Invalidates the cache of the gyroscope attributes. Forces the next call to get_xxx() or loadxxx() to use values that come from the device.</p>'};
+doc['Gyro']['describe']={syn:'Returns a short text that describes unambiguously the instance of the gyroscope in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'gyro.describe()',pro:'def describe()',cmt:'<p>Returns a short text that describes unambiguously the instance of the gyroscope in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. More precisely, <tt>TYPE</tt> is the type of the function, <tt>NAME</tt> it the name used for the first access to the function, <tt>SERIAL</tt> is the serial number of the module if the module is connected or <tt>\x22unresolved\x22</tt>, and <tt>FUNCTIONID</tt> is the hardware identifier of the function if the module is connected. For example, this method returns <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> if the module is already connected or <tt>Relay(BadCustomeName.relay1)=unresolved</tt> if the module has not yet been connected. This method does not trigger any USB or TCP transaction and can therefore be used in a debugger.</p>',ret:'a string that describes the gyroscope (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['Gyro']['get_advertisedValue']={syn:'Returns the current value of the gyroscope (no more than 6 characters).',lib:'gyro.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Returns the current value of the gyroscope (no more than 6 characters).</p>',ret:'a string corresponding to the current value of the gyroscope (no more than 6 characters).',ext:'On failure, throws an exception or returns <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['Gyro']['get_bandwidth']={syn:'Returns the measure update frequency, measured in Hz (Yocto-3D-V2 only).',lib:'gyro.get_bandwidth()',pro:'def get_bandwidth()',cmt:'<p>Returns the measure update frequency, measured in Hz (Yocto-3D-V2 only).</p>',ret:'an integer corresponding to the measure update frequency, measured in Hz (Yocto-3D-V2 only)',ext:'On failure, throws an exception or returns <tt>Y_BANDWIDTH_INVALID</tt>.'};
+doc['Gyro']['get_currentRawValue']={syn:'Returns the uncalibrated, unrounded raw value returned by the sensor, in degrees per second, as a floating point number.',lib:'gyro.get_currentRawValue()',pro:'def get_currentRawValue()',cmt:'<p>Returns the uncalibrated, unrounded raw value returned by the sensor, in degrees per second, as a floating point number.</p>',ret:'a floating point number corresponding to the uncalibrated, unrounded raw value returned by the sensor, in degrees per second, as a floating point number',ext:'On failure, throws an exception or returns <tt>Y_CURRENTRAWVALUE_INVALID</tt>.'};
+doc['Gyro']['get_currentValue']={syn:'Returns the current value of the angular velocity, in degrees per second, as a floating point number.',lib:'gyro.get_currentValue()',pro:'def get_currentValue()',cmt:'<p>Returns the current value of the angular velocity, in degrees per second, as a floating point number.</p>',ret:'a floating point number corresponding to the current value of the angular velocity, in degrees per second, as a floating point number',ext:'On failure, throws an exception or returns <tt>Y_CURRENTVALUE_INVALID</tt>.'};
+doc['Gyro']['get_errorMessage']={syn:'Returns the error message of the latest error with the gyroscope.',lib:'gyro.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Returns the error message of the latest error with the gyroscope. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a string corresponding to the latest error message that occured while using the gyroscope object'};
+doc['Gyro']['get_errorType']={syn:'Returns the numerical error code of the latest error with the gyroscope.',lib:'gyro.get_errorType()',pro:'def get_errorType()',cmt:'<p>Returns the numerical error code of the latest error with the gyroscope. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a number corresponding to the code of the latest error that occurred while using the gyroscope object'};
+doc['Gyro']['get_friendlyName']={syn:'Returns a global identifier of the gyroscope in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>.',lib:'gyro.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Returns a global identifier of the gyroscope in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>. The returned string uses the logical names of the module and of the gyroscope if they are defined, otherwise the serial number of the module and the hardware identifier of the gyroscope (for example: <tt>MyCustomName.relay1</tt>)</p>',ret:'a string that uniquely identifies the gyroscope using logical names (ex: <tt>MyCustomName.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['Gyro']['get_functionDescriptor']={syn:'Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function.',lib:'gyro.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function. This identifier can be used to test if two instances of <tt>YFunction</tt> reference the same physical function on the same physical device.</p>',ret:'an identifier of type <tt>YFUN_DESCR</tt>.',ext:'If the function has never been contacted, the returned value is <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>.'};
+doc['Gyro']['get_functionId']={syn:'Returns the hardware identifier of the gyroscope, without reference to the module.',lib:'gyro.get_functionId()',pro:'def get_functionId()',cmt:'<p>Returns the hardware identifier of the gyroscope, without reference to the module. For example <tt>relay1</tt></p>',ret:'a string that identifies the gyroscope (ex: <tt>relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['Gyro']['get_hardwareId']={syn:'Returns the unique hardware identifier of the gyroscope in the form <tt>SERIAL.FUNCTIONID</tt>.',lib:'gyro.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Returns the unique hardware identifier of the gyroscope in the form <tt>SERIAL.FUNCTIONID</tt>. The unique hardware identifier is composed of the device serial number and of the hardware identifier of the gyroscope (for example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'a string that uniquely identifies the gyroscope (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['Gyro']['get_heading']={syn:'Returns the estimated heading angle, based on the integration of gyroscopic measures combined with acceleration and magnetic field measurements.',lib:'gyro.get_heading()',pro:'def get_heading()',cmt:'<p>Returns the estimated heading angle, based on the integration of gyroscopic measures combined with acceleration and magnetic field measurements. The axis corresponding to the heading can be mapped to any of the device X, Y or Z physical directions using methods of the class <tt>YRefFrame</tt>.</p>',ret:'a floating-point number corresponding to heading in degrees, between 0 and 360.'};
+doc['Gyro']['get_highestValue']={syn:'Returns the maximal value observed for the angular velocity since the device was started.',lib:'gyro.get_highestValue()',pro:'def get_highestValue()',cmt:'<p>Returns the maximal value observed for the angular velocity since the device was started.</p>',ret:'a floating point number corresponding to the maximal value observed for the angular velocity since the device was started',ext:'On failure, throws an exception or returns <tt>Y_HIGHESTVALUE_INVALID</tt>.'};
+doc['Gyro']['get_logFrequency']={syn:'Returns the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory.',lib:'gyro.get_logFrequency()',pro:'def get_logFrequency()',cmt:'<p>Returns the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory.</p>',ret:'a string corresponding to the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory',ext:'On failure, throws an exception or returns <tt>Y_LOGFREQUENCY_INVALID</tt>.'};
+doc['Gyro']['get_logicalName']={syn:'Returns the logical name of the gyroscope.',lib:'gyro.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Returns the logical name of the gyroscope.</p>',ret:'a string corresponding to the logical name of the gyroscope.',ext:'On failure, throws an exception or returns <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['Gyro']['get_lowestValue']={syn:'Returns the minimal value observed for the angular velocity since the device was started.',lib:'gyro.get_lowestValue()',pro:'def get_lowestValue()',cmt:'<p>Returns the minimal value observed for the angular velocity since the device was started.</p>',ret:'a floating point number corresponding to the minimal value observed for the angular velocity since the device was started',ext:'On failure, throws an exception or returns <tt>Y_LOWESTVALUE_INVALID</tt>.'};
+doc['Gyro']['get_module']={syn:'Gets the <tt>YModule</tt> object for the device on which the function is located.',lib:'gyro.get_module()',pro:'def get_module()',cmt:'<p>Gets the <tt>YModule</tt> object for the device on which the function is located. If the function cannot be located on any module, the returned instance of <tt>YModule</tt> is not shown as on-line.</p>',ret:'an instance of <tt>YModule</tt>'};
+doc['Gyro']['get_pitch']={syn:'Returns the estimated pitch angle, based on the integration of gyroscopic measures combined with acceleration and magnetic field measurements.',lib:'gyro.get_pitch()',pro:'def get_pitch()',cmt:'<p>Returns the estimated pitch angle, based on the integration of gyroscopic measures combined with acceleration and magnetic field measurements. The axis corresponding to the pitch angle can be mapped to any of the device X, Y or Z physical directions using methods of the class <tt>YRefFrame</tt>.</p>',ret:'a floating-point number corresponding to pitch angle in degrees, between -90 and +90.'};
+doc['Gyro']['get_quaternionW']={syn:'Returns the <tt>w</tt> component (real part) of the quaternion describing the device estimated orientation, based on the integration of gyroscopic measures combined with acceleration and magnetic field measurements.',lib:'gyro.get_quaternionW()',pro:'def get_quaternionW()',cmt:'<p>Returns the <tt>w</tt> component (real part) of the quaternion describing the device estimated orientation, based on the integration of gyroscopic measures combined with acceleration and magnetic field measurements.</p>',ret:'a floating-point number corresponding to the <tt>w</tt> component of the quaternion.'};
+doc['Gyro']['get_quaternionX']={syn:'Returns the <tt>x</tt> component of the quaternion describing the device estimated orientation, based on the integration of gyroscopic measures combined with acceleration and magnetic field measurements.',lib:'gyro.get_quaternionX()',pro:'def get_quaternionX()',cmt:'<p>Returns the <tt>x</tt> component of the quaternion describing the device estimated orientation, based on the integration of gyroscopic measures combined with acceleration and magnetic field measurements. The <tt>x</tt> component is mostly correlated with rotations on the roll axis.</p>',ret:'a floating-point number corresponding to the <tt>x</tt> component of the quaternion.'};
+doc['Gyro']['get_quaternionY']={syn:'Returns the <tt>y</tt> component of the quaternion describing the device estimated orientation, based on the integration of gyroscopic measures combined with acceleration and magnetic field measurements.',lib:'gyro.get_quaternionY()',pro:'def get_quaternionY()',cmt:'<p>Returns the <tt>y</tt> component of the quaternion describing the device estimated orientation, based on the integration of gyroscopic measures combined with acceleration and magnetic field measurements. The <tt>y</tt> component is mostly correlated with rotations on the pitch axis.</p>',ret:'a floating-point number corresponding to the <tt>y</tt> component of the quaternion.'};
+doc['Gyro']['get_quaternionZ']={syn:'Returns the <tt>x</tt> component of the quaternion describing the device estimated orientation, based on the integration of gyroscopic measures combined with acceleration and magnetic field measurements.',lib:'gyro.get_quaternionZ()',pro:'def get_quaternionZ()',cmt:'<p>Returns the <tt>x</tt> component of the quaternion describing the device estimated orientation, based on the integration of gyroscopic measures combined with acceleration and magnetic field measurements. The <tt>x</tt> component is mostly correlated with changes of heading.</p>',ret:'a floating-point number corresponding to the <tt>z</tt> component of the quaternion.'};
+doc['Gyro']['get_recordedData']={syn:'Retrieves a DataSet object holding historical data for this sensor, for a specified time interval.',lib:'gyro.get_recordedData()',pro:'def get_recordedData(<span id=pn>startTime</span>, <span id=pn>endTime</span>)',cmt:'<p>Retrieves a DataSet object holding historical data for this sensor, for a specified time interval. The measures will be retrieved from the data logger, which must have been turned on at the desired time. See the documentation of the DataSet class for information on how to get an overview of the recorded data, and how to load progressively a large set of measures from the data logger.</p><p> This function only works if the device uses a recent firmware, as DataSet objects are not supported by firmwares older than version 13000.</p>',par:{startTime:'the start of the desired measure time interval, as a Unix timestamp, i.e. the number of seconds since January 1, 1970 UTC. The special value 0 can be used to include any meaasure, without initial limit.',endTime:'the end of the desired measure time interval, as a Unix timestamp, i.e. the number of seconds since January 1, 1970 UTC. The special value 0 can be used to include any meaasure, without ending limit.'},ret:'an instance of YDataSet, providing access to historical data. Past measures can be loaded progressively using methods from the YDataSet object.'};
+doc['Gyro']['get_reportFrequency']={syn:'Returns the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function.',lib:'gyro.get_reportFrequency()',pro:'def get_reportFrequency()',cmt:'<p>Returns the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function.</p>',ret:'a string corresponding to the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function',ext:'On failure, throws an exception or returns <tt>Y_REPORTFREQUENCY_INVALID</tt>.'};
+doc['Gyro']['get_resolution']={syn:'Returns the resolution of the measured values.',lib:'gyro.get_resolution()',pro:'def get_resolution()',cmt:'<p>Returns the resolution of the measured values. The resolution corresponds to the numerical precision of the measures, which is not always the same as the actual precision of the sensor.</p>',ret:'a floating point number corresponding to the resolution of the measured values',ext:'On failure, throws an exception or returns <tt>Y_RESOLUTION_INVALID</tt>.'};
+doc['Gyro']['get_roll']={syn:'Returns the estimated roll angle, based on the integration of gyroscopic measures combined with acceleration and magnetic field measurements.',lib:'gyro.get_roll()',pro:'def get_roll()',cmt:'<p>Returns the estimated roll angle, based on the integration of gyroscopic measures combined with acceleration and magnetic field measurements. The axis corresponding to the roll angle can be mapped to any of the device X, Y or Z physical directions using methods of the class <tt>YRefFrame</tt>.</p>',ret:'a floating-point number corresponding to roll angle in degrees, between -180 and +180.'};
+doc['Gyro']['get_sensorState']={syn:'Returns the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now.',lib:'gyro.get_sensorState()',pro:'def get_sensorState()',cmt:'<p>Returns the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now.</p>',ret:'an integer corresponding to the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now',ext:'On failure, throws an exception or returns <tt>Y_SENSORSTATE_INVALID</tt>.'};
+doc['Gyro']['get_unit']={syn:'Returns the measuring unit for the angular velocity.',lib:'gyro.get_unit()',pro:'def get_unit()',cmt:'<p>Returns the measuring unit for the angular velocity.</p>',ret:'a string corresponding to the measuring unit for the angular velocity',ext:'On failure, throws an exception or returns <tt>Y_UNIT_INVALID</tt>.'};
+doc['Gyro']['get_userData']={syn:'Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>.',lib:'gyro.get_userData()',pro:'def get_userData()',cmt:'<p>Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>. This attribute is never touched directly by the API, and is at disposal of the caller to store a context.</p>',ret:'the object stored previously by the caller.'};
+doc['Gyro']['get_xValue']={syn:'Returns the angular velocity around the X axis of the device, as a floating point number.',lib:'gyro.get_xValue()',pro:'def get_xValue()',cmt:'<p>Returns the angular velocity around the X axis of the device, as a floating point number.</p>',ret:'a floating point number corresponding to the angular velocity around the X axis of the device, as a floating point number',ext:'On failure, throws an exception or returns <tt>Y_XVALUE_INVALID</tt>.'};
+doc['Gyro']['get_yValue']={syn:'Returns the angular velocity around the Y axis of the device, as a floating point number.',lib:'gyro.get_yValue()',pro:'def get_yValue()',cmt:'<p>Returns the angular velocity around the Y axis of the device, as a floating point number.</p>',ret:'a floating point number corresponding to the angular velocity around the Y axis of the device, as a floating point number',ext:'On failure, throws an exception or returns <tt>Y_YVALUE_INVALID</tt>.'};
+doc['Gyro']['get_zValue']={syn:'Returns the angular velocity around the Z axis of the device, as a floating point number.',lib:'gyro.get_zValue()',pro:'def get_zValue()',cmt:'<p>Returns the angular velocity around the Z axis of the device, as a floating point number.</p>',ret:'a floating point number corresponding to the angular velocity around the Z axis of the device, as a floating point number',ext:'On failure, throws an exception or returns <tt>Y_ZVALUE_INVALID</tt>.'};
+doc['Gyro']['isOnline']={syn:'Checks if the gyroscope is currently reachable, without raising any error.',lib:'gyro.isOnline()',pro:'def isOnline()',cmt:'<p>Checks if the gyroscope is currently reachable, without raising any error. If there is a cached value for the gyroscope in cache, that has not yet expired, the device is considered reachable. No exception is raised if there is an error while trying to contact the device hosting the gyroscope.</p>',ret:'<tt>true</tt> if the gyroscope can be reached, and <tt>false</tt> otherwise'};
+doc['Gyro']['load']={syn:'Preloads the gyroscope cache with a specified validity duration.',lib:'gyro.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Preloads the gyroscope cache with a specified validity duration. By default, whenever accessing a device, all function attributes are kept in cache for the standard duration (5 ms). This method can be used to temporarily mark the cache as valid for a longer period, in order to reduce network traffic for instance.</p>',par:{msValidity:'an integer corresponding to the validity attributed to the loaded function parameters, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Gyro']['loadAttribute']={syn:'Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.',lib:'gyro.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'On failure, throws an exception or returns an empty string.'};
+doc['Gyro']['loadCalibrationPoints']={syn:'Retrieves error correction data points previously entered using the method <tt>calibrateFromPoints</tt>.',lib:'gyro.loadCalibrationPoints()',pro:'def loadCalibrationPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Retrieves error correction data points previously entered using the method <tt>calibrateFromPoints</tt>.</p>',par:{rawValues:'array of floating point numbers, that will be filled by the function with the raw sensor values for the correction points.',refValues:'array of floating point numbers, that will be filled by the function with the desired values for the correction points.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Gyro']['muteValueCallbacks']={syn:'Disable the propagation of every new advertised value to the parent hub.',lib:'gyro.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>Disable the propagation of every new advertised value to the parent hub. You can use this function to save bandwidth and CPU on computers with limited resources, or to prevent unwanted invocations of the HTTP callback. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Gyro']['nextGyro']={syn:'Continues the enumeration of gyroscopes started using <tt>yFirstGyro()</tt>.',lib:'gyro.nextGyro()',pro:'def nextGyro()',cmt:'<p>Continues the enumeration of gyroscopes started using <tt>yFirstGyro()</tt>.</p>',ret:'a pointer to a <tt>YGyro</tt> object, corresponding to a gyroscope currently online, or a <tt>null</tt> pointer if there are no more gyroscopes to enumerate.'};
+doc['Gyro']['registerAnglesCallback']={syn:'Registers a callback function that will be invoked each time that the estimated device orientation has changed.',lib:'gyro.registerAnglesCallback()',pro:'def registerAnglesCallback(<span id=pn>callback</span>)',cmt:'<p>Registers a callback function that will be invoked each time that the estimated device orientation has changed. The call frequency is typically around 95Hz during a move. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to invoke, or a null pointer. The callback function should take four arguments: the YGyro object of the turning device, and the floating point values of the three angles roll, pitch and heading in degrees (as floating-point numbers).'}};
+doc['Gyro']['registerQuaternionCallback']={syn:'Registers a callback function that will be invoked each time that the estimated device orientation has changed.',lib:'gyro.registerQuaternionCallback()',pro:'def registerQuaternionCallback(<span id=pn>callback</span>)',cmt:'<p>Registers a callback function that will be invoked each time that the estimated device orientation has changed. The call frequency is typically around 95Hz during a move. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to invoke, or a null pointer. The callback function should take five arguments: the YGyro object of the turning device, and the floating point values of the four components w, x, y and z (as floating-point numbers).'}};
+doc['Gyro']['registerTimedReportCallback']={syn:'Registers the callback function that is invoked on every periodic timed notification.',lib:'gyro.registerTimedReportCallback()',pro:'def registerTimedReportCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every periodic timed notification. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and an YMeasure object describing the new advertised value.'}};
+doc['Gyro']['registerValueCallback']={syn:'Registers the callback function that is invoked on every change of advertised value.',lib:'gyro.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every change of advertised value. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and the character string describing the new advertised value.'}};
+doc['Gyro']['set_bandwidth']={syn:'Changes the measure update frequency, measured in Hz (Yocto-3D-V2 only).',lib:'gyro.set_bandwidth()',pro:'def set_bandwidth(<span id=pn>newval</span>)',cmt:'<p>Changes the measure update frequency, measured in Hz (Yocto-3D-V2 only). When the frequency is lower, the device performs averaging.</p>',par:{newval:'an integer corresponding to the measure update frequency, measured in Hz (Yocto-3D-V2 only)'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Gyro']['set_highestValue']={syn:'Changes the recorded maximal value observed.',lib:'gyro.set_highestValue()',pro:'def set_highestValue(<span id=pn>newval</span>)',cmt:'<p>Changes the recorded maximal value observed.</p>',par:{newval:'a floating point number corresponding to the recorded maximal value observed'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Gyro']['set_logFrequency']={syn:'Changes the datalogger recording frequency for this function.',lib:'gyro.set_logFrequency()',pro:'def set_logFrequency(<span id=pn>newval</span>)',cmt:'<p>Changes the datalogger recording frequency for this function. The frequency can be specified as samples per second, as sample per minute (for instance \x2215/m\x22) or in samples per hour (eg. \x224/h\x22). To disable recording for this function, use the value \x22OFF\x22.</p>',par:{newval:'a string corresponding to the datalogger recording frequency for this function'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Gyro']['set_logicalName']={syn:'Changes the logical name of the gyroscope.',lib:'gyro.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Changes the logical name of the gyroscope. You can use <tt>yCheckLogicalName()</tt> prior to this call to make sure that your parameter is valid. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the logical name of the gyroscope.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Gyro']['set_lowestValue']={syn:'Changes the recorded minimal value observed.',lib:'gyro.set_lowestValue()',pro:'def set_lowestValue(<span id=pn>newval</span>)',cmt:'<p>Changes the recorded minimal value observed.</p>',par:{newval:'a floating point number corresponding to the recorded minimal value observed'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Gyro']['set_reportFrequency']={syn:'Changes the timed value notification frequency for this function.',lib:'gyro.set_reportFrequency()',pro:'def set_reportFrequency(<span id=pn>newval</span>)',cmt:'<p>Changes the timed value notification frequency for this function. The frequency can be specified as samples per second, as sample per minute (for instance \x2215/m\x22) or in samples per hour (eg. \x224/h\x22). To disable timed value notifications for this function, use the value \x22OFF\x22.</p>',par:{newval:'a string corresponding to the timed value notification frequency for this function'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Gyro']['set_resolution']={syn:'Changes the resolution of the measured physical values.',lib:'gyro.set_resolution()',pro:'def set_resolution(<span id=pn>newval</span>)',cmt:'<p>Changes the resolution of the measured physical values. The resolution corresponds to the numerical precision when displaying value. It does not change the precision of the measure itself.</p>',par:{newval:'a floating point number corresponding to the resolution of the measured physical values'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Gyro']['set_userData']={syn:'Stores a user context provided as argument in the userData attribute of the function.',lib:'gyro.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Stores a user context provided as argument in the userData attribute of the function. This attribute is never touched by the API, and is at disposal of the caller to store a context.</p>',par:{data:'any kind of object to be stored'}};
+doc['Gyro']['startDataLogger']={syn:'Starts the data logger on the device.',lib:'gyro.startDataLogger()',pro:'def startDataLogger()',cmt:'<p>Starts the data logger on the device. Note that the data logger will only save the measures on this sensor if the logFrequency is not set to \x22OFF\x22.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.'};
+doc['Gyro']['stopDataLogger']={syn:'Stops the datalogger on the device.',lib:'gyro.stopDataLogger()',pro:'def stopDataLogger()',cmt:'<p>Stops the datalogger on the device.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.'};
+doc['Gyro']['unmuteValueCallbacks']={syn:'Re-enable the propagation of every new advertised value to the parent hub.',lib:'gyro.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>Re-enable the propagation of every new advertised value to the parent hub. This function reverts the effect of a previous call to <tt>muteValueCallbacks()</tt>. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+//--- (end of generated code: Gyro)
+//--- (generated code: Tilt)
+doc['Tilt']={'':{syn:'Tilt function interface',inc:'from yocto_tilt import *',cmt:'<p>The YSensor class is the parent class for all Yoctopuce sensors. It can be used to read the current value and unit of any sensor, read the min/max value, configure autonomous recording frequency and access recorded data. It also provide a function to register a callback invoked each time the observed value changes, or at a predefined interval. Using this class rather than a specific subclass makes it possible to create generic applications that work with any Yoctopuce sensor, even those that do not yet exist. Note: The YAnButton class is the only analog input which does not inherit from YSensor.</p>'}};
+doc['Tilt']['FindTilt']={syn:'Retrieves a tilt sensor for a given identifier.',lib:'YTilt.FindTilt()',pro:'def FindTilt(<span id=pn>func</span>)',cmt:'<p>Retrieves a tilt sensor for a given identifier. The identifier can be specified using several formats:<br> <ul> <li>FunctionLogicalName</li> <li>ModuleSerialNumber.FunctionIdentifier</li> <li>ModuleSerialNumber.FunctionLogicalName</li> <li>ModuleLogicalName.FunctionIdentifier</li> <li>ModuleLogicalName.FunctionLogicalName</li> </ul></p><p> This function does not require that the tilt sensor is online at the time it is invoked. The returned object is nevertheless valid. Use the method <tt>YTilt.isOnline()</tt> to test if the tilt sensor is indeed online at a given time. In case of ambiguity when looking for a tilt sensor by logical name, no error is notified: the first instance found is returned. The search is performed first by hardware name, then by logical name.</p>',par:{func:'a string that uniquely characterizes the tilt sensor'},ret:'a <tt>YTilt</tt> object allowing you to drive the tilt sensor.'};
+doc['Tilt']['FirstTilt']={syn:'Starts the enumeration of tilt sensors currently accessible.',lib:'YTilt.FirstTilt()',pro:'def FirstTilt()',cmt:'<p>Starts the enumeration of tilt sensors currently accessible. Use the method <tt>YTilt.nextTilt()</tt> to iterate on next tilt sensors.</p>',ret:'a pointer to a <tt>YTilt</tt> object, corresponding to the first tilt sensor currently online, or a <tt>null</tt> pointer if there are none.'};
+doc['Tilt']['calibrateFromPoints']={syn:'Configures error correction data points, in particular to compensate for a possible perturbation of the measure caused by an enclosure.',lib:'tilt.calibrateFromPoints()',pro:'def calibrateFromPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Configures error correction data points, in particular to compensate for a possible perturbation of the measure caused by an enclosure. It is possible to configure up to five correction points. Correction points must be provided in ascending order, and be in the range of the sensor. The device will automatically perform a linear interpolation of the error correction between specified points. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p><p> For more information on advanced capabilities to refine the calibration of sensors, please contact support@yoctopuce.com.</p>',par:{rawValues:'array of floating point numbers, corresponding to the raw values returned by the sensor for the correction points.',refValues:'array of floating point numbers, corresponding to the corrected values for the correction points.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Tilt']['clearCache']={syn:'Invalidates the cache.',lib:'tilt.clearCache()',pro:'def clearCache()',cmt:'<p>Invalidates the cache. Invalidates the cache of the tilt sensor attributes. Forces the next call to get_xxx() or loadxxx() to use values that come from the device.</p>'};
+doc['Tilt']['describe']={syn:'Returns a short text that describes unambiguously the instance of the tilt sensor in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'tilt.describe()',pro:'def describe()',cmt:'<p>Returns a short text that describes unambiguously the instance of the tilt sensor in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. More precisely, <tt>TYPE</tt> is the type of the function, <tt>NAME</tt> it the name used for the first access to the function, <tt>SERIAL</tt> is the serial number of the module if the module is connected or <tt>\x22unresolved\x22</tt>, and <tt>FUNCTIONID</tt> is the hardware identifier of the function if the module is connected. For example, this method returns <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> if the module is already connected or <tt>Relay(BadCustomeName.relay1)=unresolved</tt> if the module has not yet been connected. This method does not trigger any USB or TCP transaction and can therefore be used in a debugger.</p>',ret:'a string that describes the tilt sensor (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['Tilt']['get_advertisedValue']={syn:'Returns the current value of the tilt sensor (no more than 6 characters).',lib:'tilt.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Returns the current value of the tilt sensor (no more than 6 characters).</p>',ret:'a string corresponding to the current value of the tilt sensor (no more than 6 characters).',ext:'On failure, throws an exception or returns <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['Tilt']['get_bandwidth']={syn:'Returns the measure update frequency, measured in Hz (Yocto-3D-V2 only).',lib:'tilt.get_bandwidth()',pro:'def get_bandwidth()',cmt:'<p>Returns the measure update frequency, measured in Hz (Yocto-3D-V2 only).</p>',ret:'an integer corresponding to the measure update frequency, measured in Hz (Yocto-3D-V2 only)',ext:'On failure, throws an exception or returns <tt>Y_BANDWIDTH_INVALID</tt>.'};
+doc['Tilt']['get_currentRawValue']={syn:'Returns the uncalibrated, unrounded raw value returned by the sensor, in degrees, as a floating point number.',lib:'tilt.get_currentRawValue()',pro:'def get_currentRawValue()',cmt:'<p>Returns the uncalibrated, unrounded raw value returned by the sensor, in degrees, as a floating point number.</p>',ret:'a floating point number corresponding to the uncalibrated, unrounded raw value returned by the sensor, in degrees, as a floating point number',ext:'On failure, throws an exception or returns <tt>Y_CURRENTRAWVALUE_INVALID</tt>.'};
+doc['Tilt']['get_currentValue']={syn:'Returns the current value of the inclination, in degrees, as a floating point number.',lib:'tilt.get_currentValue()',pro:'def get_currentValue()',cmt:'<p>Returns the current value of the inclination, in degrees, as a floating point number.</p>',ret:'a floating point number corresponding to the current value of the inclination, in degrees, as a floating point number',ext:'On failure, throws an exception or returns <tt>Y_CURRENTVALUE_INVALID</tt>.'};
+doc['Tilt']['get_errorMessage']={syn:'Returns the error message of the latest error with the tilt sensor.',lib:'tilt.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Returns the error message of the latest error with the tilt sensor. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a string corresponding to the latest error message that occured while using the tilt sensor object'};
+doc['Tilt']['get_errorType']={syn:'Returns the numerical error code of the latest error with the tilt sensor.',lib:'tilt.get_errorType()',pro:'def get_errorType()',cmt:'<p>Returns the numerical error code of the latest error with the tilt sensor. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a number corresponding to the code of the latest error that occurred while using the tilt sensor object'};
+doc['Tilt']['get_friendlyName']={syn:'Returns a global identifier of the tilt sensor in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>.',lib:'tilt.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Returns a global identifier of the tilt sensor in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>. The returned string uses the logical names of the module and of the tilt sensor if they are defined, otherwise the serial number of the module and the hardware identifier of the tilt sensor (for example: <tt>MyCustomName.relay1</tt>)</p>',ret:'a string that uniquely identifies the tilt sensor using logical names (ex: <tt>MyCustomName.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['Tilt']['get_functionDescriptor']={syn:'Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function.',lib:'tilt.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function. This identifier can be used to test if two instances of <tt>YFunction</tt> reference the same physical function on the same physical device.</p>',ret:'an identifier of type <tt>YFUN_DESCR</tt>.',ext:'If the function has never been contacted, the returned value is <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>.'};
+doc['Tilt']['get_functionId']={syn:'Returns the hardware identifier of the tilt sensor, without reference to the module.',lib:'tilt.get_functionId()',pro:'def get_functionId()',cmt:'<p>Returns the hardware identifier of the tilt sensor, without reference to the module. For example <tt>relay1</tt></p>',ret:'a string that identifies the tilt sensor (ex: <tt>relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['Tilt']['get_hardwareId']={syn:'Returns the unique hardware identifier of the tilt sensor in the form <tt>SERIAL.FUNCTIONID</tt>.',lib:'tilt.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Returns the unique hardware identifier of the tilt sensor in the form <tt>SERIAL.FUNCTIONID</tt>. The unique hardware identifier is composed of the device serial number and of the hardware identifier of the tilt sensor (for example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'a string that uniquely identifies the tilt sensor (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['Tilt']['get_highestValue']={syn:'Returns the maximal value observed for the inclination since the device was started.',lib:'tilt.get_highestValue()',pro:'def get_highestValue()',cmt:'<p>Returns the maximal value observed for the inclination since the device was started.</p>',ret:'a floating point number corresponding to the maximal value observed for the inclination since the device was started',ext:'On failure, throws an exception or returns <tt>Y_HIGHESTVALUE_INVALID</tt>.'};
+doc['Tilt']['get_logFrequency']={syn:'Returns the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory.',lib:'tilt.get_logFrequency()',pro:'def get_logFrequency()',cmt:'<p>Returns the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory.</p>',ret:'a string corresponding to the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory',ext:'On failure, throws an exception or returns <tt>Y_LOGFREQUENCY_INVALID</tt>.'};
+doc['Tilt']['get_logicalName']={syn:'Returns the logical name of the tilt sensor.',lib:'tilt.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Returns the logical name of the tilt sensor.</p>',ret:'a string corresponding to the logical name of the tilt sensor.',ext:'On failure, throws an exception or returns <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['Tilt']['get_lowestValue']={syn:'Returns the minimal value observed for the inclination since the device was started.',lib:'tilt.get_lowestValue()',pro:'def get_lowestValue()',cmt:'<p>Returns the minimal value observed for the inclination since the device was started.</p>',ret:'a floating point number corresponding to the minimal value observed for the inclination since the device was started',ext:'On failure, throws an exception or returns <tt>Y_LOWESTVALUE_INVALID</tt>.'};
+doc['Tilt']['get_module']={syn:'Gets the <tt>YModule</tt> object for the device on which the function is located.',lib:'tilt.get_module()',pro:'def get_module()',cmt:'<p>Gets the <tt>YModule</tt> object for the device on which the function is located. If the function cannot be located on any module, the returned instance of <tt>YModule</tt> is not shown as on-line.</p>',ret:'an instance of <tt>YModule</tt>'};
+doc['Tilt']['get_recordedData']={syn:'Retrieves a DataSet object holding historical data for this sensor, for a specified time interval.',lib:'tilt.get_recordedData()',pro:'def get_recordedData(<span id=pn>startTime</span>, <span id=pn>endTime</span>)',cmt:'<p>Retrieves a DataSet object holding historical data for this sensor, for a specified time interval. The measures will be retrieved from the data logger, which must have been turned on at the desired time. See the documentation of the DataSet class for information on how to get an overview of the recorded data, and how to load progressively a large set of measures from the data logger.</p><p> This function only works if the device uses a recent firmware, as DataSet objects are not supported by firmwares older than version 13000.</p>',par:{startTime:'the start of the desired measure time interval, as a Unix timestamp, i.e. the number of seconds since January 1, 1970 UTC. The special value 0 can be used to include any meaasure, without initial limit.',endTime:'the end of the desired measure time interval, as a Unix timestamp, i.e. the number of seconds since January 1, 1970 UTC. The special value 0 can be used to include any meaasure, without ending limit.'},ret:'an instance of YDataSet, providing access to historical data. Past measures can be loaded progressively using methods from the YDataSet object.'};
+doc['Tilt']['get_reportFrequency']={syn:'Returns the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function.',lib:'tilt.get_reportFrequency()',pro:'def get_reportFrequency()',cmt:'<p>Returns the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function.</p>',ret:'a string corresponding to the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function',ext:'On failure, throws an exception or returns <tt>Y_REPORTFREQUENCY_INVALID</tt>.'};
+doc['Tilt']['get_resolution']={syn:'Returns the resolution of the measured values.',lib:'tilt.get_resolution()',pro:'def get_resolution()',cmt:'<p>Returns the resolution of the measured values. The resolution corresponds to the numerical precision of the measures, which is not always the same as the actual precision of the sensor.</p>',ret:'a floating point number corresponding to the resolution of the measured values',ext:'On failure, throws an exception or returns <tt>Y_RESOLUTION_INVALID</tt>.'};
+doc['Tilt']['get_sensorState']={syn:'Returns the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now.',lib:'tilt.get_sensorState()',pro:'def get_sensorState()',cmt:'<p>Returns the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now.</p>',ret:'an integer corresponding to the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now',ext:'On failure, throws an exception or returns <tt>Y_SENSORSTATE_INVALID</tt>.'};
+doc['Tilt']['get_unit']={syn:'Returns the measuring unit for the inclination.',lib:'tilt.get_unit()',pro:'def get_unit()',cmt:'<p>Returns the measuring unit for the inclination.</p>',ret:'a string corresponding to the measuring unit for the inclination',ext:'On failure, throws an exception or returns <tt>Y_UNIT_INVALID</tt>.'};
+doc['Tilt']['get_userData']={syn:'Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>.',lib:'tilt.get_userData()',pro:'def get_userData()',cmt:'<p>Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>. This attribute is never touched directly by the API, and is at disposal of the caller to store a context.</p>',ret:'the object stored previously by the caller.'};
+doc['Tilt']['isOnline']={syn:'Checks if the tilt sensor is currently reachable, without raising any error.',lib:'tilt.isOnline()',pro:'def isOnline()',cmt:'<p>Checks if the tilt sensor is currently reachable, without raising any error. If there is a cached value for the tilt sensor in cache, that has not yet expired, the device is considered reachable. No exception is raised if there is an error while trying to contact the device hosting the tilt sensor.</p>',ret:'<tt>true</tt> if the tilt sensor can be reached, and <tt>false</tt> otherwise'};
+doc['Tilt']['load']={syn:'Preloads the tilt sensor cache with a specified validity duration.',lib:'tilt.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Preloads the tilt sensor cache with a specified validity duration. By default, whenever accessing a device, all function attributes are kept in cache for the standard duration (5 ms). This method can be used to temporarily mark the cache as valid for a longer period, in order to reduce network traffic for instance.</p>',par:{msValidity:'an integer corresponding to the validity attributed to the loaded function parameters, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Tilt']['loadAttribute']={syn:'Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.',lib:'tilt.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'On failure, throws an exception or returns an empty string.'};
+doc['Tilt']['loadCalibrationPoints']={syn:'Retrieves error correction data points previously entered using the method <tt>calibrateFromPoints</tt>.',lib:'tilt.loadCalibrationPoints()',pro:'def loadCalibrationPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Retrieves error correction data points previously entered using the method <tt>calibrateFromPoints</tt>.</p>',par:{rawValues:'array of floating point numbers, that will be filled by the function with the raw sensor values for the correction points.',refValues:'array of floating point numbers, that will be filled by the function with the desired values for the correction points.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Tilt']['muteValueCallbacks']={syn:'Disable the propagation of every new advertised value to the parent hub.',lib:'tilt.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>Disable the propagation of every new advertised value to the parent hub. You can use this function to save bandwidth and CPU on computers with limited resources, or to prevent unwanted invocations of the HTTP callback. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Tilt']['nextTilt']={syn:'Continues the enumeration of tilt sensors started using <tt>yFirstTilt()</tt>.',lib:'tilt.nextTilt()',pro:'def nextTilt()',cmt:'<p>Continues the enumeration of tilt sensors started using <tt>yFirstTilt()</tt>.</p>',ret:'a pointer to a <tt>YTilt</tt> object, corresponding to a tilt sensor currently online, or a <tt>null</tt> pointer if there are no more tilt sensors to enumerate.'};
+doc['Tilt']['registerTimedReportCallback']={syn:'Registers the callback function that is invoked on every periodic timed notification.',lib:'tilt.registerTimedReportCallback()',pro:'def registerTimedReportCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every periodic timed notification. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and an YMeasure object describing the new advertised value.'}};
+doc['Tilt']['registerValueCallback']={syn:'Registers the callback function that is invoked on every change of advertised value.',lib:'tilt.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every change of advertised value. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and the character string describing the new advertised value.'}};
+doc['Tilt']['set_bandwidth']={syn:'Changes the measure update frequency, measured in Hz (Yocto-3D-V2 only).',lib:'tilt.set_bandwidth()',pro:'def set_bandwidth(<span id=pn>newval</span>)',cmt:'<p>Changes the measure update frequency, measured in Hz (Yocto-3D-V2 only). When the frequency is lower, the device performs averaging.</p>',par:{newval:'an integer corresponding to the measure update frequency, measured in Hz (Yocto-3D-V2 only)'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Tilt']['set_highestValue']={syn:'Changes the recorded maximal value observed.',lib:'tilt.set_highestValue()',pro:'def set_highestValue(<span id=pn>newval</span>)',cmt:'<p>Changes the recorded maximal value observed.</p>',par:{newval:'a floating point number corresponding to the recorded maximal value observed'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Tilt']['set_logFrequency']={syn:'Changes the datalogger recording frequency for this function.',lib:'tilt.set_logFrequency()',pro:'def set_logFrequency(<span id=pn>newval</span>)',cmt:'<p>Changes the datalogger recording frequency for this function. The frequency can be specified as samples per second, as sample per minute (for instance \x2215/m\x22) or in samples per hour (eg. \x224/h\x22). To disable recording for this function, use the value \x22OFF\x22.</p>',par:{newval:'a string corresponding to the datalogger recording frequency for this function'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Tilt']['set_logicalName']={syn:'Changes the logical name of the tilt sensor.',lib:'tilt.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Changes the logical name of the tilt sensor. You can use <tt>yCheckLogicalName()</tt> prior to this call to make sure that your parameter is valid. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the logical name of the tilt sensor.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Tilt']['set_lowestValue']={syn:'Changes the recorded minimal value observed.',lib:'tilt.set_lowestValue()',pro:'def set_lowestValue(<span id=pn>newval</span>)',cmt:'<p>Changes the recorded minimal value observed.</p>',par:{newval:'a floating point number corresponding to the recorded minimal value observed'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Tilt']['set_reportFrequency']={syn:'Changes the timed value notification frequency for this function.',lib:'tilt.set_reportFrequency()',pro:'def set_reportFrequency(<span id=pn>newval</span>)',cmt:'<p>Changes the timed value notification frequency for this function. The frequency can be specified as samples per second, as sample per minute (for instance \x2215/m\x22) or in samples per hour (eg. \x224/h\x22). To disable timed value notifications for this function, use the value \x22OFF\x22.</p>',par:{newval:'a string corresponding to the timed value notification frequency for this function'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Tilt']['set_resolution']={syn:'Changes the resolution of the measured physical values.',lib:'tilt.set_resolution()',pro:'def set_resolution(<span id=pn>newval</span>)',cmt:'<p>Changes the resolution of the measured physical values. The resolution corresponds to the numerical precision when displaying value. It does not change the precision of the measure itself.</p>',par:{newval:'a floating point number corresponding to the resolution of the measured physical values'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Tilt']['set_userData']={syn:'Stores a user context provided as argument in the userData attribute of the function.',lib:'tilt.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Stores a user context provided as argument in the userData attribute of the function. This attribute is never touched by the API, and is at disposal of the caller to store a context.</p>',par:{data:'any kind of object to be stored'}};
+doc['Tilt']['startDataLogger']={syn:'Starts the data logger on the device.',lib:'tilt.startDataLogger()',pro:'def startDataLogger()',cmt:'<p>Starts the data logger on the device. Note that the data logger will only save the measures on this sensor if the logFrequency is not set to \x22OFF\x22.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.'};
+doc['Tilt']['stopDataLogger']={syn:'Stops the datalogger on the device.',lib:'tilt.stopDataLogger()',pro:'def stopDataLogger()',cmt:'<p>Stops the datalogger on the device.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.'};
+doc['Tilt']['unmuteValueCallbacks']={syn:'Re-enable the propagation of every new advertised value to the parent hub.',lib:'tilt.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>Re-enable the propagation of every new advertised value to the parent hub. This function reverts the effect of a previous call to <tt>muteValueCallbacks()</tt>. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+//--- (end of generated code: Tilt)
+//--- (generated code: Qt)
+doc['Qt']={'':{syn:'Quaternion interface',inc:'from yocto_gyro import *',cmt:'<p>The Yoctopuce API YQt class provides direct access to the Yocto3D attitude estimation using a quaternion. It is usually not needed to use the YQt class directly, as the YGyro class provides a more convenient higher-level interface.</p>'}};
+doc['Qt']['FindQt']={syn:'Retrieves a quaternion component for a given identifier.',lib:'YQt.FindQt()',pro:'def FindQt(<span id=pn>func</span>)',cmt:'<p>Retrieves a quaternion component for a given identifier. The identifier can be specified using several formats:<br> <ul> <li>FunctionLogicalName</li> <li>ModuleSerialNumber.FunctionIdentifier</li> <li>ModuleSerialNumber.FunctionLogicalName</li> <li>ModuleLogicalName.FunctionIdentifier</li> <li>ModuleLogicalName.FunctionLogicalName</li> </ul></p><p> This function does not require that the quaternion component is online at the time it is invoked. The returned object is nevertheless valid. Use the method <tt>YQt.isOnline()</tt> to test if the quaternion component is indeed online at a given time. In case of ambiguity when looking for a quaternion component by logical name, no error is notified: the first instance found is returned. The search is performed first by hardware name, then by logical name.</p>',par:{func:'a string that uniquely characterizes the quaternion component'},ret:'a <tt>YQt</tt> object allowing you to drive the quaternion component.'};
+doc['Qt']['FirstQt']={syn:'Starts the enumeration of quaternion components currently accessible.',lib:'YQt.FirstQt()',pro:'def FirstQt()',cmt:'<p>Starts the enumeration of quaternion components currently accessible. Use the method <tt>YQt.nextQt()</tt> to iterate on next quaternion components.</p>',ret:'a pointer to a <tt>YQt</tt> object, corresponding to the first quaternion component currently online, or a <tt>null</tt> pointer if there are none.'};
+doc['Qt']['calibrateFromPoints']={syn:'Configures error correction data points, in particular to compensate for a possible perturbation of the measure caused by an enclosure.',lib:'qt.calibrateFromPoints()',pro:'def calibrateFromPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Configures error correction data points, in particular to compensate for a possible perturbation of the measure caused by an enclosure. It is possible to configure up to five correction points. Correction points must be provided in ascending order, and be in the range of the sensor. The device will automatically perform a linear interpolation of the error correction between specified points. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p><p> For more information on advanced capabilities to refine the calibration of sensors, please contact support@yoctopuce.com.</p>',par:{rawValues:'array of floating point numbers, corresponding to the raw values returned by the sensor for the correction points.',refValues:'array of floating point numbers, corresponding to the corrected values for the correction points.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Qt']['clearCache']={syn:'Invalidates the cache.',lib:'qt.clearCache()',pro:'def clearCache()',cmt:'<p>Invalidates the cache. Invalidates the cache of the quaternion component attributes. Forces the next call to get_xxx() or loadxxx() to use values that come from the device.</p>'};
+doc['Qt']['describe']={syn:'Returns a short text that describes unambiguously the instance of the quaternion component in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'qt.describe()',pro:'def describe()',cmt:'<p>Returns a short text that describes unambiguously the instance of the quaternion component in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. More precisely, <tt>TYPE</tt> is the type of the function, <tt>NAME</tt> it the name used for the first access to the function, <tt>SERIAL</tt> is the serial number of the module if the module is connected or <tt>\x22unresolved\x22</tt>, and <tt>FUNCTIONID</tt> is the hardware identifier of the function if the module is connected. For example, this method returns <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> if the module is already connected or <tt>Relay(BadCustomeName.relay1)=unresolved</tt> if the module has not yet been connected. This method does not trigger any USB or TCP transaction and can therefore be used in a debugger.</p>',ret:'a string that describes the quaternion component (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['Qt']['get_advertisedValue']={syn:'Returns the current value of the quaternion component (no more than 6 characters).',lib:'qt.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Returns the current value of the quaternion component (no more than 6 characters).</p>',ret:'a string corresponding to the current value of the quaternion component (no more than 6 characters).',ext:'On failure, throws an exception or returns <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['Qt']['get_currentRawValue']={syn:'Returns the uncalibrated, unrounded raw value returned by the sensor, in units, as a floating point number.',lib:'qt.get_currentRawValue()',pro:'def get_currentRawValue()',cmt:'<p>Returns the uncalibrated, unrounded raw value returned by the sensor, in units, as a floating point number.</p>',ret:'a floating point number corresponding to the uncalibrated, unrounded raw value returned by the sensor, in units, as a floating point number',ext:'On failure, throws an exception or returns <tt>Y_CURRENTRAWVALUE_INVALID</tt>.'};
+doc['Qt']['get_currentValue']={syn:'Returns the current value of the value, in units, as a floating point number.',lib:'qt.get_currentValue()',pro:'def get_currentValue()',cmt:'<p>Returns the current value of the value, in units, as a floating point number.</p>',ret:'a floating point number corresponding to the current value of the value, in units, as a floating point number',ext:'On failure, throws an exception or returns <tt>Y_CURRENTVALUE_INVALID</tt>.'};
+doc['Qt']['get_errorMessage']={syn:'Returns the error message of the latest error with the quaternion component.',lib:'qt.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Returns the error message of the latest error with the quaternion component. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a string corresponding to the latest error message that occured while using the quaternion component object'};
+doc['Qt']['get_errorType']={syn:'Returns the numerical error code of the latest error with the quaternion component.',lib:'qt.get_errorType()',pro:'def get_errorType()',cmt:'<p>Returns the numerical error code of the latest error with the quaternion component. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a number corresponding to the code of the latest error that occurred while using the quaternion component object'};
+doc['Qt']['get_friendlyName']={syn:'Returns a global identifier of the quaternion component in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>.',lib:'qt.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Returns a global identifier of the quaternion component in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>. The returned string uses the logical names of the module and of the quaternion component if they are defined, otherwise the serial number of the module and the hardware identifier of the quaternion component (for example: <tt>MyCustomName.relay1</tt>)</p>',ret:'a string that uniquely identifies the quaternion component using logical names (ex: <tt>MyCustomName.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['Qt']['get_functionDescriptor']={syn:'Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function.',lib:'qt.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function. This identifier can be used to test if two instances of <tt>YFunction</tt> reference the same physical function on the same physical device.</p>',ret:'an identifier of type <tt>YFUN_DESCR</tt>.',ext:'If the function has never been contacted, the returned value is <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>.'};
+doc['Qt']['get_functionId']={syn:'Returns the hardware identifier of the quaternion component, without reference to the module.',lib:'qt.get_functionId()',pro:'def get_functionId()',cmt:'<p>Returns the hardware identifier of the quaternion component, without reference to the module. For example <tt>relay1</tt></p>',ret:'a string that identifies the quaternion component (ex: <tt>relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['Qt']['get_hardwareId']={syn:'Returns the unique hardware identifier of the quaternion component in the form <tt>SERIAL.FUNCTIONID</tt>.',lib:'qt.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Returns the unique hardware identifier of the quaternion component in the form <tt>SERIAL.FUNCTIONID</tt>. The unique hardware identifier is composed of the device serial number and of the hardware identifier of the quaternion component (for example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'a string that uniquely identifies the quaternion component (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['Qt']['get_highestValue']={syn:'Returns the maximal value observed for the value since the device was started.',lib:'qt.get_highestValue()',pro:'def get_highestValue()',cmt:'<p>Returns the maximal value observed for the value since the device was started.</p>',ret:'a floating point number corresponding to the maximal value observed for the value since the device was started',ext:'On failure, throws an exception or returns <tt>Y_HIGHESTVALUE_INVALID</tt>.'};
+doc['Qt']['get_logFrequency']={syn:'Returns the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory.',lib:'qt.get_logFrequency()',pro:'def get_logFrequency()',cmt:'<p>Returns the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory.</p>',ret:'a string corresponding to the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory',ext:'On failure, throws an exception or returns <tt>Y_LOGFREQUENCY_INVALID</tt>.'};
+doc['Qt']['get_logicalName']={syn:'Returns the logical name of the quaternion component.',lib:'qt.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Returns the logical name of the quaternion component.</p>',ret:'a string corresponding to the logical name of the quaternion component.',ext:'On failure, throws an exception or returns <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['Qt']['get_lowestValue']={syn:'Returns the minimal value observed for the value since the device was started.',lib:'qt.get_lowestValue()',pro:'def get_lowestValue()',cmt:'<p>Returns the minimal value observed for the value since the device was started.</p>',ret:'a floating point number corresponding to the minimal value observed for the value since the device was started',ext:'On failure, throws an exception or returns <tt>Y_LOWESTVALUE_INVALID</tt>.'};
+doc['Qt']['get_module']={syn:'Gets the <tt>YModule</tt> object for the device on which the function is located.',lib:'qt.get_module()',pro:'def get_module()',cmt:'<p>Gets the <tt>YModule</tt> object for the device on which the function is located. If the function cannot be located on any module, the returned instance of <tt>YModule</tt> is not shown as on-line.</p>',ret:'an instance of <tt>YModule</tt>'};
+doc['Qt']['get_recordedData']={syn:'Retrieves a DataSet object holding historical data for this sensor, for a specified time interval.',lib:'qt.get_recordedData()',pro:'def get_recordedData(<span id=pn>startTime</span>, <span id=pn>endTime</span>)',cmt:'<p>Retrieves a DataSet object holding historical data for this sensor, for a specified time interval. The measures will be retrieved from the data logger, which must have been turned on at the desired time. See the documentation of the DataSet class for information on how to get an overview of the recorded data, and how to load progressively a large set of measures from the data logger.</p><p> This function only works if the device uses a recent firmware, as DataSet objects are not supported by firmwares older than version 13000.</p>',par:{startTime:'the start of the desired measure time interval, as a Unix timestamp, i.e. the number of seconds since January 1, 1970 UTC. The special value 0 can be used to include any meaasure, without initial limit.',endTime:'the end of the desired measure time interval, as a Unix timestamp, i.e. the number of seconds since January 1, 1970 UTC. The special value 0 can be used to include any meaasure, without ending limit.'},ret:'an instance of YDataSet, providing access to historical data. Past measures can be loaded progressively using methods from the YDataSet object.'};
+doc['Qt']['get_reportFrequency']={syn:'Returns the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function.',lib:'qt.get_reportFrequency()',pro:'def get_reportFrequency()',cmt:'<p>Returns the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function.</p>',ret:'a string corresponding to the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function',ext:'On failure, throws an exception or returns <tt>Y_REPORTFREQUENCY_INVALID</tt>.'};
+doc['Qt']['get_resolution']={syn:'Returns the resolution of the measured values.',lib:'qt.get_resolution()',pro:'def get_resolution()',cmt:'<p>Returns the resolution of the measured values. The resolution corresponds to the numerical precision of the measures, which is not always the same as the actual precision of the sensor.</p>',ret:'a floating point number corresponding to the resolution of the measured values',ext:'On failure, throws an exception or returns <tt>Y_RESOLUTION_INVALID</tt>.'};
+doc['Qt']['get_sensorState']={syn:'Returns the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now.',lib:'qt.get_sensorState()',pro:'def get_sensorState()',cmt:'<p>Returns the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now.</p>',ret:'an integer corresponding to the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now',ext:'On failure, throws an exception or returns <tt>Y_SENSORSTATE_INVALID</tt>.'};
+doc['Qt']['get_unit']={syn:'Returns the measuring unit for the value.',lib:'qt.get_unit()',pro:'def get_unit()',cmt:'<p>Returns the measuring unit for the value.</p>',ret:'a string corresponding to the measuring unit for the value',ext:'On failure, throws an exception or returns <tt>Y_UNIT_INVALID</tt>.'};
+doc['Qt']['get_userData']={syn:'Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>.',lib:'qt.get_userData()',pro:'def get_userData()',cmt:'<p>Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>. This attribute is never touched directly by the API, and is at disposal of the caller to store a context.</p>',ret:'the object stored previously by the caller.'};
+doc['Qt']['isOnline']={syn:'Checks if the quaternion component is currently reachable, without raising any error.',lib:'qt.isOnline()',pro:'def isOnline()',cmt:'<p>Checks if the quaternion component is currently reachable, without raising any error. If there is a cached value for the quaternion component in cache, that has not yet expired, the device is considered reachable. No exception is raised if there is an error while trying to contact the device hosting the quaternion component.</p>',ret:'<tt>true</tt> if the quaternion component can be reached, and <tt>false</tt> otherwise'};
+doc['Qt']['load']={syn:'Preloads the quaternion component cache with a specified validity duration.',lib:'qt.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Preloads the quaternion component cache with a specified validity duration. By default, whenever accessing a device, all function attributes are kept in cache for the standard duration (5 ms). This method can be used to temporarily mark the cache as valid for a longer period, in order to reduce network traffic for instance.</p>',par:{msValidity:'an integer corresponding to the validity attributed to the loaded function parameters, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Qt']['loadAttribute']={syn:'Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.',lib:'qt.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'On failure, throws an exception or returns an empty string.'};
+doc['Qt']['loadCalibrationPoints']={syn:'Retrieves error correction data points previously entered using the method <tt>calibrateFromPoints</tt>.',lib:'qt.loadCalibrationPoints()',pro:'def loadCalibrationPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Retrieves error correction data points previously entered using the method <tt>calibrateFromPoints</tt>.</p>',par:{rawValues:'array of floating point numbers, that will be filled by the function with the raw sensor values for the correction points.',refValues:'array of floating point numbers, that will be filled by the function with the desired values for the correction points.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Qt']['muteValueCallbacks']={syn:'Disable the propagation of every new advertised value to the parent hub.',lib:'qt.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>Disable the propagation of every new advertised value to the parent hub. You can use this function to save bandwidth and CPU on computers with limited resources, or to prevent unwanted invocations of the HTTP callback. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Qt']['nextQt']={syn:'Continues the enumeration of quaternion components started using <tt>yFirstQt()</tt>.',lib:'qt.nextQt()',pro:'def nextQt()',cmt:'<p>Continues the enumeration of quaternion components started using <tt>yFirstQt()</tt>.</p>',ret:'a pointer to a <tt>YQt</tt> object, corresponding to a quaternion component currently online, or a <tt>null</tt> pointer if there are no more quaternion components to enumerate.'};
+doc['Qt']['registerTimedReportCallback']={syn:'Registers the callback function that is invoked on every periodic timed notification.',lib:'qt.registerTimedReportCallback()',pro:'def registerTimedReportCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every periodic timed notification. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and an YMeasure object describing the new advertised value.'}};
+doc['Qt']['registerValueCallback']={syn:'Registers the callback function that is invoked on every change of advertised value.',lib:'qt.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every change of advertised value. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and the character string describing the new advertised value.'}};
+doc['Qt']['set_highestValue']={syn:'Changes the recorded maximal value observed.',lib:'qt.set_highestValue()',pro:'def set_highestValue(<span id=pn>newval</span>)',cmt:'<p>Changes the recorded maximal value observed.</p>',par:{newval:'a floating point number corresponding to the recorded maximal value observed'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Qt']['set_logFrequency']={syn:'Changes the datalogger recording frequency for this function.',lib:'qt.set_logFrequency()',pro:'def set_logFrequency(<span id=pn>newval</span>)',cmt:'<p>Changes the datalogger recording frequency for this function. The frequency can be specified as samples per second, as sample per minute (for instance \x2215/m\x22) or in samples per hour (eg. \x224/h\x22). To disable recording for this function, use the value \x22OFF\x22.</p>',par:{newval:'a string corresponding to the datalogger recording frequency for this function'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Qt']['set_logicalName']={syn:'Changes the logical name of the quaternion component.',lib:'qt.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Changes the logical name of the quaternion component. You can use <tt>yCheckLogicalName()</tt> prior to this call to make sure that your parameter is valid. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the logical name of the quaternion component.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Qt']['set_lowestValue']={syn:'Changes the recorded minimal value observed.',lib:'qt.set_lowestValue()',pro:'def set_lowestValue(<span id=pn>newval</span>)',cmt:'<p>Changes the recorded minimal value observed.</p>',par:{newval:'a floating point number corresponding to the recorded minimal value observed'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Qt']['set_reportFrequency']={syn:'Changes the timed value notification frequency for this function.',lib:'qt.set_reportFrequency()',pro:'def set_reportFrequency(<span id=pn>newval</span>)',cmt:'<p>Changes the timed value notification frequency for this function. The frequency can be specified as samples per second, as sample per minute (for instance \x2215/m\x22) or in samples per hour (eg. \x224/h\x22). To disable timed value notifications for this function, use the value \x22OFF\x22.</p>',par:{newval:'a string corresponding to the timed value notification frequency for this function'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Qt']['set_resolution']={syn:'Changes the resolution of the measured physical values.',lib:'qt.set_resolution()',pro:'def set_resolution(<span id=pn>newval</span>)',cmt:'<p>Changes the resolution of the measured physical values. The resolution corresponds to the numerical precision when displaying value. It does not change the precision of the measure itself.</p>',par:{newval:'a floating point number corresponding to the resolution of the measured physical values'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Qt']['set_userData']={syn:'Stores a user context provided as argument in the userData attribute of the function.',lib:'qt.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Stores a user context provided as argument in the userData attribute of the function. This attribute is never touched by the API, and is at disposal of the caller to store a context.</p>',par:{data:'any kind of object to be stored'}};
+doc['Qt']['startDataLogger']={syn:'Starts the data logger on the device.',lib:'qt.startDataLogger()',pro:'def startDataLogger()',cmt:'<p>Starts the data logger on the device. Note that the data logger will only save the measures on this sensor if the logFrequency is not set to \x22OFF\x22.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.'};
+doc['Qt']['stopDataLogger']={syn:'Stops the datalogger on the device.',lib:'qt.stopDataLogger()',pro:'def stopDataLogger()',cmt:'<p>Stops the datalogger on the device.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.'};
+doc['Qt']['unmuteValueCallbacks']={syn:'Re-enable the propagation of every new advertised value to the parent hub.',lib:'qt.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>Re-enable the propagation of every new advertised value to the parent hub. This function reverts the effect of a previous call to <tt>muteValueCallbacks()</tt>. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+//--- (end of generated code: Qt)
+//--- (generated code: PwmOutput)
+doc['PwmOutput']={'':{syn:'PwmOutput function interface',inc:'from yocto_pwmoutput import *',cmt:'<p>The Yoctopuce application programming interface allows you to configure, start, and stop the PWM.</p>'}};
+doc['PwmOutput']['FindPwmOutput']={syn:'Retrieves a PWM for a given identifier.',lib:'YPwmOutput.FindPwmOutput()',pro:'def FindPwmOutput(<span id=pn>func</span>)',cmt:'<p>Retrieves a PWM for a given identifier. The identifier can be specified using several formats:<br> <ul> <li>FunctionLogicalName</li> <li>ModuleSerialNumber.FunctionIdentifier</li> <li>ModuleSerialNumber.FunctionLogicalName</li> <li>ModuleLogicalName.FunctionIdentifier</li> <li>ModuleLogicalName.FunctionLogicalName</li> </ul></p><p> This function does not require that the PWM is online at the time it is invoked. The returned object is nevertheless valid. Use the method <tt>YPwmOutput.isOnline()</tt> to test if the PWM is indeed online at a given time. In case of ambiguity when looking for a PWM by logical name, no error is notified: the first instance found is returned. The search is performed first by hardware name, then by logical name.</p>',par:{func:'a string that uniquely characterizes the PWM'},ret:'a <tt>YPwmOutput</tt> object allowing you to drive the PWM.'};
+doc['PwmOutput']['FirstPwmOutput']={syn:'Starts the enumeration of PWMs currently accessible.',lib:'YPwmOutput.FirstPwmOutput()',pro:'def FirstPwmOutput()',cmt:'<p>Starts the enumeration of PWMs currently accessible. Use the method <tt>YPwmOutput.nextPwmOutput()</tt> to iterate on next PWMs.</p>',ret:'a pointer to a <tt>YPwmOutput</tt> object, corresponding to the first PWM currently online, or a <tt>null</tt> pointer if there are none.'};
+doc['PwmOutput']['clearCache']={syn:'Invalidates the cache.',lib:'pwmoutput.clearCache()',pro:'def clearCache()',cmt:'<p>Invalidates the cache. Invalidates the cache of the PWM attributes. Forces the next call to get_xxx() or loadxxx() to use values that come from the device.</p>'};
+doc['PwmOutput']['describe']={syn:'Returns a short text that describes unambiguously the instance of the PWM in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'pwmoutput.describe()',pro:'def describe()',cmt:'<p>Returns a short text that describes unambiguously the instance of the PWM in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. More precisely, <tt>TYPE</tt> is the type of the function, <tt>NAME</tt> it the name used for the first access to the function, <tt>SERIAL</tt> is the serial number of the module if the module is connected or <tt>\x22unresolved\x22</tt>, and <tt>FUNCTIONID</tt> is the hardware identifier of the function if the module is connected. For example, this method returns <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> if the module is already connected or <tt>Relay(BadCustomeName.relay1)=unresolved</tt> if the module has not yet been connected. This method does not trigger any USB or TCP transaction and can therefore be used in a debugger.</p>',ret:'a string that describes the PWM (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['PwmOutput']['dutyCycleMove']={syn:'Performs a smooth change of the pulse duration toward a given value.',lib:'pwmoutput.dutyCycleMove()',pro:'def dutyCycleMove(<span id=pn>target</span>, <span id=pn>ms_duration</span>)',cmt:'<p>Performs a smooth change of the pulse duration toward a given value.</p>',par:{target:'new duty cycle at the end of the transition (floating-point number, between 0 and 1)',ms_duration:'total duration of the transition, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['PwmOutput']['get_advertisedValue']={syn:'Returns the current value of the PWM (no more than 6 characters).',lib:'pwmoutput.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Returns the current value of the PWM (no more than 6 characters).</p>',ret:'a string corresponding to the current value of the PWM (no more than 6 characters).',ext:'On failure, throws an exception or returns <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['PwmOutput']['get_dutyCycle']={syn:'Returns the PWM duty cycle, in per cents.',lib:'pwmoutput.get_dutyCycle()',pro:'def get_dutyCycle()',cmt:'<p>Returns the PWM duty cycle, in per cents.</p>',ret:'a floating point number corresponding to the PWM duty cycle, in per cents',ext:'On failure, throws an exception or returns <tt>Y_DUTYCYCLE_INVALID</tt>.'};
+doc['PwmOutput']['get_dutyCycleAtPowerOn']={syn:'Returns the PWMs duty cycle at device power on as a floating point number between 0 and 100.',lib:'pwmoutput.get_dutyCycleAtPowerOn()',pro:'def get_dutyCycleAtPowerOn()',cmt:'<p>Returns the PWMs duty cycle at device power on as a floating point number between 0 and 100.</p>',ret:'a floating point number corresponding to the PWMs duty cycle at device power on as a floating point number between 0 and 100',ext:'On failure, throws an exception or returns <tt>Y_DUTYCYCLEATPOWERON_INVALID</tt>.'};
+doc['PwmOutput']['get_enabled']={syn:'Returns the state of the PWMs.',lib:'pwmoutput.get_enabled()',pro:'def get_enabled()',cmt:'<p>Returns the state of the PWMs.</p>',ret:'either <tt>Y_ENABLED_FALSE</tt> or <tt>Y_ENABLED_TRUE</tt>, according to the state of the PWMs',ext:'On failure, throws an exception or returns <tt>Y_ENABLED_INVALID</tt>.'};
+doc['PwmOutput']['get_enabledAtPowerOn']={syn:'Returns the state of the PWM at device power on.',lib:'pwmoutput.get_enabledAtPowerOn()',pro:'def get_enabledAtPowerOn()',cmt:'<p>Returns the state of the PWM at device power on.</p>',ret:'either <tt>Y_ENABLEDATPOWERON_FALSE</tt> or <tt>Y_ENABLEDATPOWERON_TRUE</tt>, according to the state of the PWM at device power on',ext:'On failure, throws an exception or returns <tt>Y_ENABLEDATPOWERON_INVALID</tt>.'};
+doc['PwmOutput']['get_errorMessage']={syn:'Returns the error message of the latest error with the PWM.',lib:'pwmoutput.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Returns the error message of the latest error with the PWM. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a string corresponding to the latest error message that occured while using the PWM object'};
+doc['PwmOutput']['get_errorType']={syn:'Returns the numerical error code of the latest error with the PWM.',lib:'pwmoutput.get_errorType()',pro:'def get_errorType()',cmt:'<p>Returns the numerical error code of the latest error with the PWM. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a number corresponding to the code of the latest error that occurred while using the PWM object'};
+doc['PwmOutput']['get_frequency']={syn:'Returns the PWM frequency in Hz.',lib:'pwmoutput.get_frequency()',pro:'def get_frequency()',cmt:'<p>Returns the PWM frequency in Hz.</p>',ret:'a floating point number corresponding to the PWM frequency in Hz',ext:'On failure, throws an exception or returns <tt>Y_FREQUENCY_INVALID</tt>.'};
+doc['PwmOutput']['get_friendlyName']={syn:'Returns a global identifier of the PWM in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>.',lib:'pwmoutput.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Returns a global identifier of the PWM in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>. The returned string uses the logical names of the module and of the PWM if they are defined, otherwise the serial number of the module and the hardware identifier of the PWM (for example: <tt>MyCustomName.relay1</tt>)</p>',ret:'a string that uniquely identifies the PWM using logical names (ex: <tt>MyCustomName.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['PwmOutput']['get_functionDescriptor']={syn:'Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function.',lib:'pwmoutput.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function. This identifier can be used to test if two instances of <tt>YFunction</tt> reference the same physical function on the same physical device.</p>',ret:'an identifier of type <tt>YFUN_DESCR</tt>.',ext:'If the function has never been contacted, the returned value is <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>.'};
+doc['PwmOutput']['get_functionId']={syn:'Returns the hardware identifier of the PWM, without reference to the module.',lib:'pwmoutput.get_functionId()',pro:'def get_functionId()',cmt:'<p>Returns the hardware identifier of the PWM, without reference to the module. For example <tt>relay1</tt></p>',ret:'a string that identifies the PWM (ex: <tt>relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['PwmOutput']['get_hardwareId']={syn:'Returns the unique hardware identifier of the PWM in the form <tt>SERIAL.FUNCTIONID</tt>.',lib:'pwmoutput.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Returns the unique hardware identifier of the PWM in the form <tt>SERIAL.FUNCTIONID</tt>. The unique hardware identifier is composed of the device serial number and of the hardware identifier of the PWM (for example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'a string that uniquely identifies the PWM (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['PwmOutput']['get_logicalName']={syn:'Returns the logical name of the PWM.',lib:'pwmoutput.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Returns the logical name of the PWM.</p>',ret:'a string corresponding to the logical name of the PWM.',ext:'On failure, throws an exception or returns <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['PwmOutput']['get_module']={syn:'Gets the <tt>YModule</tt> object for the device on which the function is located.',lib:'pwmoutput.get_module()',pro:'def get_module()',cmt:'<p>Gets the <tt>YModule</tt> object for the device on which the function is located. If the function cannot be located on any module, the returned instance of <tt>YModule</tt> is not shown as on-line.</p>',ret:'an instance of <tt>YModule</tt>'};
+doc['PwmOutput']['get_period']={syn:'Returns the PWM period in milliseconds.',lib:'pwmoutput.get_period()',pro:'def get_period()',cmt:'<p>Returns the PWM period in milliseconds.</p>',ret:'a floating point number corresponding to the PWM period in milliseconds',ext:'On failure, throws an exception or returns <tt>Y_PERIOD_INVALID</tt>.'};
+doc['PwmOutput']['get_pulseDuration']={syn:'Returns the PWM pulse length in milliseconds, as a floating point number.',lib:'pwmoutput.get_pulseDuration()',pro:'def get_pulseDuration()',cmt:'<p>Returns the PWM pulse length in milliseconds, as a floating point number.</p>',ret:'a floating point number corresponding to the PWM pulse length in milliseconds, as a floating point number',ext:'On failure, throws an exception or returns <tt>Y_PULSEDURATION_INVALID</tt>.'};
+doc['PwmOutput']['get_userData']={syn:'Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>.',lib:'pwmoutput.get_userData()',pro:'def get_userData()',cmt:'<p>Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>. This attribute is never touched directly by the API, and is at disposal of the caller to store a context.</p>',ret:'the object stored previously by the caller.'};
+doc['PwmOutput']['isOnline']={syn:'Checks if the PWM is currently reachable, without raising any error.',lib:'pwmoutput.isOnline()',pro:'def isOnline()',cmt:'<p>Checks if the PWM is currently reachable, without raising any error. If there is a cached value for the PWM in cache, that has not yet expired, the device is considered reachable. No exception is raised if there is an error while trying to contact the device hosting the PWM.</p>',ret:'<tt>true</tt> if the PWM can be reached, and <tt>false</tt> otherwise'};
+doc['PwmOutput']['load']={syn:'Preloads the PWM cache with a specified validity duration.',lib:'pwmoutput.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Preloads the PWM cache with a specified validity duration. By default, whenever accessing a device, all function attributes are kept in cache for the standard duration (5 ms). This method can be used to temporarily mark the cache as valid for a longer period, in order to reduce network traffic for instance.</p>',par:{msValidity:'an integer corresponding to the validity attributed to the loaded function parameters, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['PwmOutput']['loadAttribute']={syn:'Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.',lib:'pwmoutput.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'On failure, throws an exception or returns an empty string.'};
+doc['PwmOutput']['muteValueCallbacks']={syn:'Disable the propagation of every new advertised value to the parent hub.',lib:'pwmoutput.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>Disable the propagation of every new advertised value to the parent hub. You can use this function to save bandwidth and CPU on computers with limited resources, or to prevent unwanted invocations of the HTTP callback. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['PwmOutput']['nextPwmOutput']={syn:'Continues the enumeration of PWMs started using <tt>yFirstPwmOutput()</tt>.',lib:'pwmoutput.nextPwmOutput()',pro:'def nextPwmOutput()',cmt:'<p>Continues the enumeration of PWMs started using <tt>yFirstPwmOutput()</tt>.</p>',ret:'a pointer to a <tt>YPwmOutput</tt> object, corresponding to a PWM currently online, or a <tt>null</tt> pointer if there are no more PWMs to enumerate.'};
+doc['PwmOutput']['pulseDurationMove']={syn:'Performs a smooth transistion of the pulse duration toward a given value.',lib:'pwmoutput.pulseDurationMove()',pro:'def pulseDurationMove(<span id=pn>ms_target</span>, <span id=pn>ms_duration</span>)',cmt:'<p>Performs a smooth transistion of the pulse duration toward a given value. Any period, frequency, duty cycle or pulse width change will cancel any ongoing transition process.</p>',par:{ms_target:'new pulse duration at the end of the transition (floating-point number, representing the pulse duration in milliseconds)',ms_duration:'total duration of the transition, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['PwmOutput']['registerValueCallback']={syn:'Registers the callback function that is invoked on every change of advertised value.',lib:'pwmoutput.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every change of advertised value. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and the character string describing the new advertised value.'}};
+doc['PwmOutput']['set_dutyCycle']={syn:'Changes the PWM duty cycle, in per cents.',lib:'pwmoutput.set_dutyCycle()',pro:'def set_dutyCycle(<span id=pn>newval</span>)',cmt:'<p>Changes the PWM duty cycle, in per cents.</p>',par:{newval:'a floating point number corresponding to the PWM duty cycle, in per cents'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['PwmOutput']['set_dutyCycleAtPowerOn']={syn:'Changes the PWM duty cycle at device power on.',lib:'pwmoutput.set_dutyCycleAtPowerOn()',pro:'def set_dutyCycleAtPowerOn(<span id=pn>newval</span>)',cmt:'<p>Changes the PWM duty cycle at device power on. Remember to call the matching module <tt>saveToFlash()</tt> method, otherwise this call will have no effect.</p>',par:{newval:'a floating point number corresponding to the PWM duty cycle at device power on'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['PwmOutput']['set_enabled']={syn:'Stops or starts the PWM.',lib:'pwmoutput.set_enabled()',pro:'def set_enabled(<span id=pn>newval</span>)',cmt:'<p>Stops or starts the PWM.</p>',par:{newval:'either <tt>Y_ENABLED_FALSE</tt> or <tt>Y_ENABLED_TRUE</tt>'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['PwmOutput']['set_enabledAtPowerOn']={syn:'Changes the state of the PWM at device power on.',lib:'pwmoutput.set_enabledAtPowerOn()',pro:'def set_enabledAtPowerOn(<span id=pn>newval</span>)',cmt:'<p>Changes the state of the PWM at device power on. Remember to call the matching module <tt>saveToFlash()</tt> method, otherwise this call will have no effect.</p>',par:{newval:'either <tt>Y_ENABLEDATPOWERON_FALSE</tt> or <tt>Y_ENABLEDATPOWERON_TRUE</tt>, according to the state of the PWM at device power on'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['PwmOutput']['set_frequency']={syn:'Changes the PWM frequency.',lib:'pwmoutput.set_frequency()',pro:'def set_frequency(<span id=pn>newval</span>)',cmt:'<p>Changes the PWM frequency. The duty cycle is kept unchanged thanks to an automatic pulse width change.</p>',par:{newval:'a floating point number corresponding to the PWM frequency'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['PwmOutput']['set_logicalName']={syn:'Changes the logical name of the PWM.',lib:'pwmoutput.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Changes the logical name of the PWM. You can use <tt>yCheckLogicalName()</tt> prior to this call to make sure that your parameter is valid. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the logical name of the PWM.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['PwmOutput']['set_period']={syn:'Changes the PWM period in milliseconds.',lib:'pwmoutput.set_period()',pro:'def set_period(<span id=pn>newval</span>)',cmt:'<p>Changes the PWM period in milliseconds.</p>',par:{newval:'a floating point number corresponding to the PWM period in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['PwmOutput']['set_pulseDuration']={syn:'Changes the PWM pulse length, in milliseconds.',lib:'pwmoutput.set_pulseDuration()',pro:'def set_pulseDuration(<span id=pn>newval</span>)',cmt:'<p>Changes the PWM pulse length, in milliseconds. A pulse length cannot be longer than period, otherwise it is truncated.</p>',par:{newval:'a floating point number corresponding to the PWM pulse length, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['PwmOutput']['set_userData']={syn:'Stores a user context provided as argument in the userData attribute of the function.',lib:'pwmoutput.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Stores a user context provided as argument in the userData attribute of the function. This attribute is never touched by the API, and is at disposal of the caller to store a context.</p>',par:{data:'any kind of object to be stored'}};
+doc['PwmOutput']['unmuteValueCallbacks']={syn:'Re-enable the propagation of every new advertised value to the parent hub.',lib:'pwmoutput.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>Re-enable the propagation of every new advertised value to the parent hub. This function reverts the effect of a previous call to <tt>muteValueCallbacks()</tt>. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+//--- (end of generated code: PwmOutput)
+//--- (generated code: PwmPowerSource)
+doc['PwmPowerSource']={'':{syn:'PwmPowerSource function interface',inc:'from yocto_pwmpowersource import *',cmt:'<p>The Yoctopuce application programming interface allows you to configure the voltage source used by all PWM on the same device.</p>'}};
+doc['PwmPowerSource']['FindPwmPowerSource']={syn:'Retrieves a voltage source for a given identifier.',lib:'YPwmPowerSource.FindPwmPowerSource()',pro:'def FindPwmPowerSource(<span id=pn>func</span>)',cmt:'<p>Retrieves a voltage source for a given identifier. The identifier can be specified using several formats:<br> <ul> <li>FunctionLogicalName</li> <li>ModuleSerialNumber.FunctionIdentifier</li> <li>ModuleSerialNumber.FunctionLogicalName</li> <li>ModuleLogicalName.FunctionIdentifier</li> <li>ModuleLogicalName.FunctionLogicalName</li> </ul></p><p> This function does not require that the voltage source is online at the time it is invoked. The returned object is nevertheless valid. Use the method <tt>YPwmPowerSource.isOnline()</tt> to test if the voltage source is indeed online at a given time. In case of ambiguity when looking for a voltage source by logical name, no error is notified: the first instance found is returned. The search is performed first by hardware name, then by logical name.</p>',par:{func:'a string that uniquely characterizes the voltage source'},ret:'a <tt>YPwmPowerSource</tt> object allowing you to drive the voltage source.'};
+doc['PwmPowerSource']['FirstPwmPowerSource']={syn:'Starts the enumeration of Voltage sources currently accessible.',lib:'YPwmPowerSource.FirstPwmPowerSource()',pro:'def FirstPwmPowerSource()',cmt:'<p>Starts the enumeration of Voltage sources currently accessible. Use the method <tt>YPwmPowerSource.nextPwmPowerSource()</tt> to iterate on next Voltage sources.</p>',ret:'a pointer to a <tt>YPwmPowerSource</tt> object, corresponding to the first source currently online, or a <tt>null</tt> pointer if there are none.'};
+doc['PwmPowerSource']['clearCache']={syn:'Invalidates the cache.',lib:'pwmpowersource.clearCache()',pro:'def clearCache()',cmt:'<p>Invalidates the cache. Invalidates the cache of the voltage source attributes. Forces the next call to get_xxx() or loadxxx() to use values that come from the device.</p>'};
+doc['PwmPowerSource']['describe']={syn:'Returns a short text that describes unambiguously the instance of the voltage source in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'pwmpowersource.describe()',pro:'def describe()',cmt:'<p>Returns a short text that describes unambiguously the instance of the voltage source in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. More precisely, <tt>TYPE</tt> is the type of the function, <tt>NAME</tt> it the name used for the first access to the function, <tt>SERIAL</tt> is the serial number of the module if the module is connected or <tt>\x22unresolved\x22</tt>, and <tt>FUNCTIONID</tt> is the hardware identifier of the function if the module is connected. For example, this method returns <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> if the module is already connected or <tt>Relay(BadCustomeName.relay1)=unresolved</tt> if the module has not yet been connected. This method does not trigger any USB or TCP transaction and can therefore be used in a debugger.</p>',ret:'a string that describes the voltage source (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['PwmPowerSource']['get_advertisedValue']={syn:'Returns the current value of the voltage source (no more than 6 characters).',lib:'pwmpowersource.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Returns the current value of the voltage source (no more than 6 characters).</p>',ret:'a string corresponding to the current value of the voltage source (no more than 6 characters).',ext:'On failure, throws an exception or returns <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['PwmPowerSource']['get_errorMessage']={syn:'Returns the error message of the latest error with the voltage source.',lib:'pwmpowersource.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Returns the error message of the latest error with the voltage source. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a string corresponding to the latest error message that occured while using the voltage source object'};
+doc['PwmPowerSource']['get_errorType']={syn:'Returns the numerical error code of the latest error with the voltage source.',lib:'pwmpowersource.get_errorType()',pro:'def get_errorType()',cmt:'<p>Returns the numerical error code of the latest error with the voltage source. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a number corresponding to the code of the latest error that occurred while using the voltage source object'};
+doc['PwmPowerSource']['get_friendlyName']={syn:'Returns a global identifier of the voltage source in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>.',lib:'pwmpowersource.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Returns a global identifier of the voltage source in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>. The returned string uses the logical names of the module and of the voltage source if they are defined, otherwise the serial number of the module and the hardware identifier of the voltage source (for example: <tt>MyCustomName.relay1</tt>)</p>',ret:'a string that uniquely identifies the voltage source using logical names (ex: <tt>MyCustomName.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['PwmPowerSource']['get_functionDescriptor']={syn:'Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function.',lib:'pwmpowersource.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function. This identifier can be used to test if two instances of <tt>YFunction</tt> reference the same physical function on the same physical device.</p>',ret:'an identifier of type <tt>YFUN_DESCR</tt>.',ext:'If the function has never been contacted, the returned value is <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>.'};
+doc['PwmPowerSource']['get_functionId']={syn:'Returns the hardware identifier of the voltage source, without reference to the module.',lib:'pwmpowersource.get_functionId()',pro:'def get_functionId()',cmt:'<p>Returns the hardware identifier of the voltage source, without reference to the module. For example <tt>relay1</tt></p>',ret:'a string that identifies the voltage source (ex: <tt>relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['PwmPowerSource']['get_hardwareId']={syn:'Returns the unique hardware identifier of the voltage source in the form <tt>SERIAL.FUNCTIONID</tt>.',lib:'pwmpowersource.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Returns the unique hardware identifier of the voltage source in the form <tt>SERIAL.FUNCTIONID</tt>. The unique hardware identifier is composed of the device serial number and of the hardware identifier of the voltage source (for example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'a string that uniquely identifies the voltage source (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['PwmPowerSource']['get_logicalName']={syn:'Returns the logical name of the voltage source.',lib:'pwmpowersource.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Returns the logical name of the voltage source.</p>',ret:'a string corresponding to the logical name of the voltage source.',ext:'On failure, throws an exception or returns <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['PwmPowerSource']['get_module']={syn:'Gets the <tt>YModule</tt> object for the device on which the function is located.',lib:'pwmpowersource.get_module()',pro:'def get_module()',cmt:'<p>Gets the <tt>YModule</tt> object for the device on which the function is located. If the function cannot be located on any module, the returned instance of <tt>YModule</tt> is not shown as on-line.</p>',ret:'an instance of <tt>YModule</tt>'};
+doc['PwmPowerSource']['get_powerMode']={syn:'Returns the selected power source for the PWM on the same device.',lib:'pwmpowersource.get_powerMode()',pro:'def get_powerMode()',cmt:'<p>Returns the selected power source for the PWM on the same device.</p>',ret:'a value among <tt>Y_POWERMODE_USB_5V</tt>, <tt>Y_POWERMODE_USB_3V</tt>, <tt>Y_POWERMODE_EXT_V</tt> and <tt>Y_POWERMODE_OPNDRN</tt> corresponding to the selected power source for the PWM on the same device',ext:'On failure, throws an exception or returns <tt>Y_POWERMODE_INVALID</tt>.'};
+doc['PwmPowerSource']['get_userData']={syn:'Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>.',lib:'pwmpowersource.get_userData()',pro:'def get_userData()',cmt:'<p>Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>. This attribute is never touched directly by the API, and is at disposal of the caller to store a context.</p>',ret:'the object stored previously by the caller.'};
+doc['PwmPowerSource']['isOnline']={syn:'Checks if the voltage source is currently reachable, without raising any error.',lib:'pwmpowersource.isOnline()',pro:'def isOnline()',cmt:'<p>Checks if the voltage source is currently reachable, without raising any error. If there is a cached value for the voltage source in cache, that has not yet expired, the device is considered reachable. No exception is raised if there is an error while trying to contact the device hosting the voltage source.</p>',ret:'<tt>true</tt> if the voltage source can be reached, and <tt>false</tt> otherwise'};
+doc['PwmPowerSource']['load']={syn:'Preloads the voltage source cache with a specified validity duration.',lib:'pwmpowersource.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Preloads the voltage source cache with a specified validity duration. By default, whenever accessing a device, all function attributes are kept in cache for the standard duration (5 ms). This method can be used to temporarily mark the cache as valid for a longer period, in order to reduce network traffic for instance.</p>',par:{msValidity:'an integer corresponding to the validity attributed to the loaded function parameters, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['PwmPowerSource']['loadAttribute']={syn:'Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.',lib:'pwmpowersource.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'On failure, throws an exception or returns an empty string.'};
+doc['PwmPowerSource']['muteValueCallbacks']={syn:'Disable the propagation of every new advertised value to the parent hub.',lib:'pwmpowersource.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>Disable the propagation of every new advertised value to the parent hub. You can use this function to save bandwidth and CPU on computers with limited resources, or to prevent unwanted invocations of the HTTP callback. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['PwmPowerSource']['nextPwmPowerSource']={syn:'Continues the enumeration of Voltage sources started using <tt>yFirstPwmPowerSource()</tt>.',lib:'pwmpowersource.nextPwmPowerSource()',pro:'def nextPwmPowerSource()',cmt:'<p>Continues the enumeration of Voltage sources started using <tt>yFirstPwmPowerSource()</tt>.</p>',ret:'a pointer to a <tt>YPwmPowerSource</tt> object, corresponding to a voltage source currently online, or a <tt>null</tt> pointer if there are no more Voltage sources to enumerate.'};
+doc['PwmPowerSource']['registerValueCallback']={syn:'Registers the callback function that is invoked on every change of advertised value.',lib:'pwmpowersource.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every change of advertised value. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and the character string describing the new advertised value.'}};
+doc['PwmPowerSource']['set_logicalName']={syn:'Changes the logical name of the voltage source.',lib:'pwmpowersource.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Changes the logical name of the voltage source. You can use <tt>yCheckLogicalName()</tt> prior to this call to make sure that your parameter is valid. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the logical name of the voltage source.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['PwmPowerSource']['set_powerMode']={syn:'Changes the PWM power source.',lib:'pwmpowersource.set_powerMode()',pro:'def set_powerMode(<span id=pn>newval</span>)',cmt:'<p>Changes the PWM power source. PWM can use isolated 5V from USB, isolated 3V from USB or voltage from an external power source. The PWM can also work in open drain mode. In that mode, the PWM actively pulls the line down. Warning: this setting is common to all PWM on the same device. If you change that parameter, all PWM located on the same device are affected. If you want the change to be kept after a device reboot, make sure to call the matching module <tt>saveToFlash()</tt>.</p>',par:{newval:'a value among <tt>Y_POWERMODE_USB_5V</tt>, <tt>Y_POWERMODE_USB_3V</tt>, <tt>Y_POWERMODE_EXT_V</tt> and <tt>Y_POWERMODE_OPNDRN</tt> corresponding to the PWM power source'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['PwmPowerSource']['set_userData']={syn:'Stores a user context provided as argument in the userData attribute of the function.',lib:'pwmpowersource.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Stores a user context provided as argument in the userData attribute of the function. This attribute is never touched by the API, and is at disposal of the caller to store a context.</p>',par:{data:'any kind of object to be stored'}};
+doc['PwmPowerSource']['unmuteValueCallbacks']={syn:'Re-enable the propagation of every new advertised value to the parent hub.',lib:'pwmpowersource.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>Re-enable the propagation of every new advertised value to the parent hub. This function reverts the effect of a previous call to <tt>muteValueCallbacks()</tt>. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+//--- (end of generated code: PwmPowerSource)
+//--- (generated code: Altitude)
+doc['Altitude']={'':{syn:'Altitude function interface',inc:'from yocto_altitude import *',cmt:'<p>The Yoctopuce class YAltitude allows you to read and configure Yoctopuce altitude sensors. It inherits from the YSensor class the core functions to read measurements, register callback functions, access to the autonomous datalogger. This class adds the ability to configure the barometric pressure adjusted to sea level (QNH) for barometric sensors.</p>'}};
+doc['Altitude']['FindAltitude']={syn:'Retrieves an altimeter for a given identifier.',lib:'YAltitude.FindAltitude()',pro:'def FindAltitude(<span id=pn>func</span>)',cmt:'<p>Retrieves an altimeter for a given identifier. The identifier can be specified using several formats:<br> <ul> <li>FunctionLogicalName</li> <li>ModuleSerialNumber.FunctionIdentifier</li> <li>ModuleSerialNumber.FunctionLogicalName</li> <li>ModuleLogicalName.FunctionIdentifier</li> <li>ModuleLogicalName.FunctionLogicalName</li> </ul></p><p> This function does not require that the altimeter is online at the time it is invoked. The returned object is nevertheless valid. Use the method <tt>YAltitude.isOnline()</tt> to test if the altimeter is indeed online at a given time. In case of ambiguity when looking for an altimeter by logical name, no error is notified: the first instance found is returned. The search is performed first by hardware name, then by logical name.</p>',par:{func:'a string that uniquely characterizes the altimeter'},ret:'a <tt>YAltitude</tt> object allowing you to drive the altimeter.'};
+doc['Altitude']['FirstAltitude']={syn:'Starts the enumeration of altimeters currently accessible.',lib:'YAltitude.FirstAltitude()',pro:'def FirstAltitude()',cmt:'<p>Starts the enumeration of altimeters currently accessible. Use the method <tt>YAltitude.nextAltitude()</tt> to iterate on next altimeters.</p>',ret:'a pointer to a <tt>YAltitude</tt> object, corresponding to the first altimeter currently online, or a <tt>null</tt> pointer if there are none.'};
+doc['Altitude']['calibrateFromPoints']={syn:'Configures error correction data points, in particular to compensate for a possible perturbation of the measure caused by an enclosure.',lib:'altitude.calibrateFromPoints()',pro:'def calibrateFromPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Configures error correction data points, in particular to compensate for a possible perturbation of the measure caused by an enclosure. It is possible to configure up to five correction points. Correction points must be provided in ascending order, and be in the range of the sensor. The device will automatically perform a linear interpolation of the error correction between specified points. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p><p> For more information on advanced capabilities to refine the calibration of sensors, please contact support@yoctopuce.com.</p>',par:{rawValues:'array of floating point numbers, corresponding to the raw values returned by the sensor for the correction points.',refValues:'array of floating point numbers, corresponding to the corrected values for the correction points.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Altitude']['clearCache']={syn:'Invalidates the cache.',lib:'altitude.clearCache()',pro:'def clearCache()',cmt:'<p>Invalidates the cache. Invalidates the cache of the altimeter attributes. Forces the next call to get_xxx() or loadxxx() to use values that come from the device.</p>'};
+doc['Altitude']['describe']={syn:'Returns a short text that describes unambiguously the instance of the altimeter in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'altitude.describe()',pro:'def describe()',cmt:'<p>Returns a short text that describes unambiguously the instance of the altimeter in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. More precisely, <tt>TYPE</tt> is the type of the function, <tt>NAME</tt> it the name used for the first access to the function, <tt>SERIAL</tt> is the serial number of the module if the module is connected or <tt>\x22unresolved\x22</tt>, and <tt>FUNCTIONID</tt> is the hardware identifier of the function if the module is connected. For example, this method returns <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> if the module is already connected or <tt>Relay(BadCustomeName.relay1)=unresolved</tt> if the module has not yet been connected. This method does not trigger any USB or TCP transaction and can therefore be used in a debugger.</p>',ret:'a string that describes the altimeter (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['Altitude']['get_advertisedValue']={syn:'Returns the current value of the altimeter (no more than 6 characters).',lib:'altitude.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Returns the current value of the altimeter (no more than 6 characters).</p>',ret:'a string corresponding to the current value of the altimeter (no more than 6 characters).',ext:'On failure, throws an exception or returns <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['Altitude']['get_currentRawValue']={syn:'Returns the uncalibrated, unrounded raw value returned by the sensor, in meters, as a floating point number.',lib:'altitude.get_currentRawValue()',pro:'def get_currentRawValue()',cmt:'<p>Returns the uncalibrated, unrounded raw value returned by the sensor, in meters, as a floating point number.</p>',ret:'a floating point number corresponding to the uncalibrated, unrounded raw value returned by the sensor, in meters, as a floating point number',ext:'On failure, throws an exception or returns <tt>Y_CURRENTRAWVALUE_INVALID</tt>.'};
+doc['Altitude']['get_currentValue']={syn:'Returns the current value of the altitude, in meters, as a floating point number.',lib:'altitude.get_currentValue()',pro:'def get_currentValue()',cmt:'<p>Returns the current value of the altitude, in meters, as a floating point number.</p>',ret:'a floating point number corresponding to the current value of the altitude, in meters, as a floating point number',ext:'On failure, throws an exception or returns <tt>Y_CURRENTVALUE_INVALID</tt>.'};
+doc['Altitude']['get_errorMessage']={syn:'Returns the error message of the latest error with the altimeter.',lib:'altitude.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Returns the error message of the latest error with the altimeter. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a string corresponding to the latest error message that occured while using the altimeter object'};
+doc['Altitude']['get_errorType']={syn:'Returns the numerical error code of the latest error with the altimeter.',lib:'altitude.get_errorType()',pro:'def get_errorType()',cmt:'<p>Returns the numerical error code of the latest error with the altimeter. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a number corresponding to the code of the latest error that occurred while using the altimeter object'};
+doc['Altitude']['get_friendlyName']={syn:'Returns a global identifier of the altimeter in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>.',lib:'altitude.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Returns a global identifier of the altimeter in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>. The returned string uses the logical names of the module and of the altimeter if they are defined, otherwise the serial number of the module and the hardware identifier of the altimeter (for example: <tt>MyCustomName.relay1</tt>)</p>',ret:'a string that uniquely identifies the altimeter using logical names (ex: <tt>MyCustomName.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['Altitude']['get_functionDescriptor']={syn:'Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function.',lib:'altitude.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function. This identifier can be used to test if two instances of <tt>YFunction</tt> reference the same physical function on the same physical device.</p>',ret:'an identifier of type <tt>YFUN_DESCR</tt>.',ext:'If the function has never been contacted, the returned value is <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>.'};
+doc['Altitude']['get_functionId']={syn:'Returns the hardware identifier of the altimeter, without reference to the module.',lib:'altitude.get_functionId()',pro:'def get_functionId()',cmt:'<p>Returns the hardware identifier of the altimeter, without reference to the module. For example <tt>relay1</tt></p>',ret:'a string that identifies the altimeter (ex: <tt>relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['Altitude']['get_hardwareId']={syn:'Returns the unique hardware identifier of the altimeter in the form <tt>SERIAL.FUNCTIONID</tt>.',lib:'altitude.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Returns the unique hardware identifier of the altimeter in the form <tt>SERIAL.FUNCTIONID</tt>. The unique hardware identifier is composed of the device serial number and of the hardware identifier of the altimeter (for example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'a string that uniquely identifies the altimeter (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['Altitude']['get_highestValue']={syn:'Returns the maximal value observed for the altitude since the device was started.',lib:'altitude.get_highestValue()',pro:'def get_highestValue()',cmt:'<p>Returns the maximal value observed for the altitude since the device was started.</p>',ret:'a floating point number corresponding to the maximal value observed for the altitude since the device was started',ext:'On failure, throws an exception or returns <tt>Y_HIGHESTVALUE_INVALID</tt>.'};
+doc['Altitude']['get_logFrequency']={syn:'Returns the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory.',lib:'altitude.get_logFrequency()',pro:'def get_logFrequency()',cmt:'<p>Returns the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory.</p>',ret:'a string corresponding to the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory',ext:'On failure, throws an exception or returns <tt>Y_LOGFREQUENCY_INVALID</tt>.'};
+doc['Altitude']['get_logicalName']={syn:'Returns the logical name of the altimeter.',lib:'altitude.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Returns the logical name of the altimeter.</p>',ret:'a string corresponding to the logical name of the altimeter.',ext:'On failure, throws an exception or returns <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['Altitude']['get_lowestValue']={syn:'Returns the minimal value observed for the altitude since the device was started.',lib:'altitude.get_lowestValue()',pro:'def get_lowestValue()',cmt:'<p>Returns the minimal value observed for the altitude since the device was started.</p>',ret:'a floating point number corresponding to the minimal value observed for the altitude since the device was started',ext:'On failure, throws an exception or returns <tt>Y_LOWESTVALUE_INVALID</tt>.'};
+doc['Altitude']['get_module']={syn:'Gets the <tt>YModule</tt> object for the device on which the function is located.',lib:'altitude.get_module()',pro:'def get_module()',cmt:'<p>Gets the <tt>YModule</tt> object for the device on which the function is located. If the function cannot be located on any module, the returned instance of <tt>YModule</tt> is not shown as on-line.</p>',ret:'an instance of <tt>YModule</tt>'};
+doc['Altitude']['get_qnh']={syn:'Returns the barometric pressure adjusted to sea level used to compute the altitude (QNH).',lib:'altitude.get_qnh()',pro:'def get_qnh()',cmt:'<p>Returns the barometric pressure adjusted to sea level used to compute the altitude (QNH).</p>',ret:'a floating point number corresponding to the barometric pressure adjusted to sea level used to compute the altitude (QNH)',ext:'On failure, throws an exception or returns <tt>Y_QNH_INVALID</tt>.'};
+doc['Altitude']['get_recordedData']={syn:'Retrieves a DataSet object holding historical data for this sensor, for a specified time interval.',lib:'altitude.get_recordedData()',pro:'def get_recordedData(<span id=pn>startTime</span>, <span id=pn>endTime</span>)',cmt:'<p>Retrieves a DataSet object holding historical data for this sensor, for a specified time interval. The measures will be retrieved from the data logger, which must have been turned on at the desired time. See the documentation of the DataSet class for information on how to get an overview of the recorded data, and how to load progressively a large set of measures from the data logger.</p><p> This function only works if the device uses a recent firmware, as DataSet objects are not supported by firmwares older than version 13000.</p>',par:{startTime:'the start of the desired measure time interval, as a Unix timestamp, i.e. the number of seconds since January 1, 1970 UTC. The special value 0 can be used to include any meaasure, without initial limit.',endTime:'the end of the desired measure time interval, as a Unix timestamp, i.e. the number of seconds since January 1, 1970 UTC. The special value 0 can be used to include any meaasure, without ending limit.'},ret:'an instance of YDataSet, providing access to historical data. Past measures can be loaded progressively using methods from the YDataSet object.'};
+doc['Altitude']['get_reportFrequency']={syn:'Returns the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function.',lib:'altitude.get_reportFrequency()',pro:'def get_reportFrequency()',cmt:'<p>Returns the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function.</p>',ret:'a string corresponding to the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function',ext:'On failure, throws an exception or returns <tt>Y_REPORTFREQUENCY_INVALID</tt>.'};
+doc['Altitude']['get_resolution']={syn:'Returns the resolution of the measured values.',lib:'altitude.get_resolution()',pro:'def get_resolution()',cmt:'<p>Returns the resolution of the measured values. The resolution corresponds to the numerical precision of the measures, which is not always the same as the actual precision of the sensor.</p>',ret:'a floating point number corresponding to the resolution of the measured values',ext:'On failure, throws an exception or returns <tt>Y_RESOLUTION_INVALID</tt>.'};
+doc['Altitude']['get_sensorState']={syn:'Returns the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now.',lib:'altitude.get_sensorState()',pro:'def get_sensorState()',cmt:'<p>Returns the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now.</p>',ret:'an integer corresponding to the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now',ext:'On failure, throws an exception or returns <tt>Y_SENSORSTATE_INVALID</tt>.'};
+doc['Altitude']['get_technology']={syn:'Returns the technology used by the sesnor to compute altitude.',lib:'altitude.get_technology()',pro:'def get_technology()',cmt:'<p>Returns the technology used by the sesnor to compute altitude. Possibles values are \x22barometric\x22 and \x22gps\x22</p>',ret:'a string corresponding to the technology used by the sesnor to compute altitude',ext:'On failure, throws an exception or returns <tt>Y_TECHNOLOGY_INVALID</tt>.'};
+doc['Altitude']['get_unit']={syn:'Returns the measuring unit for the altitude.',lib:'altitude.get_unit()',pro:'def get_unit()',cmt:'<p>Returns the measuring unit for the altitude.</p>',ret:'a string corresponding to the measuring unit for the altitude',ext:'On failure, throws an exception or returns <tt>Y_UNIT_INVALID</tt>.'};
+doc['Altitude']['get_userData']={syn:'Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>.',lib:'altitude.get_userData()',pro:'def get_userData()',cmt:'<p>Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>. This attribute is never touched directly by the API, and is at disposal of the caller to store a context.</p>',ret:'the object stored previously by the caller.'};
+doc['Altitude']['isOnline']={syn:'Checks if the altimeter is currently reachable, without raising any error.',lib:'altitude.isOnline()',pro:'def isOnline()',cmt:'<p>Checks if the altimeter is currently reachable, without raising any error. If there is a cached value for the altimeter in cache, that has not yet expired, the device is considered reachable. No exception is raised if there is an error while trying to contact the device hosting the altimeter.</p>',ret:'<tt>true</tt> if the altimeter can be reached, and <tt>false</tt> otherwise'};
+doc['Altitude']['load']={syn:'Preloads the altimeter cache with a specified validity duration.',lib:'altitude.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Preloads the altimeter cache with a specified validity duration. By default, whenever accessing a device, all function attributes are kept in cache for the standard duration (5 ms). This method can be used to temporarily mark the cache as valid for a longer period, in order to reduce network traffic for instance.</p>',par:{msValidity:'an integer corresponding to the validity attributed to the loaded function parameters, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Altitude']['loadAttribute']={syn:'Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.',lib:'altitude.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'On failure, throws an exception or returns an empty string.'};
+doc['Altitude']['loadCalibrationPoints']={syn:'Retrieves error correction data points previously entered using the method <tt>calibrateFromPoints</tt>.',lib:'altitude.loadCalibrationPoints()',pro:'def loadCalibrationPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Retrieves error correction data points previously entered using the method <tt>calibrateFromPoints</tt>.</p>',par:{rawValues:'array of floating point numbers, that will be filled by the function with the raw sensor values for the correction points.',refValues:'array of floating point numbers, that will be filled by the function with the desired values for the correction points.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Altitude']['muteValueCallbacks']={syn:'Disable the propagation of every new advertised value to the parent hub.',lib:'altitude.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>Disable the propagation of every new advertised value to the parent hub. You can use this function to save bandwidth and CPU on computers with limited resources, or to prevent unwanted invocations of the HTTP callback. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Altitude']['nextAltitude']={syn:'Continues the enumeration of altimeters started using <tt>yFirstAltitude()</tt>.',lib:'altitude.nextAltitude()',pro:'def nextAltitude()',cmt:'<p>Continues the enumeration of altimeters started using <tt>yFirstAltitude()</tt>.</p>',ret:'a pointer to a <tt>YAltitude</tt> object, corresponding to an altimeter currently online, or a <tt>null</tt> pointer if there are no more altimeters to enumerate.'};
+doc['Altitude']['registerTimedReportCallback']={syn:'Registers the callback function that is invoked on every periodic timed notification.',lib:'altitude.registerTimedReportCallback()',pro:'def registerTimedReportCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every periodic timed notification. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and an YMeasure object describing the new advertised value.'}};
+doc['Altitude']['registerValueCallback']={syn:'Registers the callback function that is invoked on every change of advertised value.',lib:'altitude.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every change of advertised value. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and the character string describing the new advertised value.'}};
+doc['Altitude']['set_currentValue']={syn:'Changes the current estimated altitude.',lib:'altitude.set_currentValue()',pro:'def set_currentValue(<span id=pn>newval</span>)',cmt:'<p>Changes the current estimated altitude. This allows to compensate for ambient pressure variations and to work in relative mode.</p>',par:{newval:'a floating point number corresponding to the current estimated altitude'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Altitude']['set_highestValue']={syn:'Changes the recorded maximal value observed.',lib:'altitude.set_highestValue()',pro:'def set_highestValue(<span id=pn>newval</span>)',cmt:'<p>Changes the recorded maximal value observed.</p>',par:{newval:'a floating point number corresponding to the recorded maximal value observed'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Altitude']['set_logFrequency']={syn:'Changes the datalogger recording frequency for this function.',lib:'altitude.set_logFrequency()',pro:'def set_logFrequency(<span id=pn>newval</span>)',cmt:'<p>Changes the datalogger recording frequency for this function. The frequency can be specified as samples per second, as sample per minute (for instance \x2215/m\x22) or in samples per hour (eg. \x224/h\x22). To disable recording for this function, use the value \x22OFF\x22.</p>',par:{newval:'a string corresponding to the datalogger recording frequency for this function'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Altitude']['set_logicalName']={syn:'Changes the logical name of the altimeter.',lib:'altitude.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Changes the logical name of the altimeter. You can use <tt>yCheckLogicalName()</tt> prior to this call to make sure that your parameter is valid. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the logical name of the altimeter.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Altitude']['set_lowestValue']={syn:'Changes the recorded minimal value observed.',lib:'altitude.set_lowestValue()',pro:'def set_lowestValue(<span id=pn>newval</span>)',cmt:'<p>Changes the recorded minimal value observed.</p>',par:{newval:'a floating point number corresponding to the recorded minimal value observed'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Altitude']['set_qnh']={syn:'Changes the barometric pressure adjusted to sea level used to compute the altitude (QNH).',lib:'altitude.set_qnh()',pro:'def set_qnh(<span id=pn>newval</span>)',cmt:'<p>Changes the barometric pressure adjusted to sea level used to compute the altitude (QNH). This enables you to compensate for atmospheric pressure changes due to weather conditions.</p>',par:{newval:'a floating point number corresponding to the barometric pressure adjusted to sea level used to compute the altitude (QNH)'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Altitude']['set_reportFrequency']={syn:'Changes the timed value notification frequency for this function.',lib:'altitude.set_reportFrequency()',pro:'def set_reportFrequency(<span id=pn>newval</span>)',cmt:'<p>Changes the timed value notification frequency for this function. The frequency can be specified as samples per second, as sample per minute (for instance \x2215/m\x22) or in samples per hour (eg. \x224/h\x22). To disable timed value notifications for this function, use the value \x22OFF\x22.</p>',par:{newval:'a string corresponding to the timed value notification frequency for this function'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Altitude']['set_resolution']={syn:'Changes the resolution of the measured physical values.',lib:'altitude.set_resolution()',pro:'def set_resolution(<span id=pn>newval</span>)',cmt:'<p>Changes the resolution of the measured physical values. The resolution corresponds to the numerical precision when displaying value. It does not change the precision of the measure itself.</p>',par:{newval:'a floating point number corresponding to the resolution of the measured physical values'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Altitude']['set_userData']={syn:'Stores a user context provided as argument in the userData attribute of the function.',lib:'altitude.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Stores a user context provided as argument in the userData attribute of the function. This attribute is never touched by the API, and is at disposal of the caller to store a context.</p>',par:{data:'any kind of object to be stored'}};
+doc['Altitude']['startDataLogger']={syn:'Starts the data logger on the device.',lib:'altitude.startDataLogger()',pro:'def startDataLogger()',cmt:'<p>Starts the data logger on the device. Note that the data logger will only save the measures on this sensor if the logFrequency is not set to \x22OFF\x22.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.'};
+doc['Altitude']['stopDataLogger']={syn:'Stops the datalogger on the device.',lib:'altitude.stopDataLogger()',pro:'def stopDataLogger()',cmt:'<p>Stops the datalogger on the device.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.'};
+doc['Altitude']['unmuteValueCallbacks']={syn:'Re-enable the propagation of every new advertised value to the parent hub.',lib:'altitude.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>Re-enable the propagation of every new advertised value to the parent hub. This function reverts the effect of a previous call to <tt>muteValueCallbacks()</tt>. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+//--- (end of generated code: Altitude)
+//--- (generated code: Motor)
+doc['Motor']={'':{syn:'Motor function interface',inc:'from yocto_motor import *',cmt:'<p>Yoctopuce application programming interface allows you to drive the power sent to the motor to make it turn both ways, but also to drive accelerations and decelerations. The motor will then accelerate automatically: you will not have to monitor it. The API also allows to slow down the motor by shortening its terminals: the motor will then act as an electromagnetic brake.</p>'}};
+doc['Motor']['FindMotor']={syn:'Retrieves a motor for a given identifier.',lib:'YMotor.FindMotor()',pro:'def FindMotor(<span id=pn>func</span>)',cmt:'<p>Retrieves a motor for a given identifier. The identifier can be specified using several formats:<br> <ul> <li>FunctionLogicalName</li> <li>ModuleSerialNumber.FunctionIdentifier</li> <li>ModuleSerialNumber.FunctionLogicalName</li> <li>ModuleLogicalName.FunctionIdentifier</li> <li>ModuleLogicalName.FunctionLogicalName</li> </ul></p><p> This function does not require that the motor is online at the time it is invoked. The returned object is nevertheless valid. Use the method <tt>YMotor.isOnline()</tt> to test if the motor is indeed online at a given time. In case of ambiguity when looking for a motor by logical name, no error is notified: the first instance found is returned. The search is performed first by hardware name, then by logical name.</p>',par:{func:'a string that uniquely characterizes the motor'},ret:'a <tt>YMotor</tt> object allowing you to drive the motor.'};
+doc['Motor']['FirstMotor']={syn:'Starts the enumeration of motors currently accessible.',lib:'YMotor.FirstMotor()',pro:'def FirstMotor()',cmt:'<p>Starts the enumeration of motors currently accessible. Use the method <tt>YMotor.nextMotor()</tt> to iterate on next motors.</p>',ret:'a pointer to a <tt>YMotor</tt> object, corresponding to the first motor currently online, or a <tt>null</tt> pointer if there are none.'};
+doc['Motor']['brakingForceMove']={syn:'Changes progressively the braking force applied to the motor for a specific duration.',lib:'motor.brakingForceMove()',pro:'def brakingForceMove(<span id=pn>targetPower</span>, <span id=pn>delay</span>)',cmt:'<p>Changes progressively the braking force applied to the motor for a specific duration.</p>',par:{targetPower:'desired braking force, in percents',delay:'duration (in ms) of the transition'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Motor']['clearCache']={syn:'Invalidates the cache.',lib:'motor.clearCache()',pro:'def clearCache()',cmt:'<p>Invalidates the cache. Invalidates the cache of the motor attributes. Forces the next call to get_xxx() or loadxxx() to use values that come from the device.</p>'};
+doc['Motor']['describe']={syn:'Returns a short text that describes unambiguously the instance of the motor in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'motor.describe()',pro:'def describe()',cmt:'<p>Returns a short text that describes unambiguously the instance of the motor in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. More precisely, <tt>TYPE</tt> is the type of the function, <tt>NAME</tt> it the name used for the first access to the function, <tt>SERIAL</tt> is the serial number of the module if the module is connected or <tt>\x22unresolved\x22</tt>, and <tt>FUNCTIONID</tt> is the hardware identifier of the function if the module is connected. For example, this method returns <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> if the module is already connected or <tt>Relay(BadCustomeName.relay1)=unresolved</tt> if the module has not yet been connected. This method does not trigger any USB or TCP transaction and can therefore be used in a debugger.</p>',ret:'a string that describes the motor (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['Motor']['drivingForceMove']={syn:'Changes progressively the power sent to the moteur for a specific duration.',lib:'motor.drivingForceMove()',pro:'def drivingForceMove(<span id=pn>targetPower</span>, <span id=pn>delay</span>)',cmt:'<p>Changes progressively the power sent to the moteur for a specific duration.</p>',par:{targetPower:'desired motor power, in percents (between -100% and +100%)',delay:'duration (in ms) of the transition'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Motor']['get_advertisedValue']={syn:'Returns the current value of the motor (no more than 6 characters).',lib:'motor.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Returns the current value of the motor (no more than 6 characters).</p>',ret:'a string corresponding to the current value of the motor (no more than 6 characters).',ext:'On failure, throws an exception or returns <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['Motor']['get_brakingForce']={syn:'Returns the braking force applied to the motor, as a percentage.',lib:'motor.get_brakingForce()',pro:'def get_brakingForce()',cmt:'<p>Returns the braking force applied to the motor, as a percentage. The value 0 corresponds to no braking (free wheel).</p>',ret:'a floating point number corresponding to the braking force applied to the motor, as a percentage',ext:'On failure, throws an exception or returns <tt>Y_BRAKINGFORCE_INVALID</tt>.'};
+doc['Motor']['get_cutOffVoltage']={syn:'Returns the threshold voltage under which the controller automatically switches to error state and prevents further current draw.',lib:'motor.get_cutOffVoltage()',pro:'def get_cutOffVoltage()',cmt:'<p>Returns the threshold voltage under which the controller automatically switches to error state and prevents further current draw. This setting prevents damage to a battery that can occur when drawing current from an \x22empty\x22 battery.</p>',ret:'a floating point number corresponding to the threshold voltage under which the controller automatically switches to error state and prevents further current draw',ext:'On failure, throws an exception or returns <tt>Y_CUTOFFVOLTAGE_INVALID</tt>.'};
+doc['Motor']['get_drivingForce']={syn:'Returns the power sent to the motor, as a percentage between -100% and +100%.',lib:'motor.get_drivingForce()',pro:'def get_drivingForce()',cmt:'<p>Returns the power sent to the motor, as a percentage between -100% and +100%.</p>',ret:'a floating point number corresponding to the power sent to the motor, as a percentage between -100% and +100%',ext:'On failure, throws an exception or returns <tt>Y_DRIVINGFORCE_INVALID</tt>.'};
+doc['Motor']['get_errorMessage']={syn:'Returns the error message of the latest error with the motor.',lib:'motor.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Returns the error message of the latest error with the motor. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a string corresponding to the latest error message that occured while using the motor object'};
+doc['Motor']['get_errorType']={syn:'Returns the numerical error code of the latest error with the motor.',lib:'motor.get_errorType()',pro:'def get_errorType()',cmt:'<p>Returns the numerical error code of the latest error with the motor. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a number corresponding to the code of the latest error that occurred while using the motor object'};
+doc['Motor']['get_failSafeTimeout']={syn:'Returns the delay in milliseconds allowed for the controller to run autonomously without receiving any instruction from the control process.',lib:'motor.get_failSafeTimeout()',pro:'def get_failSafeTimeout()',cmt:'<p>Returns the delay in milliseconds allowed for the controller to run autonomously without receiving any instruction from the control process. When this delay has elapsed, the controller automatically stops the motor and switches to FAILSAFE error. Failsafe security is disabled when the value is zero.</p>',ret:'an integer corresponding to the delay in milliseconds allowed for the controller to run autonomously without receiving any instruction from the control process',ext:'On failure, throws an exception or returns <tt>Y_FAILSAFETIMEOUT_INVALID</tt>.'};
+doc['Motor']['get_frequency']={syn:'Returns the PWM frequency used to control the motor.',lib:'motor.get_frequency()',pro:'def get_frequency()',cmt:'<p>Returns the PWM frequency used to control the motor.</p>',ret:'a floating point number corresponding to the PWM frequency used to control the motor',ext:'On failure, throws an exception or returns <tt>Y_FREQUENCY_INVALID</tt>.'};
+doc['Motor']['get_friendlyName']={syn:'Returns a global identifier of the motor in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>.',lib:'motor.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Returns a global identifier of the motor in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>. The returned string uses the logical names of the module and of the motor if they are defined, otherwise the serial number of the module and the hardware identifier of the motor (for example: <tt>MyCustomName.relay1</tt>)</p>',ret:'a string that uniquely identifies the motor using logical names (ex: <tt>MyCustomName.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['Motor']['get_functionDescriptor']={syn:'Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function.',lib:'motor.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function. This identifier can be used to test if two instances of <tt>YFunction</tt> reference the same physical function on the same physical device.</p>',ret:'an identifier of type <tt>YFUN_DESCR</tt>.',ext:'If the function has never been contacted, the returned value is <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>.'};
+doc['Motor']['get_functionId']={syn:'Returns the hardware identifier of the motor, without reference to the module.',lib:'motor.get_functionId()',pro:'def get_functionId()',cmt:'<p>Returns the hardware identifier of the motor, without reference to the module. For example <tt>relay1</tt></p>',ret:'a string that identifies the motor (ex: <tt>relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['Motor']['get_hardwareId']={syn:'Returns the unique hardware identifier of the motor in the form <tt>SERIAL.FUNCTIONID</tt>.',lib:'motor.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Returns the unique hardware identifier of the motor in the form <tt>SERIAL.FUNCTIONID</tt>. The unique hardware identifier is composed of the device serial number and of the hardware identifier of the motor (for example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'a string that uniquely identifies the motor (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['Motor']['get_logicalName']={syn:'Returns the logical name of the motor.',lib:'motor.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Returns the logical name of the motor.</p>',ret:'a string corresponding to the logical name of the motor.',ext:'On failure, throws an exception or returns <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['Motor']['get_module']={syn:'Gets the <tt>YModule</tt> object for the device on which the function is located.',lib:'motor.get_module()',pro:'def get_module()',cmt:'<p>Gets the <tt>YModule</tt> object for the device on which the function is located. If the function cannot be located on any module, the returned instance of <tt>YModule</tt> is not shown as on-line.</p>',ret:'an instance of <tt>YModule</tt>'};
+doc['Motor']['get_motorStatus']={syn:'Return the controller state.',lib:'motor.get_motorStatus()',pro:'def get_motorStatus()',cmt:'<p>Return the controller state. Possible states are: IDLE when the motor is stopped/in free wheel, ready to start; FORWD when the controller is driving the motor forward; BACKWD when the controller is driving the motor backward; BRAKE when the controller is braking; LOVOLT when the controller has detected a low voltage condition; HICURR when the controller has detected an overcurrent condition; HIHEAT when the controller has detected an overheat condition; FAILSF when the controller switched on the failsafe security.</p><p> When an error condition occurred (LOVOLT, HICURR, HIHEAT, FAILSF), the controller status must be explicitly reset using the <tt>resetStatus</tt> function.</p>',ret:'a value among <tt>Y_MOTORSTATUS_IDLE</tt>, <tt>Y_MOTORSTATUS_BRAKE</tt>, <tt>Y_MOTORSTATUS_FORWD</tt>, <tt>Y_MOTORSTATUS_BACKWD</tt>, <tt>Y_MOTORSTATUS_LOVOLT</tt>, <tt>Y_MOTORSTATUS_HICURR</tt>, <tt>Y_MOTORSTATUS_HIHEAT</tt> and <tt>Y_MOTORSTATUS_FAILSF</tt>',ext:'On failure, throws an exception or returns <tt>Y_MOTORSTATUS_INVALID</tt>.'};
+doc['Motor']['get_overCurrentLimit']={syn:'Returns the current threshold (in mA) above which the controller automatically switches to error state.',lib:'motor.get_overCurrentLimit()',pro:'def get_overCurrentLimit()',cmt:'<p>Returns the current threshold (in mA) above which the controller automatically switches to error state. A zero value means that there is no limit.</p>',ret:'an integer corresponding to the current threshold (in mA) above which the controller automatically switches to error state',ext:'On failure, throws an exception or returns <tt>Y_OVERCURRENTLIMIT_INVALID</tt>.'};
+doc['Motor']['get_starterTime']={syn:'Returns the duration (in ms) during which the motor is driven at low frequency to help it start up.',lib:'motor.get_starterTime()',pro:'def get_starterTime()',cmt:'<p>Returns the duration (in ms) during which the motor is driven at low frequency to help it start up.</p>',ret:'an integer corresponding to the duration (in ms) during which the motor is driven at low frequency to help it start up',ext:'On failure, throws an exception or returns <tt>Y_STARTERTIME_INVALID</tt>.'};
+doc['Motor']['get_userData']={syn:'Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>.',lib:'motor.get_userData()',pro:'def get_userData()',cmt:'<p>Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>. This attribute is never touched directly by the API, and is at disposal of the caller to store a context.</p>',ret:'the object stored previously by the caller.'};
+doc['Motor']['isOnline']={syn:'Checks if the motor is currently reachable, without raising any error.',lib:'motor.isOnline()',pro:'def isOnline()',cmt:'<p>Checks if the motor is currently reachable, without raising any error. If there is a cached value for the motor in cache, that has not yet expired, the device is considered reachable. No exception is raised if there is an error while trying to contact the device hosting the motor.</p>',ret:'<tt>true</tt> if the motor can be reached, and <tt>false</tt> otherwise'};
+doc['Motor']['keepALive']={syn:'Rearms the controller failsafe timer.',lib:'motor.keepALive()',pro:'def keepALive()',cmt:'<p>Rearms the controller failsafe timer. When the motor is running and the failsafe feature is active, this function should be called periodically to prove that the control process is running properly. Otherwise, the motor is automatically stopped after the specified timeout. Calling a motor <i>set</i> function implicitely rearms the failsafe timer.</p>'};
+doc['Motor']['load']={syn:'Preloads the motor cache with a specified validity duration.',lib:'motor.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Preloads the motor cache with a specified validity duration. By default, whenever accessing a device, all function attributes are kept in cache for the standard duration (5 ms). This method can be used to temporarily mark the cache as valid for a longer period, in order to reduce network traffic for instance.</p>',par:{msValidity:'an integer corresponding to the validity attributed to the loaded function parameters, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Motor']['loadAttribute']={syn:'Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.',lib:'motor.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'On failure, throws an exception or returns an empty string.'};
+doc['Motor']['muteValueCallbacks']={syn:'Disable the propagation of every new advertised value to the parent hub.',lib:'motor.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>Disable the propagation of every new advertised value to the parent hub. You can use this function to save bandwidth and CPU on computers with limited resources, or to prevent unwanted invocations of the HTTP callback. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Motor']['nextMotor']={syn:'Continues the enumeration of motors started using <tt>yFirstMotor()</tt>.',lib:'motor.nextMotor()',pro:'def nextMotor()',cmt:'<p>Continues the enumeration of motors started using <tt>yFirstMotor()</tt>.</p>',ret:'a pointer to a <tt>YMotor</tt> object, corresponding to a motor currently online, or a <tt>null</tt> pointer if there are no more motors to enumerate.'};
+doc['Motor']['registerValueCallback']={syn:'Registers the callback function that is invoked on every change of advertised value.',lib:'motor.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every change of advertised value. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and the character string describing the new advertised value.'}};
+doc['Motor']['resetStatus']={syn:'Reset the controller state to IDLE.',lib:'motor.resetStatus()',pro:'def resetStatus()',cmt:'<p>Reset the controller state to IDLE. This function must be invoked explicitely after any error condition is signaled.</p>'};
+doc['Motor']['set_brakingForce']={syn:'Changes immediately the braking force applied to the motor (in percents).',lib:'motor.set_brakingForce()',pro:'def set_brakingForce(<span id=pn>newval</span>)',cmt:'<p>Changes immediately the braking force applied to the motor (in percents). The value 0 corresponds to no braking (free wheel). When the braking force is changed, the driving power is set to zero. The value is a percentage.</p>',par:{newval:'a floating point number corresponding to immediately the braking force applied to the motor (in percents)'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Motor']['set_cutOffVoltage']={syn:'Changes the threshold voltage under which the controller automatically switches to error state and prevents further current draw.',lib:'motor.set_cutOffVoltage()',pro:'def set_cutOffVoltage(<span id=pn>newval</span>)',cmt:'<p>Changes the threshold voltage under which the controller automatically switches to error state and prevents further current draw. This setting prevent damage to a battery that can occur when drawing current from an \x22empty\x22 battery. Note that whatever the cutoff threshold, the controller switches to undervoltage error state if the power supply goes under 3V, even for a very brief time.</p>',par:{newval:'a floating point number corresponding to the threshold voltage under which the controller automatically switches to error state and prevents further current draw'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Motor']['set_drivingForce']={syn:'Changes immediately the power sent to the motor.',lib:'motor.set_drivingForce()',pro:'def set_drivingForce(<span id=pn>newval</span>)',cmt:'<p>Changes immediately the power sent to the motor. The value is a percentage between -100% to 100%. If you want go easy on your mechanics and avoid excessive current consumption, try to avoid brutal power changes. For example, immediate transition from forward full power to reverse full power is a very bad idea. Each time the driving power is modified, the braking power is set to zero.</p>',par:{newval:'a floating point number corresponding to immediately the power sent to the motor'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Motor']['set_failSafeTimeout']={syn:'Changes the delay in milliseconds allowed for the controller to run autonomously without receiving any instruction from the control process.',lib:'motor.set_failSafeTimeout()',pro:'def set_failSafeTimeout(<span id=pn>newval</span>)',cmt:'<p>Changes the delay in milliseconds allowed for the controller to run autonomously without receiving any instruction from the control process. When this delay has elapsed, the controller automatically stops the motor and switches to FAILSAFE error. Failsafe security is disabled when the value is zero.</p>',par:{newval:'an integer corresponding to the delay in milliseconds allowed for the controller to run autonomously without receiving any instruction from the control process'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Motor']['set_frequency']={syn:'Changes the PWM frequency used to control the motor.',lib:'motor.set_frequency()',pro:'def set_frequency(<span id=pn>newval</span>)',cmt:'<p>Changes the PWM frequency used to control the motor. Low frequency is usually more efficient and may help the motor to start, but an audible noise might be generated. A higher frequency reduces the noise, but more energy is converted into heat.</p>',par:{newval:'a floating point number corresponding to the PWM frequency used to control the motor'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Motor']['set_logicalName']={syn:'Changes the logical name of the motor.',lib:'motor.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Changes the logical name of the motor. You can use <tt>yCheckLogicalName()</tt> prior to this call to make sure that your parameter is valid. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the logical name of the motor.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Motor']['set_overCurrentLimit']={syn:'Changes the current threshold (in mA) above which the controller automatically switches to error state.',lib:'motor.set_overCurrentLimit()',pro:'def set_overCurrentLimit(<span id=pn>newval</span>)',cmt:'<p>Changes the current threshold (in mA) above which the controller automatically switches to error state. A zero value means that there is no limit. Note that whatever the current limit is, the controller switches to OVERCURRENT status if the current goes above 32A, even for a very brief time.</p>',par:{newval:'an integer corresponding to the current threshold (in mA) above which the controller automatically switches to error state'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Motor']['set_starterTime']={syn:'Changes the duration (in ms) during which the motor is driven at low frequency to help it start up.',lib:'motor.set_starterTime()',pro:'def set_starterTime(<span id=pn>newval</span>)',cmt:'<p>Changes the duration (in ms) during which the motor is driven at low frequency to help it start up.</p>',par:{newval:'an integer corresponding to the duration (in ms) during which the motor is driven at low frequency to help it start up'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Motor']['set_userData']={syn:'Stores a user context provided as argument in the userData attribute of the function.',lib:'motor.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Stores a user context provided as argument in the userData attribute of the function. This attribute is never touched by the API, and is at disposal of the caller to store a context.</p>',par:{data:'any kind of object to be stored'}};
+doc['Motor']['unmuteValueCallbacks']={syn:'Re-enable the propagation of every new advertised value to the parent hub.',lib:'motor.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>Re-enable the propagation of every new advertised value to the parent hub. This function reverts the effect of a previous call to <tt>muteValueCallbacks()</tt>. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+//--- (end of generated code: Motor)
+//--- (generated code: SerialPort)
+doc['SerialPort']={'':{syn:'SerialPort function interface',inc:'from yocto_serialport import *',cmt:'<p>The SerialPort function interface allows you to fully drive a Yoctopuce serial port, to send and receive data, and to configure communication parameters (baud rate, bit count, parity, flow control and protocol). Note that Yoctopuce serial ports are not exposed as virtual COM ports. They are meant to be used in the same way as all Yoctopuce devices.</p>'}};
+doc['SerialPort']['FindSerialPort']={syn:'Retrieves a serial port for a given identifier.',lib:'YSerialPort.FindSerialPort()',pro:'def FindSerialPort(<span id=pn>func</span>)',cmt:'<p>Retrieves a serial port for a given identifier. The identifier can be specified using several formats:<br> <ul> <li>FunctionLogicalName</li> <li>ModuleSerialNumber.FunctionIdentifier</li> <li>ModuleSerialNumber.FunctionLogicalName</li> <li>ModuleLogicalName.FunctionIdentifier</li> <li>ModuleLogicalName.FunctionLogicalName</li> </ul></p><p> This function does not require that the serial port is online at the time it is invoked. The returned object is nevertheless valid. Use the method <tt>YSerialPort.isOnline()</tt> to test if the serial port is indeed online at a given time. In case of ambiguity when looking for a serial port by logical name, no error is notified: the first instance found is returned. The search is performed first by hardware name, then by logical name.</p>',par:{func:'a string that uniquely characterizes the serial port'},ret:'a <tt>YSerialPort</tt> object allowing you to drive the serial port.'};
+doc['SerialPort']['FirstSerialPort']={syn:'Starts the enumeration of serial ports currently accessible.',lib:'YSerialPort.FirstSerialPort()',pro:'def FirstSerialPort()',cmt:'<p>Starts the enumeration of serial ports currently accessible. Use the method <tt>YSerialPort.nextSerialPort()</tt> to iterate on next serial ports.</p>',ret:'a pointer to a <tt>YSerialPort</tt> object, corresponding to the first serial port currently online, or a <tt>null</tt> pointer if there are none.'};
+doc['SerialPort']['clearCache']={syn:'Invalidates the cache.',lib:'serialport.clearCache()',pro:'def clearCache()',cmt:'<p>Invalidates the cache. Invalidates the cache of the serial port attributes. Forces the next call to get_xxx() or loadxxx() to use values that come from the device.</p>'};
+doc['SerialPort']['describe']={syn:'Returns a short text that describes unambiguously the instance of the serial port in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'serialport.describe()',pro:'def describe()',cmt:'<p>Returns a short text that describes unambiguously the instance of the serial port in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. More precisely, <tt>TYPE</tt> is the type of the function, <tt>NAME</tt> it the name used for the first access to the function, <tt>SERIAL</tt> is the serial number of the module if the module is connected or <tt>\x22unresolved\x22</tt>, and <tt>FUNCTIONID</tt> is the hardware identifier of the function if the module is connected. For example, this method returns <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> if the module is already connected or <tt>Relay(BadCustomeName.relay1)=unresolved</tt> if the module has not yet been connected. This method does not trigger any USB or TCP transaction and can therefore be used in a debugger.</p>',ret:'a string that describes the serial port (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['SerialPort']['get_CTS']={syn:'Reads the level of the CTS line.',lib:'serialport.get_CTS()',pro:'def get_CTS()',cmt:'<p>Reads the level of the CTS line. The CTS line is usually driven by the RTS signal of the connected serial device.</p>',ret:'1 if the CTS line is high, 0 if the CTS line is low.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['SerialPort']['get_advertisedValue']={syn:'Returns the current value of the serial port (no more than 6 characters).',lib:'serialport.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Returns the current value of the serial port (no more than 6 characters).</p>',ret:'a string corresponding to the current value of the serial port (no more than 6 characters).',ext:'On failure, throws an exception or returns <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['SerialPort']['get_currentJob']={syn:'Returns the name of the job file currently in use.',lib:'serialport.get_currentJob()',pro:'def get_currentJob()',cmt:'<p>Returns the name of the job file currently in use.</p>',ret:'a string corresponding to the name of the job file currently in use',ext:'On failure, throws an exception or returns <tt>Y_CURRENTJOB_INVALID</tt>.'};
+doc['SerialPort']['get_errCount']={syn:'Returns the total number of communication errors detected since last reset.',lib:'serialport.get_errCount()',pro:'def get_errCount()',cmt:'<p>Returns the total number of communication errors detected since last reset.</p>',ret:'an integer corresponding to the total number of communication errors detected since last reset',ext:'On failure, throws an exception or returns <tt>Y_ERRCOUNT_INVALID</tt>.'};
+doc['SerialPort']['get_errorMessage']={syn:'Returns the error message of the latest error with the serial port.',lib:'serialport.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Returns the error message of the latest error with the serial port. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a string corresponding to the latest error message that occured while using the serial port object'};
+doc['SerialPort']['get_errorType']={syn:'Returns the numerical error code of the latest error with the serial port.',lib:'serialport.get_errorType()',pro:'def get_errorType()',cmt:'<p>Returns the numerical error code of the latest error with the serial port. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a number corresponding to the code of the latest error that occurred while using the serial port object'};
+doc['SerialPort']['get_friendlyName']={syn:'Returns a global identifier of the serial port in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>.',lib:'serialport.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Returns a global identifier of the serial port in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>. The returned string uses the logical names of the module and of the serial port if they are defined, otherwise the serial number of the module and the hardware identifier of the serial port (for example: <tt>MyCustomName.relay1</tt>)</p>',ret:'a string that uniquely identifies the serial port using logical names (ex: <tt>MyCustomName.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['SerialPort']['get_functionDescriptor']={syn:'Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function.',lib:'serialport.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function. This identifier can be used to test if two instances of <tt>YFunction</tt> reference the same physical function on the same physical device.</p>',ret:'an identifier of type <tt>YFUN_DESCR</tt>.',ext:'If the function has never been contacted, the returned value is <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>.'};
+doc['SerialPort']['get_functionId']={syn:'Returns the hardware identifier of the serial port, without reference to the module.',lib:'serialport.get_functionId()',pro:'def get_functionId()',cmt:'<p>Returns the hardware identifier of the serial port, without reference to the module. For example <tt>relay1</tt></p>',ret:'a string that identifies the serial port (ex: <tt>relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['SerialPort']['get_hardwareId']={syn:'Returns the unique hardware identifier of the serial port in the form <tt>SERIAL.FUNCTIONID</tt>.',lib:'serialport.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Returns the unique hardware identifier of the serial port in the form <tt>SERIAL.FUNCTIONID</tt>. The unique hardware identifier is composed of the device serial number and of the hardware identifier of the serial port (for example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'a string that uniquely identifies the serial port (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['SerialPort']['get_lastMsg']={syn:'Returns the latest message fully received (for Line, Frame and Modbus protocols).',lib:'serialport.get_lastMsg()',pro:'def get_lastMsg()',cmt:'<p>Returns the latest message fully received (for Line, Frame and Modbus protocols).</p>',ret:'a string corresponding to the latest message fully received (for Line, Frame and Modbus protocols)',ext:'On failure, throws an exception or returns <tt>Y_LASTMSG_INVALID</tt>.'};
+doc['SerialPort']['get_logicalName']={syn:'Returns the logical name of the serial port.',lib:'serialport.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Returns the logical name of the serial port.</p>',ret:'a string corresponding to the logical name of the serial port.',ext:'On failure, throws an exception or returns <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['SerialPort']['get_module']={syn:'Gets the <tt>YModule</tt> object for the device on which the function is located.',lib:'serialport.get_module()',pro:'def get_module()',cmt:'<p>Gets the <tt>YModule</tt> object for the device on which the function is located. If the function cannot be located on any module, the returned instance of <tt>YModule</tt> is not shown as on-line.</p>',ret:'an instance of <tt>YModule</tt>'};
+doc['SerialPort']['get_protocol']={syn:'Returns the type of protocol used over the serial line, as a string.',lib:'serialport.get_protocol()',pro:'def get_protocol()',cmt:'<p>Returns the type of protocol used over the serial line, as a string. Possible values are \x22Line\x22 for ASCII messages separated by CR and/or LF, \x22Frame:[timeout]ms\x22 for binary messages separated by a delay time, \x22Modbus-ASCII\x22 for MODBUS messages in ASCII mode, \x22Modbus-RTU\x22 for MODBUS messages in RTU mode, \x22Char\x22 for a continuous ASCII stream or \x22Byte\x22 for a continuous binary stream.</p>',ret:'a string corresponding to the type of protocol used over the serial line, as a string',ext:'On failure, throws an exception or returns <tt>Y_PROTOCOL_INVALID</tt>.'};
+doc['SerialPort']['get_rxCount']={syn:'Returns the total number of bytes received since last reset.',lib:'serialport.get_rxCount()',pro:'def get_rxCount()',cmt:'<p>Returns the total number of bytes received since last reset.</p>',ret:'an integer corresponding to the total number of bytes received since last reset',ext:'On failure, throws an exception or returns <tt>Y_RXCOUNT_INVALID</tt>.'};
+doc['SerialPort']['get_rxMsgCount']={syn:'Returns the total number of messages received since last reset.',lib:'serialport.get_rxMsgCount()',pro:'def get_rxMsgCount()',cmt:'<p>Returns the total number of messages received since last reset.</p>',ret:'an integer corresponding to the total number of messages received since last reset',ext:'On failure, throws an exception or returns <tt>Y_RXMSGCOUNT_INVALID</tt>.'};
+doc['SerialPort']['get_serialMode']={syn:'Returns the serial port communication parameters, as a string such as \x229600,8N1\x22.',lib:'serialport.get_serialMode()',pro:'def get_serialMode()',cmt:'<p>Returns the serial port communication parameters, as a string such as \x229600,8N1\x22. The string includes the baud rate, the number of data bits, the parity, and the number of stop bits. An optional suffix is included if flow control is active: \x22CtsRts\x22 for hardware handshake, \x22XOnXOff\x22 for logical flow control and \x22Simplex\x22 for acquiring a shared bus using the RTS line (as used by some RS485 adapters for instance).</p>',ret:'a string corresponding to the serial port communication parameters, as a string such as \x229600,8N1\x22',ext:'On failure, throws an exception or returns <tt>Y_SERIALMODE_INVALID</tt>.'};
+doc['SerialPort']['get_startupJob']={syn:'Returns the job file to use when the device is powered on.',lib:'serialport.get_startupJob()',pro:'def get_startupJob()',cmt:'<p>Returns the job file to use when the device is powered on.</p>',ret:'a string corresponding to the job file to use when the device is powered on',ext:'On failure, throws an exception or returns <tt>Y_STARTUPJOB_INVALID</tt>.'};
+doc['SerialPort']['get_txCount']={syn:'Returns the total number of bytes transmitted since last reset.',lib:'serialport.get_txCount()',pro:'def get_txCount()',cmt:'<p>Returns the total number of bytes transmitted since last reset.</p>',ret:'an integer corresponding to the total number of bytes transmitted since last reset',ext:'On failure, throws an exception or returns <tt>Y_TXCOUNT_INVALID</tt>.'};
+doc['SerialPort']['get_txMsgCount']={syn:'Returns the total number of messages send since last reset.',lib:'serialport.get_txMsgCount()',pro:'def get_txMsgCount()',cmt:'<p>Returns the total number of messages send since last reset.</p>',ret:'an integer corresponding to the total number of messages send since last reset',ext:'On failure, throws an exception or returns <tt>Y_TXMSGCOUNT_INVALID</tt>.'};
+doc['SerialPort']['get_userData']={syn:'Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>.',lib:'serialport.get_userData()',pro:'def get_userData()',cmt:'<p>Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>. This attribute is never touched directly by the API, and is at disposal of the caller to store a context.</p>',ret:'the object stored previously by the caller.'};
+doc['SerialPort']['get_voltageLevel']={syn:'Returns the voltage level used on the serial line.',lib:'serialport.get_voltageLevel()',pro:'def get_voltageLevel()',cmt:'<p>Returns the voltage level used on the serial line.</p>',ret:'a value among <tt>Y_VOLTAGELEVEL_OFF</tt>, <tt>Y_VOLTAGELEVEL_TTL3V</tt>, <tt>Y_VOLTAGELEVEL_TTL3VR</tt>, <tt>Y_VOLTAGELEVEL_TTL5V</tt>, <tt>Y_VOLTAGELEVEL_TTL5VR</tt>, <tt>Y_VOLTAGELEVEL_RS232</tt> and <tt>Y_VOLTAGELEVEL_RS485</tt> corresponding to the voltage level used on the serial line',ext:'On failure, throws an exception or returns <tt>Y_VOLTAGELEVEL_INVALID</tt>.'};
+doc['SerialPort']['isOnline']={syn:'Checks if the serial port is currently reachable, without raising any error.',lib:'serialport.isOnline()',pro:'def isOnline()',cmt:'<p>Checks if the serial port is currently reachable, without raising any error. If there is a cached value for the serial port in cache, that has not yet expired, the device is considered reachable. No exception is raised if there is an error while trying to contact the device hosting the serial port.</p>',ret:'<tt>true</tt> if the serial port can be reached, and <tt>false</tt> otherwise'};
+doc['SerialPort']['load']={syn:'Preloads the serial port cache with a specified validity duration.',lib:'serialport.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Preloads the serial port cache with a specified validity duration. By default, whenever accessing a device, all function attributes are kept in cache for the standard duration (5 ms). This method can be used to temporarily mark the cache as valid for a longer period, in order to reduce network traffic for instance.</p>',par:{msValidity:'an integer corresponding to the validity attributed to the loaded function parameters, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['SerialPort']['loadAttribute']={syn:'Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.',lib:'serialport.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'On failure, throws an exception or returns an empty string.'};
+doc['SerialPort']['modbusReadBits']={syn:'Reads one or more contiguous internal bits (or coil status) from a MODBUS serial device.',lib:'serialport.modbusReadBits()',pro:'def modbusReadBits(<span id=pn>slaveNo</span>, <span id=pn>pduAddr</span>, <span id=pn>nBits</span>)',cmt:'<p>Reads one or more contiguous internal bits (or coil status) from a MODBUS serial device. This method uses the MODBUS function code 0x01 (Read Coils).</p>',par:{slaveNo:'the address of the slave MODBUS device to query',pduAddr:'the relative address of the first bit/coil to read (zero-based)',nBits:'the number of bits/coils to read'},ret:'a vector of integers, each corresponding to one bit.',ext:'On failure, throws an exception or returns an empty array.'};
+doc['SerialPort']['modbusReadInputBits']={syn:'Reads one or more contiguous input bits (or discrete inputs) from a MODBUS serial device.',lib:'serialport.modbusReadInputBits()',pro:'def modbusReadInputBits(<span id=pn>slaveNo</span>, <span id=pn>pduAddr</span>, <span id=pn>nBits</span>)',cmt:'<p>Reads one or more contiguous input bits (or discrete inputs) from a MODBUS serial device. This method uses the MODBUS function code 0x02 (Read Discrete Inputs).</p>',par:{slaveNo:'the address of the slave MODBUS device to query',pduAddr:'the relative address of the first bit/input to read (zero-based)',nBits:'the number of bits/inputs to read'},ret:'a vector of integers, each corresponding to one bit.',ext:'On failure, throws an exception or returns an empty array.'};
+doc['SerialPort']['modbusReadInputRegisters']={syn:'Reads one or more contiguous input registers (read-only registers) from a MODBUS serial device.',lib:'serialport.modbusReadInputRegisters()',pro:'def modbusReadInputRegisters(<span id=pn>slaveNo</span>, <span id=pn>pduAddr</span>, <span id=pn>nWords</span>)',cmt:'<p>Reads one or more contiguous input registers (read-only registers) from a MODBUS serial device. This method uses the MODBUS function code 0x04 (Read Input Registers).</p>',par:{slaveNo:'the address of the slave MODBUS device to query',pduAddr:'the relative address of the first input register to read (zero-based)',nWords:'the number of input registers to read'},ret:'a vector of integers, each corresponding to one 16-bit input value.',ext:'On failure, throws an exception or returns an empty array.'};
+doc['SerialPort']['modbusReadRegisters']={syn:'Reads one or more contiguous internal registers (holding registers) from a MODBUS serial device.',lib:'serialport.modbusReadRegisters()',pro:'def modbusReadRegisters(<span id=pn>slaveNo</span>, <span id=pn>pduAddr</span>, <span id=pn>nWords</span>)',cmt:'<p>Reads one or more contiguous internal registers (holding registers) from a MODBUS serial device. This method uses the MODBUS function code 0x03 (Read Holding Registers).</p>',par:{slaveNo:'the address of the slave MODBUS device to query',pduAddr:'the relative address of the first holding register to read (zero-based)',nWords:'the number of holding registers to read'},ret:'a vector of integers, each corresponding to one 16-bit register value.',ext:'On failure, throws an exception or returns an empty array.'};
+doc['SerialPort']['modbusWriteAndReadRegisters']={syn:'Sets several contiguous internal registers (holding registers) on a MODBUS serial device, then performs a contiguous read of a set of (possibly different) internal registers.',lib:'serialport.modbusWriteAndReadRegisters()',pro:'def modbusWriteAndReadRegisters(<span id=pn>slaveNo</span>, <span id=pn>pduWriteAddr</span>, <span id=pn>values</span>, <span id=pn>pduReadAddr</span>, <span id=pn>nReadWords</span>)',cmt:'<p>Sets several contiguous internal registers (holding registers) on a MODBUS serial device, then performs a contiguous read of a set of (possibly different) internal registers. This method uses the MODBUS function code 0x17 (Read/Write Multiple Registers).</p>',par:{slaveNo:'the address of the slave MODBUS device to drive',pduWriteAddr:'the relative address of the first internal register to set (zero-based)',values:'the vector of 16 bit values to set',pduReadAddr:'the relative address of the first internal register to read (zero-based)',nReadWords:'the number of 16 bit values to read'},ret:'a vector of integers, each corresponding to one 16-bit register value read.',ext:'On failure, throws an exception or returns an empty array.'};
+doc['SerialPort']['modbusWriteBit']={syn:'Sets a single internal bit (or coil) on a MODBUS serial device.',lib:'serialport.modbusWriteBit()',pro:'def modbusWriteBit(<span id=pn>slaveNo</span>, <span id=pn>pduAddr</span>, <span id=pn>value</span>)',cmt:'<p>Sets a single internal bit (or coil) on a MODBUS serial device. This method uses the MODBUS function code 0x05 (Write Single Coil).</p>',par:{slaveNo:'the address of the slave MODBUS device to drive',pduAddr:'the relative address of the bit/coil to set (zero-based)',value:'the value to set (0 for OFF state, non-zero for ON state)'},ret:'the number of bits/coils affected on the device (1)',ext:'On failure, throws an exception or returns zero.'};
+doc['SerialPort']['modbusWriteBits']={syn:'Sets several contiguous internal bits (or coils) on a MODBUS serial device.',lib:'serialport.modbusWriteBits()',pro:'def modbusWriteBits(<span id=pn>slaveNo</span>, <span id=pn>pduAddr</span>, <span id=pn>bits</span>)',cmt:'<p>Sets several contiguous internal bits (or coils) on a MODBUS serial device. This method uses the MODBUS function code 0x0f (Write Multiple Coils).</p>',par:{slaveNo:'the address of the slave MODBUS device to drive',pduAddr:'the relative address of the first bit/coil to set (zero-based)',bits:'the vector of bits to be set (one integer per bit)'},ret:'the number of bits/coils affected on the device',ext:'On failure, throws an exception or returns zero.'};
+doc['SerialPort']['modbusWriteRegister']={syn:'Sets a single internal register (or holding register) on a MODBUS serial device.',lib:'serialport.modbusWriteRegister()',pro:'def modbusWriteRegister(<span id=pn>slaveNo</span>, <span id=pn>pduAddr</span>, <span id=pn>value</span>)',cmt:'<p>Sets a single internal register (or holding register) on a MODBUS serial device. This method uses the MODBUS function code 0x06 (Write Single Register).</p>',par:{slaveNo:'the address of the slave MODBUS device to drive',pduAddr:'the relative address of the register to set (zero-based)',value:'the 16 bit value to set'},ret:'the number of registers affected on the device (1)',ext:'On failure, throws an exception or returns zero.'};
+doc['SerialPort']['modbusWriteRegisters']={syn:'Sets several contiguous internal registers (or holding registers) on a MODBUS serial device.',lib:'serialport.modbusWriteRegisters()',pro:'def modbusWriteRegisters(<span id=pn>slaveNo</span>, <span id=pn>pduAddr</span>, <span id=pn>values</span>)',cmt:'<p>Sets several contiguous internal registers (or holding registers) on a MODBUS serial device. This method uses the MODBUS function code 0x10 (Write Multiple Registers).</p>',par:{slaveNo:'the address of the slave MODBUS device to drive',pduAddr:'the relative address of the first internal register to set (zero-based)',values:'the vector of 16 bit values to set'},ret:'the number of registers affected on the device',ext:'On failure, throws an exception or returns zero.'};
+doc['SerialPort']['muteValueCallbacks']={syn:'Disable the propagation of every new advertised value to the parent hub.',lib:'serialport.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>Disable the propagation of every new advertised value to the parent hub. You can use this function to save bandwidth and CPU on computers with limited resources, or to prevent unwanted invocations of the HTTP callback. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['SerialPort']['nextSerialPort']={syn:'Continues the enumeration of serial ports started using <tt>yFirstSerialPort()</tt>.',lib:'serialport.nextSerialPort()',pro:'def nextSerialPort()',cmt:'<p>Continues the enumeration of serial ports started using <tt>yFirstSerialPort()</tt>.</p>',ret:'a pointer to a <tt>YSerialPort</tt> object, corresponding to a serial port currently online, or a <tt>null</tt> pointer if there are no more serial ports to enumerate.'};
+doc['SerialPort']['queryLine']={syn:'Sends a text line query to the serial port, and reads the reply, if any.',lib:'serialport.queryLine()',pro:'def queryLine(<span id=pn>query</span>, <span id=pn>maxWait</span>)',cmt:'<p>Sends a text line query to the serial port, and reads the reply, if any. This function is intended to be used when the serial port is configured for \x27Line\x27 protocol.</p>',par:{query:'the line query to send (without CR/LF)',maxWait:'the maximum number of milliseconds to wait for a reply.'},ret:'the next text line received after sending the text query, as a string. Additional lines can be obtained by calling readLine or readMessages.',ext:'On failure, throws an exception or returns an empty array.'};
+doc['SerialPort']['queryMODBUS']={syn:'Sends a message to a specified MODBUS slave connected to the serial port, and reads the reply, if any.',lib:'serialport.queryMODBUS()',pro:'def queryMODBUS(<span id=pn>slaveNo</span>, <span id=pn>pduBytes</span>)',cmt:'<p>Sends a message to a specified MODBUS slave connected to the serial port, and reads the reply, if any. The message is the PDU, provided as a vector of bytes.</p>',par:{slaveNo:'the address of the slave MODBUS device to query',pduBytes:'the message to send (PDU), as a vector of bytes. The first byte of the PDU is the MODBUS function code.'},ret:'the received reply, as a vector of bytes.',ext:'On failure, throws an exception or returns an empty array (or a MODBUS error reply).'};
+doc['SerialPort']['readArray']={syn:'Reads data from the receive buffer as a list of bytes, starting at current stream position.',lib:'serialport.readArray()',pro:'def readArray(<span id=pn>nChars</span>)',cmt:'<p>Reads data from the receive buffer as a list of bytes, starting at current stream position. If data at current stream position is not available anymore in the receive buffer, the function performs a short read.</p>',par:{nChars:'the maximum number of bytes to read'},ret:'a sequence of bytes with receive buffer contents',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['SerialPort']['readBin']={syn:'Reads data from the receive buffer as a binary buffer, starting at current stream position.',lib:'serialport.readBin()',pro:'def readBin(<span id=pn>nChars</span>)',cmt:'<p>Reads data from the receive buffer as a binary buffer, starting at current stream position. If data at current stream position is not available anymore in the receive buffer, the function performs a short read.</p>',par:{nChars:'the maximum number of bytes to read'},ret:'a binary object with receive buffer contents',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['SerialPort']['readByte']={syn:'Reads one byte from the receive buffer, starting at current stream position.',lib:'serialport.readByte()',pro:'def readByte()',cmt:'<p>Reads one byte from the receive buffer, starting at current stream position. If data at current stream position is not available anymore in the receive buffer, or if there is no data available yet, the function returns YAPI_NO_MORE_DATA.</p>',ret:'the next byte',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['SerialPort']['readHex']={syn:'Reads data from the receive buffer as a hexadecimal string, starting at current stream position.',lib:'serialport.readHex()',pro:'def readHex(<span id=pn>nBytes</span>)',cmt:'<p>Reads data from the receive buffer as a hexadecimal string, starting at current stream position. If data at current stream position is not available anymore in the receive buffer, the function performs a short read.</p>',par:{nBytes:'the maximum number of bytes to read'},ret:'a string with receive buffer contents, encoded in hexadecimal',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['SerialPort']['readLine']={syn:'Reads a single line (or message) from the receive buffer, starting at current stream position.',lib:'serialport.readLine()',pro:'def readLine()',cmt:'<p>Reads a single line (or message) from the receive buffer, starting at current stream position. This function is intended to be used when the serial port is configured for a message protocol, such as \x27Line\x27 mode or frame protocols.</p><p> If data at current stream position is not available anymore in the receive buffer, the function returns the oldest available line and moves the stream position just after. If no new full line is received, the function returns an empty line.</p>',ret:'a string with a single line of text',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['SerialPort']['readMessages']={syn:'Searches for incoming messages in the serial port receive buffer matching a given pattern, starting at current position.',lib:'serialport.readMessages()',pro:'def readMessages(<span id=pn>pattern</span>, <span id=pn>maxWait</span>)',cmt:'<p>Searches for incoming messages in the serial port receive buffer matching a given pattern, starting at current position. This function will only compare and return printable characters in the message strings. Binary protocols are handled as hexadecimal strings.</p><p> The search returns all messages matching the expression provided as argument in the buffer. If no matching message is found, the search waits for one up to the specified maximum timeout (in milliseconds).</p>',par:{pattern:'a limited regular expression describing the expected message format, or an empty string if all messages should be returned (no filtering). When using binary protocols, the format applies to the hexadecimal representation of the message.',maxWait:'the maximum number of milliseconds to wait for a message if none is found in the receive buffer.'},ret:'an array of strings containing the messages found, if any. Binary messages are converted to hexadecimal representation.',ext:'On failure, throws an exception or returns an empty array.'};
+doc['SerialPort']['readStr']={syn:'Reads data from the receive buffer as a string, starting at current stream position.',lib:'serialport.readStr()',pro:'def readStr(<span id=pn>nChars</span>)',cmt:'<p>Reads data from the receive buffer as a string, starting at current stream position. If data at current stream position is not available anymore in the receive buffer, the function performs a short read.</p>',par:{nChars:'the maximum number of characters to read'},ret:'a string with receive buffer contents',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['SerialPort']['read_avail']={syn:'Returns the number of bytes available to read in the input buffer starting from the current absolute stream position pointer of the API object.',lib:'serialport.read_avail()',pro:'def read_avail()',cmt:'<p>Returns the number of bytes available to read in the input buffer starting from the current absolute stream position pointer of the API object.</p>',ret:'the number of bytes available to read'};
+doc['SerialPort']['read_seek']={syn:'Changes the current internal stream position to the specified value.',lib:'serialport.read_seek()',pro:'def read_seek(<span id=pn>absPos</span>)',cmt:'<p>Changes the current internal stream position to the specified value. This function does not affect the device, it only changes the value stored in the API object for the next read operations.</p>',par:{absPos:'the absolute position index for next read operations.'},ret:'nothing.'};
+doc['SerialPort']['read_tell']={syn:'Returns the current absolute stream position pointer of the API object.',lib:'serialport.read_tell()',pro:'def read_tell()',cmt:'<p>Returns the current absolute stream position pointer of the API object.</p>',ret:'the absolute position index for next read operations.'};
+doc['SerialPort']['registerValueCallback']={syn:'Registers the callback function that is invoked on every change of advertised value.',lib:'serialport.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every change of advertised value. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and the character string describing the new advertised value.'}};
+doc['SerialPort']['reset']={syn:'Clears the serial port buffer and resets counters to zero.',lib:'serialport.reset()',pro:'def reset()',cmt:'<p>Clears the serial port buffer and resets counters to zero.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['SerialPort']['selectJob']={syn:'Load and start processing the specified job file.',lib:'serialport.selectJob()',pro:'def selectJob(<span id=pn>jobfile</span>)',cmt:'<p>Load and start processing the specified job file. The file must have been previously created using the user interface or uploaded on the device filesystem using the <tt>uploadJob()</tt> function.</p>',par:{jobfile:'name of the job file (on the device filesystem)'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['SerialPort']['set_RTS']={syn:'Manually sets the state of the RTS line.',lib:'serialport.set_RTS()',pro:'def set_RTS(<span id=pn>val</span>)',cmt:'<p>Manually sets the state of the RTS line. This function has no effect when hardware handshake is enabled, as the RTS line is driven automatically.</p>',par:{val:'1 to turn RTS on, 0 to turn RTS off'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['SerialPort']['set_currentJob']={syn:'Changes the job to use when the device is powered on.',lib:'serialport.set_currentJob()',pro:'def set_currentJob(<span id=pn>newval</span>)',cmt:'<p>Changes the job to use when the device is powered on. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the job to use when the device is powered on'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['SerialPort']['set_logicalName']={syn:'Changes the logical name of the serial port.',lib:'serialport.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Changes the logical name of the serial port. You can use <tt>yCheckLogicalName()</tt> prior to this call to make sure that your parameter is valid. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the logical name of the serial port.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['SerialPort']['set_protocol']={syn:'Changes the type of protocol used over the serial line.',lib:'serialport.set_protocol()',pro:'def set_protocol(<span id=pn>newval</span>)',cmt:'<p>Changes the type of protocol used over the serial line. Possible values are \x22Line\x22 for ASCII messages separated by CR and/or LF, \x22Frame:[timeout]ms\x22 for binary messages separated by a delay time, \x22Modbus-ASCII\x22 for MODBUS messages in ASCII mode, \x22Modbus-RTU\x22 for MODBUS messages in RTU mode, \x22Char\x22 for a continuous ASCII stream or \x22Byte\x22 for a continuous binary stream. The suffix \x22/[wait]ms\x22 can be added to reduce the transmit rate so that there is always at lest the specified number of milliseconds between each bytes sent.</p>',par:{newval:'a string corresponding to the type of protocol used over the serial line'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['SerialPort']['set_serialMode']={syn:'Changes the serial port communication parameters, with a string such as \x229600,8N1\x22.',lib:'serialport.set_serialMode()',pro:'def set_serialMode(<span id=pn>newval</span>)',cmt:'<p>Changes the serial port communication parameters, with a string such as \x229600,8N1\x22. The string includes the baud rate, the number of data bits, the parity, and the number of stop bits. An optional suffix can be added to enable flow control: \x22CtsRts\x22 for hardware handshake, \x22XOnXOff\x22 for logical flow control and \x22Simplex\x22 for acquiring a shared bus using the RTS line (as used by some RS485 adapters for instance).</p>',par:{newval:'a string corresponding to the serial port communication parameters, with a string such as \x229600,8N1\x22'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['SerialPort']['set_startupJob']={syn:'Changes the job to use when the device is powered on.',lib:'serialport.set_startupJob()',pro:'def set_startupJob(<span id=pn>newval</span>)',cmt:'<p>Changes the job to use when the device is powered on. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the job to use when the device is powered on'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['SerialPort']['set_userData']={syn:'Stores a user context provided as argument in the userData attribute of the function.',lib:'serialport.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Stores a user context provided as argument in the userData attribute of the function. This attribute is never touched by the API, and is at disposal of the caller to store a context.</p>',par:{data:'any kind of object to be stored'}};
+doc['SerialPort']['set_voltageLevel']={syn:'Changes the voltage type used on the serial line.',lib:'serialport.set_voltageLevel()',pro:'def set_voltageLevel(<span id=pn>newval</span>)',cmt:'<p>Changes the voltage type used on the serial line. Valid values will depend on the Yoctopuce device model featuring the serial port feature. Check your device documentation to find out which values are valid for that specific model. \x09 Trying to set an invalid value will have no effect.</p>',par:{newval:'a value among <tt>Y_VOLTAGELEVEL_OFF</tt>, <tt>Y_VOLTAGELEVEL_TTL3V</tt>, <tt>Y_VOLTAGELEVEL_TTL3VR</tt>, <tt>Y_VOLTAGELEVEL_TTL5V</tt>, <tt>Y_VOLTAGELEVEL_TTL5VR</tt>, <tt>Y_VOLTAGELEVEL_RS232</tt> and <tt>Y_VOLTAGELEVEL_RS485</tt> corresponding to the voltage type used on the serial line'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['SerialPort']['unmuteValueCallbacks']={syn:'Re-enable the propagation of every new advertised value to the parent hub.',lib:'serialport.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>Re-enable the propagation of every new advertised value to the parent hub. This function reverts the effect of a previous call to <tt>muteValueCallbacks()</tt>. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['SerialPort']['uploadJob']={syn:'Saves the job definition string (JSON data) into a job file.',lib:'serialport.uploadJob()',pro:'def uploadJob(<span id=pn>jobfile</span>, <span id=pn>jsonDef</span>)',cmt:'<p>Saves the job definition string (JSON data) into a job file. The job file can be later enabled using <tt>selectJob()</tt>.</p>',par:{jobfile:'name of the job file to save on the device filesystem',jsonDef:'a string containing a JSON definition of the job'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['SerialPort']['writeArray']={syn:'Sends a byte sequence (provided as a list of bytes) to the serial port.',lib:'serialport.writeArray()',pro:'def writeArray(<span id=pn>byteList</span>)',cmt:'<p>Sends a byte sequence (provided as a list of bytes) to the serial port.</p>',par:{byteList:'a list of byte codes'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['SerialPort']['writeBin']={syn:'Sends a binary buffer to the serial port, as is.',lib:'serialport.writeBin()',pro:'def writeBin(<span id=pn>buff</span>)',cmt:'<p>Sends a binary buffer to the serial port, as is.</p>',par:{buff:'the binary buffer to send'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['SerialPort']['writeByte']={syn:'Sends a single byte to the serial port.',lib:'serialport.writeByte()',pro:'def writeByte(<span id=pn>code</span>)',cmt:'<p>Sends a single byte to the serial port.</p>',par:{code:'the byte to send'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['SerialPort']['writeHex']={syn:'Sends a byte sequence (provided as a hexadecimal string) to the serial port.',lib:'serialport.writeHex()',pro:'def writeHex(<span id=pn>hexString</span>)',cmt:'<p>Sends a byte sequence (provided as a hexadecimal string) to the serial port.</p>',par:{hexString:'a string of hexadecimal byte codes'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['SerialPort']['writeLine']={syn:'Sends an ASCII string to the serial port, followed by a line break (CR LF).',lib:'serialport.writeLine()',pro:'def writeLine(<span id=pn>text</span>)',cmt:'<p>Sends an ASCII string to the serial port, followed by a line break (CR LF).</p>',par:{text:'the text string to send'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['SerialPort']['writeMODBUS']={syn:'Sends a MODBUS message (provided as a hexadecimal string) to the serial port.',lib:'serialport.writeMODBUS()',pro:'def writeMODBUS(<span id=pn>hexString</span>)',cmt:'<p>Sends a MODBUS message (provided as a hexadecimal string) to the serial port. The message must start with the slave address. The MODBUS CRC/LRC is automatically added by the function. This function does not wait for a reply.</p>',par:{hexString:'a hexadecimal message string, including device address but no CRC/LRC'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['SerialPort']['writeStr']={syn:'Sends an ASCII string to the serial port, as is.',lib:'serialport.writeStr()',pro:'def writeStr(<span id=pn>text</span>)',cmt:'<p>Sends an ASCII string to the serial port, as is.</p>',par:{text:'the text string to send'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+//--- (end of generated code: SerialPort)
+//--- (generated code: PwmInput)
+doc['PwmInput']={'':{syn:'PwmInput function interface',inc:'from yocto_pwminput import *',cmt:'<p>The Yoctopuce class YPwmInput allows you to read and configure Yoctopuce PWM sensors. It inherits from YSensor class the core functions to read measurements, register callback functions, access to the autonomous datalogger. This class adds the ability to configure the signal parameter used to transmit information: the duty cycle, the frequency or the pulse width.</p>'}};
+doc['PwmInput']['FindPwmInput']={syn:'Retrieves a PWM input for a given identifier.',lib:'YPwmInput.FindPwmInput()',pro:'def FindPwmInput(<span id=pn>func</span>)',cmt:'<p>Retrieves a PWM input for a given identifier. The identifier can be specified using several formats:<br> <ul> <li>FunctionLogicalName</li> <li>ModuleSerialNumber.FunctionIdentifier</li> <li>ModuleSerialNumber.FunctionLogicalName</li> <li>ModuleLogicalName.FunctionIdentifier</li> <li>ModuleLogicalName.FunctionLogicalName</li> </ul></p><p> This function does not require that the PWM input is online at the time it is invoked. The returned object is nevertheless valid. Use the method <tt>YPwmInput.isOnline()</tt> to test if the PWM input is indeed online at a given time. In case of ambiguity when looking for a PWM input by logical name, no error is notified: the first instance found is returned. The search is performed first by hardware name, then by logical name.</p>',par:{func:'a string that uniquely characterizes the PWM input'},ret:'a <tt>YPwmInput</tt> object allowing you to drive the PWM input.'};
+doc['PwmInput']['FirstPwmInput']={syn:'Starts the enumeration of PWM inputs currently accessible.',lib:'YPwmInput.FirstPwmInput()',pro:'def FirstPwmInput()',cmt:'<p>Starts the enumeration of PWM inputs currently accessible. Use the method <tt>YPwmInput.nextPwmInput()</tt> to iterate on next PWM inputs.</p>',ret:'a pointer to a <tt>YPwmInput</tt> object, corresponding to the first PWM input currently online, or a <tt>null</tt> pointer if there are none.'};
+doc['PwmInput']['calibrateFromPoints']={syn:'Configures error correction data points, in particular to compensate for a possible perturbation of the measure caused by an enclosure.',lib:'pwminput.calibrateFromPoints()',pro:'def calibrateFromPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Configures error correction data points, in particular to compensate for a possible perturbation of the measure caused by an enclosure. It is possible to configure up to five correction points. Correction points must be provided in ascending order, and be in the range of the sensor. The device will automatically perform a linear interpolation of the error correction between specified points. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p><p> For more information on advanced capabilities to refine the calibration of sensors, please contact support@yoctopuce.com.</p>',par:{rawValues:'array of floating point numbers, corresponding to the raw values returned by the sensor for the correction points.',refValues:'array of floating point numbers, corresponding to the corrected values for the correction points.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['PwmInput']['clearCache']={syn:'Invalidates the cache.',lib:'pwminput.clearCache()',pro:'def clearCache()',cmt:'<p>Invalidates the cache. Invalidates the cache of the PWM input attributes. Forces the next call to get_xxx() or loadxxx() to use values that come from the device.</p>'};
+doc['PwmInput']['describe']={syn:'Returns a short text that describes unambiguously the instance of the PWM input in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'pwminput.describe()',pro:'def describe()',cmt:'<p>Returns a short text that describes unambiguously the instance of the PWM input in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. More precisely, <tt>TYPE</tt> is the type of the function, <tt>NAME</tt> it the name used for the first access to the function, <tt>SERIAL</tt> is the serial number of the module if the module is connected or <tt>\x22unresolved\x22</tt>, and <tt>FUNCTIONID</tt> is the hardware identifier of the function if the module is connected. For example, this method returns <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> if the module is already connected or <tt>Relay(BadCustomeName.relay1)=unresolved</tt> if the module has not yet been connected. This method does not trigger any USB or TCP transaction and can therefore be used in a debugger.</p>',ret:'a string that describes the PWM input (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['PwmInput']['get_advertisedValue']={syn:'Returns the current value of the PWM input (no more than 6 characters).',lib:'pwminput.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Returns the current value of the PWM input (no more than 6 characters).</p>',ret:'a string corresponding to the current value of the PWM input (no more than 6 characters).',ext:'On failure, throws an exception or returns <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['PwmInput']['get_currentRawValue']={syn:'Returns the uncalibrated, unrounded raw value returned by the sensor, in HZ, as a floating point number.',lib:'pwminput.get_currentRawValue()',pro:'def get_currentRawValue()',cmt:'<p>Returns the uncalibrated, unrounded raw value returned by the sensor, in HZ, as a floating point number.</p>',ret:'a floating point number corresponding to the uncalibrated, unrounded raw value returned by the sensor, in HZ, as a floating point number',ext:'On failure, throws an exception or returns <tt>Y_CURRENTRAWVALUE_INVALID</tt>.'};
+doc['PwmInput']['get_currentValue']={syn:'Returns the current value of the PwmInput feature as a floating point number.',lib:'pwminput.get_currentValue()',pro:'def get_currentValue()',cmt:'<p>Returns the current value of the PwmInput feature as a floating point number. Depending on the pwmReportMode setting, this can be the frequency, in Hz, the duty cycle in % or the pulse length in ms.</p>',ret:'a floating point number corresponding to the current value of the PwmInput feature as a floating point number',ext:'On failure, throws an exception or returns <tt>Y_CURRENTVALUE_INVALID</tt>.'};
+doc['PwmInput']['get_dutyCycle']={syn:'Returns the PWM duty cycle, in per cents.',lib:'pwminput.get_dutyCycle()',pro:'def get_dutyCycle()',cmt:'<p>Returns the PWM duty cycle, in per cents.</p>',ret:'a floating point number corresponding to the PWM duty cycle, in per cents',ext:'On failure, throws an exception or returns <tt>Y_DUTYCYCLE_INVALID</tt>.'};
+doc['PwmInput']['get_errorMessage']={syn:'Returns the error message of the latest error with the PWM input.',lib:'pwminput.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Returns the error message of the latest error with the PWM input. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a string corresponding to the latest error message that occured while using the PWM input object'};
+doc['PwmInput']['get_errorType']={syn:'Returns the numerical error code of the latest error with the PWM input.',lib:'pwminput.get_errorType()',pro:'def get_errorType()',cmt:'<p>Returns the numerical error code of the latest error with the PWM input. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a number corresponding to the code of the latest error that occurred while using the PWM input object'};
+doc['PwmInput']['get_frequency']={syn:'Returns the PWM frequency in Hz.',lib:'pwminput.get_frequency()',pro:'def get_frequency()',cmt:'<p>Returns the PWM frequency in Hz.</p>',ret:'a floating point number corresponding to the PWM frequency in Hz',ext:'On failure, throws an exception or returns <tt>Y_FREQUENCY_INVALID</tt>.'};
+doc['PwmInput']['get_friendlyName']={syn:'Returns a global identifier of the PWM input in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>.',lib:'pwminput.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Returns a global identifier of the PWM input in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>. The returned string uses the logical names of the module and of the PWM input if they are defined, otherwise the serial number of the module and the hardware identifier of the PWM input (for example: <tt>MyCustomName.relay1</tt>)</p>',ret:'a string that uniquely identifies the PWM input using logical names (ex: <tt>MyCustomName.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['PwmInput']['get_functionDescriptor']={syn:'Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function.',lib:'pwminput.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function. This identifier can be used to test if two instances of <tt>YFunction</tt> reference the same physical function on the same physical device.</p>',ret:'an identifier of type <tt>YFUN_DESCR</tt>.',ext:'If the function has never been contacted, the returned value is <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>.'};
+doc['PwmInput']['get_functionId']={syn:'Returns the hardware identifier of the PWM input, without reference to the module.',lib:'pwminput.get_functionId()',pro:'def get_functionId()',cmt:'<p>Returns the hardware identifier of the PWM input, without reference to the module. For example <tt>relay1</tt></p>',ret:'a string that identifies the PWM input (ex: <tt>relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['PwmInput']['get_hardwareId']={syn:'Returns the unique hardware identifier of the PWM input in the form <tt>SERIAL.FUNCTIONID</tt>.',lib:'pwminput.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Returns the unique hardware identifier of the PWM input in the form <tt>SERIAL.FUNCTIONID</tt>. The unique hardware identifier is composed of the device serial number and of the hardware identifier of the PWM input (for example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'a string that uniquely identifies the PWM input (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['PwmInput']['get_highestValue']={syn:'Returns the maximal value observed for the PWM since the device was started.',lib:'pwminput.get_highestValue()',pro:'def get_highestValue()',cmt:'<p>Returns the maximal value observed for the PWM since the device was started.</p>',ret:'a floating point number corresponding to the maximal value observed for the PWM since the device was started',ext:'On failure, throws an exception or returns <tt>Y_HIGHESTVALUE_INVALID</tt>.'};
+doc['PwmInput']['get_logFrequency']={syn:'Returns the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory.',lib:'pwminput.get_logFrequency()',pro:'def get_logFrequency()',cmt:'<p>Returns the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory.</p>',ret:'a string corresponding to the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory',ext:'On failure, throws an exception or returns <tt>Y_LOGFREQUENCY_INVALID</tt>.'};
+doc['PwmInput']['get_logicalName']={syn:'Returns the logical name of the PWM input.',lib:'pwminput.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Returns the logical name of the PWM input.</p>',ret:'a string corresponding to the logical name of the PWM input.',ext:'On failure, throws an exception or returns <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['PwmInput']['get_lowestValue']={syn:'Returns the minimal value observed for the PWM since the device was started.',lib:'pwminput.get_lowestValue()',pro:'def get_lowestValue()',cmt:'<p>Returns the minimal value observed for the PWM since the device was started.</p>',ret:'a floating point number corresponding to the minimal value observed for the PWM since the device was started',ext:'On failure, throws an exception or returns <tt>Y_LOWESTVALUE_INVALID</tt>.'};
+doc['PwmInput']['get_module']={syn:'Gets the <tt>YModule</tt> object for the device on which the function is located.',lib:'pwminput.get_module()',pro:'def get_module()',cmt:'<p>Gets the <tt>YModule</tt> object for the device on which the function is located. If the function cannot be located on any module, the returned instance of <tt>YModule</tt> is not shown as on-line.</p>',ret:'an instance of <tt>YModule</tt>'};
+doc['PwmInput']['get_period']={syn:'Returns the PWM period in milliseconds.',lib:'pwminput.get_period()',pro:'def get_period()',cmt:'<p>Returns the PWM period in milliseconds.</p>',ret:'a floating point number corresponding to the PWM period in milliseconds',ext:'On failure, throws an exception or returns <tt>Y_PERIOD_INVALID</tt>.'};
+doc['PwmInput']['get_pulseCounter']={syn:'Returns the pulse counter value.',lib:'pwminput.get_pulseCounter()',pro:'def get_pulseCounter()',cmt:'<p>Returns the pulse counter value. Actually that counter is incremented twice per period. That counter is limited to 1 billion</p>',ret:'an integer corresponding to the pulse counter value',ext:'On failure, throws an exception or returns <tt>Y_PULSECOUNTER_INVALID</tt>.'};
+doc['PwmInput']['get_pulseDuration']={syn:'Returns the PWM pulse length in milliseconds, as a floating point number.',lib:'pwminput.get_pulseDuration()',pro:'def get_pulseDuration()',cmt:'<p>Returns the PWM pulse length in milliseconds, as a floating point number.</p>',ret:'a floating point number corresponding to the PWM pulse length in milliseconds, as a floating point number',ext:'On failure, throws an exception or returns <tt>Y_PULSEDURATION_INVALID</tt>.'};
+doc['PwmInput']['get_pulseTimer']={syn:'Returns the timer of the pulses counter (ms).',lib:'pwminput.get_pulseTimer()',pro:'def get_pulseTimer()',cmt:'<p>Returns the timer of the pulses counter (ms).</p>',ret:'an integer corresponding to the timer of the pulses counter (ms)',ext:'On failure, throws an exception or returns <tt>Y_PULSETIMER_INVALID</tt>.'};
+doc['PwmInput']['get_pwmReportMode']={syn:'Returns the parameter (frequency/duty cycle, pulse width, edges count) returned by the get_currentValue function and callbacks.',lib:'pwminput.get_pwmReportMode()',pro:'def get_pwmReportMode()',cmt:'<p>Returns the parameter (frequency/duty cycle, pulse width, edges count) returned by the get_currentValue function and callbacks. Attention</p>',ret:'a value among <tt>Y_PWMREPORTMODE_PWM_DUTYCYCLE</tt>, <tt>Y_PWMREPORTMODE_PWM_FREQUENCY</tt>, <tt>Y_PWMREPORTMODE_PWM_PULSEDURATION</tt> and <tt>Y_PWMREPORTMODE_PWM_EDGECOUNT</tt> corresponding to the parameter (frequency/duty cycle, pulse width, edges count) returned by the get_currentValue function and callbacks',ext:'On failure, throws an exception or returns <tt>Y_PWMREPORTMODE_INVALID</tt>.'};
+doc['PwmInput']['get_recordedData']={syn:'Retrieves a DataSet object holding historical data for this sensor, for a specified time interval.',lib:'pwminput.get_recordedData()',pro:'def get_recordedData(<span id=pn>startTime</span>, <span id=pn>endTime</span>)',cmt:'<p>Retrieves a DataSet object holding historical data for this sensor, for a specified time interval. The measures will be retrieved from the data logger, which must have been turned on at the desired time. See the documentation of the DataSet class for information on how to get an overview of the recorded data, and how to load progressively a large set of measures from the data logger.</p><p> This function only works if the device uses a recent firmware, as DataSet objects are not supported by firmwares older than version 13000.</p>',par:{startTime:'the start of the desired measure time interval, as a Unix timestamp, i.e. the number of seconds since January 1, 1970 UTC. The special value 0 can be used to include any meaasure, without initial limit.',endTime:'the end of the desired measure time interval, as a Unix timestamp, i.e. the number of seconds since January 1, 1970 UTC. The special value 0 can be used to include any meaasure, without ending limit.'},ret:'an instance of YDataSet, providing access to historical data. Past measures can be loaded progressively using methods from the YDataSet object.'};
+doc['PwmInput']['get_reportFrequency']={syn:'Returns the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function.',lib:'pwminput.get_reportFrequency()',pro:'def get_reportFrequency()',cmt:'<p>Returns the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function.</p>',ret:'a string corresponding to the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function',ext:'On failure, throws an exception or returns <tt>Y_REPORTFREQUENCY_INVALID</tt>.'};
+doc['PwmInput']['get_resolution']={syn:'Returns the resolution of the measured values.',lib:'pwminput.get_resolution()',pro:'def get_resolution()',cmt:'<p>Returns the resolution of the measured values. The resolution corresponds to the numerical precision of the measures, which is not always the same as the actual precision of the sensor.</p>',ret:'a floating point number corresponding to the resolution of the measured values',ext:'On failure, throws an exception or returns <tt>Y_RESOLUTION_INVALID</tt>.'};
+doc['PwmInput']['get_sensorState']={syn:'Returns the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now.',lib:'pwminput.get_sensorState()',pro:'def get_sensorState()',cmt:'<p>Returns the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now.</p>',ret:'an integer corresponding to the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now',ext:'On failure, throws an exception or returns <tt>Y_SENSORSTATE_INVALID</tt>.'};
+doc['PwmInput']['get_unit']={syn:'Returns the measuring unit for the values returned by get_currentValue and callbacks.',lib:'pwminput.get_unit()',pro:'def get_unit()',cmt:'<p>Returns the measuring unit for the values returned by get_currentValue and callbacks. This unit changes according to the pwmReportMode settings.</p>',ret:'a string corresponding to the measuring unit for the values returned by get_currentValue and callbacks',ext:'On failure, throws an exception or returns <tt>Y_UNIT_INVALID</tt>.'};
+doc['PwmInput']['get_userData']={syn:'Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>.',lib:'pwminput.get_userData()',pro:'def get_userData()',cmt:'<p>Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>. This attribute is never touched directly by the API, and is at disposal of the caller to store a context.</p>',ret:'the object stored previously by the caller.'};
+doc['PwmInput']['isOnline']={syn:'Checks if the PWM input is currently reachable, without raising any error.',lib:'pwminput.isOnline()',pro:'def isOnline()',cmt:'<p>Checks if the PWM input is currently reachable, without raising any error. If there is a cached value for the PWM input in cache, that has not yet expired, the device is considered reachable. No exception is raised if there is an error while trying to contact the device hosting the PWM input.</p>',ret:'<tt>true</tt> if the PWM input can be reached, and <tt>false</tt> otherwise'};
+doc['PwmInput']['load']={syn:'Preloads the PWM input cache with a specified validity duration.',lib:'pwminput.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Preloads the PWM input cache with a specified validity duration. By default, whenever accessing a device, all function attributes are kept in cache for the standard duration (5 ms). This method can be used to temporarily mark the cache as valid for a longer period, in order to reduce network traffic for instance.</p>',par:{msValidity:'an integer corresponding to the validity attributed to the loaded function parameters, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['PwmInput']['loadAttribute']={syn:'Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.',lib:'pwminput.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'On failure, throws an exception or returns an empty string.'};
+doc['PwmInput']['loadCalibrationPoints']={syn:'Retrieves error correction data points previously entered using the method <tt>calibrateFromPoints</tt>.',lib:'pwminput.loadCalibrationPoints()',pro:'def loadCalibrationPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Retrieves error correction data points previously entered using the method <tt>calibrateFromPoints</tt>.</p>',par:{rawValues:'array of floating point numbers, that will be filled by the function with the raw sensor values for the correction points.',refValues:'array of floating point numbers, that will be filled by the function with the desired values for the correction points.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['PwmInput']['muteValueCallbacks']={syn:'Disable the propagation of every new advertised value to the parent hub.',lib:'pwminput.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>Disable the propagation of every new advertised value to the parent hub. You can use this function to save bandwidth and CPU on computers with limited resources, or to prevent unwanted invocations of the HTTP callback. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['PwmInput']['nextPwmInput']={syn:'Continues the enumeration of PWM inputs started using <tt>yFirstPwmInput()</tt>.',lib:'pwminput.nextPwmInput()',pro:'def nextPwmInput()',cmt:'<p>Continues the enumeration of PWM inputs started using <tt>yFirstPwmInput()</tt>.</p>',ret:'a pointer to a <tt>YPwmInput</tt> object, corresponding to a PWM input currently online, or a <tt>null</tt> pointer if there are no more PWM inputs to enumerate.'};
+doc['PwmInput']['registerTimedReportCallback']={syn:'Registers the callback function that is invoked on every periodic timed notification.',lib:'pwminput.registerTimedReportCallback()',pro:'def registerTimedReportCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every periodic timed notification. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and an YMeasure object describing the new advertised value.'}};
+doc['PwmInput']['registerValueCallback']={syn:'Registers the callback function that is invoked on every change of advertised value.',lib:'pwminput.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every change of advertised value. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and the character string describing the new advertised value.'}};
+doc['PwmInput']['resetCounter']={syn:'Returns the pulse counter value as well as its timer.',lib:'pwminput.resetCounter()',pro:'def resetCounter()',cmt:'<p>Returns the pulse counter value as well as its timer.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['PwmInput']['set_highestValue']={syn:'Changes the recorded maximal value observed.',lib:'pwminput.set_highestValue()',pro:'def set_highestValue(<span id=pn>newval</span>)',cmt:'<p>Changes the recorded maximal value observed.</p>',par:{newval:'a floating point number corresponding to the recorded maximal value observed'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['PwmInput']['set_logFrequency']={syn:'Changes the datalogger recording frequency for this function.',lib:'pwminput.set_logFrequency()',pro:'def set_logFrequency(<span id=pn>newval</span>)',cmt:'<p>Changes the datalogger recording frequency for this function. The frequency can be specified as samples per second, as sample per minute (for instance \x2215/m\x22) or in samples per hour (eg. \x224/h\x22). To disable recording for this function, use the value \x22OFF\x22.</p>',par:{newval:'a string corresponding to the datalogger recording frequency for this function'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['PwmInput']['set_logicalName']={syn:'Changes the logical name of the PWM input.',lib:'pwminput.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Changes the logical name of the PWM input. You can use <tt>yCheckLogicalName()</tt> prior to this call to make sure that your parameter is valid. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the logical name of the PWM input.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['PwmInput']['set_lowestValue']={syn:'Changes the recorded minimal value observed.',lib:'pwminput.set_lowestValue()',pro:'def set_lowestValue(<span id=pn>newval</span>)',cmt:'<p>Changes the recorded minimal value observed.</p>',par:{newval:'a floating point number corresponding to the recorded minimal value observed'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['PwmInput']['set_pwmReportMode']={syn:'Modifies the parameter type (frequency/duty cycle, pulse width, or edge count) returned by the get_currentValue function and callbacks.',lib:'pwminput.set_pwmReportMode()',pro:'def set_pwmReportMode(<span id=pn>newval</span>)',cmt:'<p>Modifies the parameter type (frequency/duty cycle, pulse width, or edge count) returned by the get_currentValue function and callbacks. The edge count value is limited to the 6 lowest digits. For values greater than one million, use get_pulseCounter().</p>',par:{newval:'a value among <tt>Y_PWMREPORTMODE_PWM_DUTYCYCLE</tt>, <tt>Y_PWMREPORTMODE_PWM_FREQUENCY</tt>, <tt>Y_PWMREPORTMODE_PWM_PULSEDURATION</tt> and <tt>Y_PWMREPORTMODE_PWM_EDGECOUNT</tt>'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['PwmInput']['set_reportFrequency']={syn:'Changes the timed value notification frequency for this function.',lib:'pwminput.set_reportFrequency()',pro:'def set_reportFrequency(<span id=pn>newval</span>)',cmt:'<p>Changes the timed value notification frequency for this function. The frequency can be specified as samples per second, as sample per minute (for instance \x2215/m\x22) or in samples per hour (eg. \x224/h\x22). To disable timed value notifications for this function, use the value \x22OFF\x22.</p>',par:{newval:'a string corresponding to the timed value notification frequency for this function'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['PwmInput']['set_resolution']={syn:'Changes the resolution of the measured physical values.',lib:'pwminput.set_resolution()',pro:'def set_resolution(<span id=pn>newval</span>)',cmt:'<p>Changes the resolution of the measured physical values. The resolution corresponds to the numerical precision when displaying value. It does not change the precision of the measure itself.</p>',par:{newval:'a floating point number corresponding to the resolution of the measured physical values'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['PwmInput']['set_userData']={syn:'Stores a user context provided as argument in the userData attribute of the function.',lib:'pwminput.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Stores a user context provided as argument in the userData attribute of the function. This attribute is never touched by the API, and is at disposal of the caller to store a context.</p>',par:{data:'any kind of object to be stored'}};
+doc['PwmInput']['startDataLogger']={syn:'Starts the data logger on the device.',lib:'pwminput.startDataLogger()',pro:'def startDataLogger()',cmt:'<p>Starts the data logger on the device. Note that the data logger will only save the measures on this sensor if the logFrequency is not set to \x22OFF\x22.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.'};
+doc['PwmInput']['stopDataLogger']={syn:'Stops the datalogger on the device.',lib:'pwminput.stopDataLogger()',pro:'def stopDataLogger()',cmt:'<p>Stops the datalogger on the device.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.'};
+doc['PwmInput']['unmuteValueCallbacks']={syn:'Re-enable the propagation of every new advertised value to the parent hub.',lib:'pwminput.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>Re-enable the propagation of every new advertised value to the parent hub. This function reverts the effect of a previous call to <tt>muteValueCallbacks()</tt>. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+//--- (end of generated code: PwmInput)
+//--- (generated code: SegmentedDisplay)
+doc['SegmentedDisplay']={'':{syn:'SegmentedDisplay function interface',inc:'from yocto_segmenteddisplay import *',cmt:'<p>The SegmentedDisplay class allows you to drive segmented displays.</p>'}};
+doc['SegmentedDisplay']['FindSegmentedDisplay']={syn:'Retrieves a segmented display for a given identifier.',lib:'YSegmentedDisplay.FindSegmentedDisplay()',pro:'def FindSegmentedDisplay(<span id=pn>func</span>)',cmt:'<p>Retrieves a segmented display for a given identifier. The identifier can be specified using several formats:<br> <ul> <li>FunctionLogicalName</li> <li>ModuleSerialNumber.FunctionIdentifier</li> <li>ModuleSerialNumber.FunctionLogicalName</li> <li>ModuleLogicalName.FunctionIdentifier</li> <li>ModuleLogicalName.FunctionLogicalName</li> </ul></p><p> This function does not require that the segmented displays is online at the time it is invoked. The returned object is nevertheless valid. Use the method <tt>YSegmentedDisplay.isOnline()</tt> to test if the segmented displays is indeed online at a given time. In case of ambiguity when looking for a segmented display by logical name, no error is notified: the first instance found is returned. The search is performed first by hardware name, then by logical name.</p>',par:{func:'a string that uniquely characterizes the segmented displays'},ret:'a <tt>YSegmentedDisplay</tt> object allowing you to drive the segmented displays.'};
+doc['SegmentedDisplay']['FirstSegmentedDisplay']={syn:'Starts the enumeration of segmented displays currently accessible.',lib:'YSegmentedDisplay.FirstSegmentedDisplay()',pro:'def FirstSegmentedDisplay()',cmt:'<p>Starts the enumeration of segmented displays currently accessible. Use the method <tt>YSegmentedDisplay.nextSegmentedDisplay()</tt> to iterate on next segmented displays.</p>',ret:'a pointer to a <tt>YSegmentedDisplay</tt> object, corresponding to the first segmented displays currently online, or a <tt>null</tt> pointer if there are none.'};
+doc['SegmentedDisplay']['clearCache']={syn:'Invalidates the cache.',lib:'segmenteddisplay.clearCache()',pro:'def clearCache()',cmt:'<p>Invalidates the cache. Invalidates the cache of the segmented displays attributes. Forces the next call to get_xxx() or loadxxx() to use values that come from the device.</p>'};
+doc['SegmentedDisplay']['describe']={syn:'Returns a short text that describes unambiguously the instance of the segmented displays in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'segmenteddisplay.describe()',pro:'def describe()',cmt:'<p>Returns a short text that describes unambiguously the instance of the segmented displays in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. More precisely, <tt>TYPE</tt> is the type of the function, <tt>NAME</tt> it the name used for the first access to the function, <tt>SERIAL</tt> is the serial number of the module if the module is connected or <tt>\x22unresolved\x22</tt>, and <tt>FUNCTIONID</tt> is the hardware identifier of the function if the module is connected. For example, this method returns <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> if the module is already connected or <tt>Relay(BadCustomeName.relay1)=unresolved</tt> if the module has not yet been connected. This method does not trigger any USB or TCP transaction and can therefore be used in a debugger.</p>',ret:'a string that describes the segmented displays (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['SegmentedDisplay']['get_advertisedValue']={syn:'Returns the current value of the segmented displays (no more than 6 characters).',lib:'segmenteddisplay.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Returns the current value of the segmented displays (no more than 6 characters).</p>',ret:'a string corresponding to the current value of the segmented displays (no more than 6 characters).',ext:'On failure, throws an exception or returns <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['SegmentedDisplay']['get_displayedText']={syn:'Returns the text currently displayed on the screen.',lib:'segmenteddisplay.get_displayedText()',pro:'def get_displayedText()',cmt:'<p>Returns the text currently displayed on the screen.</p>',ret:'a string corresponding to the text currently displayed on the screen',ext:'On failure, throws an exception or returns <tt>Y_DISPLAYEDTEXT_INVALID</tt>.'};
+doc['SegmentedDisplay']['get_errorMessage']={syn:'Returns the error message of the latest error with the segmented displays.',lib:'segmenteddisplay.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Returns the error message of the latest error with the segmented displays. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a string corresponding to the latest error message that occured while using the segmented displays object'};
+doc['SegmentedDisplay']['get_errorType']={syn:'Returns the numerical error code of the latest error with the segmented displays.',lib:'segmenteddisplay.get_errorType()',pro:'def get_errorType()',cmt:'<p>Returns the numerical error code of the latest error with the segmented displays. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a number corresponding to the code of the latest error that occurred while using the segmented displays object'};
+doc['SegmentedDisplay']['get_friendlyName']={syn:'Returns a global identifier of the segmented displays in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>.',lib:'segmenteddisplay.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Returns a global identifier of the segmented displays in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>. The returned string uses the logical names of the module and of the segmented displays if they are defined, otherwise the serial number of the module and the hardware identifier of the segmented displays (for example: <tt>MyCustomName.relay1</tt>)</p>',ret:'a string that uniquely identifies the segmented displays using logical names (ex: <tt>MyCustomName.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['SegmentedDisplay']['get_functionDescriptor']={syn:'Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function.',lib:'segmenteddisplay.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function. This identifier can be used to test if two instances of <tt>YFunction</tt> reference the same physical function on the same physical device.</p>',ret:'an identifier of type <tt>YFUN_DESCR</tt>.',ext:'If the function has never been contacted, the returned value is <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>.'};
+doc['SegmentedDisplay']['get_functionId']={syn:'Returns the hardware identifier of the segmented displays, without reference to the module.',lib:'segmenteddisplay.get_functionId()',pro:'def get_functionId()',cmt:'<p>Returns the hardware identifier of the segmented displays, without reference to the module. For example <tt>relay1</tt></p>',ret:'a string that identifies the segmented displays (ex: <tt>relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['SegmentedDisplay']['get_hardwareId']={syn:'Returns the unique hardware identifier of the segmented displays in the form <tt>SERIAL.FUNCTIONID</tt>.',lib:'segmenteddisplay.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Returns the unique hardware identifier of the segmented displays in the form <tt>SERIAL.FUNCTIONID</tt>. The unique hardware identifier is composed of the device serial number and of the hardware identifier of the segmented displays (for example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'a string that uniquely identifies the segmented displays (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['SegmentedDisplay']['get_logicalName']={syn:'Returns the logical name of the segmented displays.',lib:'segmenteddisplay.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Returns the logical name of the segmented displays.</p>',ret:'a string corresponding to the logical name of the segmented displays.',ext:'On failure, throws an exception or returns <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['SegmentedDisplay']['get_module']={syn:'Gets the <tt>YModule</tt> object for the device on which the function is located.',lib:'segmenteddisplay.get_module()',pro:'def get_module()',cmt:'<p>Gets the <tt>YModule</tt> object for the device on which the function is located. If the function cannot be located on any module, the returned instance of <tt>YModule</tt> is not shown as on-line.</p>',ret:'an instance of <tt>YModule</tt>'};
+doc['SegmentedDisplay']['get_userData']={syn:'Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>.',lib:'segmenteddisplay.get_userData()',pro:'def get_userData()',cmt:'<p>Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>. This attribute is never touched directly by the API, and is at disposal of the caller to store a context.</p>',ret:'the object stored previously by the caller.'};
+doc['SegmentedDisplay']['isOnline']={syn:'Checks if the segmented displays is currently reachable, without raising any error.',lib:'segmenteddisplay.isOnline()',pro:'def isOnline()',cmt:'<p>Checks if the segmented displays is currently reachable, without raising any error. If there is a cached value for the segmented displays in cache, that has not yet expired, the device is considered reachable. No exception is raised if there is an error while trying to contact the device hosting the segmented displays.</p>',ret:'<tt>true</tt> if the segmented displays can be reached, and <tt>false</tt> otherwise'};
+doc['SegmentedDisplay']['load']={syn:'Preloads the segmented displays cache with a specified validity duration.',lib:'segmenteddisplay.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Preloads the segmented displays cache with a specified validity duration. By default, whenever accessing a device, all function attributes are kept in cache for the standard duration (5 ms). This method can be used to temporarily mark the cache as valid for a longer period, in order to reduce network traffic for instance.</p>',par:{msValidity:'an integer corresponding to the validity attributed to the loaded function parameters, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['SegmentedDisplay']['loadAttribute']={syn:'Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.',lib:'segmenteddisplay.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'On failure, throws an exception or returns an empty string.'};
+doc['SegmentedDisplay']['muteValueCallbacks']={syn:'Disable the propagation of every new advertised value to the parent hub.',lib:'segmenteddisplay.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>Disable the propagation of every new advertised value to the parent hub. You can use this function to save bandwidth and CPU on computers with limited resources, or to prevent unwanted invocations of the HTTP callback. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['SegmentedDisplay']['nextSegmentedDisplay']={syn:'Continues the enumeration of segmented displays started using <tt>yFirstSegmentedDisplay()</tt>.',lib:'segmenteddisplay.nextSegmentedDisplay()',pro:'def nextSegmentedDisplay()',cmt:'<p>Continues the enumeration of segmented displays started using <tt>yFirstSegmentedDisplay()</tt>.</p>',ret:'a pointer to a <tt>YSegmentedDisplay</tt> object, corresponding to a segmented display currently online, or a <tt>null</tt> pointer if there are no more segmented displays to enumerate.'};
+doc['SegmentedDisplay']['registerValueCallback']={syn:'Registers the callback function that is invoked on every change of advertised value.',lib:'segmenteddisplay.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every change of advertised value. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and the character string describing the new advertised value.'}};
+doc['SegmentedDisplay']['set_displayedText']={syn:'Changes the text currently displayed on the screen.',lib:'segmenteddisplay.set_displayedText()',pro:'def set_displayedText(<span id=pn>newval</span>)',cmt:'<p>Changes the text currently displayed on the screen.</p>',par:{newval:'a string corresponding to the text currently displayed on the screen'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['SegmentedDisplay']['set_logicalName']={syn:'Changes the logical name of the segmented displays.',lib:'segmenteddisplay.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Changes the logical name of the segmented displays. You can use <tt>yCheckLogicalName()</tt> prior to this call to make sure that your parameter is valid. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the logical name of the segmented displays.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['SegmentedDisplay']['set_userData']={syn:'Stores a user context provided as argument in the userData attribute of the function.',lib:'segmenteddisplay.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Stores a user context provided as argument in the userData attribute of the function. This attribute is never touched by the API, and is at disposal of the caller to store a context.</p>',par:{data:'any kind of object to be stored'}};
+doc['SegmentedDisplay']['unmuteValueCallbacks']={syn:'Re-enable the propagation of every new advertised value to the parent hub.',lib:'segmenteddisplay.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>Re-enable the propagation of every new advertised value to the parent hub. This function reverts the effect of a previous call to <tt>muteValueCallbacks()</tt>. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+//--- (end of generated code: SegmentedDisplay)
+//--- (generated code: Buzzer)
+doc['Buzzer']={'':{syn:'Buzzer function interface',inc:'from yocto_buzzer import *',cmt:'<p>The Yoctopuce application programming interface allows you to choose the frequency and volume at which the buzzer must sound. You can also pre-program a play sequence.</p>'}};
+doc['Buzzer']['FindBuzzer']={syn:'Retrieves a buzzer for a given identifier.',lib:'YBuzzer.FindBuzzer()',pro:'def FindBuzzer(<span id=pn>func</span>)',cmt:'<p>Retrieves a buzzer for a given identifier. The identifier can be specified using several formats:<br> <ul> <li>FunctionLogicalName</li> <li>ModuleSerialNumber.FunctionIdentifier</li> <li>ModuleSerialNumber.FunctionLogicalName</li> <li>ModuleLogicalName.FunctionIdentifier</li> <li>ModuleLogicalName.FunctionLogicalName</li> </ul></p><p> This function does not require that the buzzer is online at the time it is invoked. The returned object is nevertheless valid. Use the method <tt>YBuzzer.isOnline()</tt> to test if the buzzer is indeed online at a given time. In case of ambiguity when looking for a buzzer by logical name, no error is notified: the first instance found is returned. The search is performed first by hardware name, then by logical name.</p>',par:{func:'a string that uniquely characterizes the buzzer'},ret:'a <tt>YBuzzer</tt> object allowing you to drive the buzzer.'};
+doc['Buzzer']['FirstBuzzer']={syn:'Starts the enumeration of buzzers currently accessible.',lib:'YBuzzer.FirstBuzzer()',pro:'def FirstBuzzer()',cmt:'<p>Starts the enumeration of buzzers currently accessible. Use the method <tt>YBuzzer.nextBuzzer()</tt> to iterate on next buzzers.</p>',ret:'a pointer to a <tt>YBuzzer</tt> object, corresponding to the first buzzer currently online, or a <tt>null</tt> pointer if there are none.'};
+doc['Buzzer']['addFreqMoveToPlaySeq']={syn:'Adds a new frequency transition to the playing sequence.',lib:'buzzer.addFreqMoveToPlaySeq()',pro:'def addFreqMoveToPlaySeq(<span id=pn>freq</span>, <span id=pn>msDelay</span>)',cmt:'<p>Adds a new frequency transition to the playing sequence.</p>',par:{freq:'desired frequency when the transition is completed, in Hz',msDelay:'duration of the frequency transition, in milliseconds.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds. On failure, throws an exception or returns a negative error code.'};
+doc['Buzzer']['addPulseToPlaySeq']={syn:'Adds a pulse to the playing sequence.',lib:'buzzer.addPulseToPlaySeq()',pro:'def addPulseToPlaySeq(<span id=pn>freq</span>, <span id=pn>msDuration</span>)',cmt:'<p>Adds a pulse to the playing sequence.</p>',par:{freq:'pulse frequency, in Hz',msDuration:'pulse duration, in milliseconds.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds. On failure, throws an exception or returns a negative error code.'};
+doc['Buzzer']['addVolMoveToPlaySeq']={syn:'Adds a new volume transition to the playing sequence.',lib:'buzzer.addVolMoveToPlaySeq()',pro:'def addVolMoveToPlaySeq(<span id=pn>volume</span>, <span id=pn>msDuration</span>)',cmt:'<p>Adds a new volume transition to the playing sequence. Frequency stays untouched: if frequency is at zero, the transition has no effect.</p>',par:{volume:'desired volume when the transition is completed, as a percentage.',msDuration:'duration of the volume transition, in milliseconds.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds. On failure, throws an exception or returns a negative error code.'};
+doc['Buzzer']['clearCache']={syn:'Invalidates the cache.',lib:'buzzer.clearCache()',pro:'def clearCache()',cmt:'<p>Invalidates the cache. Invalidates the cache of the buzzer attributes. Forces the next call to get_xxx() or loadxxx() to use values that come from the device.</p>'};
+doc['Buzzer']['describe']={syn:'Returns a short text that describes unambiguously the instance of the buzzer in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'buzzer.describe()',pro:'def describe()',cmt:'<p>Returns a short text that describes unambiguously the instance of the buzzer in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. More precisely, <tt>TYPE</tt> is the type of the function, <tt>NAME</tt> it the name used for the first access to the function, <tt>SERIAL</tt> is the serial number of the module if the module is connected or <tt>\x22unresolved\x22</tt>, and <tt>FUNCTIONID</tt> is the hardware identifier of the function if the module is connected. For example, this method returns <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> if the module is already connected or <tt>Relay(BadCustomeName.relay1)=unresolved</tt> if the module has not yet been connected. This method does not trigger any USB or TCP transaction and can therefore be used in a debugger.</p>',ret:'a string that describes the buzzer (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['Buzzer']['freqMove']={syn:'Makes the buzzer frequency change over a period of time.',lib:'buzzer.freqMove()',pro:'def freqMove(<span id=pn>frequency</span>, <span id=pn>duration</span>)',cmt:'<p>Makes the buzzer frequency change over a period of time.</p>',par:{frequency:'frequency to reach, in hertz. A frequency under 25Hz stops the buzzer.',duration:'pulse duration in millseconds'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Buzzer']['get_advertisedValue']={syn:'Returns the current value of the buzzer (no more than 6 characters).',lib:'buzzer.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Returns the current value of the buzzer (no more than 6 characters).</p>',ret:'a string corresponding to the current value of the buzzer (no more than 6 characters).',ext:'On failure, throws an exception or returns <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['Buzzer']['get_errorMessage']={syn:'Returns the error message of the latest error with the buzzer.',lib:'buzzer.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Returns the error message of the latest error with the buzzer. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a string corresponding to the latest error message that occured while using the buzzer object'};
+doc['Buzzer']['get_errorType']={syn:'Returns the numerical error code of the latest error with the buzzer.',lib:'buzzer.get_errorType()',pro:'def get_errorType()',cmt:'<p>Returns the numerical error code of the latest error with the buzzer. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a number corresponding to the code of the latest error that occurred while using the buzzer object'};
+doc['Buzzer']['get_frequency']={syn:'Returns the frequency of the signal sent to the buzzer/speaker.',lib:'buzzer.get_frequency()',pro:'def get_frequency()',cmt:'<p>Returns the frequency of the signal sent to the buzzer/speaker.</p>',ret:'a floating point number corresponding to the frequency of the signal sent to the buzzer/speaker',ext:'On failure, throws an exception or returns <tt>Y_FREQUENCY_INVALID</tt>.'};
+doc['Buzzer']['get_friendlyName']={syn:'Returns a global identifier of the buzzer in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>.',lib:'buzzer.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Returns a global identifier of the buzzer in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>. The returned string uses the logical names of the module and of the buzzer if they are defined, otherwise the serial number of the module and the hardware identifier of the buzzer (for example: <tt>MyCustomName.relay1</tt>)</p>',ret:'a string that uniquely identifies the buzzer using logical names (ex: <tt>MyCustomName.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['Buzzer']['get_functionDescriptor']={syn:'Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function.',lib:'buzzer.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function. This identifier can be used to test if two instances of <tt>YFunction</tt> reference the same physical function on the same physical device.</p>',ret:'an identifier of type <tt>YFUN_DESCR</tt>.',ext:'If the function has never been contacted, the returned value is <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>.'};
+doc['Buzzer']['get_functionId']={syn:'Returns the hardware identifier of the buzzer, without reference to the module.',lib:'buzzer.get_functionId()',pro:'def get_functionId()',cmt:'<p>Returns the hardware identifier of the buzzer, without reference to the module. For example <tt>relay1</tt></p>',ret:'a string that identifies the buzzer (ex: <tt>relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['Buzzer']['get_hardwareId']={syn:'Returns the unique hardware identifier of the buzzer in the form <tt>SERIAL.FUNCTIONID</tt>.',lib:'buzzer.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Returns the unique hardware identifier of the buzzer in the form <tt>SERIAL.FUNCTIONID</tt>. The unique hardware identifier is composed of the device serial number and of the hardware identifier of the buzzer (for example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'a string that uniquely identifies the buzzer (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['Buzzer']['get_logicalName']={syn:'Returns the logical name of the buzzer.',lib:'buzzer.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Returns the logical name of the buzzer.</p>',ret:'a string corresponding to the logical name of the buzzer.',ext:'On failure, throws an exception or returns <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['Buzzer']['get_module']={syn:'Gets the <tt>YModule</tt> object for the device on which the function is located.',lib:'buzzer.get_module()',pro:'def get_module()',cmt:'<p>Gets the <tt>YModule</tt> object for the device on which the function is located. If the function cannot be located on any module, the returned instance of <tt>YModule</tt> is not shown as on-line.</p>',ret:'an instance of <tt>YModule</tt>'};
+doc['Buzzer']['get_playSeqMaxSize']={syn:'Returns the maximum length of the playing sequence.',lib:'buzzer.get_playSeqMaxSize()',pro:'def get_playSeqMaxSize()',cmt:'<p>Returns the maximum length of the playing sequence.</p>',ret:'an integer corresponding to the maximum length of the playing sequence',ext:'On failure, throws an exception or returns <tt>Y_PLAYSEQMAXSIZE_INVALID</tt>.'};
+doc['Buzzer']['get_playSeqSignature']={syn:'Returns the playing sequence signature.',lib:'buzzer.get_playSeqSignature()',pro:'def get_playSeqSignature()',cmt:'<p>Returns the playing sequence signature. As playing sequences cannot be read from the device, this can be used to detect if a specific playing sequence is already programmed.</p>',ret:'an integer corresponding to the playing sequence signature',ext:'On failure, throws an exception or returns <tt>Y_PLAYSEQSIGNATURE_INVALID</tt>.'};
+doc['Buzzer']['get_playSeqSize']={syn:'Returns the current length of the playing sequence.',lib:'buzzer.get_playSeqSize()',pro:'def get_playSeqSize()',cmt:'<p>Returns the current length of the playing sequence.</p>',ret:'an integer corresponding to the current length of the playing sequence',ext:'On failure, throws an exception or returns <tt>Y_PLAYSEQSIZE_INVALID</tt>.'};
+doc['Buzzer']['get_userData']={syn:'Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>.',lib:'buzzer.get_userData()',pro:'def get_userData()',cmt:'<p>Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>. This attribute is never touched directly by the API, and is at disposal of the caller to store a context.</p>',ret:'the object stored previously by the caller.'};
+doc['Buzzer']['get_volume']={syn:'Returns the volume of the signal sent to the buzzer/speaker.',lib:'buzzer.get_volume()',pro:'def get_volume()',cmt:'<p>Returns the volume of the signal sent to the buzzer/speaker.</p>',ret:'an integer corresponding to the volume of the signal sent to the buzzer/speaker',ext:'On failure, throws an exception or returns <tt>Y_VOLUME_INVALID</tt>.'};
+doc['Buzzer']['isOnline']={syn:'Checks if the buzzer is currently reachable, without raising any error.',lib:'buzzer.isOnline()',pro:'def isOnline()',cmt:'<p>Checks if the buzzer is currently reachable, without raising any error. If there is a cached value for the buzzer in cache, that has not yet expired, the device is considered reachable. No exception is raised if there is an error while trying to contact the device hosting the buzzer.</p>',ret:'<tt>true</tt> if the buzzer can be reached, and <tt>false</tt> otherwise'};
+doc['Buzzer']['load']={syn:'Preloads the buzzer cache with a specified validity duration.',lib:'buzzer.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Preloads the buzzer cache with a specified validity duration. By default, whenever accessing a device, all function attributes are kept in cache for the standard duration (5 ms). This method can be used to temporarily mark the cache as valid for a longer period, in order to reduce network traffic for instance.</p>',par:{msValidity:'an integer corresponding to the validity attributed to the loaded function parameters, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Buzzer']['loadAttribute']={syn:'Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.',lib:'buzzer.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'On failure, throws an exception or returns an empty string.'};
+doc['Buzzer']['muteValueCallbacks']={syn:'Disable the propagation of every new advertised value to the parent hub.',lib:'buzzer.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>Disable the propagation of every new advertised value to the parent hub. You can use this function to save bandwidth and CPU on computers with limited resources, or to prevent unwanted invocations of the HTTP callback. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Buzzer']['nextBuzzer']={syn:'Continues the enumeration of buzzers started using <tt>yFirstBuzzer()</tt>.',lib:'buzzer.nextBuzzer()',pro:'def nextBuzzer()',cmt:'<p>Continues the enumeration of buzzers started using <tt>yFirstBuzzer()</tt>.</p>',ret:'a pointer to a <tt>YBuzzer</tt> object, corresponding to a buzzer currently online, or a <tt>null</tt> pointer if there are no more buzzers to enumerate.'};
+doc['Buzzer']['pulse']={syn:'Activates the buzzer for a short duration.',lib:'buzzer.pulse()',pro:'def pulse(<span id=pn>frequency</span>, <span id=pn>duration</span>)',cmt:'<p>Activates the buzzer for a short duration.</p>',par:{frequency:'pulse frequency, in hertz',duration:'pulse duration in millseconds'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Buzzer']['registerValueCallback']={syn:'Registers the callback function that is invoked on every change of advertised value.',lib:'buzzer.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every change of advertised value. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and the character string describing the new advertised value.'}};
+doc['Buzzer']['resetPlaySeq']={syn:'Resets the preprogrammed playing sequence and sets the frequency to zero.',lib:'buzzer.resetPlaySeq()',pro:'def resetPlaySeq()',cmt:'<p>Resets the preprogrammed playing sequence and sets the frequency to zero.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds. On failure, throws an exception or returns a negative error code.'};
+doc['Buzzer']['set_frequency']={syn:'Changes the frequency of the signal sent to the buzzer.',lib:'buzzer.set_frequency()',pro:'def set_frequency(<span id=pn>newval</span>)',cmt:'<p>Changes the frequency of the signal sent to the buzzer. A zero value stops the buzzer.</p>',par:{newval:'a floating point number corresponding to the frequency of the signal sent to the buzzer'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Buzzer']['set_logicalName']={syn:'Changes the logical name of the buzzer.',lib:'buzzer.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Changes the logical name of the buzzer. You can use <tt>yCheckLogicalName()</tt> prior to this call to make sure that your parameter is valid. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the logical name of the buzzer.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Buzzer']['set_userData']={syn:'Stores a user context provided as argument in the userData attribute of the function.',lib:'buzzer.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Stores a user context provided as argument in the userData attribute of the function. This attribute is never touched by the API, and is at disposal of the caller to store a context.</p>',par:{data:'any kind of object to be stored'}};
+doc['Buzzer']['set_volume']={syn:'Changes the volume of the signal sent to the buzzer/speaker.',lib:'buzzer.set_volume()',pro:'def set_volume(<span id=pn>newval</span>)',cmt:'<p>Changes the volume of the signal sent to the buzzer/speaker.</p>',par:{newval:'an integer corresponding to the volume of the signal sent to the buzzer/speaker'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Buzzer']['startPlaySeq']={syn:'Starts the preprogrammed playing sequence.',lib:'buzzer.startPlaySeq()',pro:'def startPlaySeq()',cmt:'<p>Starts the preprogrammed playing sequence. The sequence runs in loop until it is stopped by stopPlaySeq or an explicit change.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds. On failure, throws an exception or returns a negative error code.'};
+doc['Buzzer']['stopPlaySeq']={syn:'Stops the preprogrammed playing sequence and sets the frequency to zero.',lib:'buzzer.stopPlaySeq()',pro:'def stopPlaySeq()',cmt:'<p>Stops the preprogrammed playing sequence and sets the frequency to zero.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds. On failure, throws an exception or returns a negative error code.'};
+doc['Buzzer']['unmuteValueCallbacks']={syn:'Re-enable the propagation of every new advertised value to the parent hub.',lib:'buzzer.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>Re-enable the propagation of every new advertised value to the parent hub. This function reverts the effect of a previous call to <tt>muteValueCallbacks()</tt>. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Buzzer']['volumeMove']={syn:'Makes the buzzer volume change over a period of time, frequency stays untouched.',lib:'buzzer.volumeMove()',pro:'def volumeMove(<span id=pn>volume</span>, <span id=pn>duration</span>)',cmt:'<p>Makes the buzzer volume change over a period of time, frequency stays untouched.</p>',par:{volume:'volume to reach in %',duration:'change duration in millseconds'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+//--- (end of generated code: Buzzer)
+//--- (generated code: FirmwareUpdate)
+doc['FirmwareUpdate']={'':{syn:'Control interface for the firmware update process',inc:'from yocto_api import *',cmt:'<p>The YFirmwareUpdate class let you control the firmware update of a Yoctopuce module. This class should not be instantiate directly, instead the method <tt>updateFirmware</tt> should be called to get an instance of YFirmwareUpdate.</p>'}};
+doc['FirmwareUpdate']['CheckFirmware']={syn:'Test if the byn file is valid for this module.',lib:'YFirmwareUpdate.CheckFirmware()',pro:'def CheckFirmware(<span id=pn>serial</span>, <span id=pn>path</span>, <span id=pn>minrelease</span>)',cmt:'<p>Test if the byn file is valid for this module. It is possible to pass a directory instead of a file. In that case, this method returns the path of the most recent appropriate byn file. This method will ignore any firmware older than minrelease.</p>',par:{serial:'the serial number of the module to update',path:'the path of a byn file or a directory that contains byn files',minrelease:'a positive integer'},ret:': the path of the byn file to use, or an empty string if no byn files matches the requirement',ext:'On failure, returns a string that starts with \x22error:\x22.'};
+doc['FirmwareUpdate']['GetAllBootLoaders']={syn:'Returns a list of all the modules in \x22firmware update\x22 mode.',lib:'YFirmwareUpdate.GetAllBootLoaders()',pro:'def GetAllBootLoaders()',cmt:'<p>Returns a list of all the modules in \x22firmware update\x22 mode. Only devices connected over USB are listed. For devices connected to a YoctoHub, you must connect yourself to the YoctoHub web interface.</p>',ret:'an array of strings containing the serial numbers of devices in \x22firmware update\x22 mode.'};
+doc['FirmwareUpdate']['get_progress']={syn:'Returns the progress of the firmware update, on a scale from 0 to 100.',lib:'firmwareupdate.get_progress()',pro:'def get_progress()',cmt:'<p>Returns the progress of the firmware update, on a scale from 0 to 100. When the object is instantiated, the progress is zero. The value is updated during the firmware update process until the value of 100 is reached. The 100 value means that the firmware update was completed successfully. If an error occurs during the firmware update, a negative value is returned, and the error message can be retrieved with <tt>get_progressMessage</tt>.</p>',ret:'an integer in the range 0 to 100 (percentage of completion) or a negative error code in case of failure.'};
+doc['FirmwareUpdate']['get_progressMessage']={syn:'Returns the last progress message of the firmware update process.',lib:'firmwareupdate.get_progressMessage()',pro:'def get_progressMessage()',cmt:'<p>Returns the last progress message of the firmware update process. If an error occurs during the firmware update process, the error message is returned</p>',ret:'a string with the latest progress message, or the error message.'};
+doc['FirmwareUpdate']['startUpdate']={syn:'Starts the firmware update process.',lib:'firmwareupdate.startUpdate()',pro:'def startUpdate()',cmt:'<p>Starts the firmware update process. This method starts the firmware update process in background. This method returns immediately. You can monitor the progress of the firmware update with the <tt>get_progress()</tt> and <tt>get_progressMessage()</tt> methods.</p>',ret:'an integer in the range 0 to 100 (percentage of completion), or a negative error code in case of failure.',ext:'On failure returns a negative error code.'};
+//--- (end of generated code: FirmwareUpdate)
+//--- (generated code: Gps)
+doc['Gps']={'':{syn:'GPS function interface',inc:'from yocto_gps import *',cmt:'<p>The Gps function allows you to extract positionning data from the GPS device. This class can provides complete positionning information: However, if you whish to define callbacks on position changes, you should use the YLatitude et YLongitude classes.</p>'}};
+doc['Gps']['FindGps']={syn:'Retrieves a GPS for a given identifier.',lib:'YGps.FindGps()',pro:'def FindGps(<span id=pn>func</span>)',cmt:'<p>Retrieves a GPS for a given identifier. The identifier can be specified using several formats:<br> <ul> <li>FunctionLogicalName</li> <li>ModuleSerialNumber.FunctionIdentifier</li> <li>ModuleSerialNumber.FunctionLogicalName</li> <li>ModuleLogicalName.FunctionIdentifier</li> <li>ModuleLogicalName.FunctionLogicalName</li> </ul></p><p> This function does not require that the GPS is online at the time it is invoked. The returned object is nevertheless valid. Use the method <tt>YGps.isOnline()</tt> to test if the GPS is indeed online at a given time. In case of ambiguity when looking for a GPS by logical name, no error is notified: the first instance found is returned. The search is performed first by hardware name, then by logical name.</p>',par:{func:'a string that uniquely characterizes the GPS'},ret:'a <tt>YGps</tt> object allowing you to drive the GPS.'};
+doc['Gps']['FirstGps']={syn:'Starts the enumeration of GPS currently accessible.',lib:'YGps.FirstGps()',pro:'def FirstGps()',cmt:'<p>Starts the enumeration of GPS currently accessible. Use the method <tt>YGps.nextGps()</tt> to iterate on next GPS.</p>',ret:'a pointer to a <tt>YGps</tt> object, corresponding to the first GPS currently online, or a <tt>null</tt> pointer if there are none.'};
+doc['Gps']['clearCache']={syn:'Invalidates the cache.',lib:'gps.clearCache()',pro:'def clearCache()',cmt:'<p>Invalidates the cache. Invalidates the cache of the GPS attributes. Forces the next call to get_xxx() or loadxxx() to use values that come from the device.</p>'};
+doc['Gps']['describe']={syn:'Returns a short text that describes unambiguously the instance of the GPS in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'gps.describe()',pro:'def describe()',cmt:'<p>Returns a short text that describes unambiguously the instance of the GPS in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. More precisely, <tt>TYPE</tt> is the type of the function, <tt>NAME</tt> it the name used for the first access to the function, <tt>SERIAL</tt> is the serial number of the module if the module is connected or <tt>\x22unresolved\x22</tt>, and <tt>FUNCTIONID</tt> is the hardware identifier of the function if the module is connected. For example, this method returns <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> if the module is already connected or <tt>Relay(BadCustomeName.relay1)=unresolved</tt> if the module has not yet been connected. This method does not trigger any USB or TCP transaction and can therefore be used in a debugger.</p>',ret:'a string that describes the GPS (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['Gps']['get_advertisedValue']={syn:'Returns the current value of the GPS (no more than 6 characters).',lib:'gps.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Returns the current value of the GPS (no more than 6 characters).</p>',ret:'a string corresponding to the current value of the GPS (no more than 6 characters).',ext:'On failure, throws an exception or returns <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['Gps']['get_altitude']={syn:'Returns the current altitude.',lib:'gps.get_altitude()',pro:'def get_altitude()',cmt:'<p>Returns the current altitude. Beware: GPS technology is very inaccurate regarding altitude.</p>',ret:'a floating point number corresponding to the current altitude',ext:'On failure, throws an exception or returns <tt>Y_ALTITUDE_INVALID</tt>.'};
+doc['Gps']['get_coordSystem']={syn:'Returns the representation system used for positioning data.',lib:'gps.get_coordSystem()',pro:'def get_coordSystem()',cmt:'<p>Returns the representation system used for positioning data.</p>',ret:'a value among <tt>Y_COORDSYSTEM_GPS_DMS</tt>, <tt>Y_COORDSYSTEM_GPS_DM</tt> and <tt>Y_COORDSYSTEM_GPS_D</tt> corresponding to the representation system used for positioning data',ext:'On failure, throws an exception or returns <tt>Y_COORDSYSTEM_INVALID</tt>.'};
+doc['Gps']['get_dateTime']={syn:'Returns the current time in the form \x22YYYY/MM/DD hh:mm:ss\x22.',lib:'gps.get_dateTime()',pro:'def get_dateTime()',cmt:'<p>Returns the current time in the form \x22YYYY/MM/DD hh:mm:ss\x22.</p>',ret:'a string corresponding to the current time in the form \x22YYYY/MM/DD hh:mm:ss\x22',ext:'On failure, throws an exception or returns <tt>Y_DATETIME_INVALID</tt>.'};
+doc['Gps']['get_dilution']={syn:'Returns the current horizontal dilution of precision, the smaller that number is, the better .',lib:'gps.get_dilution()',pro:'def get_dilution()',cmt:'<p>Returns the current horizontal dilution of precision, the smaller that number is, the better .</p>',ret:'a floating point number corresponding to the current horizontal dilution of precision, the smaller that number is, the better',ext:'On failure, throws an exception or returns <tt>Y_DILUTION_INVALID</tt>.'};
+doc['Gps']['get_direction']={syn:'Returns the current move bearing in degrees, zero is the true (geographic) north.',lib:'gps.get_direction()',pro:'def get_direction()',cmt:'<p>Returns the current move bearing in degrees, zero is the true (geographic) north.</p>',ret:'a floating point number corresponding to the current move bearing in degrees, zero is the true (geographic) north',ext:'On failure, throws an exception or returns <tt>Y_DIRECTION_INVALID</tt>.'};
+doc['Gps']['get_errorMessage']={syn:'Returns the error message of the latest error with the GPS.',lib:'gps.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Returns the error message of the latest error with the GPS. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a string corresponding to the latest error message that occured while using the GPS object'};
+doc['Gps']['get_errorType']={syn:'Returns the numerical error code of the latest error with the GPS.',lib:'gps.get_errorType()',pro:'def get_errorType()',cmt:'<p>Returns the numerical error code of the latest error with the GPS. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a number corresponding to the code of the latest error that occurred while using the GPS object'};
+doc['Gps']['get_friendlyName']={syn:'Returns a global identifier of the GPS in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>.',lib:'gps.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Returns a global identifier of the GPS in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>. The returned string uses the logical names of the module and of the GPS if they are defined, otherwise the serial number of the module and the hardware identifier of the GPS (for example: <tt>MyCustomName.relay1</tt>)</p>',ret:'a string that uniquely identifies the GPS using logical names (ex: <tt>MyCustomName.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['Gps']['get_functionDescriptor']={syn:'Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function.',lib:'gps.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function. This identifier can be used to test if two instances of <tt>YFunction</tt> reference the same physical function on the same physical device.</p>',ret:'an identifier of type <tt>YFUN_DESCR</tt>.',ext:'If the function has never been contacted, the returned value is <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>.'};
+doc['Gps']['get_functionId']={syn:'Returns the hardware identifier of the GPS, without reference to the module.',lib:'gps.get_functionId()',pro:'def get_functionId()',cmt:'<p>Returns the hardware identifier of the GPS, without reference to the module. For example <tt>relay1</tt></p>',ret:'a string that identifies the GPS (ex: <tt>relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['Gps']['get_groundSpeed']={syn:'Returns the current ground speed in Km/h.',lib:'gps.get_groundSpeed()',pro:'def get_groundSpeed()',cmt:'<p>Returns the current ground speed in Km/h.</p>',ret:'a floating point number corresponding to the current ground speed in Km/h',ext:'On failure, throws an exception or returns <tt>Y_GROUNDSPEED_INVALID</tt>.'};
+doc['Gps']['get_hardwareId']={syn:'Returns the unique hardware identifier of the GPS in the form <tt>SERIAL.FUNCTIONID</tt>.',lib:'gps.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Returns the unique hardware identifier of the GPS in the form <tt>SERIAL.FUNCTIONID</tt>. The unique hardware identifier is composed of the device serial number and of the hardware identifier of the GPS (for example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'a string that uniquely identifies the GPS (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['Gps']['get_isFixed']={syn:'Returns TRUE if the receiver has found enough satellites to work.',lib:'gps.get_isFixed()',pro:'def get_isFixed()',cmt:'<p>Returns TRUE if the receiver has found enough satellites to work.</p>',ret:'either <tt>Y_ISFIXED_FALSE</tt> or <tt>Y_ISFIXED_TRUE</tt>, according to TRUE if the receiver has found enough satellites to work',ext:'On failure, throws an exception or returns <tt>Y_ISFIXED_INVALID</tt>.'};
+doc['Gps']['get_latitude']={syn:'Returns the current latitude.',lib:'gps.get_latitude()',pro:'def get_latitude()',cmt:'<p>Returns the current latitude.</p>',ret:'a string corresponding to the current latitude',ext:'On failure, throws an exception or returns <tt>Y_LATITUDE_INVALID</tt>.'};
+doc['Gps']['get_logicalName']={syn:'Returns the logical name of the GPS.',lib:'gps.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Returns the logical name of the GPS.</p>',ret:'a string corresponding to the logical name of the GPS.',ext:'On failure, throws an exception or returns <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['Gps']['get_longitude']={syn:'Returns the current longitude.',lib:'gps.get_longitude()',pro:'def get_longitude()',cmt:'<p>Returns the current longitude.</p>',ret:'a string corresponding to the current longitude',ext:'On failure, throws an exception or returns <tt>Y_LONGITUDE_INVALID</tt>.'};
+doc['Gps']['get_module']={syn:'Gets the <tt>YModule</tt> object for the device on which the function is located.',lib:'gps.get_module()',pro:'def get_module()',cmt:'<p>Gets the <tt>YModule</tt> object for the device on which the function is located. If the function cannot be located on any module, the returned instance of <tt>YModule</tt> is not shown as on-line.</p>',ret:'an instance of <tt>YModule</tt>'};
+doc['Gps']['get_satCount']={syn:'Returns the count of visible satellites.',lib:'gps.get_satCount()',pro:'def get_satCount()',cmt:'<p>Returns the count of visible satellites.</p>',ret:'an integer corresponding to the count of visible satellites',ext:'On failure, throws an exception or returns <tt>Y_SATCOUNT_INVALID</tt>.'};
+doc['Gps']['get_unixTime']={syn:'Returns the current time in Unix format (number of seconds elapsed since Jan 1st, 1970).',lib:'gps.get_unixTime()',pro:'def get_unixTime()',cmt:'<p>Returns the current time in Unix format (number of seconds elapsed since Jan 1st, 1970).</p>',ret:'an integer corresponding to the current time in Unix format (number of seconds elapsed since Jan 1st, 1970)',ext:'On failure, throws an exception or returns <tt>Y_UNIXTIME_INVALID</tt>.'};
+doc['Gps']['get_userData']={syn:'Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>.',lib:'gps.get_userData()',pro:'def get_userData()',cmt:'<p>Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>. This attribute is never touched directly by the API, and is at disposal of the caller to store a context.</p>',ret:'the object stored previously by the caller.'};
+doc['Gps']['get_utcOffset']={syn:'Returns the number of seconds between current time and UTC time (time zone).',lib:'gps.get_utcOffset()',pro:'def get_utcOffset()',cmt:'<p>Returns the number of seconds between current time and UTC time (time zone).</p>',ret:'an integer corresponding to the number of seconds between current time and UTC time (time zone)',ext:'On failure, throws an exception or returns <tt>Y_UTCOFFSET_INVALID</tt>.'};
+doc['Gps']['isOnline']={syn:'Checks if the GPS is currently reachable, without raising any error.',lib:'gps.isOnline()',pro:'def isOnline()',cmt:'<p>Checks if the GPS is currently reachable, without raising any error. If there is a cached value for the GPS in cache, that has not yet expired, the device is considered reachable. No exception is raised if there is an error while trying to contact the device hosting the GPS.</p>',ret:'<tt>true</tt> if the GPS can be reached, and <tt>false</tt> otherwise'};
+doc['Gps']['load']={syn:'Preloads the GPS cache with a specified validity duration.',lib:'gps.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Preloads the GPS cache with a specified validity duration. By default, whenever accessing a device, all function attributes are kept in cache for the standard duration (5 ms). This method can be used to temporarily mark the cache as valid for a longer period, in order to reduce network traffic for instance.</p>',par:{msValidity:'an integer corresponding to the validity attributed to the loaded function parameters, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Gps']['loadAttribute']={syn:'Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.',lib:'gps.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'On failure, throws an exception or returns an empty string.'};
+doc['Gps']['muteValueCallbacks']={syn:'Disable the propagation of every new advertised value to the parent hub.',lib:'gps.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>Disable the propagation of every new advertised value to the parent hub. You can use this function to save bandwidth and CPU on computers with limited resources, or to prevent unwanted invocations of the HTTP callback. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Gps']['nextGps']={syn:'Continues the enumeration of GPS started using <tt>yFirstGps()</tt>.',lib:'gps.nextGps()',pro:'def nextGps()',cmt:'<p>Continues the enumeration of GPS started using <tt>yFirstGps()</tt>.</p>',ret:'a pointer to a <tt>YGps</tt> object, corresponding to a GPS currently online, or a <tt>null</tt> pointer if there are no more GPS to enumerate.'};
+doc['Gps']['registerValueCallback']={syn:'Registers the callback function that is invoked on every change of advertised value.',lib:'gps.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every change of advertised value. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and the character string describing the new advertised value.'}};
+doc['Gps']['set_coordSystem']={syn:'Changes the representation system used for positioning data.',lib:'gps.set_coordSystem()',pro:'def set_coordSystem(<span id=pn>newval</span>)',cmt:'<p>Changes the representation system used for positioning data.</p>',par:{newval:'a value among <tt>Y_COORDSYSTEM_GPS_DMS</tt>, <tt>Y_COORDSYSTEM_GPS_DM</tt> and <tt>Y_COORDSYSTEM_GPS_D</tt> corresponding to the representation system used for positioning data'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Gps']['set_logicalName']={syn:'Changes the logical name of the GPS.',lib:'gps.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Changes the logical name of the GPS. You can use <tt>yCheckLogicalName()</tt> prior to this call to make sure that your parameter is valid. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the logical name of the GPS.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Gps']['set_userData']={syn:'Stores a user context provided as argument in the userData attribute of the function.',lib:'gps.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Stores a user context provided as argument in the userData attribute of the function. This attribute is never touched by the API, and is at disposal of the caller to store a context.</p>',par:{data:'any kind of object to be stored'}};
+doc['Gps']['set_utcOffset']={syn:'Changes the number of seconds between current time and UTC time (time zone).',lib:'gps.set_utcOffset()',pro:'def set_utcOffset(<span id=pn>newval</span>)',cmt:'<p>Changes the number of seconds between current time and UTC time (time zone). The timezone is automatically rounded to the nearest multiple of 15 minutes. If current UTC time is known, the current time is automatically be updated according to the selected time zone.</p>',par:{newval:'an integer corresponding to the number of seconds between current time and UTC time (time zone)'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Gps']['unmuteValueCallbacks']={syn:'Re-enable the propagation of every new advertised value to the parent hub.',lib:'gps.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>Re-enable the propagation of every new advertised value to the parent hub. This function reverts the effect of a previous call to <tt>muteValueCallbacks()</tt>. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+//--- (end of generated code: Gps)
+//--- (generated code: Latitude)
+doc['Latitude']={'':{syn:'Latitude function interface',inc:'from yocto_latitude import *',cmt:'<p>The Yoctopuce class YLatitude allows you to read the latitude from Yoctopuce geolocalization sensors. It inherits from the YSensor class the core functions to read measurements, register callback functions, access the autonomous datalogger.</p>'}};
+doc['Latitude']['FindLatitude']={syn:'Retrieves a latitude sensor for a given identifier.',lib:'YLatitude.FindLatitude()',pro:'def FindLatitude(<span id=pn>func</span>)',cmt:'<p>Retrieves a latitude sensor for a given identifier. The identifier can be specified using several formats:<br> <ul> <li>FunctionLogicalName</li> <li>ModuleSerialNumber.FunctionIdentifier</li> <li>ModuleSerialNumber.FunctionLogicalName</li> <li>ModuleLogicalName.FunctionIdentifier</li> <li>ModuleLogicalName.FunctionLogicalName</li> </ul></p><p> This function does not require that the latitude sensor is online at the time it is invoked. The returned object is nevertheless valid. Use the method <tt>YLatitude.isOnline()</tt> to test if the latitude sensor is indeed online at a given time. In case of ambiguity when looking for a latitude sensor by logical name, no error is notified: the first instance found is returned. The search is performed first by hardware name, then by logical name.</p>',par:{func:'a string that uniquely characterizes the latitude sensor'},ret:'a <tt>YLatitude</tt> object allowing you to drive the latitude sensor.'};
+doc['Latitude']['FirstLatitude']={syn:'Starts the enumeration of latitude sensors currently accessible.',lib:'YLatitude.FirstLatitude()',pro:'def FirstLatitude()',cmt:'<p>Starts the enumeration of latitude sensors currently accessible. Use the method <tt>YLatitude.nextLatitude()</tt> to iterate on next latitude sensors.</p>',ret:'a pointer to a <tt>YLatitude</tt> object, corresponding to the first latitude sensor currently online, or a <tt>null</tt> pointer if there are none.'};
+doc['Latitude']['calibrateFromPoints']={syn:'Configures error correction data points, in particular to compensate for a possible perturbation of the measure caused by an enclosure.',lib:'latitude.calibrateFromPoints()',pro:'def calibrateFromPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Configures error correction data points, in particular to compensate for a possible perturbation of the measure caused by an enclosure. It is possible to configure up to five correction points. Correction points must be provided in ascending order, and be in the range of the sensor. The device will automatically perform a linear interpolation of the error correction between specified points. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p><p> For more information on advanced capabilities to refine the calibration of sensors, please contact support@yoctopuce.com.</p>',par:{rawValues:'array of floating point numbers, corresponding to the raw values returned by the sensor for the correction points.',refValues:'array of floating point numbers, corresponding to the corrected values for the correction points.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Latitude']['clearCache']={syn:'Invalidates the cache.',lib:'latitude.clearCache()',pro:'def clearCache()',cmt:'<p>Invalidates the cache. Invalidates the cache of the latitude sensor attributes. Forces the next call to get_xxx() or loadxxx() to use values that come from the device.</p>'};
+doc['Latitude']['describe']={syn:'Returns a short text that describes unambiguously the instance of the latitude sensor in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'latitude.describe()',pro:'def describe()',cmt:'<p>Returns a short text that describes unambiguously the instance of the latitude sensor in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. More precisely, <tt>TYPE</tt> is the type of the function, <tt>NAME</tt> it the name used for the first access to the function, <tt>SERIAL</tt> is the serial number of the module if the module is connected or <tt>\x22unresolved\x22</tt>, and <tt>FUNCTIONID</tt> is the hardware identifier of the function if the module is connected. For example, this method returns <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> if the module is already connected or <tt>Relay(BadCustomeName.relay1)=unresolved</tt> if the module has not yet been connected. This method does not trigger any USB or TCP transaction and can therefore be used in a debugger.</p>',ret:'a string that describes the latitude sensor (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['Latitude']['get_advertisedValue']={syn:'Returns the current value of the latitude sensor (no more than 6 characters).',lib:'latitude.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Returns the current value of the latitude sensor (no more than 6 characters).</p>',ret:'a string corresponding to the current value of the latitude sensor (no more than 6 characters).',ext:'On failure, throws an exception or returns <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['Latitude']['get_currentRawValue']={syn:'Returns the uncalibrated, unrounded raw value returned by the sensor, in deg/1000, as a floating point number.',lib:'latitude.get_currentRawValue()',pro:'def get_currentRawValue()',cmt:'<p>Returns the uncalibrated, unrounded raw value returned by the sensor, in deg/1000, as a floating point number.</p>',ret:'a floating point number corresponding to the uncalibrated, unrounded raw value returned by the sensor, in deg/1000, as a floating point number',ext:'On failure, throws an exception or returns <tt>Y_CURRENTRAWVALUE_INVALID</tt>.'};
+doc['Latitude']['get_currentValue']={syn:'Returns the current value of the latitude, in deg/1000, as a floating point number.',lib:'latitude.get_currentValue()',pro:'def get_currentValue()',cmt:'<p>Returns the current value of the latitude, in deg/1000, as a floating point number.</p>',ret:'a floating point number corresponding to the current value of the latitude, in deg/1000, as a floating point number',ext:'On failure, throws an exception or returns <tt>Y_CURRENTVALUE_INVALID</tt>.'};
+doc['Latitude']['get_errorMessage']={syn:'Returns the error message of the latest error with the latitude sensor.',lib:'latitude.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Returns the error message of the latest error with the latitude sensor. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a string corresponding to the latest error message that occured while using the latitude sensor object'};
+doc['Latitude']['get_errorType']={syn:'Returns the numerical error code of the latest error with the latitude sensor.',lib:'latitude.get_errorType()',pro:'def get_errorType()',cmt:'<p>Returns the numerical error code of the latest error with the latitude sensor. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a number corresponding to the code of the latest error that occurred while using the latitude sensor object'};
+doc['Latitude']['get_friendlyName']={syn:'Returns a global identifier of the latitude sensor in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>.',lib:'latitude.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Returns a global identifier of the latitude sensor in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>. The returned string uses the logical names of the module and of the latitude sensor if they are defined, otherwise the serial number of the module and the hardware identifier of the latitude sensor (for example: <tt>MyCustomName.relay1</tt>)</p>',ret:'a string that uniquely identifies the latitude sensor using logical names (ex: <tt>MyCustomName.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['Latitude']['get_functionDescriptor']={syn:'Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function.',lib:'latitude.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function. This identifier can be used to test if two instances of <tt>YFunction</tt> reference the same physical function on the same physical device.</p>',ret:'an identifier of type <tt>YFUN_DESCR</tt>.',ext:'If the function has never been contacted, the returned value is <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>.'};
+doc['Latitude']['get_functionId']={syn:'Returns the hardware identifier of the latitude sensor, without reference to the module.',lib:'latitude.get_functionId()',pro:'def get_functionId()',cmt:'<p>Returns the hardware identifier of the latitude sensor, without reference to the module. For example <tt>relay1</tt></p>',ret:'a string that identifies the latitude sensor (ex: <tt>relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['Latitude']['get_hardwareId']={syn:'Returns the unique hardware identifier of the latitude sensor in the form <tt>SERIAL.FUNCTIONID</tt>.',lib:'latitude.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Returns the unique hardware identifier of the latitude sensor in the form <tt>SERIAL.FUNCTIONID</tt>. The unique hardware identifier is composed of the device serial number and of the hardware identifier of the latitude sensor (for example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'a string that uniquely identifies the latitude sensor (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['Latitude']['get_highestValue']={syn:'Returns the maximal value observed for the latitude since the device was started.',lib:'latitude.get_highestValue()',pro:'def get_highestValue()',cmt:'<p>Returns the maximal value observed for the latitude since the device was started.</p>',ret:'a floating point number corresponding to the maximal value observed for the latitude since the device was started',ext:'On failure, throws an exception or returns <tt>Y_HIGHESTVALUE_INVALID</tt>.'};
+doc['Latitude']['get_logFrequency']={syn:'Returns the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory.',lib:'latitude.get_logFrequency()',pro:'def get_logFrequency()',cmt:'<p>Returns the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory.</p>',ret:'a string corresponding to the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory',ext:'On failure, throws an exception or returns <tt>Y_LOGFREQUENCY_INVALID</tt>.'};
+doc['Latitude']['get_logicalName']={syn:'Returns the logical name of the latitude sensor.',lib:'latitude.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Returns the logical name of the latitude sensor.</p>',ret:'a string corresponding to the logical name of the latitude sensor.',ext:'On failure, throws an exception or returns <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['Latitude']['get_lowestValue']={syn:'Returns the minimal value observed for the latitude since the device was started.',lib:'latitude.get_lowestValue()',pro:'def get_lowestValue()',cmt:'<p>Returns the minimal value observed for the latitude since the device was started.</p>',ret:'a floating point number corresponding to the minimal value observed for the latitude since the device was started',ext:'On failure, throws an exception or returns <tt>Y_LOWESTVALUE_INVALID</tt>.'};
+doc['Latitude']['get_module']={syn:'Gets the <tt>YModule</tt> object for the device on which the function is located.',lib:'latitude.get_module()',pro:'def get_module()',cmt:'<p>Gets the <tt>YModule</tt> object for the device on which the function is located. If the function cannot be located on any module, the returned instance of <tt>YModule</tt> is not shown as on-line.</p>',ret:'an instance of <tt>YModule</tt>'};
+doc['Latitude']['get_recordedData']={syn:'Retrieves a DataSet object holding historical data for this sensor, for a specified time interval.',lib:'latitude.get_recordedData()',pro:'def get_recordedData(<span id=pn>startTime</span>, <span id=pn>endTime</span>)',cmt:'<p>Retrieves a DataSet object holding historical data for this sensor, for a specified time interval. The measures will be retrieved from the data logger, which must have been turned on at the desired time. See the documentation of the DataSet class for information on how to get an overview of the recorded data, and how to load progressively a large set of measures from the data logger.</p><p> This function only works if the device uses a recent firmware, as DataSet objects are not supported by firmwares older than version 13000.</p>',par:{startTime:'the start of the desired measure time interval, as a Unix timestamp, i.e. the number of seconds since January 1, 1970 UTC. The special value 0 can be used to include any meaasure, without initial limit.',endTime:'the end of the desired measure time interval, as a Unix timestamp, i.e. the number of seconds since January 1, 1970 UTC. The special value 0 can be used to include any meaasure, without ending limit.'},ret:'an instance of YDataSet, providing access to historical data. Past measures can be loaded progressively using methods from the YDataSet object.'};
+doc['Latitude']['get_reportFrequency']={syn:'Returns the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function.',lib:'latitude.get_reportFrequency()',pro:'def get_reportFrequency()',cmt:'<p>Returns the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function.</p>',ret:'a string corresponding to the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function',ext:'On failure, throws an exception or returns <tt>Y_REPORTFREQUENCY_INVALID</tt>.'};
+doc['Latitude']['get_resolution']={syn:'Returns the resolution of the measured values.',lib:'latitude.get_resolution()',pro:'def get_resolution()',cmt:'<p>Returns the resolution of the measured values. The resolution corresponds to the numerical precision of the measures, which is not always the same as the actual precision of the sensor.</p>',ret:'a floating point number corresponding to the resolution of the measured values',ext:'On failure, throws an exception or returns <tt>Y_RESOLUTION_INVALID</tt>.'};
+doc['Latitude']['get_sensorState']={syn:'Returns the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now.',lib:'latitude.get_sensorState()',pro:'def get_sensorState()',cmt:'<p>Returns the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now.</p>',ret:'an integer corresponding to the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now',ext:'On failure, throws an exception or returns <tt>Y_SENSORSTATE_INVALID</tt>.'};
+doc['Latitude']['get_unit']={syn:'Returns the measuring unit for the latitude.',lib:'latitude.get_unit()',pro:'def get_unit()',cmt:'<p>Returns the measuring unit for the latitude.</p>',ret:'a string corresponding to the measuring unit for the latitude',ext:'On failure, throws an exception or returns <tt>Y_UNIT_INVALID</tt>.'};
+doc['Latitude']['get_userData']={syn:'Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>.',lib:'latitude.get_userData()',pro:'def get_userData()',cmt:'<p>Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>. This attribute is never touched directly by the API, and is at disposal of the caller to store a context.</p>',ret:'the object stored previously by the caller.'};
+doc['Latitude']['isOnline']={syn:'Checks if the latitude sensor is currently reachable, without raising any error.',lib:'latitude.isOnline()',pro:'def isOnline()',cmt:'<p>Checks if the latitude sensor is currently reachable, without raising any error. If there is a cached value for the latitude sensor in cache, that has not yet expired, the device is considered reachable. No exception is raised if there is an error while trying to contact the device hosting the latitude sensor.</p>',ret:'<tt>true</tt> if the latitude sensor can be reached, and <tt>false</tt> otherwise'};
+doc['Latitude']['load']={syn:'Preloads the latitude sensor cache with a specified validity duration.',lib:'latitude.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Preloads the latitude sensor cache with a specified validity duration. By default, whenever accessing a device, all function attributes are kept in cache for the standard duration (5 ms). This method can be used to temporarily mark the cache as valid for a longer period, in order to reduce network traffic for instance.</p>',par:{msValidity:'an integer corresponding to the validity attributed to the loaded function parameters, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Latitude']['loadAttribute']={syn:'Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.',lib:'latitude.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'On failure, throws an exception or returns an empty string.'};
+doc['Latitude']['loadCalibrationPoints']={syn:'Retrieves error correction data points previously entered using the method <tt>calibrateFromPoints</tt>.',lib:'latitude.loadCalibrationPoints()',pro:'def loadCalibrationPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Retrieves error correction data points previously entered using the method <tt>calibrateFromPoints</tt>.</p>',par:{rawValues:'array of floating point numbers, that will be filled by the function with the raw sensor values for the correction points.',refValues:'array of floating point numbers, that will be filled by the function with the desired values for the correction points.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Latitude']['muteValueCallbacks']={syn:'Disable the propagation of every new advertised value to the parent hub.',lib:'latitude.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>Disable the propagation of every new advertised value to the parent hub. You can use this function to save bandwidth and CPU on computers with limited resources, or to prevent unwanted invocations of the HTTP callback. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Latitude']['nextLatitude']={syn:'Continues the enumeration of latitude sensors started using <tt>yFirstLatitude()</tt>.',lib:'latitude.nextLatitude()',pro:'def nextLatitude()',cmt:'<p>Continues the enumeration of latitude sensors started using <tt>yFirstLatitude()</tt>.</p>',ret:'a pointer to a <tt>YLatitude</tt> object, corresponding to a latitude sensor currently online, or a <tt>null</tt> pointer if there are no more latitude sensors to enumerate.'};
+doc['Latitude']['registerTimedReportCallback']={syn:'Registers the callback function that is invoked on every periodic timed notification.',lib:'latitude.registerTimedReportCallback()',pro:'def registerTimedReportCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every periodic timed notification. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and an YMeasure object describing the new advertised value.'}};
+doc['Latitude']['registerValueCallback']={syn:'Registers the callback function that is invoked on every change of advertised value.',lib:'latitude.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every change of advertised value. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and the character string describing the new advertised value.'}};
+doc['Latitude']['set_highestValue']={syn:'Changes the recorded maximal value observed.',lib:'latitude.set_highestValue()',pro:'def set_highestValue(<span id=pn>newval</span>)',cmt:'<p>Changes the recorded maximal value observed.</p>',par:{newval:'a floating point number corresponding to the recorded maximal value observed'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Latitude']['set_logFrequency']={syn:'Changes the datalogger recording frequency for this function.',lib:'latitude.set_logFrequency()',pro:'def set_logFrequency(<span id=pn>newval</span>)',cmt:'<p>Changes the datalogger recording frequency for this function. The frequency can be specified as samples per second, as sample per minute (for instance \x2215/m\x22) or in samples per hour (eg. \x224/h\x22). To disable recording for this function, use the value \x22OFF\x22.</p>',par:{newval:'a string corresponding to the datalogger recording frequency for this function'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Latitude']['set_logicalName']={syn:'Changes the logical name of the latitude sensor.',lib:'latitude.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Changes the logical name of the latitude sensor. You can use <tt>yCheckLogicalName()</tt> prior to this call to make sure that your parameter is valid. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the logical name of the latitude sensor.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Latitude']['set_lowestValue']={syn:'Changes the recorded minimal value observed.',lib:'latitude.set_lowestValue()',pro:'def set_lowestValue(<span id=pn>newval</span>)',cmt:'<p>Changes the recorded minimal value observed.</p>',par:{newval:'a floating point number corresponding to the recorded minimal value observed'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Latitude']['set_reportFrequency']={syn:'Changes the timed value notification frequency for this function.',lib:'latitude.set_reportFrequency()',pro:'def set_reportFrequency(<span id=pn>newval</span>)',cmt:'<p>Changes the timed value notification frequency for this function. The frequency can be specified as samples per second, as sample per minute (for instance \x2215/m\x22) or in samples per hour (eg. \x224/h\x22). To disable timed value notifications for this function, use the value \x22OFF\x22.</p>',par:{newval:'a string corresponding to the timed value notification frequency for this function'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Latitude']['set_resolution']={syn:'Changes the resolution of the measured physical values.',lib:'latitude.set_resolution()',pro:'def set_resolution(<span id=pn>newval</span>)',cmt:'<p>Changes the resolution of the measured physical values. The resolution corresponds to the numerical precision when displaying value. It does not change the precision of the measure itself.</p>',par:{newval:'a floating point number corresponding to the resolution of the measured physical values'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Latitude']['set_userData']={syn:'Stores a user context provided as argument in the userData attribute of the function.',lib:'latitude.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Stores a user context provided as argument in the userData attribute of the function. This attribute is never touched by the API, and is at disposal of the caller to store a context.</p>',par:{data:'any kind of object to be stored'}};
+doc['Latitude']['startDataLogger']={syn:'Starts the data logger on the device.',lib:'latitude.startDataLogger()',pro:'def startDataLogger()',cmt:'<p>Starts the data logger on the device. Note that the data logger will only save the measures on this sensor if the logFrequency is not set to \x22OFF\x22.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.'};
+doc['Latitude']['stopDataLogger']={syn:'Stops the datalogger on the device.',lib:'latitude.stopDataLogger()',pro:'def stopDataLogger()',cmt:'<p>Stops the datalogger on the device.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.'};
+doc['Latitude']['unmuteValueCallbacks']={syn:'Re-enable the propagation of every new advertised value to the parent hub.',lib:'latitude.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>Re-enable the propagation of every new advertised value to the parent hub. This function reverts the effect of a previous call to <tt>muteValueCallbacks()</tt>. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+//--- (end of generated code: Latitude)
+//--- (generated code: Longitude)
+doc['Longitude']={'':{syn:'Longitude function interface',inc:'from yocto_longitude import *',cmt:'<p>The Yoctopuce class YLongitude allows you to read the longitude from Yoctopuce geolocalization sensors. It inherits from the YSensor class the core functions to read measurements, register callback functions, access the autonomous datalogger.</p>'}};
+doc['Longitude']['FindLongitude']={syn:'Retrieves a longitude sensor for a given identifier.',lib:'YLongitude.FindLongitude()',pro:'def FindLongitude(<span id=pn>func</span>)',cmt:'<p>Retrieves a longitude sensor for a given identifier. The identifier can be specified using several formats:<br> <ul> <li>FunctionLogicalName</li> <li>ModuleSerialNumber.FunctionIdentifier</li> <li>ModuleSerialNumber.FunctionLogicalName</li> <li>ModuleLogicalName.FunctionIdentifier</li> <li>ModuleLogicalName.FunctionLogicalName</li> </ul></p><p> This function does not require that the longitude sensor is online at the time it is invoked. The returned object is nevertheless valid. Use the method <tt>YLongitude.isOnline()</tt> to test if the longitude sensor is indeed online at a given time. In case of ambiguity when looking for a longitude sensor by logical name, no error is notified: the first instance found is returned. The search is performed first by hardware name, then by logical name.</p>',par:{func:'a string that uniquely characterizes the longitude sensor'},ret:'a <tt>YLongitude</tt> object allowing you to drive the longitude sensor.'};
+doc['Longitude']['FirstLongitude']={syn:'Starts the enumeration of longitude sensors currently accessible.',lib:'YLongitude.FirstLongitude()',pro:'def FirstLongitude()',cmt:'<p>Starts the enumeration of longitude sensors currently accessible. Use the method <tt>YLongitude.nextLongitude()</tt> to iterate on next longitude sensors.</p>',ret:'a pointer to a <tt>YLongitude</tt> object, corresponding to the first longitude sensor currently online, or a <tt>null</tt> pointer if there are none.'};
+doc['Longitude']['calibrateFromPoints']={syn:'Configures error correction data points, in particular to compensate for a possible perturbation of the measure caused by an enclosure.',lib:'longitude.calibrateFromPoints()',pro:'def calibrateFromPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Configures error correction data points, in particular to compensate for a possible perturbation of the measure caused by an enclosure. It is possible to configure up to five correction points. Correction points must be provided in ascending order, and be in the range of the sensor. The device will automatically perform a linear interpolation of the error correction between specified points. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p><p> For more information on advanced capabilities to refine the calibration of sensors, please contact support@yoctopuce.com.</p>',par:{rawValues:'array of floating point numbers, corresponding to the raw values returned by the sensor for the correction points.',refValues:'array of floating point numbers, corresponding to the corrected values for the correction points.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Longitude']['clearCache']={syn:'Invalidates the cache.',lib:'longitude.clearCache()',pro:'def clearCache()',cmt:'<p>Invalidates the cache. Invalidates the cache of the longitude sensor attributes. Forces the next call to get_xxx() or loadxxx() to use values that come from the device.</p>'};
+doc['Longitude']['describe']={syn:'Returns a short text that describes unambiguously the instance of the longitude sensor in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'longitude.describe()',pro:'def describe()',cmt:'<p>Returns a short text that describes unambiguously the instance of the longitude sensor in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. More precisely, <tt>TYPE</tt> is the type of the function, <tt>NAME</tt> it the name used for the first access to the function, <tt>SERIAL</tt> is the serial number of the module if the module is connected or <tt>\x22unresolved\x22</tt>, and <tt>FUNCTIONID</tt> is the hardware identifier of the function if the module is connected. For example, this method returns <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> if the module is already connected or <tt>Relay(BadCustomeName.relay1)=unresolved</tt> if the module has not yet been connected. This method does not trigger any USB or TCP transaction and can therefore be used in a debugger.</p>',ret:'a string that describes the longitude sensor (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['Longitude']['get_advertisedValue']={syn:'Returns the current value of the longitude sensor (no more than 6 characters).',lib:'longitude.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Returns the current value of the longitude sensor (no more than 6 characters).</p>',ret:'a string corresponding to the current value of the longitude sensor (no more than 6 characters).',ext:'On failure, throws an exception or returns <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['Longitude']['get_currentRawValue']={syn:'Returns the uncalibrated, unrounded raw value returned by the sensor, in deg/1000, as a floating point number.',lib:'longitude.get_currentRawValue()',pro:'def get_currentRawValue()',cmt:'<p>Returns the uncalibrated, unrounded raw value returned by the sensor, in deg/1000, as a floating point number.</p>',ret:'a floating point number corresponding to the uncalibrated, unrounded raw value returned by the sensor, in deg/1000, as a floating point number',ext:'On failure, throws an exception or returns <tt>Y_CURRENTRAWVALUE_INVALID</tt>.'};
+doc['Longitude']['get_currentValue']={syn:'Returns the current value of the longitude, in deg/1000, as a floating point number.',lib:'longitude.get_currentValue()',pro:'def get_currentValue()',cmt:'<p>Returns the current value of the longitude, in deg/1000, as a floating point number.</p>',ret:'a floating point number corresponding to the current value of the longitude, in deg/1000, as a floating point number',ext:'On failure, throws an exception or returns <tt>Y_CURRENTVALUE_INVALID</tt>.'};
+doc['Longitude']['get_errorMessage']={syn:'Returns the error message of the latest error with the longitude sensor.',lib:'longitude.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Returns the error message of the latest error with the longitude sensor. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a string corresponding to the latest error message that occured while using the longitude sensor object'};
+doc['Longitude']['get_errorType']={syn:'Returns the numerical error code of the latest error with the longitude sensor.',lib:'longitude.get_errorType()',pro:'def get_errorType()',cmt:'<p>Returns the numerical error code of the latest error with the longitude sensor. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a number corresponding to the code of the latest error that occurred while using the longitude sensor object'};
+doc['Longitude']['get_friendlyName']={syn:'Returns a global identifier of the longitude sensor in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>.',lib:'longitude.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Returns a global identifier of the longitude sensor in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>. The returned string uses the logical names of the module and of the longitude sensor if they are defined, otherwise the serial number of the module and the hardware identifier of the longitude sensor (for example: <tt>MyCustomName.relay1</tt>)</p>',ret:'a string that uniquely identifies the longitude sensor using logical names (ex: <tt>MyCustomName.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['Longitude']['get_functionDescriptor']={syn:'Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function.',lib:'longitude.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function. This identifier can be used to test if two instances of <tt>YFunction</tt> reference the same physical function on the same physical device.</p>',ret:'an identifier of type <tt>YFUN_DESCR</tt>.',ext:'If the function has never been contacted, the returned value is <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>.'};
+doc['Longitude']['get_functionId']={syn:'Returns the hardware identifier of the longitude sensor, without reference to the module.',lib:'longitude.get_functionId()',pro:'def get_functionId()',cmt:'<p>Returns the hardware identifier of the longitude sensor, without reference to the module. For example <tt>relay1</tt></p>',ret:'a string that identifies the longitude sensor (ex: <tt>relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['Longitude']['get_hardwareId']={syn:'Returns the unique hardware identifier of the longitude sensor in the form <tt>SERIAL.FUNCTIONID</tt>.',lib:'longitude.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Returns the unique hardware identifier of the longitude sensor in the form <tt>SERIAL.FUNCTIONID</tt>. The unique hardware identifier is composed of the device serial number and of the hardware identifier of the longitude sensor (for example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'a string that uniquely identifies the longitude sensor (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['Longitude']['get_highestValue']={syn:'Returns the maximal value observed for the longitude since the device was started.',lib:'longitude.get_highestValue()',pro:'def get_highestValue()',cmt:'<p>Returns the maximal value observed for the longitude since the device was started.</p>',ret:'a floating point number corresponding to the maximal value observed for the longitude since the device was started',ext:'On failure, throws an exception or returns <tt>Y_HIGHESTVALUE_INVALID</tt>.'};
+doc['Longitude']['get_logFrequency']={syn:'Returns the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory.',lib:'longitude.get_logFrequency()',pro:'def get_logFrequency()',cmt:'<p>Returns the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory.</p>',ret:'a string corresponding to the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory',ext:'On failure, throws an exception or returns <tt>Y_LOGFREQUENCY_INVALID</tt>.'};
+doc['Longitude']['get_logicalName']={syn:'Returns the logical name of the longitude sensor.',lib:'longitude.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Returns the logical name of the longitude sensor.</p>',ret:'a string corresponding to the logical name of the longitude sensor.',ext:'On failure, throws an exception or returns <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['Longitude']['get_lowestValue']={syn:'Returns the minimal value observed for the longitude since the device was started.',lib:'longitude.get_lowestValue()',pro:'def get_lowestValue()',cmt:'<p>Returns the minimal value observed for the longitude since the device was started.</p>',ret:'a floating point number corresponding to the minimal value observed for the longitude since the device was started',ext:'On failure, throws an exception or returns <tt>Y_LOWESTVALUE_INVALID</tt>.'};
+doc['Longitude']['get_module']={syn:'Gets the <tt>YModule</tt> object for the device on which the function is located.',lib:'longitude.get_module()',pro:'def get_module()',cmt:'<p>Gets the <tt>YModule</tt> object for the device on which the function is located. If the function cannot be located on any module, the returned instance of <tt>YModule</tt> is not shown as on-line.</p>',ret:'an instance of <tt>YModule</tt>'};
+doc['Longitude']['get_recordedData']={syn:'Retrieves a DataSet object holding historical data for this sensor, for a specified time interval.',lib:'longitude.get_recordedData()',pro:'def get_recordedData(<span id=pn>startTime</span>, <span id=pn>endTime</span>)',cmt:'<p>Retrieves a DataSet object holding historical data for this sensor, for a specified time interval. The measures will be retrieved from the data logger, which must have been turned on at the desired time. See the documentation of the DataSet class for information on how to get an overview of the recorded data, and how to load progressively a large set of measures from the data logger.</p><p> This function only works if the device uses a recent firmware, as DataSet objects are not supported by firmwares older than version 13000.</p>',par:{startTime:'the start of the desired measure time interval, as a Unix timestamp, i.e. the number of seconds since January 1, 1970 UTC. The special value 0 can be used to include any meaasure, without initial limit.',endTime:'the end of the desired measure time interval, as a Unix timestamp, i.e. the number of seconds since January 1, 1970 UTC. The special value 0 can be used to include any meaasure, without ending limit.'},ret:'an instance of YDataSet, providing access to historical data. Past measures can be loaded progressively using methods from the YDataSet object.'};
+doc['Longitude']['get_reportFrequency']={syn:'Returns the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function.',lib:'longitude.get_reportFrequency()',pro:'def get_reportFrequency()',cmt:'<p>Returns the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function.</p>',ret:'a string corresponding to the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function',ext:'On failure, throws an exception or returns <tt>Y_REPORTFREQUENCY_INVALID</tt>.'};
+doc['Longitude']['get_resolution']={syn:'Returns the resolution of the measured values.',lib:'longitude.get_resolution()',pro:'def get_resolution()',cmt:'<p>Returns the resolution of the measured values. The resolution corresponds to the numerical precision of the measures, which is not always the same as the actual precision of the sensor.</p>',ret:'a floating point number corresponding to the resolution of the measured values',ext:'On failure, throws an exception or returns <tt>Y_RESOLUTION_INVALID</tt>.'};
+doc['Longitude']['get_sensorState']={syn:'Returns the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now.',lib:'longitude.get_sensorState()',pro:'def get_sensorState()',cmt:'<p>Returns the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now.</p>',ret:'an integer corresponding to the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now',ext:'On failure, throws an exception or returns <tt>Y_SENSORSTATE_INVALID</tt>.'};
+doc['Longitude']['get_unit']={syn:'Returns the measuring unit for the longitude.',lib:'longitude.get_unit()',pro:'def get_unit()',cmt:'<p>Returns the measuring unit for the longitude.</p>',ret:'a string corresponding to the measuring unit for the longitude',ext:'On failure, throws an exception or returns <tt>Y_UNIT_INVALID</tt>.'};
+doc['Longitude']['get_userData']={syn:'Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>.',lib:'longitude.get_userData()',pro:'def get_userData()',cmt:'<p>Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>. This attribute is never touched directly by the API, and is at disposal of the caller to store a context.</p>',ret:'the object stored previously by the caller.'};
+doc['Longitude']['isOnline']={syn:'Checks if the longitude sensor is currently reachable, without raising any error.',lib:'longitude.isOnline()',pro:'def isOnline()',cmt:'<p>Checks if the longitude sensor is currently reachable, without raising any error. If there is a cached value for the longitude sensor in cache, that has not yet expired, the device is considered reachable. No exception is raised if there is an error while trying to contact the device hosting the longitude sensor.</p>',ret:'<tt>true</tt> if the longitude sensor can be reached, and <tt>false</tt> otherwise'};
+doc['Longitude']['load']={syn:'Preloads the longitude sensor cache with a specified validity duration.',lib:'longitude.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Preloads the longitude sensor cache with a specified validity duration. By default, whenever accessing a device, all function attributes are kept in cache for the standard duration (5 ms). This method can be used to temporarily mark the cache as valid for a longer period, in order to reduce network traffic for instance.</p>',par:{msValidity:'an integer corresponding to the validity attributed to the loaded function parameters, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Longitude']['loadAttribute']={syn:'Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.',lib:'longitude.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'On failure, throws an exception or returns an empty string.'};
+doc['Longitude']['loadCalibrationPoints']={syn:'Retrieves error correction data points previously entered using the method <tt>calibrateFromPoints</tt>.',lib:'longitude.loadCalibrationPoints()',pro:'def loadCalibrationPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Retrieves error correction data points previously entered using the method <tt>calibrateFromPoints</tt>.</p>',par:{rawValues:'array of floating point numbers, that will be filled by the function with the raw sensor values for the correction points.',refValues:'array of floating point numbers, that will be filled by the function with the desired values for the correction points.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Longitude']['muteValueCallbacks']={syn:'Disable the propagation of every new advertised value to the parent hub.',lib:'longitude.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>Disable the propagation of every new advertised value to the parent hub. You can use this function to save bandwidth and CPU on computers with limited resources, or to prevent unwanted invocations of the HTTP callback. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Longitude']['nextLongitude']={syn:'Continues the enumeration of longitude sensors started using <tt>yFirstLongitude()</tt>.',lib:'longitude.nextLongitude()',pro:'def nextLongitude()',cmt:'<p>Continues the enumeration of longitude sensors started using <tt>yFirstLongitude()</tt>.</p>',ret:'a pointer to a <tt>YLongitude</tt> object, corresponding to a longitude sensor currently online, or a <tt>null</tt> pointer if there are no more longitude sensors to enumerate.'};
+doc['Longitude']['registerTimedReportCallback']={syn:'Registers the callback function that is invoked on every periodic timed notification.',lib:'longitude.registerTimedReportCallback()',pro:'def registerTimedReportCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every periodic timed notification. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and an YMeasure object describing the new advertised value.'}};
+doc['Longitude']['registerValueCallback']={syn:'Registers the callback function that is invoked on every change of advertised value.',lib:'longitude.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every change of advertised value. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and the character string describing the new advertised value.'}};
+doc['Longitude']['set_highestValue']={syn:'Changes the recorded maximal value observed.',lib:'longitude.set_highestValue()',pro:'def set_highestValue(<span id=pn>newval</span>)',cmt:'<p>Changes the recorded maximal value observed.</p>',par:{newval:'a floating point number corresponding to the recorded maximal value observed'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Longitude']['set_logFrequency']={syn:'Changes the datalogger recording frequency for this function.',lib:'longitude.set_logFrequency()',pro:'def set_logFrequency(<span id=pn>newval</span>)',cmt:'<p>Changes the datalogger recording frequency for this function. The frequency can be specified as samples per second, as sample per minute (for instance \x2215/m\x22) or in samples per hour (eg. \x224/h\x22). To disable recording for this function, use the value \x22OFF\x22.</p>',par:{newval:'a string corresponding to the datalogger recording frequency for this function'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Longitude']['set_logicalName']={syn:'Changes the logical name of the longitude sensor.',lib:'longitude.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Changes the logical name of the longitude sensor. You can use <tt>yCheckLogicalName()</tt> prior to this call to make sure that your parameter is valid. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the logical name of the longitude sensor.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Longitude']['set_lowestValue']={syn:'Changes the recorded minimal value observed.',lib:'longitude.set_lowestValue()',pro:'def set_lowestValue(<span id=pn>newval</span>)',cmt:'<p>Changes the recorded minimal value observed.</p>',par:{newval:'a floating point number corresponding to the recorded minimal value observed'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Longitude']['set_reportFrequency']={syn:'Changes the timed value notification frequency for this function.',lib:'longitude.set_reportFrequency()',pro:'def set_reportFrequency(<span id=pn>newval</span>)',cmt:'<p>Changes the timed value notification frequency for this function. The frequency can be specified as samples per second, as sample per minute (for instance \x2215/m\x22) or in samples per hour (eg. \x224/h\x22). To disable timed value notifications for this function, use the value \x22OFF\x22.</p>',par:{newval:'a string corresponding to the timed value notification frequency for this function'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Longitude']['set_resolution']={syn:'Changes the resolution of the measured physical values.',lib:'longitude.set_resolution()',pro:'def set_resolution(<span id=pn>newval</span>)',cmt:'<p>Changes the resolution of the measured physical values. The resolution corresponds to the numerical precision when displaying value. It does not change the precision of the measure itself.</p>',par:{newval:'a floating point number corresponding to the resolution of the measured physical values'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Longitude']['set_userData']={syn:'Stores a user context provided as argument in the userData attribute of the function.',lib:'longitude.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Stores a user context provided as argument in the userData attribute of the function. This attribute is never touched by the API, and is at disposal of the caller to store a context.</p>',par:{data:'any kind of object to be stored'}};
+doc['Longitude']['startDataLogger']={syn:'Starts the data logger on the device.',lib:'longitude.startDataLogger()',pro:'def startDataLogger()',cmt:'<p>Starts the data logger on the device. Note that the data logger will only save the measures on this sensor if the logFrequency is not set to \x22OFF\x22.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.'};
+doc['Longitude']['stopDataLogger']={syn:'Stops the datalogger on the device.',lib:'longitude.stopDataLogger()',pro:'def stopDataLogger()',cmt:'<p>Stops the datalogger on the device.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.'};
+doc['Longitude']['unmuteValueCallbacks']={syn:'Re-enable the propagation of every new advertised value to the parent hub.',lib:'longitude.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>Re-enable the propagation of every new advertised value to the parent hub. This function reverts the effect of a previous call to <tt>muteValueCallbacks()</tt>. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+//--- (end of generated code: Longitude)
+//--- (generated code: GroundSpeed)
+doc['GroundSpeed']={'':{syn:'GroundSpeed function interface',inc:'from yocto_groundspeed import *',cmt:'<p>The Yoctopuce class YGroundSpeed allows you to read the ground speed from Yoctopuce geolocalization sensors. It inherits from the YSensor class the core functions to read measurements, register callback functions, access the autonomous datalogger.</p>'}};
+doc['GroundSpeed']['FindGroundSpeed']={syn:'Retrieves a ground speed sensor for a given identifier.',lib:'YGroundSpeed.FindGroundSpeed()',pro:'def FindGroundSpeed(<span id=pn>func</span>)',cmt:'<p>Retrieves a ground speed sensor for a given identifier. The identifier can be specified using several formats:<br> <ul> <li>FunctionLogicalName</li> <li>ModuleSerialNumber.FunctionIdentifier</li> <li>ModuleSerialNumber.FunctionLogicalName</li> <li>ModuleLogicalName.FunctionIdentifier</li> <li>ModuleLogicalName.FunctionLogicalName</li> </ul></p><p> This function does not require that the ground speed sensor is online at the time it is invoked. The returned object is nevertheless valid. Use the method <tt>YGroundSpeed.isOnline()</tt> to test if the ground speed sensor is indeed online at a given time. In case of ambiguity when looking for a ground speed sensor by logical name, no error is notified: the first instance found is returned. The search is performed first by hardware name, then by logical name.</p>',par:{func:'a string that uniquely characterizes the ground speed sensor'},ret:'a <tt>YGroundSpeed</tt> object allowing you to drive the ground speed sensor.'};
+doc['GroundSpeed']['FirstGroundSpeed']={syn:'Starts the enumeration of ground speed sensors currently accessible.',lib:'YGroundSpeed.FirstGroundSpeed()',pro:'def FirstGroundSpeed()',cmt:'<p>Starts the enumeration of ground speed sensors currently accessible. Use the method <tt>YGroundSpeed.nextGroundSpeed()</tt> to iterate on next ground speed sensors.</p>',ret:'a pointer to a <tt>YGroundSpeed</tt> object, corresponding to the first ground speed sensor currently online, or a <tt>null</tt> pointer if there are none.'};
+doc['GroundSpeed']['calibrateFromPoints']={syn:'Configures error correction data points, in particular to compensate for a possible perturbation of the measure caused by an enclosure.',lib:'groundspeed.calibrateFromPoints()',pro:'def calibrateFromPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Configures error correction data points, in particular to compensate for a possible perturbation of the measure caused by an enclosure. It is possible to configure up to five correction points. Correction points must be provided in ascending order, and be in the range of the sensor. The device will automatically perform a linear interpolation of the error correction between specified points. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p><p> For more information on advanced capabilities to refine the calibration of sensors, please contact support@yoctopuce.com.</p>',par:{rawValues:'array of floating point numbers, corresponding to the raw values returned by the sensor for the correction points.',refValues:'array of floating point numbers, corresponding to the corrected values for the correction points.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['GroundSpeed']['clearCache']={syn:'Invalidates the cache.',lib:'groundspeed.clearCache()',pro:'def clearCache()',cmt:'<p>Invalidates the cache. Invalidates the cache of the ground speed sensor attributes. Forces the next call to get_xxx() or loadxxx() to use values that come from the device.</p>'};
+doc['GroundSpeed']['describe']={syn:'Returns a short text that describes unambiguously the instance of the ground speed sensor in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'groundspeed.describe()',pro:'def describe()',cmt:'<p>Returns a short text that describes unambiguously the instance of the ground speed sensor in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. More precisely, <tt>TYPE</tt> is the type of the function, <tt>NAME</tt> it the name used for the first access to the function, <tt>SERIAL</tt> is the serial number of the module if the module is connected or <tt>\x22unresolved\x22</tt>, and <tt>FUNCTIONID</tt> is the hardware identifier of the function if the module is connected. For example, this method returns <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> if the module is already connected or <tt>Relay(BadCustomeName.relay1)=unresolved</tt> if the module has not yet been connected. This method does not trigger any USB or TCP transaction and can therefore be used in a debugger.</p>',ret:'a string that describes the ground speed sensor (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['GroundSpeed']['get_advertisedValue']={syn:'Returns the current value of the ground speed sensor (no more than 6 characters).',lib:'groundspeed.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Returns the current value of the ground speed sensor (no more than 6 characters).</p>',ret:'a string corresponding to the current value of the ground speed sensor (no more than 6 characters).',ext:'On failure, throws an exception or returns <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['GroundSpeed']['get_currentRawValue']={syn:'Returns the uncalibrated, unrounded raw value returned by the sensor, in km/h, as a floating point number.',lib:'groundspeed.get_currentRawValue()',pro:'def get_currentRawValue()',cmt:'<p>Returns the uncalibrated, unrounded raw value returned by the sensor, in km/h, as a floating point number.</p>',ret:'a floating point number corresponding to the uncalibrated, unrounded raw value returned by the sensor, in km/h, as a floating point number',ext:'On failure, throws an exception or returns <tt>Y_CURRENTRAWVALUE_INVALID</tt>.'};
+doc['GroundSpeed']['get_currentValue']={syn:'Returns the current value of the ground speed, in km/h, as a floating point number.',lib:'groundspeed.get_currentValue()',pro:'def get_currentValue()',cmt:'<p>Returns the current value of the ground speed, in km/h, as a floating point number.</p>',ret:'a floating point number corresponding to the current value of the ground speed, in km/h, as a floating point number',ext:'On failure, throws an exception or returns <tt>Y_CURRENTVALUE_INVALID</tt>.'};
+doc['GroundSpeed']['get_errorMessage']={syn:'Returns the error message of the latest error with the ground speed sensor.',lib:'groundspeed.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Returns the error message of the latest error with the ground speed sensor. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a string corresponding to the latest error message that occured while using the ground speed sensor object'};
+doc['GroundSpeed']['get_errorType']={syn:'Returns the numerical error code of the latest error with the ground speed sensor.',lib:'groundspeed.get_errorType()',pro:'def get_errorType()',cmt:'<p>Returns the numerical error code of the latest error with the ground speed sensor. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a number corresponding to the code of the latest error that occurred while using the ground speed sensor object'};
+doc['GroundSpeed']['get_friendlyName']={syn:'Returns a global identifier of the ground speed sensor in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>.',lib:'groundspeed.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Returns a global identifier of the ground speed sensor in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>. The returned string uses the logical names of the module and of the ground speed sensor if they are defined, otherwise the serial number of the module and the hardware identifier of the ground speed sensor (for example: <tt>MyCustomName.relay1</tt>)</p>',ret:'a string that uniquely identifies the ground speed sensor using logical names (ex: <tt>MyCustomName.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['GroundSpeed']['get_functionDescriptor']={syn:'Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function.',lib:'groundspeed.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function. This identifier can be used to test if two instances of <tt>YFunction</tt> reference the same physical function on the same physical device.</p>',ret:'an identifier of type <tt>YFUN_DESCR</tt>.',ext:'If the function has never been contacted, the returned value is <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>.'};
+doc['GroundSpeed']['get_functionId']={syn:'Returns the hardware identifier of the ground speed sensor, without reference to the module.',lib:'groundspeed.get_functionId()',pro:'def get_functionId()',cmt:'<p>Returns the hardware identifier of the ground speed sensor, without reference to the module. For example <tt>relay1</tt></p>',ret:'a string that identifies the ground speed sensor (ex: <tt>relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['GroundSpeed']['get_hardwareId']={syn:'Returns the unique hardware identifier of the ground speed sensor in the form <tt>SERIAL.FUNCTIONID</tt>.',lib:'groundspeed.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Returns the unique hardware identifier of the ground speed sensor in the form <tt>SERIAL.FUNCTIONID</tt>. The unique hardware identifier is composed of the device serial number and of the hardware identifier of the ground speed sensor (for example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'a string that uniquely identifies the ground speed sensor (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['GroundSpeed']['get_highestValue']={syn:'Returns the maximal value observed for the ground speed since the device was started.',lib:'groundspeed.get_highestValue()',pro:'def get_highestValue()',cmt:'<p>Returns the maximal value observed for the ground speed since the device was started.</p>',ret:'a floating point number corresponding to the maximal value observed for the ground speed since the device was started',ext:'On failure, throws an exception or returns <tt>Y_HIGHESTVALUE_INVALID</tt>.'};
+doc['GroundSpeed']['get_logFrequency']={syn:'Returns the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory.',lib:'groundspeed.get_logFrequency()',pro:'def get_logFrequency()',cmt:'<p>Returns the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory.</p>',ret:'a string corresponding to the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory',ext:'On failure, throws an exception or returns <tt>Y_LOGFREQUENCY_INVALID</tt>.'};
+doc['GroundSpeed']['get_logicalName']={syn:'Returns the logical name of the ground speed sensor.',lib:'groundspeed.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Returns the logical name of the ground speed sensor.</p>',ret:'a string corresponding to the logical name of the ground speed sensor.',ext:'On failure, throws an exception or returns <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['GroundSpeed']['get_lowestValue']={syn:'Returns the minimal value observed for the ground speed since the device was started.',lib:'groundspeed.get_lowestValue()',pro:'def get_lowestValue()',cmt:'<p>Returns the minimal value observed for the ground speed since the device was started.</p>',ret:'a floating point number corresponding to the minimal value observed for the ground speed since the device was started',ext:'On failure, throws an exception or returns <tt>Y_LOWESTVALUE_INVALID</tt>.'};
+doc['GroundSpeed']['get_module']={syn:'Gets the <tt>YModule</tt> object for the device on which the function is located.',lib:'groundspeed.get_module()',pro:'def get_module()',cmt:'<p>Gets the <tt>YModule</tt> object for the device on which the function is located. If the function cannot be located on any module, the returned instance of <tt>YModule</tt> is not shown as on-line.</p>',ret:'an instance of <tt>YModule</tt>'};
+doc['GroundSpeed']['get_recordedData']={syn:'Retrieves a DataSet object holding historical data for this sensor, for a specified time interval.',lib:'groundspeed.get_recordedData()',pro:'def get_recordedData(<span id=pn>startTime</span>, <span id=pn>endTime</span>)',cmt:'<p>Retrieves a DataSet object holding historical data for this sensor, for a specified time interval. The measures will be retrieved from the data logger, which must have been turned on at the desired time. See the documentation of the DataSet class for information on how to get an overview of the recorded data, and how to load progressively a large set of measures from the data logger.</p><p> This function only works if the device uses a recent firmware, as DataSet objects are not supported by firmwares older than version 13000.</p>',par:{startTime:'the start of the desired measure time interval, as a Unix timestamp, i.e. the number of seconds since January 1, 1970 UTC. The special value 0 can be used to include any meaasure, without initial limit.',endTime:'the end of the desired measure time interval, as a Unix timestamp, i.e. the number of seconds since January 1, 1970 UTC. The special value 0 can be used to include any meaasure, without ending limit.'},ret:'an instance of YDataSet, providing access to historical data. Past measures can be loaded progressively using methods from the YDataSet object.'};
+doc['GroundSpeed']['get_reportFrequency']={syn:'Returns the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function.',lib:'groundspeed.get_reportFrequency()',pro:'def get_reportFrequency()',cmt:'<p>Returns the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function.</p>',ret:'a string corresponding to the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function',ext:'On failure, throws an exception or returns <tt>Y_REPORTFREQUENCY_INVALID</tt>.'};
+doc['GroundSpeed']['get_resolution']={syn:'Returns the resolution of the measured values.',lib:'groundspeed.get_resolution()',pro:'def get_resolution()',cmt:'<p>Returns the resolution of the measured values. The resolution corresponds to the numerical precision of the measures, which is not always the same as the actual precision of the sensor.</p>',ret:'a floating point number corresponding to the resolution of the measured values',ext:'On failure, throws an exception or returns <tt>Y_RESOLUTION_INVALID</tt>.'};
+doc['GroundSpeed']['get_sensorState']={syn:'Returns the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now.',lib:'groundspeed.get_sensorState()',pro:'def get_sensorState()',cmt:'<p>Returns the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now.</p>',ret:'an integer corresponding to the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now',ext:'On failure, throws an exception or returns <tt>Y_SENSORSTATE_INVALID</tt>.'};
+doc['GroundSpeed']['get_unit']={syn:'Returns the measuring unit for the ground speed.',lib:'groundspeed.get_unit()',pro:'def get_unit()',cmt:'<p>Returns the measuring unit for the ground speed.</p>',ret:'a string corresponding to the measuring unit for the ground speed',ext:'On failure, throws an exception or returns <tt>Y_UNIT_INVALID</tt>.'};
+doc['GroundSpeed']['get_userData']={syn:'Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>.',lib:'groundspeed.get_userData()',pro:'def get_userData()',cmt:'<p>Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>. This attribute is never touched directly by the API, and is at disposal of the caller to store a context.</p>',ret:'the object stored previously by the caller.'};
+doc['GroundSpeed']['isOnline']={syn:'Checks if the ground speed sensor is currently reachable, without raising any error.',lib:'groundspeed.isOnline()',pro:'def isOnline()',cmt:'<p>Checks if the ground speed sensor is currently reachable, without raising any error. If there is a cached value for the ground speed sensor in cache, that has not yet expired, the device is considered reachable. No exception is raised if there is an error while trying to contact the device hosting the ground speed sensor.</p>',ret:'<tt>true</tt> if the ground speed sensor can be reached, and <tt>false</tt> otherwise'};
+doc['GroundSpeed']['load']={syn:'Preloads the ground speed sensor cache with a specified validity duration.',lib:'groundspeed.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Preloads the ground speed sensor cache with a specified validity duration. By default, whenever accessing a device, all function attributes are kept in cache for the standard duration (5 ms). This method can be used to temporarily mark the cache as valid for a longer period, in order to reduce network traffic for instance.</p>',par:{msValidity:'an integer corresponding to the validity attributed to the loaded function parameters, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['GroundSpeed']['loadAttribute']={syn:'Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.',lib:'groundspeed.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'On failure, throws an exception or returns an empty string.'};
+doc['GroundSpeed']['loadCalibrationPoints']={syn:'Retrieves error correction data points previously entered using the method <tt>calibrateFromPoints</tt>.',lib:'groundspeed.loadCalibrationPoints()',pro:'def loadCalibrationPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Retrieves error correction data points previously entered using the method <tt>calibrateFromPoints</tt>.</p>',par:{rawValues:'array of floating point numbers, that will be filled by the function with the raw sensor values for the correction points.',refValues:'array of floating point numbers, that will be filled by the function with the desired values for the correction points.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['GroundSpeed']['muteValueCallbacks']={syn:'Disable the propagation of every new advertised value to the parent hub.',lib:'groundspeed.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>Disable the propagation of every new advertised value to the parent hub. You can use this function to save bandwidth and CPU on computers with limited resources, or to prevent unwanted invocations of the HTTP callback. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['GroundSpeed']['nextGroundSpeed']={syn:'Continues the enumeration of ground speed sensors started using <tt>yFirstGroundSpeed()</tt>.',lib:'groundspeed.nextGroundSpeed()',pro:'def nextGroundSpeed()',cmt:'<p>Continues the enumeration of ground speed sensors started using <tt>yFirstGroundSpeed()</tt>.</p>',ret:'a pointer to a <tt>YGroundSpeed</tt> object, corresponding to a ground speed sensor currently online, or a <tt>null</tt> pointer if there are no more ground speed sensors to enumerate.'};
+doc['GroundSpeed']['registerTimedReportCallback']={syn:'Registers the callback function that is invoked on every periodic timed notification.',lib:'groundspeed.registerTimedReportCallback()',pro:'def registerTimedReportCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every periodic timed notification. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and an YMeasure object describing the new advertised value.'}};
+doc['GroundSpeed']['registerValueCallback']={syn:'Registers the callback function that is invoked on every change of advertised value.',lib:'groundspeed.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every change of advertised value. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and the character string describing the new advertised value.'}};
+doc['GroundSpeed']['set_highestValue']={syn:'Changes the recorded maximal value observed.',lib:'groundspeed.set_highestValue()',pro:'def set_highestValue(<span id=pn>newval</span>)',cmt:'<p>Changes the recorded maximal value observed.</p>',par:{newval:'a floating point number corresponding to the recorded maximal value observed'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['GroundSpeed']['set_logFrequency']={syn:'Changes the datalogger recording frequency for this function.',lib:'groundspeed.set_logFrequency()',pro:'def set_logFrequency(<span id=pn>newval</span>)',cmt:'<p>Changes the datalogger recording frequency for this function. The frequency can be specified as samples per second, as sample per minute (for instance \x2215/m\x22) or in samples per hour (eg. \x224/h\x22). To disable recording for this function, use the value \x22OFF\x22.</p>',par:{newval:'a string corresponding to the datalogger recording frequency for this function'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['GroundSpeed']['set_logicalName']={syn:'Changes the logical name of the ground speed sensor.',lib:'groundspeed.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Changes the logical name of the ground speed sensor. You can use <tt>yCheckLogicalName()</tt> prior to this call to make sure that your parameter is valid. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the logical name of the ground speed sensor.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['GroundSpeed']['set_lowestValue']={syn:'Changes the recorded minimal value observed.',lib:'groundspeed.set_lowestValue()',pro:'def set_lowestValue(<span id=pn>newval</span>)',cmt:'<p>Changes the recorded minimal value observed.</p>',par:{newval:'a floating point number corresponding to the recorded minimal value observed'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['GroundSpeed']['set_reportFrequency']={syn:'Changes the timed value notification frequency for this function.',lib:'groundspeed.set_reportFrequency()',pro:'def set_reportFrequency(<span id=pn>newval</span>)',cmt:'<p>Changes the timed value notification frequency for this function. The frequency can be specified as samples per second, as sample per minute (for instance \x2215/m\x22) or in samples per hour (eg. \x224/h\x22). To disable timed value notifications for this function, use the value \x22OFF\x22.</p>',par:{newval:'a string corresponding to the timed value notification frequency for this function'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['GroundSpeed']['set_resolution']={syn:'Changes the resolution of the measured physical values.',lib:'groundspeed.set_resolution()',pro:'def set_resolution(<span id=pn>newval</span>)',cmt:'<p>Changes the resolution of the measured physical values. The resolution corresponds to the numerical precision when displaying value. It does not change the precision of the measure itself.</p>',par:{newval:'a floating point number corresponding to the resolution of the measured physical values'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['GroundSpeed']['set_userData']={syn:'Stores a user context provided as argument in the userData attribute of the function.',lib:'groundspeed.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Stores a user context provided as argument in the userData attribute of the function. This attribute is never touched by the API, and is at disposal of the caller to store a context.</p>',par:{data:'any kind of object to be stored'}};
+doc['GroundSpeed']['startDataLogger']={syn:'Starts the data logger on the device.',lib:'groundspeed.startDataLogger()',pro:'def startDataLogger()',cmt:'<p>Starts the data logger on the device. Note that the data logger will only save the measures on this sensor if the logFrequency is not set to \x22OFF\x22.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.'};
+doc['GroundSpeed']['stopDataLogger']={syn:'Stops the datalogger on the device.',lib:'groundspeed.stopDataLogger()',pro:'def stopDataLogger()',cmt:'<p>Stops the datalogger on the device.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.'};
+doc['GroundSpeed']['unmuteValueCallbacks']={syn:'Re-enable the propagation of every new advertised value to the parent hub.',lib:'groundspeed.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>Re-enable the propagation of every new advertised value to the parent hub. This function reverts the effect of a previous call to <tt>muteValueCallbacks()</tt>. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+//--- (end of generated code: GroundSpeed)
+//--- (generated code: PowerOutput)
+doc['PowerOutput']={'':{syn:'External power supply control interface',inc:'from yocto_poweroutput import *',cmt:'<p>Yoctopuce application programming interface allows you to control the power ouput featured on some devices such as the Yocto-Serial.</p>'}};
+doc['PowerOutput']['FindPowerOutput']={syn:'Retrieves a dual power ouput control for a given identifier.',lib:'YPowerOutput.FindPowerOutput()',pro:'def FindPowerOutput(<span id=pn>func</span>)',cmt:'<p>Retrieves a dual power ouput control for a given identifier. The identifier can be specified using several formats:<br> <ul> <li>FunctionLogicalName</li> <li>ModuleSerialNumber.FunctionIdentifier</li> <li>ModuleSerialNumber.FunctionLogicalName</li> <li>ModuleLogicalName.FunctionIdentifier</li> <li>ModuleLogicalName.FunctionLogicalName</li> </ul></p><p> This function does not require that the power ouput control is online at the time it is invoked. The returned object is nevertheless valid. Use the method <tt>YPowerOutput.isOnline()</tt> to test if the power ouput control is indeed online at a given time. In case of ambiguity when looking for a dual power ouput control by logical name, no error is notified: the first instance found is returned. The search is performed first by hardware name, then by logical name.</p>',par:{func:'a string that uniquely characterizes the power ouput control'},ret:'a <tt>YPowerOutput</tt> object allowing you to drive the power ouput control.'};
+doc['PowerOutput']['FirstPowerOutput']={syn:'Starts the enumeration of dual power ouput controls currently accessible.',lib:'YPowerOutput.FirstPowerOutput()',pro:'def FirstPowerOutput()',cmt:'<p>Starts the enumeration of dual power ouput controls currently accessible. Use the method <tt>YPowerOutput.nextPowerOutput()</tt> to iterate on next dual power ouput controls.</p>',ret:'a pointer to a <tt>YPowerOutput</tt> object, corresponding to the first dual power ouput control currently online, or a <tt>null</tt> pointer if there are none.'};
+doc['PowerOutput']['clearCache']={syn:'Invalidates the cache.',lib:'poweroutput.clearCache()',pro:'def clearCache()',cmt:'<p>Invalidates the cache. Invalidates the cache of the power ouput control attributes. Forces the next call to get_xxx() or loadxxx() to use values that come from the device.</p>'};
+doc['PowerOutput']['describe']={syn:'Returns a short text that describes unambiguously the instance of the power ouput control in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'poweroutput.describe()',pro:'def describe()',cmt:'<p>Returns a short text that describes unambiguously the instance of the power ouput control in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. More precisely, <tt>TYPE</tt> is the type of the function, <tt>NAME</tt> it the name used for the first access to the function, <tt>SERIAL</tt> is the serial number of the module if the module is connected or <tt>\x22unresolved\x22</tt>, and <tt>FUNCTIONID</tt> is the hardware identifier of the function if the module is connected. For example, this method returns <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> if the module is already connected or <tt>Relay(BadCustomeName.relay1)=unresolved</tt> if the module has not yet been connected. This method does not trigger any USB or TCP transaction and can therefore be used in a debugger.</p>',ret:'a string that describes the power ouput control (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['PowerOutput']['get_advertisedValue']={syn:'Returns the current value of the power ouput control (no more than 6 characters).',lib:'poweroutput.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Returns the current value of the power ouput control (no more than 6 characters).</p>',ret:'a string corresponding to the current value of the power ouput control (no more than 6 characters).',ext:'On failure, throws an exception or returns <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['PowerOutput']['get_errorMessage']={syn:'Returns the error message of the latest error with the power ouput control.',lib:'poweroutput.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Returns the error message of the latest error with the power ouput control. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a string corresponding to the latest error message that occured while using the power ouput control object'};
+doc['PowerOutput']['get_errorType']={syn:'Returns the numerical error code of the latest error with the power ouput control.',lib:'poweroutput.get_errorType()',pro:'def get_errorType()',cmt:'<p>Returns the numerical error code of the latest error with the power ouput control. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a number corresponding to the code of the latest error that occurred while using the power ouput control object'};
+doc['PowerOutput']['get_friendlyName']={syn:'Returns a global identifier of the power ouput control in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>.',lib:'poweroutput.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Returns a global identifier of the power ouput control in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>. The returned string uses the logical names of the module and of the power ouput control if they are defined, otherwise the serial number of the module and the hardware identifier of the power ouput control (for example: <tt>MyCustomName.relay1</tt>)</p>',ret:'a string that uniquely identifies the power ouput control using logical names (ex: <tt>MyCustomName.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['PowerOutput']['get_functionDescriptor']={syn:'Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function.',lib:'poweroutput.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function. This identifier can be used to test if two instances of <tt>YFunction</tt> reference the same physical function on the same physical device.</p>',ret:'an identifier of type <tt>YFUN_DESCR</tt>.',ext:'If the function has never been contacted, the returned value is <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>.'};
+doc['PowerOutput']['get_functionId']={syn:'Returns the hardware identifier of the power ouput control, without reference to the module.',lib:'poweroutput.get_functionId()',pro:'def get_functionId()',cmt:'<p>Returns the hardware identifier of the power ouput control, without reference to the module. For example <tt>relay1</tt></p>',ret:'a string that identifies the power ouput control (ex: <tt>relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['PowerOutput']['get_hardwareId']={syn:'Returns the unique hardware identifier of the power ouput control in the form <tt>SERIAL.FUNCTIONID</tt>.',lib:'poweroutput.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Returns the unique hardware identifier of the power ouput control in the form <tt>SERIAL.FUNCTIONID</tt>. The unique hardware identifier is composed of the device serial number and of the hardware identifier of the power ouput control (for example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'a string that uniquely identifies the power ouput control (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['PowerOutput']['get_logicalName']={syn:'Returns the logical name of the power ouput control.',lib:'poweroutput.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Returns the logical name of the power ouput control.</p>',ret:'a string corresponding to the logical name of the power ouput control.',ext:'On failure, throws an exception or returns <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['PowerOutput']['get_module']={syn:'Gets the <tt>YModule</tt> object for the device on which the function is located.',lib:'poweroutput.get_module()',pro:'def get_module()',cmt:'<p>Gets the <tt>YModule</tt> object for the device on which the function is located. If the function cannot be located on any module, the returned instance of <tt>YModule</tt> is not shown as on-line.</p>',ret:'an instance of <tt>YModule</tt>'};
+doc['PowerOutput']['get_userData']={syn:'Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>.',lib:'poweroutput.get_userData()',pro:'def get_userData()',cmt:'<p>Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>. This attribute is never touched directly by the API, and is at disposal of the caller to store a context.</p>',ret:'the object stored previously by the caller.'};
+doc['PowerOutput']['get_voltage']={syn:'Returns the voltage on the power ouput featured by the module.',lib:'poweroutput.get_voltage()',pro:'def get_voltage()',cmt:'<p>Returns the voltage on the power ouput featured by the module.</p>',ret:'a value among <tt>Y_VOLTAGE_OFF</tt>, <tt>Y_VOLTAGE_OUT3V3</tt> and <tt>Y_VOLTAGE_OUT5V</tt> corresponding to the voltage on the power ouput featured by the module',ext:'On failure, throws an exception or returns <tt>Y_VOLTAGE_INVALID</tt>.'};
+doc['PowerOutput']['isOnline']={syn:'Checks if the power ouput control is currently reachable, without raising any error.',lib:'poweroutput.isOnline()',pro:'def isOnline()',cmt:'<p>Checks if the power ouput control is currently reachable, without raising any error. If there is a cached value for the power ouput control in cache, that has not yet expired, the device is considered reachable. No exception is raised if there is an error while trying to contact the device hosting the power ouput control.</p>',ret:'<tt>true</tt> if the power ouput control can be reached, and <tt>false</tt> otherwise'};
+doc['PowerOutput']['load']={syn:'Preloads the power ouput control cache with a specified validity duration.',lib:'poweroutput.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Preloads the power ouput control cache with a specified validity duration. By default, whenever accessing a device, all function attributes are kept in cache for the standard duration (5 ms). This method can be used to temporarily mark the cache as valid for a longer period, in order to reduce network traffic for instance.</p>',par:{msValidity:'an integer corresponding to the validity attributed to the loaded function parameters, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['PowerOutput']['loadAttribute']={syn:'Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.',lib:'poweroutput.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'On failure, throws an exception or returns an empty string.'};
+doc['PowerOutput']['muteValueCallbacks']={syn:'Disable the propagation of every new advertised value to the parent hub.',lib:'poweroutput.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>Disable the propagation of every new advertised value to the parent hub. You can use this function to save bandwidth and CPU on computers with limited resources, or to prevent unwanted invocations of the HTTP callback. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['PowerOutput']['nextPowerOutput']={syn:'Continues the enumeration of dual power ouput controls started using <tt>yFirstPowerOutput()</tt>.',lib:'poweroutput.nextPowerOutput()',pro:'def nextPowerOutput()',cmt:'<p>Continues the enumeration of dual power ouput controls started using <tt>yFirstPowerOutput()</tt>.</p>',ret:'a pointer to a <tt>YPowerOutput</tt> object, corresponding to a dual power ouput control currently online, or a <tt>null</tt> pointer if there are no more dual power ouput controls to enumerate.'};
+doc['PowerOutput']['registerValueCallback']={syn:'Registers the callback function that is invoked on every change of advertised value.',lib:'poweroutput.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every change of advertised value. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and the character string describing the new advertised value.'}};
+doc['PowerOutput']['set_logicalName']={syn:'Changes the logical name of the power ouput control.',lib:'poweroutput.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Changes the logical name of the power ouput control. You can use <tt>yCheckLogicalName()</tt> prior to this call to make sure that your parameter is valid. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the logical name of the power ouput control.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['PowerOutput']['set_userData']={syn:'Stores a user context provided as argument in the userData attribute of the function.',lib:'poweroutput.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Stores a user context provided as argument in the userData attribute of the function. This attribute is never touched by the API, and is at disposal of the caller to store a context.</p>',par:{data:'any kind of object to be stored'}};
+doc['PowerOutput']['set_voltage']={syn:'Changes the voltage on the power output provided by the module.',lib:'poweroutput.set_voltage()',pro:'def set_voltage(<span id=pn>newval</span>)',cmt:'<p>Changes the voltage on the power output provided by the module. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a value among <tt>Y_VOLTAGE_OFF</tt>, <tt>Y_VOLTAGE_OUT3V3</tt> and <tt>Y_VOLTAGE_OUT5V</tt> corresponding to the voltage on the power output provided by the module'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['PowerOutput']['unmuteValueCallbacks']={syn:'Re-enable the propagation of every new advertised value to the parent hub.',lib:'poweroutput.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>Re-enable the propagation of every new advertised value to the parent hub. This function reverts the effect of a previous call to <tt>muteValueCallbacks()</tt>. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+//--- (end of generated code: PowerOutput)
+//--- (generated code: Cellular)
+doc['Cellular']={'':{syn:'Cellular function interface',inc:'from yocto_cellular import *',cmt:'<p>YCellular functions provides control over cellular network parameters and status for devices that are GSM-enabled.</p>'}};
+doc['Cellular']['FindCellular']={syn:'Retrieves a cellular interface for a given identifier.',lib:'YCellular.FindCellular()',pro:'def FindCellular(<span id=pn>func</span>)',cmt:'<p>Retrieves a cellular interface for a given identifier. The identifier can be specified using several formats:<br> <ul> <li>FunctionLogicalName</li> <li>ModuleSerialNumber.FunctionIdentifier</li> <li>ModuleSerialNumber.FunctionLogicalName</li> <li>ModuleLogicalName.FunctionIdentifier</li> <li>ModuleLogicalName.FunctionLogicalName</li> </ul></p><p> This function does not require that the cellular interface is online at the time it is invoked. The returned object is nevertheless valid. Use the method <tt>YCellular.isOnline()</tt> to test if the cellular interface is indeed online at a given time. In case of ambiguity when looking for a cellular interface by logical name, no error is notified: the first instance found is returned. The search is performed first by hardware name, then by logical name.</p>',par:{func:'a string that uniquely characterizes the cellular interface'},ret:'a <tt>YCellular</tt> object allowing you to drive the cellular interface.'};
+doc['Cellular']['FirstCellular']={syn:'Starts the enumeration of cellular interfaces currently accessible.',lib:'YCellular.FirstCellular()',pro:'def FirstCellular()',cmt:'<p>Starts the enumeration of cellular interfaces currently accessible. Use the method <tt>YCellular.nextCellular()</tt> to iterate on next cellular interfaces.</p>',ret:'a pointer to a <tt>YCellular</tt> object, corresponding to the first cellular interface currently online, or a <tt>null</tt> pointer if there are none.'};
+doc['Cellular']['_AT']={syn:'Sends an AT command to the GSM module and returns the command output.',lib:'cellular._AT()',pro:'def _AT(<span id=pn>cmd</span>)',cmt:'<p>Sends an AT command to the GSM module and returns the command output. The command will only execute when the GSM module is in standard command state, and should leave it in the exact same state. Use this function with great care !</p>',par:{cmd:'the AT command to execute, like for instance: \x22+CCLK?\x22.'},ret:'a string with the result of the commands. Empty lines are automatically removed from the output.'};
+doc['Cellular']['clearCache']={syn:'Invalidates the cache.',lib:'cellular.clearCache()',pro:'def clearCache()',cmt:'<p>Invalidates the cache. Invalidates the cache of the cellular interface attributes. Forces the next call to get_xxx() or loadxxx() to use values that come from the device.</p>'};
+doc['Cellular']['clearDataCounters']={syn:'Clear the transmitted data counters.',lib:'cellular.clearDataCounters()',pro:'def clearDataCounters()',cmt:'<p>Clear the transmitted data counters.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Cellular']['describe']={syn:'Returns a short text that describes unambiguously the instance of the cellular interface in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'cellular.describe()',pro:'def describe()',cmt:'<p>Returns a short text that describes unambiguously the instance of the cellular interface in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. More precisely, <tt>TYPE</tt> is the type of the function, <tt>NAME</tt> it the name used for the first access to the function, <tt>SERIAL</tt> is the serial number of the module if the module is connected or <tt>\x22unresolved\x22</tt>, and <tt>FUNCTIONID</tt> is the hardware identifier of the function if the module is connected. For example, this method returns <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> if the module is already connected or <tt>Relay(BadCustomeName.relay1)=unresolved</tt> if the module has not yet been connected. This method does not trigger any USB or TCP transaction and can therefore be used in a debugger.</p>',ret:'a string that describes the cellular interface (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['Cellular']['get_advertisedValue']={syn:'Returns the current value of the cellular interface (no more than 6 characters).',lib:'cellular.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Returns the current value of the cellular interface (no more than 6 characters).</p>',ret:'a string corresponding to the current value of the cellular interface (no more than 6 characters).',ext:'On failure, throws an exception or returns <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['Cellular']['get_airplaneMode']={syn:'Returns true if the airplane mode is active (radio turned off).',lib:'cellular.get_airplaneMode()',pro:'def get_airplaneMode()',cmt:'<p>Returns true if the airplane mode is active (radio turned off).</p>',ret:'either <tt>Y_AIRPLANEMODE_OFF</tt> or <tt>Y_AIRPLANEMODE_ON</tt>, according to true if the airplane mode is active (radio turned off)',ext:'On failure, throws an exception or returns <tt>Y_AIRPLANEMODE_INVALID</tt>.'};
+doc['Cellular']['get_apn']={syn:'Returns the Access Point Name (APN) to be used, if needed.',lib:'cellular.get_apn()',pro:'def get_apn()',cmt:'<p>Returns the Access Point Name (APN) to be used, if needed. When left blank, the APN suggested by the cell operator will be used.</p>',ret:'a string corresponding to the Access Point Name (APN) to be used, if needed',ext:'On failure, throws an exception or returns <tt>Y_APN_INVALID</tt>.'};
+doc['Cellular']['get_apnSecret']={syn:'Returns an opaque string if APN authentication parameters have been configured in the device, or an empty string otherwise.',lib:'cellular.get_apnSecret()',pro:'def get_apnSecret()',cmt:'<p>Returns an opaque string if APN authentication parameters have been configured in the device, or an empty string otherwise. To configure these parameters, use <tt>set_apnAuth()</tt>.</p>',ret:'a string corresponding to an opaque string if APN authentication parameters have been configured in the device, or an empty string otherwise',ext:'On failure, throws an exception or returns <tt>Y_APNSECRET_INVALID</tt>.'};
+doc['Cellular']['get_availableOperators']={syn:'Returns the list detected cell operators in the neighborhood.',lib:'cellular.get_availableOperators()',pro:'def get_availableOperators()',cmt:'<p>Returns the list detected cell operators in the neighborhood. This function will typically take between 30 seconds to 1 minute to return. Note that any SIM card can usually only connect to specific operators. All networks returned by this function might therefore not be available for connection.</p>',ret:'a list of string (cell operator names).'};
+doc['Cellular']['get_cellIdentifier']={syn:'Returns the unique identifier of the cellular antenna in use: MCC, MNC, LAC and Cell ID.',lib:'cellular.get_cellIdentifier()',pro:'def get_cellIdentifier()',cmt:'<p>Returns the unique identifier of the cellular antenna in use: MCC, MNC, LAC and Cell ID.</p>',ret:'a string corresponding to the unique identifier of the cellular antenna in use: MCC, MNC, LAC and Cell ID',ext:'On failure, throws an exception or returns <tt>Y_CELLIDENTIFIER_INVALID</tt>.'};
+doc['Cellular']['get_cellOperator']={syn:'Returns the name of the cell operator currently in use.',lib:'cellular.get_cellOperator()',pro:'def get_cellOperator()',cmt:'<p>Returns the name of the cell operator currently in use.</p>',ret:'a string corresponding to the name of the cell operator currently in use',ext:'On failure, throws an exception or returns <tt>Y_CELLOPERATOR_INVALID</tt>.'};
+doc['Cellular']['get_cellType']={syn:'Active cellular connection type.',lib:'cellular.get_cellType()',pro:'def get_cellType()',cmt:'<p>Active cellular connection type.</p>',ret:'a value among <tt>Y_CELLTYPE_GPRS</tt>, <tt>Y_CELLTYPE_EGPRS</tt>, <tt>Y_CELLTYPE_WCDMA</tt>, <tt>Y_CELLTYPE_HSDPA</tt>, <tt>Y_CELLTYPE_NONE</tt> and <tt>Y_CELLTYPE_CDMA</tt>',ext:'On failure, throws an exception or returns <tt>Y_CELLTYPE_INVALID</tt>.'};
+doc['Cellular']['get_dataReceived']={syn:'Returns the number of bytes received so far.',lib:'cellular.get_dataReceived()',pro:'def get_dataReceived()',cmt:'<p>Returns the number of bytes received so far.</p>',ret:'an integer corresponding to the number of bytes received so far',ext:'On failure, throws an exception or returns <tt>Y_DATARECEIVED_INVALID</tt>.'};
+doc['Cellular']['get_dataSent']={syn:'Returns the number of bytes sent so far.',lib:'cellular.get_dataSent()',pro:'def get_dataSent()',cmt:'<p>Returns the number of bytes sent so far.</p>',ret:'an integer corresponding to the number of bytes sent so far',ext:'On failure, throws an exception or returns <tt>Y_DATASENT_INVALID</tt>.'};
+doc['Cellular']['get_enableData']={syn:'Returns the condition for enabling IP data services (GPRS).',lib:'cellular.get_enableData()',pro:'def get_enableData()',cmt:'<p>Returns the condition for enabling IP data services (GPRS). When data services are disabled, SMS are the only mean of communication.</p>',ret:'a value among <tt>Y_ENABLEDATA_HOMENETWORK</tt>, <tt>Y_ENABLEDATA_ROAMING</tt>, <tt>Y_ENABLEDATA_NEVER</tt> and <tt>Y_ENABLEDATA_NEUTRALITY</tt> corresponding to the condition for enabling IP data services (GPRS)',ext:'On failure, throws an exception or returns <tt>Y_ENABLEDATA_INVALID</tt>.'};
+doc['Cellular']['get_errorMessage']={syn:'Returns the error message of the latest error with the cellular interface.',lib:'cellular.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Returns the error message of the latest error with the cellular interface. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a string corresponding to the latest error message that occured while using the cellular interface object'};
+doc['Cellular']['get_errorType']={syn:'Returns the numerical error code of the latest error with the cellular interface.',lib:'cellular.get_errorType()',pro:'def get_errorType()',cmt:'<p>Returns the numerical error code of the latest error with the cellular interface. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a number corresponding to the code of the latest error that occurred while using the cellular interface object'};
+doc['Cellular']['get_friendlyName']={syn:'Returns a global identifier of the cellular interface in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>.',lib:'cellular.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Returns a global identifier of the cellular interface in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>. The returned string uses the logical names of the module and of the cellular interface if they are defined, otherwise the serial number of the module and the hardware identifier of the cellular interface (for example: <tt>MyCustomName.relay1</tt>)</p>',ret:'a string that uniquely identifies the cellular interface using logical names (ex: <tt>MyCustomName.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['Cellular']['get_functionDescriptor']={syn:'Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function.',lib:'cellular.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function. This identifier can be used to test if two instances of <tt>YFunction</tt> reference the same physical function on the same physical device.</p>',ret:'an identifier of type <tt>YFUN_DESCR</tt>.',ext:'If the function has never been contacted, the returned value is <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>.'};
+doc['Cellular']['get_functionId']={syn:'Returns the hardware identifier of the cellular interface, without reference to the module.',lib:'cellular.get_functionId()',pro:'def get_functionId()',cmt:'<p>Returns the hardware identifier of the cellular interface, without reference to the module. For example <tt>relay1</tt></p>',ret:'a string that identifies the cellular interface (ex: <tt>relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['Cellular']['get_hardwareId']={syn:'Returns the unique hardware identifier of the cellular interface in the form <tt>SERIAL.FUNCTIONID</tt>.',lib:'cellular.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Returns the unique hardware identifier of the cellular interface in the form <tt>SERIAL.FUNCTIONID</tt>. The unique hardware identifier is composed of the device serial number and of the hardware identifier of the cellular interface (for example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'a string that uniquely identifies the cellular interface (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['Cellular']['get_imsi']={syn:'Returns an opaque string if a PIN code has been configured in the device to access the SIM card, or an empty string if none has been configured or if the code provided was rejected by the SIM card.',lib:'cellular.get_imsi()',pro:'def get_imsi()',cmt:'<p>Returns an opaque string if a PIN code has been configured in the device to access the SIM card, or an empty string if none has been configured or if the code provided was rejected by the SIM card.</p>',ret:'a string corresponding to an opaque string if a PIN code has been configured in the device to access the SIM card, or an empty string if none has been configured or if the code provided was rejected by the SIM card',ext:'On failure, throws an exception or returns <tt>Y_IMSI_INVALID</tt>.'};
+doc['Cellular']['get_linkQuality']={syn:'Returns the link quality, expressed in percent.',lib:'cellular.get_linkQuality()',pro:'def get_linkQuality()',cmt:'<p>Returns the link quality, expressed in percent.</p>',ret:'an integer corresponding to the link quality, expressed in percent',ext:'On failure, throws an exception or returns <tt>Y_LINKQUALITY_INVALID</tt>.'};
+doc['Cellular']['get_lockedOperator']={syn:'Returns the name of the only cell operator to use if automatic choice is disabled, or an empty string if the SIM card will automatically choose among available cell operators.',lib:'cellular.get_lockedOperator()',pro:'def get_lockedOperator()',cmt:'<p>Returns the name of the only cell operator to use if automatic choice is disabled, or an empty string if the SIM card will automatically choose among available cell operators.</p>',ret:'a string corresponding to the name of the only cell operator to use if automatic choice is disabled, or an empty string if the SIM card will automatically choose among available cell operators',ext:'On failure, throws an exception or returns <tt>Y_LOCKEDOPERATOR_INVALID</tt>.'};
+doc['Cellular']['get_logicalName']={syn:'Returns the logical name of the cellular interface.',lib:'cellular.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Returns the logical name of the cellular interface.</p>',ret:'a string corresponding to the logical name of the cellular interface.',ext:'On failure, throws an exception or returns <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['Cellular']['get_message']={syn:'Returns the latest status message from the wireless interface.',lib:'cellular.get_message()',pro:'def get_message()',cmt:'<p>Returns the latest status message from the wireless interface.</p>',ret:'a string corresponding to the latest status message from the wireless interface',ext:'On failure, throws an exception or returns <tt>Y_MESSAGE_INVALID</tt>.'};
+doc['Cellular']['get_module']={syn:'Gets the <tt>YModule</tt> object for the device on which the function is located.',lib:'cellular.get_module()',pro:'def get_module()',cmt:'<p>Gets the <tt>YModule</tt> object for the device on which the function is located. If the function cannot be located on any module, the returned instance of <tt>YModule</tt> is not shown as on-line.</p>',ret:'an instance of <tt>YModule</tt>'};
+doc['Cellular']['get_pin']={syn:'Returns an opaque string if a PIN code has been configured in the device to access the SIM card, or an empty string if none has been configured or if the code provided was rejected by the SIM card.',lib:'cellular.get_pin()',pro:'def get_pin()',cmt:'<p>Returns an opaque string if a PIN code has been configured in the device to access the SIM card, or an empty string if none has been configured or if the code provided was rejected by the SIM card.</p>',ret:'a string corresponding to an opaque string if a PIN code has been configured in the device to access the SIM card, or an empty string if none has been configured or if the code provided was rejected by the SIM card',ext:'On failure, throws an exception or returns <tt>Y_PIN_INVALID</tt>.'};
+doc['Cellular']['get_pingInterval']={syn:'Returns the automated connectivity check interval, in seconds.',lib:'cellular.get_pingInterval()',pro:'def get_pingInterval()',cmt:'<p>Returns the automated connectivity check interval, in seconds.</p>',ret:'an integer corresponding to the automated connectivity check interval, in seconds',ext:'On failure, throws an exception or returns <tt>Y_PINGINTERVAL_INVALID</tt>.'};
+doc['Cellular']['get_userData']={syn:'Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>.',lib:'cellular.get_userData()',pro:'def get_userData()',cmt:'<p>Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>. This attribute is never touched directly by the API, and is at disposal of the caller to store a context.</p>',ret:'the object stored previously by the caller.'};
+doc['Cellular']['isOnline']={syn:'Checks if the cellular interface is currently reachable, without raising any error.',lib:'cellular.isOnline()',pro:'def isOnline()',cmt:'<p>Checks if the cellular interface is currently reachable, without raising any error. If there is a cached value for the cellular interface in cache, that has not yet expired, the device is considered reachable. No exception is raised if there is an error while trying to contact the device hosting the cellular interface.</p>',ret:'<tt>true</tt> if the cellular interface can be reached, and <tt>false</tt> otherwise'};
+doc['Cellular']['load']={syn:'Preloads the cellular interface cache with a specified validity duration.',lib:'cellular.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Preloads the cellular interface cache with a specified validity duration. By default, whenever accessing a device, all function attributes are kept in cache for the standard duration (5 ms). This method can be used to temporarily mark the cache as valid for a longer period, in order to reduce network traffic for instance.</p>',par:{msValidity:'an integer corresponding to the validity attributed to the loaded function parameters, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Cellular']['loadAttribute']={syn:'Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.',lib:'cellular.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'On failure, throws an exception or returns an empty string.'};
+doc['Cellular']['muteValueCallbacks']={syn:'Disable the propagation of every new advertised value to the parent hub.',lib:'cellular.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>Disable the propagation of every new advertised value to the parent hub. You can use this function to save bandwidth and CPU on computers with limited resources, or to prevent unwanted invocations of the HTTP callback. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Cellular']['nextCellular']={syn:'Continues the enumeration of cellular interfaces started using <tt>yFirstCellular()</tt>.',lib:'cellular.nextCellular()',pro:'def nextCellular()',cmt:'<p>Continues the enumeration of cellular interfaces started using <tt>yFirstCellular()</tt>.</p>',ret:'a pointer to a <tt>YCellular</tt> object, corresponding to a cellular interface currently online, or a <tt>null</tt> pointer if there are no more cellular interfaces to enumerate.'};
+doc['Cellular']['quickCellSurvey']={syn:'Returns a list of nearby cellular antennas, as required for quick geolocation of the device.',lib:'cellular.quickCellSurvey()',pro:'def quickCellSurvey()',cmt:'<p>Returns a list of nearby cellular antennas, as required for quick geolocation of the device. The first cell listed is the serving cell, and the next ones are the neighboor cells reported by the serving cell.</p>',ret:'a list of YCellRecords.'};
+doc['Cellular']['registerValueCallback']={syn:'Registers the callback function that is invoked on every change of advertised value.',lib:'cellular.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every change of advertised value. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and the character string describing the new advertised value.'}};
+doc['Cellular']['sendPUK']={syn:'Sends a PUK code to unlock the SIM card after three failed PIN code attempts, and setup a new PIN into the SIM card.',lib:'cellular.sendPUK()',pro:'def sendPUK(<span id=pn>puk</span>, <span id=pn>newPin</span>)',cmt:'<p>Sends a PUK code to unlock the SIM card after three failed PIN code attempts, and setup a new PIN into the SIM card. Only ten consecutives tentatives are permitted: after that, the SIM card will be blocked permanently without any mean of recovery to use it again. Note that after calling this method, you have usually to invoke method <tt>set_pin()</tt> to tell the YoctoHub which PIN to use in the future.</p>',par:{puk:'the SIM PUK code',newPin:'new PIN code to configure into the SIM card'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Cellular']['set_airplaneMode']={syn:'Changes the activation state of airplane mode (radio turned off).',lib:'cellular.set_airplaneMode()',pro:'def set_airplaneMode(<span id=pn>newval</span>)',cmt:'<p>Changes the activation state of airplane mode (radio turned off).</p>',par:{newval:'either <tt>Y_AIRPLANEMODE_OFF</tt> or <tt>Y_AIRPLANEMODE_ON</tt>, according to the activation state of airplane mode (radio turned off)'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Cellular']['set_apn']={syn:'Returns the Access Point Name (APN) to be used, if needed.',lib:'cellular.set_apn()',pro:'def set_apn(<span id=pn>newval</span>)',cmt:'<p>Returns the Access Point Name (APN) to be used, if needed. When left blank, the APN suggested by the cell operator will be used.</p>',par:{newval:'a string'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Cellular']['set_apnAuth']={syn:'Configure authentication parameters to connect to the APN.',lib:'cellular.set_apnAuth()',pro:'def set_apnAuth(<span id=pn>username</span>, <span id=pn>password</span>)',cmt:'<p>Configure authentication parameters to connect to the APN. Both PAP and CHAP authentication are supported.</p>',par:{username:'APN username',password:'APN password'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Cellular']['set_dataReceived']={syn:'Changes the value of the incoming data counter.',lib:'cellular.set_dataReceived()',pro:'def set_dataReceived(<span id=pn>newval</span>)',cmt:'<p>Changes the value of the incoming data counter.</p>',par:{newval:'an integer corresponding to the value of the incoming data counter'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Cellular']['set_dataSent']={syn:'Changes the value of the outgoing data counter.',lib:'cellular.set_dataSent()',pro:'def set_dataSent(<span id=pn>newval</span>)',cmt:'<p>Changes the value of the outgoing data counter.</p>',par:{newval:'an integer corresponding to the value of the outgoing data counter'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Cellular']['set_enableData']={syn:'Changes the condition for enabling IP data services (GPRS).',lib:'cellular.set_enableData()',pro:'def set_enableData(<span id=pn>newval</span>)',cmt:'<p>Changes the condition for enabling IP data services (GPRS). The service can be either fully deactivated, or limited to the SIM home network, or enabled for all partner networks (roaming). Caution: enabling data services on roaming networks may cause prohibitive communication costs !</p><p> When data services are disabled, SMS are the only mean of communication.</p>',par:{newval:'a value among <tt>Y_ENABLEDATA_HOMENETWORK</tt>, <tt>Y_ENABLEDATA_ROAMING</tt>, <tt>Y_ENABLEDATA_NEVER</tt> and <tt>Y_ENABLEDATA_NEUTRALITY</tt> corresponding to the condition for enabling IP data services (GPRS)'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Cellular']['set_lockedOperator']={syn:'Changes the name of the cell operator to be used.',lib:'cellular.set_lockedOperator()',pro:'def set_lockedOperator(<span id=pn>newval</span>)',cmt:'<p>Changes the name of the cell operator to be used. If the name is an empty string, the choice will be made automatically based on the SIM card. Otherwise, the selected operator is the only one that will be used.</p>',par:{newval:'a string corresponding to the name of the cell operator to be used'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Cellular']['set_logicalName']={syn:'Changes the logical name of the cellular interface.',lib:'cellular.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Changes the logical name of the cellular interface. You can use <tt>yCheckLogicalName()</tt> prior to this call to make sure that your parameter is valid. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the logical name of the cellular interface.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Cellular']['set_pin']={syn:'Changes the PIN code used by the module to access the SIM card.',lib:'cellular.set_pin()',pro:'def set_pin(<span id=pn>newval</span>)',cmt:'<p>Changes the PIN code used by the module to access the SIM card. This function does not change the code on the SIM card itself, but only changes the parameter used by the device to try to get access to it. If the SIM code does not work immediately on first try, it will be automatically forgotten and the message will be set to \x22Enter SIM PIN\x22. The method should then be invoked again with right correct PIN code. After three failed attempts in a row, the message is changed to \x22Enter SIM PUK\x22 and the SIM card PUK code must be provided using method <tt>sendPUK</tt>.</p><p> Remember to call the <tt>saveToFlash()</tt> method of the module to save the new value in the device flash.</p>',par:{newval:'a string corresponding to the PIN code used by the module to access the SIM card'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Cellular']['set_pingInterval']={syn:'Changes the automated connectivity check interval, in seconds.',lib:'cellular.set_pingInterval()',pro:'def set_pingInterval(<span id=pn>newval</span>)',cmt:'<p>Changes the automated connectivity check interval, in seconds.</p>',par:{newval:'an integer corresponding to the automated connectivity check interval, in seconds'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Cellular']['set_userData']={syn:'Stores a user context provided as argument in the userData attribute of the function.',lib:'cellular.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Stores a user context provided as argument in the userData attribute of the function. This attribute is never touched by the API, and is at disposal of the caller to store a context.</p>',par:{data:'any kind of object to be stored'}};
+doc['Cellular']['unmuteValueCallbacks']={syn:'Re-enable the propagation of every new advertised value to the parent hub.',lib:'cellular.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>Re-enable the propagation of every new advertised value to the parent hub. This function reverts the effect of a previous call to <tt>muteValueCallbacks()</tt>. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+//--- (end of generated code: Cellular)
+//--- (generated code: AudioOut)
+doc['AudioOut']={'':{syn:'AudioOut function interface',inc:'from yocto_audioout import *',cmt:'<p>The Yoctopuce application programming interface allows you to configure the volume of the outout.</p>'}};
+doc['AudioOut']['FindAudioOut']={syn:'Retrieves an audio output for a given identifier.',lib:'YAudioOut.FindAudioOut()',pro:'def FindAudioOut(<span id=pn>func</span>)',cmt:'<p>Retrieves an audio output for a given identifier. The identifier can be specified using several formats:<br> <ul> <li>FunctionLogicalName</li> <li>ModuleSerialNumber.FunctionIdentifier</li> <li>ModuleSerialNumber.FunctionLogicalName</li> <li>ModuleLogicalName.FunctionIdentifier</li> <li>ModuleLogicalName.FunctionLogicalName</li> </ul></p><p> This function does not require that the audio output is online at the time it is invoked. The returned object is nevertheless valid. Use the method <tt>YAudioOut.isOnline()</tt> to test if the audio output is indeed online at a given time. In case of ambiguity when looking for an audio output by logical name, no error is notified: the first instance found is returned. The search is performed first by hardware name, then by logical name.</p>',par:{func:'a string that uniquely characterizes the audio output'},ret:'a <tt>YAudioOut</tt> object allowing you to drive the audio output.'};
+doc['AudioOut']['FirstAudioOut']={syn:'Starts the enumeration of audio outputs currently accessible.',lib:'YAudioOut.FirstAudioOut()',pro:'def FirstAudioOut()',cmt:'<p>Starts the enumeration of audio outputs currently accessible. Use the method <tt>YAudioOut.nextAudioOut()</tt> to iterate on next audio outputs.</p>',ret:'a pointer to a <tt>YAudioOut</tt> object, corresponding to the first audio output currently online, or a <tt>null</tt> pointer if there are none.'};
+doc['AudioOut']['clearCache']={syn:'Invalidates the cache.',lib:'audioout.clearCache()',pro:'def clearCache()',cmt:'<p>Invalidates the cache. Invalidates the cache of the audio output attributes. Forces the next call to get_xxx() or loadxxx() to use values that come from the device.</p>'};
+doc['AudioOut']['describe']={syn:'Returns a short text that describes unambiguously the instance of the audio output in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'audioout.describe()',pro:'def describe()',cmt:'<p>Returns a short text that describes unambiguously the instance of the audio output in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. More precisely, <tt>TYPE</tt> is the type of the function, <tt>NAME</tt> it the name used for the first access to the function, <tt>SERIAL</tt> is the serial number of the module if the module is connected or <tt>\x22unresolved\x22</tt>, and <tt>FUNCTIONID</tt> is the hardware identifier of the function if the module is connected. For example, this method returns <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> if the module is already connected or <tt>Relay(BadCustomeName.relay1)=unresolved</tt> if the module has not yet been connected. This method does not trigger any USB or TCP transaction and can therefore be used in a debugger.</p>',ret:'a string that describes the audio output (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['AudioOut']['get_advertisedValue']={syn:'Returns the current value of the audio output (no more than 6 characters).',lib:'audioout.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Returns the current value of the audio output (no more than 6 characters).</p>',ret:'a string corresponding to the current value of the audio output (no more than 6 characters).',ext:'On failure, throws an exception or returns <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['AudioOut']['get_errorMessage']={syn:'Returns the error message of the latest error with the audio output.',lib:'audioout.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Returns the error message of the latest error with the audio output. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a string corresponding to the latest error message that occured while using the audio output object'};
+doc['AudioOut']['get_errorType']={syn:'Returns the numerical error code of the latest error with the audio output.',lib:'audioout.get_errorType()',pro:'def get_errorType()',cmt:'<p>Returns the numerical error code of the latest error with the audio output. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a number corresponding to the code of the latest error that occurred while using the audio output object'};
+doc['AudioOut']['get_friendlyName']={syn:'Returns a global identifier of the audio output in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>.',lib:'audioout.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Returns a global identifier of the audio output in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>. The returned string uses the logical names of the module and of the audio output if they are defined, otherwise the serial number of the module and the hardware identifier of the audio output (for example: <tt>MyCustomName.relay1</tt>)</p>',ret:'a string that uniquely identifies the audio output using logical names (ex: <tt>MyCustomName.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['AudioOut']['get_functionDescriptor']={syn:'Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function.',lib:'audioout.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function. This identifier can be used to test if two instances of <tt>YFunction</tt> reference the same physical function on the same physical device.</p>',ret:'an identifier of type <tt>YFUN_DESCR</tt>.',ext:'If the function has never been contacted, the returned value is <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>.'};
+doc['AudioOut']['get_functionId']={syn:'Returns the hardware identifier of the audio output, without reference to the module.',lib:'audioout.get_functionId()',pro:'def get_functionId()',cmt:'<p>Returns the hardware identifier of the audio output, without reference to the module. For example <tt>relay1</tt></p>',ret:'a string that identifies the audio output (ex: <tt>relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['AudioOut']['get_hardwareId']={syn:'Returns the unique hardware identifier of the audio output in the form <tt>SERIAL.FUNCTIONID</tt>.',lib:'audioout.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Returns the unique hardware identifier of the audio output in the form <tt>SERIAL.FUNCTIONID</tt>. The unique hardware identifier is composed of the device serial number and of the hardware identifier of the audio output (for example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'a string that uniquely identifies the audio output (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['AudioOut']['get_logicalName']={syn:'Returns the logical name of the audio output.',lib:'audioout.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Returns the logical name of the audio output.</p>',ret:'a string corresponding to the logical name of the audio output.',ext:'On failure, throws an exception or returns <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['AudioOut']['get_module']={syn:'Gets the <tt>YModule</tt> object for the device on which the function is located.',lib:'audioout.get_module()',pro:'def get_module()',cmt:'<p>Gets the <tt>YModule</tt> object for the device on which the function is located. If the function cannot be located on any module, the returned instance of <tt>YModule</tt> is not shown as on-line.</p>',ret:'an instance of <tt>YModule</tt>'};
+doc['AudioOut']['get_mute']={syn:'Returns the state of the mute function.',lib:'audioout.get_mute()',pro:'def get_mute()',cmt:'<p>Returns the state of the mute function.</p>',ret:'either <tt>Y_MUTE_FALSE</tt> or <tt>Y_MUTE_TRUE</tt>, according to the state of the mute function',ext:'On failure, throws an exception or returns <tt>Y_MUTE_INVALID</tt>.'};
+doc['AudioOut']['get_noSignalFor']={syn:'Returns the number of seconds elapsed without detecting a signal.',lib:'audioout.get_noSignalFor()',pro:'def get_noSignalFor()',cmt:'<p>Returns the number of seconds elapsed without detecting a signal.</p>',ret:'an integer corresponding to the number of seconds elapsed without detecting a signal',ext:'On failure, throws an exception or returns <tt>Y_NOSIGNALFOR_INVALID</tt>.'};
+doc['AudioOut']['get_signal']={syn:'Returns the detected output current level.',lib:'audioout.get_signal()',pro:'def get_signal()',cmt:'<p>Returns the detected output current level.</p>',ret:'an integer corresponding to the detected output current level',ext:'On failure, throws an exception or returns <tt>Y_SIGNAL_INVALID</tt>.'};
+doc['AudioOut']['get_userData']={syn:'Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>.',lib:'audioout.get_userData()',pro:'def get_userData()',cmt:'<p>Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>. This attribute is never touched directly by the API, and is at disposal of the caller to store a context.</p>',ret:'the object stored previously by the caller.'};
+doc['AudioOut']['get_volume']={syn:'Returns audio output volume, in per cents.',lib:'audioout.get_volume()',pro:'def get_volume()',cmt:'<p>Returns audio output volume, in per cents.</p>',ret:'an integer corresponding to audio output volume, in per cents',ext:'On failure, throws an exception or returns <tt>Y_VOLUME_INVALID</tt>.'};
+doc['AudioOut']['get_volumeRange']={syn:'Returns the supported volume range.',lib:'audioout.get_volumeRange()',pro:'def get_volumeRange()',cmt:'<p>Returns the supported volume range. The low value of the range corresponds to the minimal audible value. To completely mute the sound, use <tt>set_mute()</tt> instead of the <tt>set_volume()</tt>.</p>',ret:'a string corresponding to the supported volume range',ext:'On failure, throws an exception or returns <tt>Y_VOLUMERANGE_INVALID</tt>.'};
+doc['AudioOut']['isOnline']={syn:'Checks if the audio output is currently reachable, without raising any error.',lib:'audioout.isOnline()',pro:'def isOnline()',cmt:'<p>Checks if the audio output is currently reachable, without raising any error. If there is a cached value for the audio output in cache, that has not yet expired, the device is considered reachable. No exception is raised if there is an error while trying to contact the device hosting the audio output.</p>',ret:'<tt>true</tt> if the audio output can be reached, and <tt>false</tt> otherwise'};
+doc['AudioOut']['load']={syn:'Preloads the audio output cache with a specified validity duration.',lib:'audioout.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Preloads the audio output cache with a specified validity duration. By default, whenever accessing a device, all function attributes are kept in cache for the standard duration (5 ms). This method can be used to temporarily mark the cache as valid for a longer period, in order to reduce network traffic for instance.</p>',par:{msValidity:'an integer corresponding to the validity attributed to the loaded function parameters, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['AudioOut']['loadAttribute']={syn:'Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.',lib:'audioout.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'On failure, throws an exception or returns an empty string.'};
+doc['AudioOut']['muteValueCallbacks']={syn:'Disable the propagation of every new advertised value to the parent hub.',lib:'audioout.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>Disable the propagation of every new advertised value to the parent hub. You can use this function to save bandwidth and CPU on computers with limited resources, or to prevent unwanted invocations of the HTTP callback. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['AudioOut']['nextAudioOut']={syn:'Continues the enumeration of audio outputs started using <tt>yFirstAudioOut()</tt>.',lib:'audioout.nextAudioOut()',pro:'def nextAudioOut()',cmt:'<p>Continues the enumeration of audio outputs started using <tt>yFirstAudioOut()</tt>.</p>',ret:'a pointer to a <tt>YAudioOut</tt> object, corresponding to an audio output currently online, or a <tt>null</tt> pointer if there are no more audio outputs to enumerate.'};
+doc['AudioOut']['registerValueCallback']={syn:'Registers the callback function that is invoked on every change of advertised value.',lib:'audioout.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every change of advertised value. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and the character string describing the new advertised value.'}};
+doc['AudioOut']['set_logicalName']={syn:'Changes the logical name of the audio output.',lib:'audioout.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Changes the logical name of the audio output. You can use <tt>yCheckLogicalName()</tt> prior to this call to make sure that your parameter is valid. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the logical name of the audio output.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['AudioOut']['set_mute']={syn:'Changes the state of the mute function.',lib:'audioout.set_mute()',pro:'def set_mute(<span id=pn>newval</span>)',cmt:'<p>Changes the state of the mute function. Remember to call the matching module <tt>saveToFlash()</tt> method to save the setting permanently.</p>',par:{newval:'either <tt>Y_MUTE_FALSE</tt> or <tt>Y_MUTE_TRUE</tt>, according to the state of the mute function'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['AudioOut']['set_userData']={syn:'Stores a user context provided as argument in the userData attribute of the function.',lib:'audioout.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Stores a user context provided as argument in the userData attribute of the function. This attribute is never touched by the API, and is at disposal of the caller to store a context.</p>',par:{data:'any kind of object to be stored'}};
+doc['AudioOut']['set_volume']={syn:'Changes audio output volume, in per cents.',lib:'audioout.set_volume()',pro:'def set_volume(<span id=pn>newval</span>)',cmt:'<p>Changes audio output volume, in per cents.</p>',par:{newval:'an integer corresponding to audio output volume, in per cents'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['AudioOut']['unmuteValueCallbacks']={syn:'Re-enable the propagation of every new advertised value to the parent hub.',lib:'audioout.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>Re-enable the propagation of every new advertised value to the parent hub. This function reverts the effect of a previous call to <tt>muteValueCallbacks()</tt>. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+//--- (end of generated code: AudioOut)
+//--- (generated code: BluetoothLink)
+doc['BluetoothLink']={'':{syn:'BluetoothLink function interface',inc:'from yocto_bluetoothlink import *',cmt:'<p>BluetoothLink function provides control over bluetooth link and status for devices that are bluetooth-enabled.</p>'}};
+doc['BluetoothLink']['FindBluetoothLink']={syn:'Retrieves a cellular interface for a given identifier.',lib:'YBluetoothLink.FindBluetoothLink()',pro:'def FindBluetoothLink(<span id=pn>func</span>)',cmt:'<p>Retrieves a cellular interface for a given identifier. The identifier can be specified using several formats:<br> <ul> <li>FunctionLogicalName</li> <li>ModuleSerialNumber.FunctionIdentifier</li> <li>ModuleSerialNumber.FunctionLogicalName</li> <li>ModuleLogicalName.FunctionIdentifier</li> <li>ModuleLogicalName.FunctionLogicalName</li> </ul></p><p> This function does not require that the cellular interface is online at the time it is invoked. The returned object is nevertheless valid. Use the method <tt>YBluetoothLink.isOnline()</tt> to test if the cellular interface is indeed online at a given time. In case of ambiguity when looking for a cellular interface by logical name, no error is notified: the first instance found is returned. The search is performed first by hardware name, then by logical name.</p>',par:{func:'a string that uniquely characterizes the cellular interface'},ret:'a <tt>YBluetoothLink</tt> object allowing you to drive the cellular interface.'};
+doc['BluetoothLink']['FirstBluetoothLink']={syn:'Starts the enumeration of cellular interfaces currently accessible.',lib:'YBluetoothLink.FirstBluetoothLink()',pro:'def FirstBluetoothLink()',cmt:'<p>Starts the enumeration of cellular interfaces currently accessible. Use the method <tt>YBluetoothLink.nextBluetoothLink()</tt> to iterate on next cellular interfaces.</p>',ret:'a pointer to a <tt>YBluetoothLink</tt> object, corresponding to the first cellular interface currently online, or a <tt>null</tt> pointer if there are none.'};
+doc['BluetoothLink']['clearCache']={syn:'Invalidates the cache.',lib:'bluetoothlink.clearCache()',pro:'def clearCache()',cmt:'<p>Invalidates the cache. Invalidates the cache of the cellular interface attributes. Forces the next call to get_xxx() or loadxxx() to use values that come from the device.</p>'};
+doc['BluetoothLink']['connect']={syn:'Attempt to connect to the previously selected remote device.',lib:'bluetoothlink.connect()',pro:'def connect()',cmt:'<p>Attempt to connect to the previously selected remote device.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['BluetoothLink']['describe']={syn:'Returns a short text that describes unambiguously the instance of the cellular interface in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'bluetoothlink.describe()',pro:'def describe()',cmt:'<p>Returns a short text that describes unambiguously the instance of the cellular interface in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. More precisely, <tt>TYPE</tt> is the type of the function, <tt>NAME</tt> it the name used for the first access to the function, <tt>SERIAL</tt> is the serial number of the module if the module is connected or <tt>\x22unresolved\x22</tt>, and <tt>FUNCTIONID</tt> is the hardware identifier of the function if the module is connected. For example, this method returns <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> if the module is already connected or <tt>Relay(BadCustomeName.relay1)=unresolved</tt> if the module has not yet been connected. This method does not trigger any USB or TCP transaction and can therefore be used in a debugger.</p>',ret:'a string that describes the cellular interface (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['BluetoothLink']['disconnect']={syn:'Disconnect from the previously selected remote device.',lib:'bluetoothlink.disconnect()',pro:'def disconnect()',cmt:'<p>Disconnect from the previously selected remote device.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['BluetoothLink']['get_advertisedValue']={syn:'Returns the current value of the cellular interface (no more than 6 characters).',lib:'bluetoothlink.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Returns the current value of the cellular interface (no more than 6 characters).</p>',ret:'a string corresponding to the current value of the cellular interface (no more than 6 characters).',ext:'On failure, throws an exception or returns <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['BluetoothLink']['get_errorMessage']={syn:'Returns the error message of the latest error with the cellular interface.',lib:'bluetoothlink.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Returns the error message of the latest error with the cellular interface. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a string corresponding to the latest error message that occured while using the cellular interface object'};
+doc['BluetoothLink']['get_errorType']={syn:'Returns the numerical error code of the latest error with the cellular interface.',lib:'bluetoothlink.get_errorType()',pro:'def get_errorType()',cmt:'<p>Returns the numerical error code of the latest error with the cellular interface. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a number corresponding to the code of the latest error that occurred while using the cellular interface object'};
+doc['BluetoothLink']['get_friendlyName']={syn:'Returns a global identifier of the cellular interface in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>.',lib:'bluetoothlink.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Returns a global identifier of the cellular interface in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>. The returned string uses the logical names of the module and of the cellular interface if they are defined, otherwise the serial number of the module and the hardware identifier of the cellular interface (for example: <tt>MyCustomName.relay1</tt>)</p>',ret:'a string that uniquely identifies the cellular interface using logical names (ex: <tt>MyCustomName.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['BluetoothLink']['get_functionDescriptor']={syn:'Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function.',lib:'bluetoothlink.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function. This identifier can be used to test if two instances of <tt>YFunction</tt> reference the same physical function on the same physical device.</p>',ret:'an identifier of type <tt>YFUN_DESCR</tt>.',ext:'If the function has never been contacted, the returned value is <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>.'};
+doc['BluetoothLink']['get_functionId']={syn:'Returns the hardware identifier of the cellular interface, without reference to the module.',lib:'bluetoothlink.get_functionId()',pro:'def get_functionId()',cmt:'<p>Returns the hardware identifier of the cellular interface, without reference to the module. For example <tt>relay1</tt></p>',ret:'a string that identifies the cellular interface (ex: <tt>relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['BluetoothLink']['get_hardwareId']={syn:'Returns the unique hardware identifier of the cellular interface in the form <tt>SERIAL.FUNCTIONID</tt>.',lib:'bluetoothlink.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Returns the unique hardware identifier of the cellular interface in the form <tt>SERIAL.FUNCTIONID</tt>. The unique hardware identifier is composed of the device serial number and of the hardware identifier of the cellular interface (for example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'a string that uniquely identifies the cellular interface (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['BluetoothLink']['get_linkQuality']={syn:'Returns the bluetooth receiver signal strength, in pourcents, or 0 if no connection is established.',lib:'bluetoothlink.get_linkQuality()',pro:'def get_linkQuality()',cmt:'<p>Returns the bluetooth receiver signal strength, in pourcents, or 0 if no connection is established.</p>',ret:'an integer corresponding to the bluetooth receiver signal strength, in pourcents, or 0 if no connection is established',ext:'On failure, throws an exception or returns <tt>Y_LINKQUALITY_INVALID</tt>.'};
+doc['BluetoothLink']['get_linkState']={syn:'Returns the bluetooth link state.',lib:'bluetoothlink.get_linkState()',pro:'def get_linkState()',cmt:'<p>Returns the bluetooth link state.</p>',ret:'a value among <tt>Y_LINKSTATE_DOWN</tt>, <tt>Y_LINKSTATE_FREE</tt>, <tt>Y_LINKSTATE_SEARCH</tt>, <tt>Y_LINKSTATE_EXISTS</tt>, <tt>Y_LINKSTATE_LINKED</tt> and <tt>Y_LINKSTATE_PLAY</tt> corresponding to the bluetooth link state',ext:'On failure, throws an exception or returns <tt>Y_LINKSTATE_INVALID</tt>.'};
+doc['BluetoothLink']['get_logicalName']={syn:'Returns the logical name of the cellular interface.',lib:'bluetoothlink.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Returns the logical name of the cellular interface.</p>',ret:'a string corresponding to the logical name of the cellular interface.',ext:'On failure, throws an exception or returns <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['BluetoothLink']['get_module']={syn:'Gets the <tt>YModule</tt> object for the device on which the function is located.',lib:'bluetoothlink.get_module()',pro:'def get_module()',cmt:'<p>Gets the <tt>YModule</tt> object for the device on which the function is located. If the function cannot be located on any module, the returned instance of <tt>YModule</tt> is not shown as on-line.</p>',ret:'an instance of <tt>YModule</tt>'};
+doc['BluetoothLink']['get_mute']={syn:'Returns the state of the mute function.',lib:'bluetoothlink.get_mute()',pro:'def get_mute()',cmt:'<p>Returns the state of the mute function.</p>',ret:'either <tt>Y_MUTE_FALSE</tt> or <tt>Y_MUTE_TRUE</tt>, according to the state of the mute function',ext:'On failure, throws an exception or returns <tt>Y_MUTE_INVALID</tt>.'};
+doc['BluetoothLink']['get_ownAddress']={syn:'Returns the MAC-48 address of the bluetooth interface, which is unique on the bluetooth network.',lib:'bluetoothlink.get_ownAddress()',pro:'def get_ownAddress()',cmt:'<p>Returns the MAC-48 address of the bluetooth interface, which is unique on the bluetooth network.</p>',ret:'a string corresponding to the MAC-48 address of the bluetooth interface, which is unique on the bluetooth network',ext:'On failure, throws an exception or returns <tt>Y_OWNADDRESS_INVALID</tt>.'};
+doc['BluetoothLink']['get_pairingPin']={syn:'Returns an opaque string if a PIN code has been configured in the device to access the SIM card, or an empty string if none has been configured or if the code provided was rejected by the SIM card.',lib:'bluetoothlink.get_pairingPin()',pro:'def get_pairingPin()',cmt:'<p>Returns an opaque string if a PIN code has been configured in the device to access the SIM card, or an empty string if none has been configured or if the code provided was rejected by the SIM card.</p>',ret:'a string corresponding to an opaque string if a PIN code has been configured in the device to access the SIM card, or an empty string if none has been configured or if the code provided was rejected by the SIM card',ext:'On failure, throws an exception or returns <tt>Y_PAIRINGPIN_INVALID</tt>.'};
+doc['BluetoothLink']['get_preAmplifier']={syn:'Returns the audio pre-amplifier volume, in per cents.',lib:'bluetoothlink.get_preAmplifier()',pro:'def get_preAmplifier()',cmt:'<p>Returns the audio pre-amplifier volume, in per cents.</p>',ret:'an integer corresponding to the audio pre-amplifier volume, in per cents',ext:'On failure, throws an exception or returns <tt>Y_PREAMPLIFIER_INVALID</tt>.'};
+doc['BluetoothLink']['get_remoteAddress']={syn:'Returns the MAC-48 address of the remote device to connect to.',lib:'bluetoothlink.get_remoteAddress()',pro:'def get_remoteAddress()',cmt:'<p>Returns the MAC-48 address of the remote device to connect to.</p>',ret:'a string corresponding to the MAC-48 address of the remote device to connect to',ext:'On failure, throws an exception or returns <tt>Y_REMOTEADDRESS_INVALID</tt>.'};
+doc['BluetoothLink']['get_remoteName']={syn:'Returns the bluetooth name the remote device, if found on the bluetooth network.',lib:'bluetoothlink.get_remoteName()',pro:'def get_remoteName()',cmt:'<p>Returns the bluetooth name the remote device, if found on the bluetooth network.</p>',ret:'a string corresponding to the bluetooth name the remote device, if found on the bluetooth network',ext:'On failure, throws an exception or returns <tt>Y_REMOTENAME_INVALID</tt>.'};
+doc['BluetoothLink']['get_userData']={syn:'Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>.',lib:'bluetoothlink.get_userData()',pro:'def get_userData()',cmt:'<p>Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>. This attribute is never touched directly by the API, and is at disposal of the caller to store a context.</p>',ret:'the object stored previously by the caller.'};
+doc['BluetoothLink']['get_volume']={syn:'Returns the connected headset volume, in per cents.',lib:'bluetoothlink.get_volume()',pro:'def get_volume()',cmt:'<p>Returns the connected headset volume, in per cents.</p>',ret:'an integer corresponding to the connected headset volume, in per cents',ext:'On failure, throws an exception or returns <tt>Y_VOLUME_INVALID</tt>.'};
+doc['BluetoothLink']['isOnline']={syn:'Checks if the cellular interface is currently reachable, without raising any error.',lib:'bluetoothlink.isOnline()',pro:'def isOnline()',cmt:'<p>Checks if the cellular interface is currently reachable, without raising any error. If there is a cached value for the cellular interface in cache, that has not yet expired, the device is considered reachable. No exception is raised if there is an error while trying to contact the device hosting the cellular interface.</p>',ret:'<tt>true</tt> if the cellular interface can be reached, and <tt>false</tt> otherwise'};
+doc['BluetoothLink']['load']={syn:'Preloads the cellular interface cache with a specified validity duration.',lib:'bluetoothlink.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Preloads the cellular interface cache with a specified validity duration. By default, whenever accessing a device, all function attributes are kept in cache for the standard duration (5 ms). This method can be used to temporarily mark the cache as valid for a longer period, in order to reduce network traffic for instance.</p>',par:{msValidity:'an integer corresponding to the validity attributed to the loaded function parameters, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['BluetoothLink']['loadAttribute']={syn:'Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.',lib:'bluetoothlink.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'On failure, throws an exception or returns an empty string.'};
+doc['BluetoothLink']['muteValueCallbacks']={syn:'Disable the propagation of every new advertised value to the parent hub.',lib:'bluetoothlink.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>Disable the propagation of every new advertised value to the parent hub. You can use this function to save bandwidth and CPU on computers with limited resources, or to prevent unwanted invocations of the HTTP callback. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['BluetoothLink']['nextBluetoothLink']={syn:'Continues the enumeration of cellular interfaces started using <tt>yFirstBluetoothLink()</tt>.',lib:'bluetoothlink.nextBluetoothLink()',pro:'def nextBluetoothLink()',cmt:'<p>Continues the enumeration of cellular interfaces started using <tt>yFirstBluetoothLink()</tt>.</p>',ret:'a pointer to a <tt>YBluetoothLink</tt> object, corresponding to a cellular interface currently online, or a <tt>null</tt> pointer if there are no more cellular interfaces to enumerate.'};
+doc['BluetoothLink']['registerValueCallback']={syn:'Registers the callback function that is invoked on every change of advertised value.',lib:'bluetoothlink.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every change of advertised value. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and the character string describing the new advertised value.'}};
+doc['BluetoothLink']['set_logicalName']={syn:'Changes the logical name of the cellular interface.',lib:'bluetoothlink.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Changes the logical name of the cellular interface. You can use <tt>yCheckLogicalName()</tt> prior to this call to make sure that your parameter is valid. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the logical name of the cellular interface.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['BluetoothLink']['set_mute']={syn:'Changes the state of the mute function.',lib:'bluetoothlink.set_mute()',pro:'def set_mute(<span id=pn>newval</span>)',cmt:'<p>Changes the state of the mute function. Remember to call the matching module <tt>saveToFlash()</tt> method to save the setting permanently.</p>',par:{newval:'either <tt>Y_MUTE_FALSE</tt> or <tt>Y_MUTE_TRUE</tt>, according to the state of the mute function'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['BluetoothLink']['set_pairingPin']={syn:'Changes the PIN code used by the module for bluetooth pairing.',lib:'bluetoothlink.set_pairingPin()',pro:'def set_pairingPin(<span id=pn>newval</span>)',cmt:'<p>Changes the PIN code used by the module for bluetooth pairing. Remember to call the <tt>saveToFlash()</tt> method of the module to save the new value in the device flash.</p>',par:{newval:'a string corresponding to the PIN code used by the module for bluetooth pairing'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['BluetoothLink']['set_preAmplifier']={syn:'Changes the audio pre-amplifier volume, in per cents.',lib:'bluetoothlink.set_preAmplifier()',pro:'def set_preAmplifier(<span id=pn>newval</span>)',cmt:'<p>Changes the audio pre-amplifier volume, in per cents.</p>',par:{newval:'an integer corresponding to the audio pre-amplifier volume, in per cents'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['BluetoothLink']['set_remoteAddress']={syn:'Changes the MAC-48 address defining which remote device to connect to.',lib:'bluetoothlink.set_remoteAddress()',pro:'def set_remoteAddress(<span id=pn>newval</span>)',cmt:'<p>Changes the MAC-48 address defining which remote device to connect to.</p>',par:{newval:'a string corresponding to the MAC-48 address defining which remote device to connect to'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['BluetoothLink']['set_userData']={syn:'Stores a user context provided as argument in the userData attribute of the function.',lib:'bluetoothlink.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Stores a user context provided as argument in the userData attribute of the function. This attribute is never touched by the API, and is at disposal of the caller to store a context.</p>',par:{data:'any kind of object to be stored'}};
+doc['BluetoothLink']['set_volume']={syn:'Changes the connected headset volume, in per cents.',lib:'bluetoothlink.set_volume()',pro:'def set_volume(<span id=pn>newval</span>)',cmt:'<p>Changes the connected headset volume, in per cents.</p>',par:{newval:'an integer corresponding to the connected headset volume, in per cents'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['BluetoothLink']['unmuteValueCallbacks']={syn:'Re-enable the propagation of every new advertised value to the parent hub.',lib:'bluetoothlink.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>Re-enable the propagation of every new advertised value to the parent hub. This function reverts the effect of a previous call to <tt>muteValueCallbacks()</tt>. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+//--- (end of generated code: BluetoothLink)
+//--- (generated code: AudioIn)
+doc['AudioIn']={'':{syn:'AudioIn function interface',inc:'from yocto_audioin import *',cmt:'<p>The Yoctopuce application programming interface allows you to configure the volume of the input channel.</p>'}};
+doc['AudioIn']['FindAudioIn']={syn:'Retrieves an audio input for a given identifier.',lib:'YAudioIn.FindAudioIn()',pro:'def FindAudioIn(<span id=pn>func</span>)',cmt:'<p>Retrieves an audio input for a given identifier. The identifier can be specified using several formats:<br> <ul> <li>FunctionLogicalName</li> <li>ModuleSerialNumber.FunctionIdentifier</li> <li>ModuleSerialNumber.FunctionLogicalName</li> <li>ModuleLogicalName.FunctionIdentifier</li> <li>ModuleLogicalName.FunctionLogicalName</li> </ul></p><p> This function does not require that the audio input is online at the time it is invoked. The returned object is nevertheless valid. Use the method <tt>YAudioIn.isOnline()</tt> to test if the audio input is indeed online at a given time. In case of ambiguity when looking for an audio input by logical name, no error is notified: the first instance found is returned. The search is performed first by hardware name, then by logical name.</p>',par:{func:'a string that uniquely characterizes the audio input'},ret:'a <tt>YAudioIn</tt> object allowing you to drive the audio input.'};
+doc['AudioIn']['FirstAudioIn']={syn:'Starts the enumeration of audio inputs currently accessible.',lib:'YAudioIn.FirstAudioIn()',pro:'def FirstAudioIn()',cmt:'<p>Starts the enumeration of audio inputs currently accessible. Use the method <tt>YAudioIn.nextAudioIn()</tt> to iterate on next audio inputs.</p>',ret:'a pointer to a <tt>YAudioIn</tt> object, corresponding to the first audio input currently online, or a <tt>null</tt> pointer if there are none.'};
+doc['AudioIn']['clearCache']={syn:'Invalidates the cache.',lib:'audioin.clearCache()',pro:'def clearCache()',cmt:'<p>Invalidates the cache. Invalidates the cache of the audio input attributes. Forces the next call to get_xxx() or loadxxx() to use values that come from the device.</p>'};
+doc['AudioIn']['describe']={syn:'Returns a short text that describes unambiguously the instance of the audio input in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'audioin.describe()',pro:'def describe()',cmt:'<p>Returns a short text that describes unambiguously the instance of the audio input in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. More precisely, <tt>TYPE</tt> is the type of the function, <tt>NAME</tt> it the name used for the first access to the function, <tt>SERIAL</tt> is the serial number of the module if the module is connected or <tt>\x22unresolved\x22</tt>, and <tt>FUNCTIONID</tt> is the hardware identifier of the function if the module is connected. For example, this method returns <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> if the module is already connected or <tt>Relay(BadCustomeName.relay1)=unresolved</tt> if the module has not yet been connected. This method does not trigger any USB or TCP transaction and can therefore be used in a debugger.</p>',ret:'a string that describes the audio input (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['AudioIn']['get_advertisedValue']={syn:'Returns the current value of the audio input (no more than 6 characters).',lib:'audioin.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Returns the current value of the audio input (no more than 6 characters).</p>',ret:'a string corresponding to the current value of the audio input (no more than 6 characters).',ext:'On failure, throws an exception or returns <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['AudioIn']['get_errorMessage']={syn:'Returns the error message of the latest error with the audio input.',lib:'audioin.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Returns the error message of the latest error with the audio input. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a string corresponding to the latest error message that occured while using the audio input object'};
+doc['AudioIn']['get_errorType']={syn:'Returns the numerical error code of the latest error with the audio input.',lib:'audioin.get_errorType()',pro:'def get_errorType()',cmt:'<p>Returns the numerical error code of the latest error with the audio input. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a number corresponding to the code of the latest error that occurred while using the audio input object'};
+doc['AudioIn']['get_friendlyName']={syn:'Returns a global identifier of the audio input in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>.',lib:'audioin.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Returns a global identifier of the audio input in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>. The returned string uses the logical names of the module and of the audio input if they are defined, otherwise the serial number of the module and the hardware identifier of the audio input (for example: <tt>MyCustomName.relay1</tt>)</p>',ret:'a string that uniquely identifies the audio input using logical names (ex: <tt>MyCustomName.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['AudioIn']['get_functionDescriptor']={syn:'Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function.',lib:'audioin.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function. This identifier can be used to test if two instances of <tt>YFunction</tt> reference the same physical function on the same physical device.</p>',ret:'an identifier of type <tt>YFUN_DESCR</tt>.',ext:'If the function has never been contacted, the returned value is <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>.'};
+doc['AudioIn']['get_functionId']={syn:'Returns the hardware identifier of the audio input, without reference to the module.',lib:'audioin.get_functionId()',pro:'def get_functionId()',cmt:'<p>Returns the hardware identifier of the audio input, without reference to the module. For example <tt>relay1</tt></p>',ret:'a string that identifies the audio input (ex: <tt>relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['AudioIn']['get_hardwareId']={syn:'Returns the unique hardware identifier of the audio input in the form <tt>SERIAL.FUNCTIONID</tt>.',lib:'audioin.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Returns the unique hardware identifier of the audio input in the form <tt>SERIAL.FUNCTIONID</tt>. The unique hardware identifier is composed of the device serial number and of the hardware identifier of the audio input (for example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'a string that uniquely identifies the audio input (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['AudioIn']['get_logicalName']={syn:'Returns the logical name of the audio input.',lib:'audioin.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Returns the logical name of the audio input.</p>',ret:'a string corresponding to the logical name of the audio input.',ext:'On failure, throws an exception or returns <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['AudioIn']['get_module']={syn:'Gets the <tt>YModule</tt> object for the device on which the function is located.',lib:'audioin.get_module()',pro:'def get_module()',cmt:'<p>Gets the <tt>YModule</tt> object for the device on which the function is located. If the function cannot be located on any module, the returned instance of <tt>YModule</tt> is not shown as on-line.</p>',ret:'an instance of <tt>YModule</tt>'};
+doc['AudioIn']['get_mute']={syn:'Returns the state of the mute function.',lib:'audioin.get_mute()',pro:'def get_mute()',cmt:'<p>Returns the state of the mute function.</p>',ret:'either <tt>Y_MUTE_FALSE</tt> or <tt>Y_MUTE_TRUE</tt>, according to the state of the mute function',ext:'On failure, throws an exception or returns <tt>Y_MUTE_INVALID</tt>.'};
+doc['AudioIn']['get_noSignalFor']={syn:'Returns the number of seconds elapsed without detecting a signal.',lib:'audioin.get_noSignalFor()',pro:'def get_noSignalFor()',cmt:'<p>Returns the number of seconds elapsed without detecting a signal.</p>',ret:'an integer corresponding to the number of seconds elapsed without detecting a signal',ext:'On failure, throws an exception or returns <tt>Y_NOSIGNALFOR_INVALID</tt>.'};
+doc['AudioIn']['get_signal']={syn:'Returns the detected input signal level.',lib:'audioin.get_signal()',pro:'def get_signal()',cmt:'<p>Returns the detected input signal level.</p>',ret:'an integer corresponding to the detected input signal level',ext:'On failure, throws an exception or returns <tt>Y_SIGNAL_INVALID</tt>.'};
+doc['AudioIn']['get_userData']={syn:'Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>.',lib:'audioin.get_userData()',pro:'def get_userData()',cmt:'<p>Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>. This attribute is never touched directly by the API, and is at disposal of the caller to store a context.</p>',ret:'the object stored previously by the caller.'};
+doc['AudioIn']['get_volume']={syn:'Returns audio input gain, in per cents.',lib:'audioin.get_volume()',pro:'def get_volume()',cmt:'<p>Returns audio input gain, in per cents.</p>',ret:'an integer corresponding to audio input gain, in per cents',ext:'On failure, throws an exception or returns <tt>Y_VOLUME_INVALID</tt>.'};
+doc['AudioIn']['get_volumeRange']={syn:'Returns the supported volume range.',lib:'audioin.get_volumeRange()',pro:'def get_volumeRange()',cmt:'<p>Returns the supported volume range. The low value of the range corresponds to the minimal audible value. To completely mute the sound, use <tt>set_mute()</tt> instead of the <tt>set_volume()</tt>.</p>',ret:'a string corresponding to the supported volume range',ext:'On failure, throws an exception or returns <tt>Y_VOLUMERANGE_INVALID</tt>.'};
+doc['AudioIn']['isOnline']={syn:'Checks if the audio input is currently reachable, without raising any error.',lib:'audioin.isOnline()',pro:'def isOnline()',cmt:'<p>Checks if the audio input is currently reachable, without raising any error. If there is a cached value for the audio input in cache, that has not yet expired, the device is considered reachable. No exception is raised if there is an error while trying to contact the device hosting the audio input.</p>',ret:'<tt>true</tt> if the audio input can be reached, and <tt>false</tt> otherwise'};
+doc['AudioIn']['load']={syn:'Preloads the audio input cache with a specified validity duration.',lib:'audioin.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Preloads the audio input cache with a specified validity duration. By default, whenever accessing a device, all function attributes are kept in cache for the standard duration (5 ms). This method can be used to temporarily mark the cache as valid for a longer period, in order to reduce network traffic for instance.</p>',par:{msValidity:'an integer corresponding to the validity attributed to the loaded function parameters, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['AudioIn']['loadAttribute']={syn:'Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.',lib:'audioin.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'On failure, throws an exception or returns an empty string.'};
+doc['AudioIn']['muteValueCallbacks']={syn:'Disable the propagation of every new advertised value to the parent hub.',lib:'audioin.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>Disable the propagation of every new advertised value to the parent hub. You can use this function to save bandwidth and CPU on computers with limited resources, or to prevent unwanted invocations of the HTTP callback. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['AudioIn']['nextAudioIn']={syn:'Continues the enumeration of audio inputs started using <tt>yFirstAudioIn()</tt>.',lib:'audioin.nextAudioIn()',pro:'def nextAudioIn()',cmt:'<p>Continues the enumeration of audio inputs started using <tt>yFirstAudioIn()</tt>.</p>',ret:'a pointer to a <tt>YAudioIn</tt> object, corresponding to an audio input currently online, or a <tt>null</tt> pointer if there are no more audio inputs to enumerate.'};
+doc['AudioIn']['registerValueCallback']={syn:'Registers the callback function that is invoked on every change of advertised value.',lib:'audioin.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every change of advertised value. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and the character string describing the new advertised value.'}};
+doc['AudioIn']['set_logicalName']={syn:'Changes the logical name of the audio input.',lib:'audioin.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Changes the logical name of the audio input. You can use <tt>yCheckLogicalName()</tt> prior to this call to make sure that your parameter is valid. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the logical name of the audio input.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['AudioIn']['set_mute']={syn:'Changes the state of the mute function.',lib:'audioin.set_mute()',pro:'def set_mute(<span id=pn>newval</span>)',cmt:'<p>Changes the state of the mute function. Remember to call the matching module <tt>saveToFlash()</tt> method to save the setting permanently.</p>',par:{newval:'either <tt>Y_MUTE_FALSE</tt> or <tt>Y_MUTE_TRUE</tt>, according to the state of the mute function'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['AudioIn']['set_userData']={syn:'Stores a user context provided as argument in the userData attribute of the function.',lib:'audioin.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Stores a user context provided as argument in the userData attribute of the function. This attribute is never touched by the API, and is at disposal of the caller to store a context.</p>',par:{data:'any kind of object to be stored'}};
+doc['AudioIn']['set_volume']={syn:'Changes audio input gain, in per cents.',lib:'audioin.set_volume()',pro:'def set_volume(<span id=pn>newval</span>)',cmt:'<p>Changes audio input gain, in per cents.</p>',par:{newval:'an integer corresponding to audio input gain, in per cents'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['AudioIn']['unmuteValueCallbacks']={syn:'Re-enable the propagation of every new advertised value to the parent hub.',lib:'audioin.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>Re-enable the propagation of every new advertised value to the parent hub. This function reverts the effect of a previous call to <tt>muteValueCallbacks()</tt>. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+//--- (end of generated code: AudioIn)
+//--- (generated code: QuadratureDecoder)
+doc['QuadratureDecoder']={'':{syn:'QuadratureDecoder function interface',inc:'from yocto_quadraturedecoder import *',cmt:'<p>The class YQuadratureDecoder allows you to decode a two-wire signal produced by a quadrature encoder. It inherits from YSensor class the core functions to read measurements, register callback functions, access to the autonomous datalogger.</p>'}};
+doc['QuadratureDecoder']['FindQuadratureDecoder']={syn:'Retrieves a quadrature decoder for a given identifier.',lib:'YQuadratureDecoder.FindQuadratureDecoder()',pro:'def FindQuadratureDecoder(<span id=pn>func</span>)',cmt:'<p>Retrieves a quadrature decoder for a given identifier. The identifier can be specified using several formats:<br> <ul> <li>FunctionLogicalName</li> <li>ModuleSerialNumber.FunctionIdentifier</li> <li>ModuleSerialNumber.FunctionLogicalName</li> <li>ModuleLogicalName.FunctionIdentifier</li> <li>ModuleLogicalName.FunctionLogicalName</li> </ul></p><p> This function does not require that the quadrature decoder is online at the time it is invoked. The returned object is nevertheless valid. Use the method <tt>YQuadratureDecoder.isOnline()</tt> to test if the quadrature decoder is indeed online at a given time. In case of ambiguity when looking for a quadrature decoder by logical name, no error is notified: the first instance found is returned. The search is performed first by hardware name, then by logical name.</p>',par:{func:'a string that uniquely characterizes the quadrature decoder'},ret:'a <tt>YQuadratureDecoder</tt> object allowing you to drive the quadrature decoder.'};
+doc['QuadratureDecoder']['FirstQuadratureDecoder']={syn:'Starts the enumeration of quadrature decoders currently accessible.',lib:'YQuadratureDecoder.FirstQuadratureDecoder()',pro:'def FirstQuadratureDecoder()',cmt:'<p>Starts the enumeration of quadrature decoders currently accessible. Use the method <tt>YQuadratureDecoder.nextQuadratureDecoder()</tt> to iterate on next quadrature decoders.</p>',ret:'a pointer to a <tt>YQuadratureDecoder</tt> object, corresponding to the first quadrature decoder currently online, or a <tt>null</tt> pointer if there are none.'};
+doc['QuadratureDecoder']['calibrateFromPoints']={syn:'Configures error correction data points, in particular to compensate for a possible perturbation of the measure caused by an enclosure.',lib:'quadraturedecoder.calibrateFromPoints()',pro:'def calibrateFromPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Configures error correction data points, in particular to compensate for a possible perturbation of the measure caused by an enclosure. It is possible to configure up to five correction points. Correction points must be provided in ascending order, and be in the range of the sensor. The device will automatically perform a linear interpolation of the error correction between specified points. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p><p> For more information on advanced capabilities to refine the calibration of sensors, please contact support@yoctopuce.com.</p>',par:{rawValues:'array of floating point numbers, corresponding to the raw values returned by the sensor for the correction points.',refValues:'array of floating point numbers, corresponding to the corrected values for the correction points.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['QuadratureDecoder']['clearCache']={syn:'Invalidates the cache.',lib:'quadraturedecoder.clearCache()',pro:'def clearCache()',cmt:'<p>Invalidates the cache. Invalidates the cache of the quadrature decoder attributes. Forces the next call to get_xxx() or loadxxx() to use values that come from the device.</p>'};
+doc['QuadratureDecoder']['describe']={syn:'Returns a short text that describes unambiguously the instance of the quadrature decoder in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'quadraturedecoder.describe()',pro:'def describe()',cmt:'<p>Returns a short text that describes unambiguously the instance of the quadrature decoder in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. More precisely, <tt>TYPE</tt> is the type of the function, <tt>NAME</tt> it the name used for the first access to the function, <tt>SERIAL</tt> is the serial number of the module if the module is connected or <tt>\x22unresolved\x22</tt>, and <tt>FUNCTIONID</tt> is the hardware identifier of the function if the module is connected. For example, this method returns <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> if the module is already connected or <tt>Relay(BadCustomeName.relay1)=unresolved</tt> if the module has not yet been connected. This method does not trigger any USB or TCP transaction and can therefore be used in a debugger.</p>',ret:'a string that describes the quadrature decoder (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['QuadratureDecoder']['get_advertisedValue']={syn:'Returns the current value of the quadrature decoder (no more than 6 characters).',lib:'quadraturedecoder.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Returns the current value of the quadrature decoder (no more than 6 characters).</p>',ret:'a string corresponding to the current value of the quadrature decoder (no more than 6 characters).',ext:'On failure, throws an exception or returns <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['QuadratureDecoder']['get_currentRawValue']={syn:'Returns the uncalibrated, unrounded raw value returned by the sensor, in pas, as a floating point number.',lib:'quadraturedecoder.get_currentRawValue()',pro:'def get_currentRawValue()',cmt:'<p>Returns the uncalibrated, unrounded raw value returned by the sensor, in pas, as a floating point number.</p>',ret:'a floating point number corresponding to the uncalibrated, unrounded raw value returned by the sensor, in pas, as a floating point number',ext:'On failure, throws an exception or returns <tt>Y_CURRENTRAWVALUE_INVALID</tt>.'};
+doc['QuadratureDecoder']['get_currentValue']={syn:'Returns the current value of the position, in pas, as a floating point number.',lib:'quadraturedecoder.get_currentValue()',pro:'def get_currentValue()',cmt:'<p>Returns the current value of the position, in pas, as a floating point number.</p>',ret:'a floating point number corresponding to the current value of the position, in pas, as a floating point number',ext:'On failure, throws an exception or returns <tt>Y_CURRENTVALUE_INVALID</tt>.'};
+doc['QuadratureDecoder']['get_decoding']={syn:'Returns the current activation state of the quadrature decoder.',lib:'quadraturedecoder.get_decoding()',pro:'def get_decoding()',cmt:'<p>Returns the current activation state of the quadrature decoder.</p>',ret:'either <tt>Y_DECODING_OFF</tt> or <tt>Y_DECODING_ON</tt>, according to the current activation state of the quadrature decoder',ext:'On failure, throws an exception or returns <tt>Y_DECODING_INVALID</tt>.'};
+doc['QuadratureDecoder']['get_errorMessage']={syn:'Returns the error message of the latest error with the quadrature decoder.',lib:'quadraturedecoder.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Returns the error message of the latest error with the quadrature decoder. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a string corresponding to the latest error message that occured while using the quadrature decoder object'};
+doc['QuadratureDecoder']['get_errorType']={syn:'Returns the numerical error code of the latest error with the quadrature decoder.',lib:'quadraturedecoder.get_errorType()',pro:'def get_errorType()',cmt:'<p>Returns the numerical error code of the latest error with the quadrature decoder. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a number corresponding to the code of the latest error that occurred while using the quadrature decoder object'};
+doc['QuadratureDecoder']['get_friendlyName']={syn:'Returns a global identifier of the quadrature decoder in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>.',lib:'quadraturedecoder.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Returns a global identifier of the quadrature decoder in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>. The returned string uses the logical names of the module and of the quadrature decoder if they are defined, otherwise the serial number of the module and the hardware identifier of the quadrature decoder (for example: <tt>MyCustomName.relay1</tt>)</p>',ret:'a string that uniquely identifies the quadrature decoder using logical names (ex: <tt>MyCustomName.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['QuadratureDecoder']['get_functionDescriptor']={syn:'Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function.',lib:'quadraturedecoder.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function. This identifier can be used to test if two instances of <tt>YFunction</tt> reference the same physical function on the same physical device.</p>',ret:'an identifier of type <tt>YFUN_DESCR</tt>.',ext:'If the function has never been contacted, the returned value is <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>.'};
+doc['QuadratureDecoder']['get_functionId']={syn:'Returns the hardware identifier of the quadrature decoder, without reference to the module.',lib:'quadraturedecoder.get_functionId()',pro:'def get_functionId()',cmt:'<p>Returns the hardware identifier of the quadrature decoder, without reference to the module. For example <tt>relay1</tt></p>',ret:'a string that identifies the quadrature decoder (ex: <tt>relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['QuadratureDecoder']['get_hardwareId']={syn:'Returns the unique hardware identifier of the quadrature decoder in the form <tt>SERIAL.FUNCTIONID</tt>.',lib:'quadraturedecoder.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Returns the unique hardware identifier of the quadrature decoder in the form <tt>SERIAL.FUNCTIONID</tt>. The unique hardware identifier is composed of the device serial number and of the hardware identifier of the quadrature decoder (for example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'a string that uniquely identifies the quadrature decoder (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['QuadratureDecoder']['get_highestValue']={syn:'Returns the maximal value observed for the position since the device was started.',lib:'quadraturedecoder.get_highestValue()',pro:'def get_highestValue()',cmt:'<p>Returns the maximal value observed for the position since the device was started.</p>',ret:'a floating point number corresponding to the maximal value observed for the position since the device was started',ext:'On failure, throws an exception or returns <tt>Y_HIGHESTVALUE_INVALID</tt>.'};
+doc['QuadratureDecoder']['get_logFrequency']={syn:'Returns the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory.',lib:'quadraturedecoder.get_logFrequency()',pro:'def get_logFrequency()',cmt:'<p>Returns the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory.</p>',ret:'a string corresponding to the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory',ext:'On failure, throws an exception or returns <tt>Y_LOGFREQUENCY_INVALID</tt>.'};
+doc['QuadratureDecoder']['get_logicalName']={syn:'Returns the logical name of the quadrature decoder.',lib:'quadraturedecoder.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Returns the logical name of the quadrature decoder.</p>',ret:'a string corresponding to the logical name of the quadrature decoder.',ext:'On failure, throws an exception or returns <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['QuadratureDecoder']['get_lowestValue']={syn:'Returns the minimal value observed for the position since the device was started.',lib:'quadraturedecoder.get_lowestValue()',pro:'def get_lowestValue()',cmt:'<p>Returns the minimal value observed for the position since the device was started.</p>',ret:'a floating point number corresponding to the minimal value observed for the position since the device was started',ext:'On failure, throws an exception or returns <tt>Y_LOWESTVALUE_INVALID</tt>.'};
+doc['QuadratureDecoder']['get_module']={syn:'Gets the <tt>YModule</tt> object for the device on which the function is located.',lib:'quadraturedecoder.get_module()',pro:'def get_module()',cmt:'<p>Gets the <tt>YModule</tt> object for the device on which the function is located. If the function cannot be located on any module, the returned instance of <tt>YModule</tt> is not shown as on-line.</p>',ret:'an instance of <tt>YModule</tt>'};
+doc['QuadratureDecoder']['get_recordedData']={syn:'Retrieves a DataSet object holding historical data for this sensor, for a specified time interval.',lib:'quadraturedecoder.get_recordedData()',pro:'def get_recordedData(<span id=pn>startTime</span>, <span id=pn>endTime</span>)',cmt:'<p>Retrieves a DataSet object holding historical data for this sensor, for a specified time interval. The measures will be retrieved from the data logger, which must have been turned on at the desired time. See the documentation of the DataSet class for information on how to get an overview of the recorded data, and how to load progressively a large set of measures from the data logger.</p><p> This function only works if the device uses a recent firmware, as DataSet objects are not supported by firmwares older than version 13000.</p>',par:{startTime:'the start of the desired measure time interval, as a Unix timestamp, i.e. the number of seconds since January 1, 1970 UTC. The special value 0 can be used to include any meaasure, without initial limit.',endTime:'the end of the desired measure time interval, as a Unix timestamp, i.e. the number of seconds since January 1, 1970 UTC. The special value 0 can be used to include any meaasure, without ending limit.'},ret:'an instance of YDataSet, providing access to historical data. Past measures can be loaded progressively using methods from the YDataSet object.'};
+doc['QuadratureDecoder']['get_reportFrequency']={syn:'Returns the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function.',lib:'quadraturedecoder.get_reportFrequency()',pro:'def get_reportFrequency()',cmt:'<p>Returns the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function.</p>',ret:'a string corresponding to the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function',ext:'On failure, throws an exception or returns <tt>Y_REPORTFREQUENCY_INVALID</tt>.'};
+doc['QuadratureDecoder']['get_resolution']={syn:'Returns the resolution of the measured values.',lib:'quadraturedecoder.get_resolution()',pro:'def get_resolution()',cmt:'<p>Returns the resolution of the measured values. The resolution corresponds to the numerical precision of the measures, which is not always the same as the actual precision of the sensor.</p>',ret:'a floating point number corresponding to the resolution of the measured values',ext:'On failure, throws an exception or returns <tt>Y_RESOLUTION_INVALID</tt>.'};
+doc['QuadratureDecoder']['get_sensorState']={syn:'Returns the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now.',lib:'quadraturedecoder.get_sensorState()',pro:'def get_sensorState()',cmt:'<p>Returns the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now.</p>',ret:'an integer corresponding to the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now',ext:'On failure, throws an exception or returns <tt>Y_SENSORSTATE_INVALID</tt>.'};
+doc['QuadratureDecoder']['get_speed']={syn:'Returns the PWM frequency in Hz.',lib:'quadraturedecoder.get_speed()',pro:'def get_speed()',cmt:'<p>Returns the PWM frequency in Hz.</p>',ret:'a floating point number corresponding to the PWM frequency in Hz',ext:'On failure, throws an exception or returns <tt>Y_SPEED_INVALID</tt>.'};
+doc['QuadratureDecoder']['get_unit']={syn:'Returns the measuring unit for the position.',lib:'quadraturedecoder.get_unit()',pro:'def get_unit()',cmt:'<p>Returns the measuring unit for the position.</p>',ret:'a string corresponding to the measuring unit for the position',ext:'On failure, throws an exception or returns <tt>Y_UNIT_INVALID</tt>.'};
+doc['QuadratureDecoder']['get_userData']={syn:'Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>.',lib:'quadraturedecoder.get_userData()',pro:'def get_userData()',cmt:'<p>Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>. This attribute is never touched directly by the API, and is at disposal of the caller to store a context.</p>',ret:'the object stored previously by the caller.'};
+doc['QuadratureDecoder']['isOnline']={syn:'Checks if the quadrature decoder is currently reachable, without raising any error.',lib:'quadraturedecoder.isOnline()',pro:'def isOnline()',cmt:'<p>Checks if the quadrature decoder is currently reachable, without raising any error. If there is a cached value for the quadrature decoder in cache, that has not yet expired, the device is considered reachable. No exception is raised if there is an error while trying to contact the device hosting the quadrature decoder.</p>',ret:'<tt>true</tt> if the quadrature decoder can be reached, and <tt>false</tt> otherwise'};
+doc['QuadratureDecoder']['load']={syn:'Preloads the quadrature decoder cache with a specified validity duration.',lib:'quadraturedecoder.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Preloads the quadrature decoder cache with a specified validity duration. By default, whenever accessing a device, all function attributes are kept in cache for the standard duration (5 ms). This method can be used to temporarily mark the cache as valid for a longer period, in order to reduce network traffic for instance.</p>',par:{msValidity:'an integer corresponding to the validity attributed to the loaded function parameters, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['QuadratureDecoder']['loadAttribute']={syn:'Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.',lib:'quadraturedecoder.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'On failure, throws an exception or returns an empty string.'};
+doc['QuadratureDecoder']['loadCalibrationPoints']={syn:'Retrieves error correction data points previously entered using the method <tt>calibrateFromPoints</tt>.',lib:'quadraturedecoder.loadCalibrationPoints()',pro:'def loadCalibrationPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Retrieves error correction data points previously entered using the method <tt>calibrateFromPoints</tt>.</p>',par:{rawValues:'array of floating point numbers, that will be filled by the function with the raw sensor values for the correction points.',refValues:'array of floating point numbers, that will be filled by the function with the desired values for the correction points.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['QuadratureDecoder']['muteValueCallbacks']={syn:'Disable the propagation of every new advertised value to the parent hub.',lib:'quadraturedecoder.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>Disable the propagation of every new advertised value to the parent hub. You can use this function to save bandwidth and CPU on computers with limited resources, or to prevent unwanted invocations of the HTTP callback. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['QuadratureDecoder']['nextQuadratureDecoder']={syn:'Continues the enumeration of quadrature decoders started using <tt>yFirstQuadratureDecoder()</tt>.',lib:'quadraturedecoder.nextQuadratureDecoder()',pro:'def nextQuadratureDecoder()',cmt:'<p>Continues the enumeration of quadrature decoders started using <tt>yFirstQuadratureDecoder()</tt>.</p>',ret:'a pointer to a <tt>YQuadratureDecoder</tt> object, corresponding to a quadrature decoder currently online, or a <tt>null</tt> pointer if there are no more quadrature decoders to enumerate.'};
+doc['QuadratureDecoder']['registerTimedReportCallback']={syn:'Registers the callback function that is invoked on every periodic timed notification.',lib:'quadraturedecoder.registerTimedReportCallback()',pro:'def registerTimedReportCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every periodic timed notification. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and an YMeasure object describing the new advertised value.'}};
+doc['QuadratureDecoder']['registerValueCallback']={syn:'Registers the callback function that is invoked on every change of advertised value.',lib:'quadraturedecoder.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every change of advertised value. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and the character string describing the new advertised value.'}};
+doc['QuadratureDecoder']['set_currentValue']={syn:'Changes the current expected position of the quadrature decoder.',lib:'quadraturedecoder.set_currentValue()',pro:'def set_currentValue(<span id=pn>newval</span>)',cmt:'<p>Changes the current expected position of the quadrature decoder. Invoking this function implicitely activates the quadrature decoder.</p>',par:{newval:'a floating point number corresponding to the current expected position of the quadrature decoder'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['QuadratureDecoder']['set_decoding']={syn:'Changes the activation state of the quadrature decoder.',lib:'quadraturedecoder.set_decoding()',pro:'def set_decoding(<span id=pn>newval</span>)',cmt:'<p>Changes the activation state of the quadrature decoder.</p>',par:{newval:'either <tt>Y_DECODING_OFF</tt> or <tt>Y_DECODING_ON</tt>, according to the activation state of the quadrature decoder'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['QuadratureDecoder']['set_highestValue']={syn:'Changes the recorded maximal value observed.',lib:'quadraturedecoder.set_highestValue()',pro:'def set_highestValue(<span id=pn>newval</span>)',cmt:'<p>Changes the recorded maximal value observed.</p>',par:{newval:'a floating point number corresponding to the recorded maximal value observed'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['QuadratureDecoder']['set_logFrequency']={syn:'Changes the datalogger recording frequency for this function.',lib:'quadraturedecoder.set_logFrequency()',pro:'def set_logFrequency(<span id=pn>newval</span>)',cmt:'<p>Changes the datalogger recording frequency for this function. The frequency can be specified as samples per second, as sample per minute (for instance \x2215/m\x22) or in samples per hour (eg. \x224/h\x22). To disable recording for this function, use the value \x22OFF\x22.</p>',par:{newval:'a string corresponding to the datalogger recording frequency for this function'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['QuadratureDecoder']['set_logicalName']={syn:'Changes the logical name of the quadrature decoder.',lib:'quadraturedecoder.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Changes the logical name of the quadrature decoder. You can use <tt>yCheckLogicalName()</tt> prior to this call to make sure that your parameter is valid. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the logical name of the quadrature decoder.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['QuadratureDecoder']['set_lowestValue']={syn:'Changes the recorded minimal value observed.',lib:'quadraturedecoder.set_lowestValue()',pro:'def set_lowestValue(<span id=pn>newval</span>)',cmt:'<p>Changes the recorded minimal value observed.</p>',par:{newval:'a floating point number corresponding to the recorded minimal value observed'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['QuadratureDecoder']['set_reportFrequency']={syn:'Changes the timed value notification frequency for this function.',lib:'quadraturedecoder.set_reportFrequency()',pro:'def set_reportFrequency(<span id=pn>newval</span>)',cmt:'<p>Changes the timed value notification frequency for this function. The frequency can be specified as samples per second, as sample per minute (for instance \x2215/m\x22) or in samples per hour (eg. \x224/h\x22). To disable timed value notifications for this function, use the value \x22OFF\x22.</p>',par:{newval:'a string corresponding to the timed value notification frequency for this function'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['QuadratureDecoder']['set_resolution']={syn:'Changes the resolution of the measured physical values.',lib:'quadraturedecoder.set_resolution()',pro:'def set_resolution(<span id=pn>newval</span>)',cmt:'<p>Changes the resolution of the measured physical values. The resolution corresponds to the numerical precision when displaying value. It does not change the precision of the measure itself.</p>',par:{newval:'a floating point number corresponding to the resolution of the measured physical values'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['QuadratureDecoder']['set_userData']={syn:'Stores a user context provided as argument in the userData attribute of the function.',lib:'quadraturedecoder.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Stores a user context provided as argument in the userData attribute of the function. This attribute is never touched by the API, and is at disposal of the caller to store a context.</p>',par:{data:'any kind of object to be stored'}};
+doc['QuadratureDecoder']['startDataLogger']={syn:'Starts the data logger on the device.',lib:'quadraturedecoder.startDataLogger()',pro:'def startDataLogger()',cmt:'<p>Starts the data logger on the device. Note that the data logger will only save the measures on this sensor if the logFrequency is not set to \x22OFF\x22.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.'};
+doc['QuadratureDecoder']['stopDataLogger']={syn:'Stops the datalogger on the device.',lib:'quadraturedecoder.stopDataLogger()',pro:'def stopDataLogger()',cmt:'<p>Stops the datalogger on the device.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.'};
+doc['QuadratureDecoder']['unmuteValueCallbacks']={syn:'Re-enable the propagation of every new advertised value to the parent hub.',lib:'quadraturedecoder.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>Re-enable the propagation of every new advertised value to the parent hub. This function reverts the effect of a previous call to <tt>muteValueCallbacks()</tt>. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+//--- (end of generated code: QuadratureDecoder)
+//--- (generated code: CurrentLoopOutput)
+doc['CurrentLoopOutput']={'':{syn:'CurrentLoopOutput function interface',inc:'from yocto_currentloopoutput import *',cmt:'<p>The Yoctopuce application programming interface allows you to change the value of the 4-20mA \x09 output as well as to know the current loop state.</p>'}};
+doc['CurrentLoopOutput']['FindCurrentLoopOutput']={syn:'Retrieves a 4-20mA output for a given identifier.',lib:'YCurrentLoopOutput.FindCurrentLoopOutput()',pro:'def FindCurrentLoopOutput(<span id=pn>func</span>)',cmt:'<p>Retrieves a 4-20mA output for a given identifier. The identifier can be specified using several formats:<br> <ul> <li>FunctionLogicalName</li> <li>ModuleSerialNumber.FunctionIdentifier</li> <li>ModuleSerialNumber.FunctionLogicalName</li> <li>ModuleLogicalName.FunctionIdentifier</li> <li>ModuleLogicalName.FunctionLogicalName</li> </ul></p><p> This function does not require that the 4-20mA output is online at the time it is invoked. The returned object is nevertheless valid. Use the method <tt>YCurrentLoopOutput.isOnline()</tt> to test if the 4-20mA output is indeed online at a given time. In case of ambiguity when looking for a 4-20mA output by logical name, no error is notified: the first instance found is returned. The search is performed first by hardware name, then by logical name.</p>',par:{func:'a string that uniquely characterizes the 4-20mA output'},ret:'a <tt>YCurrentLoopOutput</tt> object allowing you to drive the 4-20mA output.'};
+doc['CurrentLoopOutput']['FirstCurrentLoopOutput']={syn:'Starts the enumeration of 4-20mA outputs currently accessible.',lib:'YCurrentLoopOutput.FirstCurrentLoopOutput()',pro:'def FirstCurrentLoopOutput()',cmt:'<p>Starts the enumeration of 4-20mA outputs currently accessible. Use the method <tt>YCurrentLoopOutput.nextCurrentLoopOutput()</tt> to iterate on next 4-20mA outputs.</p>',ret:'a pointer to a <tt>YCurrentLoopOutput</tt> object, corresponding to the first 4-20mA output currently online, or a <tt>null</tt> pointer if there are none.'};
+doc['CurrentLoopOutput']['clearCache']={syn:'Invalidates the cache.',lib:'currentloopoutput.clearCache()',pro:'def clearCache()',cmt:'<p>Invalidates the cache. Invalidates the cache of the 4-20mA output attributes. Forces the next call to get_xxx() or loadxxx() to use values that come from the device.</p>'};
+doc['CurrentLoopOutput']['currentMove']={syn:'Performs a smooth transistion of current flowing in the loop.',lib:'currentloopoutput.currentMove()',pro:'def currentMove(<span id=pn>mA_target</span>, <span id=pn>ms_duration</span>)',cmt:'<p>Performs a smooth transistion of current flowing in the loop. Any current explicit change cancels any ongoing transition process.</p>',par:{mA_target:'new current value at the end of the transition (floating-point number, representing the transition duration in mA)',ms_duration:'total duration of the transition, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.'};
+doc['CurrentLoopOutput']['describe']={syn:'Returns a short text that describes unambiguously the instance of the 4-20mA output in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'currentloopoutput.describe()',pro:'def describe()',cmt:'<p>Returns a short text that describes unambiguously the instance of the 4-20mA output in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. More precisely, <tt>TYPE</tt> is the type of the function, <tt>NAME</tt> it the name used for the first access to the function, <tt>SERIAL</tt> is the serial number of the module if the module is connected or <tt>\x22unresolved\x22</tt>, and <tt>FUNCTIONID</tt> is the hardware identifier of the function if the module is connected. For example, this method returns <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> if the module is already connected or <tt>Relay(BadCustomeName.relay1)=unresolved</tt> if the module has not yet been connected. This method does not trigger any USB or TCP transaction and can therefore be used in a debugger.</p>',ret:'a string that describes the 4-20mA output (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['CurrentLoopOutput']['get_advertisedValue']={syn:'Returns the current value of the 4-20mA output (no more than 6 characters).',lib:'currentloopoutput.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Returns the current value of the 4-20mA output (no more than 6 characters).</p>',ret:'a string corresponding to the current value of the 4-20mA output (no more than 6 characters).',ext:'On failure, throws an exception or returns <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['CurrentLoopOutput']['get_current']={syn:'Returns the loop current set point in mA.',lib:'currentloopoutput.get_current()',pro:'def get_current()',cmt:'<p>Returns the loop current set point in mA.</p>',ret:'a floating point number corresponding to the loop current set point in mA',ext:'On failure, throws an exception or returns <tt>Y_CURRENT_INVALID</tt>.'};
+doc['CurrentLoopOutput']['get_currentAtStartUp']={syn:'Returns the current in the loop at device startup, in mA.',lib:'currentloopoutput.get_currentAtStartUp()',pro:'def get_currentAtStartUp()',cmt:'<p>Returns the current in the loop at device startup, in mA.</p>',ret:'a floating point number corresponding to the current in the loop at device startup, in mA',ext:'On failure, throws an exception or returns <tt>Y_CURRENTATSTARTUP_INVALID</tt>.'};
+doc['CurrentLoopOutput']['get_errorMessage']={syn:'Returns the error message of the latest error with the 4-20mA output.',lib:'currentloopoutput.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Returns the error message of the latest error with the 4-20mA output. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a string corresponding to the latest error message that occured while using the 4-20mA output object'};
+doc['CurrentLoopOutput']['get_errorType']={syn:'Returns the numerical error code of the latest error with the 4-20mA output.',lib:'currentloopoutput.get_errorType()',pro:'def get_errorType()',cmt:'<p>Returns the numerical error code of the latest error with the 4-20mA output. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a number corresponding to the code of the latest error that occurred while using the 4-20mA output object'};
+doc['CurrentLoopOutput']['get_friendlyName']={syn:'Returns a global identifier of the 4-20mA output in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>.',lib:'currentloopoutput.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Returns a global identifier of the 4-20mA output in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>. The returned string uses the logical names of the module and of the 4-20mA output if they are defined, otherwise the serial number of the module and the hardware identifier of the 4-20mA output (for example: <tt>MyCustomName.relay1</tt>)</p>',ret:'a string that uniquely identifies the 4-20mA output using logical names (ex: <tt>MyCustomName.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['CurrentLoopOutput']['get_functionDescriptor']={syn:'Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function.',lib:'currentloopoutput.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function. This identifier can be used to test if two instances of <tt>YFunction</tt> reference the same physical function on the same physical device.</p>',ret:'an identifier of type <tt>YFUN_DESCR</tt>.',ext:'If the function has never been contacted, the returned value is <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>.'};
+doc['CurrentLoopOutput']['get_functionId']={syn:'Returns the hardware identifier of the 4-20mA output, without reference to the module.',lib:'currentloopoutput.get_functionId()',pro:'def get_functionId()',cmt:'<p>Returns the hardware identifier of the 4-20mA output, without reference to the module. For example <tt>relay1</tt></p>',ret:'a string that identifies the 4-20mA output (ex: <tt>relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['CurrentLoopOutput']['get_hardwareId']={syn:'Returns the unique hardware identifier of the 4-20mA output in the form <tt>SERIAL.FUNCTIONID</tt>.',lib:'currentloopoutput.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Returns the unique hardware identifier of the 4-20mA output in the form <tt>SERIAL.FUNCTIONID</tt>. The unique hardware identifier is composed of the device serial number and of the hardware identifier of the 4-20mA output (for example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'a string that uniquely identifies the 4-20mA output (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['CurrentLoopOutput']['get_logicalName']={syn:'Returns the logical name of the 4-20mA output.',lib:'currentloopoutput.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Returns the logical name of the 4-20mA output.</p>',ret:'a string corresponding to the logical name of the 4-20mA output.',ext:'On failure, throws an exception or returns <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['CurrentLoopOutput']['get_loopPower']={syn:'Returns the loop powerstate.',lib:'currentloopoutput.get_loopPower()',pro:'def get_loopPower()',cmt:'<p>Returns the loop powerstate. POWEROK: the loop \x09 is powered. NOPWR: the loop in not powered. LOWPWR: the loop is not powered enough to maintain the current required (insufficient voltage).</p>',ret:'a value among <tt>Y_LOOPPOWER_NOPWR</tt>, <tt>Y_LOOPPOWER_LOWPWR</tt> and <tt>Y_LOOPPOWER_POWEROK</tt> corresponding to the loop powerstate',ext:'On failure, throws an exception or returns <tt>Y_LOOPPOWER_INVALID</tt>.'};
+doc['CurrentLoopOutput']['get_module']={syn:'Gets the <tt>YModule</tt> object for the device on which the function is located.',lib:'currentloopoutput.get_module()',pro:'def get_module()',cmt:'<p>Gets the <tt>YModule</tt> object for the device on which the function is located. If the function cannot be located on any module, the returned instance of <tt>YModule</tt> is not shown as on-line.</p>',ret:'an instance of <tt>YModule</tt>'};
+doc['CurrentLoopOutput']['get_userData']={syn:'Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>.',lib:'currentloopoutput.get_userData()',pro:'def get_userData()',cmt:'<p>Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>. This attribute is never touched directly by the API, and is at disposal of the caller to store a context.</p>',ret:'the object stored previously by the caller.'};
+doc['CurrentLoopOutput']['isOnline']={syn:'Checks if the 4-20mA output is currently reachable, without raising any error.',lib:'currentloopoutput.isOnline()',pro:'def isOnline()',cmt:'<p>Checks if the 4-20mA output is currently reachable, without raising any error. If there is a cached value for the 4-20mA output in cache, that has not yet expired, the device is considered reachable. No exception is raised if there is an error while trying to contact the device hosting the 4-20mA output.</p>',ret:'<tt>true</tt> if the 4-20mA output can be reached, and <tt>false</tt> otherwise'};
+doc['CurrentLoopOutput']['load']={syn:'Preloads the 4-20mA output cache with a specified validity duration.',lib:'currentloopoutput.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Preloads the 4-20mA output cache with a specified validity duration. By default, whenever accessing a device, all function attributes are kept in cache for the standard duration (5 ms). This method can be used to temporarily mark the cache as valid for a longer period, in order to reduce network traffic for instance.</p>',par:{msValidity:'an integer corresponding to the validity attributed to the loaded function parameters, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['CurrentLoopOutput']['loadAttribute']={syn:'Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.',lib:'currentloopoutput.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'On failure, throws an exception or returns an empty string.'};
+doc['CurrentLoopOutput']['muteValueCallbacks']={syn:'Disable the propagation of every new advertised value to the parent hub.',lib:'currentloopoutput.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>Disable the propagation of every new advertised value to the parent hub. You can use this function to save bandwidth and CPU on computers with limited resources, or to prevent unwanted invocations of the HTTP callback. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['CurrentLoopOutput']['nextCurrentLoopOutput']={syn:'Continues the enumeration of 4-20mA outputs started using <tt>yFirstCurrentLoopOutput()</tt>.',lib:'currentloopoutput.nextCurrentLoopOutput()',pro:'def nextCurrentLoopOutput()',cmt:'<p>Continues the enumeration of 4-20mA outputs started using <tt>yFirstCurrentLoopOutput()</tt>.</p>',ret:'a pointer to a <tt>YCurrentLoopOutput</tt> object, corresponding to a 4-20mA output currently online, or a <tt>null</tt> pointer if there are no more 4-20mA outputs to enumerate.'};
+doc['CurrentLoopOutput']['registerValueCallback']={syn:'Registers the callback function that is invoked on every change of advertised value.',lib:'currentloopoutput.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every change of advertised value. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and the character string describing the new advertised value.'}};
+doc['CurrentLoopOutput']['set_current']={syn:'Changes the current loop, the valid range is from 3 to 21mA.',lib:'currentloopoutput.set_current()',pro:'def set_current(<span id=pn>newval</span>)',cmt:'<p>Changes the current loop, the valid range is from 3 to 21mA. If the loop is \x09 not propely powered, the target current is not reached and \x09\x09loopPower is set to LOWPWR.</p>',par:{newval:'a floating point number corresponding to the current loop, the valid range is from 3 to 21mA'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['CurrentLoopOutput']['set_currentAtStartUp']={syn:'Changes the loop current at device start up.',lib:'currentloopoutput.set_currentAtStartUp()',pro:'def set_currentAtStartUp(<span id=pn>newval</span>)',cmt:'<p>Changes the loop current at device start up. Remember to call the matching module <tt>saveToFlash()</tt> method, otherwise this call has no effect.</p>',par:{newval:'a floating point number corresponding to the loop current at device start up'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['CurrentLoopOutput']['set_logicalName']={syn:'Changes the logical name of the 4-20mA output.',lib:'currentloopoutput.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Changes the logical name of the 4-20mA output. You can use <tt>yCheckLogicalName()</tt> prior to this call to make sure that your parameter is valid. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the logical name of the 4-20mA output.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['CurrentLoopOutput']['set_userData']={syn:'Stores a user context provided as argument in the userData attribute of the function.',lib:'currentloopoutput.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Stores a user context provided as argument in the userData attribute of the function. This attribute is never touched by the API, and is at disposal of the caller to store a context.</p>',par:{data:'any kind of object to be stored'}};
+doc['CurrentLoopOutput']['unmuteValueCallbacks']={syn:'Re-enable the propagation of every new advertised value to the parent hub.',lib:'currentloopoutput.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>Re-enable the propagation of every new advertised value to the parent hub. This function reverts the effect of a previous call to <tt>muteValueCallbacks()</tt>. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+//--- (end of generated code: CurrentLoopOutput)
+//--- (generated code: ColorLedCluster)
+doc['ColorLedCluster']={'':{syn:'ColorLedCluster function interface',inc:'from yocto_colorledcluster import *',cmt:'<p>The Yoctopuce application programming interface allows you to drive a color LED cluster. Unlike the ColorLed class, the ColorLedCluster allows to handle several LEDs at one. Color changes can be done using RGB coordinates as well as HSL coordinates. The module performs all conversions form RGB to HSL automatically. It is then self-evident to turn on a LED with a given hue and to progressively vary its saturation or lightness. If needed, you can find more information on the difference between RGB and HSL in the section following this one.</p>'}};
+doc['ColorLedCluster']['FindColorLedCluster']={syn:'Retrieves a RGB LED cluster for a given identifier.',lib:'YColorLedCluster.FindColorLedCluster()',pro:'def FindColorLedCluster(<span id=pn>func</span>)',cmt:'<p>Retrieves a RGB LED cluster for a given identifier. The identifier can be specified using several formats:<br> <ul> <li>FunctionLogicalName</li> <li>ModuleSerialNumber.FunctionIdentifier</li> <li>ModuleSerialNumber.FunctionLogicalName</li> <li>ModuleLogicalName.FunctionIdentifier</li> <li>ModuleLogicalName.FunctionLogicalName</li> </ul></p><p> This function does not require that the RGB LED cluster is online at the time it is invoked. The returned object is nevertheless valid. Use the method <tt>YColorLedCluster.isOnline()</tt> to test if the RGB LED cluster is indeed online at a given time. In case of ambiguity when looking for a RGB LED cluster by logical name, no error is notified: the first instance found is returned. The search is performed first by hardware name, then by logical name.</p>',par:{func:'a string that uniquely characterizes the RGB LED cluster'},ret:'a <tt>YColorLedCluster</tt> object allowing you to drive the RGB LED cluster.'};
+doc['ColorLedCluster']['FirstColorLedCluster']={syn:'Starts the enumeration of RGB LED clusters currently accessible.',lib:'YColorLedCluster.FirstColorLedCluster()',pro:'def FirstColorLedCluster()',cmt:'<p>Starts the enumeration of RGB LED clusters currently accessible. Use the method <tt>YColorLedCluster.nextColorLedCluster()</tt> to iterate on next RGB LED clusters.</p>',ret:'a pointer to a <tt>YColorLedCluster</tt> object, corresponding to the first RGB LED cluster currently online, or a <tt>null</tt> pointer if there are none.'};
+doc['ColorLedCluster']['addHslMoveToBlinkSeq']={syn:'Adds an HSL transition to a sequence.',lib:'colorledcluster.addHslMoveToBlinkSeq()',pro:'def addHslMoveToBlinkSeq(<span id=pn>seqIndex</span>, <span id=pn>hslValue</span>, <span id=pn>delay</span>)',cmt:'<p>Adds an HSL transition to a sequence. A sequence is a transition list, which can be executed in loop by an group of LEDs. Sequences are persistant and are saved in the device flash memory as soon as the <tt>saveBlinkSeq()</tt> method is called.</p>',par:{seqIndex:'sequence index.',hslValue:'target color (0xHHSSLL)',delay:'transition duration in ms'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['ColorLedCluster']['addMirrorToBlinkSeq']={syn:'Adds a mirror ending to a sequence.',lib:'colorledcluster.addMirrorToBlinkSeq()',pro:'def addMirrorToBlinkSeq(<span id=pn>seqIndex</span>)',cmt:'<p>Adds a mirror ending to a sequence. When the sequence will reach the end of the last transition, its running speed will automatically be reversed so that the sequence plays in the reverse direction, like in a mirror. After the first transition of the sequence is played at the end of the reverse execution, the sequence starts again in the initial direction.</p>',par:{seqIndex:'sequence index.'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['ColorLedCluster']['addRgbMoveToBlinkSeq']={syn:'Adds an RGB transition to a sequence.',lib:'colorledcluster.addRgbMoveToBlinkSeq()',pro:'def addRgbMoveToBlinkSeq(<span id=pn>seqIndex</span>, <span id=pn>rgbValue</span>, <span id=pn>delay</span>)',cmt:'<p>Adds an RGB transition to a sequence. A sequence is a transition list, which can be executed in loop by a group of LEDs. Sequences are persistent and are saved in the device flash memory as soon as the <tt>saveBlinkSeq()</tt> method is called.</p>',par:{seqIndex:'sequence index.',rgbValue:'target color (0xRRGGBB)',delay:'transition duration in ms'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['ColorLedCluster']['clearCache']={syn:'Invalidates the cache.',lib:'colorledcluster.clearCache()',pro:'def clearCache()',cmt:'<p>Invalidates the cache. Invalidates the cache of the RGB LED cluster attributes. Forces the next call to get_xxx() or loadxxx() to use values that come from the device.</p>'};
+doc['ColorLedCluster']['describe']={syn:'Returns a short text that describes unambiguously the instance of the RGB LED cluster in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'colorledcluster.describe()',pro:'def describe()',cmt:'<p>Returns a short text that describes unambiguously the instance of the RGB LED cluster in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. More precisely, <tt>TYPE</tt> is the type of the function, <tt>NAME</tt> it the name used for the first access to the function, <tt>SERIAL</tt> is the serial number of the module if the module is connected or <tt>\x22unresolved\x22</tt>, and <tt>FUNCTIONID</tt> is the hardware identifier of the function if the module is connected. For example, this method returns <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> if the module is already connected or <tt>Relay(BadCustomeName.relay1)=unresolved</tt> if the module has not yet been connected. This method does not trigger any USB or TCP transaction and can therefore be used in a debugger.</p>',ret:'a string that describes the RGB LED cluster (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['ColorLedCluster']['get_activeLedCount']={syn:'Returns the number of LEDs currently handled by the device.',lib:'colorledcluster.get_activeLedCount()',pro:'def get_activeLedCount()',cmt:'<p>Returns the number of LEDs currently handled by the device.</p>',ret:'an integer corresponding to the number of LEDs currently handled by the device',ext:'On failure, throws an exception or returns <tt>Y_ACTIVELEDCOUNT_INVALID</tt>.'};
+doc['ColorLedCluster']['get_advertisedValue']={syn:'Returns the current value of the RGB LED cluster (no more than 6 characters).',lib:'colorledcluster.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Returns the current value of the RGB LED cluster (no more than 6 characters).</p>',ret:'a string corresponding to the current value of the RGB LED cluster (no more than 6 characters).',ext:'On failure, throws an exception or returns <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['ColorLedCluster']['get_blinkSeqMaxCount']={syn:'Returns the maximum number of sequences that the device can handle.',lib:'colorledcluster.get_blinkSeqMaxCount()',pro:'def get_blinkSeqMaxCount()',cmt:'<p>Returns the maximum number of sequences that the device can handle.</p>',ret:'an integer corresponding to the maximum number of sequences that the device can handle',ext:'On failure, throws an exception or returns <tt>Y_BLINKSEQMAXCOUNT_INVALID</tt>.'};
+doc['ColorLedCluster']['get_blinkSeqMaxSize']={syn:'Returns the maximum length of sequences.',lib:'colorledcluster.get_blinkSeqMaxSize()',pro:'def get_blinkSeqMaxSize()',cmt:'<p>Returns the maximum length of sequences.</p>',ret:'an integer corresponding to the maximum length of sequences',ext:'On failure, throws an exception or returns <tt>Y_BLINKSEQMAXSIZE_INVALID</tt>.'};
+doc['ColorLedCluster']['get_blinkSeqSignatures']={syn:'Returns a list on 32 bit signatures for specified blinking sequences.',lib:'colorledcluster.get_blinkSeqSignatures()',pro:'def get_blinkSeqSignatures(<span id=pn>seqIndex</span>, <span id=pn>count</span>)',cmt:'<p>Returns a list on 32 bit signatures for specified blinking sequences. Since blinking sequences cannot be read from the device, this can be used to detect if a specific blinking sequence is already programmed.</p>',par:{seqIndex:'index of the first blinking sequence which should be returned',count:'number of blinking sequences which should be returned'},ret:'a list of 32 bit integer signatures',ext:'On failure, throws an exception or returns an empty array.'};
+doc['ColorLedCluster']['get_blinkSeqState']={syn:'Returns a list of integers with the started state for specified blinking sequences.',lib:'colorledcluster.get_blinkSeqState()',pro:'def get_blinkSeqState(<span id=pn>seqIndex</span>, <span id=pn>count</span>)',cmt:'<p>Returns a list of integers with the started state for specified blinking sequences.</p>',par:{seqIndex:'index of the first blinking sequence which should be returned',count:'number of blinking sequences which should be returned'},ret:'a list of integers, 0 for sequences turned off and 1 for sequences running',ext:'On failure, throws an exception or returns an empty array.'};
+doc['ColorLedCluster']['get_blinkSeqStateAtPowerOn']={syn:'Returns a list of integers with the \x22auto-start at power on\x22 flag state for specified blinking sequences.',lib:'colorledcluster.get_blinkSeqStateAtPowerOn()',pro:'def get_blinkSeqStateAtPowerOn(<span id=pn>seqIndex</span>, <span id=pn>count</span>)',cmt:'<p>Returns a list of integers with the \x22auto-start at power on\x22 flag state for specified blinking sequences.</p>',par:{seqIndex:'index of the first blinking sequence which should be returned',count:'number of blinking sequences which should be returned'},ret:'a list of integers, 0 for sequences turned off and 1 for sequences running',ext:'On failure, throws an exception or returns an empty array.'};
+doc['ColorLedCluster']['get_blinkSeqStateSpeed']={syn:'Returns a list of integers with the current speed for specified blinking sequences.',lib:'colorledcluster.get_blinkSeqStateSpeed()',pro:'def get_blinkSeqStateSpeed(<span id=pn>seqIndex</span>, <span id=pn>count</span>)',cmt:'<p>Returns a list of integers with the current speed for specified blinking sequences.</p>',par:{seqIndex:'index of the first sequence speed which should be returned',count:'number of sequence speeds which should be returned'},ret:'a list of integers, 0 for sequences turned off and 1 for sequences running',ext:'On failure, throws an exception or returns an empty array.'};
+doc['ColorLedCluster']['get_errorMessage']={syn:'Returns the error message of the latest error with the RGB LED cluster.',lib:'colorledcluster.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Returns the error message of the latest error with the RGB LED cluster. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a string corresponding to the latest error message that occured while using the RGB LED cluster object'};
+doc['ColorLedCluster']['get_errorType']={syn:'Returns the numerical error code of the latest error with the RGB LED cluster.',lib:'colorledcluster.get_errorType()',pro:'def get_errorType()',cmt:'<p>Returns the numerical error code of the latest error with the RGB LED cluster. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a number corresponding to the code of the latest error that occurred while using the RGB LED cluster object'};
+doc['ColorLedCluster']['get_friendlyName']={syn:'Returns a global identifier of the RGB LED cluster in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>.',lib:'colorledcluster.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Returns a global identifier of the RGB LED cluster in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>. The returned string uses the logical names of the module and of the RGB LED cluster if they are defined, otherwise the serial number of the module and the hardware identifier of the RGB LED cluster (for example: <tt>MyCustomName.relay1</tt>)</p>',ret:'a string that uniquely identifies the RGB LED cluster using logical names (ex: <tt>MyCustomName.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['ColorLedCluster']['get_functionDescriptor']={syn:'Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function.',lib:'colorledcluster.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function. This identifier can be used to test if two instances of <tt>YFunction</tt> reference the same physical function on the same physical device.</p>',ret:'an identifier of type <tt>YFUN_DESCR</tt>.',ext:'If the function has never been contacted, the returned value is <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>.'};
+doc['ColorLedCluster']['get_functionId']={syn:'Returns the hardware identifier of the RGB LED cluster, without reference to the module.',lib:'colorledcluster.get_functionId()',pro:'def get_functionId()',cmt:'<p>Returns the hardware identifier of the RGB LED cluster, without reference to the module. For example <tt>relay1</tt></p>',ret:'a string that identifies the RGB LED cluster (ex: <tt>relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['ColorLedCluster']['get_hardwareId']={syn:'Returns the unique hardware identifier of the RGB LED cluster in the form <tt>SERIAL.FUNCTIONID</tt>.',lib:'colorledcluster.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Returns the unique hardware identifier of the RGB LED cluster in the form <tt>SERIAL.FUNCTIONID</tt>. The unique hardware identifier is composed of the device serial number and of the hardware identifier of the RGB LED cluster (for example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'a string that uniquely identifies the RGB LED cluster (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['ColorLedCluster']['get_linkedSeqArray']={syn:'Returns a list on sequence index for each RGB LED.',lib:'colorledcluster.get_linkedSeqArray()',pro:'def get_linkedSeqArray(<span id=pn>ledIndex</span>, <span id=pn>count</span>)',cmt:'<p>Returns a list on sequence index for each RGB LED. The first number represents the sequence index for the the first LED, the second number represents the sequence index for the second LED, etc.</p>',par:{ledIndex:'index of the first LED which should be returned',count:'number of LEDs which should be returned'},ret:'a list of integers with sequence index',ext:'On failure, throws an exception or returns an empty array.'};
+doc['ColorLedCluster']['get_logicalName']={syn:'Returns the logical name of the RGB LED cluster.',lib:'colorledcluster.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Returns the logical name of the RGB LED cluster.</p>',ret:'a string corresponding to the logical name of the RGB LED cluster.',ext:'On failure, throws an exception or returns <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['ColorLedCluster']['get_maxLedCount']={syn:'Returns the maximum number of LEDs that the device can handle.',lib:'colorledcluster.get_maxLedCount()',pro:'def get_maxLedCount()',cmt:'<p>Returns the maximum number of LEDs that the device can handle.</p>',ret:'an integer corresponding to the maximum number of LEDs that the device can handle',ext:'On failure, throws an exception or returns <tt>Y_MAXLEDCOUNT_INVALID</tt>.'};
+doc['ColorLedCluster']['get_module']={syn:'Gets the <tt>YModule</tt> object for the device on which the function is located.',lib:'colorledcluster.get_module()',pro:'def get_module()',cmt:'<p>Gets the <tt>YModule</tt> object for the device on which the function is located. If the function cannot be located on any module, the returned instance of <tt>YModule</tt> is not shown as on-line.</p>',ret:'an instance of <tt>YModule</tt>'};
+doc['ColorLedCluster']['get_rgbColorArray']={syn:'Returns a list on 24bit RGB color values with the current colors displayed on the RGB leds.',lib:'colorledcluster.get_rgbColorArray()',pro:'def get_rgbColorArray(<span id=pn>ledIndex</span>, <span id=pn>count</span>)',cmt:'<p>Returns a list on 24bit RGB color values with the current colors displayed on the RGB leds. The first number represents the RGB value of the first LED, the second number represents the RGB value of the second LED, etc.</p>',par:{ledIndex:'index of the first LED which should be returned',count:'number of LEDs which should be returned'},ret:'a list of 24bit color codes with RGB components of selected LEDs, as 0xRRGGBB.',ext:'On failure, throws an exception or returns an empty array.'};
+doc['ColorLedCluster']['get_rgbColorArrayAtPowerOn']={syn:'Returns a list on 24bit RGB color values with the RGB LEDs startup colors.',lib:'colorledcluster.get_rgbColorArrayAtPowerOn()',pro:'def get_rgbColorArrayAtPowerOn(<span id=pn>ledIndex</span>, <span id=pn>count</span>)',cmt:'<p>Returns a list on 24bit RGB color values with the RGB LEDs startup colors. The first number represents the startup RGB value of the first LED, the second number represents the RGB value of the second LED, etc.</p>',par:{ledIndex:'index of the first LED which should be returned',count:'number of LEDs which should be returned'},ret:'a list of 24bit color codes with RGB components of selected LEDs, as 0xRRGGBB.',ext:'On failure, throws an exception or returns an empty array.'};
+doc['ColorLedCluster']['get_rgbColorBuffer']={syn:'Returns a binary buffer with content from the LED RGB buffer, as is.',lib:'colorledcluster.get_rgbColorBuffer()',pro:'def get_rgbColorBuffer(<span id=pn>ledIndex</span>, <span id=pn>count</span>)',cmt:'<p>Returns a binary buffer with content from the LED RGB buffer, as is. First three bytes are RGB components for the first LED in the interval, the next three bytes for the second LED in the interval, etc.</p>',par:{ledIndex:'index of the first LED which should be returned',count:'number of LEDs which should be returned'},ret:'a binary buffer with RGB components of selected LEDs.',ext:'On failure, throws an exception or returns an empty binary buffer.'};
+doc['ColorLedCluster']['get_userData']={syn:'Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>.',lib:'colorledcluster.get_userData()',pro:'def get_userData()',cmt:'<p>Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>. This attribute is never touched directly by the API, and is at disposal of the caller to store a context.</p>',ret:'the object stored previously by the caller.'};
+doc['ColorLedCluster']['hslArray_move']={syn:'Sets up a smooth HSL color transition to the specified pixel-by-pixel list of HSL color codes.',lib:'colorledcluster.hslArray_move()',pro:'def hslArray_move(<span id=pn>hslList</span>, <span id=pn>delay</span>)',cmt:'<p>Sets up a smooth HSL color transition to the specified pixel-by-pixel list of HSL color codes. The first color code represents the target HSL value of the first LED, the second color code represents the target value of the second LED, etc.</p>',par:{hslList:'a list of target 24bit HSL codes, in the form 0xHHSSLL',delay:'transition duration in ms'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['ColorLedCluster']['hsl_move']={syn:'Allows you to modify the current color of a group of adjacent LEDs to another color, in a seamless and autonomous manner.',lib:'colorledcluster.hsl_move()',pro:'def hsl_move(<span id=pn>ledIndex</span>, <span id=pn>count</span>, <span id=pn>hslValue</span>, <span id=pn>delay</span>)',cmt:'<p>Allows you to modify the current color of a group of adjacent LEDs to another color, in a seamless and autonomous manner. The transition is performed in the HSL space. In HSL, hue is a circular value (0..360\xB0). There are always two paths to perform the transition: by increasing or by decreasing the hue. The module selects the shortest transition. If the difference is exactly 180\xB0, the module selects the transition which increases the hue.</p>',par:{ledIndex:'index of the fisrt affected LED.',count:'affected LED count.',hslValue:'new color (0xHHSSLL).',delay:'transition duration in ms'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['ColorLedCluster']['isOnline']={syn:'Checks if the RGB LED cluster is currently reachable, without raising any error.',lib:'colorledcluster.isOnline()',pro:'def isOnline()',cmt:'<p>Checks if the RGB LED cluster is currently reachable, without raising any error. If there is a cached value for the RGB LED cluster in cache, that has not yet expired, the device is considered reachable. No exception is raised if there is an error while trying to contact the device hosting the RGB LED cluster.</p>',ret:'<tt>true</tt> if the RGB LED cluster can be reached, and <tt>false</tt> otherwise'};
+doc['ColorLedCluster']['linkLedToBlinkSeq']={syn:'Links adjacent LEDs to a specific sequence.',lib:'colorledcluster.linkLedToBlinkSeq()',pro:'def linkLedToBlinkSeq(<span id=pn>ledIndex</span>, <span id=pn>count</span>, <span id=pn>seqIndex</span>, <span id=pn>offset</span>)',cmt:'<p>Links adjacent LEDs to a specific sequence. These LEDs start to execute the sequence as soon as startBlinkSeq is called. It is possible to add an offset in the execution: that way we can have several groups of LED executing the same sequence, with a temporal offset. A LED cannot be linked to more than one sequence.</p>',par:{ledIndex:'index of the first affected LED.',count:'affected LED count.',seqIndex:'sequence index.',offset:'execution offset in ms.'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['ColorLedCluster']['linkLedToBlinkSeqAtPowerOn']={syn:'Links adjacent LEDs to a specific sequence at device poweron.',lib:'colorledcluster.linkLedToBlinkSeqAtPowerOn()',pro:'def linkLedToBlinkSeqAtPowerOn(<span id=pn>ledIndex</span>, <span id=pn>count</span>, <span id=pn>seqIndex</span>, <span id=pn>offset</span>)',cmt:'<p>Links adjacent LEDs to a specific sequence at device poweron. Don\x27t forget to configure the sequence auto start flag as well and call <tt>saveLedsConfigAtPowerOn()</tt>. It is possible to add an offset in the execution: that way we can have several groups of LEDs executing the same sequence, with a temporal offset. A LED cannot be linked to more than one sequence.</p>',par:{ledIndex:'index of the first affected LED.',count:'affected LED count.',seqIndex:'sequence index.',offset:'execution offset in ms.'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['ColorLedCluster']['linkLedToPeriodicBlinkSeq']={syn:'Links adjacent LEDs to a specific sequence.',lib:'colorledcluster.linkLedToPeriodicBlinkSeq()',pro:'def linkLedToPeriodicBlinkSeq(<span id=pn>ledIndex</span>, <span id=pn>count</span>, <span id=pn>seqIndex</span>, <span id=pn>periods</span>)',cmt:'<p>Links adjacent LEDs to a specific sequence. These LED start to execute the sequence as soon as startBlinkSeq is called. This function automatically introduces a shift between LEDs so that the specified number of sequence periods appears on the group of LEDs (wave effect).</p>',par:{ledIndex:'index of the first affected LED.',count:'affected LED count.',seqIndex:'sequence index.',periods:'number of periods to show on LEDs.'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['ColorLedCluster']['load']={syn:'Preloads the RGB LED cluster cache with a specified validity duration.',lib:'colorledcluster.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Preloads the RGB LED cluster cache with a specified validity duration. By default, whenever accessing a device, all function attributes are kept in cache for the standard duration (5 ms). This method can be used to temporarily mark the cache as valid for a longer period, in order to reduce network traffic for instance.</p>',par:{msValidity:'an integer corresponding to the validity attributed to the loaded function parameters, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['ColorLedCluster']['loadAttribute']={syn:'Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.',lib:'colorledcluster.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'On failure, throws an exception or returns an empty string.'};
+doc['ColorLedCluster']['muteValueCallbacks']={syn:'Disable the propagation of every new advertised value to the parent hub.',lib:'colorledcluster.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>Disable the propagation of every new advertised value to the parent hub. You can use this function to save bandwidth and CPU on computers with limited resources, or to prevent unwanted invocations of the HTTP callback. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['ColorLedCluster']['nextColorLedCluster']={syn:'Continues the enumeration of RGB LED clusters started using <tt>yFirstColorLedCluster()</tt>.',lib:'colorledcluster.nextColorLedCluster()',pro:'def nextColorLedCluster()',cmt:'<p>Continues the enumeration of RGB LED clusters started using <tt>yFirstColorLedCluster()</tt>.</p>',ret:'a pointer to a <tt>YColorLedCluster</tt> object, corresponding to a RGB LED cluster currently online, or a <tt>null</tt> pointer if there are no more RGB LED clusters to enumerate.'};
+doc['ColorLedCluster']['registerValueCallback']={syn:'Registers the callback function that is invoked on every change of advertised value.',lib:'colorledcluster.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every change of advertised value. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and the character string describing the new advertised value.'}};
+doc['ColorLedCluster']['resetBlinkSeq']={syn:'Stops a sequence execution and resets its contents.',lib:'colorledcluster.resetBlinkSeq()',pro:'def resetBlinkSeq(<span id=pn>seqIndex</span>)',cmt:'<p>Stops a sequence execution and resets its contents. Leds linked to this sequence are not automatically updated anymore.</p>',par:{seqIndex:'index of the sequence to reset'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['ColorLedCluster']['rgbArray_move']={syn:'Sets up a smooth RGB color transition to the specified pixel-by-pixel list of RGB color codes.',lib:'colorledcluster.rgbArray_move()',pro:'def rgbArray_move(<span id=pn>rgbList</span>, <span id=pn>delay</span>)',cmt:'<p>Sets up a smooth RGB color transition to the specified pixel-by-pixel list of RGB color codes. The first color code represents the target RGB value of the first LED, the next color code represents the target value of the next LED, etc.</p>',par:{rgbList:'a list of target 24bit RGB codes, in the form 0xRRGGBB',delay:'transition duration in ms'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['ColorLedCluster']['rgb_move']={syn:'Allows you to modify the current color of a group of adjacent LEDs to another color, in a seamless and autonomous manner.',lib:'colorledcluster.rgb_move()',pro:'def rgb_move(<span id=pn>ledIndex</span>, <span id=pn>count</span>, <span id=pn>rgbValue</span>, <span id=pn>delay</span>)',cmt:'<p>Allows you to modify the current color of a group of adjacent LEDs to another color, in a seamless and autonomous manner. The transition is performed in the RGB space.</p>',par:{ledIndex:'index of the first affected LED.',count:'affected LED count.',rgbValue:'new color (0xRRGGBB).',delay:'transition duration in ms'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['ColorLedCluster']['saveBlinkSeq']={syn:'Saves the definition of a sequence.',lib:'colorledcluster.saveBlinkSeq()',pro:'def saveBlinkSeq(<span id=pn>seqIndex</span>)',cmt:'<p>Saves the definition of a sequence. Warning: only sequence steps and flags are saved. to save the LEDs startup bindings, the method <tt>saveLedsConfigAtPowerOn()</tt> must be called.</p>',par:{seqIndex:'index of the sequence to start.'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['ColorLedCluster']['saveLedsConfigAtPowerOn']={syn:'Saves the LEDs power-on configuration.',lib:'colorledcluster.saveLedsConfigAtPowerOn()',pro:'def saveLedsConfigAtPowerOn()',cmt:'<p>Saves the LEDs power-on configuration. This includes the start-up color or sequence binding for all LEDs. Warning: if some LEDs are linked to a sequence, the method <tt>saveBlinkSeq()</tt> must also be called to save the sequence definition.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['ColorLedCluster']['set_activeLedCount']={syn:'Changes the number of LEDs currently handled by the device.',lib:'colorledcluster.set_activeLedCount()',pro:'def set_activeLedCount(<span id=pn>newval</span>)',cmt:'<p>Changes the number of LEDs currently handled by the device.</p>',par:{newval:'an integer corresponding to the number of LEDs currently handled by the device'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['ColorLedCluster']['set_blinkSeqSpeed']={syn:'Changes the execution speed of a sequence.',lib:'colorledcluster.set_blinkSeqSpeed()',pro:'def set_blinkSeqSpeed(<span id=pn>seqIndex</span>, <span id=pn>speed</span>)',cmt:'<p>Changes the execution speed of a sequence. The natural execution speed is 1000 per thousand. If you configure a slower speed, you can play the sequence in slow-motion. If you set a negative speed, you can play the sequence in reverse direction.</p>',par:{seqIndex:'index of the sequence to start.',speed:'sequence running speed (-1000...1000).'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['ColorLedCluster']['set_blinkSeqStateAtPowerOn']={syn:'Configures a sequence to make it start automatically at device startup.',lib:'colorledcluster.set_blinkSeqStateAtPowerOn()',pro:'def set_blinkSeqStateAtPowerOn(<span id=pn>seqIndex</span>, <span id=pn>autostart</span>)',cmt:'<p>Configures a sequence to make it start automatically at device startup. Don\x27t forget to call <tt>saveBlinkSeq()</tt> to make sure the modification is saved in the device flash memory.</p>',par:{seqIndex:'index of the sequence to reset.',autostart:'0 to keep the sequence turned off and 1 to start it automatically.'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['ColorLedCluster']['set_hslColor']={syn:'Changes the current color of consecutive LEDs in the cluster, using a HSL color.',lib:'colorledcluster.set_hslColor()',pro:'def set_hslColor(<span id=pn>ledIndex</span>, <span id=pn>count</span>, <span id=pn>hslValue</span>)',cmt:'<p>Changes the current color of consecutive LEDs in the cluster, using a HSL color. Encoding is done as follows: 0xHHSSLL.</p>',par:{ledIndex:'index of the first affected LED.',count:'affected LED count.',hslValue:'new color.'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['ColorLedCluster']['set_hslColorArray']={syn:'Sends 24bit HSL colors (provided as a list of integers) to the LED HSL buffer, as is.',lib:'colorledcluster.set_hslColorArray()',pro:'def set_hslColorArray(<span id=pn>ledIndex</span>, <span id=pn>hslList</span>)',cmt:'<p>Sends 24bit HSL colors (provided as a list of integers) to the LED HSL buffer, as is. The first number represents the HSL value of the LED specified as parameter, the second number represents the HSL value of the second LED, etc.</p>',par:{ledIndex:'index of the first LED which should be updated',hslList:'a list of 24bit HSL codes, in the form 0xHHSSLL'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['ColorLedCluster']['set_hslColorBuffer']={syn:'Sends a binary buffer to the LED HSL buffer, as is.',lib:'colorledcluster.set_hslColorBuffer()',pro:'def set_hslColorBuffer(<span id=pn>ledIndex</span>, <span id=pn>buff</span>)',cmt:'<p>Sends a binary buffer to the LED HSL buffer, as is. First three bytes are HSL components for the LED specified as parameter, the next three bytes for the second LED, etc.</p>',par:{ledIndex:'index of the first LED which should be updated',buff:'the binary buffer to send'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['ColorLedCluster']['set_logicalName']={syn:'Changes the logical name of the RGB LED cluster.',lib:'colorledcluster.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Changes the logical name of the RGB LED cluster. You can use <tt>yCheckLogicalName()</tt> prior to this call to make sure that your parameter is valid. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the logical name of the RGB LED cluster.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['ColorLedCluster']['set_rgbColor']={syn:'Changes the current color of consecutve LEDs in the cluster, using a RGB color.',lib:'colorledcluster.set_rgbColor()',pro:'def set_rgbColor(<span id=pn>ledIndex</span>, <span id=pn>count</span>, <span id=pn>rgbValue</span>)',cmt:'<p>Changes the current color of consecutve LEDs in the cluster, using a RGB color. Encoding is done as follows: 0xRRGGBB.</p>',par:{ledIndex:'index of the first affected LED.',count:'affected LED count.',rgbValue:'new color.'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['ColorLedCluster']['set_rgbColorArray']={syn:'Sends 24bit RGB colors (provided as a list of integers) to the LED RGB buffer, as is.',lib:'colorledcluster.set_rgbColorArray()',pro:'def set_rgbColorArray(<span id=pn>ledIndex</span>, <span id=pn>rgbList</span>)',cmt:'<p>Sends 24bit RGB colors (provided as a list of integers) to the LED RGB buffer, as is. The first number represents the RGB value of the LED specified as parameter, the second number represents the RGB value of the next LED, etc.</p>',par:{ledIndex:'index of the first LED which should be updated',rgbList:'a list of 24bit RGB codes, in the form 0xRRGGBB'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['ColorLedCluster']['set_rgbColorAtPowerOn']={syn:'Changes the color at device startup of consecutve LEDs in the cluster, using a RGB color.',lib:'colorledcluster.set_rgbColorAtPowerOn()',pro:'def set_rgbColorAtPowerOn(<span id=pn>ledIndex</span>, <span id=pn>count</span>, <span id=pn>rgbValue</span>)',cmt:'<p>Changes the color at device startup of consecutve LEDs in the cluster, using a RGB color. Encoding is done as follows: 0xRRGGBB. Don\x27t forget to call <tt>saveLedsConfigAtPowerOn()</tt> to make sure the modification is saved in the device flash memory.</p>',par:{ledIndex:'index of the first affected LED.',count:'affected LED count.',rgbValue:'new color.'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['ColorLedCluster']['set_rgbColorBuffer']={syn:'Sends a binary buffer to the LED RGB buffer, as is.',lib:'colorledcluster.set_rgbColorBuffer()',pro:'def set_rgbColorBuffer(<span id=pn>ledIndex</span>, <span id=pn>buff</span>)',cmt:'<p>Sends a binary buffer to the LED RGB buffer, as is. First three bytes are RGB components for LED specified as parameter, the next three bytes for the next LED, etc.</p>',par:{ledIndex:'index of the first LED which should be updated',buff:'the binary buffer to send'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['ColorLedCluster']['set_userData']={syn:'Stores a user context provided as argument in the userData attribute of the function.',lib:'colorledcluster.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Stores a user context provided as argument in the userData attribute of the function. This attribute is never touched by the API, and is at disposal of the caller to store a context.</p>',par:{data:'any kind of object to be stored'}};
+doc['ColorLedCluster']['startBlinkSeq']={syn:'Starts a sequence execution: every LED linked to that sequence starts to run it in a loop.',lib:'colorledcluster.startBlinkSeq()',pro:'def startBlinkSeq(<span id=pn>seqIndex</span>)',cmt:'<p>Starts a sequence execution: every LED linked to that sequence starts to run it in a loop.</p>',par:{seqIndex:'index of the sequence to start.'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['ColorLedCluster']['stopBlinkSeq']={syn:'Stops a sequence execution.',lib:'colorledcluster.stopBlinkSeq()',pro:'def stopBlinkSeq(<span id=pn>seqIndex</span>)',cmt:'<p>Stops a sequence execution. If started again, the execution restarts from the beginning.</p>',par:{seqIndex:'index of the sequence to stop.'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['ColorLedCluster']['unlinkLedFromBlinkSeq']={syn:'Unlinks adjacent LEDs from a sequence.',lib:'colorledcluster.unlinkLedFromBlinkSeq()',pro:'def unlinkLedFromBlinkSeq(<span id=pn>ledIndex</span>, <span id=pn>count</span>)',cmt:'<p>Unlinks adjacent LEDs from a sequence.</p>',par:{ledIndex:'index of the first affected LED.',count:'affected LED count.'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['ColorLedCluster']['unmuteValueCallbacks']={syn:'Re-enable the propagation of every new advertised value to the parent hub.',lib:'colorledcluster.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>Re-enable the propagation of every new advertised value to the parent hub. This function reverts the effect of a previous call to <tt>muteValueCallbacks()</tt>. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+//--- (end of generated code: ColorLedCluster)
+//--- (generated code: SpiPort)
+doc['SpiPort']={'':{syn:'SPI Port function interface',inc:'from yocto_spiport import *',cmt:'<p>The SpiPort function interface allows you to fully drive a Yoctopuce SPI port, to send and receive data, and to configure communication parameters (baud rate, bit count, parity, flow control and protocol). Note that Yoctopuce SPI ports are not exposed as virtual COM ports. They are meant to be used in the same way as all Yoctopuce devices.</p>'}};
+doc['SpiPort']['FindSpiPort']={syn:'Retrieves a SPI port for a given identifier.',lib:'YSpiPort.FindSpiPort()',pro:'def FindSpiPort(<span id=pn>func</span>)',cmt:'<p>Retrieves a SPI port for a given identifier. The identifier can be specified using several formats:<br> <ul> <li>FunctionLogicalName</li> <li>ModuleSerialNumber.FunctionIdentifier</li> <li>ModuleSerialNumber.FunctionLogicalName</li> <li>ModuleLogicalName.FunctionIdentifier</li> <li>ModuleLogicalName.FunctionLogicalName</li> </ul></p><p> This function does not require that the SPI port is online at the time it is invoked. The returned object is nevertheless valid. Use the method <tt>YSpiPort.isOnline()</tt> to test if the SPI port is indeed online at a given time. In case of ambiguity when looking for a SPI port by logical name, no error is notified: the first instance found is returned. The search is performed first by hardware name, then by logical name.</p>',par:{func:'a string that uniquely characterizes the SPI port'},ret:'a <tt>YSpiPort</tt> object allowing you to drive the SPI port.'};
+doc['SpiPort']['FirstSpiPort']={syn:'Starts the enumeration of SPI ports currently accessible.',lib:'YSpiPort.FirstSpiPort()',pro:'def FirstSpiPort()',cmt:'<p>Starts the enumeration of SPI ports currently accessible. Use the method <tt>YSpiPort.nextSpiPort()</tt> to iterate on next SPI ports.</p>',ret:'a pointer to a <tt>YSpiPort</tt> object, corresponding to the first SPI port currently online, or a <tt>null</tt> pointer if there are none.'};
+doc['SpiPort']['clearCache']={syn:'Invalidates the cache.',lib:'spiport.clearCache()',pro:'def clearCache()',cmt:'<p>Invalidates the cache. Invalidates the cache of the SPI port attributes. Forces the next call to get_xxx() or loadxxx() to use values that come from the device.</p>'};
+doc['SpiPort']['describe']={syn:'Returns a short text that describes unambiguously the instance of the SPI port in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'spiport.describe()',pro:'def describe()',cmt:'<p>Returns a short text that describes unambiguously the instance of the SPI port in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. More precisely, <tt>TYPE</tt> is the type of the function, <tt>NAME</tt> it the name used for the first access to the function, <tt>SERIAL</tt> is the serial number of the module if the module is connected or <tt>\x22unresolved\x22</tt>, and <tt>FUNCTIONID</tt> is the hardware identifier of the function if the module is connected. For example, this method returns <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> if the module is already connected or <tt>Relay(BadCustomeName.relay1)=unresolved</tt> if the module has not yet been connected. This method does not trigger any USB or TCP transaction and can therefore be used in a debugger.</p>',ret:'a string that describes the SPI port (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['SpiPort']['get_advertisedValue']={syn:'Returns the current value of the SPI port (no more than 6 characters).',lib:'spiport.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Returns the current value of the SPI port (no more than 6 characters).</p>',ret:'a string corresponding to the current value of the SPI port (no more than 6 characters).',ext:'On failure, throws an exception or returns <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['SpiPort']['get_currentJob']={syn:'Returns the name of the job file currently in use.',lib:'spiport.get_currentJob()',pro:'def get_currentJob()',cmt:'<p>Returns the name of the job file currently in use.</p>',ret:'a string corresponding to the name of the job file currently in use',ext:'On failure, throws an exception or returns <tt>Y_CURRENTJOB_INVALID</tt>.'};
+doc['SpiPort']['get_errCount']={syn:'Returns the total number of communication errors detected since last reset.',lib:'spiport.get_errCount()',pro:'def get_errCount()',cmt:'<p>Returns the total number of communication errors detected since last reset.</p>',ret:'an integer corresponding to the total number of communication errors detected since last reset',ext:'On failure, throws an exception or returns <tt>Y_ERRCOUNT_INVALID</tt>.'};
+doc['SpiPort']['get_errorMessage']={syn:'Returns the error message of the latest error with the SPI port.',lib:'spiport.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Returns the error message of the latest error with the SPI port. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a string corresponding to the latest error message that occured while using the SPI port object'};
+doc['SpiPort']['get_errorType']={syn:'Returns the numerical error code of the latest error with the SPI port.',lib:'spiport.get_errorType()',pro:'def get_errorType()',cmt:'<p>Returns the numerical error code of the latest error with the SPI port. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a number corresponding to the code of the latest error that occurred while using the SPI port object'};
+doc['SpiPort']['get_friendlyName']={syn:'Returns a global identifier of the SPI port in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>.',lib:'spiport.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Returns a global identifier of the SPI port in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>. The returned string uses the logical names of the module and of the SPI port if they are defined, otherwise the serial number of the module and the hardware identifier of the SPI port (for example: <tt>MyCustomName.relay1</tt>)</p>',ret:'a string that uniquely identifies the SPI port using logical names (ex: <tt>MyCustomName.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['SpiPort']['get_functionDescriptor']={syn:'Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function.',lib:'spiport.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function. This identifier can be used to test if two instances of <tt>YFunction</tt> reference the same physical function on the same physical device.</p>',ret:'an identifier of type <tt>YFUN_DESCR</tt>.',ext:'If the function has never been contacted, the returned value is <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>.'};
+doc['SpiPort']['get_functionId']={syn:'Returns the hardware identifier of the SPI port, without reference to the module.',lib:'spiport.get_functionId()',pro:'def get_functionId()',cmt:'<p>Returns the hardware identifier of the SPI port, without reference to the module. For example <tt>relay1</tt></p>',ret:'a string that identifies the SPI port (ex: <tt>relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['SpiPort']['get_hardwareId']={syn:'Returns the unique hardware identifier of the SPI port in the form <tt>SERIAL.FUNCTIONID</tt>.',lib:'spiport.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Returns the unique hardware identifier of the SPI port in the form <tt>SERIAL.FUNCTIONID</tt>. The unique hardware identifier is composed of the device serial number and of the hardware identifier of the SPI port (for example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'a string that uniquely identifies the SPI port (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['SpiPort']['get_lastMsg']={syn:'Returns the latest message fully received (for Line and Frame protocols).',lib:'spiport.get_lastMsg()',pro:'def get_lastMsg()',cmt:'<p>Returns the latest message fully received (for Line and Frame protocols).</p>',ret:'a string corresponding to the latest message fully received (for Line and Frame protocols)',ext:'On failure, throws an exception or returns <tt>Y_LASTMSG_INVALID</tt>.'};
+doc['SpiPort']['get_logicalName']={syn:'Returns the logical name of the SPI port.',lib:'spiport.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Returns the logical name of the SPI port.</p>',ret:'a string corresponding to the logical name of the SPI port.',ext:'On failure, throws an exception or returns <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['SpiPort']['get_module']={syn:'Gets the <tt>YModule</tt> object for the device on which the function is located.',lib:'spiport.get_module()',pro:'def get_module()',cmt:'<p>Gets the <tt>YModule</tt> object for the device on which the function is located. If the function cannot be located on any module, the returned instance of <tt>YModule</tt> is not shown as on-line.</p>',ret:'an instance of <tt>YModule</tt>'};
+doc['SpiPort']['get_protocol']={syn:'Returns the type of protocol used over the serial line, as a string.',lib:'spiport.get_protocol()',pro:'def get_protocol()',cmt:'<p>Returns the type of protocol used over the serial line, as a string. Possible values are \x22Line\x22 for ASCII messages separated by CR and/or LF, \x22Frame:[timeout]ms\x22 for binary messages separated by a delay time, \x22Char\x22 for a continuous ASCII stream or \x22Byte\x22 for a continuous binary stream.</p>',ret:'a string corresponding to the type of protocol used over the serial line, as a string',ext:'On failure, throws an exception or returns <tt>Y_PROTOCOL_INVALID</tt>.'};
+doc['SpiPort']['get_rxCount']={syn:'Returns the total number of bytes received since last reset.',lib:'spiport.get_rxCount()',pro:'def get_rxCount()',cmt:'<p>Returns the total number of bytes received since last reset.</p>',ret:'an integer corresponding to the total number of bytes received since last reset',ext:'On failure, throws an exception or returns <tt>Y_RXCOUNT_INVALID</tt>.'};
+doc['SpiPort']['get_rxMsgCount']={syn:'Returns the total number of messages received since last reset.',lib:'spiport.get_rxMsgCount()',pro:'def get_rxMsgCount()',cmt:'<p>Returns the total number of messages received since last reset.</p>',ret:'an integer corresponding to the total number of messages received since last reset',ext:'On failure, throws an exception or returns <tt>Y_RXMSGCOUNT_INVALID</tt>.'};
+doc['SpiPort']['get_shitftSampling']={syn:'Returns true when the SDI line phase is shifted with regards to the SDO line.',lib:'spiport.get_shitftSampling()',pro:'def get_shitftSampling()',cmt:'<p>Returns true when the SDI line phase is shifted with regards to the SDO line.</p>',ret:'either <tt>Y_SHITFTSAMPLING_OFF</tt> or <tt>Y_SHITFTSAMPLING_ON</tt>, according to true when the SDI line phase is shifted with regards to the SDO line',ext:'On failure, throws an exception or returns <tt>Y_SHITFTSAMPLING_INVALID</tt>.'};
+doc['SpiPort']['get_spiMode']={syn:'Returns the SPI port communication parameters, as a string such as \x22125000,0,msb\x22.',lib:'spiport.get_spiMode()',pro:'def get_spiMode()',cmt:'<p>Returns the SPI port communication parameters, as a string such as \x22125000,0,msb\x22. The string includes the baud rate, the SPI mode (between 0 and 3) and the bit order.</p>',ret:'a string corresponding to the SPI port communication parameters, as a string such as \x22125000,0,msb\x22',ext:'On failure, throws an exception or returns <tt>Y_SPIMODE_INVALID</tt>.'};
+doc['SpiPort']['get_ssPolarity']={syn:'Returns the SS line polarity.',lib:'spiport.get_ssPolarity()',pro:'def get_ssPolarity()',cmt:'<p>Returns the SS line polarity.</p>',ret:'either <tt>Y_SSPOLARITY_ACTIVE_LOW</tt> or <tt>Y_SSPOLARITY_ACTIVE_HIGH</tt>, according to the SS line polarity',ext:'On failure, throws an exception or returns <tt>Y_SSPOLARITY_INVALID</tt>.'};
+doc['SpiPort']['get_startupJob']={syn:'Returns the job file to use when the device is powered on.',lib:'spiport.get_startupJob()',pro:'def get_startupJob()',cmt:'<p>Returns the job file to use when the device is powered on.</p>',ret:'a string corresponding to the job file to use when the device is powered on',ext:'On failure, throws an exception or returns <tt>Y_STARTUPJOB_INVALID</tt>.'};
+doc['SpiPort']['get_txCount']={syn:'Returns the total number of bytes transmitted since last reset.',lib:'spiport.get_txCount()',pro:'def get_txCount()',cmt:'<p>Returns the total number of bytes transmitted since last reset.</p>',ret:'an integer corresponding to the total number of bytes transmitted since last reset',ext:'On failure, throws an exception or returns <tt>Y_TXCOUNT_INVALID</tt>.'};
+doc['SpiPort']['get_txMsgCount']={syn:'Returns the total number of messages send since last reset.',lib:'spiport.get_txMsgCount()',pro:'def get_txMsgCount()',cmt:'<p>Returns the total number of messages send since last reset.</p>',ret:'an integer corresponding to the total number of messages send since last reset',ext:'On failure, throws an exception or returns <tt>Y_TXMSGCOUNT_INVALID</tt>.'};
+doc['SpiPort']['get_userData']={syn:'Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>.',lib:'spiport.get_userData()',pro:'def get_userData()',cmt:'<p>Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>. This attribute is never touched directly by the API, and is at disposal of the caller to store a context.</p>',ret:'the object stored previously by the caller.'};
+doc['SpiPort']['get_voltageLevel']={syn:'Returns the voltage level used on the serial line.',lib:'spiport.get_voltageLevel()',pro:'def get_voltageLevel()',cmt:'<p>Returns the voltage level used on the serial line.</p>',ret:'a value among <tt>Y_VOLTAGELEVEL_OFF</tt>, <tt>Y_VOLTAGELEVEL_TTL3V</tt>, <tt>Y_VOLTAGELEVEL_TTL3VR</tt>, <tt>Y_VOLTAGELEVEL_TTL5V</tt>, <tt>Y_VOLTAGELEVEL_TTL5VR</tt>, <tt>Y_VOLTAGELEVEL_RS232</tt> and <tt>Y_VOLTAGELEVEL_RS485</tt> corresponding to the voltage level used on the serial line',ext:'On failure, throws an exception or returns <tt>Y_VOLTAGELEVEL_INVALID</tt>.'};
+doc['SpiPort']['isOnline']={syn:'Checks if the SPI port is currently reachable, without raising any error.',lib:'spiport.isOnline()',pro:'def isOnline()',cmt:'<p>Checks if the SPI port is currently reachable, without raising any error. If there is a cached value for the SPI port in cache, that has not yet expired, the device is considered reachable. No exception is raised if there is an error while trying to contact the device hosting the SPI port.</p>',ret:'<tt>true</tt> if the SPI port can be reached, and <tt>false</tt> otherwise'};
+doc['SpiPort']['load']={syn:'Preloads the SPI port cache with a specified validity duration.',lib:'spiport.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Preloads the SPI port cache with a specified validity duration. By default, whenever accessing a device, all function attributes are kept in cache for the standard duration (5 ms). This method can be used to temporarily mark the cache as valid for a longer period, in order to reduce network traffic for instance.</p>',par:{msValidity:'an integer corresponding to the validity attributed to the loaded function parameters, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['SpiPort']['loadAttribute']={syn:'Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.',lib:'spiport.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'On failure, throws an exception or returns an empty string.'};
+doc['SpiPort']['muteValueCallbacks']={syn:'Disable the propagation of every new advertised value to the parent hub.',lib:'spiport.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>Disable the propagation of every new advertised value to the parent hub. You can use this function to save bandwidth and CPU on computers with limited resources, or to prevent unwanted invocations of the HTTP callback. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['SpiPort']['nextSpiPort']={syn:'Continues the enumeration of SPI ports started using <tt>yFirstSpiPort()</tt>.',lib:'spiport.nextSpiPort()',pro:'def nextSpiPort()',cmt:'<p>Continues the enumeration of SPI ports started using <tt>yFirstSpiPort()</tt>.</p>',ret:'a pointer to a <tt>YSpiPort</tt> object, corresponding to a SPI port currently online, or a <tt>null</tt> pointer if there are no more SPI ports to enumerate.'};
+doc['SpiPort']['queryLine']={syn:'Sends a text line query to the serial port, and reads the reply, if any.',lib:'spiport.queryLine()',pro:'def queryLine(<span id=pn>query</span>, <span id=pn>maxWait</span>)',cmt:'<p>Sends a text line query to the serial port, and reads the reply, if any. This function is intended to be used when the serial port is configured for \x27Line\x27 protocol.</p>',par:{query:'the line query to send (without CR/LF)',maxWait:'the maximum number of milliseconds to wait for a reply.'},ret:'the next text line received after sending the text query, as a string. Additional lines can be obtained by calling readLine or readMessages.',ext:'On failure, throws an exception or returns an empty array.'};
+doc['SpiPort']['readArray']={syn:'Reads data from the receive buffer as a list of bytes, starting at current stream position.',lib:'spiport.readArray()',pro:'def readArray(<span id=pn>nChars</span>)',cmt:'<p>Reads data from the receive buffer as a list of bytes, starting at current stream position. If data at current stream position is not available anymore in the receive buffer, the function performs a short read.</p>',par:{nChars:'the maximum number of bytes to read'},ret:'a sequence of bytes with receive buffer contents',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['SpiPort']['readBin']={syn:'Reads data from the receive buffer as a binary buffer, starting at current stream position.',lib:'spiport.readBin()',pro:'def readBin(<span id=pn>nChars</span>)',cmt:'<p>Reads data from the receive buffer as a binary buffer, starting at current stream position. If data at current stream position is not available anymore in the receive buffer, the function performs a short read.</p>',par:{nChars:'the maximum number of bytes to read'},ret:'a binary object with receive buffer contents',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['SpiPort']['readByte']={syn:'Reads one byte from the receive buffer, starting at current stream position.',lib:'spiport.readByte()',pro:'def readByte()',cmt:'<p>Reads one byte from the receive buffer, starting at current stream position. If data at current stream position is not available anymore in the receive buffer, or if there is no data available yet, the function returns YAPI_NO_MORE_DATA.</p>',ret:'the next byte',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['SpiPort']['readHex']={syn:'Reads data from the receive buffer as a hexadecimal string, starting at current stream position.',lib:'spiport.readHex()',pro:'def readHex(<span id=pn>nBytes</span>)',cmt:'<p>Reads data from the receive buffer as a hexadecimal string, starting at current stream position. If data at current stream position is not available anymore in the receive buffer, the function performs a short read.</p>',par:{nBytes:'the maximum number of bytes to read'},ret:'a string with receive buffer contents, encoded in hexadecimal',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['SpiPort']['readLine']={syn:'Reads a single line (or message) from the receive buffer, starting at current stream position.',lib:'spiport.readLine()',pro:'def readLine()',cmt:'<p>Reads a single line (or message) from the receive buffer, starting at current stream position. This function is intended to be used when the serial port is configured for a message protocol, such as \x27Line\x27 mode or frame protocols.</p><p> If data at current stream position is not available anymore in the receive buffer, the function returns the oldest available line and moves the stream position just after. If no new full line is received, the function returns an empty line.</p>',ret:'a string with a single line of text',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['SpiPort']['readMessages']={syn:'Searches for incoming messages in the serial port receive buffer matching a given pattern, starting at current position.',lib:'spiport.readMessages()',pro:'def readMessages(<span id=pn>pattern</span>, <span id=pn>maxWait</span>)',cmt:'<p>Searches for incoming messages in the serial port receive buffer matching a given pattern, starting at current position. This function will only compare and return printable characters in the message strings. Binary protocols are handled as hexadecimal strings.</p><p> The search returns all messages matching the expression provided as argument in the buffer. If no matching message is found, the search waits for one up to the specified maximum timeout (in milliseconds).</p>',par:{pattern:'a limited regular expression describing the expected message format, or an empty string if all messages should be returned (no filtering). When using binary protocols, the format applies to the hexadecimal representation of the message.',maxWait:'the maximum number of milliseconds to wait for a message if none is found in the receive buffer.'},ret:'an array of strings containing the messages found, if any. Binary messages are converted to hexadecimal representation.',ext:'On failure, throws an exception or returns an empty array.'};
+doc['SpiPort']['readStr']={syn:'Reads data from the receive buffer as a string, starting at current stream position.',lib:'spiport.readStr()',pro:'def readStr(<span id=pn>nChars</span>)',cmt:'<p>Reads data from the receive buffer as a string, starting at current stream position. If data at current stream position is not available anymore in the receive buffer, the function performs a short read.</p>',par:{nChars:'the maximum number of characters to read'},ret:'a string with receive buffer contents',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['SpiPort']['read_avail']={syn:'Returns the number of bytes available to read in the input buffer starting from the current absolute stream position pointer of the API object.',lib:'spiport.read_avail()',pro:'def read_avail()',cmt:'<p>Returns the number of bytes available to read in the input buffer starting from the current absolute stream position pointer of the API object.</p>',ret:'the number of bytes available to read'};
+doc['SpiPort']['read_seek']={syn:'Changes the current internal stream position to the specified value.',lib:'spiport.read_seek()',pro:'def read_seek(<span id=pn>absPos</span>)',cmt:'<p>Changes the current internal stream position to the specified value. This function does not affect the device, it only changes the value stored in the API object for the next read operations.</p>',par:{absPos:'the absolute position index for next read operations.'},ret:'nothing.'};
+doc['SpiPort']['read_tell']={syn:'Returns the current absolute stream position pointer of the API object.',lib:'spiport.read_tell()',pro:'def read_tell()',cmt:'<p>Returns the current absolute stream position pointer of the API object.</p>',ret:'the absolute position index for next read operations.'};
+doc['SpiPort']['registerValueCallback']={syn:'Registers the callback function that is invoked on every change of advertised value.',lib:'spiport.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every change of advertised value. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and the character string describing the new advertised value.'}};
+doc['SpiPort']['reset']={syn:'Clears the serial port buffer and resets counters to zero.',lib:'spiport.reset()',pro:'def reset()',cmt:'<p>Clears the serial port buffer and resets counters to zero.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['SpiPort']['selectJob']={syn:'Load and start processing the specified job file.',lib:'spiport.selectJob()',pro:'def selectJob(<span id=pn>jobfile</span>)',cmt:'<p>Load and start processing the specified job file. The file must have been previously created using the user interface or uploaded on the device filesystem using the <tt>uploadJob()</tt> function.</p>',par:{jobfile:'name of the job file (on the device filesystem)'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['SpiPort']['set_SS']={syn:'Manually sets the state of the SS line.',lib:'spiport.set_SS()',pro:'def set_SS(<span id=pn>val</span>)',cmt:'<p>Manually sets the state of the SS line. This function has no effect when the SS line is handled automatically.</p>',par:{val:'1 to turn SS active, 0 to release SS.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['SpiPort']['set_currentJob']={syn:'Changes the job to use when the device is powered on.',lib:'spiport.set_currentJob()',pro:'def set_currentJob(<span id=pn>newval</span>)',cmt:'<p>Changes the job to use when the device is powered on. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the job to use when the device is powered on'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['SpiPort']['set_logicalName']={syn:'Changes the logical name of the SPI port.',lib:'spiport.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Changes the logical name of the SPI port. You can use <tt>yCheckLogicalName()</tt> prior to this call to make sure that your parameter is valid. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the logical name of the SPI port.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['SpiPort']['set_protocol']={syn:'Changes the type of protocol used over the serial line.',lib:'spiport.set_protocol()',pro:'def set_protocol(<span id=pn>newval</span>)',cmt:'<p>Changes the type of protocol used over the serial line. Possible values are \x22Line\x22 for ASCII messages separated by CR and/or LF, \x22Frame:[timeout]ms\x22 for binary messages separated by a delay time, \x22Char\x22 for a continuous ASCII stream or \x22Byte\x22 for a continuous binary stream. The suffix \x22/[wait]ms\x22 can be added to reduce the transmit rate so that there is always at lest the specified number of milliseconds between each bytes sent.</p>',par:{newval:'a string corresponding to the type of protocol used over the serial line'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['SpiPort']['set_shitftSampling']={syn:'Changes the SDI line sampling shift.',lib:'spiport.set_shitftSampling()',pro:'def set_shitftSampling(<span id=pn>newval</span>)',cmt:'<p>Changes the SDI line sampling shift. When disabled, SDI line is sampled in the middle of data output time. When enabled, SDI line is samples at the end of data output time.</p>',par:{newval:'either <tt>Y_SHITFTSAMPLING_OFF</tt> or <tt>Y_SHITFTSAMPLING_ON</tt>, according to the SDI line sampling shift'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['SpiPort']['set_spiMode']={syn:'Changes the SPI port communication parameters, with a string such as \x22125000,0,msb\x22.',lib:'spiport.set_spiMode()',pro:'def set_spiMode(<span id=pn>newval</span>)',cmt:'<p>Changes the SPI port communication parameters, with a string such as \x22125000,0,msb\x22. The string includes the baud rate, the SPI mode (between 0 and 3) and the bit order.</p>',par:{newval:'a string corresponding to the SPI port communication parameters, with a string such as \x22125000,0,msb\x22'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['SpiPort']['set_ssPolarity']={syn:'Changes the SS line polarity.',lib:'spiport.set_ssPolarity()',pro:'def set_ssPolarity(<span id=pn>newval</span>)',cmt:'<p>Changes the SS line polarity.</p>',par:{newval:'either <tt>Y_SSPOLARITY_ACTIVE_LOW</tt> or <tt>Y_SSPOLARITY_ACTIVE_HIGH</tt>, according to the SS line polarity'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['SpiPort']['set_startupJob']={syn:'Changes the job to use when the device is powered on.',lib:'spiport.set_startupJob()',pro:'def set_startupJob(<span id=pn>newval</span>)',cmt:'<p>Changes the job to use when the device is powered on. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the job to use when the device is powered on'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['SpiPort']['set_userData']={syn:'Stores a user context provided as argument in the userData attribute of the function.',lib:'spiport.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Stores a user context provided as argument in the userData attribute of the function. This attribute is never touched by the API, and is at disposal of the caller to store a context.</p>',par:{data:'any kind of object to be stored'}};
+doc['SpiPort']['set_voltageLevel']={syn:'Changes the voltage type used on the serial line.',lib:'spiport.set_voltageLevel()',pro:'def set_voltageLevel(<span id=pn>newval</span>)',cmt:'<p>Changes the voltage type used on the serial line. Valid values will depend on the Yoctopuce device model featuring the serial port feature. Check your device documentation to find out which values are valid for that specific model. \x09 Trying to set an invalid value will have no effect.</p>',par:{newval:'a value among <tt>Y_VOLTAGELEVEL_OFF</tt>, <tt>Y_VOLTAGELEVEL_TTL3V</tt>, <tt>Y_VOLTAGELEVEL_TTL3VR</tt>, <tt>Y_VOLTAGELEVEL_TTL5V</tt>, <tt>Y_VOLTAGELEVEL_TTL5VR</tt>, <tt>Y_VOLTAGELEVEL_RS232</tt> and <tt>Y_VOLTAGELEVEL_RS485</tt> corresponding to the voltage type used on the serial line'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['SpiPort']['unmuteValueCallbacks']={syn:'Re-enable the propagation of every new advertised value to the parent hub.',lib:'spiport.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>Re-enable the propagation of every new advertised value to the parent hub. This function reverts the effect of a previous call to <tt>muteValueCallbacks()</tt>. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['SpiPort']['uploadJob']={syn:'Saves the job definition string (JSON data) into a job file.',lib:'spiport.uploadJob()',pro:'def uploadJob(<span id=pn>jobfile</span>, <span id=pn>jsonDef</span>)',cmt:'<p>Saves the job definition string (JSON data) into a job file. The job file can be later enabled using <tt>selectJob()</tt>.</p>',par:{jobfile:'name of the job file to save on the device filesystem',jsonDef:'a string containing a JSON definition of the job'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['SpiPort']['writeArray']={syn:'Sends a byte sequence (provided as a list of bytes) to the serial port.',lib:'spiport.writeArray()',pro:'def writeArray(<span id=pn>byteList</span>)',cmt:'<p>Sends a byte sequence (provided as a list of bytes) to the serial port.</p>',par:{byteList:'a list of byte codes'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['SpiPort']['writeBin']={syn:'Sends a binary buffer to the serial port, as is.',lib:'spiport.writeBin()',pro:'def writeBin(<span id=pn>buff</span>)',cmt:'<p>Sends a binary buffer to the serial port, as is.</p>',par:{buff:'the binary buffer to send'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['SpiPort']['writeByte']={syn:'Sends a single byte to the serial port.',lib:'spiport.writeByte()',pro:'def writeByte(<span id=pn>code</span>)',cmt:'<p>Sends a single byte to the serial port.</p>',par:{code:'the byte to send'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['SpiPort']['writeHex']={syn:'Sends a byte sequence (provided as a hexadecimal string) to the serial port.',lib:'spiport.writeHex()',pro:'def writeHex(<span id=pn>hexString</span>)',cmt:'<p>Sends a byte sequence (provided as a hexadecimal string) to the serial port.</p>',par:{hexString:'a string of hexadecimal byte codes'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['SpiPort']['writeLine']={syn:'Sends an ASCII string to the serial port, followed by a line break (CR LF).',lib:'spiport.writeLine()',pro:'def writeLine(<span id=pn>text</span>)',cmt:'<p>Sends an ASCII string to the serial port, followed by a line break (CR LF).</p>',par:{text:'the text string to send'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['SpiPort']['writeStr']={syn:'Sends an ASCII string to the serial port, as is.',lib:'spiport.writeStr()',pro:'def writeStr(<span id=pn>text</span>)',cmt:'<p>Sends an ASCII string to the serial port, as is.</p>',par:{text:'the text string to send'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+//--- (end of generated code: SpiPort)
+//--- (generated code: MessageBox)
+doc['MessageBox']={'':{syn:'MessageBox function interface',inc:'from yocto_messagebox import *',cmt:'<p>YMessageBox functions provides SMS sending and receiving capability to GSM-enabled Yoctopuce devices.</p>'}};
+doc['MessageBox']['FindMessageBox']={syn:'Retrieves a MessageBox interface for a given identifier.',lib:'YMessageBox.FindMessageBox()',pro:'def FindMessageBox(<span id=pn>func</span>)',cmt:'<p>Retrieves a MessageBox interface for a given identifier. The identifier can be specified using several formats:<br> <ul> <li>FunctionLogicalName</li> <li>ModuleSerialNumber.FunctionIdentifier</li> <li>ModuleSerialNumber.FunctionLogicalName</li> <li>ModuleLogicalName.FunctionIdentifier</li> <li>ModuleLogicalName.FunctionLogicalName</li> </ul></p><p> This function does not require that the MessageBox interface is online at the time it is invoked. The returned object is nevertheless valid. Use the method <tt>YMessageBox.isOnline()</tt> to test if the MessageBox interface is indeed online at a given time. In case of ambiguity when looking for a MessageBox interface by logical name, no error is notified: the first instance found is returned. The search is performed first by hardware name, then by logical name.</p>',par:{func:'a string that uniquely characterizes the MessageBox interface'},ret:'a <tt>YMessageBox</tt> object allowing you to drive the MessageBox interface.'};
+doc['MessageBox']['FirstMessageBox']={syn:'Starts the enumeration of MessageBox interfaces currently accessible.',lib:'YMessageBox.FirstMessageBox()',pro:'def FirstMessageBox()',cmt:'<p>Starts the enumeration of MessageBox interfaces currently accessible. Use the method <tt>YMessageBox.nextMessageBox()</tt> to iterate on next MessageBox interfaces.</p>',ret:'a pointer to a <tt>YMessageBox</tt> object, corresponding to the first MessageBox interface currently online, or a <tt>null</tt> pointer if there are none.'};
+doc['MessageBox']['clearCache']={syn:'Invalidates the cache.',lib:'messagebox.clearCache()',pro:'def clearCache()',cmt:'<p>Invalidates the cache. Invalidates the cache of the MessageBox interface attributes. Forces the next call to get_xxx() or loadxxx() to use values that come from the device.</p>'};
+doc['MessageBox']['clearPduCounters']={syn:'Clear the SMS units counters.',lib:'messagebox.clearPduCounters()',pro:'def clearPduCounters()',cmt:'<p>Clear the SMS units counters.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['MessageBox']['describe']={syn:'Returns a short text that describes unambiguously the instance of the MessageBox interface in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'messagebox.describe()',pro:'def describe()',cmt:'<p>Returns a short text that describes unambiguously the instance of the MessageBox interface in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. More precisely, <tt>TYPE</tt> is the type of the function, <tt>NAME</tt> it the name used for the first access to the function, <tt>SERIAL</tt> is the serial number of the module if the module is connected or <tt>\x22unresolved\x22</tt>, and <tt>FUNCTIONID</tt> is the hardware identifier of the function if the module is connected. For example, this method returns <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> if the module is already connected or <tt>Relay(BadCustomeName.relay1)=unresolved</tt> if the module has not yet been connected. This method does not trigger any USB or TCP transaction and can therefore be used in a debugger.</p>',ret:'a string that describes the MessageBox interface (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['MessageBox']['get_advertisedValue']={syn:'Returns the current value of the MessageBox interface (no more than 6 characters).',lib:'messagebox.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Returns the current value of the MessageBox interface (no more than 6 characters).</p>',ret:'a string corresponding to the current value of the MessageBox interface (no more than 6 characters).',ext:'On failure, throws an exception or returns <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['MessageBox']['get_errorMessage']={syn:'Returns the error message of the latest error with the MessageBox interface.',lib:'messagebox.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Returns the error message of the latest error with the MessageBox interface. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a string corresponding to the latest error message that occured while using the MessageBox interface object'};
+doc['MessageBox']['get_errorType']={syn:'Returns the numerical error code of the latest error with the MessageBox interface.',lib:'messagebox.get_errorType()',pro:'def get_errorType()',cmt:'<p>Returns the numerical error code of the latest error with the MessageBox interface. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a number corresponding to the code of the latest error that occurred while using the MessageBox interface object'};
+doc['MessageBox']['get_friendlyName']={syn:'Returns a global identifier of the MessageBox interface in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>.',lib:'messagebox.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Returns a global identifier of the MessageBox interface in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>. The returned string uses the logical names of the module and of the MessageBox interface if they are defined, otherwise the serial number of the module and the hardware identifier of the MessageBox interface (for example: <tt>MyCustomName.relay1</tt>)</p>',ret:'a string that uniquely identifies the MessageBox interface using logical names (ex: <tt>MyCustomName.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['MessageBox']['get_functionDescriptor']={syn:'Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function.',lib:'messagebox.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function. This identifier can be used to test if two instances of <tt>YFunction</tt> reference the same physical function on the same physical device.</p>',ret:'an identifier of type <tt>YFUN_DESCR</tt>.',ext:'If the function has never been contacted, the returned value is <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>.'};
+doc['MessageBox']['get_functionId']={syn:'Returns the hardware identifier of the MessageBox interface, without reference to the module.',lib:'messagebox.get_functionId()',pro:'def get_functionId()',cmt:'<p>Returns the hardware identifier of the MessageBox interface, without reference to the module. For example <tt>relay1</tt></p>',ret:'a string that identifies the MessageBox interface (ex: <tt>relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['MessageBox']['get_hardwareId']={syn:'Returns the unique hardware identifier of the MessageBox interface in the form <tt>SERIAL.FUNCTIONID</tt>.',lib:'messagebox.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Returns the unique hardware identifier of the MessageBox interface in the form <tt>SERIAL.FUNCTIONID</tt>. The unique hardware identifier is composed of the device serial number and of the hardware identifier of the MessageBox interface (for example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'a string that uniquely identifies the MessageBox interface (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['MessageBox']['get_logicalName']={syn:'Returns the logical name of the MessageBox interface.',lib:'messagebox.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Returns the logical name of the MessageBox interface.</p>',ret:'a string corresponding to the logical name of the MessageBox interface.',ext:'On failure, throws an exception or returns <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['MessageBox']['get_messages']={syn:'Returns the list of messages received and not deleted.',lib:'messagebox.get_messages()',pro:'def get_messages()',cmt:'<p>Returns the list of messages received and not deleted. This function will automatically decode concatenated SMS.</p>',ret:'an YSms object list.',ext:'On failure, throws an exception or returns an empty list.'};
+doc['MessageBox']['get_module']={syn:'Gets the <tt>YModule</tt> object for the device on which the function is located.',lib:'messagebox.get_module()',pro:'def get_module()',cmt:'<p>Gets the <tt>YModule</tt> object for the device on which the function is located. If the function cannot be located on any module, the returned instance of <tt>YModule</tt> is not shown as on-line.</p>',ret:'an instance of <tt>YModule</tt>'};
+doc['MessageBox']['get_pduReceived']={syn:'Returns the number of SMS units received so far.',lib:'messagebox.get_pduReceived()',pro:'def get_pduReceived()',cmt:'<p>Returns the number of SMS units received so far.</p>',ret:'an integer corresponding to the number of SMS units received so far',ext:'On failure, throws an exception or returns <tt>Y_PDURECEIVED_INVALID</tt>.'};
+doc['MessageBox']['get_pduSent']={syn:'Returns the number of SMS units sent so far.',lib:'messagebox.get_pduSent()',pro:'def get_pduSent()',cmt:'<p>Returns the number of SMS units sent so far.</p>',ret:'an integer corresponding to the number of SMS units sent so far',ext:'On failure, throws an exception or returns <tt>Y_PDUSENT_INVALID</tt>.'};
+doc['MessageBox']['get_slotsCount']={syn:'Returns the total number of message storage slots on the SIM card.',lib:'messagebox.get_slotsCount()',pro:'def get_slotsCount()',cmt:'<p>Returns the total number of message storage slots on the SIM card.</p>',ret:'an integer corresponding to the total number of message storage slots on the SIM card',ext:'On failure, throws an exception or returns <tt>Y_SLOTSCOUNT_INVALID</tt>.'};
+doc['MessageBox']['get_slotsInUse']={syn:'Returns the number of message storage slots currently in use.',lib:'messagebox.get_slotsInUse()',pro:'def get_slotsInUse()',cmt:'<p>Returns the number of message storage slots currently in use.</p>',ret:'an integer corresponding to the number of message storage slots currently in use',ext:'On failure, throws an exception or returns <tt>Y_SLOTSINUSE_INVALID</tt>.'};
+doc['MessageBox']['get_userData']={syn:'Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>.',lib:'messagebox.get_userData()',pro:'def get_userData()',cmt:'<p>Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>. This attribute is never touched directly by the API, and is at disposal of the caller to store a context.</p>',ret:'the object stored previously by the caller.'};
+doc['MessageBox']['isOnline']={syn:'Checks if the MessageBox interface is currently reachable, without raising any error.',lib:'messagebox.isOnline()',pro:'def isOnline()',cmt:'<p>Checks if the MessageBox interface is currently reachable, without raising any error. If there is a cached value for the MessageBox interface in cache, that has not yet expired, the device is considered reachable. No exception is raised if there is an error while trying to contact the device hosting the MessageBox interface.</p>',ret:'<tt>true</tt> if the MessageBox interface can be reached, and <tt>false</tt> otherwise'};
+doc['MessageBox']['load']={syn:'Preloads the MessageBox interface cache with a specified validity duration.',lib:'messagebox.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Preloads the MessageBox interface cache with a specified validity duration. By default, whenever accessing a device, all function attributes are kept in cache for the standard duration (5 ms). This method can be used to temporarily mark the cache as valid for a longer period, in order to reduce network traffic for instance.</p>',par:{msValidity:'an integer corresponding to the validity attributed to the loaded function parameters, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['MessageBox']['loadAttribute']={syn:'Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.',lib:'messagebox.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'On failure, throws an exception or returns an empty string.'};
+doc['MessageBox']['muteValueCallbacks']={syn:'Disable the propagation of every new advertised value to the parent hub.',lib:'messagebox.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>Disable the propagation of every new advertised value to the parent hub. You can use this function to save bandwidth and CPU on computers with limited resources, or to prevent unwanted invocations of the HTTP callback. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['MessageBox']['newMessage']={syn:'Creates a new empty SMS message, to be configured and sent later on.',lib:'messagebox.newMessage()',pro:'def newMessage(<span id=pn>recipient</span>)',cmt:'<p>Creates a new empty SMS message, to be configured and sent later on.</p>',par:{recipient:'a text string with the recipient phone number, either as a national number, or in international format starting with a plus sign'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['MessageBox']['nextMessageBox']={syn:'Continues the enumeration of MessageBox interfaces started using <tt>yFirstMessageBox()</tt>.',lib:'messagebox.nextMessageBox()',pro:'def nextMessageBox()',cmt:'<p>Continues the enumeration of MessageBox interfaces started using <tt>yFirstMessageBox()</tt>.</p>',ret:'a pointer to a <tt>YMessageBox</tt> object, corresponding to a MessageBox interface currently online, or a <tt>null</tt> pointer if there are no more MessageBox interfaces to enumerate.'};
+doc['MessageBox']['registerValueCallback']={syn:'Registers the callback function that is invoked on every change of advertised value.',lib:'messagebox.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every change of advertised value. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and the character string describing the new advertised value.'}};
+doc['MessageBox']['sendFlashMessage']={syn:'Sends a Flash SMS (class 0 message).',lib:'messagebox.sendFlashMessage()',pro:'def sendFlashMessage(<span id=pn>recipient</span>, <span id=pn>message</span>)',cmt:'<p>Sends a Flash SMS (class 0 message). Flash messages are displayed on the handset immediately and are usually not saved on the SIM card. This function can send messages of more than 160 characters, using SMS concatenation. ISO-latin accented characters are supported. For sending messages with special unicode characters such as asian characters and emoticons, use <tt>newMessage</tt> to create a new message and define the content of using methods <tt>addText</tt> et <tt>addUnicodeData</tt>.</p>',par:{recipient:'a text string with the recipient phone number, either as a national number, or in international format starting with a plus sign',message:'the text to be sent in the message'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['MessageBox']['sendTextMessage']={syn:'Sends a regular text SMS, with standard parameters.',lib:'messagebox.sendTextMessage()',pro:'def sendTextMessage(<span id=pn>recipient</span>, <span id=pn>message</span>)',cmt:'<p>Sends a regular text SMS, with standard parameters. This function can send messages of more than 160 characters, using SMS concatenation. ISO-latin accented characters are supported. For sending messages with special unicode characters such as asian characters and emoticons, use <tt>newMessage</tt> to create a new message and define the content of using methods <tt>addText</tt> and <tt>addUnicodeData</tt>.</p>',par:{recipient:'a text string with the recipient phone number, either as a national number, or in international format starting with a plus sign',message:'the text to be sent in the message'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['MessageBox']['set_logicalName']={syn:'Changes the logical name of the MessageBox interface.',lib:'messagebox.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Changes the logical name of the MessageBox interface. You can use <tt>yCheckLogicalName()</tt> prior to this call to make sure that your parameter is valid. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the logical name of the MessageBox interface.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['MessageBox']['set_pduReceived']={syn:'Changes the value of the incoming SMS units counter.',lib:'messagebox.set_pduReceived()',pro:'def set_pduReceived(<span id=pn>newval</span>)',cmt:'<p>Changes the value of the incoming SMS units counter.</p>',par:{newval:'an integer corresponding to the value of the incoming SMS units counter'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['MessageBox']['set_pduSent']={syn:'Changes the value of the outgoing SMS units counter.',lib:'messagebox.set_pduSent()',pro:'def set_pduSent(<span id=pn>newval</span>)',cmt:'<p>Changes the value of the outgoing SMS units counter.</p>',par:{newval:'an integer corresponding to the value of the outgoing SMS units counter'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['MessageBox']['set_userData']={syn:'Stores a user context provided as argument in the userData attribute of the function.',lib:'messagebox.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Stores a user context provided as argument in the userData attribute of the function. This attribute is never touched by the API, and is at disposal of the caller to store a context.</p>',par:{data:'any kind of object to be stored'}};
+doc['MessageBox']['unmuteValueCallbacks']={syn:'Re-enable the propagation of every new advertised value to the parent hub.',lib:'messagebox.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>Re-enable the propagation of every new advertised value to the parent hub. This function reverts the effect of a previous call to <tt>muteValueCallbacks()</tt>. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+//--- (end of generated code: MessageBox)
+//--- (generated code: StepperMotor)
+doc['StepperMotor']={'':{syn:'StepperMotor function interface',inc:'from yocto_steppermotor import *',cmt:'<p>The Yoctopuce application programming interface allows you to drive a stepper motor.</p>'}};
+doc['StepperMotor']['FindStepperMotor']={syn:'Retrieves a stepper motor for a given identifier.',lib:'YStepperMotor.FindStepperMotor()',pro:'def FindStepperMotor(<span id=pn>func</span>)',cmt:'<p>Retrieves a stepper motor for a given identifier. The identifier can be specified using several formats:<br> <ul> <li>FunctionLogicalName</li> <li>ModuleSerialNumber.FunctionIdentifier</li> <li>ModuleSerialNumber.FunctionLogicalName</li> <li>ModuleLogicalName.FunctionIdentifier</li> <li>ModuleLogicalName.FunctionLogicalName</li> </ul></p><p> This function does not require that the stepper motor is online at the time it is invoked. The returned object is nevertheless valid. Use the method <tt>YStepperMotor.isOnline()</tt> to test if the stepper motor is indeed online at a given time. In case of ambiguity when looking for a stepper motor by logical name, no error is notified: the first instance found is returned. The search is performed first by hardware name, then by logical name.</p>',par:{func:'a string that uniquely characterizes the stepper motor'},ret:'a <tt>YStepperMotor</tt> object allowing you to drive the stepper motor.'};
+doc['StepperMotor']['FirstStepperMotor']={syn:'Starts the enumeration of stepper motors currently accessible.',lib:'YStepperMotor.FirstStepperMotor()',pro:'def FirstStepperMotor()',cmt:'<p>Starts the enumeration of stepper motors currently accessible. Use the method <tt>YStepperMotor.nextStepperMotor()</tt> to iterate on next stepper motors.</p>',ret:'a pointer to a <tt>YStepperMotor</tt> object, corresponding to the first stepper motor currently online, or a <tt>null</tt> pointer if there are none.'};
+doc['StepperMotor']['abortAndBrake']={syn:'Stops the motor smoothly as soon as possible, without waiting for ongoing move completion.',lib:'steppermotor.abortAndBrake()',pro:'def abortAndBrake()',cmt:'<p>Stops the motor smoothly as soon as possible, without waiting for ongoing move completion.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds. On failure, throws an exception or returns a negative error code.'};
+doc['StepperMotor']['abortAndHiZ']={syn:'Turn the controller into Hi-Z mode immediately, without waiting for ongoing move completion.',lib:'steppermotor.abortAndHiZ()',pro:'def abortAndHiZ()',cmt:'<p>Turn the controller into Hi-Z mode immediately, without waiting for ongoing move completion.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds. On failure, throws an exception or returns a negative error code.'};
+doc['StepperMotor']['alertStepOut']={syn:'Move one step in the direction opposite the direction set when the most recent alert was raised.',lib:'steppermotor.alertStepOut()',pro:'def alertStepOut()',cmt:'<p>Move one step in the direction opposite the direction set when the most recent alert was raised. The move occures even if the system is still in alert mode (end switch depressed). Caution. use this function with great care as it may cause mechanical damages !</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds. On failure, throws an exception or returns a negative error code.'};
+doc['StepperMotor']['changeSpeed']={syn:'Starts the motor at a given speed.',lib:'steppermotor.changeSpeed()',pro:'def changeSpeed(<span id=pn>speed</span>)',cmt:'<p>Starts the motor at a given speed. The time needed to reach the requested speed will depend on the acceleration parameters configured for the motor.</p>',par:{speed:'desired speed, in steps per second. The minimal non-zero speed is 0.001 pulse per second.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds. On failure, throws an exception or returns a negative error code.'};
+doc['StepperMotor']['clearCache']={syn:'Invalidates the cache.',lib:'steppermotor.clearCache()',pro:'def clearCache()',cmt:'<p>Invalidates the cache. Invalidates the cache of the stepper motor attributes. Forces the next call to get_xxx() or loadxxx() to use values that come from the device.</p>'};
+doc['StepperMotor']['describe']={syn:'Returns a short text that describes unambiguously the instance of the stepper motor in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'steppermotor.describe()',pro:'def describe()',cmt:'<p>Returns a short text that describes unambiguously the instance of the stepper motor in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. More precisely, <tt>TYPE</tt> is the type of the function, <tt>NAME</tt> it the name used for the first access to the function, <tt>SERIAL</tt> is the serial number of the module if the module is connected or <tt>\x22unresolved\x22</tt>, and <tt>FUNCTIONID</tt> is the hardware identifier of the function if the module is connected. For example, this method returns <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> if the module is already connected or <tt>Relay(BadCustomeName.relay1)=unresolved</tt> if the module has not yet been connected. This method does not trigger any USB or TCP transaction and can therefore be used in a debugger.</p>',ret:'a string that describes the stepper motor (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['StepperMotor']['emergencyStop']={syn:'Stops the motor with an emergency alert, without taking any additional precaution.',lib:'steppermotor.emergencyStop()',pro:'def emergencyStop()',cmt:'<p>Stops the motor with an emergency alert, without taking any additional precaution.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds. On failure, throws an exception or returns a negative error code.'};
+doc['StepperMotor']['findHomePosition']={syn:'Starts the motor backward at the specified speed, to search for the motor home position.',lib:'steppermotor.findHomePosition()',pro:'def findHomePosition(<span id=pn>speed</span>)',cmt:'<p>Starts the motor backward at the specified speed, to search for the motor home position.</p>',par:{speed:'desired speed, in steps per second.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds. On failure, throws an exception or returns a negative error code.'};
+doc['StepperMotor']['get_advertisedValue']={syn:'Returns the current value of the stepper motor (no more than 6 characters).',lib:'steppermotor.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Returns the current value of the stepper motor (no more than 6 characters).</p>',ret:'a string corresponding to the current value of the stepper motor (no more than 6 characters).',ext:'On failure, throws an exception or returns <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['StepperMotor']['get_auxSignal']={syn:'Returns the current value of the signal generated on the auxiliary output.',lib:'steppermotor.get_auxSignal()',pro:'def get_auxSignal()',cmt:'<p>Returns the current value of the signal generated on the auxiliary output.</p>',ret:'an integer corresponding to the current value of the signal generated on the auxiliary output',ext:'On failure, throws an exception or returns <tt>Y_AUXSIGNAL_INVALID</tt>.'};
+doc['StepperMotor']['get_diags']={syn:'Returns the stepper motor controller diagnostics, as a bitmap.',lib:'steppermotor.get_diags()',pro:'def get_diags()',cmt:'<p>Returns the stepper motor controller diagnostics, as a bitmap.</p>',ret:'an integer corresponding to the stepper motor controller diagnostics, as a bitmap',ext:'On failure, throws an exception or returns <tt>Y_DIAGS_INVALID</tt>.'};
+doc['StepperMotor']['get_errorMessage']={syn:'Returns the error message of the latest error with the stepper motor.',lib:'steppermotor.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Returns the error message of the latest error with the stepper motor. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a string corresponding to the latest error message that occured while using the stepper motor object'};
+doc['StepperMotor']['get_errorType']={syn:'Returns the numerical error code of the latest error with the stepper motor.',lib:'steppermotor.get_errorType()',pro:'def get_errorType()',cmt:'<p>Returns the numerical error code of the latest error with the stepper motor. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a number corresponding to the code of the latest error that occurred while using the stepper motor object'};
+doc['StepperMotor']['get_friendlyName']={syn:'Returns a global identifier of the stepper motor in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>.',lib:'steppermotor.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Returns a global identifier of the stepper motor in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>. The returned string uses the logical names of the module and of the stepper motor if they are defined, otherwise the serial number of the module and the hardware identifier of the stepper motor (for example: <tt>MyCustomName.relay1</tt>)</p>',ret:'a string that uniquely identifies the stepper motor using logical names (ex: <tt>MyCustomName.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['StepperMotor']['get_functionDescriptor']={syn:'Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function.',lib:'steppermotor.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function. This identifier can be used to test if two instances of <tt>YFunction</tt> reference the same physical function on the same physical device.</p>',ret:'an identifier of type <tt>YFUN_DESCR</tt>.',ext:'If the function has never been contacted, the returned value is <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>.'};
+doc['StepperMotor']['get_functionId']={syn:'Returns the hardware identifier of the stepper motor, without reference to the module.',lib:'steppermotor.get_functionId()',pro:'def get_functionId()',cmt:'<p>Returns the hardware identifier of the stepper motor, without reference to the module. For example <tt>relay1</tt></p>',ret:'a string that identifies the stepper motor (ex: <tt>relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['StepperMotor']['get_hardwareId']={syn:'Returns the unique hardware identifier of the stepper motor in the form <tt>SERIAL.FUNCTIONID</tt>.',lib:'steppermotor.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Returns the unique hardware identifier of the stepper motor in the form <tt>SERIAL.FUNCTIONID</tt>. The unique hardware identifier is composed of the device serial number and of the hardware identifier of the stepper motor (for example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'a string that uniquely identifies the stepper motor (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['StepperMotor']['get_logicalName']={syn:'Returns the logical name of the stepper motor.',lib:'steppermotor.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Returns the logical name of the stepper motor.</p>',ret:'a string corresponding to the logical name of the stepper motor.',ext:'On failure, throws an exception or returns <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['StepperMotor']['get_maxAccel']={syn:'Returns the maximal motor acceleration, measured in steps per second^2.',lib:'steppermotor.get_maxAccel()',pro:'def get_maxAccel()',cmt:'<p>Returns the maximal motor acceleration, measured in steps per second^2.</p>',ret:'a floating point number corresponding to the maximal motor acceleration, measured in steps per second^2',ext:'On failure, throws an exception or returns <tt>Y_MAXACCEL_INVALID</tt>.'};
+doc['StepperMotor']['get_maxSpeed']={syn:'Returns the maximal motor speed, measured in steps per second.',lib:'steppermotor.get_maxSpeed()',pro:'def get_maxSpeed()',cmt:'<p>Returns the maximal motor speed, measured in steps per second.</p>',ret:'a floating point number corresponding to the maximal motor speed, measured in steps per second',ext:'On failure, throws an exception or returns <tt>Y_MAXSPEED_INVALID</tt>.'};
+doc['StepperMotor']['get_module']={syn:'Gets the <tt>YModule</tt> object for the device on which the function is located.',lib:'steppermotor.get_module()',pro:'def get_module()',cmt:'<p>Gets the <tt>YModule</tt> object for the device on which the function is located. If the function cannot be located on any module, the returned instance of <tt>YModule</tt> is not shown as on-line.</p>',ret:'an instance of <tt>YModule</tt>'};
+doc['StepperMotor']['get_motorState']={syn:'Returns the motor working state.',lib:'steppermotor.get_motorState()',pro:'def get_motorState()',cmt:'<p>Returns the motor working state.</p>',ret:'a value among <tt>Y_MOTORSTATE_ABSENT</tt>, <tt>Y_MOTORSTATE_ALERT</tt>, <tt>Y_MOTORSTATE_HI_Z</tt>, <tt>Y_MOTORSTATE_STOP</tt>, <tt>Y_MOTORSTATE_RUN</tt> and <tt>Y_MOTORSTATE_BATCH</tt> corresponding to the motor working state',ext:'On failure, throws an exception or returns <tt>Y_MOTORSTATE_INVALID</tt>.'};
+doc['StepperMotor']['get_overcurrent']={syn:'Returns the overcurrent alert and emergency stop threshold, measured in mA.',lib:'steppermotor.get_overcurrent()',pro:'def get_overcurrent()',cmt:'<p>Returns the overcurrent alert and emergency stop threshold, measured in mA.</p>',ret:'an integer corresponding to the overcurrent alert and emergency stop threshold, measured in mA',ext:'On failure, throws an exception or returns <tt>Y_OVERCURRENT_INVALID</tt>.'};
+doc['StepperMotor']['get_pullinSpeed']={syn:'Returns the motor speed immediately reachable from stop state, measured in steps per second.',lib:'steppermotor.get_pullinSpeed()',pro:'def get_pullinSpeed()',cmt:'<p>Returns the motor speed immediately reachable from stop state, measured in steps per second.</p>',ret:'a floating point number corresponding to the motor speed immediately reachable from stop state, measured in steps per second',ext:'On failure, throws an exception or returns <tt>Y_PULLINSPEED_INVALID</tt>.'};
+doc['StepperMotor']['get_speed']={syn:'Returns current motor speed, measured in steps per second.',lib:'steppermotor.get_speed()',pro:'def get_speed()',cmt:'<p>Returns current motor speed, measured in steps per second. To change speed, use method <tt>changeSpeed()</tt>.</p>',ret:'a floating point number corresponding to current motor speed, measured in steps per second',ext:'On failure, throws an exception or returns <tt>Y_SPEED_INVALID</tt>.'};
+doc['StepperMotor']['get_stepPos']={syn:'Returns the current logical motor position, measured in steps.',lib:'steppermotor.get_stepPos()',pro:'def get_stepPos()',cmt:'<p>Returns the current logical motor position, measured in steps. The value may include a fractional part when micro-stepping is in use.</p>',ret:'a floating point number corresponding to the current logical motor position, measured in steps',ext:'On failure, throws an exception or returns <tt>Y_STEPPOS_INVALID</tt>.'};
+doc['StepperMotor']['get_stepping']={syn:'Returns the stepping mode used to drive the motor.',lib:'steppermotor.get_stepping()',pro:'def get_stepping()',cmt:'<p>Returns the stepping mode used to drive the motor.</p>',ret:'a value among <tt>Y_STEPPING_MICROSTEP16</tt>, <tt>Y_STEPPING_MICROSTEP8</tt>, <tt>Y_STEPPING_MICROSTEP4</tt>, <tt>Y_STEPPING_HALFSTEP</tt> and <tt>Y_STEPPING_FULLSTEP</tt> corresponding to the stepping mode used to drive the motor',ext:'On failure, throws an exception or returns <tt>Y_STEPPING_INVALID</tt>.'};
+doc['StepperMotor']['get_tCurrRun']={syn:'Returns the torque regulation current when the motor is running, measured in mA.',lib:'steppermotor.get_tCurrRun()',pro:'def get_tCurrRun()',cmt:'<p>Returns the torque regulation current when the motor is running, measured in mA.</p>',ret:'an integer corresponding to the torque regulation current when the motor is running, measured in mA',ext:'On failure, throws an exception or returns <tt>Y_TCURRRUN_INVALID</tt>.'};
+doc['StepperMotor']['get_tCurrStop']={syn:'Returns the torque regulation current when the motor is stopped, measured in mA.',lib:'steppermotor.get_tCurrStop()',pro:'def get_tCurrStop()',cmt:'<p>Returns the torque regulation current when the motor is stopped, measured in mA.</p>',ret:'an integer corresponding to the torque regulation current when the motor is stopped, measured in mA',ext:'On failure, throws an exception or returns <tt>Y_TCURRSTOP_INVALID</tt>.'};
+doc['StepperMotor']['get_userData']={syn:'Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>.',lib:'steppermotor.get_userData()',pro:'def get_userData()',cmt:'<p>Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>. This attribute is never touched directly by the API, and is at disposal of the caller to store a context.</p>',ret:'the object stored previously by the caller.'};
+doc['StepperMotor']['isOnline']={syn:'Checks if the stepper motor is currently reachable, without raising any error.',lib:'steppermotor.isOnline()',pro:'def isOnline()',cmt:'<p>Checks if the stepper motor is currently reachable, without raising any error. If there is a cached value for the stepper motor in cache, that has not yet expired, the device is considered reachable. No exception is raised if there is an error while trying to contact the device hosting the stepper motor.</p>',ret:'<tt>true</tt> if the stepper motor can be reached, and <tt>false</tt> otherwise'};
+doc['StepperMotor']['load']={syn:'Preloads the stepper motor cache with a specified validity duration.',lib:'steppermotor.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Preloads the stepper motor cache with a specified validity duration. By default, whenever accessing a device, all function attributes are kept in cache for the standard duration (5 ms). This method can be used to temporarily mark the cache as valid for a longer period, in order to reduce network traffic for instance.</p>',par:{msValidity:'an integer corresponding to the validity attributed to the loaded function parameters, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['StepperMotor']['loadAttribute']={syn:'Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.',lib:'steppermotor.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'On failure, throws an exception or returns an empty string.'};
+doc['StepperMotor']['moveRel']={syn:'Starts the motor to reach a given relative position.',lib:'steppermotor.moveRel()',pro:'def moveRel(<span id=pn>relPos</span>)',cmt:'<p>Starts the motor to reach a given relative position. The time needed to reach the requested position will depend on the acceleration and max speed parameters configured for the motor.</p>',par:{relPos:'relative position, measured in steps from the current position.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds. On failure, throws an exception or returns a negative error code.'};
+doc['StepperMotor']['moveTo']={syn:'Starts the motor to reach a given absolute position.',lib:'steppermotor.moveTo()',pro:'def moveTo(<span id=pn>absPos</span>)',cmt:'<p>Starts the motor to reach a given absolute position. The time needed to reach the requested position will depend on the acceleration and max speed parameters configured for the motor.</p>',par:{absPos:'absolute position, measured in steps from the origin.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds. On failure, throws an exception or returns a negative error code.'};
+doc['StepperMotor']['muteValueCallbacks']={syn:'Disable the propagation of every new advertised value to the parent hub.',lib:'steppermotor.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>Disable the propagation of every new advertised value to the parent hub. You can use this function to save bandwidth and CPU on computers with limited resources, or to prevent unwanted invocations of the HTTP callback. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['StepperMotor']['nextStepperMotor']={syn:'Continues the enumeration of stepper motors started using <tt>yFirstStepperMotor()</tt>.',lib:'steppermotor.nextStepperMotor()',pro:'def nextStepperMotor()',cmt:'<p>Continues the enumeration of stepper motors started using <tt>yFirstStepperMotor()</tt>.</p>',ret:'a pointer to a <tt>YStepperMotor</tt> object, corresponding to a stepper motor currently online, or a <tt>null</tt> pointer if there are no more stepper motors to enumerate.'};
+doc['StepperMotor']['pause']={syn:'Keep the motor in the same state for the specified amount of time, before processing next command.',lib:'steppermotor.pause()',pro:'def pause(<span id=pn>waitMs</span>)',cmt:'<p>Keep the motor in the same state for the specified amount of time, before processing next command.</p>',par:{waitMs:'wait time, specified in milliseconds.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds. On failure, throws an exception or returns a negative error code.'};
+doc['StepperMotor']['registerValueCallback']={syn:'Registers the callback function that is invoked on every change of advertised value.',lib:'steppermotor.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every change of advertised value. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and the character string describing the new advertised value.'}};
+doc['StepperMotor']['reset']={syn:'Reinitialize the controller and clear all alert flags.',lib:'steppermotor.reset()',pro:'def reset()',cmt:'<p>Reinitialize the controller and clear all alert flags.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds. On failure, throws an exception or returns a negative error code.'};
+doc['StepperMotor']['set_auxSignal']={syn:'Changes the value of the signal generated on the auxiliary output.',lib:'steppermotor.set_auxSignal()',pro:'def set_auxSignal(<span id=pn>newval</span>)',cmt:'<p>Changes the value of the signal generated on the auxiliary output. Acceptable values depend on the auxiliary output signal type configured.</p>',par:{newval:'an integer corresponding to the value of the signal generated on the auxiliary output'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['StepperMotor']['set_logicalName']={syn:'Changes the logical name of the stepper motor.',lib:'steppermotor.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Changes the logical name of the stepper motor. You can use <tt>yCheckLogicalName()</tt> prior to this call to make sure that your parameter is valid. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the logical name of the stepper motor.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['StepperMotor']['set_maxAccel']={syn:'Changes the maximal motor acceleration, measured in steps per second^2.',lib:'steppermotor.set_maxAccel()',pro:'def set_maxAccel(<span id=pn>newval</span>)',cmt:'<p>Changes the maximal motor acceleration, measured in steps per second^2.</p>',par:{newval:'a floating point number corresponding to the maximal motor acceleration, measured in steps per second^2'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['StepperMotor']['set_maxSpeed']={syn:'Changes the maximal motor speed, measured in steps per second.',lib:'steppermotor.set_maxSpeed()',pro:'def set_maxSpeed(<span id=pn>newval</span>)',cmt:'<p>Changes the maximal motor speed, measured in steps per second.</p>',par:{newval:'a floating point number corresponding to the maximal motor speed, measured in steps per second'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['StepperMotor']['set_overcurrent']={syn:'Changes the overcurrent alert and emergency stop threshold, measured in mA.',lib:'steppermotor.set_overcurrent()',pro:'def set_overcurrent(<span id=pn>newval</span>)',cmt:'<p>Changes the overcurrent alert and emergency stop threshold, measured in mA.</p>',par:{newval:'an integer corresponding to the overcurrent alert and emergency stop threshold, measured in mA'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['StepperMotor']['set_pullinSpeed']={syn:'Changes the motor speed immediately reachable from stop state, measured in steps per second.',lib:'steppermotor.set_pullinSpeed()',pro:'def set_pullinSpeed(<span id=pn>newval</span>)',cmt:'<p>Changes the motor speed immediately reachable from stop state, measured in steps per second.</p>',par:{newval:'a floating point number corresponding to the motor speed immediately reachable from stop state, measured in steps per second'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['StepperMotor']['set_stepPos']={syn:'Changes the current logical motor position, measured in steps.',lib:'steppermotor.set_stepPos()',pro:'def set_stepPos(<span id=pn>newval</span>)',cmt:'<p>Changes the current logical motor position, measured in steps. This command does not cause any motor move, as its purpose is only to setup the origin of the position counter. The fractional part of the position, that corresponds to the physical position of the rotor, is not changed. To trigger a motor move, use methods <tt>moveTo()</tt> or <tt>moveRel()</tt> instead.</p>',par:{newval:'a floating point number corresponding to the current logical motor position, measured in steps'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['StepperMotor']['set_stepping']={syn:'Changes the stepping mode used to drive the motor.',lib:'steppermotor.set_stepping()',pro:'def set_stepping(<span id=pn>newval</span>)',cmt:'<p>Changes the stepping mode used to drive the motor.</p>',par:{newval:'a value among <tt>Y_STEPPING_MICROSTEP16</tt>, <tt>Y_STEPPING_MICROSTEP8</tt>, <tt>Y_STEPPING_MICROSTEP4</tt>, <tt>Y_STEPPING_HALFSTEP</tt> and <tt>Y_STEPPING_FULLSTEP</tt> corresponding to the stepping mode used to drive the motor'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['StepperMotor']['set_tCurrRun']={syn:'Changes the torque regulation current when the motor is running, measured in mA.',lib:'steppermotor.set_tCurrRun()',pro:'def set_tCurrRun(<span id=pn>newval</span>)',cmt:'<p>Changes the torque regulation current when the motor is running, measured in mA.</p>',par:{newval:'an integer corresponding to the torque regulation current when the motor is running, measured in mA'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['StepperMotor']['set_tCurrStop']={syn:'Changes the torque regulation current when the motor is stopped, measured in mA.',lib:'steppermotor.set_tCurrStop()',pro:'def set_tCurrStop(<span id=pn>newval</span>)',cmt:'<p>Changes the torque regulation current when the motor is stopped, measured in mA.</p>',par:{newval:'an integer corresponding to the torque regulation current when the motor is stopped, measured in mA'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['StepperMotor']['set_userData']={syn:'Stores a user context provided as argument in the userData attribute of the function.',lib:'steppermotor.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Stores a user context provided as argument in the userData attribute of the function. This attribute is never touched by the API, and is at disposal of the caller to store a context.</p>',par:{data:'any kind of object to be stored'}};
+doc['StepperMotor']['unmuteValueCallbacks']={syn:'Re-enable the propagation of every new advertised value to the parent hub.',lib:'steppermotor.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>Re-enable the propagation of every new advertised value to the parent hub. This function reverts the effect of a previous call to <tt>muteValueCallbacks()</tt>. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+//--- (end of generated code: StepperMotor)
+//--- (generated code: Proximity)
+doc['Proximity']={'':{syn:'Proximity function interface',inc:'from yocto_proximity import *',cmt:'<p>The Yoctopuce class YProximity allows you to use and configure Yoctopuce proximity sensors. It inherits from YSensor class the core functions to read measurements, register callback functions, access to the autonomous datalogger. This class adds the ability to easily perform a one-point linear calibration to compensate the effect of a glass or filter placed in front of the sensor.</p>'}};
+doc['Proximity']['FindProximity']={syn:'Retrieves a proximity sensor for a given identifier.',lib:'YProximity.FindProximity()',pro:'def FindProximity(<span id=pn>func</span>)',cmt:'<p>Retrieves a proximity sensor for a given identifier. The identifier can be specified using several formats:<br> <ul> <li>FunctionLogicalName</li> <li>ModuleSerialNumber.FunctionIdentifier</li> <li>ModuleSerialNumber.FunctionLogicalName</li> <li>ModuleLogicalName.FunctionIdentifier</li> <li>ModuleLogicalName.FunctionLogicalName</li> </ul></p><p> This function does not require that the proximity sensor is online at the time it is invoked. The returned object is nevertheless valid. Use the method <tt>YProximity.isOnline()</tt> to test if the proximity sensor is indeed online at a given time. In case of ambiguity when looking for a proximity sensor by logical name, no error is notified: the first instance found is returned. The search is performed first by hardware name, then by logical name.</p>',par:{func:'a string that uniquely characterizes the proximity sensor'},ret:'a <tt>YProximity</tt> object allowing you to drive the proximity sensor.'};
+doc['Proximity']['FirstProximity']={syn:'Starts the enumeration of proximity sensors currently accessible.',lib:'YProximity.FirstProximity()',pro:'def FirstProximity()',cmt:'<p>Starts the enumeration of proximity sensors currently accessible. Use the method <tt>YProximity.nextProximity()</tt> to iterate on next proximity sensors.</p>',ret:'a pointer to a <tt>YProximity</tt> object, corresponding to the first proximity sensor currently online, or a <tt>null</tt> pointer if there are none.'};
+doc['Proximity']['calibrateFromPoints']={syn:'Configures error correction data points, in particular to compensate for a possible perturbation of the measure caused by an enclosure.',lib:'proximity.calibrateFromPoints()',pro:'def calibrateFromPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Configures error correction data points, in particular to compensate for a possible perturbation of the measure caused by an enclosure. It is possible to configure up to five correction points. Correction points must be provided in ascending order, and be in the range of the sensor. The device will automatically perform a linear interpolation of the error correction between specified points. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p><p> For more information on advanced capabilities to refine the calibration of sensors, please contact support@yoctopuce.com.</p>',par:{rawValues:'array of floating point numbers, corresponding to the raw values returned by the sensor for the correction points.',refValues:'array of floating point numbers, corresponding to the corrected values for the correction points.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Proximity']['clearCache']={syn:'Invalidates the cache.',lib:'proximity.clearCache()',pro:'def clearCache()',cmt:'<p>Invalidates the cache. Invalidates the cache of the proximity sensor attributes. Forces the next call to get_xxx() or loadxxx() to use values that come from the device.</p>'};
+doc['Proximity']['describe']={syn:'Returns a short text that describes unambiguously the instance of the proximity sensor in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'proximity.describe()',pro:'def describe()',cmt:'<p>Returns a short text that describes unambiguously the instance of the proximity sensor in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. More precisely, <tt>TYPE</tt> is the type of the function, <tt>NAME</tt> it the name used for the first access to the function, <tt>SERIAL</tt> is the serial number of the module if the module is connected or <tt>\x22unresolved\x22</tt>, and <tt>FUNCTIONID</tt> is the hardware identifier of the function if the module is connected. For example, this method returns <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> if the module is already connected or <tt>Relay(BadCustomeName.relay1)=unresolved</tt> if the module has not yet been connected. This method does not trigger any USB or TCP transaction and can therefore be used in a debugger.</p>',ret:'a string that describes the proximity sensor (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['Proximity']['get_advertisedValue']={syn:'Returns the current value of the proximity sensor (no more than 6 characters).',lib:'proximity.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Returns the current value of the proximity sensor (no more than 6 characters).</p>',ret:'a string corresponding to the current value of the proximity sensor (no more than 6 characters).',ext:'On failure, throws an exception or returns <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['Proximity']['get_currentRawValue']={syn:'Returns the uncalibrated, unrounded raw value returned by the sensor, in the specified unit, as a floating point number.',lib:'proximity.get_currentRawValue()',pro:'def get_currentRawValue()',cmt:'<p>Returns the uncalibrated, unrounded raw value returned by the sensor, in the specified unit, as a floating point number.</p>',ret:'a floating point number corresponding to the uncalibrated, unrounded raw value returned by the sensor, in the specified unit, as a floating point number',ext:'On failure, throws an exception or returns <tt>Y_CURRENTRAWVALUE_INVALID</tt>.'};
+doc['Proximity']['get_currentValue']={syn:'Returns the current value of the proximity detection, in the specified unit, as a floating point number.',lib:'proximity.get_currentValue()',pro:'def get_currentValue()',cmt:'<p>Returns the current value of the proximity detection, in the specified unit, as a floating point number.</p>',ret:'a floating point number corresponding to the current value of the proximity detection, in the specified unit, as a floating point number',ext:'On failure, throws an exception or returns <tt>Y_CURRENTVALUE_INVALID</tt>.'};
+doc['Proximity']['get_detectionThreshold']={syn:'Returns the threshold used to determine the logical state of the proximity sensor, when considered as a binary input (on/off).',lib:'proximity.get_detectionThreshold()',pro:'def get_detectionThreshold()',cmt:'<p>Returns the threshold used to determine the logical state of the proximity sensor, when considered as a binary input (on/off).</p>',ret:'an integer corresponding to the threshold used to determine the logical state of the proximity sensor, when considered as a binary input (on/off)',ext:'On failure, throws an exception or returns <tt>Y_DETECTIONTHRESHOLD_INVALID</tt>.'};
+doc['Proximity']['get_errorMessage']={syn:'Returns the error message of the latest error with the proximity sensor.',lib:'proximity.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Returns the error message of the latest error with the proximity sensor. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a string corresponding to the latest error message that occured while using the proximity sensor object'};
+doc['Proximity']['get_errorType']={syn:'Returns the numerical error code of the latest error with the proximity sensor.',lib:'proximity.get_errorType()',pro:'def get_errorType()',cmt:'<p>Returns the numerical error code of the latest error with the proximity sensor. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a number corresponding to the code of the latest error that occurred while using the proximity sensor object'};
+doc['Proximity']['get_friendlyName']={syn:'Returns a global identifier of the proximity sensor in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>.',lib:'proximity.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Returns a global identifier of the proximity sensor in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>. The returned string uses the logical names of the module and of the proximity sensor if they are defined, otherwise the serial number of the module and the hardware identifier of the proximity sensor (for example: <tt>MyCustomName.relay1</tt>)</p>',ret:'a string that uniquely identifies the proximity sensor using logical names (ex: <tt>MyCustomName.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['Proximity']['get_functionDescriptor']={syn:'Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function.',lib:'proximity.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function. This identifier can be used to test if two instances of <tt>YFunction</tt> reference the same physical function on the same physical device.</p>',ret:'an identifier of type <tt>YFUN_DESCR</tt>.',ext:'If the function has never been contacted, the returned value is <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>.'};
+doc['Proximity']['get_functionId']={syn:'Returns the hardware identifier of the proximity sensor, without reference to the module.',lib:'proximity.get_functionId()',pro:'def get_functionId()',cmt:'<p>Returns the hardware identifier of the proximity sensor, without reference to the module. For example <tt>relay1</tt></p>',ret:'a string that identifies the proximity sensor (ex: <tt>relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['Proximity']['get_hardwareId']={syn:'Returns the unique hardware identifier of the proximity sensor in the form <tt>SERIAL.FUNCTIONID</tt>.',lib:'proximity.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Returns the unique hardware identifier of the proximity sensor in the form <tt>SERIAL.FUNCTIONID</tt>. The unique hardware identifier is composed of the device serial number and of the hardware identifier of the proximity sensor (for example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'a string that uniquely identifies the proximity sensor (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['Proximity']['get_highestValue']={syn:'Returns the maximal value observed for the proximity detection since the device was started.',lib:'proximity.get_highestValue()',pro:'def get_highestValue()',cmt:'<p>Returns the maximal value observed for the proximity detection since the device was started.</p>',ret:'a floating point number corresponding to the maximal value observed for the proximity detection since the device was started',ext:'On failure, throws an exception or returns <tt>Y_HIGHESTVALUE_INVALID</tt>.'};
+doc['Proximity']['get_isPresent']={syn:'Returns true if the input (considered as binary) is active (detection value is smaller than the specified <tt>threshold</tt>), and false otherwise.',lib:'proximity.get_isPresent()',pro:'def get_isPresent()',cmt:'<p>Returns true if the input (considered as binary) is active (detection value is smaller than the specified <tt>threshold</tt>), and false otherwise.</p>',ret:'either <tt>Y_ISPRESENT_FALSE</tt> or <tt>Y_ISPRESENT_TRUE</tt>, according to true if the input (considered as binary) is active (detection value is smaller than the specified <tt>threshold</tt>), and false otherwise',ext:'On failure, throws an exception or returns <tt>Y_ISPRESENT_INVALID</tt>.'};
+doc['Proximity']['get_lastTimeApproached']={syn:'Returns the number of elapsed milliseconds between the module power on and the last observed detection (the input contact transitioned from absent to present).',lib:'proximity.get_lastTimeApproached()',pro:'def get_lastTimeApproached()',cmt:'<p>Returns the number of elapsed milliseconds between the module power on and the last observed detection (the input contact transitioned from absent to present).</p>',ret:'an integer corresponding to the number of elapsed milliseconds between the module power on and the last observed detection (the input contact transitioned from absent to present)',ext:'On failure, throws an exception or returns <tt>Y_LASTTIMEAPPROACHED_INVALID</tt>.'};
+doc['Proximity']['get_lastTimeRemoved']={syn:'Returns the number of elapsed milliseconds between the module power on and the last observed detection (the input contact transitioned from present to absent).',lib:'proximity.get_lastTimeRemoved()',pro:'def get_lastTimeRemoved()',cmt:'<p>Returns the number of elapsed milliseconds between the module power on and the last observed detection (the input contact transitioned from present to absent).</p>',ret:'an integer corresponding to the number of elapsed milliseconds between the module power on and the last observed detection (the input contact transitioned from present to absent)',ext:'On failure, throws an exception or returns <tt>Y_LASTTIMEREMOVED_INVALID</tt>.'};
+doc['Proximity']['get_logFrequency']={syn:'Returns the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory.',lib:'proximity.get_logFrequency()',pro:'def get_logFrequency()',cmt:'<p>Returns the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory.</p>',ret:'a string corresponding to the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory',ext:'On failure, throws an exception or returns <tt>Y_LOGFREQUENCY_INVALID</tt>.'};
+doc['Proximity']['get_logicalName']={syn:'Returns the logical name of the proximity sensor.',lib:'proximity.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Returns the logical name of the proximity sensor.</p>',ret:'a string corresponding to the logical name of the proximity sensor.',ext:'On failure, throws an exception or returns <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['Proximity']['get_lowestValue']={syn:'Returns the minimal value observed for the proximity detection since the device was started.',lib:'proximity.get_lowestValue()',pro:'def get_lowestValue()',cmt:'<p>Returns the minimal value observed for the proximity detection since the device was started.</p>',ret:'a floating point number corresponding to the minimal value observed for the proximity detection since the device was started',ext:'On failure, throws an exception or returns <tt>Y_LOWESTVALUE_INVALID</tt>.'};
+doc['Proximity']['get_module']={syn:'Gets the <tt>YModule</tt> object for the device on which the function is located.',lib:'proximity.get_module()',pro:'def get_module()',cmt:'<p>Gets the <tt>YModule</tt> object for the device on which the function is located. If the function cannot be located on any module, the returned instance of <tt>YModule</tt> is not shown as on-line.</p>',ret:'an instance of <tt>YModule</tt>'};
+doc['Proximity']['get_pulseCounter']={syn:'Returns the pulse counter value.',lib:'proximity.get_pulseCounter()',pro:'def get_pulseCounter()',cmt:'<p>Returns the pulse counter value. The value is a 32 bit integer. In case of overflow (>=2^32), the counter will wrap. To reset the counter, just \x09 call the resetCounter() method.</p>',ret:'an integer corresponding to the pulse counter value',ext:'On failure, throws an exception or returns <tt>Y_PULSECOUNTER_INVALID</tt>.'};
+doc['Proximity']['get_pulseTimer']={syn:'Returns the timer of the pulses counter (ms).',lib:'proximity.get_pulseTimer()',pro:'def get_pulseTimer()',cmt:'<p>Returns the timer of the pulses counter (ms).</p>',ret:'an integer corresponding to the timer of the pulses counter (ms)',ext:'On failure, throws an exception or returns <tt>Y_PULSETIMER_INVALID</tt>.'};
+doc['Proximity']['get_recordedData']={syn:'Retrieves a DataSet object holding historical data for this sensor, for a specified time interval.',lib:'proximity.get_recordedData()',pro:'def get_recordedData(<span id=pn>startTime</span>, <span id=pn>endTime</span>)',cmt:'<p>Retrieves a DataSet object holding historical data for this sensor, for a specified time interval. The measures will be retrieved from the data logger, which must have been turned on at the desired time. See the documentation of the DataSet class for information on how to get an overview of the recorded data, and how to load progressively a large set of measures from the data logger.</p><p> This function only works if the device uses a recent firmware, as DataSet objects are not supported by firmwares older than version 13000.</p>',par:{startTime:'the start of the desired measure time interval, as a Unix timestamp, i.e. the number of seconds since January 1, 1970 UTC. The special value 0 can be used to include any meaasure, without initial limit.',endTime:'the end of the desired measure time interval, as a Unix timestamp, i.e. the number of seconds since January 1, 1970 UTC. The special value 0 can be used to include any meaasure, without ending limit.'},ret:'an instance of YDataSet, providing access to historical data. Past measures can be loaded progressively using methods from the YDataSet object.'};
+doc['Proximity']['get_reportFrequency']={syn:'Returns the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function.',lib:'proximity.get_reportFrequency()',pro:'def get_reportFrequency()',cmt:'<p>Returns the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function.</p>',ret:'a string corresponding to the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function',ext:'On failure, throws an exception or returns <tt>Y_REPORTFREQUENCY_INVALID</tt>.'};
+doc['Proximity']['get_resolution']={syn:'Returns the resolution of the measured values.',lib:'proximity.get_resolution()',pro:'def get_resolution()',cmt:'<p>Returns the resolution of the measured values. The resolution corresponds to the numerical precision of the measures, which is not always the same as the actual precision of the sensor.</p>',ret:'a floating point number corresponding to the resolution of the measured values',ext:'On failure, throws an exception or returns <tt>Y_RESOLUTION_INVALID</tt>.'};
+doc['Proximity']['get_sensorState']={syn:'Returns the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now.',lib:'proximity.get_sensorState()',pro:'def get_sensorState()',cmt:'<p>Returns the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now.</p>',ret:'an integer corresponding to the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now',ext:'On failure, throws an exception or returns <tt>Y_SENSORSTATE_INVALID</tt>.'};
+doc['Proximity']['get_unit']={syn:'Returns the measuring unit for the proximity detection.',lib:'proximity.get_unit()',pro:'def get_unit()',cmt:'<p>Returns the measuring unit for the proximity detection.</p>',ret:'a string corresponding to the measuring unit for the proximity detection',ext:'On failure, throws an exception or returns <tt>Y_UNIT_INVALID</tt>.'};
+doc['Proximity']['get_userData']={syn:'Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>.',lib:'proximity.get_userData()',pro:'def get_userData()',cmt:'<p>Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>. This attribute is never touched directly by the API, and is at disposal of the caller to store a context.</p>',ret:'the object stored previously by the caller.'};
+doc['Proximity']['isOnline']={syn:'Checks if the proximity sensor is currently reachable, without raising any error.',lib:'proximity.isOnline()',pro:'def isOnline()',cmt:'<p>Checks if the proximity sensor is currently reachable, without raising any error. If there is a cached value for the proximity sensor in cache, that has not yet expired, the device is considered reachable. No exception is raised if there is an error while trying to contact the device hosting the proximity sensor.</p>',ret:'<tt>true</tt> if the proximity sensor can be reached, and <tt>false</tt> otherwise'};
+doc['Proximity']['load']={syn:'Preloads the proximity sensor cache with a specified validity duration.',lib:'proximity.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Preloads the proximity sensor cache with a specified validity duration. By default, whenever accessing a device, all function attributes are kept in cache for the standard duration (5 ms). This method can be used to temporarily mark the cache as valid for a longer period, in order to reduce network traffic for instance.</p>',par:{msValidity:'an integer corresponding to the validity attributed to the loaded function parameters, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Proximity']['loadAttribute']={syn:'Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.',lib:'proximity.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'On failure, throws an exception or returns an empty string.'};
+doc['Proximity']['loadCalibrationPoints']={syn:'Retrieves error correction data points previously entered using the method <tt>calibrateFromPoints</tt>.',lib:'proximity.loadCalibrationPoints()',pro:'def loadCalibrationPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Retrieves error correction data points previously entered using the method <tt>calibrateFromPoints</tt>.</p>',par:{rawValues:'array of floating point numbers, that will be filled by the function with the raw sensor values for the correction points.',refValues:'array of floating point numbers, that will be filled by the function with the desired values for the correction points.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Proximity']['muteValueCallbacks']={syn:'Disable the propagation of every new advertised value to the parent hub.',lib:'proximity.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>Disable the propagation of every new advertised value to the parent hub. You can use this function to save bandwidth and CPU on computers with limited resources, or to prevent unwanted invocations of the HTTP callback. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Proximity']['nextProximity']={syn:'Continues the enumeration of proximity sensors started using <tt>yFirstProximity()</tt>.',lib:'proximity.nextProximity()',pro:'def nextProximity()',cmt:'<p>Continues the enumeration of proximity sensors started using <tt>yFirstProximity()</tt>.</p>',ret:'a pointer to a <tt>YProximity</tt> object, corresponding to a proximity sensor currently online, or a <tt>null</tt> pointer if there are no more proximity sensors to enumerate.'};
+doc['Proximity']['registerTimedReportCallback']={syn:'Registers the callback function that is invoked on every periodic timed notification.',lib:'proximity.registerTimedReportCallback()',pro:'def registerTimedReportCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every periodic timed notification. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and an YMeasure object describing the new advertised value.'}};
+doc['Proximity']['registerValueCallback']={syn:'Registers the callback function that is invoked on every change of advertised value.',lib:'proximity.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every change of advertised value. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and the character string describing the new advertised value.'}};
+doc['Proximity']['resetCounter']={syn:'Returns the pulse counter value as well as its timer.',lib:'proximity.resetCounter()',pro:'def resetCounter()',cmt:'<p>Returns the pulse counter value as well as its timer.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Proximity']['set_detectionThreshold']={syn:'Changes the threshold used to determine the logical state of the proximity sensor, when considered as a binary input (on/off).',lib:'proximity.set_detectionThreshold()',pro:'def set_detectionThreshold(<span id=pn>newval</span>)',cmt:'<p>Changes the threshold used to determine the logical state of the proximity sensor, when considered as a binary input (on/off).</p>',par:{newval:'an integer corresponding to the threshold used to determine the logical state of the proximity sensor, when considered as a binary input (on/off)'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Proximity']['set_highestValue']={syn:'Changes the recorded maximal value observed.',lib:'proximity.set_highestValue()',pro:'def set_highestValue(<span id=pn>newval</span>)',cmt:'<p>Changes the recorded maximal value observed.</p>',par:{newval:'a floating point number corresponding to the recorded maximal value observed'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Proximity']['set_logFrequency']={syn:'Changes the datalogger recording frequency for this function.',lib:'proximity.set_logFrequency()',pro:'def set_logFrequency(<span id=pn>newval</span>)',cmt:'<p>Changes the datalogger recording frequency for this function. The frequency can be specified as samples per second, as sample per minute (for instance \x2215/m\x22) or in samples per hour (eg. \x224/h\x22). To disable recording for this function, use the value \x22OFF\x22.</p>',par:{newval:'a string corresponding to the datalogger recording frequency for this function'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Proximity']['set_logicalName']={syn:'Changes the logical name of the proximity sensor.',lib:'proximity.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Changes the logical name of the proximity sensor. You can use <tt>yCheckLogicalName()</tt> prior to this call to make sure that your parameter is valid. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the logical name of the proximity sensor.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Proximity']['set_lowestValue']={syn:'Changes the recorded minimal value observed.',lib:'proximity.set_lowestValue()',pro:'def set_lowestValue(<span id=pn>newval</span>)',cmt:'<p>Changes the recorded minimal value observed.</p>',par:{newval:'a floating point number corresponding to the recorded minimal value observed'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Proximity']['set_reportFrequency']={syn:'Changes the timed value notification frequency for this function.',lib:'proximity.set_reportFrequency()',pro:'def set_reportFrequency(<span id=pn>newval</span>)',cmt:'<p>Changes the timed value notification frequency for this function. The frequency can be specified as samples per second, as sample per minute (for instance \x2215/m\x22) or in samples per hour (eg. \x224/h\x22). To disable timed value notifications for this function, use the value \x22OFF\x22.</p>',par:{newval:'a string corresponding to the timed value notification frequency for this function'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Proximity']['set_resolution']={syn:'Changes the resolution of the measured physical values.',lib:'proximity.set_resolution()',pro:'def set_resolution(<span id=pn>newval</span>)',cmt:'<p>Changes the resolution of the measured physical values. The resolution corresponds to the numerical precision when displaying value. It does not change the precision of the measure itself.</p>',par:{newval:'a floating point number corresponding to the resolution of the measured physical values'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['Proximity']['set_userData']={syn:'Stores a user context provided as argument in the userData attribute of the function.',lib:'proximity.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Stores a user context provided as argument in the userData attribute of the function. This attribute is never touched by the API, and is at disposal of the caller to store a context.</p>',par:{data:'any kind of object to be stored'}};
+doc['Proximity']['startDataLogger']={syn:'Starts the data logger on the device.',lib:'proximity.startDataLogger()',pro:'def startDataLogger()',cmt:'<p>Starts the data logger on the device. Note that the data logger will only save the measures on this sensor if the logFrequency is not set to \x22OFF\x22.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.'};
+doc['Proximity']['stopDataLogger']={syn:'Stops the datalogger on the device.',lib:'proximity.stopDataLogger()',pro:'def stopDataLogger()',cmt:'<p>Stops the datalogger on the device.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.'};
+doc['Proximity']['unmuteValueCallbacks']={syn:'Re-enable the propagation of every new advertised value to the parent hub.',lib:'proximity.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>Re-enable the propagation of every new advertised value to the parent hub. This function reverts the effect of a previous call to <tt>muteValueCallbacks()</tt>. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+//--- (end of generated code: Proximity)
+//--- (generated code: MultiAxisController)
+doc['MultiAxisController']={'':{syn:'MultiAxisController function interface',inc:'from yocto_multiaxiscontroller import *',cmt:'<p>The Yoctopuce application programming interface allows you to drive a stepper motor.</p>'}};
+doc['MultiAxisController']['FindMultiAxisController']={syn:'Retrieves a multi-axis controller for a given identifier.',lib:'YMultiAxisController.FindMultiAxisController()',pro:'def FindMultiAxisController(<span id=pn>func</span>)',cmt:'<p>Retrieves a multi-axis controller for a given identifier. The identifier can be specified using several formats:<br> <ul> <li>FunctionLogicalName</li> <li>ModuleSerialNumber.FunctionIdentifier</li> <li>ModuleSerialNumber.FunctionLogicalName</li> <li>ModuleLogicalName.FunctionIdentifier</li> <li>ModuleLogicalName.FunctionLogicalName</li> </ul></p><p> This function does not require that the multi-axis controller is online at the time it is invoked. The returned object is nevertheless valid. Use the method <tt>YMultiAxisController.isOnline()</tt> to test if the multi-axis controller is indeed online at a given time. In case of ambiguity when looking for a multi-axis controller by logical name, no error is notified: the first instance found is returned. The search is performed first by hardware name, then by logical name.</p>',par:{func:'a string that uniquely characterizes the multi-axis controller'},ret:'a <tt>YMultiAxisController</tt> object allowing you to drive the multi-axis controller.'};
+doc['MultiAxisController']['FirstMultiAxisController']={syn:'Starts the enumeration of multi-axis controllers currently accessible.',lib:'YMultiAxisController.FirstMultiAxisController()',pro:'def FirstMultiAxisController()',cmt:'<p>Starts the enumeration of multi-axis controllers currently accessible. Use the method <tt>YMultiAxisController.nextMultiAxisController()</tt> to iterate on next multi-axis controllers.</p>',ret:'a pointer to a <tt>YMultiAxisController</tt> object, corresponding to the first multi-axis controller currently online, or a <tt>null</tt> pointer if there are none.'};
+doc['MultiAxisController']['abortAndBrake']={syn:'Stops the motor smoothly as soon as possible, without waiting for ongoing move completion.',lib:'multiaxiscontroller.abortAndBrake()',pro:'def abortAndBrake()',cmt:'<p>Stops the motor smoothly as soon as possible, without waiting for ongoing move completion.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds. On failure, throws an exception or returns a negative error code.'};
+doc['MultiAxisController']['abortAndHiZ']={syn:'Turn the controller into Hi-Z mode immediately, without waiting for ongoing move completion.',lib:'multiaxiscontroller.abortAndHiZ()',pro:'def abortAndHiZ()',cmt:'<p>Turn the controller into Hi-Z mode immediately, without waiting for ongoing move completion.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds. On failure, throws an exception or returns a negative error code.'};
+doc['MultiAxisController']['clearCache']={syn:'Invalidates the cache.',lib:'multiaxiscontroller.clearCache()',pro:'def clearCache()',cmt:'<p>Invalidates the cache. Invalidates the cache of the multi-axis controller attributes. Forces the next call to get_xxx() or loadxxx() to use values that come from the device.</p>'};
+doc['MultiAxisController']['describe']={syn:'Returns a short text that describes unambiguously the instance of the multi-axis controller in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'multiaxiscontroller.describe()',pro:'def describe()',cmt:'<p>Returns a short text that describes unambiguously the instance of the multi-axis controller in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. More precisely, <tt>TYPE</tt> is the type of the function, <tt>NAME</tt> it the name used for the first access to the function, <tt>SERIAL</tt> is the serial number of the module if the module is connected or <tt>\x22unresolved\x22</tt>, and <tt>FUNCTIONID</tt> is the hardware identifier of the function if the module is connected. For example, this method returns <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> if the module is already connected or <tt>Relay(BadCustomeName.relay1)=unresolved</tt> if the module has not yet been connected. This method does not trigger any USB or TCP transaction and can therefore be used in a debugger.</p>',ret:'a string that describes the multi-axis controller (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['MultiAxisController']['emergencyStop']={syn:'Stops the motor with an emergency alert, without taking any additional precaution.',lib:'multiaxiscontroller.emergencyStop()',pro:'def emergencyStop()',cmt:'<p>Stops the motor with an emergency alert, without taking any additional precaution.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds. On failure, throws an exception or returns a negative error code.'};
+doc['MultiAxisController']['findHomePosition']={syn:'Starts all motors backward at the specified speeds, to search for the motor home position.',lib:'multiaxiscontroller.findHomePosition()',pro:'def findHomePosition(<span id=pn>speed</span>)',cmt:'<p>Starts all motors backward at the specified speeds, to search for the motor home position.</p>',par:{speed:'desired speed for all axis, in steps per second.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds. On failure, throws an exception or returns a negative error code.'};
+doc['MultiAxisController']['get_advertisedValue']={syn:'Returns the current value of the multi-axis controller (no more than 6 characters).',lib:'multiaxiscontroller.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Returns the current value of the multi-axis controller (no more than 6 characters).</p>',ret:'a string corresponding to the current value of the multi-axis controller (no more than 6 characters).',ext:'On failure, throws an exception or returns <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['MultiAxisController']['get_errorMessage']={syn:'Returns the error message of the latest error with the multi-axis controller.',lib:'multiaxiscontroller.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Returns the error message of the latest error with the multi-axis controller. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a string corresponding to the latest error message that occured while using the multi-axis controller object'};
+doc['MultiAxisController']['get_errorType']={syn:'Returns the numerical error code of the latest error with the multi-axis controller.',lib:'multiaxiscontroller.get_errorType()',pro:'def get_errorType()',cmt:'<p>Returns the numerical error code of the latest error with the multi-axis controller. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a number corresponding to the code of the latest error that occurred while using the multi-axis controller object'};
+doc['MultiAxisController']['get_friendlyName']={syn:'Returns a global identifier of the multi-axis controller in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>.',lib:'multiaxiscontroller.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Returns a global identifier of the multi-axis controller in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>. The returned string uses the logical names of the module and of the multi-axis controller if they are defined, otherwise the serial number of the module and the hardware identifier of the multi-axis controller (for example: <tt>MyCustomName.relay1</tt>)</p>',ret:'a string that uniquely identifies the multi-axis controller using logical names (ex: <tt>MyCustomName.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['MultiAxisController']['get_functionDescriptor']={syn:'Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function.',lib:'multiaxiscontroller.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function. This identifier can be used to test if two instances of <tt>YFunction</tt> reference the same physical function on the same physical device.</p>',ret:'an identifier of type <tt>YFUN_DESCR</tt>.',ext:'If the function has never been contacted, the returned value is <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>.'};
+doc['MultiAxisController']['get_functionId']={syn:'Returns the hardware identifier of the multi-axis controller, without reference to the module.',lib:'multiaxiscontroller.get_functionId()',pro:'def get_functionId()',cmt:'<p>Returns the hardware identifier of the multi-axis controller, without reference to the module. For example <tt>relay1</tt></p>',ret:'a string that identifies the multi-axis controller (ex: <tt>relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['MultiAxisController']['get_globalState']={syn:'Returns the stepper motor set overall state.',lib:'multiaxiscontroller.get_globalState()',pro:'def get_globalState()',cmt:'<p>Returns the stepper motor set overall state.</p>',ret:'a value among <tt>Y_GLOBALSTATE_ABSENT</tt>, <tt>Y_GLOBALSTATE_ALERT</tt>, <tt>Y_GLOBALSTATE_HI_Z</tt>, <tt>Y_GLOBALSTATE_STOP</tt>, <tt>Y_GLOBALSTATE_RUN</tt> and <tt>Y_GLOBALSTATE_BATCH</tt> corresponding to the stepper motor set overall state',ext:'On failure, throws an exception or returns <tt>Y_GLOBALSTATE_INVALID</tt>.'};
+doc['MultiAxisController']['get_hardwareId']={syn:'Returns the unique hardware identifier of the multi-axis controller in the form <tt>SERIAL.FUNCTIONID</tt>.',lib:'multiaxiscontroller.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Returns the unique hardware identifier of the multi-axis controller in the form <tt>SERIAL.FUNCTIONID</tt>. The unique hardware identifier is composed of the device serial number and of the hardware identifier of the multi-axis controller (for example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'a string that uniquely identifies the multi-axis controller (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['MultiAxisController']['get_logicalName']={syn:'Returns the logical name of the multi-axis controller.',lib:'multiaxiscontroller.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Returns the logical name of the multi-axis controller.</p>',ret:'a string corresponding to the logical name of the multi-axis controller.',ext:'On failure, throws an exception or returns <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['MultiAxisController']['get_module']={syn:'Gets the <tt>YModule</tt> object for the device on which the function is located.',lib:'multiaxiscontroller.get_module()',pro:'def get_module()',cmt:'<p>Gets the <tt>YModule</tt> object for the device on which the function is located. If the function cannot be located on any module, the returned instance of <tt>YModule</tt> is not shown as on-line.</p>',ret:'an instance of <tt>YModule</tt>'};
+doc['MultiAxisController']['get_nAxis']={syn:'Returns the number of synchronized controllers.',lib:'multiaxiscontroller.get_nAxis()',pro:'def get_nAxis()',cmt:'<p>Returns the number of synchronized controllers.</p>',ret:'an integer corresponding to the number of synchronized controllers',ext:'On failure, throws an exception or returns <tt>Y_NAXIS_INVALID</tt>.'};
+doc['MultiAxisController']['get_userData']={syn:'Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>.',lib:'multiaxiscontroller.get_userData()',pro:'def get_userData()',cmt:'<p>Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>. This attribute is never touched directly by the API, and is at disposal of the caller to store a context.</p>',ret:'the object stored previously by the caller.'};
+doc['MultiAxisController']['isOnline']={syn:'Checks if the multi-axis controller is currently reachable, without raising any error.',lib:'multiaxiscontroller.isOnline()',pro:'def isOnline()',cmt:'<p>Checks if the multi-axis controller is currently reachable, without raising any error. If there is a cached value for the multi-axis controller in cache, that has not yet expired, the device is considered reachable. No exception is raised if there is an error while trying to contact the device hosting the multi-axis controller.</p>',ret:'<tt>true</tt> if the multi-axis controller can be reached, and <tt>false</tt> otherwise'};
+doc['MultiAxisController']['load']={syn:'Preloads the multi-axis controller cache with a specified validity duration.',lib:'multiaxiscontroller.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Preloads the multi-axis controller cache with a specified validity duration. By default, whenever accessing a device, all function attributes are kept in cache for the standard duration (5 ms). This method can be used to temporarily mark the cache as valid for a longer period, in order to reduce network traffic for instance.</p>',par:{msValidity:'an integer corresponding to the validity attributed to the loaded function parameters, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['MultiAxisController']['loadAttribute']={syn:'Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.',lib:'multiaxiscontroller.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'On failure, throws an exception or returns an empty string.'};
+doc['MultiAxisController']['moveRel']={syn:'Starts all motors synchronously to reach a given relative position.',lib:'multiaxiscontroller.moveRel()',pro:'def moveRel(<span id=pn>relPos</span>)',cmt:'<p>Starts all motors synchronously to reach a given relative position. The time needed to reach the requested position will depend on the lowest acceleration and max speed parameters configured for all motors. The final position will be reached on all axis at the same time.</p>',par:{relPos:'relative position, measured in steps from the current position.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds. On failure, throws an exception or returns a negative error code.'};
+doc['MultiAxisController']['moveTo']={syn:'Starts all motors synchronously to reach a given absolute position.',lib:'multiaxiscontroller.moveTo()',pro:'def moveTo(<span id=pn>absPos</span>)',cmt:'<p>Starts all motors synchronously to reach a given absolute position. The time needed to reach the requested position will depend on the lowest acceleration and max speed parameters configured for all motors. The final position will be reached on all axis at the same time.</p>',par:{absPos:'absolute position, measured in steps from each origin.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds. On failure, throws an exception or returns a negative error code.'};
+doc['MultiAxisController']['muteValueCallbacks']={syn:'Disable the propagation of every new advertised value to the parent hub.',lib:'multiaxiscontroller.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>Disable the propagation of every new advertised value to the parent hub. You can use this function to save bandwidth and CPU on computers with limited resources, or to prevent unwanted invocations of the HTTP callback. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['MultiAxisController']['nextMultiAxisController']={syn:'Continues the enumeration of multi-axis controllers started using <tt>yFirstMultiAxisController()</tt>.',lib:'multiaxiscontroller.nextMultiAxisController()',pro:'def nextMultiAxisController()',cmt:'<p>Continues the enumeration of multi-axis controllers started using <tt>yFirstMultiAxisController()</tt>.</p>',ret:'a pointer to a <tt>YMultiAxisController</tt> object, corresponding to a multi-axis controller currently online, or a <tt>null</tt> pointer if there are no more multi-axis controllers to enumerate.'};
+doc['MultiAxisController']['pause']={syn:'Keep the motor in the same state for the specified amount of time, before processing next command.',lib:'multiaxiscontroller.pause()',pro:'def pause(<span id=pn>waitMs</span>)',cmt:'<p>Keep the motor in the same state for the specified amount of time, before processing next command.</p>',par:{waitMs:'wait time, specified in milliseconds.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds. On failure, throws an exception or returns a negative error code.'};
+doc['MultiAxisController']['registerValueCallback']={syn:'Registers the callback function that is invoked on every change of advertised value.',lib:'multiaxiscontroller.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every change of advertised value. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and the character string describing the new advertised value.'}};
+doc['MultiAxisController']['reset']={syn:'Reinitialize all controllers and clear all alert flags.',lib:'multiaxiscontroller.reset()',pro:'def reset()',cmt:'<p>Reinitialize all controllers and clear all alert flags.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds. On failure, throws an exception or returns a negative error code.'};
+doc['MultiAxisController']['set_logicalName']={syn:'Changes the logical name of the multi-axis controller.',lib:'multiaxiscontroller.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Changes the logical name of the multi-axis controller. You can use <tt>yCheckLogicalName()</tt> prior to this call to make sure that your parameter is valid. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the logical name of the multi-axis controller.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['MultiAxisController']['set_nAxis']={syn:'Changes the number of synchronized controllers.',lib:'multiaxiscontroller.set_nAxis()',pro:'def set_nAxis(<span id=pn>newval</span>)',cmt:'<p>Changes the number of synchronized controllers.</p>',par:{newval:'an integer corresponding to the number of synchronized controllers'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['MultiAxisController']['set_userData']={syn:'Stores a user context provided as argument in the userData attribute of the function.',lib:'multiaxiscontroller.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Stores a user context provided as argument in the userData attribute of the function. This attribute is never touched by the API, and is at disposal of the caller to store a context.</p>',par:{data:'any kind of object to be stored'}};
+doc['MultiAxisController']['unmuteValueCallbacks']={syn:'Re-enable the propagation of every new advertised value to the parent hub.',lib:'multiaxiscontroller.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>Re-enable the propagation of every new advertised value to the parent hub. This function reverts the effect of a previous call to <tt>muteValueCallbacks()</tt>. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+//--- (end of generated code: MultiAxisController)
+//--- (generated code: RangeFinder)
+doc['RangeFinder']={'':{syn:'RangeFinder function interface',inc:'from yocto_rangefinder import *',cmt:'<p>The Yoctopuce class YRangeFinder allows you to use and configure Yoctopuce range finders sensors. It inherits from YSensor class the core functions to read measurements, register callback functions, access to the autonomous datalogger. This class adds the ability to easily perform a one-point linear calibration to compensate the effect of a glass or filter placed in front of the sensor.</p>'}};
+doc['RangeFinder']['FindRangeFinder']={syn:'Retrieves a range finder for a given identifier.',lib:'YRangeFinder.FindRangeFinder()',pro:'def FindRangeFinder(<span id=pn>func</span>)',cmt:'<p>Retrieves a range finder for a given identifier. The identifier can be specified using several formats:<br> <ul> <li>FunctionLogicalName</li> <li>ModuleSerialNumber.FunctionIdentifier</li> <li>ModuleSerialNumber.FunctionLogicalName</li> <li>ModuleLogicalName.FunctionIdentifier</li> <li>ModuleLogicalName.FunctionLogicalName</li> </ul></p><p> This function does not require that the range finder is online at the time it is invoked. The returned object is nevertheless valid. Use the method <tt>YRangeFinder.isOnline()</tt> to test if the range finder is indeed online at a given time. In case of ambiguity when looking for a range finder by logical name, no error is notified: the first instance found is returned. The search is performed first by hardware name, then by logical name.</p>',par:{func:'a string that uniquely characterizes the range finder'},ret:'a <tt>YRangeFinder</tt> object allowing you to drive the range finder.'};
+doc['RangeFinder']['FirstRangeFinder']={syn:'Starts the enumeration of range finders currently accessible.',lib:'YRangeFinder.FirstRangeFinder()',pro:'def FirstRangeFinder()',cmt:'<p>Starts the enumeration of range finders currently accessible. Use the method <tt>YRangeFinder.nextRangeFinder()</tt> to iterate on next range finders.</p>',ret:'a pointer to a <tt>YRangeFinder</tt> object, corresponding to the first range finder currently online, or a <tt>null</tt> pointer if there are none.'};
+doc['RangeFinder']['calibrateFromPoints']={syn:'Configures error correction data points, in particular to compensate for a possible perturbation of the measure caused by an enclosure.',lib:'rangefinder.calibrateFromPoints()',pro:'def calibrateFromPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Configures error correction data points, in particular to compensate for a possible perturbation of the measure caused by an enclosure. It is possible to configure up to five correction points. Correction points must be provided in ascending order, and be in the range of the sensor. The device will automatically perform a linear interpolation of the error correction between specified points. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p><p> For more information on advanced capabilities to refine the calibration of sensors, please contact support@yoctopuce.com.</p>',par:{rawValues:'array of floating point numbers, corresponding to the raw values returned by the sensor for the correction points.',refValues:'array of floating point numbers, corresponding to the corrected values for the correction points.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['RangeFinder']['clearCache']={syn:'Invalidates the cache.',lib:'rangefinder.clearCache()',pro:'def clearCache()',cmt:'<p>Invalidates the cache. Invalidates the cache of the range finder attributes. Forces the next call to get_xxx() or loadxxx() to use values that come from the device.</p>'};
+doc['RangeFinder']['describe']={syn:'Returns a short text that describes unambiguously the instance of the range finder in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'rangefinder.describe()',pro:'def describe()',cmt:'<p>Returns a short text that describes unambiguously the instance of the range finder in the form <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. More precisely, <tt>TYPE</tt> is the type of the function, <tt>NAME</tt> it the name used for the first access to the function, <tt>SERIAL</tt> is the serial number of the module if the module is connected or <tt>\x22unresolved\x22</tt>, and <tt>FUNCTIONID</tt> is the hardware identifier of the function if the module is connected. For example, this method returns <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> if the module is already connected or <tt>Relay(BadCustomeName.relay1)=unresolved</tt> if the module has not yet been connected. This method does not trigger any USB or TCP transaction and can therefore be used in a debugger.</p>',ret:'a string that describes the range finder (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['RangeFinder']['get_advertisedValue']={syn:'Returns the current value of the range finder (no more than 6 characters).',lib:'rangefinder.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Returns the current value of the range finder (no more than 6 characters).</p>',ret:'a string corresponding to the current value of the range finder (no more than 6 characters).',ext:'On failure, throws an exception or returns <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['RangeFinder']['get_currentRawValue']={syn:'Returns the uncalibrated, unrounded raw value returned by the sensor, in mm, as a floating point number.',lib:'rangefinder.get_currentRawValue()',pro:'def get_currentRawValue()',cmt:'<p>Returns the uncalibrated, unrounded raw value returned by the sensor, in mm, as a floating point number.</p>',ret:'a floating point number corresponding to the uncalibrated, unrounded raw value returned by the sensor, in mm, as a floating point number',ext:'On failure, throws an exception or returns <tt>Y_CURRENTRAWVALUE_INVALID</tt>.'};
+doc['RangeFinder']['get_currentValue']={syn:'Returns the current value of the range mesured, in mm, as a floating point number.',lib:'rangefinder.get_currentValue()',pro:'def get_currentValue()',cmt:'<p>Returns the current value of the range mesured, in mm, as a floating point number.</p>',ret:'a floating point number corresponding to the current value of the range mesured, in mm, as a floating point number',ext:'On failure, throws an exception or returns <tt>Y_CURRENTVALUE_INVALID</tt>.'};
+doc['RangeFinder']['get_errorMessage']={syn:'Returns the error message of the latest error with the range finder.',lib:'rangefinder.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Returns the error message of the latest error with the range finder. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a string corresponding to the latest error message that occured while using the range finder object'};
+doc['RangeFinder']['get_errorType']={syn:'Returns the numerical error code of the latest error with the range finder.',lib:'rangefinder.get_errorType()',pro:'def get_errorType()',cmt:'<p>Returns the numerical error code of the latest error with the range finder. This method is mostly useful when using the Yoctopuce library with exceptions disabled.</p>',ret:'a number corresponding to the code of the latest error that occurred while using the range finder object'};
+doc['RangeFinder']['get_friendlyName']={syn:'Returns a global identifier of the range finder in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>.',lib:'rangefinder.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Returns a global identifier of the range finder in the format <tt>MODULE_NAME&#46;FUNCTION_NAME</tt>. The returned string uses the logical names of the module and of the range finder if they are defined, otherwise the serial number of the module and the hardware identifier of the range finder (for example: <tt>MyCustomName.relay1</tt>)</p>',ret:'a string that uniquely identifies the range finder using logical names (ex: <tt>MyCustomName.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['RangeFinder']['get_functionDescriptor']={syn:'Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function.',lib:'rangefinder.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Returns a unique identifier of type <tt>YFUN_DESCR</tt> corresponding to the function. This identifier can be used to test if two instances of <tt>YFunction</tt> reference the same physical function on the same physical device.</p>',ret:'an identifier of type <tt>YFUN_DESCR</tt>.',ext:'If the function has never been contacted, the returned value is <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>.'};
+doc['RangeFinder']['get_functionId']={syn:'Returns the hardware identifier of the range finder, without reference to the module.',lib:'rangefinder.get_functionId()',pro:'def get_functionId()',cmt:'<p>Returns the hardware identifier of the range finder, without reference to the module. For example <tt>relay1</tt></p>',ret:'a string that identifies the range finder (ex: <tt>relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['RangeFinder']['get_hardwareId']={syn:'Returns the unique hardware identifier of the range finder in the form <tt>SERIAL.FUNCTIONID</tt>.',lib:'rangefinder.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Returns the unique hardware identifier of the range finder in the form <tt>SERIAL.FUNCTIONID</tt>. The unique hardware identifier is composed of the device serial number and of the hardware identifier of the range finder (for example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'a string that uniquely identifies the range finder (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'On failure, throws an exception or returns <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['RangeFinder']['get_highestValue']={syn:'Returns the maximal value observed for the range mesured since the device was started.',lib:'rangefinder.get_highestValue()',pro:'def get_highestValue()',cmt:'<p>Returns the maximal value observed for the range mesured since the device was started.</p>',ret:'a floating point number corresponding to the maximal value observed for the range mesured since the device was started',ext:'On failure, throws an exception or returns <tt>Y_HIGHESTVALUE_INVALID</tt>.'};
+doc['RangeFinder']['get_logFrequency']={syn:'Returns the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory.',lib:'rangefinder.get_logFrequency()',pro:'def get_logFrequency()',cmt:'<p>Returns the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory.</p>',ret:'a string corresponding to the datalogger recording frequency for this function, or \x22OFF\x22 when measures are not stored in the data logger flash memory',ext:'On failure, throws an exception or returns <tt>Y_LOGFREQUENCY_INVALID</tt>.'};
+doc['RangeFinder']['get_logicalName']={syn:'Returns the logical name of the range finder.',lib:'rangefinder.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Returns the logical name of the range finder.</p>',ret:'a string corresponding to the logical name of the range finder.',ext:'On failure, throws an exception or returns <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['RangeFinder']['get_lowestValue']={syn:'Returns the minimal value observed for the range mesured since the device was started.',lib:'rangefinder.get_lowestValue()',pro:'def get_lowestValue()',cmt:'<p>Returns the minimal value observed for the range mesured since the device was started.</p>',ret:'a floating point number corresponding to the minimal value observed for the range mesured since the device was started',ext:'On failure, throws an exception or returns <tt>Y_LOWESTVALUE_INVALID</tt>.'};
+doc['RangeFinder']['get_module']={syn:'Gets the <tt>YModule</tt> object for the device on which the function is located.',lib:'rangefinder.get_module()',pro:'def get_module()',cmt:'<p>Gets the <tt>YModule</tt> object for the device on which the function is located. If the function cannot be located on any module, the returned instance of <tt>YModule</tt> is not shown as on-line.</p>',ret:'an instance of <tt>YModule</tt>'};
+doc['RangeFinder']['get_rangeFinderMode']={syn:'Returns the rangefinder running mode.',lib:'rangefinder.get_rangeFinderMode()',pro:'def get_rangeFinderMode()',cmt:'<p>Returns the rangefinder running mode. The rangefinder running mode allows to put priority on precision, speed or maximum range.</p>',ret:'a value among <tt>Y_RANGEFINDERMODE_DEFAULT</tt>, <tt>Y_RANGEFINDERMODE_LONG_RANGE</tt>, <tt>Y_RANGEFINDERMODE_HIGH_ACCURACY</tt> and <tt>Y_RANGEFINDERMODE_HIGH_SPEED</tt> corresponding to the rangefinder running mode',ext:'On failure, throws an exception or returns <tt>Y_RANGEFINDERMODE_INVALID</tt>.'};
+doc['RangeFinder']['get_recordedData']={syn:'Retrieves a DataSet object holding historical data for this sensor, for a specified time interval.',lib:'rangefinder.get_recordedData()',pro:'def get_recordedData(<span id=pn>startTime</span>, <span id=pn>endTime</span>)',cmt:'<p>Retrieves a DataSet object holding historical data for this sensor, for a specified time interval. The measures will be retrieved from the data logger, which must have been turned on at the desired time. See the documentation of the DataSet class for information on how to get an overview of the recorded data, and how to load progressively a large set of measures from the data logger.</p><p> This function only works if the device uses a recent firmware, as DataSet objects are not supported by firmwares older than version 13000.</p>',par:{startTime:'the start of the desired measure time interval, as a Unix timestamp, i.e. the number of seconds since January 1, 1970 UTC. The special value 0 can be used to include any meaasure, without initial limit.',endTime:'the end of the desired measure time interval, as a Unix timestamp, i.e. the number of seconds since January 1, 1970 UTC. The special value 0 can be used to include any meaasure, without ending limit.'},ret:'an instance of YDataSet, providing access to historical data. Past measures can be loaded progressively using methods from the YDataSet object.'};
+doc['RangeFinder']['get_reportFrequency']={syn:'Returns the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function.',lib:'rangefinder.get_reportFrequency()',pro:'def get_reportFrequency()',cmt:'<p>Returns the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function.</p>',ret:'a string corresponding to the timed value notification frequency, or \x22OFF\x22 if timed value notifications are disabled for this function',ext:'On failure, throws an exception or returns <tt>Y_REPORTFREQUENCY_INVALID</tt>.'};
+doc['RangeFinder']['get_resolution']={syn:'Returns the resolution of the measured values.',lib:'rangefinder.get_resolution()',pro:'def get_resolution()',cmt:'<p>Returns the resolution of the measured values. The resolution corresponds to the numerical precision of the measures, which is not always the same as the actual precision of the sensor.</p>',ret:'a floating point number corresponding to the resolution of the measured values',ext:'On failure, throws an exception or returns <tt>Y_RESOLUTION_INVALID</tt>.'};
+doc['RangeFinder']['get_sensorState']={syn:'Returns the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now.',lib:'rangefinder.get_sensorState()',pro:'def get_sensorState()',cmt:'<p>Returns the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now.</p>',ret:'an integer corresponding to the sensor health state code, which is zero when there is an up-to-date measure available or a positive code if the sensor is not able to provide a measure right now',ext:'On failure, throws an exception or returns <tt>Y_SENSORSTATE_INVALID</tt>.'};
+doc['RangeFinder']['get_unit']={syn:'Returns the measuring unit for the range mesured.',lib:'rangefinder.get_unit()',pro:'def get_unit()',cmt:'<p>Returns the measuring unit for the range mesured.</p>',ret:'a string corresponding to the measuring unit for the range mesured',ext:'On failure, throws an exception or returns <tt>Y_UNIT_INVALID</tt>.'};
+doc['RangeFinder']['get_userData']={syn:'Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>.',lib:'rangefinder.get_userData()',pro:'def get_userData()',cmt:'<p>Returns the value of the userData attribute, as previously stored using method <tt>set_userData</tt>. This attribute is never touched directly by the API, and is at disposal of the caller to store a context.</p>',ret:'the object stored previously by the caller.'};
+doc['RangeFinder']['isOnline']={syn:'Checks if the range finder is currently reachable, without raising any error.',lib:'rangefinder.isOnline()',pro:'def isOnline()',cmt:'<p>Checks if the range finder is currently reachable, without raising any error. If there is a cached value for the range finder in cache, that has not yet expired, the device is considered reachable. No exception is raised if there is an error while trying to contact the device hosting the range finder.</p>',ret:'<tt>true</tt> if the range finder can be reached, and <tt>false</tt> otherwise'};
+doc['RangeFinder']['load']={syn:'Preloads the range finder cache with a specified validity duration.',lib:'rangefinder.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Preloads the range finder cache with a specified validity duration. By default, whenever accessing a device, all function attributes are kept in cache for the standard duration (5 ms). This method can be used to temporarily mark the cache as valid for a longer period, in order to reduce network traffic for instance.</p>',par:{msValidity:'an integer corresponding to the validity attributed to the loaded function parameters, in milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['RangeFinder']['loadAttribute']={syn:'Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.',lib:'rangefinder.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Returns the current value of a single function attribute, as a text string, as quickly as possible but without using the cached value.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'On failure, throws an exception or returns an empty string.'};
+doc['RangeFinder']['loadCalibrationPoints']={syn:'Retrieves error correction data points previously entered using the method <tt>calibrateFromPoints</tt>.',lib:'rangefinder.loadCalibrationPoints()',pro:'def loadCalibrationPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Retrieves error correction data points previously entered using the method <tt>calibrateFromPoints</tt>.</p>',par:{rawValues:'array of floating point numbers, that will be filled by the function with the raw sensor values for the correction points.',refValues:'array of floating point numbers, that will be filled by the function with the desired values for the correction points.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['RangeFinder']['muteValueCallbacks']={syn:'Disable the propagation of every new advertised value to the parent hub.',lib:'rangefinder.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>Disable the propagation of every new advertised value to the parent hub. You can use this function to save bandwidth and CPU on computers with limited resources, or to prevent unwanted invocations of the HTTP callback. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['RangeFinder']['nextRangeFinder']={syn:'Continues the enumeration of range finders started using <tt>yFirstRangeFinder()</tt>.',lib:'rangefinder.nextRangeFinder()',pro:'def nextRangeFinder()',cmt:'<p>Continues the enumeration of range finders started using <tt>yFirstRangeFinder()</tt>.</p>',ret:'a pointer to a <tt>YRangeFinder</tt> object, corresponding to a range finder currently online, or a <tt>null</tt> pointer if there are no more range finders to enumerate.'};
+doc['RangeFinder']['registerTimedReportCallback']={syn:'Registers the callback function that is invoked on every periodic timed notification.',lib:'rangefinder.registerTimedReportCallback()',pro:'def registerTimedReportCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every periodic timed notification. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and an YMeasure object describing the new advertised value.'}};
+doc['RangeFinder']['registerValueCallback']={syn:'Registers the callback function that is invoked on every change of advertised value.',lib:'rangefinder.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Registers the callback function that is invoked on every change of advertised value. The callback is invoked only during the execution of <tt>ySleep</tt> or <tt>yHandleEvents</tt>. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a null pointer as argument.</p>',par:{callback:'the callback function to call, or a null pointer. The callback function should take two arguments: the function object of which the value has changed, and the character string describing the new advertised value.'}};
+doc['RangeFinder']['set_highestValue']={syn:'Changes the recorded maximal value observed.',lib:'rangefinder.set_highestValue()',pro:'def set_highestValue(<span id=pn>newval</span>)',cmt:'<p>Changes the recorded maximal value observed.</p>',par:{newval:'a floating point number corresponding to the recorded maximal value observed'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['RangeFinder']['set_logFrequency']={syn:'Changes the datalogger recording frequency for this function.',lib:'rangefinder.set_logFrequency()',pro:'def set_logFrequency(<span id=pn>newval</span>)',cmt:'<p>Changes the datalogger recording frequency for this function. The frequency can be specified as samples per second, as sample per minute (for instance \x2215/m\x22) or in samples per hour (eg. \x224/h\x22). To disable recording for this function, use the value \x22OFF\x22.</p>',par:{newval:'a string corresponding to the datalogger recording frequency for this function'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['RangeFinder']['set_logicalName']={syn:'Changes the logical name of the range finder.',lib:'rangefinder.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Changes the logical name of the range finder. You can use <tt>yCheckLogicalName()</tt> prior to this call to make sure that your parameter is valid. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',par:{newval:'a string corresponding to the logical name of the range finder.'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['RangeFinder']['set_lowestValue']={syn:'Changes the recorded minimal value observed.',lib:'rangefinder.set_lowestValue()',pro:'def set_lowestValue(<span id=pn>newval</span>)',cmt:'<p>Changes the recorded minimal value observed.</p>',par:{newval:'a floating point number corresponding to the recorded minimal value observed'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['RangeFinder']['set_rangeFinderMode']={syn:'Changes the rangefinder running mode, allowing to put priority on precision, speed or maximum range.',lib:'rangefinder.set_rangeFinderMode()',pro:'def set_rangeFinderMode(<span id=pn>newval</span>)',cmt:'<p>Changes the rangefinder running mode, allowing to put priority on precision, speed or maximum range.</p>',par:{newval:'a value among <tt>Y_RANGEFINDERMODE_DEFAULT</tt>, <tt>Y_RANGEFINDERMODE_LONG_RANGE</tt>, <tt>Y_RANGEFINDERMODE_HIGH_ACCURACY</tt> and <tt>Y_RANGEFINDERMODE_HIGH_SPEED</tt> corresponding to the rangefinder running mode, allowing to put priority on precision, speed or maximum range'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['RangeFinder']['set_reportFrequency']={syn:'Changes the timed value notification frequency for this function.',lib:'rangefinder.set_reportFrequency()',pro:'def set_reportFrequency(<span id=pn>newval</span>)',cmt:'<p>Changes the timed value notification frequency for this function. The frequency can be specified as samples per second, as sample per minute (for instance \x2215/m\x22) or in samples per hour (eg. \x224/h\x22). To disable timed value notifications for this function, use the value \x22OFF\x22.</p>',par:{newval:'a string corresponding to the timed value notification frequency for this function'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['RangeFinder']['set_resolution']={syn:'Changes the resolution of the measured physical values.',lib:'rangefinder.set_resolution()',pro:'def set_resolution(<span id=pn>newval</span>)',cmt:'<p>Changes the resolution of the measured physical values. The resolution corresponds to the numerical precision when displaying value. It does not change the precision of the measure itself.</p>',par:{newval:'a floating point number corresponding to the resolution of the measured physical values'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['RangeFinder']['set_unit']={syn:'Changes the measuring unit for the measured temperature.',lib:'rangefinder.set_unit()',pro:'def set_unit(<span id=pn>newval</span>)',cmt:'<p>Changes the measuring unit for the measured temperature. That unit is a string. String value can be <tt>\x22</tt> or <tt>mm</tt>. Any other value will be ignored. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept. WARNING: if a specific calibration is defined for the rangeFinder function, a unit system change will probably break it.</p>',par:{newval:'a string corresponding to the measuring unit for the measured temperature'},ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+doc['RangeFinder']['set_userData']={syn:'Stores a user context provided as argument in the userData attribute of the function.',lib:'rangefinder.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Stores a user context provided as argument in the userData attribute of the function. This attribute is never touched by the API, and is at disposal of the caller to store a context.</p>',par:{data:'any kind of object to be stored'}};
+doc['RangeFinder']['startDataLogger']={syn:'Starts the data logger on the device.',lib:'rangefinder.startDataLogger()',pro:'def startDataLogger()',cmt:'<p>Starts the data logger on the device. Note that the data logger will only save the measures on this sensor if the logFrequency is not set to \x22OFF\x22.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.'};
+doc['RangeFinder']['stopDataLogger']={syn:'Stops the datalogger on the device.',lib:'rangefinder.stopDataLogger()',pro:'def stopDataLogger()',cmt:'<p>Stops the datalogger on the device.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds.'};
+doc['RangeFinder']['triggerTempCalibration']={syn:'Triggers a sensor calibration according to the current ambient temperature.',lib:'rangefinder.triggerTempCalibration()',pro:'def triggerTempCalibration()',cmt:'<p>Triggers a sensor calibration according to the current ambient temperature. That calibration process needs no physical interaction with the sensor. It is performed automatically at device startup, but it is recommended to start it again when the temperature delta since last calibration exceeds 8\xB0C.</p>',ret:'<tt>YAPI_SUCCESS</tt> if the call succeeds. On failure, throws an exception or returns a negative error code.'};
+doc['RangeFinder']['unmuteValueCallbacks']={syn:'Re-enable the propagation of every new advertised value to the parent hub.',lib:'rangefinder.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>Re-enable the propagation of every new advertised value to the parent hub. This function reverts the effect of a previous call to <tt>muteValueCallbacks()</tt>. Remember to call the <tt>saveToFlash()</tt> method of the module if the modification must be kept.</p>',ret:'<tt>YAPI_SUCCESS</tt> when the call succeeds.',ext:'On failure, throws an exception or returns a negative error code.'};
+//--- (end of generated code: RangeFinder)
+//--- (end of generated code)
+
+ function isClassMethod(str_method)
+ { return str_method.charAt(0) == str_method.charAt(0).toUpperCase();
+ }
+
+ // add function aliases to the substitution list
+ for(classname in doc)
+ { for(funcname in doc[classname])
+ { if(isClassMethod(funcname))
+ { // class method, generate shortcut
+ sub['y'+funcname] = doc[classname][funcname].lib;
+ }
+ }
+ }
+
+ function ApplySub(text,classname)
+ { var pos, endpos = 0, key, rep;
+ if(sub['null'] != 'null') text = text.replace('<tt>null</tt>','<tt>'+sub['null']+'</tt>');
+ if(UseShortcuts) return text;
+ if(classname.substr(0,1)!='Y') classname = 'Y'+classname;
+ while((pos = text.toLowerCase().indexOf('<tt>',endpos)) >= endpos) {
+ pos += 4;
+ endpos = text.indexOf('</', pos);
+ key = text.substr(pos,endpos-pos).match(/[\w_]+/);
+ if(key)
+ { key = key[0];
+ rep = sub[key];
+ if(!rep && key.substr(0,2)=='Y_' && sub['YAPI_SUCCESS']) {
+ rep = sub['YAPI_SUCCESS'].replace('YAPI',classname).replace('SUCCESS',key.substr(2,key.length));
+ }
+ if(rep) text = text.substr(0, pos)+rep+text.substr(endpos);
+ }
+ }
+ return text;
+ }
+
+ function SetPosition(o,x,y)
+ { var it=document.getElementById(o);
+ if (!it) throw "SetPosition: "+o+" element does not exist."
+ it.style.top = y;
+ it.style.left = x;
+ }
+
+function GetPositionX(o)
+ { var it=document.getElementById(o);
+ if (!it) throw "GetPositionX: "+o+" element does not exist."
+ return parseInt(it.style.left);
+ }
+
+function GetPositionY(o)
+ { var it=document.getElementById(o);
+ if (!it) throw "GetPositionY: "+o+" element does not exist."
+ return parseInt(it.style.top);
+ }
+
+function GetWidth(o)
+ { var it=document.getElementById(o);
+ if (!it) throw "GetWidth: "+o+" element does not exist."
+ return parseInt(it.style.width);
+ }
+
+function GetHeight(o)
+ { var it=document.getElementById(o);
+ if (!it) throw "GetHeight: "+o+" element does not exist."
+ return parseInt(it.style.height);
+ }
+
+function SetHeight(o,h)
+ { var it=document.getElementById(o);
+ if (!it) throw "SetHeight: "+o+" element does not exist."
+ h=parseInt(h);
+ if (h<0) h=0;
+ it.style.height = h+ "px";
+ }
+
+function SetWidth(o,w)
+ { var it=document.getElementById(o);
+ if (!it) throw "SetWidth: "+o+" element does not exist."
+ w = parseInt(w);
+ if (w<0) w=0;
+ it.style.width = parseInt(w) + "px";
+ }
+
+function SetLeft(o,l)
+ { var it=document.getElementById(o);
+ if (!it) throw "SetLeft: "+o+" element does not exist."
+ it.style.left = parseInt(l) + "px";
+ }
+
+function SetTop(o,t)
+ { var it=document.getElementById(o);
+ if (!it) throw "SetTop: "+o+" element does not exist."
+ it.style.top = parseInt(t) + "px";
+ }
+
+function SetSize(o,w,h)
+ { var it=document.getElementById(o);
+ if (!it) throw "SetSize: "+o+" element does not exist."
+ w= parseInt(w);
+ if (w<0) w=0;
+ h=parseInt(h);
+ if (h<0) h=0;
+ it.style.width = w;
+ it.style.height = h;
+ }
+
+function GetWindowWidth()
+ { return parseInt(document.body.clientWidth);
+ }
+
+function GetWindowHeight()
+ { return parseInt(document.body.clientHeight);
+ }
+
+function computeWinWH()
+ { WinW = GetWindowWidth() ;
+ if (WinW<600) WinW=600;
+ WinH = GetWindowHeight();
+ if (WinH<400) WinH=400;
+}
+
+
+ function getInnerHeight()
+ { var D = document;
+ return Math.max(
+ Math.max(D.body.scrollHeight, D.documentElement.scrollHeight),
+ Math.max(D.body.offsetHeight, D.documentElement.offsetHeight),
+ Math.max(D.body.clientHeight, D.documentElement.clientHeight)
+ );
+ }
+
+ function getInnerWidth()
+ { var D = document;
+ return Math.max(
+ Math.max(D.body.scrollWidth, D.documentElement.scrollWidth),
+ Math.max(D.body.offsetWidth, D.documentElement.offsetWidth),
+ Math.max(D.body.clientWidth, D.documentElement.clientWidth)
+ );
+
+ }
+
+function onResize(fct)
+ { fct();
+ resizeCallBacks[resizeCallBacks.length]=fct;
+ }
+
+function windowResized()
+ { computeWinWH()
+ for (var i=0;i<resizeCallBacks.length;i++)
+ resizeCallBacks[i]();
+ }
+
+function jsQuote(str_in)
+{ str_in = str_in+'';
+ var str_out = '';
+ for (i=0;i<str_in.length;i++)
+ {
+ var ascii = str_in.charCodeAt(i);
+ if ((ascii>=32)&&(ascii<=127)&&(ascii!=34)&&(ascii!=39)) str_out =str_out+str_in.charAt(i);
+ else
+ { var hex = ascii.toString(16).toUpperCase();
+ if (hex.length==1) hex = '0'+hex;
+ str_out = str_out + String.fromCharCode(92) + 'x'+ hex;
+ }
+ }
+ return str_out;
+ }
+
+
+function resizeMargin()
+ {
+ SetSize("MarginLayer",marginSize,WinH-110);
+ SetLeft("FunctionsLayer",marginSize);
+ SetSize("FunctionsLayer",WinW-marginSize,WinH-110);
+ }
+
+function resizeSeparator()
+ { SetHeight("separatorLayer",WinH-110);
+ }
+
+function positionObject(int_x,int_y)
+ { this.x = int_x;
+ this.y = int_y;
+ }
+
+function GetEventPosition(event)
+ { var x,y;
+ if (event.changedTouches)
+ { x = event.changedTouches[0].pageX;
+ y = event.changedTouches[0].pageY;
+ }
+ else
+ { x = event.PageX;
+ y = event.PageY;
+ if (!x)
+ { x= event.clientX + document.body.scrollLeft;
+ y= event.clientY + document.body.scrollTop;
+ }
+ }
+ return new positionObject(x,y);
+ }
+
+
+function EnableDrag(var_element,onDragMove,onDragEnd)
+ {
+ //onDragMove & onDragMove are optinnals callbacks fct(DomElement,position) where position is an associtative array "x","y
+ if (document.addEventListener)
+ { var_element.addEventListener("mousedown",Drag_start,false);
+ var_element.addEventListener("touchstart",Drag_start,false);
+ }
+ else
+ if (document.attachEvent)
+ var_element.attachEvent("onmousedown",Drag_start);
+
+ if (onDragMove) var_element.onDragMove = onDragMove;
+ if (onDragEnd) var_element.onDragEnd = onDragEnd;
+ }
+
+ var LastDraggedObject = null;
+
+ function DraggedObject(obj_element,obj_elmtInitialPos,obj_mouseInitalPos)
+ {this.element = obj_element;
+ this.elmtInitialPos = obj_elmtInitialPos;
+ this.elmtCurrentPos = new positionObject(obj_elmtInitialPos.x,obj_elmtInitialPos.y);
+ this.mouseInitialPos = obj_mouseInitalPos;
+ }
+
+function Drag_start(event)
+ {
+ if (!event) event = window.event;
+ var source = event.srcElement;
+
+ if (event.button!=undefined)
+ { if ((event.button!=1) && (document.attachEvent)) return; // ie;
+ if ((event.button!=0) && (document.addEventListener)) return; // other;
+ }
+
+ if (!source) source= this;
+ if (!source) return;
+ var originalsource=source;
+ while (source.tagName!="DIV")
+ { if (source.tagName=="A") return false; // there is a link (a probably a button) on the way: cancel drag
+ source=source.parentNode;
+ }
+
+ if (event.preventDefault) event.preventDefault();
+ source.style.cursor="col-resize";
+ lastDraggedObject = new DraggedObject( source,
+ new positionObject(parseInt(source.style.left),parseInt(source.style.top)),
+ GetEventPosition(event)
+ );
+ if (document.addEventListener)
+ { document.addEventListener("mousemove",Drag_mouseCapture,false);
+ document.addEventListener("mouseup", Drag_stopMouseCapture,false);
+ document.addEventListener("touchmove",Drag_mouseCapture,false);
+ document.addEventListener("touchend", Drag_stopMouseCapture,false);
+ }
+ else
+ if (document.attachEvent)
+ { document.attachEvent("onmousemove",Drag_mouseCapture);
+ document.attachEvent("onmouseup",Drag_stopMouseCapture);
+ }
+ document.onmouseup = Drag_stopMouseCapture;
+ }
+
+
+function Drag_mouseCapture(event)
+ {
+ if (!event) event = window.event;
+ var position = GetEventPosition(event);
+ if (event.preventDefault) event.preventDefault();
+
+
+ var x = (lastDraggedObject.elmtInitialPos.x + position.x - lastDraggedObject.mouseInitialPos.x);
+ var y = (lastDraggedObject.elmtInitialPos.y + position.y - lastDraggedObject.mouseInitialPos.y);
+
+ var iw = getInnerWidth()
+ var ih = getInnerHeight();
+ var w = lastDraggedObject.element.offsetWidth;
+ var h = lastDraggedObject.element.offsetHeight;
+
+ if (x>iw-w) x=iw-w;
+ if (y>ih-h) y=ih-h;
+ if (x<0) x=0;
+ if (y<0) y=0;
+
+ var p = {x:x,y:y};
+
+ if (lastDraggedObject.element.onDragMove)
+ lastDraggedObject.element.onDragMove(lastDraggedObject.element,p);
+
+ lastDraggedObject.elmtCurrentPos.x = p.x;
+ lastDraggedObject.elmtCurrentPos.y = p.y;
+
+ lastDraggedObject.element.style.left = p.x+"px";
+ lastDraggedObject.element.style.top = p.y+"px";
+ }
+
+function Drag_stopMouseCapture()
+ {
+ if (document.removeEventListener)
+ { document.removeEventListener("mousemove",Drag_mouseCapture,false);
+ document.removeEventListener("mouseup", Drag_stopMouseCapture,false);
+ document.removeEventListener("touchmove",Drag_mouseCapture,false);
+ document.removeEventListener("touchend", Drag_stopMouseCapture,false);
+ }
+ else
+ if (document.detachEvent)
+ { document.detachEvent("onmousemove",Drag_mouseCapture);
+ document.detachEvent("onmouseup",Drag_stopMouseCapture);
+ }
+
+ if (lastDraggedObject)
+ { lastDraggedObject.element.style.cursor='col-resize';
+ if (lastDraggedObject.element.onDragEnd)
+ lastDraggedObject.element.onDragEnd(lastDraggedObject.element,{x:lastDraggedObject.elmtCurrentPos.x,y:lastDraggedObject.elmtCurrentPos.y});
+ }
+ lastDraggedObject = null;
+ }
+
+ function marginMove(el,pos)
+ {pos.y = 80;
+ if (pos.x<100) pos.x=100;
+ if (pos.x>WinW-100) pos.x=WinW-100;
+ marginSize=pos.x;
+ resizeMargin()
+ }
+
+ function proto(str_classindex, m)
+ {
+ var funcproto = doc[str_classindex][m].pro;
+ if(isClassMethod(m)) {
+ if(UseShortcuts) {
+ funcproto = funcproto.replace(m, 'y'+m);
+ } else if(doc[str_classindex][m].lib.substr(0,1) == '[' && funcproto.substr(0,1) != '+') {
+ var params = doc[str_classindex][m].par;
+ var methodpos = funcproto.search(m);
+ var endrettype = methodpos;
+ while(endrettype > 0 && funcproto.substr(endrettype-1,1)==' ') endrettype--;
+ var newproto = "+("+funcproto.substr(0,endrettype)+") "+m;
+ var pos = methodpos+m.length;
+ for(var p in params) {
+ pos += funcproto.slice(pos).search(/[A-Za-z]/);
+ var argpos = pos + funcproto.slice(pos).search('<span');
+ var endargtype = argpos;
+ while(endargtype > pos && funcproto.substr(endargtype-1,1)==' ') endargtype--;
+ var endarg = argpos + funcproto.slice(argpos).search(/[,)]/);
+ newproto += ": ("+funcproto.slice(pos, endargtype)+") "+funcproto.slice(argpos,endarg)+" ";
+ pos = endarg;
+ }
+ funcproto = newproto;
+ }
+ }
+ return funcproto
+ }
+
+ var lastindex_shown = "";
+ var lastname_shown = null;
+ function Show(str_classindex,str_name)
+ {
+ if ((str_classindex=='')&&(str_name==''))
+ { document.getElementById("FunctionsLayerInner").innerHTML =NotFound;
+ return;
+ }
+
+ var fcthtml='';
+ fcthtml = "";
+ lastindex_shown =str_classindex;
+ if (str_name)
+ { lastname_shown = str_name;
+ var fct = doc[str_classindex][str_name];
+ var funcname = fct.lib;
+ var funcproto = proto(str_classindex, str_name);
+ if(UseShortcuts && isClassMethod(str_name)) {
+ funcname = 'y'+str_name+'()';
+ }
+ fcthtml = "<span class='funcHeader'>"+funcname+'</span>'
+ +"<br><br><span class='prototype'>"+funcproto+'</span>'
+ +'<br><br>'+ApplySub(fct.cmt,str_classindex);
+ if (fct.par)
+ { fcthtml += "<span class='paramAndRet'>"+ParamLabel+'</span><br>\n';
+ fcthtml +='<table class="paramtable">'
+ for (var p in fct.par)
+ fcthtml +='<tr><td class="pn">'+p+'</td><td> : '+ApplySub(fct.par[p],str_classindex)+'</td></tr>\n';
+ fcthtml +='</table><br>'
+ }
+
+ if (fct.ret)
+ { fcthtml += "<span class='paramAndRet'>"+ReturnLabel+'</span><br>\n';
+ fcthtml +='<p class="paramtable">'+ApplySub(fct.ret,str_classindex)+'</p>\n';
+ }
+
+ if (fct.ext) fcthtml+=ApplySub(fct.ext,str_classindex);
+ }
+ else
+ if (str_classindex!='')
+ { fcthtml = "<span class='funcHeader'>"+str_classindex+'</span><br>'
+ + "<p>"+ApplySub(doc[str_classindex][''].syn,str_classindex)+"</p>"
+ + "<p>"+IncludeLabel+"</p>"
+ + "<p class='include'>"+doc[str_classindex][''].inc+"</p>"
+ + "<p>"+ApplySub(doc[str_classindex][''].cmt,str_classindex)+"</p>";
+ for (m in doc[str_classindex]) {
+ if (m!='') {
+ var funcproto = proto(str_classindex, m);
+ fcthtml +="<p class='methodlist'><a class='protoindex' href='javascript:Show(\""+str_classindex+"\",\""+m+"\")'>"+funcproto+'</a><br>'
+ +"<span class='synlist'>"+ApplySub(doc[str_classindex][m].syn,str_classindex)+'</span></p>';
+ }
+ }
+ }
+ document.getElementById("FunctionsLayerInner").innerHTML = fcthtml;
+ }
+
+ function expand(source,openonly)
+ { if (document.getElementById(source.id+"List").style.display=='' && !openonly)
+ { document.getElementById(source.id+"List").style.display='none';
+ document.getElementById(source.id).src=plusimage;
+ }
+ else
+ { document.getElementById(source.id+"List").style.display='';
+ document.getElementById(source.id).src=minusimage;
+ }
+ }
+
+ function ShowFunctions(str_currentClassName)
+ { var marginhtml = "";
+ for (var classname in doc)
+ { var icon = plusimage;
+ var fct = "expand";
+ var display = "none"
+ if (str_currentClassName==classname)
+ { icon = minusimage;
+ fct = "expand";
+ display = ""
+ }
+ marginhtml = marginhtml+"<span class='classheader'> <img class='expandColapse' id='"+classname+"' onclick='"+fct+"(this)' src='"+icon+"'/> ";
+ marginhtml = marginhtml+"<a href='javascript:Show(\""+classname+"\",\"\");' id='"+classname+"' onclick='"+fct+"(this,true)'>"+classname+'</a></span><br>';
+ marginhtml = marginhtml+ "<div id='"+classname+"List' class='methodsList' style='display:"+display+"'>";
+
+ for (var method in doc[classname])
+ { if (method!='')
+ { var funcname = doc[classname][method].lib;
+ if(UseShortcuts && isClassMethod(method)) funcname = 'y'+method+'()';
+ marginhtml = marginhtml+"<a id="+classname+'.'+method+" style='display:block' href='javascript:Show(\""+classname+"\",\""+method+"\");'>"+funcname+'</a>';
+ }
+ }
+ marginhtml = marginhtml+'</div>'
+ }
+
+ document.getElementById("MarginLayer").innerHTML = marginhtml;
+ }
+
+ function fctMatch(classname,method,values)
+ { var found = new Array()
+ var tosearch = new Array()
+
+ for (var i=0;i<values.length;i++)
+ if (values[i]!='' && values[i]!='y')
+ { if(values[i].substr(0,3) == '[y]')
+ tosearch[tosearch.length] = values[i].substr(3,values[i].length);
+ else
+ tosearch[tosearch.length] = values[i];
+ }
+
+ for (var i=0;i<tosearch.length;i++)
+ { var expr = new RegExp(tosearch[i], "i");
+ var fct = doc[classname][method]
+ var found = classname.search(expr)>=0;
+ if (!found) found=method.search(expr)>=0;
+
+ if (!found && fct.inc)
+ {if (!found && fct.syn) found=fct.syn.search(expr)>=0;
+ if (!found) found=fct.inc.search(expr)>=0;
+ }
+
+ if (!found && fct.pro) found=fct.pro.search(expr)>=0;
+ if (fct.par)
+ for (var p in fct.par)
+ { if (!found) found=p.search(expr)>=0;
+ if (!found) found=fct.par[p].search(expr)>=0;
+ }
+ if (fct.ret)
+ { if (!found) found=fct.ret.search(expr)>=0;
+ }
+ if (!found && fct.cmt)found=fct.cmt.search(expr)>=0;
+ if (!found && fct.ext)found=fct.ext.search(expr)>=0;
+
+ if (!found) return false;
+ }
+
+
+ return true;
+
+ }
+
+ var searchTimer = null;
+
+ function doSearch()
+ { searchTimer = null;
+ var value= document.forms['yoctoForm'].elements['search'].value;
+
+ if (value=='')
+ { for (var classname in doc)
+ { var container = document.getElementById(classname+"List");
+ for (var method in doc[classname])
+ if (method!='')
+ { var it = document.getElementById(classname+'.'+method);
+ if (it) it.style.display="block";
+ }
+ document.getElementById(classname).style.visibility='visible';
+ var container = document.getElementById(classname+"List");
+ if (container["originalDisplay"]!="")
+ { document.getElementById(classname+"List").style.display='none';
+ document.getElementById(classname).src=plusimage;
+ }
+ else
+ { document.getElementById(classname+"List").style.display='';
+ document.getElementById(classname).src=minusimage;
+ }
+ container["originalDisplay"]=null;
+ }
+ Show(lastindex_shown,lastname_shown);
+ return;
+ }
+
+ var firstindex = '';
+ var firstname = '';
+ qvalue = value;
+ value = '';
+ for(var i = 0; i < qvalue.length; i++) {
+ var c = qvalue.charAt(i);
+ if(c == '\\' || c == '[' || c == ']' || c == '(' || c == ')') {
+ value += '.';
+ } else {
+ if (c!=' ') value+='['+qvalue.charAt(i)+']';
+ else value+=' ';
+ }
+ }
+ for (var classname in doc)
+ { var matchfound=false;
+ var container = document.getElementById(classname+"List");
+ if (!container["originalDisplay"]) container["originalDisplay"]=null;
+ if (container["originalDisplay"]==null) container["originalDisplay"] = container.style.display;
+ values = value.split(' ');
+ for (var method in doc[classname])
+
+ { var it = document.getElementById(classname+'.'+method);
+ var match = fctMatch(classname,method,values);
+ if (match)
+ { if (it) it.style.display="block";
+ matchfound=true;
+ if (firstindex=='') {firstindex=classname; firstname = method;}
+ }
+ else
+ { if (it) it.style.display="none";
+ }
+ }
+
+ if (matchfound)
+ { document.getElementById(classname+"List").style.display='';
+ document.getElementById(classname).src=minusimage;
+ document.getElementById(classname).style.visibility='visible';
+ }
+ else
+ { document.getElementById(classname+"List").style.display='none';
+ document.getElementById(classname).style.visibility='hidden';
+ document.getElementById(classname).src=plusimage;
+ }
+ }
+
+ Show(firstindex,firstname);
+
+
+ }
+
+ function initSearch()
+ { if (searchTimer!=null) clearTimeout(searchTimer);
+ searchTimer = setTimeout('doSearch()',500);
+ }
+
+ function sortObject(o) {
+ var sorted = {}, key, a = [];
+ for (key in o) {
+ if (key != 'YAPI' && o.hasOwnProperty(key)) {
+ a.push(key);
+ }
+ }
+
+ a.sort();
+ if (o['YAPI']) sorted['YAPI']=o['YAPI'];
+ for (key = 0; key < a.length; key++) {
+ sorted[a[key]] = o[a[key]];
+ }
+ return sorted;
+}
+
+ function OOcheckboxChange()
+ { UseShortcuts = document.forms["yoctoForm"].elements["OOcheckbox"].checked;
+ ShowFunctions(lastindex_shown);
+ Show(lastindex_shown,lastname_shown);
+
+ }
+
+
+
+
+ -->
+</SCRIPT>
+
+</HEAD>
+
+<BODY>
+
+<div id="BannerLayer">
+<table width=100% >
+<tr><td rowspan=2>
+<img alt="Yocto-Api :-)" style='margin-left:5px;'src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAk4AAABCCAYAAAChBFmnAAAALHRFWHRDcmVhdGlvbiBUaW1lAFR1ZSAxMyBEZWMgMjAxMSAwNzo0OTo1NSArMDEwMFnEsZUAAAAHdElNRQfbDA0HDiVTf5zcAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAABGdBTUEAALGPC/xhBQAAEn5JREFUeNrtnQ2wVVUVxxcRWIr4gaQkxmNkBk1LSygaabzOEKAhGpKioFKDIaX2SGu0KJ8TTozzRCwbFXFk4gF+JuIXok6k4kAiaeGIhPpIbWQUE8dGEYHW/5194Pq49919PvbZ59z7/82sOe/de87Za+9z9rn/sz/WFiGEEEIIIYQQQgghpAgsUFuvdqHDNH6k9rJam1o33xkmhBBCCIlDX7Vn1A5QW+MwnefUDjRp9fWdaUIIIYSQuCxWe1vtB47Of6baNrWNarf5ziwhhBBCSBLGqO1S6+Hg3CUJRNNsYRcdIYQQQuoAl8LpIbWlvjNICCGEkMbjM74diEE/tb/7doIQQgghjcdnPaePAeRD1Qar9TGfbZFgttyzals9+0cIIYQQshsfwgnjks5Qm6p2slrPKvt9rPYXtVvUlkjQ9UcIIYQQ4g1Xwmmb2fZS+2/Z599Uu0ntaxbngKAaZWyt2o/VVvspptqUSqXrddMc8bC31IasWLHizYx9/Z1urohwyBz1cXrMtAboZoLaILXD1A4x26Ys81yFT9TeMPaOBNcD8cfu0PxuztoZLavjdDPac1lVKhPMXl2iZfJKgrzVxYuPlkGiCSmsD/WFXs8LdDPfYtf31Jq0HHPZi5LT+ol7EPfiW2a7Tu2etH8vbfNeXvddzUrrrfaq2nK189R2qF2uhh/suGJtu9ov1c5Ve0DtKke+x0YvAMIwTIh4GB5Mw7KqUOrjT3UzJ8Ih89S3yIFMzQ9Eq9r4LPKVMvgBma92heZ9i+vEtKyO1M0dakN8Z7wGy9Qmx/kRzemDOTJxhRPrQ/2h13Qf3bRLIHxtuFHL7xLfflfJS1HqJ+7FeRLci6n8ZsYRTq4Gh7+vNk7tNLU/qaE15lpJ1sLVw5zjq458ToNJavdEPOYotQdNJXSKpoH4V60RDkFeLoqRDoQA3g6K+CMBcJ9OUXte89In6cm6wpTV85J/0QTQGrbGdZnUG6wPdQta7W1FE7hIy2+wb6cLDu5F/Cat0rLcz5cTLmfVPSlBWAKMZ0IXVhqtWzhHd7VD3RdNdFSRomUNLU4PRjx0uFqb3gjdXfmm5z5RglYNW/EK0TTB5CkqSKeXq7xkSH+1mx2nUbSyyqJM6o2iXeNq8Nob9Hl6uEQb7gDw7I3S2k+qgwaH+b4Sdx2OAM1qPROfZW/w9nOSY99jUSaeno54KN5Go7QGWWPGzqCbxVY0Yd9YosmkVYTWE1vOcPWWrefFmL8ilhXKJJcvL3mD9aFuman2uRjHjdby+65v5+uE8aZ+ZY5L4YQf6VvFzQB0tMzgzcdFgM3EqOD4nwTdGlHFU7PeCJel6YvpJoAQsn3jhc/jY7Y0icl3PYH7d4Sjc7s6r2tQJvV2nV1Rb+Xksj4UAn2mnqCbyQlOMcdl70KD4aX726VwOl/taIfnP8qkkUuMeEI35fqIh7ZqpTo7DR9MqwC6DW374SGaRhvf4zIoDd9zxlGOzlvksiqy71lSj+Xkqj4UhaTdbbgnos7AJpU53keiLoXTpRn4n0UasTEzUEoSXTxhvFOirkgzcA6iyfYhhwHKSUUTiDJYsig0OTpvkcuqybcDBaHI17gaTb4d8IWZYDM8hVPNYJdnKnh5MXEVxwktTVnMfvuK2jFqL2aQViwwdVsrSEkCYWL7EMV1wUw7hCmInDfTDIygobZjKyDs0hBNEiGPTSmklQbtHn3Na1m1O/Ap7TzY+Ogi3ajk9RpXo71AvmaKmfk8y2JXxGw6sMY++B7jpKb5zldEmhyeG8NJUF/QvX2x2I0hc+lPVSoJJwRkeyfheb8j7mJElYM0Rkpy4dRX7W1XTpaJpxVi/yDFTfS4HhYnQGab2I9DgGgqpRjgzip/mt6mlNJLRHBZatLkKPlclpWLMkk7D5Y+5uE+y+U1robn+pB30L1Wq4UDwRoxRGOVxfmmaHnfGOfl2BcZ3Kcoiye0XBDw0qZLNM4A/cR07qpbIEFwSQRyHGNhp6oNrHDeLGeRfD3h8bepLZUg3pQz9IbD+nslCSqWLXjoQjwdYHuAiWBuG4QTN2eaogn0T/FceaHJ0XmL3I1Tj9fZBfVYTk2+Hcga061mE35gpj5PscLFEot9GZ6gOjbl543OwukbaqdI0FrxgIU9pPYvtd90Ok9ThnkYmOBYtFidZPI8zLWjRjxhFsAHEQ6zDpBpZuTZDjqEgBvBpRQIIaQm6Far1f2GpYnCOFctlucdoc/t031nLm/kpQW2Gp2FE+IIPab2Cwmm+teyL0iwrMrVEtxYIdYtJClQ62buitlqX1J7QhzFUOqM3hArJejDjSKeagbI1O8mRsgDRFPJCDlCCCFV0GcrxtFOsdi1JQzjotsXJBgyYUNrFitHkPToLJwQd2mo2u0SBK+sZRgXhKVVHlb7ldpvPeQh7ho7EE0/kWDtO8TlmJuVw0Y8oeXpkwiHVQ2QaQKqzbc8DwQbRRMhhNiB526tiVTP6zN1YafPWsTuGc/wBAUjjXAEH6lhimYonm7KOA/vxjgGogmj9iGaoq4tlwpayR6VYCxSFPG0V4DMiEupQDSNpmgiCUBrJQKqcmwGqXv0+TpK7IKYzuj8gT5nXxH7VqcrGI2/OKQVjgDiCS1P90mMRWETsjHi/teJZ9EUohXrXq0sEyL6gWbdN/TYO82CkTjWJip4KJpW+swzKQztEixMu75suz6tFckJyTtmaITNC4JWixUPVfkOQ1iw+Hut39owPMGFvvNNapNmHKdtat9T+7MEs+2y4tkI++ZGNIUY8YRm2ihv8G1m2jBiitjMzEKr1hiKJmJJr5RiehFSZDCuySaAcEu1L9DqhJADYtcVN9mEJ3jBd8Z9o+UwwLcPXZF2AEyIJ3TbPSLB1PssQFMqHvI7u9inm9nvLDUMos6FaArRinKDEUK24gnX7Q7LfSGasGDvX33nkxQDiibiEn3WxR2XWhG9X1OPGWhCwMy02HWJxbMVL7joiakVcygMT3By2vkpIGf4dqArXEQOR7fdORJEyq7YZ3vEEUdI9+7dZdOmTbJrV+U61K1bNxkwYIDs2LFDXn/99a7SQwEjnEBXY4WQSLvZ9xEHeU6MEU9oPbKJFWJLKJru9Z0/QggpEBizdEiNffB8bal1IhMAGWEKbFqdECv5bAzF8F0AWWNamZokiBF5seVhH/nw1dWSKxhAOl1tUafPd82ePfut5ubmfhBGy5cvl3PPPVe2bNnyqZ369OkjixYtkpEjR3YIq7lz58q0adOqiSw0g/5c7eMu/Nkl8WffZYZWliv15sFbSVozLCZTNBFCiD36DD5S7H642yJ0q6HVCV1/NuNRZ6kPaMna5rssKpRN3n5H230k6nKRX0Qff6b8g549ez48ffr0HhBNAMJo4cKFEv4P8HdbW1vHd+H/U6dOlbFjx1ZKA91Vl0igOnd2YXm72FXRygLBOS+FUzVXmB5LCCGkayByanWrobXJpiuvAxNo2DbOXpPa5b4LoSBEnRyWCi6FE7hKykRL79690RfcI/x/8eLF8tRTT8nAgXuCf+PvlStXdrQ4lTNixF5Lr2G5kKxn8GUF8pVkHBZE0w2+M0EIIUWiVCphJYnxFrveaMINRAHjl96z3JfhCex43keiroXT42r/LPsfUVU7utTWr18vEydOlGuuuUZee+213Tvg75kzZ8qkSZM69gnBmKhOQJHX5dRoE302apiCkBkUTYQQEgubCTro4ZgV9cQmlIftBKBecdJoQLxM9HItnMDuxXO3bt2KBXk7mtYOOugg2X///Ts+33fffXfvHP6N77BPyKpVn1pseq3aXT4KLCuMeEL8j6cjHDZHj7vGt++EEFI0SqXSBbo53mLXWQnW+IRwsl3oHeEJTvBdLjnmHl+hG7IQTg+Hf2zfvn3c0qVLserxrkMPPVTWrVvX0VXXv/+eBcTxNz7Dd9gHbNy4Ue6+++7yc14rBRq3FBczONAmam24/3TfPhNCSNFQgbKf2LXwoKstdtR80+oUpSWJEforg+6oyb4Sz0I4bZAgzhL4/Lhx4y5cu3Ztx8rH/fr1k/vvv19efnnPCiD4G5/hOwABNWbMGPnwww/DXbA+3n2+CixrGFOHEEKcg6EfNsGEW1KIno/QBLatTsMRnsBryeQLDMpH+Q3z+dvoKhxBOWgZ2h2ccseOHYOGDh26a/DgwfLuu+/K5s17t3i2trbKggUL5OCDD5YNGzZ0xHIq40HpOvQAISQB+qDGoMNVxlaorQtXfSckKS4CViZB7/fDxS5+HsTOzSnkf5umiVYn29ak1ryGJ8gAlPlGYxgIju65N307FUc4oUkTa6R1t9gXFQRxBT4Vu2Lnzp3dXnrppS4PhKCqJKqUv3kpKUIahyZjE8z/H+iDe42UiSmuWUfqCJvwAwAtUh+ZVR6yBGNZIOyuzjrhCjRlmNZbeRWLUYUTIm/fLsGChL7IZUESUsfgxackZcso6Y8HFvw92rdjhCTBDL6e5NsPCxCeYJ7v1hZNf5PvgsgDUYQT1qBDUMu5EiyWu93iGLQ4fVGCRXWnqu2Tgs/oi4Zw2xnxOEwhfUzt1RR8IKTRsVn8lJC8U5TB12gRQ8vYeb4dIfbCCaIJESn/oHZZxDSw0NxqCVqq7lf7UgJ/MV6qj9qlMY5FFyMqCW68XC3ySwghJFvMoOvhvv2IwCT1GYE3V/t2pNGxEU6haPqjRBdN5WBg17fVVkrQZxuFDyRQ2xBf/4mZPmYQXid71s+jeCKEkAZEBQh6P6yXTMkRePn/lm8nGp1a4QjC7jkspPuzFNL7twTh7D+JcMz7EgguBHaMK5oAuvYQ5wgCcJHYhdUnhBBSf2Ah9UG+nYjBMBV9E3070eh0JZxC0RSne64r0Mw4t+x/BBS7VYIxULghrlT7R9n3eCtIcz0aiidCCGlQzBpwNuEH8sosE7CTeKJaV12SMU02IBbGNLXn1E6VIKhlOVhFGuOhThE3XWphhG1226UPhLDPWZcusA1WF5V31A7xnbmYuCqTeoP1IX+0SLGvSRie4Ne+HWlUOgunC9UuUjtWko9p6gpEE0dAvdmyt2gC6MrDGneIAeVq+mW5eMJNeIsELV8kGXioFvmhVIl2R+dFWRVVOLX7dqAgsD7kiFKpdIxupljsCsE7TILZ2FnRIvbLiFxuwhMwPIAHOgsnCCXcLM+KO9EEwlACH3axD+I1fSrquAMwbus0tRESdCFSOCUHPxQ1p6prpS/SWoPtjs6Lsjq21k45Lat23w4UBNaHfIHB1TaTomaoKHnZYr/U0HsAoXYQK9FGaIfhCc7J0kcS0HmME6JyP6L2pDTAIromj0+aPDMieTq0+3agQHl6w3fGEtDu24GC0O7bAeYpQIXJKAlekmuBBWQTL60SFRVqWyTa2KsJmqcTs/aT7K28z1frK5W7z+qVHzZgnl1S9PEPlWgv2HmzYKNvBwoC60MOUIGBJcJsg102e1ybcZ4EXYlDLPdHnoZ68rVhqTSrLi8CAl103Yy5Ji95rgce9+2AA5Y5Om+Ry8pVmdQbRb7G1SjitcfYXZto98tUND3qy0kj2JojHDJEReEFvvxtVGrFcfIJBpDjLeFM344Qe7TiPyFBU3e9sMzVAEw9L4LBFrGslvleM6sosD74R4XFARIMvK4FJiVd7ttf81xoi3DILJNHkhF5Fk542FyvNl/tdN/OkEggPtYHvp1IAXSzTHacRtHKKosyqTeKdo2rUdRrP0PsZq9iltqLvp01QMC9Z7nvYVLsuFSFw5dw6mXS/rjGfrh5MNPtTrWxnnwlETEPn+PV1vj2JQHojjhe87LZZSIFK6tMyqTeKNg1rkYhr32pVDpS7Lq+IFJm+PY3xJRzS4RDmk1eSQbYLvKbJuh++73aVrVnauyLWW/hgr53qZ2lttSDzyQiWvFf0c1QrczH6Xa0BOMLmiQI3oatj3uvEojT0i7BDDds0dK5xPjfqGXlvUzqjRxe42rU27XHlH2bsp1pZrXlCSx1hoHiNUOWyJ7wBN/37TRJH4gmBLZEs/XJEY7DAHFEMUelZssTIYQQQuqeuKIphOKJEEIIIQ1BUtEUQvFECCGEkLomLdEUUi6exvjOHCGEEEJIWqQtmkIgnhAS/321Pr4zSQghhBCSFFeiKaS3BLPuRvnOKCGEEEJIUuaKO9EEekggnNhdRwghhJBC82UJ1ppzKWoonAghhBCSKa4ihw+UYBzSct8ZJIQQQghJC1fCaZLaO2oTHfp+XgZpEEIIIYQ4pa8ES6lgtWaXazPh3AeatPr6zjQhhBBC6h8XLU5vq2Fdo9Vqtzj0HedeZdJ622E6hBBCCCEd/B8r9kLFREQWUAAAAABJRU5ErkJggg==" />
+</td><td style='vertical-align:top;text-align:right'>
+<a class='extLink' href='http://www.yoctopuce.com'>www.yoctopuce.com</a>
+</td>
+</tr>
+<tr><td id='langdt'></td></TR>
+</table>
+</div>
+<div id="MarginLayer"></div>
+<div id="FunctionsLayer"><div id="FunctionsLayerInner"></div></div>
+<div id="FooterLayer"><form name='yoctoForm'>
+<table width=100% style='margin-top:3px;'>
+<tr><td>
+<img alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAANwAAADcBYx2BhQAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAGgSURBVCiRjdC9a1NhFAbw8973ed7bewm859KKc4oFwUUwk0uMkICC4gfYIjSDQhaH+ge4BOFCwEUpQsCtEEkHURCHigQjcQo4FFyKHYWsflGaq9elStVr9Yzn4cf5MHmeS1G12+1gNBrdJLkMYIHkNoD+ZDLpDAaDzBRBY4yp1+tPSZ4los0QhzYEH0+RcgLAq3K5fLoQNhqNGwBWY3d85fBM+vxHf8fdPWnc5gOSt4KiNUkukuHb/UhEZGZ35TVs/MZau1gIrbXzLph7UZTBzL4EMF8IAWwZfjrz9duu+T0L3Ic6gK2/rboGmCM77vbF/Rizqw1SjgFY++M5lUqF4/F42mw2HwJYAsJ3sHMb5JcaKEcBPIvj+NwvsFqtni+VSj3vfb/X611vtVrXACxbaxecc9sk+51O536e5/lPWKvVLkRRtJ4kCVX1c5ZlSbfbnRadIiIS7E26FEXRuqpSVafe+6sHIREROxwOL8dx3FdVJkky9d5fSdP0yUFIRCQIw/CeqkJVM+/9Upqmj/+FREQCVb2jqu/30KP/QSIi3wFqcn4o9hAuDAAAAABJRU5ErkJggg==" />
+<input name='search' onkeyup='initSearch()'></form>
+</td><td id ='oosyntax' ></td><td id='version'>
+</td>
+</table>
+
+</div>
+<div id="separatorLayer" style='top:80px;left:250px'></div>
+
+<SCRIPT type="text/JavaScript" >
+<!--
+document.getElementById('langdt').innerHTML = Language;
+document.getElementById('version').innerHTML = Version;
+
+computeWinWH();
+
+onResize(function(){SetWidth("BannerLayer",WinW)});
+onResize(resizeMargin);
+onResize(function(){SetWidth("FooterLayer",WinW);SetTop("FooterLayer",WinH-30);});
+onResize(resizeSeparator);
+EnableDrag(document.getElementById("separatorLayer"),marginMove,marginMove);
+if (UseShortcuts!=null)
+ { var td = document.getElementById("oosyntax");
+ var widget ='<input type="checkbox" id="OOcheckbox" '+ (UseShortcuts?'checked':'') + ' onclick="OOcheckboxChange(this);"> ' + AbbrevLabel;
+ td.innerHTML = widget;
+ td.title =AbbrevHint;
+ td.alt =AbbrevHint;
+
+
+ }
+doc = sortObject(doc);
+ShowFunctions();
+Show(doc["YAPI"]?"YAPI":"Module","");
+
+
+window.onresize = windowResized;
+-->
+</script>
+
+</BODY>
+
+
+</HEAD>
+
diff --git a/yoctoLib.python.26380/Documentation/yoctolib-python-EN.pdf b/yoctoLib.python.26380/Documentation/yoctolib-python-EN.pdf
new file mode 100644
index 0000000..cc63c9f
Binary files /dev/null and b/yoctoLib.python.26380/Documentation/yoctolib-python-EN.pdf differ
diff --git a/yoctoLib.python.26380/Documentation/yoctolib-python-FR.html b/yoctoLib.python.26380/Documentation/yoctolib-python-FR.html
new file mode 100644
index 0000000..8b7015d
--- /dev/null
+++ b/yoctoLib.python.26380/Documentation/yoctolib-python-FR.html
@@ -0,0 +1,3922 @@
+<HTML>
+<HEAD>
+<title>Python API</title>
+<link rel="apple-touch-icon-precomposed" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAYAAABV7bNHAAAAEXRFWHRTb2Z0d2FyZQBKVEwtRGV2J4CxQ84AAAAGYktHRAgICAgICCjFCb4AAAAJcEhZcwAAATsAAAE7AR/fb3EAAA34SURBVHiczVwHTBZNGp5vBeFEUWPHXhDFgsZuLLHEdqJYsJzGTvQEY4yiiAFrNBgTsZ4FsSRqTNRTsRCNvetZ0FPsigVFsf4WFPm/m2fCfNlv2TK738L9k4ysOzuzM8+85XnfWXA4nU6iVWJjY2uUKVNmaqVKlf5eqlSpSn5+fiV9fHy8iE5xOBxEtBg9a+dYvOTm5v7+/v37V1qysrOzD33+/HkFXedzzXG1AFq6dOmqJk2a/NPb27vYX2WRhTHW79+/89LT0/8VGRk5RQigmJiYOnXr1j1UvXr1BoW1kMIGTauP3liZmZn3MzIy+lBpeqIJUHx8/DgqNav/RktRA1JY7zADYE5Ozg8qTVHR0dHJBQCaMWNGzZYtW97zpaUoQLEDVEmSbH/Hz58/c9LS0hrExcVlsHfwhmrVqu2i9sY3Ly+PoFLddKv8vmj7n3/+SapWrUqqVKnCrrX6K++LtqNWqFCBUFNAsMlWxlBr9/Ly8qVz3uXahHxvNZHebKO3aGWbVjv/P/V8bAE1a9YkpUuXtm1cXqlXJTVq1CDUy5KAgAChzRQFis69TUJCwiQmZVOmTPGjdiezRIkS/nbqOaSnYcOG2BFy6dIlQt2prQa4WbNmpGLFimxB9+7dg5G1xVjz9h8/fnyh4wZIxYsX70a5jb8nu6nW7/nz50y13r9/z6oVNdWaA6QSG4B3XLt2jbx48cKUiolIFDU3/rR2A0AdrExSZHEiQKq1A1h5lT8DBxscHEwePHhAbt26Rd6+fWvZnun1wXspQB0kKj3NRBZhRbpQtAyoXj/KdllVW0DJkiWZ93r69KkpyVBzFMp1Ke9T4WkmUa8e6Ilq6U0SkwJARuNjwZUrVyaUoJI6deqwa9gBPMeB4n04LTGrQiJeUdkObByJiYm/6AS97SBayvY+ffrA2JGTJ08W6Fe2bFlmS+CBypcvX2BMTBDq8+rVK2aAv3z5wp5Bnw4dOpCDBw8WMPx2rEF+n25wrkR3xNuMATajbqjwYvL7kKqmTZuSvn37kpCQEEYF1CZbrFgxxqEoeSX9+vUjbdq0Yc+hPwdQRIXMSpRCWr0lO2yN1v3Xr18zbwPVwf/9/f1JaGgoad68uSELVpbAwEASFhbG1E8NICMVUgNQC1T5fcnq4kWe5S64c+fOpG3btmTAgAFMnawWytVI/fr1dW2Q3WuQCvMlNK4hhw4dIm/evGFqBXWzq8Dde7p4vXtciiQt1bLjJdwLKZIDthTYJivxm6i68bEkkQUbcSO9SSIkQLxkd4EtqlWrltBCPZEiyQ491WqHJ4L3KawCu6a186IqZMSLJLsMmpIgosLzUDZaaACVK1eOBcRWFy+ydslTFVJOSM5+GzRoQAq71KtXz/Lihdy82mCg8+3btyeNGzfWBcpot8B6C7vAvnmymbVr1yaNGjVy3VeuxxEVFeVUUu1OnToxL4HAEBQfA8kLH4QzY1zDlSOkALgYA6oVHx9f6ADh3UuWLGHzMBtSIOEGRo+Q5f79+4y3KftJaqh/+/aNqQkKOgMkeUV8lZ+eZOQNiatu3bqRESNGMMOMMXx8fEhRFLwPG2lFioKCgthGYq5g9mpS5oiIiHCqoQ31+vr1K8nIyHBDVbkj/F54eDhp3bo1Cy+SkpJYWDF16tQiAWnLli3k0aNHmtKjJkVdunRh9fHjx0xy0tPTifIIDP0kLaOclpbGOivblekHfm/nzp3kypUrLMCcPHkyi8GKqmAjzXgyhD4A586dO2Tbtm3k9u3b2kxajxgauUil19u+fTsDCe538ODBRQbQu3fv3ADR40Y9evRg5uDGjRtkx44d5NevX7rrlfTcntJTaaVCcc0lCTty+fLlIgMnJyeH/PHHH0LZzUGDBjHpwfwg8ZivEagOamucUAcksIwsP09RGCWb8HPcuHHMJhV2gRPZu3evmyTgWjnHXr16Mbt69uxZsm/fPpe3NThpJQ5qM5hl8vPzY/YDHgmeQRQILVAB5qxZs1gu6K9QAMjx48dJSkqKbpYRkvThwweSnZ3NbBsDSP4wXDeyfAgG80+hdYHQawfg8+bNKxBugCbMnDmTGUdQg/HjxxdIoGGiGzduZHYNOw+ugwNItYWfOXOGfPz4ke04r5y78fmgHVxNa+7fv39noOA5uTdzBAQEOLUWignhhBQuWw8IPdBAxIYMGeLWBkqAPBEvs2fPJnFxcW7PgGQuW7bMTUWgSsoCm3fu3DnT8+IkE9KCCrVU6y/pDQz9fvjwIbl58yZ58uQJS6Jjd4yiebnBO3bsGJMYXvAsT+KjtGrVyrWDvOAaUsfbUI4ePcoWIi/gL6dOnTJM08jbYdDB1cCb7t69y645OKpmBBJkJBnKe1A9nI1DspAMUyOQ8n5jx44lPXv2ZNc4ZcUHB9zu4XwLTFitgLXjGIiDB14GteVqCsmDSuhJDjwVIgPYE/RRhiRG15IVtYEUQV8hVTgXR94Z0vXp0yeXhMmlKDU1tUCKIv9TEwaCVsGYeIafxfOEPcqBAwcY2HLaAUkAGJA0SAbmh5qVlcVA5p6LV9g9vWv8lOQdeIUXY420yq/V7nEmC8AwKUgExBfn5jCK2GEEgvKPCxISEpgUQvyR9IKEYbFyyRkzZgzp2rWri8MsXLjQtUGQCtgwjI3Fv3z5kkkX3o1zNBBHqBLjMTpAGAGV/3/3ReOnSEe9di4dmCQWzoHjpXv37mTPnj2MAkBl4NEgWbxAdYcOHcqcBFImycnJjP3yArsD24ixsTl4F6RDOR/lZprZeH7toBNwitgdMzZKGciirlmzxrb06/Tp09knNXbNUfm1mls7NYJOKwNDNZBoUrNRyt2AdODQz66Ck1aolwhh9XSzHVTMncoGNTTl7dHR0WT48OH/N1Y8atQoVxrGTilSe9YRGBjoNNMR9gL2AeQMbpZ7Gflz4DCoMMQ8IYXs3cSJE20JPeAt5UZdjV0rKww7Qo3Dhw+bI7xBQUFOEVHF/wEOWPCRI0fIggULXB5GSFTzDWdkZCQZNmyYZXD41x5KADgwWqoFZ4BzNLDx9evXExGtYdeUkzhFDC0Cz4EDB5Jdu3aRxMRE12SsiPW0adPYWGYKEnh4N/JN8khc9L2QZJiGjh07MilavXq1kNY4goODncqBldcAB0Z206ZNLJ3qqafDbsF140RBpICITpgwwSWxmrst8N6IiAjSv39/FrqsWrXKPTBV6498kNbAqDExMcxrABxUK8ZP7V67du3I4sWL2TU4DdIQ169fdx3lILmFtCjKnDlzyNWrVy0ZXbVcOoJnGHqABPqh1Aa3sUJCQlTdPIwp2CwIGnYb1ch1muEaiL/279/PvNGkSZMKpCfw7MqVK9nBYO/evW33TkgJA6TTp0+zUAhsXzVpL2eSHGl0njt3LmnRogXZvXs32bx5syHjFGGscmONmA0FoQI7XlGwdK5aiK88YcJac4SxxgbhY66oqCimJUqH4kp3KMMHpF8RJsA1nj9/3jJd1wtVsFs8uSUPDeTP8jy3aGBpJkRCBRtHcIvYD+d7auuR1BYHbwFgVqxYwbL/otGv2iT0QEX6ATxKqx1t/CtYT+JDrc2E7YNdRRIfsaHqGGriB7GGCF64cEFTRaxMWAmEXELUxuIkVGVXTUmynl0CfYDbVwuR8q/FF++JzmuFLwBBC1SoH0QfCTa9cT2VZD01LWCDjMTTjN1Rm6jyWQCktXgc0aAduSCeSVTxMrbYRk3BMBpYRLqUkxX1dN7e3kzFtHYeSTh4U7BggISMoujOy+empQkiQEpmXLOR6pmxSzjuQV4bWUe9CcPVI+5D7nv+/PnsSEoEHDPzMthsyfAldrt5ZAMQ9OLEAx7EyHU/e/aMLFq0iAEKiUJ+SU3S7dpst80UcZFmOY5eP4QQiOaResDBoIjEoSJli9AEYQjO0PBTzRTY4WQU/cQfVkulGnEN+T2w1ZEjR7Kc8oYNG4QNLb/GCcXy5cuZmgEk+YGmKL0Q4U6qbl5ESqyoEy/4zZ/Ro0czz4R8jBJUUenENz0IMOHVYmNjGUhG6qS3sYYaRP/J8YQ/iNgwHBvjaOfixYtk3bp1bpKjJ51a7wW7BwMGP0Jkboc6aawhBwCl66Eqwh/0JoEjHnwKg3TF2rVrXckukQXpuW6kfPErmTgWEjEPVuwSfeYe5O+/egiLiqeaJ8DvgyHRhbN9ZPD42ZXZyF9LquUfHIjaSTNOhpbbkKAbVu2O0W7haAg8B3kdfiau5VKt2Dv5YaGom9fbbBV1uwmY/iNqd8wCiWQX8j3sl0IU/dRyL6KpDF7BxMGyzdhDMyES3YCrAAi5zEy7UxlIqeLoGL+vgU/8RGi+mcwAvBhy2jhSgqSaic1E1kPvv6b1qpSampqTl5cXZTVkUOo/v49PW3Amjy8tsBARN27GLuHDLnyxgQ8VsBF6gbJRcKs2Lyr1UVu3bs1x/fWXsLCwf9NOYWYT4nrtSLrjpSdOnNA8FLB6ZIyKL1YhQSCe8o+gjPLWRu+g4OyjLH+A25/HCQ0NreTr6wuXX9bqGbcnH33qAWj3uAbr+fjz58+GycnJWW5/HiclJSUrNzd3FL38YMbuGBlSEVvjSYhjImQwVHOsHRhwcFT/RBdVtSrUM2yng3XxdOfNHBNZPVIy8wWHnmpTO3yKgjMiKSkpU+iPvIWHh8+kQM2nA/ianYTdX1pYAcLEsznUfs2lwfNSU38FL//T/YpeXl7/oNLUj4phbVor0MH9rO68p8/aYWto+UbX/I4a4qe0HqCSs4NKzVstDP4HmBZinDvm9zIAAAAASUVORK5CYII="/>
+<meta name="apple-mobile-web-app-capable" content="yes" />
+<style type="text/css">
+/*********************************************************************
+ *
+ * $Id: yoctolib-python-FR.html 26364 2017-01-13 08:35:31Z seb $
+ *
+ * Searchable documentation browser for Yoctopuce Library
+ *
+ * (note: the reference file to edit is yoctolib-cpp-FR.html)
+ *
+ * - - - - - - - - - License information: - - - - - - - - -
+ *
+ * Copyright (C) 2011 and beyond by Yoctopuce Sarl, Switzerland.
+ *
+ * 1) If you have obtained this file from www.yoctopuce.com,
+ * Yoctopuce Sarl licenses to you (hereafter Licensee) the
+ * right to use, modify, copy, and integrate this source file
+ * into your own solution for the sole purpose of interfacing
+ * a Yoctopuce product with Licensee's solution.
+ *
+ * The use of this file and all relationship between Yoctopuce
+ * and Licensee are governed by Yoctopuce General Terms and
+ * Conditions.
+ *
+ * THE SOFTWARE AND DOCUMENTATION ARE PROVIDED "AS IS" WITHOUT
+ * WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
+ * WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS
+ * FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO
+ * EVENT SHALL LICENSOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
+ * INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA,
+ * COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR
+ * SERVICES, ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT
+ * LIMITED TO ANY DEFENSE THEREOF), ANY CLAIMS FOR INDEMNITY OR
+ * CONTRIBUTION, OR OTHER SIMILAR COSTS, WHETHER ASSERTED ON THE
+ * BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE), BREACH OF
+ * WARRANTY, OR OTHERWISE.
+ *
+ * 2) If your intent is not to interface with Yoctopuce products,
+ * you are not entitled to use, read or create any derived
+ * material from this file.
+ *
+ *********************************************************************/
+BODY
+{ font-family: Arial, sans-serif;
+ font-size: 14px;
+ text-align : justify;
+}
+
+div#BannerLayer
+{ position:absolute;
+ left:0px;
+ top:0px;
+ width:800px;
+ height:80px;
+ overflow:hidden;
+ Font-size:64px;
+ font-weight:bold;
+ background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAABkCAIAAADITs03AAAALHRFWHRDcmVhdGlvbiBUaW1lAFR1ZSAxMyBEZWMgMjAxMSAwNzoyNjozNCArMDEwMCBiImgAAAAHdElNRQfbDA0GIhbUXPxTAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAABGdBTUEAALGPC/xhBQAAAB9JREFUeNpjeP78ORMDAwPT////wTQ+NrHqRvWTrR8AfCxgH0BR2OYAAAAASUVORK5CYII=);
+ }
+div#MarginLayer
+{ position:absolute;
+ left:0px;
+ top:80px;
+ width:250px;
+ height:490px;
+ background-color:#f8f8f8;
+ overflow:auto;
+
+}
+
+div#FunctionsLayer
+{ position:absolute;
+ left:250px;
+ top:80px;
+ width:600px;
+ height:490px;
+ overflow:auto;
+}
+
+div#FooterLayer
+{ position:absolute;
+ left:0px;
+ top:570px;
+ width: 800px;
+ height:30px;
+ background-color: #E0E0E0 ;
+ overflow:hidden;
+}
+
+div#separatorLayer
+{ position:absolute;
+ width:10px;
+ height:470px;
+ border-left:2px solid #b0b0b0 ;
+ overflow:hidden;
+ cursor :col-resize;
+}
+
+div.container
+{ width:100%;
+ height:100%;
+}
+
+span.classheader
+{ display:inline-block;
+ width:100%;
+ background-color:#f0f0f0;
+ padding-top:3px;
+ padding-bottom:3px;
+ margin-bottom:3px;
+ margin-top:px;
+}
+
+A.extLink
+ { color : grey;
+ text-decoration:none;
+ font-size:10px;
+ }
+
+span.classheader A
+ { color: navy;
+ text-decoration:none;
+ font-weight:bold;
+ }
+
+img.expandColapse
+ { vertical-align: middle;
+ }
+
+div.methodsList
+ { margin-top:0px;
+ padding-top:0px;
+ padding-left:10px;
+ margin-bottom:10px;
+ }
+
+div.methodsList A
+ { color: navy;
+ text-decoration:none;
+ }
+
+div#FunctionsLayerInner
+ { margin-left:10px;
+ margin-top:10px;
+ margin-right:20px;
+ }
+
+span.funcHeader
+ { color: navy;
+ text-decoration:none;
+ font-size:25px;
+ margin-botton:20px;
+ font-weight:bold;
+ }
+
+span#pn , td.pn
+ { font-weight:bold;
+ color:#004000;
+
+ }
+
+td.pn
+ {vertical-align:top}
+
+span.paramAndRet
+ {font-weight:bold;
+
+ }
+
+table
+ {font-size:14px;}
+
+span.prototype
+ { margin-left:10px;
+ margin-right:10px;
+ padding-top:5px;
+ padding-bottom:5px;
+ padding-left:5px;
+ padding-right:5px;
+ font-weight:bold;
+ background-color: #f8f8f8;
+ -moz-border-radius: 5px;
+ -webkit-border-top-left-radius: 5px;
+ -webkit-border-top-right-radius: 5px;
+ -webkit-border-bottom-right-radius: 5px;
+ -webkit-border-bottom-left-radius: 5px;
+ color:navy;
+ }
+
+p.protolabel
+ { border-top:1px solid #f0f0f0;
+ }
+
+P.protoretval
+ { margin-left:20px;}
+
+.paramtable
+ { margin-left:20px; margin-top:0px;}
+
+P.protoretval
+ { margin-left:20px;}
+
+input
+ { border : 1px solid gray;
+ border-radius: 2px;
+ -moz-border-radius: 2px;
+ -webkit-border-top-left-radius: 2px;
+ -webkit-border-top-right-radius: 2px;
+ -webkit-border-bottom-right-radius: 2px;
+ -webkit-border-bottom-left-radius: 2px;
+ }
+
+td#langdt
+ { vertical-align:bottom;
+ text-align:right;
+ color:#404040;
+ }
+
+td#version
+ { text-align:right;
+ font-size:12px;
+ color:grey;
+ }
+
+p.methodlist
+ { border-top:1px solid #e0e0e0;
+ }
+
+a.protoindex
+ { text-decoration:none;
+ font-weight:bold;
+ color:navy;
+ }
+
+span.synlist
+ { margin-left:10px;
+ }
+
+p.include
+ { font-weight:bold;
+ color:navy;
+ margin-left:20px;
+ }
+</style>
+
+<SCRIPT type="text/JavaScript">
+<!--
+var WinW;
+var WinH;
+
+var plusimage="data:image/gif;base64,R0lGODlhEAAQAIAAAEJCQv///yH5BAAAAP8ALAAAAAAQABAAAAIlhI9pwe2+nmQRAllbpvft8IWdgnAcOXYWpmqt6b2gLE7TZ6N6AQA7";
+var minusimage="data:image/gif;base64,R0lGODlhEAAQAIAAAEJCQv///yH5BAAAAP8ALAAAAAAQABAAAAIihI9pwe2+nmRxvmobzmHnqCAUMIZkd3KjqqWqZ8GTLJl2AQA7";
+
+var marginSize=250;
+var resizeCallBacks= new Array();
+var SVN_Id = '$Id: yoctolib-python-FR.html 26364 2017-01-13 08:35:31Z seb $';
+var Version = (SVN_Id.split(' '))[3];
+var doc = new Array();
+
+//--- (generated code: Module)
+var Language='Python';
+var IncludeLabel='Pour utiliser les fonctions d&eacute;crites ici, vous devez inclure:';
+var ParamLabel='Param&egrave;tres :';
+var ReturnLabel='Retourne :';
+var AbbrevHint='L\x27API supporte deux syntaxes, une premi&egrave;re purement orient&eacute;e objet, et une seconde abr&eacute;g&eacute;e.';
+var NotFound='Aucune correspondance trouv&eacute;e';
+var AbbrevLabel='Utiliser les noms abr&eacute;g&eacute;s';
+var UseShortcuts=false;
+var sub={YAPI_SUCCESS:'YAPI.SUCCESS',YAPI_NOT_INITIALIZED:'YAPI.NOT_INITIALIZED',YAPI_INVALID_ARGUMENT:'YAPI.INVALID_ARGUMENT',YAPI_NOT_SUPPORTED:'YAPI.NOT_SUPPORTED',YAPI_DEVICE_NOT_FOUND:'YAPI.DEVICE_NOT_FOUND',YAPI_VERSION_MISMATCH:'YAPI.VERSION_MISMATCH',YAPI_DEVICE_BUSY:'YAPI.DEVICE_BUSY',YAPI_TIMEOUT:'YAPI.TIMEOUT',YAPI_IO_ERROR:'YAPI.IO_ERROR',YAPI_NO_MORE_DATA:'YAPI.NO_MORE_DATA',YAPI_EXHAUSTED:'YAPI.EXHAUSTED',YAPI_DOUBLE_ACCES:'YAPI.DOUBLE_ACCES',YAPI_UNAUTHORIZED:'YAPI.UNAUTHORIZED',YAPI_RTC_NOT_READY:'YAPI.RTC_NOT_READY',YAPI_FILE_NOT_FOUND:'YAPI.FILE_NOT_FOUND',null:'None'};
+doc['Module']={'':{syn:'Interface de contr\xF4le du module',inc:'from yocto_api import *',cmt:'<p>Cette interface est la m\xEAme pour tous les modules USB de Yoctopuce. Elle permet de contr\xF4ler les param\xE8tres g\xE9n\xE9raux du module, et d\x27\xE9num\xE9rer les fonctions fournies par chaque module.</p>'}};
+doc['Module']['FindModule']={syn:'Permet de retrouver un module d\x27apr\xE8s son num\xE9ro de s\xE9rie ou son nom logique.',lib:'YModule.FindModule()',pro:'def FindModule(<span id=pn>func</span>)',cmt:'<p>Permet de retrouver un module d\x27apr\xE8s son num\xE9ro de s\xE9rie ou son nom logique.</p><p> Cette fonction n\x27exige pas que le module soit en ligne au moment ou elle est appel\xE9e, l\x27objet retourn\xE9 sera n\xE9anmoins valide. Utiliser la m\xE9thode <tt>YModule.isOnline()</tt> pour tester si le module est utilisable \xE0 un moment donn\xE9. En cas d\x27ambigu\xEFt\xE9 lorsqu\x27on fait une recherche par nom logique, aucune erreur ne sera notifi\xE9e: la premi\xE8re instance trouv\xE9e sera renvoy\xE9e. La recherche se fait d\x27abord par nom mat\xE9riel, puis par nom logique.</p>',par:{func:'une cha\xEEne de caract\xE8res contenant soit le num\xE9ro de s\xE9rie, soit le nom logique du module d\xE9sir\xE9'},ret:'un objet de classe <tt>YModule</tt> qui permet ensuite de contr\xF4ler le module ou d\x27obtenir de plus amples informations sur le module.'};
+doc['Module']['FirstModule']={syn:'Commence l\x27\xE9num\xE9ration des modules accessibles par la librairie.',lib:'YModule.FirstModule()',pro:'def FirstModule()',cmt:'<p>Commence l\x27\xE9num\xE9ration des modules accessibles par la librairie. Utiliser la fonction <tt>YModule.nextModule()</tt> pour it\xE9rer sur les autres modules.</p>',ret:'un pointeur sur un objet <tt>YModule</tt>, correspondant au premier module accessible en ligne, ou <tt>null</tt> si aucun module n\x27a \xE9t\xE9 trouv\xE9.'};
+doc['Module']['checkFirmware']={syn:'Teste si le fichier byn est valide pour le module.',lib:'module.checkFirmware()',pro:'def checkFirmware(<span id=pn>path</span>, <span id=pn>onlynew</span>)',cmt:'<p>Teste si le fichier byn est valide pour le module. Cette m\xE9thode est utile pour v\xE9rifier si il est n\xE9cessaire de mettre \xE0 jour le module avec un nouveau firmware. Il est possible de passer un r\xE9pertoire qui contiens plusieurs fichier <tt>.byn</tt>. Dans ce cas cette methode retourne le path du fichier <tt>.byn</tt> compatible le plus r\xE9cent. Si le parametre <tt>onlynew</tt> est vrais, les firmwares \xE9quivalents ou plus anciens que le firmware actuellement install\xE9 sont ignor\xE9s.</p>',par:{path:'le path d\x27un fichier <tt>.byn</tt> ou d\x27un r\xE9pertoire contenant plusieurs fichier <tt>.byn</tt>',onlynew:'retourne uniquement les fichiers strictement plus r\xE9cents'},ret:'le path du fichier <tt>.byn</tt> \xE0 utiliser, ou une cha\xEEne vide si aucun firmware plus r\xE9cent n\x27est disponible En cas d\x27erreur, d\xE9clenche une exception ou retourne une chaine de caract\xE8re qui comment par \x22error:\x22.'};
+doc['Module']['clearCache']={syn:'Invalide le cache.',lib:'module.clearCache()',pro:'def clearCache()',cmt:'<p>Invalide le cache. Invalide le cache des valeurs courantes du module. Force le prochain appel \xE0 une m\xE9thode get_xxx() ou loadxxx() pour charger les les donn\xE9es depuis le module.</p>'};
+doc['Module']['describe']={syn:'Retourne un court texte d\xE9crivant le module.',lib:'module.describe()',pro:'def describe()',cmt:'<p>Retourne un court texte d\xE9crivant le module. Ce texte peut contenir soit le nom logique du module, soit son num\xE9ro de s\xE9rie.</p>',ret:'une cha\xEEne de caract\xE8res d\xE9crivant le module'};
+doc['Module']['download']={syn:'T\xE9l\xE9charge le fichier choisi du module et retourne son contenu.',lib:'module.download()',pro:'def download(<span id=pn>pathname</span>)',cmt:'<p>T\xE9l\xE9charge le fichier choisi du module et retourne son contenu.</p>',par:{pathname:'nom complet du fichier'},ret:'le contenu du fichier charg\xE9',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>YAPI_INVALID_STRING</tt>.'};
+doc['Module']['functionCount']={syn:'Retourne le nombre de fonctions (sans compter l\x27interface \x22module\x22) existant sur le module.',lib:'module.functionCount()',pro:'def functionCount()',cmt:'<p>Retourne le nombre de fonctions (sans compter l\x27interface \x22module\x22) existant sur le module.</p>',ret:'le nombre de fonctions sur le module',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Module']['functionId']={syn:'Retourne l\x27identifiant mat\xE9riel de la <i>n</i>i\xE8me fonction du module.',lib:'module.functionId()',pro:'def functionId(<span id=pn>functionIndex</span>)',cmt:'<p>Retourne l\x27identifiant mat\xE9riel de la <i>n</i>i\xE8me fonction du module.</p>',par:{functionIndex:'l\x27index de la fonction pour laquelle l\x27information est d\xE9sir\xE9e, en commen\xE7ant \xE0 0 pour la premi\xE8re fonction.'},ret:'une cha\xEEne de caract\xE8res correspondant \xE0 l\x27identifiant mat\xE9riel unique de la fonction d\xE9sir\xE9e',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un cha\xEEne vide.'};
+doc['Module']['functionName']={syn:'Retourne le nom logique de la <i>n</i>i\xE8me fonction du module.',lib:'module.functionName()',pro:'def functionName(<span id=pn>functionIndex</span>)',cmt:'<p>Retourne le nom logique de la <i>n</i>i\xE8me fonction du module.</p>',par:{functionIndex:'l\x27index de la fonction pour laquelle l\x27information est d\xE9sir\xE9e, en commen\xE7ant \xE0 0 pour la premi\xE8re fonction.'},ret:'une cha\xEEne de caract\xE8res correspondant au nom logique de la fonction d\xE9sir\xE9e',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un cha\xEEne vide.'};
+doc['Module']['functionType']={syn:'Retourne le type de la <i>n</i>i\xE8me fonction du module.',lib:'module.functionType()',pro:'def functionType(<span id=pn>functionIndex</span>)',cmt:'<p>Retourne le type de la <i>n</i>i\xE8me fonction du module.</p>',par:{functionIndex:'l\x27index de la fonction pour laquelle l\x27information est d\xE9sir\xE9e, en commen\xE7ant \xE0 0 pour la premi\xE8re fonction.'},ret:'une cha\xEEne de caract\xE8res correspondant au type de la fonction',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un cha\xEEne vide.'};
+doc['Module']['functionValue']={syn:'Retourne la valeur publi\xE9e par la <i>n</i>i\xE8me fonction du module.',lib:'module.functionValue()',pro:'def functionValue(<span id=pn>functionIndex</span>)',cmt:'<p>Retourne la valeur publi\xE9e par la <i>n</i>i\xE8me fonction du module.</p>',par:{functionIndex:'l\x27index de la fonction pour laquelle l\x27information est d\xE9sir\xE9e, en commen\xE7ant \xE0 0 pour la premi\xE8re fonction.'},ret:'une cha\xEEne de caract\xE8res correspondant \xE0 la valeur publi\xE9e par la fonction d\xE9sir\xE9e',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un cha\xEEne vide.'};
+doc['Module']['get_allSettings']={syn:'Retourne tous les param\xE8tres de configuration du module.',lib:'module.get_allSettings()',pro:'def get_allSettings()',cmt:'<p>Retourne tous les param\xE8tres de configuration du module. Utile pour sauvgarder les noms logiques, les calibrations et fichies upload\xE9s d\x27un module.</p>',ret:'un objet binaire avec tous les param\xE8tres',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un objet binaire de taille 0.'};
+doc['Module']['get_beacon']={syn:'Retourne l\x27\xE9tat de la balise de localisation.',lib:'module.get_beacon()',pro:'def get_beacon()',cmt:'<p>Retourne l\x27\xE9tat de la balise de localisation.</p>',ret:'soit <tt>Y_BEACON_OFF</tt>, soit <tt>Y_BEACON_ON</tt>, selon l\x27\xE9tat de la balise de localisation',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_BEACON_INVALID</tt>.'};
+doc['Module']['get_errorMessage']={syn:'Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de l\x27objet module.',lib:'module.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de l\x27objet module. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'une cha\xEEne de caract\xE8res correspondant au message de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du module'};
+doc['Module']['get_errorType']={syn:'Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de l\x27objet module.',lib:'module.get_errorType()',pro:'def get_errorType()',cmt:'<p>Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de l\x27objet module. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'un nombre correspondant au code de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du module'};
+doc['Module']['get_firmwareRelease']={syn:'Retourne la version du logiciel embarqu\xE9 du module.',lib:'module.get_firmwareRelease()',pro:'def get_firmwareRelease()',cmt:'<p>Retourne la version du logiciel embarqu\xE9 du module.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la version du logiciel embarqu\xE9 du module',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_FIRMWARERELEASE_INVALID</tt>.'};
+doc['Module']['get_functionIds']={syn:'Retourne les identifiants mat\xE9riels des fonctions correspondant au type pass\xE9 en argument.',lib:'module.get_functionIds()',pro:'def get_functionIds(<span id=pn>funType</span>)',cmt:'<p>Retourne les identifiants mat\xE9riels des fonctions correspondant au type pass\xE9 en argument.</p>',par:{funType:'Le type de fonction (Relay, LightSensor, Voltage,...)'},ret:'un tableau de cha\xEEnes de caract\xE8re.'};
+doc['Module']['get_hardwareId']={syn:'Retourne l\x27identifiant unique du module.',lib:'module.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Retourne l\x27identifiant unique du module. L\x27identifiant unique est compos\xE9 du num\xE9ro de s\xE9rie du module suivi de la cha\xEEne \x22.module\x22.</p>',ret:'une cha\xEEne de caract\xE8res identifiant la fonction'};
+doc['Module']['get_icon2d']={syn:'Retourne l\x27ic\xF4ne du module.',lib:'module.get_icon2d()',pro:'def get_icon2d()',cmt:'<p>Retourne l\x27ic\xF4ne du module. L\x27icone est au format PNG et a une taille maximale de 1536 octets.</p>',ret:'un buffer binaire contenant l\x27icone, au format png. En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>YAPI_INVALID_STRING</tt>.'};
+doc['Module']['get_lastLogs']={syn:'Retourne une chaine de charact\xE8re contenant les derniers logs du module.',lib:'module.get_lastLogs()',pro:'def get_lastLogs()',cmt:'<p>Retourne une chaine de charact\xE8re contenant les derniers logs du module. Cette m\xE9thode retourne les derniers logs qui sont encore stock\xE9 dans le module.</p>',ret:'une cha\xEEne de caract\xE8re contenant les derniers logs du module. En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>YAPI_INVALID_STRING</tt>.'};
+doc['Module']['get_logicalName']={syn:'Retourne le nom logique du module.',lib:'module.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Retourne le nom logique du module.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant le nom logique du module',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['Module']['get_luminosity']={syn:'Retourne la luminosit\xE9 des leds informatives du module (valeur entre 0 et 100).',lib:'module.get_luminosity()',pro:'def get_luminosity()',cmt:'<p>Retourne la luminosit\xE9 des leds informatives du module (valeur entre 0 et 100).</p>',ret:'un entier repr&eacute;sentant la luminosit\xE9 des leds informatives du module (valeur entre 0 et 100)',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_LUMINOSITY_INVALID</tt>.'};
+doc['Module']['get_parentHub']={syn:'Retourne le num\xE9ro de s\xE9rie du YoctoHub sur lequel est connect\xE9 le module.',lib:'module.get_parentHub()',pro:'def get_parentHub()',cmt:'<p>Retourne le num\xE9ro de s\xE9rie du YoctoHub sur lequel est connect\xE9 le module. Si le module est connect\xE9 par USB, ou si le module est le YoctoHub racine, une cha\xEEne vide est retourn\xE9e.</p>',ret:'une cha\xEEne de caract\xE8res contenant le num\xE9ro de s\xE9rie du YoctoHub, ou une cha\xEEne vide.'};
+doc['Module']['get_persistentSettings']={syn:'Retourne l\x27\xE9tat courant des r\xE9glages persistents du module.',lib:'module.get_persistentSettings()',pro:'def get_persistentSettings()',cmt:'<p>Retourne l\x27\xE9tat courant des r\xE9glages persistents du module.</p>',ret:'une valeur parmi <tt>Y_PERSISTENTSETTINGS_LOADED</tt>, <tt>Y_PERSISTENTSETTINGS_SAVED</tt> et <tt>Y_PERSISTENTSETTINGS_MODIFIED</tt> repr&eacute;sentant l\x27\xE9tat courant des r\xE9glages persistents du module',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_PERSISTENTSETTINGS_INVALID</tt>.'};
+doc['Module']['get_productId']={syn:'Retourne l\x27identifiant USB du module, pr\xE9programm\xE9 en usine.',lib:'module.get_productId()',pro:'def get_productId()',cmt:'<p>Retourne l\x27identifiant USB du module, pr\xE9programm\xE9 en usine.</p>',ret:'un entier repr&eacute;sentant l\x27identifiant USB du module, pr\xE9programm\xE9 en usine',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_PRODUCTID_INVALID</tt>.'};
+doc['Module']['get_productName']={syn:'Retourne le nom commercial du module, pr\xE9programm\xE9 en usine.',lib:'module.get_productName()',pro:'def get_productName()',cmt:'<p>Retourne le nom commercial du module, pr\xE9programm\xE9 en usine.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant le nom commercial du module, pr\xE9programm\xE9 en usine',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_PRODUCTNAME_INVALID</tt>.'};
+doc['Module']['get_productRelease']={syn:'Retourne le num\xE9ro de version mat\xE9riel du module, pr\xE9programm\xE9 en usine.',lib:'module.get_productRelease()',pro:'def get_productRelease()',cmt:'<p>Retourne le num\xE9ro de version mat\xE9riel du module, pr\xE9programm\xE9 en usine.</p>',ret:'un entier repr&eacute;sentant le num\xE9ro de version mat\xE9riel du module, pr\xE9programm\xE9 en usine',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_PRODUCTRELEASE_INVALID</tt>.'};
+doc['Module']['get_rebootCountdown']={syn:'Retourne le nombre de secondes restantes avant un red\xE9marrage du module, ou z\xE9ro si aucun red\xE9marrage n\x27a \xE9t\xE9 agend\xE9.',lib:'module.get_rebootCountdown()',pro:'def get_rebootCountdown()',cmt:'<p>Retourne le nombre de secondes restantes avant un red\xE9marrage du module, ou z\xE9ro si aucun red\xE9marrage n\x27a \xE9t\xE9 agend\xE9.</p>',ret:'un entier repr&eacute;sentant le nombre de secondes restantes avant un red\xE9marrage du module, ou z\xE9ro si aucun red\xE9marrage n\x27a \xE9t\xE9 agend\xE9',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_REBOOTCOUNTDOWN_INVALID</tt>.'};
+doc['Module']['get_serialNumber']={syn:'Retourne le num\xE9ro de s\xE9rie du module, pr\xE9programm\xE9 en usine.',lib:'module.get_serialNumber()',pro:'def get_serialNumber()',cmt:'<p>Retourne le num\xE9ro de s\xE9rie du module, pr\xE9programm\xE9 en usine.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant le num\xE9ro de s\xE9rie du module, pr\xE9programm\xE9 en usine',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_SERIALNUMBER_INVALID</tt>.'};
+doc['Module']['get_subDevices']={syn:'Retourne la liste des modules branch\xE9s au module courant.',lib:'module.get_subDevices()',pro:'def get_subDevices()',cmt:'<p>Retourne la liste des modules branch\xE9s au module courant. Cette fonction n\x27est pertinente que lorsqu\x27elle appel\xE9e pour un YoctoHub ou pour le VirtualHub. Dans le cas contraire, un tableau vide est retourn\xE9.</p>',ret:'un tableau de cha\xEEnes de caract\xE8res contenant les num\xE9ros de s\xE9rie des sous-modules connect\xE9s au module'};
+doc['Module']['get_upTime']={syn:'Retourne le numbre de millisecondes \xE9coul\xE9es depuis la mise sous tension du module ',lib:'module.get_upTime()',pro:'def get_upTime()',cmt:'<p>Retourne le numbre de millisecondes \xE9coul\xE9es depuis la mise sous tension du module</p>',ret:'un entier repr&eacute;sentant le numbre de millisecondes \xE9coul\xE9es depuis la mise sous tension du module',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_UPTIME_INVALID</tt>.'};
+doc['Module']['get_url']={syn:'Retourne l\x27URL utilis\xE9e pour acc\xE9der au module.',lib:'module.get_url()',pro:'def get_url()',cmt:'<p>Retourne l\x27URL utilis\xE9e pour acc\xE9der au module. Si le module est connect\xE9 par USB la cha\xEEne de caract\xE8re \x27usb\x27 est retourn\xE9e.</p>',ret:'une cha\xEEne de caract\xE8re contenant l\x27URL du module.'};
+doc['Module']['get_usbCurrent']={syn:'Retourne le courant consomm\xE9 par le module sur le bus USB, en milliamp\xE8res.',lib:'module.get_usbCurrent()',pro:'def get_usbCurrent()',cmt:'<p>Retourne le courant consomm\xE9 par le module sur le bus USB, en milliamp\xE8res.</p>',ret:'un entier repr&eacute;sentant le courant consomm\xE9 par le module sur le bus USB, en milliamp\xE8res',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_USBCURRENT_INVALID</tt>.'};
+doc['Module']['get_userData']={syn:'Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>.',lib:'module.get_userData()',pro:'def get_userData()',cmt:'<p>Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',ret:'l\x27objet stock\xE9 pr\xE9c\xE9demment par l\x27appelant.'};
+doc['Module']['get_userVar']={syn:'Retourne la valeur enti\xE8re pr\xE9c\xE9demment stock\xE9e dans cet attribut.',lib:'module.get_userVar()',pro:'def get_userVar()',cmt:'<p>Retourne la valeur enti\xE8re pr\xE9c\xE9demment stock\xE9e dans cet attribut. Au d\xE9marrage du module (ou apr\xE8s un red\xE9marrage), la valeur est toujours z\xE9ro.</p>',ret:'un entier repr&eacute;sentant la valeur enti\xE8re pr\xE9c\xE9demment stock\xE9e dans cet attribut',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_USERVAR_INVALID</tt>.'};
+doc['Module']['hasFunction']={syn:'Teste la pr\xE9sence d\x27une fonction pour le module courant.',lib:'module.hasFunction()',pro:'def hasFunction(<span id=pn>funcId</span>)',cmt:'<p>Teste la pr\xE9sence d\x27une fonction pour le module courant. La m\xE9thode prend en param\xE8tre l\x27identifiant de la fonction (relay1, voltage2,...) et retourne un bool\xE9en.</p>',par:{funcId:'identifiant mat\xE9riel de la fonction'},ret:'vrai si le module inclut la fonction demand\xE9e'};
+doc['Module']['isOnline']={syn:'V\xE9rifie si le module est joignable, sans d\xE9clencher d\x27erreur.',lib:'module.isOnline()',pro:'def isOnline()',cmt:'<p>V\xE9rifie si le module est joignable, sans d\xE9clencher d\x27erreur. Si les valeurs des attributs du module en cache sont valides au moment de l\x27appel, le module est consid\xE9r\xE9 joignable. Cette fonction ne cause en aucun cas d\x27exception, quelle que soit l\x27erreur qui pourrait se produire lors de la v\xE9rification de joignabilit\xE9.</p>',ret:'<tt>true</tt> si le module est joignable, <tt>false</tt> sinon'};
+doc['Module']['load']={syn:'Met en cache les valeurs courantes du module, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e.',lib:'module.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Met en cache les valeurs courantes du module, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e. Par d\xE9faut, lorsqu\x27on acc\xE8de \xE0 un module, tous les attributs des fonctions du module sont automatiquement mises en cache pour la dur\xE9e standard (5 ms). Cette m\xE9thode peut \xEAtre utilis\xE9e pour marquer occasionnellement les donn\xE9es cach\xE9es comme valides pour une plus longue p\xE9riode, par exemple dans le but de r\xE9duire le trafic r\xE9seau.</p>',par:{msValidity:'un entier correspondant \xE0 la dur\xE9e de validit\xE9 attribu\xE9e aux les param\xE8tres charg\xE9s, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Module']['log']={syn:'Ajoute un message arbitraire dans les logs du module.',lib:'module.log()',pro:'def log(<span id=pn>text</span>)',cmt:'<p>Ajoute un message arbitraire dans les logs du module. Cette fonction est utile en particulier pour tracer l\x27ex\xE9cution de callbacks HTTP. Si un saut de ligne est d\xE9sir\xE9 apr\xE8s le message, il doit \xEAtre inclus dans la cha\xEEne de caract\xE8re.</p>',par:{text:'le message \xE0 ajouter aux logs du module.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Module']['nextModule']={syn:'Continue l\x27\xE9num\xE9ration des modules commenc\xE9e \xE0 l\x27aide de <tt>yFirstModule()</tt>.',lib:'module.nextModule()',pro:'def nextModule()',cmt:'<p>Continue l\x27\xE9num\xE9ration des modules commenc\xE9e \xE0 l\x27aide de <tt>yFirstModule()</tt>.</p>',ret:'un pointeur sur un objet <tt>YModule</tt> accessible en ligne, ou <tt>null</tt> lorsque l\x27\xE9num\xE9ration est termin\xE9e.'};
+doc['Module']['reboot']={syn:'Agende un simple red\xE9marrage du module dans un nombre donn\xE9 de secondes.',lib:'module.reboot()',pro:'def reboot(<span id=pn>secBeforeReboot</span>)',cmt:'<p>Agende un simple red\xE9marrage du module dans un nombre donn\xE9 de secondes.</p>',par:{secBeforeReboot:'nombre de secondes avant de red\xE9marrer'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Module']['registerLogCallback']={syn:'Enregistre une fonction de callback qui sera appel\xE9e \xE0 chaque fois le module \xE9met un message de log.',lib:'module.registerLogCallback()',pro:'def registerLogCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre une fonction de callback qui sera appel\xE9e \xE0 chaque fois le module \xE9met un message de log. Utile pour d\xE9bugger le fonctionnement d\x27un module Yoctopuce.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27objet module qui a produit un log, un cha\xEEne de caract\xE8re qui contiens le log'}};
+doc['Module']['revertFromFlash']={syn:'Recharge les r\xE9glages stock\xE9s dans le m\xE9moire non volatile du module, comme \xE0 la mise sous tension du module.',lib:'module.revertFromFlash()',pro:'def revertFromFlash()',cmt:'<p>Recharge les r\xE9glages stock\xE9s dans le m\xE9moire non volatile du module, comme \xE0 la mise sous tension du module.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Module']['saveToFlash']={syn:'Sauve les r\xE9glages courants dans la m\xE9moire non volatile du module.',lib:'module.saveToFlash()',pro:'def saveToFlash()',cmt:'<p>Sauve les r\xE9glages courants dans la m\xE9moire non volatile du module. Attention le nombre total de sauvegardes possibles durant la vie du module est limit\xE9 (environ 100000 cycles). N\x27appelez pas cette fonction dans une boucle.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Module']['set_allSettings']={syn:'R\xE9tablit tous les param\xE8tres du module.',lib:'module.set_allSettings()',pro:'def set_allSettings(<span id=pn>settings</span>)',cmt:'<p>R\xE9tablit tous les param\xE8tres du module. Utile pour restorer les noms logiques et les calibrations du module depuis une sauvgarde. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si les r\xE9glages doivent \xEAtre pr\xE9serv\xE9s.</p>',par:{settings:'un objet binaire avec touts les param\xE8tres'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Module']['set_allSettingsAndFiles']={syn:'R\xE9tablit tous les param\xE8tres de configuration et fichiers sur un module.',lib:'module.set_allSettingsAndFiles()',pro:'def set_allSettingsAndFiles(<span id=pn>settings</span>)',cmt:'<p>R\xE9tablit tous les param\xE8tres de configuration et fichiers sur un module. Cette m\xE9thode est utile pour r\xE9cup\xE9rer les noms logiques, les calibrations, les fichiers upload\xE9s, etc. du module depuis une sauvgarde. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si les r\xE9glages doivent \xEAtre pr\xE9serv\xE9s.</p>',par:{settings:'un buffer binaire avec touts les param\xE8tres'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Module']['set_beacon']={syn:'Allume ou \xE9teint la balise de localisation du module.',lib:'module.set_beacon()',pro:'def set_beacon(<span id=pn>newval</span>)',cmt:'<p>Allume ou \xE9teint la balise de localisation du module.</p>',par:{newval:'soit <tt>Y_BEACON_OFF</tt>, soit <tt>Y_BEACON_ON</tt>'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Module']['set_logicalName']={syn:'Change le nom logique du module.',lib:'module.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Change le nom logique du module. Vous pouvez utiliser <tt>yCheckLogicalName()</tt> pour v\xE9rifier si votre param\xE8tre est valide. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Module']['set_luminosity']={syn:'Modifie la luminosit\xE9 des leds informatives du module.',lib:'module.set_luminosity()',pro:'def set_luminosity(<span id=pn>newval</span>)',cmt:'<p>Modifie la luminosit\xE9 des leds informatives du module. Le param\xEAtre est une valeur entre 0 et 100. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'un entier repr&eacute;sentant la luminosit\xE9 des leds informatives du module'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Module']['set_userData']={syn:'Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>.',lib:'module.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',par:{data:'objet quelconque \xE0 m\xE9moriser'}};
+doc['Module']['set_userVar']={syn:'Retourne la valeur enti\xE8re pr\xE9c\xE9demment stock\xE9e dans cet attribut.',lib:'module.set_userVar()',pro:'def set_userVar(<span id=pn>newval</span>)',cmt:'<p>Retourne la valeur enti\xE8re pr\xE9c\xE9demment stock\xE9e dans cet attribut. Au d\xE9marrage du module (ou apr\xE8s un red\xE9marrage), la valeur est toujours z\xE9ro.</p>',par:{newval:'un entier'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Module']['triggerFirmwareUpdate']={syn:'Agende un red\xE9marrage du module en mode sp\xE9cial de reprogrammation du logiciel embarqu\xE9.',lib:'module.triggerFirmwareUpdate()',pro:'def triggerFirmwareUpdate(<span id=pn>secBeforeReboot</span>)',cmt:'<p>Agende un red\xE9marrage du module en mode sp\xE9cial de reprogrammation du logiciel embarqu\xE9.</p>',par:{secBeforeReboot:'nombre de secondes avant de red\xE9marrer'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Module']['updateFirmware']={syn:'Prepare une mise \xE0 jour de firmware du module.',lib:'module.updateFirmware()',pro:'def updateFirmware(<span id=pn>path</span>)',cmt:'<p>Prepare une mise \xE0 jour de firmware du module. Cette m\xE9thode retourne un object <tt>YFirmwareUpdate</tt> qui est utilis\xE9 pour mettre \xE0 jour le firmware du module.</p>',par:{path:'le path du fichier <tt>.byn</tt> \xE0 utiliser'},ret:'un object <tt>YFirmwareUpdate</tt> ou NULL en cas d\x27erreur'};
+doc['Module']['updateFirmwareEx']={syn:'Prepare une mise \xE0 jour de firmware du module.',lib:'module.updateFirmwareEx()',pro:'def updateFirmwareEx(<span id=pn>path</span>, <span id=pn>force</span>)',cmt:'<p>Prepare une mise \xE0 jour de firmware du module. Cette m\xE9thode retourne un object <tt>YFirmwareUpdate</tt> qui est utilis\xE9 pour mettre \xE0 jour le firmware du module.</p>',par:{path:'le path du fichier <tt>.byn</tt> \xE0 utiliser',force:'vrai pour forceer la mise \xE0 jour m\xEAme si un pr\xE9requis ne semble pas satisfait'},ret:'un object <tt>YFirmwareUpdate</tt> ou NULL en cas d\x27erreur'};
+//--- (end of generated code: Module)
+//--- (generated code: ColorLed)
+doc['ColorLed']={'':{syn:'Interface de la fonction ColorLed',inc:'from yocto_colorled import *',cmt:'<p>La librairie de programmation Yoctopuce permet de piloter une LED couleur aussi bien en coordonn\xE9es RGB qu\x27en coordonn\xE9es HSL, les conversions RGB vers HSL \xE9tant faites automatiquement par le module. Ceci permet ais\xE9ment d\x27allumer la LED avec une certaine teinte et d\x27en faire progressivement varier la saturation ou la luminosit\xE9. Si n\xE9cessaire, vous trouverez plus d\x27information sur la diff\xE9rence entre RGB et HSL dans la section suivante.</p>'}};
+doc['ColorLed']['FindColorLed']={syn:'Permet de retrouver une LED RGB d\x27apr\xE8s un identifiant donn\xE9.',lib:'YColorLed.FindColorLed()',pro:'def FindColorLed(<span id=pn>func</span>)',cmt:'<p>Permet de retrouver une LED RGB d\x27apr\xE8s un identifiant donn\xE9. L\x27identifiant peut \xEAtre sp\xE9cifi\xE9 sous plusieurs formes:<br> <ul> <li>NomLogiqueFonction</li> <li>NoSerieModule.IdentifiantFonction</li> <li>NoSerieModule.NomLogiqueFonction</li> <li>NomLogiqueModule.IdentifiantMat\xE9riel</li> <li>NomLogiqueModule.NomLogiqueFonction</li> </ul></p><p> Cette fonction n\x27exige pas que la LED RGB soit en ligne au moment ou elle est appel\xE9e, l\x27objet retourn\xE9 sera n\xE9anmoins valide. Utiliser la m\xE9thode <tt>YColorLed.isOnline()</tt> pour tester si la LED RGB est utilisable \xE0 un moment donn\xE9. En cas d\x27ambigu\xEFt\xE9 lorsqu\x27on fait une recherche par nom logique, aucune erreur ne sera notifi\xE9e: la premi\xE8re instance trouv\xE9e sera renvoy\xE9e. La recherche se fait d\x27abord par nom mat\xE9riel, puis par nom logique.</p>',par:{func:'une cha\xEEne de caract\xE8res qui r\xE9f\xE9rence la LED RGB sans ambigu\xEFt\xE9'},ret:'un objet de classe <tt>YColorLed</tt> qui permet ensuite de contr\xF4ler la LED RGB.'};
+doc['ColorLed']['FirstColorLed']={syn:'Commence l\x27\xE9num\xE9ration des LEDs RGB accessibles par la librairie.',lib:'YColorLed.FirstColorLed()',pro:'def FirstColorLed()',cmt:'<p>Commence l\x27\xE9num\xE9ration des LEDs RGB accessibles par la librairie. Utiliser la fonction <tt>YColorLed.nextColorLed()</tt> pour it\xE9rer sur les autres LEDs RGB.</p>',ret:'un pointeur sur un objet <tt>YColorLed</tt>, correspondant \xE0 la premi\xE8re LED RGB accessible en ligne, ou <tt>null</tt> si il n\x27y a pas de LEDs RGB disponibles.'};
+doc['ColorLed']['addHslMoveToBlinkSeq']={syn:'Ajoute une transition \xE0 la s\xE9quence de clignotement du module, la transition s\x27effectuera dans l\x27espace de couleur HSL.',lib:'colorled.addHslMoveToBlinkSeq()',pro:'def addHslMoveToBlinkSeq(<span id=pn>HSLcolor</span>, <span id=pn>msDelay</span>)',cmt:'<p>Ajoute une transition \xE0 la s\xE9quence de clignotement du module, la transition s\x27effectuera dans l\x27espace de couleur HSL.</p>',par:{HSLcolor:'couleur HSL d\xE9sir\xE9e \xE0 la fin de la transition',msDelay:'dur\xE9e en millisecondes de la transition.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur. En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['ColorLed']['addRgbMoveToBlinkSeq']={syn:'Ajoute une transition \xE0 la s\xE9quence de clignotement du module, la transition s\x27effectuera dans l\x27espace de couleur RGB ',lib:'colorled.addRgbMoveToBlinkSeq()',pro:'def addRgbMoveToBlinkSeq(<span id=pn>RGBcolor</span>, <span id=pn>msDelay</span>)',cmt:'<p>Ajoute une transition \xE0 la s\xE9quence de clignotement du module, la transition s\x27effectuera dans l\x27espace de couleur RGB</p>',par:{RGBcolor:'couleur RGB d\xE9sir\xE9e \xE0 la fin de la transition',msDelay:'dur\xE9e en millisecondes de la transition.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur. En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['ColorLed']['clearCache']={syn:'Invalide le cache.',lib:'colorled.clearCache()',pro:'def clearCache()',cmt:'<p>Invalide le cache. Invalide le cache des valeurs courantes de la LED RGB. Force le prochain appel \xE0 une m\xE9thode get_xxx() ou loadxxx() pour charger les les donn\xE9es depuis le module.</p>'};
+doc['ColorLed']['describe']={syn:'Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance de la LED RGB au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'colorled.describe()',pro:'def describe()',cmt:'<p>Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance de la LED RGB au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. Plus pr\xE9cis\xE9ment, <tt>TYPE</tt> correspond au type de fonction, <tt>NAME</tt> correspond au nom utils\xE9 lors du premier acc\xE8s a la fonction, <tt>SERIAL</tt> correspond au num\xE9ro de s\xE9rie du module si le module est connect\xE9, ou <tt>\x22unresolved\x22</tt> sinon, et <tt>FUNCTIONID</tt> correspond \xE0 l\x27identifiant mat\xE9riel de la fonction si le module est connect\xE9. Par exemple, La methode va retourner <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> si le module est d\xE9j\xE0 connect\xE9 ou <tt>Relay(BadCustomeName.relay1)=unresolved</tt> si le module n\x27est pas d\xE9j\xE0 connect\xE9. Cette methode ne declenche aucune transaction USB ou TCP et peut donc \xEAtre utilis\xE9 dans un debuggeur.</p>',ret:'une cha\xEEne de caract\xE8res d\xE9crivant la LED RGB (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['ColorLed']['get_advertisedValue']={syn:'Retourne la valeur courante de la LED RGB (pas plus de 6 caract\xE8res).',lib:'colorled.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Retourne la valeur courante de la LED RGB (pas plus de 6 caract\xE8res).</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur courante de la LED RGB (pas plus de 6 caract\xE8res).',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['ColorLed']['get_blinkSeqMaxSize']={syn:'Retourne la longueur maximum de la sequence de clignotement.',lib:'colorled.get_blinkSeqMaxSize()',pro:'def get_blinkSeqMaxSize()',cmt:'<p>Retourne la longueur maximum de la sequence de clignotement.</p>',ret:'un entier repr&eacute;sentant la longueur maximum de la sequence de clignotement',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_BLINKSEQMAXSIZE_INVALID</tt>.'};
+doc['ColorLed']['get_blinkSeqSignature']={syn:'Retourne la signature de la signature de la s\xE9quence de clignotement.',lib:'colorled.get_blinkSeqSignature()',pro:'def get_blinkSeqSignature()',cmt:'<p>Retourne la signature de la signature de la s\xE9quence de clignotement. Les s\xE9quences de clignotement ne pouvant pas \xEAtre relues du module, ce m\xE9canisme peut \xEAtre utilis\xE9 pour d\xE9tecter si une s\xE9quence sp\xE9cifique est d\xE9ja programm\xE9e.</p>',ret:'un entier repr&eacute;sentant la signature de la signature de la s\xE9quence de clignotement',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_BLINKSEQSIGNATURE_INVALID</tt>.'};
+doc['ColorLed']['get_blinkSeqSize']={syn:'Retourne la longueur actuelle de la sequence de clignotement.',lib:'colorled.get_blinkSeqSize()',pro:'def get_blinkSeqSize()',cmt:'<p>Retourne la longueur actuelle de la sequence de clignotement.</p>',ret:'un entier repr&eacute;sentant la longueur actuelle de la sequence de clignotement',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_BLINKSEQSIZE_INVALID</tt>.'};
+doc['ColorLed']['get_errorMessage']={syn:'Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de la LED RGB.',lib:'colorled.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de la LED RGB. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'une cha\xEEne de caract\xE8res correspondant au message de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation de la LED RGB.'};
+doc['ColorLed']['get_errorType']={syn:'Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de la LED RGB.',lib:'colorled.get_errorType()',pro:'def get_errorType()',cmt:'<p>Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de la LED RGB. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'un nombre correspondant au code de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation de la LED RGB.'};
+doc['ColorLed']['get_friendlyName']={syn:'Retourne un identifiant global de la LED RGB au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>.',lib:'colorled.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Retourne un identifiant global de la LED RGB au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>. Le cha\xEEne retourn\xE9e utilise soit les noms logiques du module et de la LED RGB si ils sont d\xE9finis, soit respectivement le num\xE9ro de s\xE9rie du module et l\x27identifant mat\xE9riel de la LED RGB (par exemple: <tt>MyCustomName.relay1</tt>)</p>',ret:'une cha\xEEne de caract\xE8res identifiant la LED RGB en utilisant les noms logiques (ex: <tt>MyCustomName.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['ColorLed']['get_functionDescriptor']={syn:'Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction.',lib:'colorled.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction. Cet identifiant peut \xEAtre utilis\xE9 pour tester si deux instance de <tt>YFunction</tt> r\xE9f\xE9rencent physiquement la m\xEAme fonction sur le m\xEAme module.</p>',ret:'un identifiant de type <tt>YFUN_DESCR</tt>.',ext:'Si la fonction n\x27a jamais \xE9t\xE9 contact\xE9e, la valeur retourn\xE9e sera <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>'};
+doc['ColorLed']['get_functionId']={syn:'Retourne l\x27identifiant mat\xE9riel de la LED RGB, sans r\xE9f\xE9rence au module.',lib:'colorled.get_functionId()',pro:'def get_functionId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel de la LED RGB, sans r\xE9f\xE9rence au module. Par example <tt>relay1</tt>.</p>',ret:'une cha\xEEne de caract\xE8res identifiant la LED RGB (ex: <tt>relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['ColorLed']['get_hardwareId']={syn:'Retourne l\x27identifiant mat\xE9riel unique de la LED RGB au format <tt>SERIAL.FUNCTIONID</tt>.',lib:'colorled.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel unique de la LED RGB au format <tt>SERIAL.FUNCTIONID</tt>. L\x27identifiant unique est compos\xE9 du num\xE9ro de s\xE9rie du module et de l\x27identifiant mat\xE9riel de la LED RGB (par example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'une cha\xEEne de caract\xE8res identifiant la LED RGB (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['ColorLed']['get_hslColor']={syn:'Retourne la couleur HSL courante de la LED.',lib:'colorled.get_hslColor()',pro:'def get_hslColor()',cmt:'<p>Retourne la couleur HSL courante de la LED.</p>',ret:'un entier repr&eacute;sentant la couleur HSL courante de la LED',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_HSLCOLOR_INVALID</tt>.'};
+doc['ColorLed']['get_logicalName']={syn:'Retourne le nom logique de la LED RGB.',lib:'colorled.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Retourne le nom logique de la LED RGB.</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique de la LED RGB.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['ColorLed']['get_module']={syn:'Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction.',lib:'colorled.get_module()',pro:'def get_module()',cmt:'<p>Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction. Si la fonction ne peut \xEAtre trouv\xE9e sur aucun module, l\x27instance de <tt>YModule</tt> retourn\xE9e ne sera pas joignable.</p>',ret:'une instance de <tt>YModule</tt>'};
+doc['ColorLed']['get_rgbColor']={syn:'Retourne la couleur RGB courante de la LED.',lib:'colorled.get_rgbColor()',pro:'def get_rgbColor()',cmt:'<p>Retourne la couleur RGB courante de la LED.</p>',ret:'un entier repr&eacute;sentant la couleur RGB courante de la LED',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_RGBCOLOR_INVALID</tt>.'};
+doc['ColorLed']['get_rgbColorAtPowerOn']={syn:'Retourne la couleur configur\xE9e pour \xEAtre affichage \xE0 l\x27allumage du module.',lib:'colorled.get_rgbColorAtPowerOn()',pro:'def get_rgbColorAtPowerOn()',cmt:'<p>Retourne la couleur configur\xE9e pour \xEAtre affichage \xE0 l\x27allumage du module.</p>',ret:'un entier repr&eacute;sentant la couleur configur\xE9e pour \xEAtre affichage \xE0 l\x27allumage du module',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_RGBCOLORATPOWERON_INVALID</tt>.'};
+doc['ColorLed']['get_userData']={syn:'Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>.',lib:'colorled.get_userData()',pro:'def get_userData()',cmt:'<p>Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',ret:'l\x27objet stock\xE9 pr\xE9c\xE9demment par l\x27appelant.'};
+doc['ColorLed']['hslMove']={syn:'Effectue une transition continue dans l\x27espace HSL entre la couleur courante et une nouvelle couleur.',lib:'colorled.hslMove()',pro:'def hslMove(<span id=pn>hsl_target</span>, <span id=pn>ms_duration</span>)',cmt:'<p>Effectue une transition continue dans l\x27espace HSL entre la couleur courante et une nouvelle couleur.</p>',par:{hsl_target:'couleur HSL d\xE9sir\xE9e \xE0 la fin de la transition',ms_duration:'dur\xE9e de la transition, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['ColorLed']['isOnline']={syn:'V\xE9rifie si le module h\xE9bergeant la LED RGB est joignable, sans d\xE9clencher d\x27erreur.',lib:'colorled.isOnline()',pro:'def isOnline()',cmt:'<p>V\xE9rifie si le module h\xE9bergeant la LED RGB est joignable, sans d\xE9clencher d\x27erreur. Si les valeurs des attributs en cache de la LED RGB sont valides au moment de l\x27appel, le module est consid\xE9r\xE9 joignable. Cette fonction ne cause en aucun cas d\x27exception, quelle que soit l\x27erreur qui pourrait se produire lors de la v\xE9rification de joignabilit\xE9.</p>',ret:'<tt>true</tt> si la LED RGB est joignable, <tt>false</tt> sinon'};
+doc['ColorLed']['load']={syn:'Met en cache les valeurs courantes de la LED RGB, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e.',lib:'colorled.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Met en cache les valeurs courantes de la LED RGB, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e. Par d\xE9faut, lorsqu\x27on acc\xE8de \xE0 un module, tous les attributs des fonctions du module sont automatiquement mises en cache pour la dur\xE9e standard (5 ms). Cette m\xE9thode peut \xEAtre utilis\xE9e pour marquer occasionellement les donn\xE9es cach\xE9es comme valides pour une plus longue p\xE9riode, par exemple dans le but de r\xE9duire le trafic r\xE9seau.</p>',par:{msValidity:'un entier correspondant \xE0 la dur\xE9e de validit\xE9 attribu\xE9e aux les param\xE8tres charg\xE9s, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['ColorLed']['loadAttribute']={syn:'Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.',lib:'colorled.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un cha\xEEne vide.'};
+doc['ColorLed']['muteValueCallbacks']={syn:'D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'colorled.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Vous pouvez utiliser cette fonction pour \xE9conomiser la bande passante et le CPU sur les machines de faible puissance, ou pour \xE9viter le d\xE9clanchement de callbacks HTTP. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['ColorLed']['nextColorLed']={syn:'Continue l\x27\xE9num\xE9ration des LEDs RGB commenc\xE9e \xE0 l\x27aide de <tt>yFirstColorLed()</tt>.',lib:'colorled.nextColorLed()',pro:'def nextColorLed()',cmt:'<p>Continue l\x27\xE9num\xE9ration des LEDs RGB commenc\xE9e \xE0 l\x27aide de <tt>yFirstColorLed()</tt>.</p>',ret:'un pointeur sur un objet <tt>YColorLed</tt> accessible en ligne, ou <tt>null</tt> lorsque l\x27\xE9num\xE9ration est termin\xE9e.'};
+doc['ColorLed']['registerValueCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e.',lib:'colorled.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callback peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callback ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et la cha\xEEne de caract\xE8re d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['ColorLed']['resetBlinkSeq']={syn:'efface le contenu de la sequence de clignotement.',lib:'colorled.resetBlinkSeq()',pro:'def resetBlinkSeq()',cmt:'<p>efface le contenu de la sequence de clignotement.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur. En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['ColorLed']['rgbMove']={syn:'Effectue une transition continue dans l\x27espace RGB entre la couleur courante et une nouvelle couleur.',lib:'colorled.rgbMove()',pro:'def rgbMove(<span id=pn>rgb_target</span>, <span id=pn>ms_duration</span>)',cmt:'<p>Effectue une transition continue dans l\x27espace RGB entre la couleur courante et une nouvelle couleur.</p>',par:{rgb_target:'couleur RGB d\xE9sir\xE9e \xE0 la fin de la transition',ms_duration:'dur\xE9e de la transition, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['ColorLed']['set_hslColor']={syn:'Modifie la couleur courante de la LED, en utilisant une couleur HSL sp\xE9cifi\xE9e.',lib:'colorled.set_hslColor()',pro:'def set_hslColor(<span id=pn>newval</span>)',cmt:'<p>Modifie la couleur courante de la LED, en utilisant une couleur HSL sp\xE9cifi\xE9e. L\x27encodage est r\xE9alis\xE9 de la mani\xE8re suivante: 0xHHSSLL.</p>',par:{newval:'un entier repr&eacute;sentant la couleur courante de la LED, en utilisant une couleur HSL sp\xE9cifi\xE9e'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['ColorLed']['set_logicalName']={syn:'Modifie le nom logique de la LED RGB.',lib:'colorled.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Modifie le nom logique de la LED RGB. Vous pouvez utiliser <tt>yCheckLogicalName()</tt> pour v\xE9rifier si votre param\xE8tre est valide. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique de la LED RGB.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27appel se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['ColorLed']['set_rgbColor']={syn:'Modifie la couleur courante de la LED, en utilisant une couleur RGB (Rouge Vert Bleu).',lib:'colorled.set_rgbColor()',pro:'def set_rgbColor(<span id=pn>newval</span>)',cmt:'<p>Modifie la couleur courante de la LED, en utilisant une couleur RGB (Rouge Vert Bleu). L\x27encodage est r\xE9alis\xE9 de la mani\xE8re suivante: 0xRRGGBB.</p>',par:{newval:'un entier repr&eacute;sentant la couleur courante de la LED, en utilisant une couleur RGB (Rouge Vert Bleu)'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['ColorLed']['set_rgbColorAtPowerOn']={syn:'Modifie la couleur que la LED va afficher \xE0 l\x27allumage du module.',lib:'colorled.set_rgbColorAtPowerOn()',pro:'def set_rgbColorAtPowerOn(<span id=pn>newval</span>)',cmt:'<p>Modifie la couleur que la LED va afficher \xE0 l\x27allumage du module.</p>',par:{newval:'un entier repr&eacute;sentant la couleur que la LED va afficher \xE0 l\x27allumage du module'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['ColorLed']['set_userData']={syn:'Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>.',lib:'colorled.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',par:{data:'objet quelconque \xE0 m\xE9moriser'}};
+doc['ColorLed']['startBlinkSeq']={syn:'D\xE9marre l\x27ex\xE9cution de la s\xE9quence pr\xE9programm\xE9e de clignotement.',lib:'colorled.startBlinkSeq()',pro:'def startBlinkSeq()',cmt:'<p>D\xE9marre l\x27ex\xE9cution de la s\xE9quence pr\xE9programm\xE9e de clignotement. La s\xE9quence va tourner en boucle jusqu\x27\xE0 ce qu\x27elle soit stopp\xE9e par stopBlinkSeq ou un changement explicite.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur. En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['ColorLed']['stopBlinkSeq']={syn:'Arr\xEAte l\x27ex\xE9cution de la s\xE9quence pr\xE9programm\xE9e de clignotement.',lib:'colorled.stopBlinkSeq()',pro:'def stopBlinkSeq()',cmt:'<p>Arr\xEAte l\x27ex\xE9cution de la s\xE9quence pr\xE9programm\xE9e de clignotement.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur. En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['ColorLed']['unmuteValueCallbacks']={syn:'R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'colorled.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Cette fonction annule un pr\xE9c\xE9dent appel \xE0 <tt>muteValueCallbacks()</tt>. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+//--- (end of generated code: ColorLed)
+//--- (generated code: Temperature)
+doc['Temperature']={'':{syn:'Interface de la fonction Temperature',inc:'from yocto_temperature import *',cmt:'<p>La classe YTemperature permet de lire et de configurer les capteurs de temp\xE9rature Yoctopuce. Elle h\xE9rite de la class YSensor toutes les fonctions de base des capteurs Yoctopuce: lecture de mesures, callbacks, enregistreur de donn\xE9es. De plus, elle permet de configurer les param\xE8tres sp\xE9cifiques de certains types de capteur (type de connection, table d\x27\xE9talonnage).</p>'}};
+doc['Temperature']['FindTemperature']={syn:'Permet de retrouver un capteur de temp\xE9rature d\x27apr\xE8s un identifiant donn\xE9.',lib:'YTemperature.FindTemperature()',pro:'def FindTemperature(<span id=pn>func</span>)',cmt:'<p>Permet de retrouver un capteur de temp\xE9rature d\x27apr\xE8s un identifiant donn\xE9. L\x27identifiant peut \xEAtre sp\xE9cifi\xE9 sous plusieurs formes:<br> <ul> <li>NomLogiqueFonction</li> <li>NoSerieModule.IdentifiantFonction</li> <li>NoSerieModule.NomLogiqueFonction</li> <li>NomLogiqueModule.IdentifiantMat\xE9riel</li> <li>NomLogiqueModule.NomLogiqueFonction</li> </ul></p><p> Cette fonction n\x27exige pas que le capteur de temp\xE9rature soit en ligne au moment ou elle est appel\xE9e, l\x27objet retourn\xE9 sera n\xE9anmoins valide. Utiliser la m\xE9thode <tt>YTemperature.isOnline()</tt> pour tester si le capteur de temp\xE9rature est utilisable \xE0 un moment donn\xE9. En cas d\x27ambigu\xEFt\xE9 lorsqu\x27on fait une recherche par nom logique, aucune erreur ne sera notifi\xE9e: la premi\xE8re instance trouv\xE9e sera renvoy\xE9e. La recherche se fait d\x27abord par nom mat\xE9riel, puis par nom logique.</p>',par:{func:'une cha\xEEne de caract\xE8res qui r\xE9f\xE9rence le capteur de temp\xE9rature sans ambigu\xEFt\xE9'},ret:'un objet de classe <tt>YTemperature</tt> qui permet ensuite de contr\xF4ler le capteur de temp\xE9rature.'};
+doc['Temperature']['FirstTemperature']={syn:'Commence l\x27\xE9num\xE9ration des capteurs de temp\xE9rature accessibles par la librairie.',lib:'YTemperature.FirstTemperature()',pro:'def FirstTemperature()',cmt:'<p>Commence l\x27\xE9num\xE9ration des capteurs de temp\xE9rature accessibles par la librairie. Utiliser la fonction <tt>YTemperature.nextTemperature()</tt> pour it\xE9rer sur les autres capteurs de temp\xE9rature.</p>',ret:'un pointeur sur un objet <tt>YTemperature</tt>, correspondant au premier capteur de temp\xE9rature accessible en ligne, ou <tt>null</tt> si il n\x27y a pas de capteurs de temp\xE9rature disponibles.'};
+doc['Temperature']['calibrateFromPoints']={syn:'Enregistre des points de correction de mesure, typiquement pour compenser l\x27effet d\x27un bo\xEEtier sur les mesures rendues par le capteur.',lib:'temperature.calibrateFromPoints()',pro:'def calibrateFromPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Enregistre des points de correction de mesure, typiquement pour compenser l\x27effet d\x27un bo\xEEtier sur les mesures rendues par le capteur. Il est possible d\x27enregistrer jusqu\x27\xE0 cinq points de correction. Les points de correction doivent \xEAtre fournis en ordre croissant, et dans la plage valide du capteur. Le module effectue automatiquement une interpolation lin\xE9aire de l\x27erreur entre les points sp\xE9cifi\xE9s. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p><p> Pour plus de plus amples possibilit\xE9s d\x27appliquer une surcalibration aux capteurs, veuillez contacter support@yoctopuce.com.</p>',par:{rawValues:'tableau de nombres flottants, correspondant aux valeurs brutes rendues par le capteur pour les points de correction.',refValues:'tableau de nombres flottants, correspondant aux valeurs corrig\xE9es d\xE9sir\xE9es pour les points de correction.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Temperature']['clearCache']={syn:'Invalide le cache.',lib:'temperature.clearCache()',pro:'def clearCache()',cmt:'<p>Invalide le cache. Invalide le cache des valeurs courantes du capteur de temp\xE9rature. Force le prochain appel \xE0 une m\xE9thode get_xxx() ou loadxxx() pour charger les les donn\xE9es depuis le module.</p>'};
+doc['Temperature']['describe']={syn:'Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du capteur de temp\xE9rature au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'temperature.describe()',pro:'def describe()',cmt:'<p>Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du capteur de temp\xE9rature au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. Plus pr\xE9cis\xE9ment, <tt>TYPE</tt> correspond au type de fonction, <tt>NAME</tt> correspond au nom utils\xE9 lors du premier acc\xE8s a la fonction, <tt>SERIAL</tt> correspond au num\xE9ro de s\xE9rie du module si le module est connect\xE9, ou <tt>\x22unresolved\x22</tt> sinon, et <tt>FUNCTIONID</tt> correspond \xE0 l\x27identifiant mat\xE9riel de la fonction si le module est connect\xE9. Par exemple, La methode va retourner <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> si le module est d\xE9j\xE0 connect\xE9 ou <tt>Relay(BadCustomeName.relay1)=unresolved</tt> si le module n\x27est pas d\xE9j\xE0 connect\xE9. Cette methode ne declenche aucune transaction USB ou TCP et peut donc \xEAtre utilis\xE9 dans un debuggeur.</p>',ret:'une cha\xEEne de caract\xE8res d\xE9crivant le capteur de temp\xE9rature (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['Temperature']['get_advertisedValue']={syn:'Retourne la valeur courante du capteur de temp\xE9rature (pas plus de 6 caract\xE8res).',lib:'temperature.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Retourne la valeur courante du capteur de temp\xE9rature (pas plus de 6 caract\xE8res).</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur courante du capteur de temp\xE9rature (pas plus de 6 caract\xE8res).',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['Temperature']['get_currentRawValue']={syn:'Retourne la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en degr\xE9s Celsius, sous forme de nombre \xE0 virgule.',lib:'temperature.get_currentRawValue()',pro:'def get_currentRawValue()',cmt:'<p>Retourne la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en degr\xE9s Celsius, sous forme de nombre \xE0 virgule.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en degr\xE9s Celsius, sous forme de nombre \xE0 virgule',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_CURRENTRAWVALUE_INVALID</tt>.'};
+doc['Temperature']['get_currentValue']={syn:'Retourne la valeur actuelle de la temp\xE9rature, en degr\xE9s Celsius, sous forme de nombre \xE0 virgule.',lib:'temperature.get_currentValue()',pro:'def get_currentValue()',cmt:'<p>Retourne la valeur actuelle de la temp\xE9rature, en degr\xE9s Celsius, sous forme de nombre \xE0 virgule.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur actuelle de la temp\xE9rature, en degr\xE9s Celsius, sous forme de nombre \xE0 virgule',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_CURRENTVALUE_INVALID</tt>.'};
+doc['Temperature']['get_errorMessage']={syn:'Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du capteur de temp\xE9rature.',lib:'temperature.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du capteur de temp\xE9rature. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'une cha\xEEne de caract\xE8res correspondant au message de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du capteur de temp\xE9rature.'};
+doc['Temperature']['get_errorType']={syn:'Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du capteur de temp\xE9rature.',lib:'temperature.get_errorType()',pro:'def get_errorType()',cmt:'<p>Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du capteur de temp\xE9rature. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'un nombre correspondant au code de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du capteur de temp\xE9rature.'};
+doc['Temperature']['get_friendlyName']={syn:'Retourne un identifiant global du capteur de temp\xE9rature au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>.',lib:'temperature.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Retourne un identifiant global du capteur de temp\xE9rature au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>. Le cha\xEEne retourn\xE9e utilise soit les noms logiques du module et du capteur de temp\xE9rature si ils sont d\xE9finis, soit respectivement le num\xE9ro de s\xE9rie du module et l\x27identifant mat\xE9riel du capteur de temp\xE9rature (par exemple: <tt>MyCustomName.relay1</tt>)</p>',ret:'une cha\xEEne de caract\xE8res identifiant le capteur de temp\xE9rature en utilisant les noms logiques (ex: <tt>MyCustomName.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['Temperature']['get_functionDescriptor']={syn:'Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction.',lib:'temperature.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction. Cet identifiant peut \xEAtre utilis\xE9 pour tester si deux instance de <tt>YFunction</tt> r\xE9f\xE9rencent physiquement la m\xEAme fonction sur le m\xEAme module.</p>',ret:'un identifiant de type <tt>YFUN_DESCR</tt>.',ext:'Si la fonction n\x27a jamais \xE9t\xE9 contact\xE9e, la valeur retourn\xE9e sera <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>'};
+doc['Temperature']['get_functionId']={syn:'Retourne l\x27identifiant mat\xE9riel du capteur de temp\xE9rature, sans r\xE9f\xE9rence au module.',lib:'temperature.get_functionId()',pro:'def get_functionId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel du capteur de temp\xE9rature, sans r\xE9f\xE9rence au module. Par example <tt>relay1</tt>.</p>',ret:'une cha\xEEne de caract\xE8res identifiant le capteur de temp\xE9rature (ex: <tt>relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['Temperature']['get_hardwareId']={syn:'Retourne l\x27identifiant mat\xE9riel unique du capteur de temp\xE9rature au format <tt>SERIAL.FUNCTIONID</tt>.',lib:'temperature.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel unique du capteur de temp\xE9rature au format <tt>SERIAL.FUNCTIONID</tt>. L\x27identifiant unique est compos\xE9 du num\xE9ro de s\xE9rie du module et de l\x27identifiant mat\xE9riel du capteur de temp\xE9rature (par example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'une cha\xEEne de caract\xE8res identifiant le capteur de temp\xE9rature (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['Temperature']['get_highestValue']={syn:'Retourne la valeur maximale observ\xE9e pour la temp\xE9rature depuis le d\xE9marrage du module.',lib:'temperature.get_highestValue()',pro:'def get_highestValue()',cmt:'<p>Retourne la valeur maximale observ\xE9e pour la temp\xE9rature depuis le d\xE9marrage du module.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur maximale observ\xE9e pour la temp\xE9rature depuis le d\xE9marrage du module',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_HIGHESTVALUE_INVALID</tt>.'};
+doc['Temperature']['get_logFrequency']={syn:'Retourne la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es.',lib:'temperature.get_logFrequency()',pro:'def get_logFrequency()',cmt:'<p>Retourne la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_LOGFREQUENCY_INVALID</tt>.'};
+doc['Temperature']['get_logicalName']={syn:'Retourne le nom logique du capteur de temp\xE9rature.',lib:'temperature.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Retourne le nom logique du capteur de temp\xE9rature.</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du capteur de temp\xE9rature.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['Temperature']['get_lowestValue']={syn:'Retourne la valeur minimale observ\xE9e pour la temp\xE9rature depuis le d\xE9marrage du module.',lib:'temperature.get_lowestValue()',pro:'def get_lowestValue()',cmt:'<p>Retourne la valeur minimale observ\xE9e pour la temp\xE9rature depuis le d\xE9marrage du module.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur minimale observ\xE9e pour la temp\xE9rature depuis le d\xE9marrage du module',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_LOWESTVALUE_INVALID</tt>.'};
+doc['Temperature']['get_module']={syn:'Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction.',lib:'temperature.get_module()',pro:'def get_module()',cmt:'<p>Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction. Si la fonction ne peut \xEAtre trouv\xE9e sur aucun module, l\x27instance de <tt>YModule</tt> retourn\xE9e ne sera pas joignable.</p>',ret:'une instance de <tt>YModule</tt>'};
+doc['Temperature']['get_recordedData']={syn:'Retourne un objet DataSet repr\xE9sentant des mesures de ce capteur pr\xE9c\xE9demment enregistr\xE9es \xE0 l\x27aide du DataLogger, pour l\x27intervalle de temps sp\xE9cifi\xE9.',lib:'temperature.get_recordedData()',pro:'def get_recordedData(<span id=pn>startTime</span>, <span id=pn>endTime</span>)',cmt:'<p>Retourne un objet DataSet repr\xE9sentant des mesures de ce capteur pr\xE9c\xE9demment enregistr\xE9es \xE0 l\x27aide du DataLogger, pour l\x27intervalle de temps sp\xE9cifi\xE9. Veuillez vous r\xE9f\xE9rer \xE0 la documentation de la classe DataSet pour plus plus d\x27informations sur la mani\xE8re d\x27obtenir un aper\xE7u des mesures pour la p\xE9riode, et comment charger progressivement une grande quantit\xE9 de mesures depuis le dataLogger.</p><p> Cette m\xE9thode ne fonctionne que si le module utilise un firmware r\xE9cent, car les objets DataSet ne sont pas support\xE9s par les firmwares ant\xE9rieurs \xE0 la r\xE9vision 13000.</p>',par:{startTime:'le d\xE9but de l\x27intervalle de mesure d\xE9sir\xE9, c\x27est \xE0 dire en nombre de secondes depuis le 1er janvier 1970 UTC. La valeur 0 peut \xEAtre utilis\xE9e pour ne poser aucune limite sur le d\xE9but des mesures.',endTime:'la find de l\x27intercalle de mesure d\xE9sir\xE9, c\x27est \xE0 dire en nombre de secondes depuis le 1er janvier 1970 UTC. La valeur 0 peut \xEAtre utilis\xE9e pour ne poser aucune limite de fin.'},ret:'une instance de YDataSet, dont les m\xE9thodes permettent de d\x27acc\xE9der aux donn\xE9es historiques souhait\xE9es.'};
+doc['Temperature']['get_reportFrequency']={syn:'Retourne la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction.',lib:'temperature.get_reportFrequency()',pro:'def get_reportFrequency()',cmt:'<p>Retourne la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_REPORTFREQUENCY_INVALID</tt>.'};
+doc['Temperature']['get_resolution']={syn:'Retourne la r\xE9solution des valeurs mesur\xE9es.',lib:'temperature.get_resolution()',pro:'def get_resolution()',cmt:'<p>Retourne la r\xE9solution des valeurs mesur\xE9es. La r\xE9solution correspond \xE0 la pr\xE9cision num\xE9rique de la repr\xE9sentation des mesures. Elle n\x27est pas forc\xE9ment identique \xE0 la pr\xE9cision r\xE9elle du capteur.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la r\xE9solution des valeurs mesur\xE9es',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_RESOLUTION_INVALID</tt>.'};
+doc['Temperature']['get_sensorState']={syn:'Retourne le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment.',lib:'temperature.get_sensorState()',pro:'def get_sensorState()',cmt:'<p>Retourne le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment.</p>',ret:'un entier repr&eacute;sentant le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_SENSORSTATE_INVALID</tt>.'};
+doc['Temperature']['get_sensorType']={syn:'Retourne le type de capteur de temp\xE9rature utilis\xE9 par le module ',lib:'temperature.get_sensorType()',pro:'def get_sensorType()',cmt:'<p>Retourne le type de capteur de temp\xE9rature utilis\xE9 par le module</p>',ret:'une valeur parmi <tt>Y_SENSORTYPE_DIGITAL</tt>, <tt>Y_SENSORTYPE_TYPE_K</tt>, <tt>Y_SENSORTYPE_TYPE_E</tt>, <tt>Y_SENSORTYPE_TYPE_J</tt>, <tt>Y_SENSORTYPE_TYPE_N</tt>, <tt>Y_SENSORTYPE_TYPE_R</tt>, <tt>Y_SENSORTYPE_TYPE_S</tt>, <tt>Y_SENSORTYPE_TYPE_T</tt>, <tt>Y_SENSORTYPE_PT100_4WIRES</tt>, <tt>Y_SENSORTYPE_PT100_3WIRES</tt>, <tt>Y_SENSORTYPE_PT100_2WIRES</tt>, <tt>Y_SENSORTYPE_RES_OHM</tt>, <tt>Y_SENSORTYPE_RES_NTC</tt> et <tt>Y_SENSORTYPE_RES_LINEAR</tt> repr&eacute;sentant le type de capteur de temp\xE9rature utilis\xE9 par le module',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_SENSORTYPE_INVALID</tt>.'};
+doc['Temperature']['get_signalUnit']={syn:'Retourne l\x27unit\xE9 du signal \xE9lectrique utilis\xE9 par le capteur.',lib:'temperature.get_signalUnit()',pro:'def get_signalUnit()',cmt:'<p>Retourne l\x27unit\xE9 du signal \xE9lectrique utilis\xE9 par le capteur.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant l\x27unit\xE9 du signal \xE9lectrique utilis\xE9 par le capteur',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_SIGNALUNIT_INVALID</tt>.'};
+doc['Temperature']['get_signalValue']={syn:'Retourne la valeur actuelle du signal \xE9lectrique mesur\xE9 par le capteur.',lib:'temperature.get_signalValue()',pro:'def get_signalValue()',cmt:'<p>Retourne la valeur actuelle du signal \xE9lectrique mesur\xE9 par le capteur.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur actuelle du signal \xE9lectrique mesur\xE9 par le capteur',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_SIGNALVALUE_INVALID</tt>.'};
+doc['Temperature']['get_unit']={syn:'Retourne l\x27unit\xE9 dans laquelle la temp\xE9rature est exprim\xE9e.',lib:'temperature.get_unit()',pro:'def get_unit()',cmt:'<p>Retourne l\x27unit\xE9 dans laquelle la temp\xE9rature est exprim\xE9e.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant l\x27unit\xE9 dans laquelle la temp\xE9rature est exprim\xE9e',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_UNIT_INVALID</tt>.'};
+doc['Temperature']['get_userData']={syn:'Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>.',lib:'temperature.get_userData()',pro:'def get_userData()',cmt:'<p>Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',ret:'l\x27objet stock\xE9 pr\xE9c\xE9demment par l\x27appelant.'};
+doc['Temperature']['isOnline']={syn:'V\xE9rifie si le module h\xE9bergeant le capteur de temp\xE9rature est joignable, sans d\xE9clencher d\x27erreur.',lib:'temperature.isOnline()',pro:'def isOnline()',cmt:'<p>V\xE9rifie si le module h\xE9bergeant le capteur de temp\xE9rature est joignable, sans d\xE9clencher d\x27erreur. Si les valeurs des attributs en cache du capteur de temp\xE9rature sont valides au moment de l\x27appel, le module est consid\xE9r\xE9 joignable. Cette fonction ne cause en aucun cas d\x27exception, quelle que soit l\x27erreur qui pourrait se produire lors de la v\xE9rification de joignabilit\xE9.</p>',ret:'<tt>true</tt> si le capteur de temp\xE9rature est joignable, <tt>false</tt> sinon'};
+doc['Temperature']['load']={syn:'Met en cache les valeurs courantes du capteur de temp\xE9rature, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e.',lib:'temperature.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Met en cache les valeurs courantes du capteur de temp\xE9rature, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e. Par d\xE9faut, lorsqu\x27on acc\xE8de \xE0 un module, tous les attributs des fonctions du module sont automatiquement mises en cache pour la dur\xE9e standard (5 ms). Cette m\xE9thode peut \xEAtre utilis\xE9e pour marquer occasionellement les donn\xE9es cach\xE9es comme valides pour une plus longue p\xE9riode, par exemple dans le but de r\xE9duire le trafic r\xE9seau.</p>',par:{msValidity:'un entier correspondant \xE0 la dur\xE9e de validit\xE9 attribu\xE9e aux les param\xE8tres charg\xE9s, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Temperature']['loadAttribute']={syn:'Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.',lib:'temperature.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un cha\xEEne vide.'};
+doc['Temperature']['loadCalibrationPoints']={syn:'R\xE9cup\xE8re les points de correction de mesure pr\xE9c\xE9demment enregistr\xE9s \xE0 l\x27aide de la m\xE9thode <tt>calibrateFromPoints</tt>.',lib:'temperature.loadCalibrationPoints()',pro:'def loadCalibrationPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>R\xE9cup\xE8re les points de correction de mesure pr\xE9c\xE9demment enregistr\xE9s \xE0 l\x27aide de la m\xE9thode <tt>calibrateFromPoints</tt>.</p>',par:{rawValues:'tableau de nombres flottants, qui sera rempli par la fonction avec les valeurs brutes des points de correction.',refValues:'tableau de nombres flottants, qui sera rempli par la fonction avec les valeurs d\xE9sir\xE9es des points de correction.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Temperature']['loadThermistorResponseTable']={syn:'R\xE9cup\xE8re la table de r\xE9ponse d\x27un thermistor pr\xE9c\xE9demment enregistr\xE9e \xE0 l\x27aide de la fonction <tt>set_thermistorResponseTable</tt>.',lib:'temperature.loadThermistorResponseTable()',pro:'def loadThermistorResponseTable(<span id=pn>tempValues</span>, <span id=pn>resValues</span>)',cmt:'<p>R\xE9cup\xE8re la table de r\xE9ponse d\x27un thermistor pr\xE9c\xE9demment enregistr\xE9e \xE0 l\x27aide de la fonction <tt>set_thermistorResponseTable</tt>. Cette fonction ne peut \xEAtre utilis\xE9e qu\x27avec les capteurs de temp\xE9rature bas\xE9s sur un thermistor.</p>',par:{tempValues:'tableau de nombres flottants, qui sera rempli par la fonction avec les diff\xE9rentes temp\xE9ratures (en degr\xE9s Celcius) pour lesquelles la r\xE9sistance du thermistor est sp\xE9cifi\xE9e.',resValues:'tableau de nombres flottants, qui sera rempli par la fonction avec les r\xE9sistances (en Ohms) pour chacun des points de temp\xE9rature, index par index.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Temperature']['muteValueCallbacks']={syn:'D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'temperature.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Vous pouvez utiliser cette fonction pour \xE9conomiser la bande passante et le CPU sur les machines de faible puissance, ou pour \xE9viter le d\xE9clanchement de callbacks HTTP. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Temperature']['nextTemperature']={syn:'Continue l\x27\xE9num\xE9ration des capteurs de temp\xE9rature commenc\xE9e \xE0 l\x27aide de <tt>yFirstTemperature()</tt>.',lib:'temperature.nextTemperature()',pro:'def nextTemperature()',cmt:'<p>Continue l\x27\xE9num\xE9ration des capteurs de temp\xE9rature commenc\xE9e \xE0 l\x27aide de <tt>yFirstTemperature()</tt>.</p>',ret:'un pointeur sur un objet <tt>YTemperature</tt> accessible en ligne, ou <tt>null</tt> lorsque l\x27\xE9num\xE9ration est termin\xE9e.'};
+doc['Temperature']['registerTimedReportCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque notification p\xE9riodique.',lib:'temperature.registerTimedReportCallback()',pro:'def registerTimedReportCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque notification p\xE9riodique. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callbacks peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callbacks ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et un objet YMeasure d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['Temperature']['registerValueCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e.',lib:'temperature.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callback peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callback ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et la cha\xEEne de caract\xE8re d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['Temperature']['set_highestValue']={syn:'Modifie la m\xE9moire de valeur maximale observ\xE9e.',lib:'temperature.set_highestValue()',pro:'def set_highestValue(<span id=pn>newval</span>)',cmt:'<p>Modifie la m\xE9moire de valeur maximale observ\xE9e.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la m\xE9moire de valeur maximale observ\xE9e'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Temperature']['set_logFrequency']={syn:'Modifie la fr\xE9quence d\x27enregistrement des mesures dans le datalogger.',lib:'temperature.set_logFrequency()',pro:'def set_logFrequency(<span id=pn>newval</span>)',cmt:'<p>Modifie la fr\xE9quence d\x27enregistrement des mesures dans le datalogger. La fr\xE9quence peut \xEAtre sp\xE9cifi\xE9e en mesures par secondes, en mesures par minutes (par exemple \x2215/m\x22) ou en mesures par heure (par exemple \x224/h\x22). Pour d\xE9sactiver l\x27enregistrement des mesures de cette fonction, utilisez la valeur \x22OFF\x22.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence d\x27enregistrement des mesures dans le datalogger'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Temperature']['set_logicalName']={syn:'Modifie le nom logique du capteur de temp\xE9rature.',lib:'temperature.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Modifie le nom logique du capteur de temp\xE9rature. Vous pouvez utiliser <tt>yCheckLogicalName()</tt> pour v\xE9rifier si votre param\xE8tre est valide. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du capteur de temp\xE9rature.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27appel se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Temperature']['set_lowestValue']={syn:'Modifie la m\xE9moire de valeur minimale observ\xE9e.',lib:'temperature.set_lowestValue()',pro:'def set_lowestValue(<span id=pn>newval</span>)',cmt:'<p>Modifie la m\xE9moire de valeur minimale observ\xE9e.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la m\xE9moire de valeur minimale observ\xE9e'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Temperature']['set_ntcParameters']={syn:'Configure les param\xE8tres d\x27un thermistor NTC pour calculer correctement la temp\xE9rature sur la base de la r\xE9sistance mesur\xE9e.',lib:'temperature.set_ntcParameters()',pro:'def set_ntcParameters(<span id=pn>res25</span>, <span id=pn>beta</span>)',cmt:'<p>Configure les param\xE8tres d\x27un thermistor NTC pour calculer correctement la temp\xE9rature sur la base de la r\xE9sistance mesur\xE9e. Pour plus de pr\xE9cision, vous pouvez saisir une table compl\xE8te \xE0 l\x27aide de la fonction set_thermistorResponseTable. Cette fonction ne peut \xEAtre utilis\xE9e qu\x27avec les capteurs de temp\xE9rature bas\xE9s sur un thermistor.</p>',par:{res25:'r\xE9sistance \xE0 25 degr\xE9s Celsius',beta:'coefficient Beta'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Temperature']['set_reportFrequency']={syn:'Modifie la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es.',lib:'temperature.set_reportFrequency()',pro:'def set_reportFrequency(<span id=pn>newval</span>)',cmt:'<p>Modifie la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es. La fr\xE9quence peut \xEAtre sp\xE9cifi\xE9e en mesures par secondes, en mesures par minutes (par exemple \x2215/m\x22) ou en mesures par heure (par exemple \x224/h\x22). Pour d\xE9sactiver les notifications p\xE9riodiques pour cette fonction, utilisez la valeur \x22OFF\x22.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Temperature']['set_resolution']={syn:'Modifie la r\xE9solution des valeurs physique mesur\xE9es.',lib:'temperature.set_resolution()',pro:'def set_resolution(<span id=pn>newval</span>)',cmt:'<p>Modifie la r\xE9solution des valeurs physique mesur\xE9es. La r\xE9solution correspond \xE0 la pr\xE9cision de l\x27affichage des mesures. Elle ne change pas la pr\xE9cision de la mesure elle-m\xEAme.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la r\xE9solution des valeurs physique mesur\xE9es'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Temperature']['set_sensorType']={syn:'Change le type de senseur utilis\xE9 par le module.',lib:'temperature.set_sensorType()',pro:'def set_sensorType(<span id=pn>newval</span>)',cmt:'<p>Change le type de senseur utilis\xE9 par le module. Cette function sert \xE0 sp\xE9cifier le type de thermocouple (K,E, etc..) raccord\xE9 au module. Cette fonction n\x27aura pas d\x27effet si le module utilise un capteur digital ou un thermistor. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une valeur parmi <tt>Y_SENSORTYPE_DIGITAL</tt>, <tt>Y_SENSORTYPE_TYPE_K</tt>, <tt>Y_SENSORTYPE_TYPE_E</tt>, <tt>Y_SENSORTYPE_TYPE_J</tt>, <tt>Y_SENSORTYPE_TYPE_N</tt>, <tt>Y_SENSORTYPE_TYPE_R</tt>, <tt>Y_SENSORTYPE_TYPE_S</tt>, <tt>Y_SENSORTYPE_TYPE_T</tt>, <tt>Y_SENSORTYPE_PT100_4WIRES</tt>, <tt>Y_SENSORTYPE_PT100_3WIRES</tt>, <tt>Y_SENSORTYPE_PT100_2WIRES</tt>, <tt>Y_SENSORTYPE_RES_OHM</tt>, <tt>Y_SENSORTYPE_RES_NTC</tt> et <tt>Y_SENSORTYPE_RES_LINEAR</tt>'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Temperature']['set_thermistorResponseTable']={syn:'Enregistre la table de r\xE9ponse d\x27un thermistor, afin de pouvoir interpoler la temp\xE9rature sur la base de la r\xE9sistance mesur\xE9e.',lib:'temperature.set_thermistorResponseTable()',pro:'def set_thermistorResponseTable(<span id=pn>tempValues</span>, <span id=pn>resValues</span>)',cmt:'<p>Enregistre la table de r\xE9ponse d\x27un thermistor, afin de pouvoir interpoler la temp\xE9rature sur la base de la r\xE9sistance mesur\xE9e. Cette fonction ne peut \xEAtre utilis\xE9e qu\x27avec les capteurs de temp\xE9rature bas\xE9s sur un thermistor.</p>',par:{tempValues:'tableau de nombres flottants, correspondant aux diff\xE9rentes temp\xE9ratures (en degr\xE9s Celcius) pour lesquelles la r\xE9sistance du thermistor est sp\xE9cifi\xE9e.',resValues:'tableau de nombres flottants, correspondant aux r\xE9sistances (en Ohms) pour chacun des points de temp\xE9rature, index par index.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Temperature']['set_unit']={syn:'Change l\x27unit\xE9 dans laquelle la temp\xE9rature mesur\xE9e est exprim\xE9e.',lib:'temperature.set_unit()',pro:'def set_unit(<span id=pn>newval</span>)',cmt:'<p>Change l\x27unit\xE9 dans laquelle la temp\xE9rature mesur\xE9e est exprim\xE9e. Cette unit\xE9 est une cha\xEEne de charact\xE8re. Si cette cha\xEEne de caract\xE8re se termine par un F les valeurs mesur\xE9e seront rendues en degr\xE9s Fahrenheit, si elle se termine par un K, les valeurs de temp\xE9rature seront rendues en degr\xE9s Kelvin. Si elle se termine par un C, les valeurs de temp\xE9rature seront rendues en degr\xE9s Celsius. Si elle ne setermine n\x27importe quel autre caract\xE8re, le changement est ignor\xE9. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9. Attention: si une calibration sp\xE9cifique est d\xE9finie pour la fonction temperature, un changement d\x27unit\xE9 a toutes les chances de la fausser.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Temperature']['set_userData']={syn:'Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>.',lib:'temperature.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',par:{data:'objet quelconque \xE0 m\xE9moriser'}};
+doc['Temperature']['startDataLogger']={syn:'D\xE9marre l\x27enregistreur de donn\xE9es du module.',lib:'temperature.startDataLogger()',pro:'def startDataLogger()',cmt:'<p>D\xE9marre l\x27enregistreur de donn\xE9es du module. Attention, l\x27enregistreur ne sauvera les mesures de ce capteur que si la fr\xE9quence d\x27enregistrement (logFrequency) n\x27est pas sur \x22OFF\x22.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.'};
+doc['Temperature']['stopDataLogger']={syn:'Arr\xEAte l\x27enregistreur de donn\xE9es du module.',lib:'temperature.stopDataLogger()',pro:'def stopDataLogger()',cmt:'<p>Arr\xEAte l\x27enregistreur de donn\xE9es du module.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.'};
+doc['Temperature']['unmuteValueCallbacks']={syn:'R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'temperature.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Cette fonction annule un pr\xE9c\xE9dent appel \xE0 <tt>muteValueCallbacks()</tt>. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+//--- (end of generated code: Temperature)
+//--- (generated code: DataLogger)
+doc['DataLogger']={'':{syn:'Interface de la fonction DataLogger',inc:'from yocto_datalogger import *',cmt:'<p>Les capteurs de Yoctopuce sont \xE9quip\xE9s d\x27une m\xE9moire non-volatile permettant de m\xE9moriser les donn\xE9es mesur\xE9es d\x27une mani\xE8re autonome, sans n\xE9cessiter le suivi permanent d\x27un ordinateur. La fonction DataLogger contr\xF4le les param\xE8tres globaux de cet enregistreur de donn\xE9es.</p>'}};
+doc['DataLogger']['FindDataLogger']={syn:'Permet de retrouver un enregistreur de donn\xE9es d\x27apr\xE8s un identifiant donn\xE9.',lib:'YDataLogger.FindDataLogger()',pro:'def FindDataLogger(<span id=pn>func</span>)',cmt:'<p>Permet de retrouver un enregistreur de donn\xE9es d\x27apr\xE8s un identifiant donn\xE9. L\x27identifiant peut \xEAtre sp\xE9cifi\xE9 sous plusieurs formes:<br> <ul> <li>NomLogiqueFonction</li> <li>NoSerieModule.IdentifiantFonction</li> <li>NoSerieModule.NomLogiqueFonction</li> <li>NomLogiqueModule.IdentifiantMat\xE9riel</li> <li>NomLogiqueModule.NomLogiqueFonction</li> </ul></p><p> Cette fonction n\x27exige pas que l\x27enregistreur de donn\xE9es soit en ligne au moment ou elle est appel\xE9e, l\x27objet retourn\xE9 sera n\xE9anmoins valide. Utiliser la m\xE9thode <tt>YDataLogger.isOnline()</tt> pour tester si l\x27enregistreur de donn\xE9es est utilisable \xE0 un moment donn\xE9. En cas d\x27ambigu\xEFt\xE9 lorsqu\x27on fait une recherche par nom logique, aucune erreur ne sera notifi\xE9e: la premi\xE8re instance trouv\xE9e sera renvoy\xE9e. La recherche se fait d\x27abord par nom mat\xE9riel, puis par nom logique.</p>',par:{func:'une cha\xEEne de caract\xE8res qui r\xE9f\xE9rence l\x27enregistreur de donn\xE9es sans ambigu\xEFt\xE9'},ret:'un objet de classe <tt>YDataLogger</tt> qui permet ensuite de contr\xF4ler l\x27enregistreur de donn\xE9es.'};
+doc['DataLogger']['FirstDataLogger']={syn:'Commence l\x27\xE9num\xE9ration des enregistreurs de donn\xE9es accessibles par la librairie.',lib:'YDataLogger.FirstDataLogger()',pro:'def FirstDataLogger()',cmt:'<p>Commence l\x27\xE9num\xE9ration des enregistreurs de donn\xE9es accessibles par la librairie. Utiliser la fonction <tt>YDataLogger.nextDataLogger()</tt> pour it\xE9rer sur les autres enregistreurs de donn\xE9es.</p>',ret:'un pointeur sur un objet <tt>YDataLogger</tt>, correspondant au premier enregistreur de donn\xE9es accessible en ligne, ou <tt>null</tt> si il n\x27y a pas de enregistreurs de donn\xE9es disponibles.'};
+doc['DataLogger']['clearCache']={syn:'Invalide le cache.',lib:'datalogger.clearCache()',pro:'def clearCache()',cmt:'<p>Invalide le cache. Invalide le cache des valeurs courantes de l\x27enregistreur de donn\xE9es. Force le prochain appel \xE0 une m\xE9thode get_xxx() ou loadxxx() pour charger les les donn\xE9es depuis le module.</p>'};
+doc['DataLogger']['describe']={syn:'Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance de l\x27enregistreur de donn\xE9es au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'datalogger.describe()',pro:'def describe()',cmt:'<p>Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance de l\x27enregistreur de donn\xE9es au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. Plus pr\xE9cis\xE9ment, <tt>TYPE</tt> correspond au type de fonction, <tt>NAME</tt> correspond au nom utils\xE9 lors du premier acc\xE8s a la fonction, <tt>SERIAL</tt> correspond au num\xE9ro de s\xE9rie du module si le module est connect\xE9, ou <tt>\x22unresolved\x22</tt> sinon, et <tt>FUNCTIONID</tt> correspond \xE0 l\x27identifiant mat\xE9riel de la fonction si le module est connect\xE9. Par exemple, La methode va retourner <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> si le module est d\xE9j\xE0 connect\xE9 ou <tt>Relay(BadCustomeName.relay1)=unresolved</tt> si le module n\x27est pas d\xE9j\xE0 connect\xE9. Cette methode ne declenche aucune transaction USB ou TCP et peut donc \xEAtre utilis\xE9 dans un debuggeur.</p>',ret:'une cha\xEEne de caract\xE8res d\xE9crivant l\x27enregistreur de donn\xE9es (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['DataLogger']['forgetAllDataStreams']={syn:'Efface tout l\x27historique des mesures de l\x27enregistreur de donn\xE9es.',lib:'datalogger.forgetAllDataStreams()',pro:'def forgetAllDataStreams()',cmt:'<p>Efface tout l\x27historique des mesures de l\x27enregistreur de donn\xE9es. Cette m\xE9thode remet aussi \xE0 z\xE9ro le compteur de Runs.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['DataLogger']['get_advertisedValue']={syn:'Retourne la valeur courante de l\x27enregistreur de donn\xE9es (pas plus de 6 caract\xE8res).',lib:'datalogger.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Retourne la valeur courante de l\x27enregistreur de donn\xE9es (pas plus de 6 caract\xE8res).</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur courante de l\x27enregistreur de donn\xE9es (pas plus de 6 caract\xE8res).',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['DataLogger']['get_autoStart']={syn:'Retourne le mode d\x27activation automatique de l\x27enregistreur de donn\xE9es \xE0 la mise sous tension.',lib:'datalogger.get_autoStart()',pro:'def get_autoStart()',cmt:'<p>Retourne le mode d\x27activation automatique de l\x27enregistreur de donn\xE9es \xE0 la mise sous tension.</p>',ret:'soit <tt>Y_AUTOSTART_OFF</tt>, soit <tt>Y_AUTOSTART_ON</tt>, selon le mode d\x27activation automatique de l\x27enregistreur de donn\xE9es \xE0 la mise sous tension',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_AUTOSTART_INVALID</tt>.'};
+doc['DataLogger']['get_beaconDriven']={syn:'Retourne vrais si l\x27enregistreur de donn\xE9es est synchronis\xE9 avec la balise de localisation.',lib:'datalogger.get_beaconDriven()',pro:'def get_beaconDriven()',cmt:'<p>Retourne vrais si l\x27enregistreur de donn\xE9es est synchronis\xE9 avec la balise de localisation.</p>',ret:'soit <tt>Y_BEACONDRIVEN_OFF</tt>, soit <tt>Y_BEACONDRIVEN_ON</tt>, selon vrais si l\x27enregistreur de donn\xE9es est synchronis\xE9 avec la balise de localisation',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_BEACONDRIVEN_INVALID</tt>.'};
+doc['DataLogger']['get_currentRunIndex']={syn:'Retourne le num\xE9ro du Run actuel, correspondant au nombre de fois que le module a \xE9t\xE9 mis sous tension avec la fonction d\x27enregistreur de donn\xE9es active.',lib:'datalogger.get_currentRunIndex()',pro:'def get_currentRunIndex()',cmt:'<p>Retourne le num\xE9ro du Run actuel, correspondant au nombre de fois que le module a \xE9t\xE9 mis sous tension avec la fonction d\x27enregistreur de donn\xE9es active.</p>',ret:'un entier repr&eacute;sentant le num\xE9ro du Run actuel, correspondant au nombre de fois que le module a \xE9t\xE9 mis sous tension avec la fonction d\x27enregistreur de donn\xE9es active',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_CURRENTRUNINDEX_INVALID</tt>.'};
+doc['DataLogger']['get_dataSets']={syn:'Retourne une liste d\x27objets YDataSet permettant de r\xE9cup\xE9rer toutes les mesures stock\xE9es par l\x27enregistreur de donn\xE9es.',lib:'datalogger.get_dataSets()',pro:'def get_dataSets()',cmt:'<p>Retourne une liste d\x27objets YDataSet permettant de r\xE9cup\xE9rer toutes les mesures stock\xE9es par l\x27enregistreur de donn\xE9es.</p><p> Cette m\xE9thode ne fonctionne que si le module utilise un firmware r\xE9cent, car les objets YDataSet ne sont pas support\xE9s par les firmwares ant\xE9rieurs \xE0 la r\xE9vision 13000.</p>',ret:'une liste d\x27objets YDataSet',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne une liste vide.'};
+doc['DataLogger']['get_dataStreams']={syn:'Construit une liste de toutes les s\xE9quences de mesures m\xE9moris\xE9es par l\x27enregistreur (ancienne m\xE9thode).',lib:'datalogger.get_dataStreams()',pro:'def get_dataStreams(<span id=pn>v</span>)',cmt:'<p>Construit une liste de toutes les s\xE9quences de mesures m\xE9moris\xE9es par l\x27enregistreur (ancienne m\xE9thode). L\x27appelant doit passer par r\xE9f\xE9rence un tableau vide pout stocker les objets YDataStream, et la m\xE9thode va les remplire avec des objets d\xE9crivant les s\xE9quences de donn\xE9es disponibles.</p><p> Cette m\xE9thode est pr\xE9serv\xE9e pour maintenir la compatibilit\xE9 avec les applications existantes. Pour les nouvelles applications, il est pr\xE9f\xE9rable d\x27utiliser la m\xE9thode <tt>get_dataSets()</tt> ou d\x27appeler directement la m\xE9thode <tt>get_recordedData()</tt> sur l\x27objet repr\xE9sentant le capteur d\xE9sir\xE9.</p>',par:{v:'un tableau de YDataStreams qui sera rempli avec les s\xE9quences trouv\xE9es'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['DataLogger']['get_errorMessage']={syn:'Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de l\x27enregistreur de donn\xE9es.',lib:'datalogger.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de l\x27enregistreur de donn\xE9es. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'une cha\xEEne de caract\xE8res correspondant au message de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation de l\x27enregistreur de donn\xE9es.'};
+doc['DataLogger']['get_errorType']={syn:'Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de l\x27enregistreur de donn\xE9es.',lib:'datalogger.get_errorType()',pro:'def get_errorType()',cmt:'<p>Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de l\x27enregistreur de donn\xE9es. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'un nombre correspondant au code de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation de l\x27enregistreur de donn\xE9es.'};
+doc['DataLogger']['get_friendlyName']={syn:'Retourne un identifiant global de l\x27enregistreur de donn\xE9es au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>.',lib:'datalogger.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Retourne un identifiant global de l\x27enregistreur de donn\xE9es au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>. Le cha\xEEne retourn\xE9e utilise soit les noms logiques du module et de l\x27enregistreur de donn\xE9es si ils sont d\xE9finis, soit respectivement le num\xE9ro de s\xE9rie du module et l\x27identifant mat\xE9riel de l\x27enregistreur de donn\xE9es (par exemple: <tt>MyCustomName.relay1</tt>)</p>',ret:'une cha\xEEne de caract\xE8res identifiant l\x27enregistreur de donn\xE9es en utilisant les noms logiques (ex: <tt>MyCustomName.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['DataLogger']['get_functionDescriptor']={syn:'Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction.',lib:'datalogger.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction. Cet identifiant peut \xEAtre utilis\xE9 pour tester si deux instance de <tt>YFunction</tt> r\xE9f\xE9rencent physiquement la m\xEAme fonction sur le m\xEAme module.</p>',ret:'un identifiant de type <tt>YFUN_DESCR</tt>.',ext:'Si la fonction n\x27a jamais \xE9t\xE9 contact\xE9e, la valeur retourn\xE9e sera <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>'};
+doc['DataLogger']['get_functionId']={syn:'Retourne l\x27identifiant mat\xE9riel de l\x27enregistreur de donn\xE9es, sans r\xE9f\xE9rence au module.',lib:'datalogger.get_functionId()',pro:'def get_functionId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel de l\x27enregistreur de donn\xE9es, sans r\xE9f\xE9rence au module. Par example <tt>relay1</tt>.</p>',ret:'une cha\xEEne de caract\xE8res identifiant l\x27enregistreur de donn\xE9es (ex: <tt>relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['DataLogger']['get_hardwareId']={syn:'Retourne l\x27identifiant mat\xE9riel unique de l\x27enregistreur de donn\xE9es au format <tt>SERIAL.FUNCTIONID</tt>.',lib:'datalogger.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel unique de l\x27enregistreur de donn\xE9es au format <tt>SERIAL.FUNCTIONID</tt>. L\x27identifiant unique est compos\xE9 du num\xE9ro de s\xE9rie du module et de l\x27identifiant mat\xE9riel de l\x27enregistreur de donn\xE9es (par example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'une cha\xEEne de caract\xE8res identifiant l\x27enregistreur de donn\xE9es (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['DataLogger']['get_logicalName']={syn:'Retourne le nom logique de l\x27enregistreur de donn\xE9es.',lib:'datalogger.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Retourne le nom logique de l\x27enregistreur de donn\xE9es.</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique de l\x27enregistreur de donn\xE9es.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['DataLogger']['get_module']={syn:'Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction.',lib:'datalogger.get_module()',pro:'def get_module()',cmt:'<p>Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction. Si la fonction ne peut \xEAtre trouv\xE9e sur aucun module, l\x27instance de <tt>YModule</tt> retourn\xE9e ne sera pas joignable.</p>',ret:'une instance de <tt>YModule</tt>'};
+doc['DataLogger']['get_recording']={syn:'Retourne l\x27\xE9tat d\x27activation de l\x27enregistreur de donn\xE9es.',lib:'datalogger.get_recording()',pro:'def get_recording()',cmt:'<p>Retourne l\x27\xE9tat d\x27activation de l\x27enregistreur de donn\xE9es.</p>',ret:'une valeur parmi <tt>Y_RECORDING_OFF</tt>, <tt>Y_RECORDING_ON</tt> et <tt>Y_RECORDING_PENDING</tt> repr&eacute;sentant l\x27\xE9tat d\x27activation de l\x27enregistreur de donn\xE9es',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_RECORDING_INVALID</tt>.'};
+doc['DataLogger']['get_timeUTC']={syn:'Retourne le timestamp Unix de l\x27heure UTC actuelle, lorsqu\x27elle est connue.',lib:'datalogger.get_timeUTC()',pro:'def get_timeUTC()',cmt:'<p>Retourne le timestamp Unix de l\x27heure UTC actuelle, lorsqu\x27elle est connue.</p>',ret:'un entier repr&eacute;sentant le timestamp Unix de l\x27heure UTC actuelle, lorsqu\x27elle est connue',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_TIMEUTC_INVALID</tt>.'};
+doc['DataLogger']['get_userData']={syn:'Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>.',lib:'datalogger.get_userData()',pro:'def get_userData()',cmt:'<p>Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',ret:'l\x27objet stock\xE9 pr\xE9c\xE9demment par l\x27appelant.'};
+doc['DataLogger']['isOnline']={syn:'V\xE9rifie si le module h\xE9bergeant l\x27enregistreur de donn\xE9es est joignable, sans d\xE9clencher d\x27erreur.',lib:'datalogger.isOnline()',pro:'def isOnline()',cmt:'<p>V\xE9rifie si le module h\xE9bergeant l\x27enregistreur de donn\xE9es est joignable, sans d\xE9clencher d\x27erreur. Si les valeurs des attributs en cache de l\x27enregistreur de donn\xE9es sont valides au moment de l\x27appel, le module est consid\xE9r\xE9 joignable. Cette fonction ne cause en aucun cas d\x27exception, quelle que soit l\x27erreur qui pourrait se produire lors de la v\xE9rification de joignabilit\xE9.</p>',ret:'<tt>true</tt> si l\x27enregistreur de donn\xE9es est joignable, <tt>false</tt> sinon'};
+doc['DataLogger']['load']={syn:'Met en cache les valeurs courantes de l\x27enregistreur de donn\xE9es, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e.',lib:'datalogger.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Met en cache les valeurs courantes de l\x27enregistreur de donn\xE9es, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e. Par d\xE9faut, lorsqu\x27on acc\xE8de \xE0 un module, tous les attributs des fonctions du module sont automatiquement mises en cache pour la dur\xE9e standard (5 ms). Cette m\xE9thode peut \xEAtre utilis\xE9e pour marquer occasionellement les donn\xE9es cach\xE9es comme valides pour une plus longue p\xE9riode, par exemple dans le but de r\xE9duire le trafic r\xE9seau.</p>',par:{msValidity:'un entier correspondant \xE0 la dur\xE9e de validit\xE9 attribu\xE9e aux les param\xE8tres charg\xE9s, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['DataLogger']['loadAttribute']={syn:'Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.',lib:'datalogger.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un cha\xEEne vide.'};
+doc['DataLogger']['muteValueCallbacks']={syn:'D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'datalogger.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Vous pouvez utiliser cette fonction pour \xE9conomiser la bande passante et le CPU sur les machines de faible puissance, ou pour \xE9viter le d\xE9clanchement de callbacks HTTP. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['DataLogger']['nextDataLogger']={syn:'Continue l\x27\xE9num\xE9ration des enregistreurs de donn\xE9es commenc\xE9e \xE0 l\x27aide de <tt>yFirstDataLogger()</tt>.',lib:'datalogger.nextDataLogger()',pro:'def nextDataLogger()',cmt:'<p>Continue l\x27\xE9num\xE9ration des enregistreurs de donn\xE9es commenc\xE9e \xE0 l\x27aide de <tt>yFirstDataLogger()</tt>.</p>',ret:'un pointeur sur un objet <tt>YDataLogger</tt> accessible en ligne, ou <tt>null</tt> lorsque l\x27\xE9num\xE9ration est termin\xE9e.'};
+doc['DataLogger']['registerValueCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e.',lib:'datalogger.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callback peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callback ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et la cha\xEEne de caract\xE8re d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['DataLogger']['set_autoStart']={syn:'Modifie le mode d\x27activation automatique de l\x27enregistreur de donn\xE9es \xE0 la mise sous tension.',lib:'datalogger.set_autoStart()',pro:'def set_autoStart(<span id=pn>newval</span>)',cmt:'<p>Modifie le mode d\x27activation automatique de l\x27enregistreur de donn\xE9es \xE0 la mise sous tension. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'soit <tt>Y_AUTOSTART_OFF</tt>, soit <tt>Y_AUTOSTART_ON</tt>, selon le mode d\x27activation automatique de l\x27enregistreur de donn\xE9es \xE0 la mise sous tension'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['DataLogger']['set_beaconDriven']={syn:'Modifie le mode de synchronisation de l\x27enregistreur de donn\xE9es .',lib:'datalogger.set_beaconDriven()',pro:'def set_beaconDriven(<span id=pn>newval</span>)',cmt:'<p>Modifie le mode de synchronisation de l\x27enregistreur de donn\xE9es . N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'soit <tt>Y_BEACONDRIVEN_OFF</tt>, soit <tt>Y_BEACONDRIVEN_ON</tt>, selon le mode de synchronisation de l\x27enregistreur de donn\xE9es'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['DataLogger']['set_logicalName']={syn:'Modifie le nom logique de l\x27enregistreur de donn\xE9es.',lib:'datalogger.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Modifie le nom logique de l\x27enregistreur de donn\xE9es. Vous pouvez utiliser <tt>yCheckLogicalName()</tt> pour v\xE9rifier si votre param\xE8tre est valide. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique de l\x27enregistreur de donn\xE9es.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27appel se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['DataLogger']['set_recording']={syn:'Modifie l\x27\xE9tat d\x27activation de l\x27enregistreur de donn\xE9es.',lib:'datalogger.set_recording()',pro:'def set_recording(<span id=pn>newval</span>)',cmt:'<p>Modifie l\x27\xE9tat d\x27activation de l\x27enregistreur de donn\xE9es.</p>',par:{newval:'une valeur parmi <tt>Y_RECORDING_OFF</tt>, <tt>Y_RECORDING_ON</tt> et <tt>Y_RECORDING_PENDING</tt> repr&eacute;sentant l\x27\xE9tat d\x27activation de l\x27enregistreur de donn\xE9es'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['DataLogger']['set_timeUTC']={syn:'Modifie la r\xE9f\xE9rence de temps UTC, afin de l\x27attacher aux donn\xE9es enregistr\xE9es.',lib:'datalogger.set_timeUTC()',pro:'def set_timeUTC(<span id=pn>newval</span>)',cmt:'<p>Modifie la r\xE9f\xE9rence de temps UTC, afin de l\x27attacher aux donn\xE9es enregistr\xE9es.</p>',par:{newval:'un entier repr&eacute;sentant la r\xE9f\xE9rence de temps UTC, afin de l\x27attacher aux donn\xE9es enregistr\xE9es'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['DataLogger']['set_userData']={syn:'Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>.',lib:'datalogger.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',par:{data:'objet quelconque \xE0 m\xE9moriser'}};
+doc['DataLogger']['unmuteValueCallbacks']={syn:'R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'datalogger.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Cette fonction annule un pr\xE9c\xE9dent appel \xE0 <tt>muteValueCallbacks()</tt>. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+//--- (end of generated code: DataLogger)
+//--- (generated code: DualPower)
+doc['DualPower']={'':{syn:'Interface de contr\xF4le de l\x27alimentation',inc:'from yocto_dualpower import *',cmt:'<p>La librairie de programmation Yoctopuce permet de contr\xF4ler la source d\x27alimentation qui doit \xEAtre utilis\xE9e pour les fonctions du module consommant beaucoup de courant. Le module est par ailleurs capable de couper automatiquement l\x27alimentation externe lorsqu\x27il d\xE9tecte que la tension a trop chut\xE9 (batterie \xE9puis\xE9e).</p>'}};
+doc['DualPower']['FindDualPower']={syn:'Permet de retrouver un contr\xF4le d\x27alimentation d\x27apr\xE8s un identifiant donn\xE9.',lib:'YDualPower.FindDualPower()',pro:'def FindDualPower(<span id=pn>func</span>)',cmt:'<p>Permet de retrouver un contr\xF4le d\x27alimentation d\x27apr\xE8s un identifiant donn\xE9. L\x27identifiant peut \xEAtre sp\xE9cifi\xE9 sous plusieurs formes:<br> <ul> <li>NomLogiqueFonction</li> <li>NoSerieModule.IdentifiantFonction</li> <li>NoSerieModule.NomLogiqueFonction</li> <li>NomLogiqueModule.IdentifiantMat\xE9riel</li> <li>NomLogiqueModule.NomLogiqueFonction</li> </ul></p><p> Cette fonction n\x27exige pas que le contr\xF4le d\x27alimentation soit en ligne au moment ou elle est appel\xE9e, l\x27objet retourn\xE9 sera n\xE9anmoins valide. Utiliser la m\xE9thode <tt>YDualPower.isOnline()</tt> pour tester si le contr\xF4le d\x27alimentation est utilisable \xE0 un moment donn\xE9. En cas d\x27ambigu\xEFt\xE9 lorsqu\x27on fait une recherche par nom logique, aucune erreur ne sera notifi\xE9e: la premi\xE8re instance trouv\xE9e sera renvoy\xE9e. La recherche se fait d\x27abord par nom mat\xE9riel, puis par nom logique.</p>',par:{func:'une cha\xEEne de caract\xE8res qui r\xE9f\xE9rence le contr\xF4le d\x27alimentation sans ambigu\xEFt\xE9'},ret:'un objet de classe <tt>YDualPower</tt> qui permet ensuite de contr\xF4ler le contr\xF4le d\x27alimentation.'};
+doc['DualPower']['FirstDualPower']={syn:'Commence l\x27\xE9num\xE9ration des contr\xF4les d\x27alimentation accessibles par la librairie.',lib:'YDualPower.FirstDualPower()',pro:'def FirstDualPower()',cmt:'<p>Commence l\x27\xE9num\xE9ration des contr\xF4les d\x27alimentation accessibles par la librairie. Utiliser la fonction <tt>YDualPower.nextDualPower()</tt> pour it\xE9rer sur les autres contr\xF4les d\x27alimentation.</p>',ret:'un pointeur sur un objet <tt>YDualPower</tt>, correspondant au premier contr\xF4le d\x27alimentation accessible en ligne, ou <tt>null</tt> si il n\x27y a pas de contr\xF4les d\x27alimentation disponibles.'};
+doc['DualPower']['clearCache']={syn:'Invalide le cache.',lib:'dualpower.clearCache()',pro:'def clearCache()',cmt:'<p>Invalide le cache. Invalide le cache des valeurs courantes du contr\xF4le d\x27alimentation. Force le prochain appel \xE0 une m\xE9thode get_xxx() ou loadxxx() pour charger les les donn\xE9es depuis le module.</p>'};
+doc['DualPower']['describe']={syn:'Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du contr\xF4le d\x27alimentation au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'dualpower.describe()',pro:'def describe()',cmt:'<p>Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du contr\xF4le d\x27alimentation au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. Plus pr\xE9cis\xE9ment, <tt>TYPE</tt> correspond au type de fonction, <tt>NAME</tt> correspond au nom utils\xE9 lors du premier acc\xE8s a la fonction, <tt>SERIAL</tt> correspond au num\xE9ro de s\xE9rie du module si le module est connect\xE9, ou <tt>\x22unresolved\x22</tt> sinon, et <tt>FUNCTIONID</tt> correspond \xE0 l\x27identifiant mat\xE9riel de la fonction si le module est connect\xE9. Par exemple, La methode va retourner <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> si le module est d\xE9j\xE0 connect\xE9 ou <tt>Relay(BadCustomeName.relay1)=unresolved</tt> si le module n\x27est pas d\xE9j\xE0 connect\xE9. Cette methode ne declenche aucune transaction USB ou TCP et peut donc \xEAtre utilis\xE9 dans un debuggeur.</p>',ret:'une cha\xEEne de caract\xE8res d\xE9crivant le contr\xF4le d\x27alimentation (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['DualPower']['get_advertisedValue']={syn:'Retourne la valeur courante du contr\xF4le d\x27alimentation (pas plus de 6 caract\xE8res).',lib:'dualpower.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Retourne la valeur courante du contr\xF4le d\x27alimentation (pas plus de 6 caract\xE8res).</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur courante du contr\xF4le d\x27alimentation (pas plus de 6 caract\xE8res).',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['DualPower']['get_errorMessage']={syn:'Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du contr\xF4le d\x27alimentation.',lib:'dualpower.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du contr\xF4le d\x27alimentation. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'une cha\xEEne de caract\xE8res correspondant au message de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du contr\xF4le d\x27alimentation.'};
+doc['DualPower']['get_errorType']={syn:'Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du contr\xF4le d\x27alimentation.',lib:'dualpower.get_errorType()',pro:'def get_errorType()',cmt:'<p>Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du contr\xF4le d\x27alimentation. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'un nombre correspondant au code de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du contr\xF4le d\x27alimentation.'};
+doc['DualPower']['get_extVoltage']={syn:'Retourne la tension mesur\xE9e sur l\x27alimentation de puissance externe, en millivolts.',lib:'dualpower.get_extVoltage()',pro:'def get_extVoltage()',cmt:'<p>Retourne la tension mesur\xE9e sur l\x27alimentation de puissance externe, en millivolts.</p>',ret:'un entier repr&eacute;sentant la tension mesur\xE9e sur l\x27alimentation de puissance externe, en millivolts',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_EXTVOLTAGE_INVALID</tt>.'};
+doc['DualPower']['get_friendlyName']={syn:'Retourne un identifiant global du contr\xF4le d\x27alimentation au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>.',lib:'dualpower.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Retourne un identifiant global du contr\xF4le d\x27alimentation au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>. Le cha\xEEne retourn\xE9e utilise soit les noms logiques du module et du contr\xF4le d\x27alimentation si ils sont d\xE9finis, soit respectivement le num\xE9ro de s\xE9rie du module et l\x27identifant mat\xE9riel du contr\xF4le d\x27alimentation (par exemple: <tt>MyCustomName.relay1</tt>)</p>',ret:'une cha\xEEne de caract\xE8res identifiant le contr\xF4le d\x27alimentation en utilisant les noms logiques (ex: <tt>MyCustomName.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['DualPower']['get_functionDescriptor']={syn:'Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction.',lib:'dualpower.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction. Cet identifiant peut \xEAtre utilis\xE9 pour tester si deux instance de <tt>YFunction</tt> r\xE9f\xE9rencent physiquement la m\xEAme fonction sur le m\xEAme module.</p>',ret:'un identifiant de type <tt>YFUN_DESCR</tt>.',ext:'Si la fonction n\x27a jamais \xE9t\xE9 contact\xE9e, la valeur retourn\xE9e sera <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>'};
+doc['DualPower']['get_functionId']={syn:'Retourne l\x27identifiant mat\xE9riel du contr\xF4le d\x27alimentation, sans r\xE9f\xE9rence au module.',lib:'dualpower.get_functionId()',pro:'def get_functionId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel du contr\xF4le d\x27alimentation, sans r\xE9f\xE9rence au module. Par example <tt>relay1</tt>.</p>',ret:'une cha\xEEne de caract\xE8res identifiant le contr\xF4le d\x27alimentation (ex: <tt>relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['DualPower']['get_hardwareId']={syn:'Retourne l\x27identifiant mat\xE9riel unique du contr\xF4le d\x27alimentation au format <tt>SERIAL.FUNCTIONID</tt>.',lib:'dualpower.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel unique du contr\xF4le d\x27alimentation au format <tt>SERIAL.FUNCTIONID</tt>. L\x27identifiant unique est compos\xE9 du num\xE9ro de s\xE9rie du module et de l\x27identifiant mat\xE9riel du contr\xF4le d\x27alimentation (par example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'une cha\xEEne de caract\xE8res identifiant le contr\xF4le d\x27alimentation (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['DualPower']['get_logicalName']={syn:'Retourne le nom logique du contr\xF4le d\x27alimentation.',lib:'dualpower.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Retourne le nom logique du contr\xF4le d\x27alimentation.</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du contr\xF4le d\x27alimentation.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['DualPower']['get_module']={syn:'Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction.',lib:'dualpower.get_module()',pro:'def get_module()',cmt:'<p>Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction. Si la fonction ne peut \xEAtre trouv\xE9e sur aucun module, l\x27instance de <tt>YModule</tt> retourn\xE9e ne sera pas joignable.</p>',ret:'une instance de <tt>YModule</tt>'};
+doc['DualPower']['get_powerControl']={syn:'Retourne le mode d\x27alimentation choisi pour les fonctions du module consommant beaucoup de courant.',lib:'dualpower.get_powerControl()',pro:'def get_powerControl()',cmt:'<p>Retourne le mode d\x27alimentation choisi pour les fonctions du module consommant beaucoup de courant.</p>',ret:'une valeur parmi <tt>Y_POWERCONTROL_AUTO</tt>, <tt>Y_POWERCONTROL_FROM_USB</tt>, <tt>Y_POWERCONTROL_FROM_EXT</tt> et <tt>Y_POWERCONTROL_OFF</tt> repr&eacute;sentant le mode d\x27alimentation choisi pour les fonctions du module consommant beaucoup de courant',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_POWERCONTROL_INVALID</tt>.'};
+doc['DualPower']['get_powerState']={syn:'Retourne la source d\x27alimentation active pour les fonctions du module consommant beaucoup de courant.',lib:'dualpower.get_powerState()',pro:'def get_powerState()',cmt:'<p>Retourne la source d\x27alimentation active pour les fonctions du module consommant beaucoup de courant.</p>',ret:'une valeur parmi <tt>Y_POWERSTATE_OFF</tt>, <tt>Y_POWERSTATE_FROM_USB</tt> et <tt>Y_POWERSTATE_FROM_EXT</tt> repr&eacute;sentant la source d\x27alimentation active pour les fonctions du module consommant beaucoup de courant',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_POWERSTATE_INVALID</tt>.'};
+doc['DualPower']['get_userData']={syn:'Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>.',lib:'dualpower.get_userData()',pro:'def get_userData()',cmt:'<p>Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',ret:'l\x27objet stock\xE9 pr\xE9c\xE9demment par l\x27appelant.'};
+doc['DualPower']['isOnline']={syn:'V\xE9rifie si le module h\xE9bergeant le contr\xF4le d\x27alimentation est joignable, sans d\xE9clencher d\x27erreur.',lib:'dualpower.isOnline()',pro:'def isOnline()',cmt:'<p>V\xE9rifie si le module h\xE9bergeant le contr\xF4le d\x27alimentation est joignable, sans d\xE9clencher d\x27erreur. Si les valeurs des attributs en cache du contr\xF4le d\x27alimentation sont valides au moment de l\x27appel, le module est consid\xE9r\xE9 joignable. Cette fonction ne cause en aucun cas d\x27exception, quelle que soit l\x27erreur qui pourrait se produire lors de la v\xE9rification de joignabilit\xE9.</p>',ret:'<tt>true</tt> si le contr\xF4le d\x27alimentation est joignable, <tt>false</tt> sinon'};
+doc['DualPower']['load']={syn:'Met en cache les valeurs courantes du contr\xF4le d\x27alimentation, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e.',lib:'dualpower.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Met en cache les valeurs courantes du contr\xF4le d\x27alimentation, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e. Par d\xE9faut, lorsqu\x27on acc\xE8de \xE0 un module, tous les attributs des fonctions du module sont automatiquement mises en cache pour la dur\xE9e standard (5 ms). Cette m\xE9thode peut \xEAtre utilis\xE9e pour marquer occasionellement les donn\xE9es cach\xE9es comme valides pour une plus longue p\xE9riode, par exemple dans le but de r\xE9duire le trafic r\xE9seau.</p>',par:{msValidity:'un entier correspondant \xE0 la dur\xE9e de validit\xE9 attribu\xE9e aux les param\xE8tres charg\xE9s, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['DualPower']['loadAttribute']={syn:'Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.',lib:'dualpower.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un cha\xEEne vide.'};
+doc['DualPower']['muteValueCallbacks']={syn:'D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'dualpower.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Vous pouvez utiliser cette fonction pour \xE9conomiser la bande passante et le CPU sur les machines de faible puissance, ou pour \xE9viter le d\xE9clanchement de callbacks HTTP. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['DualPower']['nextDualPower']={syn:'Continue l\x27\xE9num\xE9ration des contr\xF4les d\x27alimentation commenc\xE9e \xE0 l\x27aide de <tt>yFirstDualPower()</tt>.',lib:'dualpower.nextDualPower()',pro:'def nextDualPower()',cmt:'<p>Continue l\x27\xE9num\xE9ration des contr\xF4les d\x27alimentation commenc\xE9e \xE0 l\x27aide de <tt>yFirstDualPower()</tt>.</p>',ret:'un pointeur sur un objet <tt>YDualPower</tt> accessible en ligne, ou <tt>null</tt> lorsque l\x27\xE9num\xE9ration est termin\xE9e.'};
+doc['DualPower']['registerValueCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e.',lib:'dualpower.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callback peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callback ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et la cha\xEEne de caract\xE8re d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['DualPower']['set_logicalName']={syn:'Modifie le nom logique du contr\xF4le d\x27alimentation.',lib:'dualpower.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Modifie le nom logique du contr\xF4le d\x27alimentation. Vous pouvez utiliser <tt>yCheckLogicalName()</tt> pour v\xE9rifier si votre param\xE8tre est valide. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du contr\xF4le d\x27alimentation.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27appel se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['DualPower']['set_powerControl']={syn:'Modifie le mode d\x27alimentation choisi pour les fonctions du module consommant beaucoup de courant.',lib:'dualpower.set_powerControl()',pro:'def set_powerControl(<span id=pn>newval</span>)',cmt:'<p>Modifie le mode d\x27alimentation choisi pour les fonctions du module consommant beaucoup de courant.</p>',par:{newval:'une valeur parmi <tt>Y_POWERCONTROL_AUTO</tt>, <tt>Y_POWERCONTROL_FROM_USB</tt>, <tt>Y_POWERCONTROL_FROM_EXT</tt> et <tt>Y_POWERCONTROL_OFF</tt> repr&eacute;sentant le mode d\x27alimentation choisi pour les fonctions du module consommant beaucoup de courant'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['DualPower']['set_userData']={syn:'Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>.',lib:'dualpower.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',par:{data:'objet quelconque \xE0 m\xE9moriser'}};
+doc['DualPower']['unmuteValueCallbacks']={syn:'R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'dualpower.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Cette fonction annule un pr\xE9c\xE9dent appel \xE0 <tt>muteValueCallbacks()</tt>. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+//--- (end of generated code: DualPower)
+//--- (generated code: Servo)
+doc['Servo']={'':{syn:'Interface de la fonction Servo',inc:'from yocto_servo import *',cmt:'<p>La librairie de programmation Yoctopuce permet non seulement de d\xE9placer le servo vers une position donn\xE9e, mais aussi de sp\xE9cifier l\x27interval de temps dans lequel le mouvement doit \xEAtre fait, de sorte \xE0 pouvoir synchroniser un mouvement sur plusieurs servos.</p>'}};
+doc['Servo']['FindServo']={syn:'Permet de retrouver un servo d\x27apr\xE8s un identifiant donn\xE9.',lib:'YServo.FindServo()',pro:'def FindServo(<span id=pn>func</span>)',cmt:'<p>Permet de retrouver un servo d\x27apr\xE8s un identifiant donn\xE9. L\x27identifiant peut \xEAtre sp\xE9cifi\xE9 sous plusieurs formes:<br> <ul> <li>NomLogiqueFonction</li> <li>NoSerieModule.IdentifiantFonction</li> <li>NoSerieModule.NomLogiqueFonction</li> <li>NomLogiqueModule.IdentifiantMat\xE9riel</li> <li>NomLogiqueModule.NomLogiqueFonction</li> </ul></p><p> Cette fonction n\x27exige pas que le servo soit en ligne au moment ou elle est appel\xE9e, l\x27objet retourn\xE9 sera n\xE9anmoins valide. Utiliser la m\xE9thode <tt>YServo.isOnline()</tt> pour tester si le servo est utilisable \xE0 un moment donn\xE9. En cas d\x27ambigu\xEFt\xE9 lorsqu\x27on fait une recherche par nom logique, aucune erreur ne sera notifi\xE9e: la premi\xE8re instance trouv\xE9e sera renvoy\xE9e. La recherche se fait d\x27abord par nom mat\xE9riel, puis par nom logique.</p>',par:{func:'une cha\xEEne de caract\xE8res qui r\xE9f\xE9rence le servo sans ambigu\xEFt\xE9'},ret:'un objet de classe <tt>YServo</tt> qui permet ensuite de contr\xF4ler le servo.'};
+doc['Servo']['FirstServo']={syn:'Commence l\x27\xE9num\xE9ration des servo accessibles par la librairie.',lib:'YServo.FirstServo()',pro:'def FirstServo()',cmt:'<p>Commence l\x27\xE9num\xE9ration des servo accessibles par la librairie. Utiliser la fonction <tt>YServo.nextServo()</tt> pour it\xE9rer sur les autres servo.</p>',ret:'un pointeur sur un objet <tt>YServo</tt>, correspondant au premier servo accessible en ligne, ou <tt>null</tt> si il n\x27y a pas de servo disponibles.'};
+doc['Servo']['clearCache']={syn:'Invalide le cache.',lib:'servo.clearCache()',pro:'def clearCache()',cmt:'<p>Invalide le cache. Invalide le cache des valeurs courantes du servo. Force le prochain appel \xE0 une m\xE9thode get_xxx() ou loadxxx() pour charger les les donn\xE9es depuis le module.</p>'};
+doc['Servo']['describe']={syn:'Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du servo au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'servo.describe()',pro:'def describe()',cmt:'<p>Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du servo au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. Plus pr\xE9cis\xE9ment, <tt>TYPE</tt> correspond au type de fonction, <tt>NAME</tt> correspond au nom utils\xE9 lors du premier acc\xE8s a la fonction, <tt>SERIAL</tt> correspond au num\xE9ro de s\xE9rie du module si le module est connect\xE9, ou <tt>\x22unresolved\x22</tt> sinon, et <tt>FUNCTIONID</tt> correspond \xE0 l\x27identifiant mat\xE9riel de la fonction si le module est connect\xE9. Par exemple, La methode va retourner <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> si le module est d\xE9j\xE0 connect\xE9 ou <tt>Relay(BadCustomeName.relay1)=unresolved</tt> si le module n\x27est pas d\xE9j\xE0 connect\xE9. Cette methode ne declenche aucune transaction USB ou TCP et peut donc \xEAtre utilis\xE9 dans un debuggeur.</p>',ret:'une cha\xEEne de caract\xE8res d\xE9crivant le servo (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['Servo']['get_advertisedValue']={syn:'Retourne la valeur courante du servo (pas plus de 6 caract\xE8res).',lib:'servo.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Retourne la valeur courante du servo (pas plus de 6 caract\xE8res).</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur courante du servo (pas plus de 6 caract\xE8res).',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['Servo']['get_enabled']={syn:'Retourne l\x27\xE9tat de fonctionnement du $FUNCTION$.',lib:'servo.get_enabled()',pro:'def get_enabled()',cmt:'<p>Retourne l\x27\xE9tat de fonctionnement du $FUNCTION$.</p>',ret:'soit <tt>Y_ENABLED_FALSE</tt>, soit <tt>Y_ENABLED_TRUE</tt>, selon l\x27\xE9tat de fonctionnement du $FUNCTION$',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_ENABLED_INVALID</tt>.'};
+doc['Servo']['get_enabledAtPowerOn']={syn:'Retourne l\x27\xE9tat du g\xE9n\xE9rateur de signal de commande du servo au d\xE9marrage du module.',lib:'servo.get_enabledAtPowerOn()',pro:'def get_enabledAtPowerOn()',cmt:'<p>Retourne l\x27\xE9tat du g\xE9n\xE9rateur de signal de commande du servo au d\xE9marrage du module.</p>',ret:'soit <tt>Y_ENABLEDATPOWERON_FALSE</tt>, soit <tt>Y_ENABLEDATPOWERON_TRUE</tt>, selon l\x27\xE9tat du g\xE9n\xE9rateur de signal de commande du servo au d\xE9marrage du module',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_ENABLEDATPOWERON_INVALID</tt>.'};
+doc['Servo']['get_errorMessage']={syn:'Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du servo.',lib:'servo.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du servo. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'une cha\xEEne de caract\xE8res correspondant au message de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du servo.'};
+doc['Servo']['get_errorType']={syn:'Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du servo.',lib:'servo.get_errorType()',pro:'def get_errorType()',cmt:'<p>Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du servo. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'un nombre correspondant au code de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du servo.'};
+doc['Servo']['get_friendlyName']={syn:'Retourne un identifiant global du servo au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>.',lib:'servo.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Retourne un identifiant global du servo au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>. Le cha\xEEne retourn\xE9e utilise soit les noms logiques du module et du servo si ils sont d\xE9finis, soit respectivement le num\xE9ro de s\xE9rie du module et l\x27identifant mat\xE9riel du servo (par exemple: <tt>MyCustomName.relay1</tt>)</p>',ret:'une cha\xEEne de caract\xE8res identifiant le servo en utilisant les noms logiques (ex: <tt>MyCustomName.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['Servo']['get_functionDescriptor']={syn:'Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction.',lib:'servo.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction. Cet identifiant peut \xEAtre utilis\xE9 pour tester si deux instance de <tt>YFunction</tt> r\xE9f\xE9rencent physiquement la m\xEAme fonction sur le m\xEAme module.</p>',ret:'un identifiant de type <tt>YFUN_DESCR</tt>.',ext:'Si la fonction n\x27a jamais \xE9t\xE9 contact\xE9e, la valeur retourn\xE9e sera <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>'};
+doc['Servo']['get_functionId']={syn:'Retourne l\x27identifiant mat\xE9riel du servo, sans r\xE9f\xE9rence au module.',lib:'servo.get_functionId()',pro:'def get_functionId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel du servo, sans r\xE9f\xE9rence au module. Par example <tt>relay1</tt>.</p>',ret:'une cha\xEEne de caract\xE8res identifiant le servo (ex: <tt>relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['Servo']['get_hardwareId']={syn:'Retourne l\x27identifiant mat\xE9riel unique du servo au format <tt>SERIAL.FUNCTIONID</tt>.',lib:'servo.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel unique du servo au format <tt>SERIAL.FUNCTIONID</tt>. L\x27identifiant unique est compos\xE9 du num\xE9ro de s\xE9rie du module et de l\x27identifiant mat\xE9riel du servo (par example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'une cha\xEEne de caract\xE8res identifiant le servo (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['Servo']['get_logicalName']={syn:'Retourne le nom logique du servo.',lib:'servo.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Retourne le nom logique du servo.</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du servo.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['Servo']['get_module']={syn:'Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction.',lib:'servo.get_module()',pro:'def get_module()',cmt:'<p>Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction. Si la fonction ne peut \xEAtre trouv\xE9e sur aucun module, l\x27instance de <tt>YModule</tt> retourn\xE9e ne sera pas joignable.</p>',ret:'une instance de <tt>YModule</tt>'};
+doc['Servo']['get_neutral']={syn:'Retourne la dur\xE9e en microsecondes de l\x27impulsion correspondant au neutre du servo.',lib:'servo.get_neutral()',pro:'def get_neutral()',cmt:'<p>Retourne la dur\xE9e en microsecondes de l\x27impulsion correspondant au neutre du servo.</p>',ret:'un entier repr&eacute;sentant la dur\xE9e en microsecondes de l\x27impulsion correspondant au neutre du servo',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_NEUTRAL_INVALID</tt>.'};
+doc['Servo']['get_position']={syn:'Retourne la position courante du servo.',lib:'servo.get_position()',pro:'def get_position()',cmt:'<p>Retourne la position courante du servo.</p>',ret:'un entier repr&eacute;sentant la position courante du servo',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_POSITION_INVALID</tt>.'};
+doc['Servo']['get_positionAtPowerOn']={syn:'Retourne la position du servo au d\xE9marrage du module.',lib:'servo.get_positionAtPowerOn()',pro:'def get_positionAtPowerOn()',cmt:'<p>Retourne la position du servo au d\xE9marrage du module.</p>',ret:'un entier repr&eacute;sentant la position du servo au d\xE9marrage du module',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_POSITIONATPOWERON_INVALID</tt>.'};
+doc['Servo']['get_range']={syn:'Retourne la plage d\x27utilisation du servo.',lib:'servo.get_range()',pro:'def get_range()',cmt:'<p>Retourne la plage d\x27utilisation du servo.</p>',ret:'un entier repr&eacute;sentant la plage d\x27utilisation du servo',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_RANGE_INVALID</tt>.'};
+doc['Servo']['get_userData']={syn:'Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>.',lib:'servo.get_userData()',pro:'def get_userData()',cmt:'<p>Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',ret:'l\x27objet stock\xE9 pr\xE9c\xE9demment par l\x27appelant.'};
+doc['Servo']['isOnline']={syn:'V\xE9rifie si le module h\xE9bergeant le servo est joignable, sans d\xE9clencher d\x27erreur.',lib:'servo.isOnline()',pro:'def isOnline()',cmt:'<p>V\xE9rifie si le module h\xE9bergeant le servo est joignable, sans d\xE9clencher d\x27erreur. Si les valeurs des attributs en cache du servo sont valides au moment de l\x27appel, le module est consid\xE9r\xE9 joignable. Cette fonction ne cause en aucun cas d\x27exception, quelle que soit l\x27erreur qui pourrait se produire lors de la v\xE9rification de joignabilit\xE9.</p>',ret:'<tt>true</tt> si le servo est joignable, <tt>false</tt> sinon'};
+doc['Servo']['load']={syn:'Met en cache les valeurs courantes du servo, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e.',lib:'servo.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Met en cache les valeurs courantes du servo, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e. Par d\xE9faut, lorsqu\x27on acc\xE8de \xE0 un module, tous les attributs des fonctions du module sont automatiquement mises en cache pour la dur\xE9e standard (5 ms). Cette m\xE9thode peut \xEAtre utilis\xE9e pour marquer occasionellement les donn\xE9es cach\xE9es comme valides pour une plus longue p\xE9riode, par exemple dans le but de r\xE9duire le trafic r\xE9seau.</p>',par:{msValidity:'un entier correspondant \xE0 la dur\xE9e de validit\xE9 attribu\xE9e aux les param\xE8tres charg\xE9s, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Servo']['loadAttribute']={syn:'Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.',lib:'servo.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un cha\xEEne vide.'};
+doc['Servo']['move']={syn:'D\xE9clenche un mouvement \xE0 vitesse constante vers une position donn\xE9e.',lib:'servo.move()',pro:'def move(<span id=pn>target</span>, <span id=pn>ms_duration</span>)',cmt:'<p>D\xE9clenche un mouvement \xE0 vitesse constante vers une position donn\xE9e.</p>',par:{target:'nouvelle position \xE0 la fin du mouvement',ms_duration:'dur\xE9e totale du mouvement, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Servo']['muteValueCallbacks']={syn:'D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'servo.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Vous pouvez utiliser cette fonction pour \xE9conomiser la bande passante et le CPU sur les machines de faible puissance, ou pour \xE9viter le d\xE9clanchement de callbacks HTTP. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Servo']['nextServo']={syn:'Continue l\x27\xE9num\xE9ration des servo commenc\xE9e \xE0 l\x27aide de <tt>yFirstServo()</tt>.',lib:'servo.nextServo()',pro:'def nextServo()',cmt:'<p>Continue l\x27\xE9num\xE9ration des servo commenc\xE9e \xE0 l\x27aide de <tt>yFirstServo()</tt>.</p>',ret:'un pointeur sur un objet <tt>YServo</tt> accessible en ligne, ou <tt>null</tt> lorsque l\x27\xE9num\xE9ration est termin\xE9e.'};
+doc['Servo']['registerValueCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e.',lib:'servo.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callback peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callback ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et la cha\xEEne de caract\xE8re d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['Servo']['set_enabled']={syn:'D\xE9marre ou arr\xEAte le $FUNCTION$.',lib:'servo.set_enabled()',pro:'def set_enabled(<span id=pn>newval</span>)',cmt:'<p>D\xE9marre ou arr\xEAte le $FUNCTION$.</p>',par:{newval:'soit <tt>Y_ENABLED_FALSE</tt>, soit <tt>Y_ENABLED_TRUE</tt>'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Servo']['set_enabledAtPowerOn']={syn:'Configure l\x27\xE9tat du g\xE9n\xE9rateur de signal de commande du servo au d\xE9marrage du module.',lib:'servo.set_enabledAtPowerOn()',pro:'def set_enabledAtPowerOn(<span id=pn>newval</span>)',cmt:'<p>Configure l\x27\xE9tat du g\xE9n\xE9rateur de signal de commande du servo au d\xE9marrage du module. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module sinon la modification n\x27aura aucun effet.</p>',par:{newval:'soit <tt>Y_ENABLEDATPOWERON_FALSE</tt>, soit <tt>Y_ENABLEDATPOWERON_TRUE</tt>'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Servo']['set_logicalName']={syn:'Modifie le nom logique du servo.',lib:'servo.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Modifie le nom logique du servo. Vous pouvez utiliser <tt>yCheckLogicalName()</tt> pour v\xE9rifier si votre param\xE8tre est valide. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du servo.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27appel se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Servo']['set_neutral']={syn:'Modifie la dur\xE9e de l\x27impulsion correspondant \xE0 la position neutre du servo.',lib:'servo.set_neutral()',pro:'def set_neutral(<span id=pn>newval</span>)',cmt:'<p>Modifie la dur\xE9e de l\x27impulsion correspondant \xE0 la position neutre du servo. La dur\xE9e est sp\xE9cifi\xE9e en microsecondes, et la valeur standard est 1500 [us]. Ce r\xE9glage permet de d\xE9caler la plage d\x27utilisation du servo. Attention, l\x27utilisation d\x27une plage sup\xE9rieure aux caract\xE9ristiques du servo risque fortement d\x27endommager le servo. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module sinon la modification n\x27aura aucun effet.</p>',par:{newval:'un entier repr&eacute;sentant la dur\xE9e de l\x27impulsion correspondant \xE0 la position neutre du servo'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Servo']['set_position']={syn:'Modifie imm\xE9diatement la consigne de position du servo.',lib:'servo.set_position()',pro:'def set_position(<span id=pn>newval</span>)',cmt:'<p>Modifie imm\xE9diatement la consigne de position du servo.</p>',par:{newval:'un entier repr&eacute;sentant imm\xE9diatement la consigne de position du servo'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Servo']['set_positionAtPowerOn']={syn:'Configure la position du servo au d\xE9marrage du module.',lib:'servo.set_positionAtPowerOn()',pro:'def set_positionAtPowerOn(<span id=pn>newval</span>)',cmt:'<p>Configure la position du servo au d\xE9marrage du module. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module sinon la modification n\x27aura aucun effet.</p>',par:{newval:'un entier'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Servo']['set_range']={syn:'Modifie la plage d\x27utilisation du servo, en pourcents.',lib:'servo.set_range()',pro:'def set_range(<span id=pn>newval</span>)',cmt:'<p>Modifie la plage d\x27utilisation du servo, en pourcents. La valeur 100% correspond \xE0 un signal de commande standard, variant de 1 [ms] \xE0 2 [ms]. Pour les servos supportent une plage double, de 0.5 [ms] \xE0 2.5 [ms], vous pouvez utiliser une valeur allant jusqu\x27\xE0 200%. Attention, l\x27utilisation d\x27une plage sup\xE9rieure aux caract\xE9ristiques du servo risque fortement d\x27endommager le servo. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module sinon la modification n\x27aura aucun effet.</p>',par:{newval:'un entier repr&eacute;sentant la plage d\x27utilisation du servo, en pourcents'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Servo']['set_userData']={syn:'Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>.',lib:'servo.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',par:{data:'objet quelconque \xE0 m\xE9moriser'}};
+doc['Servo']['unmuteValueCallbacks']={syn:'R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'servo.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Cette fonction annule un pr\xE9c\xE9dent appel \xE0 <tt>muteValueCallbacks()</tt>. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+//--- (end of generated code: Servo)
+//--- (generated code: Relay)
+doc['Relay']={'':{syn:'Interface de la fonction Relay',inc:'from yocto_relay import *',cmt:'<p>La librairie de programmation Yoctopuce permet simplement de changer l\x27\xE9tat du relais. Le changement d\x27\xE9tat n\x27est pas persistant: le relais retournera spontan\xE9ment \xE0 sa position de repos d\xE8s que le module est mis hors tension ou red\xE9marr\xE9. La librairie permet aussi de cr\xE9er des courtes impulsions de dur\xE9e d\xE9termin\xE9e. Pour les modules dot\xE9s de deux sorties par relais (relai inverseur), les deux sorties sont appel\xE9es A et B, la sortie A correspondant a la position de repos (hors tension) et la sortie B correspondant \xE0 l\x27\xE9tat actif. Si vous pr\xE9f\xE9reriez l\x27\xE9tat par d\xE9faut oppos\xE9, vous pouvez simplement changer vos fils sur le bornier.</p>'}};
+doc['Relay']['FindRelay']={syn:'Permet de retrouver un relais d\x27apr\xE8s un identifiant donn\xE9.',lib:'YRelay.FindRelay()',pro:'def FindRelay(<span id=pn>func</span>)',cmt:'<p>Permet de retrouver un relais d\x27apr\xE8s un identifiant donn\xE9. L\x27identifiant peut \xEAtre sp\xE9cifi\xE9 sous plusieurs formes:<br> <ul> <li>NomLogiqueFonction</li> <li>NoSerieModule.IdentifiantFonction</li> <li>NoSerieModule.NomLogiqueFonction</li> <li>NomLogiqueModule.IdentifiantMat\xE9riel</li> <li>NomLogiqueModule.NomLogiqueFonction</li> </ul></p><p> Cette fonction n\x27exige pas que le relais soit en ligne au moment ou elle est appel\xE9e, l\x27objet retourn\xE9 sera n\xE9anmoins valide. Utiliser la m\xE9thode <tt>YRelay.isOnline()</tt> pour tester si le relais est utilisable \xE0 un moment donn\xE9. En cas d\x27ambigu\xEFt\xE9 lorsqu\x27on fait une recherche par nom logique, aucune erreur ne sera notifi\xE9e: la premi\xE8re instance trouv\xE9e sera renvoy\xE9e. La recherche se fait d\x27abord par nom mat\xE9riel, puis par nom logique.</p>',par:{func:'une cha\xEEne de caract\xE8res qui r\xE9f\xE9rence le relais sans ambigu\xEFt\xE9'},ret:'un objet de classe <tt>YRelay</tt> qui permet ensuite de contr\xF4ler le relais.'};
+doc['Relay']['FirstRelay']={syn:'Commence l\x27\xE9num\xE9ration des relais accessibles par la librairie.',lib:'YRelay.FirstRelay()',pro:'def FirstRelay()',cmt:'<p>Commence l\x27\xE9num\xE9ration des relais accessibles par la librairie. Utiliser la fonction <tt>YRelay.nextRelay()</tt> pour it\xE9rer sur les autres relais.</p>',ret:'un pointeur sur un objet <tt>YRelay</tt>, correspondant au premier relais accessible en ligne, ou <tt>null</tt> si il n\x27y a pas de relais disponibles.'};
+doc['Relay']['clearCache']={syn:'Invalide le cache.',lib:'relay.clearCache()',pro:'def clearCache()',cmt:'<p>Invalide le cache. Invalide le cache des valeurs courantes du relais. Force le prochain appel \xE0 une m\xE9thode get_xxx() ou loadxxx() pour charger les les donn\xE9es depuis le module.</p>'};
+doc['Relay']['delayedPulse']={syn:'Pr\xE9-programme une impulsion ',lib:'relay.delayedPulse()',pro:'def delayedPulse(<span id=pn>ms_delay</span>, <span id=pn>ms_duration</span>)',cmt:'<p>Pr\xE9-programme une impulsion</p>',par:{ms_delay:'delai d\x27attente avant l\x27impulsion, en millisecondes',ms_duration:'dur\xE9e de l\x27impulsion, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Relay']['describe']={syn:'Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du relais au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'relay.describe()',pro:'def describe()',cmt:'<p>Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du relais au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. Plus pr\xE9cis\xE9ment, <tt>TYPE</tt> correspond au type de fonction, <tt>NAME</tt> correspond au nom utils\xE9 lors du premier acc\xE8s a la fonction, <tt>SERIAL</tt> correspond au num\xE9ro de s\xE9rie du module si le module est connect\xE9, ou <tt>\x22unresolved\x22</tt> sinon, et <tt>FUNCTIONID</tt> correspond \xE0 l\x27identifiant mat\xE9riel de la fonction si le module est connect\xE9. Par exemple, La methode va retourner <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> si le module est d\xE9j\xE0 connect\xE9 ou <tt>Relay(BadCustomeName.relay1)=unresolved</tt> si le module n\x27est pas d\xE9j\xE0 connect\xE9. Cette methode ne declenche aucune transaction USB ou TCP et peut donc \xEAtre utilis\xE9 dans un debuggeur.</p>',ret:'une cha\xEEne de caract\xE8res d\xE9crivant le relais (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['Relay']['get_advertisedValue']={syn:'Retourne la valeur courante du relais (pas plus de 6 caract\xE8res).',lib:'relay.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Retourne la valeur courante du relais (pas plus de 6 caract\xE8res).</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur courante du relais (pas plus de 6 caract\xE8res).',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['Relay']['get_countdown']={syn:'Retourne le nombre de millisecondes restantes avant le d\xE9clenchement d\x27une impulsion pr\xE9programm\xE9e par un appel \xE0 delayedPulse().',lib:'relay.get_countdown()',pro:'def get_countdown()',cmt:'<p>Retourne le nombre de millisecondes restantes avant le d\xE9clenchement d\x27une impulsion pr\xE9programm\xE9e par un appel \xE0 delayedPulse(). Si aucune impulsion n\x27est programm\xE9e, retourne z\xE9ro.</p>',ret:'un entier repr&eacute;sentant le nombre de millisecondes restantes avant le d\xE9clenchement d\x27une impulsion pr\xE9programm\xE9e par un appel \xE0 delayedPulse()',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_COUNTDOWN_INVALID</tt>.'};
+doc['Relay']['get_errorMessage']={syn:'Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du relais.',lib:'relay.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du relais. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'une cha\xEEne de caract\xE8res correspondant au message de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du relais.'};
+doc['Relay']['get_errorType']={syn:'Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du relais.',lib:'relay.get_errorType()',pro:'def get_errorType()',cmt:'<p>Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du relais. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'un nombre correspondant au code de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du relais.'};
+doc['Relay']['get_friendlyName']={syn:'Retourne un identifiant global du relais au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>.',lib:'relay.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Retourne un identifiant global du relais au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>. Le cha\xEEne retourn\xE9e utilise soit les noms logiques du module et du relais si ils sont d\xE9finis, soit respectivement le num\xE9ro de s\xE9rie du module et l\x27identifant mat\xE9riel du relais (par exemple: <tt>MyCustomName.relay1</tt>)</p>',ret:'une cha\xEEne de caract\xE8res identifiant le relais en utilisant les noms logiques (ex: <tt>MyCustomName.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['Relay']['get_functionDescriptor']={syn:'Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction.',lib:'relay.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction. Cet identifiant peut \xEAtre utilis\xE9 pour tester si deux instance de <tt>YFunction</tt> r\xE9f\xE9rencent physiquement la m\xEAme fonction sur le m\xEAme module.</p>',ret:'un identifiant de type <tt>YFUN_DESCR</tt>.',ext:'Si la fonction n\x27a jamais \xE9t\xE9 contact\xE9e, la valeur retourn\xE9e sera <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>'};
+doc['Relay']['get_functionId']={syn:'Retourne l\x27identifiant mat\xE9riel du relais, sans r\xE9f\xE9rence au module.',lib:'relay.get_functionId()',pro:'def get_functionId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel du relais, sans r\xE9f\xE9rence au module. Par example <tt>relay1</tt>.</p>',ret:'une cha\xEEne de caract\xE8res identifiant le relais (ex: <tt>relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['Relay']['get_hardwareId']={syn:'Retourne l\x27identifiant mat\xE9riel unique du relais au format <tt>SERIAL.FUNCTIONID</tt>.',lib:'relay.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel unique du relais au format <tt>SERIAL.FUNCTIONID</tt>. L\x27identifiant unique est compos\xE9 du num\xE9ro de s\xE9rie du module et de l\x27identifiant mat\xE9riel du relais (par example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'une cha\xEEne de caract\xE8res identifiant le relais (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['Relay']['get_logicalName']={syn:'Retourne le nom logique du relais.',lib:'relay.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Retourne le nom logique du relais.</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du relais.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['Relay']['get_maxTimeOnStateA']={syn:'Retourne le temps maximal (en ms) pendant lequel le relais peut rester dans l\x27\xE9tat A avant de basculer automatiquement dans l\x27\xE9tat B.',lib:'relay.get_maxTimeOnStateA()',pro:'def get_maxTimeOnStateA()',cmt:'<p>Retourne le temps maximal (en ms) pendant lequel le relais peut rester dans l\x27\xE9tat A avant de basculer automatiquement dans l\x27\xE9tat B. Z\xE9ro signifie qu\x27il n\x27y a pas de limitation</p>',ret:'un entier repr&eacute;sentant le temps maximal (en ms) pendant lequel le relais peut rester dans l\x27\xE9tat A avant de basculer automatiquement dans l\x27\xE9tat B',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_MAXTIMEONSTATEA_INVALID</tt>.'};
+doc['Relay']['get_maxTimeOnStateB']={syn:'Retourne le temps maximal (en ms) pendant lequel le relais peut rester dans l\x27\xE9tat B avant de basculer automatiquement dans l\x27\xE9tat A.',lib:'relay.get_maxTimeOnStateB()',pro:'def get_maxTimeOnStateB()',cmt:'<p>Retourne le temps maximal (en ms) pendant lequel le relais peut rester dans l\x27\xE9tat B avant de basculer automatiquement dans l\x27\xE9tat A. Z\xE9ro signifie qu\x27il n\x27y a pas de limitation</p>',ret:'un entier repr&eacute;sentant le temps maximal (en ms) pendant lequel le relais peut rester dans l\x27\xE9tat B avant de basculer automatiquement dans l\x27\xE9tat A',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_MAXTIMEONSTATEB_INVALID</tt>.'};
+doc['Relay']['get_module']={syn:'Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction.',lib:'relay.get_module()',pro:'def get_module()',cmt:'<p>Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction. Si la fonction ne peut \xEAtre trouv\xE9e sur aucun module, l\x27instance de <tt>YModule</tt> retourn\xE9e ne sera pas joignable.</p>',ret:'une instance de <tt>YModule</tt>'};
+doc['Relay']['get_output']={syn:'Retourne l\x27\xE9tat de la sortie du relais, lorsqu\x27il est utilis\xE9 comme un simple interrupteur.',lib:'relay.get_output()',pro:'def get_output()',cmt:'<p>Retourne l\x27\xE9tat de la sortie du relais, lorsqu\x27il est utilis\xE9 comme un simple interrupteur.</p>',ret:'soit <tt>Y_OUTPUT_OFF</tt>, soit <tt>Y_OUTPUT_ON</tt>, selon l\x27\xE9tat de la sortie du relais, lorsqu\x27il est utilis\xE9 comme un simple interrupteur',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_OUTPUT_INVALID</tt>.'};
+doc['Relay']['get_pulseTimer']={syn:'Retourne le nombre de millisecondes restantes avant le retour \xE0 la position de repos (\xE9tat A), durant la g\xE9n\xE9ration d\x27une impulsion mesur\xE9e.',lib:'relay.get_pulseTimer()',pro:'def get_pulseTimer()',cmt:'<p>Retourne le nombre de millisecondes restantes avant le retour \xE0 la position de repos (\xE9tat A), durant la g\xE9n\xE9ration d\x27une impulsion mesur\xE9e. Si aucune impulsion n\x27est en cours, retourne z\xE9ro.</p>',ret:'un entier repr&eacute;sentant le nombre de millisecondes restantes avant le retour \xE0 la position de repos (\xE9tat A), durant la g\xE9n\xE9ration d\x27une impulsion mesur\xE9e',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_PULSETIMER_INVALID</tt>.'};
+doc['Relay']['get_state']={syn:'Retourne l\x27\xE9tat du relais (A pour la position de repos, B pour l\x27\xE9tat actif).',lib:'relay.get_state()',pro:'def get_state()',cmt:'<p>Retourne l\x27\xE9tat du relais (A pour la position de repos, B pour l\x27\xE9tat actif).</p>',ret:'soit <tt>Y_STATE_A</tt>, soit <tt>Y_STATE_B</tt>, selon l\x27\xE9tat du relais (A pour la position de repos, B pour l\x27\xE9tat actif)',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_STATE_INVALID</tt>.'};
+doc['Relay']['get_stateAtPowerOn']={syn:'Retourne l\x27\xE9tat du relais au d\xE9marrage du module (A pour la position de repos, B pour l\x27\xE9tat actif, UNCHANGED pour aucun changement).',lib:'relay.get_stateAtPowerOn()',pro:'def get_stateAtPowerOn()',cmt:'<p>Retourne l\x27\xE9tat du relais au d\xE9marrage du module (A pour la position de repos, B pour l\x27\xE9tat actif, UNCHANGED pour aucun changement).</p>',ret:'une valeur parmi <tt>Y_STATEATPOWERON_UNCHANGED</tt>, <tt>Y_STATEATPOWERON_A</tt> et <tt>Y_STATEATPOWERON_B</tt> repr&eacute;sentant l\x27\xE9tat du relais au d\xE9marrage du module (A pour la position de repos, B pour l\x27\xE9tat actif, UNCHANGED pour aucun changement)',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_STATEATPOWERON_INVALID</tt>.'};
+doc['Relay']['get_userData']={syn:'Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>.',lib:'relay.get_userData()',pro:'def get_userData()',cmt:'<p>Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',ret:'l\x27objet stock\xE9 pr\xE9c\xE9demment par l\x27appelant.'};
+doc['Relay']['isOnline']={syn:'V\xE9rifie si le module h\xE9bergeant le relais est joignable, sans d\xE9clencher d\x27erreur.',lib:'relay.isOnline()',pro:'def isOnline()',cmt:'<p>V\xE9rifie si le module h\xE9bergeant le relais est joignable, sans d\xE9clencher d\x27erreur. Si les valeurs des attributs en cache du relais sont valides au moment de l\x27appel, le module est consid\xE9r\xE9 joignable. Cette fonction ne cause en aucun cas d\x27exception, quelle que soit l\x27erreur qui pourrait se produire lors de la v\xE9rification de joignabilit\xE9.</p>',ret:'<tt>true</tt> si le relais est joignable, <tt>false</tt> sinon'};
+doc['Relay']['load']={syn:'Met en cache les valeurs courantes du relais, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e.',lib:'relay.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Met en cache les valeurs courantes du relais, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e. Par d\xE9faut, lorsqu\x27on acc\xE8de \xE0 un module, tous les attributs des fonctions du module sont automatiquement mises en cache pour la dur\xE9e standard (5 ms). Cette m\xE9thode peut \xEAtre utilis\xE9e pour marquer occasionellement les donn\xE9es cach\xE9es comme valides pour une plus longue p\xE9riode, par exemple dans le but de r\xE9duire le trafic r\xE9seau.</p>',par:{msValidity:'un entier correspondant \xE0 la dur\xE9e de validit\xE9 attribu\xE9e aux les param\xE8tres charg\xE9s, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Relay']['loadAttribute']={syn:'Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.',lib:'relay.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un cha\xEEne vide.'};
+doc['Relay']['muteValueCallbacks']={syn:'D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'relay.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Vous pouvez utiliser cette fonction pour \xE9conomiser la bande passante et le CPU sur les machines de faible puissance, ou pour \xE9viter le d\xE9clanchement de callbacks HTTP. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Relay']['nextRelay']={syn:'Continue l\x27\xE9num\xE9ration des relais commenc\xE9e \xE0 l\x27aide de <tt>yFirstRelay()</tt>.',lib:'relay.nextRelay()',pro:'def nextRelay()',cmt:'<p>Continue l\x27\xE9num\xE9ration des relais commenc\xE9e \xE0 l\x27aide de <tt>yFirstRelay()</tt>.</p>',ret:'un pointeur sur un objet <tt>YRelay</tt> accessible en ligne, ou <tt>null</tt> lorsque l\x27\xE9num\xE9ration est termin\xE9e.'};
+doc['Relay']['pulse']={syn:'Commute le relais \xE0 l\x27\xE9tat B (actif) pour un dur\xE9e sp\xE9cifi\xE9e, puis revient ensuite spontan\xE9ment vers l\x27\xE9tat A (\xE9tat de repos).',lib:'relay.pulse()',pro:'def pulse(<span id=pn>ms_duration</span>)',cmt:'<p>Commute le relais \xE0 l\x27\xE9tat B (actif) pour un dur\xE9e sp\xE9cifi\xE9e, puis revient ensuite spontan\xE9ment vers l\x27\xE9tat A (\xE9tat de repos).</p>',par:{ms_duration:'dur\xE9e de l\x27impulsion, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Relay']['registerValueCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e.',lib:'relay.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callback peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callback ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et la cha\xEEne de caract\xE8re d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['Relay']['set_logicalName']={syn:'Modifie le nom logique du relais.',lib:'relay.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Modifie le nom logique du relais. Vous pouvez utiliser <tt>yCheckLogicalName()</tt> pour v\xE9rifier si votre param\xE8tre est valide. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du relais.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27appel se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Relay']['set_maxTimeOnStateA']={syn:'R\xE8gle le temps maximal (en ms) pendant lequel le relais peut rester dans l\x27\xE9tat A avant de basculer automatiquement dans l\x27\xE9tat B.',lib:'relay.set_maxTimeOnStateA()',pro:'def set_maxTimeOnStateA(<span id=pn>newval</span>)',cmt:'<p>R\xE8gle le temps maximal (en ms) pendant lequel le relais peut rester dans l\x27\xE9tat A avant de basculer automatiquement dans l\x27\xE9tat B. Z\xE9ro signifie qu\x27il n\x27y a pas de limitation</p>',par:{newval:'un entier'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Relay']['set_maxTimeOnStateB']={syn:'R\xE8gle le temps maximal (en ms) pendant lequel le relais peut rester dans l\x27\xE9tat B avant de basculer automatiquement dans l\x27\xE9tat A.',lib:'relay.set_maxTimeOnStateB()',pro:'def set_maxTimeOnStateB(<span id=pn>newval</span>)',cmt:'<p>R\xE8gle le temps maximal (en ms) pendant lequel le relais peut rester dans l\x27\xE9tat B avant de basculer automatiquement dans l\x27\xE9tat A. Z\xE9ro signifie qu\x27il n\x27y a pas de limitation</p>',par:{newval:'un entier'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Relay']['set_output']={syn:'Modifie l\x27\xE9tat de la sortie du relais, lorsqu\x27il est utilis\xE9 comme un simple interrupteur.',lib:'relay.set_output()',pro:'def set_output(<span id=pn>newval</span>)',cmt:'<p>Modifie l\x27\xE9tat de la sortie du relais, lorsqu\x27il est utilis\xE9 comme un simple interrupteur.</p>',par:{newval:'soit <tt>Y_OUTPUT_OFF</tt>, soit <tt>Y_OUTPUT_ON</tt>, selon l\x27\xE9tat de la sortie du relais, lorsqu\x27il est utilis\xE9 comme un simple interrupteur'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Relay']['set_state']={syn:'Modifie l\x27\xE9tat du relais (A pour la position de repos, B pour l\x27\xE9tat actif).',lib:'relay.set_state()',pro:'def set_state(<span id=pn>newval</span>)',cmt:'<p>Modifie l\x27\xE9tat du relais (A pour la position de repos, B pour l\x27\xE9tat actif).</p>',par:{newval:'soit <tt>Y_STATE_A</tt>, soit <tt>Y_STATE_B</tt>, selon l\x27\xE9tat du relais (A pour la position de repos, B pour l\x27\xE9tat actif)'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Relay']['set_stateAtPowerOn']={syn:'Pr\xE9-programme l\x27\xE9tat du relais au d\xE9marrage du module(A pour la position de repos, B pour l\x27\xE9tat actif, UNCHANGED pour aucun changement).',lib:'relay.set_stateAtPowerOn()',pro:'def set_stateAtPowerOn(<span id=pn>newval</span>)',cmt:'<p>Pr\xE9-programme l\x27\xE9tat du relais au d\xE9marrage du module(A pour la position de repos, B pour l\x27\xE9tat actif, UNCHANGED pour aucun changement). N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module sinon la modification n\x27aura aucun effet.</p>',par:{newval:'une valeur parmi <tt>Y_STATEATPOWERON_UNCHANGED</tt>, <tt>Y_STATEATPOWERON_A</tt> et <tt>Y_STATEATPOWERON_B</tt>'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Relay']['set_userData']={syn:'Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>.',lib:'relay.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',par:{data:'objet quelconque \xE0 m\xE9moriser'}};
+doc['Relay']['unmuteValueCallbacks']={syn:'R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'relay.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Cette fonction annule un pr\xE9c\xE9dent appel \xE0 <tt>muteValueCallbacks()</tt>. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+//--- (end of generated code: Relay)
+//--- (generated code: Humidity)
+doc['Humidity']={'':{syn:'Interface de la fonction Humidity',inc:'from yocto_humidity import *',cmt:'<p>La classe YHumidity permet de lire et de configurer les capteurs d\x27humidit\xE9 Yoctopuce. Elle h\xE9rite de la class YSensor toutes les fonctions de base des capteurs Yoctopuce: lecture de mesures, callbacks, enregistreur de donn\xE9es.</p>'}};
+doc['Humidity']['FindHumidity']={syn:'Permet de retrouver un capteur d\x27humidit\xE9 d\x27apr\xE8s un identifiant donn\xE9.',lib:'YHumidity.FindHumidity()',pro:'def FindHumidity(<span id=pn>func</span>)',cmt:'<p>Permet de retrouver un capteur d\x27humidit\xE9 d\x27apr\xE8s un identifiant donn\xE9. L\x27identifiant peut \xEAtre sp\xE9cifi\xE9 sous plusieurs formes:<br> <ul> <li>NomLogiqueFonction</li> <li>NoSerieModule.IdentifiantFonction</li> <li>NoSerieModule.NomLogiqueFonction</li> <li>NomLogiqueModule.IdentifiantMat\xE9riel</li> <li>NomLogiqueModule.NomLogiqueFonction</li> </ul></p><p> Cette fonction n\x27exige pas que le capteur d\x27humidit\xE9 soit en ligne au moment ou elle est appel\xE9e, l\x27objet retourn\xE9 sera n\xE9anmoins valide. Utiliser la m\xE9thode <tt>YHumidity.isOnline()</tt> pour tester si le capteur d\x27humidit\xE9 est utilisable \xE0 un moment donn\xE9. En cas d\x27ambigu\xEFt\xE9 lorsqu\x27on fait une recherche par nom logique, aucune erreur ne sera notifi\xE9e: la premi\xE8re instance trouv\xE9e sera renvoy\xE9e. La recherche se fait d\x27abord par nom mat\xE9riel, puis par nom logique.</p>',par:{func:'une cha\xEEne de caract\xE8res qui r\xE9f\xE9rence le capteur d\x27humidit\xE9 sans ambigu\xEFt\xE9'},ret:'un objet de classe <tt>YHumidity</tt> qui permet ensuite de contr\xF4ler le capteur d\x27humidit\xE9.'};
+doc['Humidity']['FirstHumidity']={syn:'Commence l\x27\xE9num\xE9ration des capteurs d\x27humidit\xE9 accessibles par la librairie.',lib:'YHumidity.FirstHumidity()',pro:'def FirstHumidity()',cmt:'<p>Commence l\x27\xE9num\xE9ration des capteurs d\x27humidit\xE9 accessibles par la librairie. Utiliser la fonction <tt>YHumidity.nextHumidity()</tt> pour it\xE9rer sur les autres capteurs d\x27humidit\xE9.</p>',ret:'un pointeur sur un objet <tt>YHumidity</tt>, correspondant au premier capteur d\x27humidit\xE9 accessible en ligne, ou <tt>null</tt> si il n\x27y a pas de capteurs d\x27humidit\xE9 disponibles.'};
+doc['Humidity']['calibrateFromPoints']={syn:'Enregistre des points de correction de mesure, typiquement pour compenser l\x27effet d\x27un bo\xEEtier sur les mesures rendues par le capteur.',lib:'humidity.calibrateFromPoints()',pro:'def calibrateFromPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Enregistre des points de correction de mesure, typiquement pour compenser l\x27effet d\x27un bo\xEEtier sur les mesures rendues par le capteur. Il est possible d\x27enregistrer jusqu\x27\xE0 cinq points de correction. Les points de correction doivent \xEAtre fournis en ordre croissant, et dans la plage valide du capteur. Le module effectue automatiquement une interpolation lin\xE9aire de l\x27erreur entre les points sp\xE9cifi\xE9s. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p><p> Pour plus de plus amples possibilit\xE9s d\x27appliquer une surcalibration aux capteurs, veuillez contacter support@yoctopuce.com.</p>',par:{rawValues:'tableau de nombres flottants, correspondant aux valeurs brutes rendues par le capteur pour les points de correction.',refValues:'tableau de nombres flottants, correspondant aux valeurs corrig\xE9es d\xE9sir\xE9es pour les points de correction.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Humidity']['clearCache']={syn:'Invalide le cache.',lib:'humidity.clearCache()',pro:'def clearCache()',cmt:'<p>Invalide le cache. Invalide le cache des valeurs courantes du capteur d\x27humidit\xE9. Force le prochain appel \xE0 une m\xE9thode get_xxx() ou loadxxx() pour charger les les donn\xE9es depuis le module.</p>'};
+doc['Humidity']['describe']={syn:'Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du capteur d\x27humidit\xE9 au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'humidity.describe()',pro:'def describe()',cmt:'<p>Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du capteur d\x27humidit\xE9 au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. Plus pr\xE9cis\xE9ment, <tt>TYPE</tt> correspond au type de fonction, <tt>NAME</tt> correspond au nom utils\xE9 lors du premier acc\xE8s a la fonction, <tt>SERIAL</tt> correspond au num\xE9ro de s\xE9rie du module si le module est connect\xE9, ou <tt>\x22unresolved\x22</tt> sinon, et <tt>FUNCTIONID</tt> correspond \xE0 l\x27identifiant mat\xE9riel de la fonction si le module est connect\xE9. Par exemple, La methode va retourner <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> si le module est d\xE9j\xE0 connect\xE9 ou <tt>Relay(BadCustomeName.relay1)=unresolved</tt> si le module n\x27est pas d\xE9j\xE0 connect\xE9. Cette methode ne declenche aucune transaction USB ou TCP et peut donc \xEAtre utilis\xE9 dans un debuggeur.</p>',ret:'une cha\xEEne de caract\xE8res d\xE9crivant le capteur d\x27humidit\xE9 (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['Humidity']['get_absHum']={syn:'Retourne la valeur actuelle de l\x27humidit\xE9 absolue, en gramme par m\xE8tre cube d\x27air.',lib:'humidity.get_absHum()',pro:'def get_absHum()',cmt:'<p>Retourne la valeur actuelle de l\x27humidit\xE9 absolue, en gramme par m\xE8tre cube d\x27air.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur actuelle de l\x27humidit\xE9 absolue, en gramme par m\xE8tre cube d\x27air',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_ABSHUM_INVALID</tt>.'};
+doc['Humidity']['get_advertisedValue']={syn:'Retourne la valeur courante du capteur d\x27humidit\xE9 (pas plus de 6 caract\xE8res).',lib:'humidity.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Retourne la valeur courante du capteur d\x27humidit\xE9 (pas plus de 6 caract\xE8res).</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur courante du capteur d\x27humidit\xE9 (pas plus de 6 caract\xE8res).',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['Humidity']['get_currentRawValue']={syn:'Retourne la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en %RH, sous forme de nombre \xE0 virgule.',lib:'humidity.get_currentRawValue()',pro:'def get_currentRawValue()',cmt:'<p>Retourne la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en %RH, sous forme de nombre \xE0 virgule.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en %RH, sous forme de nombre \xE0 virgule',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_CURRENTRAWVALUE_INVALID</tt>.'};
+doc['Humidity']['get_currentValue']={syn:'Retourne la valeur actuelle de l\x27humidit\xE9, en %RH, sous forme de nombre \xE0 virgule.',lib:'humidity.get_currentValue()',pro:'def get_currentValue()',cmt:'<p>Retourne la valeur actuelle de l\x27humidit\xE9, en %RH, sous forme de nombre \xE0 virgule.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur actuelle de l\x27humidit\xE9, en %RH, sous forme de nombre \xE0 virgule',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_CURRENTVALUE_INVALID</tt>.'};
+doc['Humidity']['get_errorMessage']={syn:'Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du capteur d\x27humidit\xE9.',lib:'humidity.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du capteur d\x27humidit\xE9. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'une cha\xEEne de caract\xE8res correspondant au message de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du capteur d\x27humidit\xE9.'};
+doc['Humidity']['get_errorType']={syn:'Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du capteur d\x27humidit\xE9.',lib:'humidity.get_errorType()',pro:'def get_errorType()',cmt:'<p>Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du capteur d\x27humidit\xE9. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'un nombre correspondant au code de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du capteur d\x27humidit\xE9.'};
+doc['Humidity']['get_friendlyName']={syn:'Retourne un identifiant global du capteur d\x27humidit\xE9 au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>.',lib:'humidity.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Retourne un identifiant global du capteur d\x27humidit\xE9 au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>. Le cha\xEEne retourn\xE9e utilise soit les noms logiques du module et du capteur d\x27humidit\xE9 si ils sont d\xE9finis, soit respectivement le num\xE9ro de s\xE9rie du module et l\x27identifant mat\xE9riel du capteur d\x27humidit\xE9 (par exemple: <tt>MyCustomName.relay1</tt>)</p>',ret:'une cha\xEEne de caract\xE8res identifiant le capteur d\x27humidit\xE9 en utilisant les noms logiques (ex: <tt>MyCustomName.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['Humidity']['get_functionDescriptor']={syn:'Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction.',lib:'humidity.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction. Cet identifiant peut \xEAtre utilis\xE9 pour tester si deux instance de <tt>YFunction</tt> r\xE9f\xE9rencent physiquement la m\xEAme fonction sur le m\xEAme module.</p>',ret:'un identifiant de type <tt>YFUN_DESCR</tt>.',ext:'Si la fonction n\x27a jamais \xE9t\xE9 contact\xE9e, la valeur retourn\xE9e sera <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>'};
+doc['Humidity']['get_functionId']={syn:'Retourne l\x27identifiant mat\xE9riel du capteur d\x27humidit\xE9, sans r\xE9f\xE9rence au module.',lib:'humidity.get_functionId()',pro:'def get_functionId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel du capteur d\x27humidit\xE9, sans r\xE9f\xE9rence au module. Par example <tt>relay1</tt>.</p>',ret:'une cha\xEEne de caract\xE8res identifiant le capteur d\x27humidit\xE9 (ex: <tt>relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['Humidity']['get_hardwareId']={syn:'Retourne l\x27identifiant mat\xE9riel unique du capteur d\x27humidit\xE9 au format <tt>SERIAL.FUNCTIONID</tt>.',lib:'humidity.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel unique du capteur d\x27humidit\xE9 au format <tt>SERIAL.FUNCTIONID</tt>. L\x27identifiant unique est compos\xE9 du num\xE9ro de s\xE9rie du module et de l\x27identifiant mat\xE9riel du capteur d\x27humidit\xE9 (par example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'une cha\xEEne de caract\xE8res identifiant le capteur d\x27humidit\xE9 (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['Humidity']['get_highestValue']={syn:'Retourne la valeur maximale observ\xE9e pour l\x27humidit\xE9 depuis le d\xE9marrage du module.',lib:'humidity.get_highestValue()',pro:'def get_highestValue()',cmt:'<p>Retourne la valeur maximale observ\xE9e pour l\x27humidit\xE9 depuis le d\xE9marrage du module.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur maximale observ\xE9e pour l\x27humidit\xE9 depuis le d\xE9marrage du module',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_HIGHESTVALUE_INVALID</tt>.'};
+doc['Humidity']['get_logFrequency']={syn:'Retourne la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es.',lib:'humidity.get_logFrequency()',pro:'def get_logFrequency()',cmt:'<p>Retourne la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_LOGFREQUENCY_INVALID</tt>.'};
+doc['Humidity']['get_logicalName']={syn:'Retourne le nom logique du capteur d\x27humidit\xE9.',lib:'humidity.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Retourne le nom logique du capteur d\x27humidit\xE9.</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du capteur d\x27humidit\xE9.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['Humidity']['get_lowestValue']={syn:'Retourne la valeur minimale observ\xE9e pour l\x27humidit\xE9 depuis le d\xE9marrage du module.',lib:'humidity.get_lowestValue()',pro:'def get_lowestValue()',cmt:'<p>Retourne la valeur minimale observ\xE9e pour l\x27humidit\xE9 depuis le d\xE9marrage du module.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur minimale observ\xE9e pour l\x27humidit\xE9 depuis le d\xE9marrage du module',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_LOWESTVALUE_INVALID</tt>.'};
+doc['Humidity']['get_module']={syn:'Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction.',lib:'humidity.get_module()',pro:'def get_module()',cmt:'<p>Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction. Si la fonction ne peut \xEAtre trouv\xE9e sur aucun module, l\x27instance de <tt>YModule</tt> retourn\xE9e ne sera pas joignable.</p>',ret:'une instance de <tt>YModule</tt>'};
+doc['Humidity']['get_recordedData']={syn:'Retourne un objet DataSet repr\xE9sentant des mesures de ce capteur pr\xE9c\xE9demment enregistr\xE9es \xE0 l\x27aide du DataLogger, pour l\x27intervalle de temps sp\xE9cifi\xE9.',lib:'humidity.get_recordedData()',pro:'def get_recordedData(<span id=pn>startTime</span>, <span id=pn>endTime</span>)',cmt:'<p>Retourne un objet DataSet repr\xE9sentant des mesures de ce capteur pr\xE9c\xE9demment enregistr\xE9es \xE0 l\x27aide du DataLogger, pour l\x27intervalle de temps sp\xE9cifi\xE9. Veuillez vous r\xE9f\xE9rer \xE0 la documentation de la classe DataSet pour plus plus d\x27informations sur la mani\xE8re d\x27obtenir un aper\xE7u des mesures pour la p\xE9riode, et comment charger progressivement une grande quantit\xE9 de mesures depuis le dataLogger.</p><p> Cette m\xE9thode ne fonctionne que si le module utilise un firmware r\xE9cent, car les objets DataSet ne sont pas support\xE9s par les firmwares ant\xE9rieurs \xE0 la r\xE9vision 13000.</p>',par:{startTime:'le d\xE9but de l\x27intervalle de mesure d\xE9sir\xE9, c\x27est \xE0 dire en nombre de secondes depuis le 1er janvier 1970 UTC. La valeur 0 peut \xEAtre utilis\xE9e pour ne poser aucune limite sur le d\xE9but des mesures.',endTime:'la find de l\x27intercalle de mesure d\xE9sir\xE9, c\x27est \xE0 dire en nombre de secondes depuis le 1er janvier 1970 UTC. La valeur 0 peut \xEAtre utilis\xE9e pour ne poser aucune limite de fin.'},ret:'une instance de YDataSet, dont les m\xE9thodes permettent de d\x27acc\xE9der aux donn\xE9es historiques souhait\xE9es.'};
+doc['Humidity']['get_relHum']={syn:'Retourne la valeur actuelle de l\x27humidit\xE9 relative, en pour cent.',lib:'humidity.get_relHum()',pro:'def get_relHum()',cmt:'<p>Retourne la valeur actuelle de l\x27humidit\xE9 relative, en pour cent.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur actuelle de l\x27humidit\xE9 relative, en pour cent',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_RELHUM_INVALID</tt>.'};
+doc['Humidity']['get_reportFrequency']={syn:'Retourne la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction.',lib:'humidity.get_reportFrequency()',pro:'def get_reportFrequency()',cmt:'<p>Retourne la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_REPORTFREQUENCY_INVALID</tt>.'};
+doc['Humidity']['get_resolution']={syn:'Retourne la r\xE9solution des valeurs mesur\xE9es.',lib:'humidity.get_resolution()',pro:'def get_resolution()',cmt:'<p>Retourne la r\xE9solution des valeurs mesur\xE9es. La r\xE9solution correspond \xE0 la pr\xE9cision num\xE9rique de la repr\xE9sentation des mesures. Elle n\x27est pas forc\xE9ment identique \xE0 la pr\xE9cision r\xE9elle du capteur.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la r\xE9solution des valeurs mesur\xE9es',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_RESOLUTION_INVALID</tt>.'};
+doc['Humidity']['get_sensorState']={syn:'Retourne le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment.',lib:'humidity.get_sensorState()',pro:'def get_sensorState()',cmt:'<p>Retourne le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment.</p>',ret:'un entier repr&eacute;sentant le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_SENSORSTATE_INVALID</tt>.'};
+doc['Humidity']['get_unit']={syn:'Retourne l\x27unit\xE9 dans laquelle l\x27humidit\xE9 est exprim\xE9e.',lib:'humidity.get_unit()',pro:'def get_unit()',cmt:'<p>Retourne l\x27unit\xE9 dans laquelle l\x27humidit\xE9 est exprim\xE9e.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant l\x27unit\xE9 dans laquelle l\x27humidit\xE9 est exprim\xE9e',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_UNIT_INVALID</tt>.'};
+doc['Humidity']['get_userData']={syn:'Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>.',lib:'humidity.get_userData()',pro:'def get_userData()',cmt:'<p>Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',ret:'l\x27objet stock\xE9 pr\xE9c\xE9demment par l\x27appelant.'};
+doc['Humidity']['isOnline']={syn:'V\xE9rifie si le module h\xE9bergeant le capteur d\x27humidit\xE9 est joignable, sans d\xE9clencher d\x27erreur.',lib:'humidity.isOnline()',pro:'def isOnline()',cmt:'<p>V\xE9rifie si le module h\xE9bergeant le capteur d\x27humidit\xE9 est joignable, sans d\xE9clencher d\x27erreur. Si les valeurs des attributs en cache du capteur d\x27humidit\xE9 sont valides au moment de l\x27appel, le module est consid\xE9r\xE9 joignable. Cette fonction ne cause en aucun cas d\x27exception, quelle que soit l\x27erreur qui pourrait se produire lors de la v\xE9rification de joignabilit\xE9.</p>',ret:'<tt>true</tt> si le capteur d\x27humidit\xE9 est joignable, <tt>false</tt> sinon'};
+doc['Humidity']['load']={syn:'Met en cache les valeurs courantes du capteur d\x27humidit\xE9, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e.',lib:'humidity.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Met en cache les valeurs courantes du capteur d\x27humidit\xE9, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e. Par d\xE9faut, lorsqu\x27on acc\xE8de \xE0 un module, tous les attributs des fonctions du module sont automatiquement mises en cache pour la dur\xE9e standard (5 ms). Cette m\xE9thode peut \xEAtre utilis\xE9e pour marquer occasionellement les donn\xE9es cach\xE9es comme valides pour une plus longue p\xE9riode, par exemple dans le but de r\xE9duire le trafic r\xE9seau.</p>',par:{msValidity:'un entier correspondant \xE0 la dur\xE9e de validit\xE9 attribu\xE9e aux les param\xE8tres charg\xE9s, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Humidity']['loadAttribute']={syn:'Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.',lib:'humidity.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un cha\xEEne vide.'};
+doc['Humidity']['loadCalibrationPoints']={syn:'R\xE9cup\xE8re les points de correction de mesure pr\xE9c\xE9demment enregistr\xE9s \xE0 l\x27aide de la m\xE9thode <tt>calibrateFromPoints</tt>.',lib:'humidity.loadCalibrationPoints()',pro:'def loadCalibrationPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>R\xE9cup\xE8re les points de correction de mesure pr\xE9c\xE9demment enregistr\xE9s \xE0 l\x27aide de la m\xE9thode <tt>calibrateFromPoints</tt>.</p>',par:{rawValues:'tableau de nombres flottants, qui sera rempli par la fonction avec les valeurs brutes des points de correction.',refValues:'tableau de nombres flottants, qui sera rempli par la fonction avec les valeurs d\xE9sir\xE9es des points de correction.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Humidity']['muteValueCallbacks']={syn:'D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'humidity.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Vous pouvez utiliser cette fonction pour \xE9conomiser la bande passante et le CPU sur les machines de faible puissance, ou pour \xE9viter le d\xE9clanchement de callbacks HTTP. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Humidity']['nextHumidity']={syn:'Continue l\x27\xE9num\xE9ration des capteurs d\x27humidit\xE9 commenc\xE9e \xE0 l\x27aide de <tt>yFirstHumidity()</tt>.',lib:'humidity.nextHumidity()',pro:'def nextHumidity()',cmt:'<p>Continue l\x27\xE9num\xE9ration des capteurs d\x27humidit\xE9 commenc\xE9e \xE0 l\x27aide de <tt>yFirstHumidity()</tt>.</p>',ret:'un pointeur sur un objet <tt>YHumidity</tt> accessible en ligne, ou <tt>null</tt> lorsque l\x27\xE9num\xE9ration est termin\xE9e.'};
+doc['Humidity']['registerTimedReportCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque notification p\xE9riodique.',lib:'humidity.registerTimedReportCallback()',pro:'def registerTimedReportCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque notification p\xE9riodique. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callbacks peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callbacks ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et un objet YMeasure d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['Humidity']['registerValueCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e.',lib:'humidity.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callback peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callback ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et la cha\xEEne de caract\xE8re d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['Humidity']['set_highestValue']={syn:'Modifie la m\xE9moire de valeur maximale observ\xE9e.',lib:'humidity.set_highestValue()',pro:'def set_highestValue(<span id=pn>newval</span>)',cmt:'<p>Modifie la m\xE9moire de valeur maximale observ\xE9e.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la m\xE9moire de valeur maximale observ\xE9e'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Humidity']['set_logFrequency']={syn:'Modifie la fr\xE9quence d\x27enregistrement des mesures dans le datalogger.',lib:'humidity.set_logFrequency()',pro:'def set_logFrequency(<span id=pn>newval</span>)',cmt:'<p>Modifie la fr\xE9quence d\x27enregistrement des mesures dans le datalogger. La fr\xE9quence peut \xEAtre sp\xE9cifi\xE9e en mesures par secondes, en mesures par minutes (par exemple \x2215/m\x22) ou en mesures par heure (par exemple \x224/h\x22). Pour d\xE9sactiver l\x27enregistrement des mesures de cette fonction, utilisez la valeur \x22OFF\x22.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence d\x27enregistrement des mesures dans le datalogger'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Humidity']['set_logicalName']={syn:'Modifie le nom logique du capteur d\x27humidit\xE9.',lib:'humidity.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Modifie le nom logique du capteur d\x27humidit\xE9. Vous pouvez utiliser <tt>yCheckLogicalName()</tt> pour v\xE9rifier si votre param\xE8tre est valide. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du capteur d\x27humidit\xE9.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27appel se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Humidity']['set_lowestValue']={syn:'Modifie la m\xE9moire de valeur minimale observ\xE9e.',lib:'humidity.set_lowestValue()',pro:'def set_lowestValue(<span id=pn>newval</span>)',cmt:'<p>Modifie la m\xE9moire de valeur minimale observ\xE9e.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la m\xE9moire de valeur minimale observ\xE9e'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Humidity']['set_reportFrequency']={syn:'Modifie la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es.',lib:'humidity.set_reportFrequency()',pro:'def set_reportFrequency(<span id=pn>newval</span>)',cmt:'<p>Modifie la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es. La fr\xE9quence peut \xEAtre sp\xE9cifi\xE9e en mesures par secondes, en mesures par minutes (par exemple \x2215/m\x22) ou en mesures par heure (par exemple \x224/h\x22). Pour d\xE9sactiver les notifications p\xE9riodiques pour cette fonction, utilisez la valeur \x22OFF\x22.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Humidity']['set_resolution']={syn:'Modifie la r\xE9solution des valeurs physique mesur\xE9es.',lib:'humidity.set_resolution()',pro:'def set_resolution(<span id=pn>newval</span>)',cmt:'<p>Modifie la r\xE9solution des valeurs physique mesur\xE9es. La r\xE9solution correspond \xE0 la pr\xE9cision de l\x27affichage des mesures. Elle ne change pas la pr\xE9cision de la mesure elle-m\xEAme.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la r\xE9solution des valeurs physique mesur\xE9es'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Humidity']['set_unit']={syn:'Change l\x27unit\xE9 principale dans laquelle l\x27humidit\xE9 est exprim\xE9e.',lib:'humidity.set_unit()',pro:'def set_unit(<span id=pn>newval</span>)',cmt:'<p>Change l\x27unit\xE9 principale dans laquelle l\x27humidit\xE9 est exprim\xE9e. Cette unit\xE9 est une cha\xEEne de charact\xE8re. Si la cha\xEEne commence par une lettre \x27g\x27, la valeur principale est l\x27humidit\xE9 absolue en g/m3. Autrement, la valeur principale sera l\x27humidit\xE9 relative, en pour cent.</p><p> N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Humidity']['set_userData']={syn:'Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>.',lib:'humidity.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',par:{data:'objet quelconque \xE0 m\xE9moriser'}};
+doc['Humidity']['startDataLogger']={syn:'D\xE9marre l\x27enregistreur de donn\xE9es du module.',lib:'humidity.startDataLogger()',pro:'def startDataLogger()',cmt:'<p>D\xE9marre l\x27enregistreur de donn\xE9es du module. Attention, l\x27enregistreur ne sauvera les mesures de ce capteur que si la fr\xE9quence d\x27enregistrement (logFrequency) n\x27est pas sur \x22OFF\x22.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.'};
+doc['Humidity']['stopDataLogger']={syn:'Arr\xEAte l\x27enregistreur de donn\xE9es du module.',lib:'humidity.stopDataLogger()',pro:'def stopDataLogger()',cmt:'<p>Arr\xEAte l\x27enregistreur de donn\xE9es du module.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.'};
+doc['Humidity']['unmuteValueCallbacks']={syn:'R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'humidity.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Cette fonction annule un pr\xE9c\xE9dent appel \xE0 <tt>muteValueCallbacks()</tt>. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+//--- (end of generated code: Humidity)
+//--- (generated code: Pressure)
+doc['Pressure']={'':{syn:'Interface de la fonction Pressure',inc:'from yocto_pressure import *',cmt:'<p>La classe YPressure permet de lire et de configurer les capteurs de pression Yoctopuce. Elle h\xE9rite de la class YSensor toutes les fonctions de base des capteurs Yoctopuce: lecture de mesures, callbacks, enregistreur de donn\xE9es.</p>'}};
+doc['Pressure']['FindPressure']={syn:'Permet de retrouver un capteur de pression d\x27apr\xE8s un identifiant donn\xE9.',lib:'YPressure.FindPressure()',pro:'def FindPressure(<span id=pn>func</span>)',cmt:'<p>Permet de retrouver un capteur de pression d\x27apr\xE8s un identifiant donn\xE9. L\x27identifiant peut \xEAtre sp\xE9cifi\xE9 sous plusieurs formes:<br> <ul> <li>NomLogiqueFonction</li> <li>NoSerieModule.IdentifiantFonction</li> <li>NoSerieModule.NomLogiqueFonction</li> <li>NomLogiqueModule.IdentifiantMat\xE9riel</li> <li>NomLogiqueModule.NomLogiqueFonction</li> </ul></p><p> Cette fonction n\x27exige pas que le capteur de pression soit en ligne au moment ou elle est appel\xE9e, l\x27objet retourn\xE9 sera n\xE9anmoins valide. Utiliser la m\xE9thode <tt>YPressure.isOnline()</tt> pour tester si le capteur de pression est utilisable \xE0 un moment donn\xE9. En cas d\x27ambigu\xEFt\xE9 lorsqu\x27on fait une recherche par nom logique, aucune erreur ne sera notifi\xE9e: la premi\xE8re instance trouv\xE9e sera renvoy\xE9e. La recherche se fait d\x27abord par nom mat\xE9riel, puis par nom logique.</p>',par:{func:'une cha\xEEne de caract\xE8res qui r\xE9f\xE9rence le capteur de pression sans ambigu\xEFt\xE9'},ret:'un objet de classe <tt>YPressure</tt> qui permet ensuite de contr\xF4ler le capteur de pression.'};
+doc['Pressure']['FirstPressure']={syn:'Commence l\x27\xE9num\xE9ration des capteurs de pression accessibles par la librairie.',lib:'YPressure.FirstPressure()',pro:'def FirstPressure()',cmt:'<p>Commence l\x27\xE9num\xE9ration des capteurs de pression accessibles par la librairie. Utiliser la fonction <tt>YPressure.nextPressure()</tt> pour it\xE9rer sur les autres capteurs de pression.</p>',ret:'un pointeur sur un objet <tt>YPressure</tt>, correspondant au premier capteur de pression accessible en ligne, ou <tt>null</tt> si il n\x27y a pas de capteurs de pression disponibles.'};
+doc['Pressure']['calibrateFromPoints']={syn:'Enregistre des points de correction de mesure, typiquement pour compenser l\x27effet d\x27un bo\xEEtier sur les mesures rendues par le capteur.',lib:'pressure.calibrateFromPoints()',pro:'def calibrateFromPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Enregistre des points de correction de mesure, typiquement pour compenser l\x27effet d\x27un bo\xEEtier sur les mesures rendues par le capteur. Il est possible d\x27enregistrer jusqu\x27\xE0 cinq points de correction. Les points de correction doivent \xEAtre fournis en ordre croissant, et dans la plage valide du capteur. Le module effectue automatiquement une interpolation lin\xE9aire de l\x27erreur entre les points sp\xE9cifi\xE9s. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p><p> Pour plus de plus amples possibilit\xE9s d\x27appliquer une surcalibration aux capteurs, veuillez contacter support@yoctopuce.com.</p>',par:{rawValues:'tableau de nombres flottants, correspondant aux valeurs brutes rendues par le capteur pour les points de correction.',refValues:'tableau de nombres flottants, correspondant aux valeurs corrig\xE9es d\xE9sir\xE9es pour les points de correction.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Pressure']['clearCache']={syn:'Invalide le cache.',lib:'pressure.clearCache()',pro:'def clearCache()',cmt:'<p>Invalide le cache. Invalide le cache des valeurs courantes du capteur de pression. Force le prochain appel \xE0 une m\xE9thode get_xxx() ou loadxxx() pour charger les les donn\xE9es depuis le module.</p>'};
+doc['Pressure']['describe']={syn:'Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du capteur de pression au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'pressure.describe()',pro:'def describe()',cmt:'<p>Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du capteur de pression au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. Plus pr\xE9cis\xE9ment, <tt>TYPE</tt> correspond au type de fonction, <tt>NAME</tt> correspond au nom utils\xE9 lors du premier acc\xE8s a la fonction, <tt>SERIAL</tt> correspond au num\xE9ro de s\xE9rie du module si le module est connect\xE9, ou <tt>\x22unresolved\x22</tt> sinon, et <tt>FUNCTIONID</tt> correspond \xE0 l\x27identifiant mat\xE9riel de la fonction si le module est connect\xE9. Par exemple, La methode va retourner <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> si le module est d\xE9j\xE0 connect\xE9 ou <tt>Relay(BadCustomeName.relay1)=unresolved</tt> si le module n\x27est pas d\xE9j\xE0 connect\xE9. Cette methode ne declenche aucune transaction USB ou TCP et peut donc \xEAtre utilis\xE9 dans un debuggeur.</p>',ret:'une cha\xEEne de caract\xE8res d\xE9crivant le capteur de pression (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['Pressure']['get_advertisedValue']={syn:'Retourne la valeur courante du capteur de pression (pas plus de 6 caract\xE8res).',lib:'pressure.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Retourne la valeur courante du capteur de pression (pas plus de 6 caract\xE8res).</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur courante du capteur de pression (pas plus de 6 caract\xE8res).',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['Pressure']['get_currentRawValue']={syn:'Retourne la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en millibar (hPa), sous forme de nombre \xE0 virgule.',lib:'pressure.get_currentRawValue()',pro:'def get_currentRawValue()',cmt:'<p>Retourne la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en millibar (hPa), sous forme de nombre \xE0 virgule.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en millibar (hPa), sous forme de nombre \xE0 virgule',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_CURRENTRAWVALUE_INVALID</tt>.'};
+doc['Pressure']['get_currentValue']={syn:'Retourne la valeur actuelle de la pression, en millibar (hPa), sous forme de nombre \xE0 virgule.',lib:'pressure.get_currentValue()',pro:'def get_currentValue()',cmt:'<p>Retourne la valeur actuelle de la pression, en millibar (hPa), sous forme de nombre \xE0 virgule.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur actuelle de la pression, en millibar (hPa), sous forme de nombre \xE0 virgule',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_CURRENTVALUE_INVALID</tt>.'};
+doc['Pressure']['get_errorMessage']={syn:'Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du capteur de pression.',lib:'pressure.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du capteur de pression. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'une cha\xEEne de caract\xE8res correspondant au message de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du capteur de pression.'};
+doc['Pressure']['get_errorType']={syn:'Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du capteur de pression.',lib:'pressure.get_errorType()',pro:'def get_errorType()',cmt:'<p>Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du capteur de pression. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'un nombre correspondant au code de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du capteur de pression.'};
+doc['Pressure']['get_friendlyName']={syn:'Retourne un identifiant global du capteur de pression au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>.',lib:'pressure.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Retourne un identifiant global du capteur de pression au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>. Le cha\xEEne retourn\xE9e utilise soit les noms logiques du module et du capteur de pression si ils sont d\xE9finis, soit respectivement le num\xE9ro de s\xE9rie du module et l\x27identifant mat\xE9riel du capteur de pression (par exemple: <tt>MyCustomName.relay1</tt>)</p>',ret:'une cha\xEEne de caract\xE8res identifiant le capteur de pression en utilisant les noms logiques (ex: <tt>MyCustomName.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['Pressure']['get_functionDescriptor']={syn:'Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction.',lib:'pressure.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction. Cet identifiant peut \xEAtre utilis\xE9 pour tester si deux instance de <tt>YFunction</tt> r\xE9f\xE9rencent physiquement la m\xEAme fonction sur le m\xEAme module.</p>',ret:'un identifiant de type <tt>YFUN_DESCR</tt>.',ext:'Si la fonction n\x27a jamais \xE9t\xE9 contact\xE9e, la valeur retourn\xE9e sera <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>'};
+doc['Pressure']['get_functionId']={syn:'Retourne l\x27identifiant mat\xE9riel du capteur de pression, sans r\xE9f\xE9rence au module.',lib:'pressure.get_functionId()',pro:'def get_functionId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel du capteur de pression, sans r\xE9f\xE9rence au module. Par example <tt>relay1</tt>.</p>',ret:'une cha\xEEne de caract\xE8res identifiant le capteur de pression (ex: <tt>relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['Pressure']['get_hardwareId']={syn:'Retourne l\x27identifiant mat\xE9riel unique du capteur de pression au format <tt>SERIAL.FUNCTIONID</tt>.',lib:'pressure.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel unique du capteur de pression au format <tt>SERIAL.FUNCTIONID</tt>. L\x27identifiant unique est compos\xE9 du num\xE9ro de s\xE9rie du module et de l\x27identifiant mat\xE9riel du capteur de pression (par example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'une cha\xEEne de caract\xE8res identifiant le capteur de pression (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['Pressure']['get_highestValue']={syn:'Retourne la valeur maximale observ\xE9e pour la pression depuis le d\xE9marrage du module.',lib:'pressure.get_highestValue()',pro:'def get_highestValue()',cmt:'<p>Retourne la valeur maximale observ\xE9e pour la pression depuis le d\xE9marrage du module.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur maximale observ\xE9e pour la pression depuis le d\xE9marrage du module',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_HIGHESTVALUE_INVALID</tt>.'};
+doc['Pressure']['get_logFrequency']={syn:'Retourne la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es.',lib:'pressure.get_logFrequency()',pro:'def get_logFrequency()',cmt:'<p>Retourne la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_LOGFREQUENCY_INVALID</tt>.'};
+doc['Pressure']['get_logicalName']={syn:'Retourne le nom logique du capteur de pression.',lib:'pressure.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Retourne le nom logique du capteur de pression.</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du capteur de pression.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['Pressure']['get_lowestValue']={syn:'Retourne la valeur minimale observ\xE9e pour la pression depuis le d\xE9marrage du module.',lib:'pressure.get_lowestValue()',pro:'def get_lowestValue()',cmt:'<p>Retourne la valeur minimale observ\xE9e pour la pression depuis le d\xE9marrage du module.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur minimale observ\xE9e pour la pression depuis le d\xE9marrage du module',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_LOWESTVALUE_INVALID</tt>.'};
+doc['Pressure']['get_module']={syn:'Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction.',lib:'pressure.get_module()',pro:'def get_module()',cmt:'<p>Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction. Si la fonction ne peut \xEAtre trouv\xE9e sur aucun module, l\x27instance de <tt>YModule</tt> retourn\xE9e ne sera pas joignable.</p>',ret:'une instance de <tt>YModule</tt>'};
+doc['Pressure']['get_recordedData']={syn:'Retourne un objet DataSet repr\xE9sentant des mesures de ce capteur pr\xE9c\xE9demment enregistr\xE9es \xE0 l\x27aide du DataLogger, pour l\x27intervalle de temps sp\xE9cifi\xE9.',lib:'pressure.get_recordedData()',pro:'def get_recordedData(<span id=pn>startTime</span>, <span id=pn>endTime</span>)',cmt:'<p>Retourne un objet DataSet repr\xE9sentant des mesures de ce capteur pr\xE9c\xE9demment enregistr\xE9es \xE0 l\x27aide du DataLogger, pour l\x27intervalle de temps sp\xE9cifi\xE9. Veuillez vous r\xE9f\xE9rer \xE0 la documentation de la classe DataSet pour plus plus d\x27informations sur la mani\xE8re d\x27obtenir un aper\xE7u des mesures pour la p\xE9riode, et comment charger progressivement une grande quantit\xE9 de mesures depuis le dataLogger.</p><p> Cette m\xE9thode ne fonctionne que si le module utilise un firmware r\xE9cent, car les objets DataSet ne sont pas support\xE9s par les firmwares ant\xE9rieurs \xE0 la r\xE9vision 13000.</p>',par:{startTime:'le d\xE9but de l\x27intervalle de mesure d\xE9sir\xE9, c\x27est \xE0 dire en nombre de secondes depuis le 1er janvier 1970 UTC. La valeur 0 peut \xEAtre utilis\xE9e pour ne poser aucune limite sur le d\xE9but des mesures.',endTime:'la find de l\x27intercalle de mesure d\xE9sir\xE9, c\x27est \xE0 dire en nombre de secondes depuis le 1er janvier 1970 UTC. La valeur 0 peut \xEAtre utilis\xE9e pour ne poser aucune limite de fin.'},ret:'une instance de YDataSet, dont les m\xE9thodes permettent de d\x27acc\xE9der aux donn\xE9es historiques souhait\xE9es.'};
+doc['Pressure']['get_reportFrequency']={syn:'Retourne la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction.',lib:'pressure.get_reportFrequency()',pro:'def get_reportFrequency()',cmt:'<p>Retourne la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_REPORTFREQUENCY_INVALID</tt>.'};
+doc['Pressure']['get_resolution']={syn:'Retourne la r\xE9solution des valeurs mesur\xE9es.',lib:'pressure.get_resolution()',pro:'def get_resolution()',cmt:'<p>Retourne la r\xE9solution des valeurs mesur\xE9es. La r\xE9solution correspond \xE0 la pr\xE9cision num\xE9rique de la repr\xE9sentation des mesures. Elle n\x27est pas forc\xE9ment identique \xE0 la pr\xE9cision r\xE9elle du capteur.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la r\xE9solution des valeurs mesur\xE9es',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_RESOLUTION_INVALID</tt>.'};
+doc['Pressure']['get_sensorState']={syn:'Retourne le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment.',lib:'pressure.get_sensorState()',pro:'def get_sensorState()',cmt:'<p>Retourne le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment.</p>',ret:'un entier repr&eacute;sentant le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_SENSORSTATE_INVALID</tt>.'};
+doc['Pressure']['get_unit']={syn:'Retourne l\x27unit\xE9 dans laquelle la pression est exprim\xE9e.',lib:'pressure.get_unit()',pro:'def get_unit()',cmt:'<p>Retourne l\x27unit\xE9 dans laquelle la pression est exprim\xE9e.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant l\x27unit\xE9 dans laquelle la pression est exprim\xE9e',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_UNIT_INVALID</tt>.'};
+doc['Pressure']['get_userData']={syn:'Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>.',lib:'pressure.get_userData()',pro:'def get_userData()',cmt:'<p>Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',ret:'l\x27objet stock\xE9 pr\xE9c\xE9demment par l\x27appelant.'};
+doc['Pressure']['isOnline']={syn:'V\xE9rifie si le module h\xE9bergeant le capteur de pression est joignable, sans d\xE9clencher d\x27erreur.',lib:'pressure.isOnline()',pro:'def isOnline()',cmt:'<p>V\xE9rifie si le module h\xE9bergeant le capteur de pression est joignable, sans d\xE9clencher d\x27erreur. Si les valeurs des attributs en cache du capteur de pression sont valides au moment de l\x27appel, le module est consid\xE9r\xE9 joignable. Cette fonction ne cause en aucun cas d\x27exception, quelle que soit l\x27erreur qui pourrait se produire lors de la v\xE9rification de joignabilit\xE9.</p>',ret:'<tt>true</tt> si le capteur de pression est joignable, <tt>false</tt> sinon'};
+doc['Pressure']['load']={syn:'Met en cache les valeurs courantes du capteur de pression, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e.',lib:'pressure.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Met en cache les valeurs courantes du capteur de pression, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e. Par d\xE9faut, lorsqu\x27on acc\xE8de \xE0 un module, tous les attributs des fonctions du module sont automatiquement mises en cache pour la dur\xE9e standard (5 ms). Cette m\xE9thode peut \xEAtre utilis\xE9e pour marquer occasionellement les donn\xE9es cach\xE9es comme valides pour une plus longue p\xE9riode, par exemple dans le but de r\xE9duire le trafic r\xE9seau.</p>',par:{msValidity:'un entier correspondant \xE0 la dur\xE9e de validit\xE9 attribu\xE9e aux les param\xE8tres charg\xE9s, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Pressure']['loadAttribute']={syn:'Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.',lib:'pressure.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un cha\xEEne vide.'};
+doc['Pressure']['loadCalibrationPoints']={syn:'R\xE9cup\xE8re les points de correction de mesure pr\xE9c\xE9demment enregistr\xE9s \xE0 l\x27aide de la m\xE9thode <tt>calibrateFromPoints</tt>.',lib:'pressure.loadCalibrationPoints()',pro:'def loadCalibrationPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>R\xE9cup\xE8re les points de correction de mesure pr\xE9c\xE9demment enregistr\xE9s \xE0 l\x27aide de la m\xE9thode <tt>calibrateFromPoints</tt>.</p>',par:{rawValues:'tableau de nombres flottants, qui sera rempli par la fonction avec les valeurs brutes des points de correction.',refValues:'tableau de nombres flottants, qui sera rempli par la fonction avec les valeurs d\xE9sir\xE9es des points de correction.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Pressure']['muteValueCallbacks']={syn:'D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'pressure.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Vous pouvez utiliser cette fonction pour \xE9conomiser la bande passante et le CPU sur les machines de faible puissance, ou pour \xE9viter le d\xE9clanchement de callbacks HTTP. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Pressure']['nextPressure']={syn:'Continue l\x27\xE9num\xE9ration des capteurs de pression commenc\xE9e \xE0 l\x27aide de <tt>yFirstPressure()</tt>.',lib:'pressure.nextPressure()',pro:'def nextPressure()',cmt:'<p>Continue l\x27\xE9num\xE9ration des capteurs de pression commenc\xE9e \xE0 l\x27aide de <tt>yFirstPressure()</tt>.</p>',ret:'un pointeur sur un objet <tt>YPressure</tt> accessible en ligne, ou <tt>null</tt> lorsque l\x27\xE9num\xE9ration est termin\xE9e.'};
+doc['Pressure']['registerTimedReportCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque notification p\xE9riodique.',lib:'pressure.registerTimedReportCallback()',pro:'def registerTimedReportCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque notification p\xE9riodique. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callbacks peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callbacks ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et un objet YMeasure d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['Pressure']['registerValueCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e.',lib:'pressure.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callback peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callback ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et la cha\xEEne de caract\xE8re d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['Pressure']['set_highestValue']={syn:'Modifie la m\xE9moire de valeur maximale observ\xE9e.',lib:'pressure.set_highestValue()',pro:'def set_highestValue(<span id=pn>newval</span>)',cmt:'<p>Modifie la m\xE9moire de valeur maximale observ\xE9e.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la m\xE9moire de valeur maximale observ\xE9e'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Pressure']['set_logFrequency']={syn:'Modifie la fr\xE9quence d\x27enregistrement des mesures dans le datalogger.',lib:'pressure.set_logFrequency()',pro:'def set_logFrequency(<span id=pn>newval</span>)',cmt:'<p>Modifie la fr\xE9quence d\x27enregistrement des mesures dans le datalogger. La fr\xE9quence peut \xEAtre sp\xE9cifi\xE9e en mesures par secondes, en mesures par minutes (par exemple \x2215/m\x22) ou en mesures par heure (par exemple \x224/h\x22). Pour d\xE9sactiver l\x27enregistrement des mesures de cette fonction, utilisez la valeur \x22OFF\x22.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence d\x27enregistrement des mesures dans le datalogger'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Pressure']['set_logicalName']={syn:'Modifie le nom logique du capteur de pression.',lib:'pressure.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Modifie le nom logique du capteur de pression. Vous pouvez utiliser <tt>yCheckLogicalName()</tt> pour v\xE9rifier si votre param\xE8tre est valide. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du capteur de pression.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27appel se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Pressure']['set_lowestValue']={syn:'Modifie la m\xE9moire de valeur minimale observ\xE9e.',lib:'pressure.set_lowestValue()',pro:'def set_lowestValue(<span id=pn>newval</span>)',cmt:'<p>Modifie la m\xE9moire de valeur minimale observ\xE9e.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la m\xE9moire de valeur minimale observ\xE9e'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Pressure']['set_reportFrequency']={syn:'Modifie la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es.',lib:'pressure.set_reportFrequency()',pro:'def set_reportFrequency(<span id=pn>newval</span>)',cmt:'<p>Modifie la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es. La fr\xE9quence peut \xEAtre sp\xE9cifi\xE9e en mesures par secondes, en mesures par minutes (par exemple \x2215/m\x22) ou en mesures par heure (par exemple \x224/h\x22). Pour d\xE9sactiver les notifications p\xE9riodiques pour cette fonction, utilisez la valeur \x22OFF\x22.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Pressure']['set_resolution']={syn:'Modifie la r\xE9solution des valeurs physique mesur\xE9es.',lib:'pressure.set_resolution()',pro:'def set_resolution(<span id=pn>newval</span>)',cmt:'<p>Modifie la r\xE9solution des valeurs physique mesur\xE9es. La r\xE9solution correspond \xE0 la pr\xE9cision de l\x27affichage des mesures. Elle ne change pas la pr\xE9cision de la mesure elle-m\xEAme.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la r\xE9solution des valeurs physique mesur\xE9es'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Pressure']['set_userData']={syn:'Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>.',lib:'pressure.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',par:{data:'objet quelconque \xE0 m\xE9moriser'}};
+doc['Pressure']['startDataLogger']={syn:'D\xE9marre l\x27enregistreur de donn\xE9es du module.',lib:'pressure.startDataLogger()',pro:'def startDataLogger()',cmt:'<p>D\xE9marre l\x27enregistreur de donn\xE9es du module. Attention, l\x27enregistreur ne sauvera les mesures de ce capteur que si la fr\xE9quence d\x27enregistrement (logFrequency) n\x27est pas sur \x22OFF\x22.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.'};
+doc['Pressure']['stopDataLogger']={syn:'Arr\xEAte l\x27enregistreur de donn\xE9es du module.',lib:'pressure.stopDataLogger()',pro:'def stopDataLogger()',cmt:'<p>Arr\xEAte l\x27enregistreur de donn\xE9es du module.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.'};
+doc['Pressure']['unmuteValueCallbacks']={syn:'R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'pressure.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Cette fonction annule un pr\xE9c\xE9dent appel \xE0 <tt>muteValueCallbacks()</tt>. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+//--- (end of generated code: Pressure)
+//--- (generated code: LightSensor)
+doc['LightSensor']={'':{syn:'Interface de la fonction LightSensor',inc:'from yocto_lightsensor import *',cmt:'<p>La classe YLightSensor permet de lire et de configurer les capteurs de lumi\xE8re Yoctopuce. Elle h\xE9rite de la class YSensor toutes les fonctions de base des capteurs Yoctopuce: lecture de mesures, callbacks, enregistreur de donn\xE9es. De plus, elle permet d\x27effectuer facilement une calibration lin\xE9aire \xE0 un point pour compenser l\x27effet d\x27une vitre ou d\x27un filtre plac\xE9 devant le capteur. Pour certains capteurs de lumi\xE8re ayant plusieurs modes de fonctionnement, cette classe permet aussi de configurer le mode d\xE9sir\xE9.</p>'}};
+doc['LightSensor']['FindLightSensor']={syn:'Permet de retrouver un capteur de lumi\xE8re d\x27apr\xE8s un identifiant donn\xE9.',lib:'YLightSensor.FindLightSensor()',pro:'def FindLightSensor(<span id=pn>func</span>)',cmt:'<p>Permet de retrouver un capteur de lumi\xE8re d\x27apr\xE8s un identifiant donn\xE9. L\x27identifiant peut \xEAtre sp\xE9cifi\xE9 sous plusieurs formes:<br> <ul> <li>NomLogiqueFonction</li> <li>NoSerieModule.IdentifiantFonction</li> <li>NoSerieModule.NomLogiqueFonction</li> <li>NomLogiqueModule.IdentifiantMat\xE9riel</li> <li>NomLogiqueModule.NomLogiqueFonction</li> </ul></p><p> Cette fonction n\x27exige pas que le capteur de lumi\xE8re soit en ligne au moment ou elle est appel\xE9e, l\x27objet retourn\xE9 sera n\xE9anmoins valide. Utiliser la m\xE9thode <tt>YLightSensor.isOnline()</tt> pour tester si le capteur de lumi\xE8re est utilisable \xE0 un moment donn\xE9. En cas d\x27ambigu\xEFt\xE9 lorsqu\x27on fait une recherche par nom logique, aucune erreur ne sera notifi\xE9e: la premi\xE8re instance trouv\xE9e sera renvoy\xE9e. La recherche se fait d\x27abord par nom mat\xE9riel, puis par nom logique.</p>',par:{func:'une cha\xEEne de caract\xE8res qui r\xE9f\xE9rence le capteur de lumi\xE8re sans ambigu\xEFt\xE9'},ret:'un objet de classe <tt>YLightSensor</tt> qui permet ensuite de contr\xF4ler le capteur de lumi\xE8re.'};
+doc['LightSensor']['FirstLightSensor']={syn:'Commence l\x27\xE9num\xE9ration des capteurs de lumi\xE8re accessibles par la librairie.',lib:'YLightSensor.FirstLightSensor()',pro:'def FirstLightSensor()',cmt:'<p>Commence l\x27\xE9num\xE9ration des capteurs de lumi\xE8re accessibles par la librairie. Utiliser la fonction <tt>YLightSensor.nextLightSensor()</tt> pour it\xE9rer sur les autres capteurs de lumi\xE8re.</p>',ret:'un pointeur sur un objet <tt>YLightSensor</tt>, correspondant au premier capteur de lumi\xE8re accessible en ligne, ou <tt>null</tt> si il n\x27y a pas de capteurs de lumi\xE8re disponibles.'};
+doc['LightSensor']['calibrate']={syn:'Modifie le param\xE8tre de calibration sp\xE9cifique du senseur de sorte \xE0 ce que la valeur actuelle corresponde \xE0 une consigne donn\xE9e (correction lin\xE9aire).',lib:'lightsensor.calibrate()',pro:'def calibrate(<span id=pn>calibratedVal</span>)',cmt:'<p>Modifie le param\xE8tre de calibration sp\xE9cifique du senseur de sorte \xE0 ce que la valeur actuelle corresponde \xE0 une consigne donn\xE9e (correction lin\xE9aire).</p>',par:{calibratedVal:'la consigne de valeur d\xE9sir\xE9e.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['LightSensor']['calibrateFromPoints']={syn:'Enregistre des points de correction de mesure, typiquement pour compenser l\x27effet d\x27un bo\xEEtier sur les mesures rendues par le capteur.',lib:'lightsensor.calibrateFromPoints()',pro:'def calibrateFromPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Enregistre des points de correction de mesure, typiquement pour compenser l\x27effet d\x27un bo\xEEtier sur les mesures rendues par le capteur. Il est possible d\x27enregistrer jusqu\x27\xE0 cinq points de correction. Les points de correction doivent \xEAtre fournis en ordre croissant, et dans la plage valide du capteur. Le module effectue automatiquement une interpolation lin\xE9aire de l\x27erreur entre les points sp\xE9cifi\xE9s. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p><p> Pour plus de plus amples possibilit\xE9s d\x27appliquer une surcalibration aux capteurs, veuillez contacter support@yoctopuce.com.</p>',par:{rawValues:'tableau de nombres flottants, correspondant aux valeurs brutes rendues par le capteur pour les points de correction.',refValues:'tableau de nombres flottants, correspondant aux valeurs corrig\xE9es d\xE9sir\xE9es pour les points de correction.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['LightSensor']['clearCache']={syn:'Invalide le cache.',lib:'lightsensor.clearCache()',pro:'def clearCache()',cmt:'<p>Invalide le cache. Invalide le cache des valeurs courantes du capteur de lumi\xE8re. Force le prochain appel \xE0 une m\xE9thode get_xxx() ou loadxxx() pour charger les les donn\xE9es depuis le module.</p>'};
+doc['LightSensor']['describe']={syn:'Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du capteur de lumi\xE8re au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'lightsensor.describe()',pro:'def describe()',cmt:'<p>Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du capteur de lumi\xE8re au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. Plus pr\xE9cis\xE9ment, <tt>TYPE</tt> correspond au type de fonction, <tt>NAME</tt> correspond au nom utils\xE9 lors du premier acc\xE8s a la fonction, <tt>SERIAL</tt> correspond au num\xE9ro de s\xE9rie du module si le module est connect\xE9, ou <tt>\x22unresolved\x22</tt> sinon, et <tt>FUNCTIONID</tt> correspond \xE0 l\x27identifiant mat\xE9riel de la fonction si le module est connect\xE9. Par exemple, La methode va retourner <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> si le module est d\xE9j\xE0 connect\xE9 ou <tt>Relay(BadCustomeName.relay1)=unresolved</tt> si le module n\x27est pas d\xE9j\xE0 connect\xE9. Cette methode ne declenche aucune transaction USB ou TCP et peut donc \xEAtre utilis\xE9 dans un debuggeur.</p>',ret:'une cha\xEEne de caract\xE8res d\xE9crivant le capteur de lumi\xE8re (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['LightSensor']['get_advertisedValue']={syn:'Retourne la valeur courante du capteur de lumi\xE8re (pas plus de 6 caract\xE8res).',lib:'lightsensor.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Retourne la valeur courante du capteur de lumi\xE8re (pas plus de 6 caract\xE8res).</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur courante du capteur de lumi\xE8re (pas plus de 6 caract\xE8res).',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['LightSensor']['get_currentRawValue']={syn:'Retourne la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en l\x27unit\xE9 sp\xE9cifi\xE9e, sous forme de nombre \xE0 virgule.',lib:'lightsensor.get_currentRawValue()',pro:'def get_currentRawValue()',cmt:'<p>Retourne la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en l\x27unit\xE9 sp\xE9cifi\xE9e, sous forme de nombre \xE0 virgule.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en l\x27unit\xE9 sp\xE9cifi\xE9e, sous forme de nombre \xE0 virgule',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_CURRENTRAWVALUE_INVALID</tt>.'};
+doc['LightSensor']['get_currentValue']={syn:'Retourne la valeur actuelle de la lumi\xE8re ambiante, en l\x27unit\xE9 sp\xE9cifi\xE9e, sous forme de nombre \xE0 virgule.',lib:'lightsensor.get_currentValue()',pro:'def get_currentValue()',cmt:'<p>Retourne la valeur actuelle de la lumi\xE8re ambiante, en l\x27unit\xE9 sp\xE9cifi\xE9e, sous forme de nombre \xE0 virgule.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur actuelle de la lumi\xE8re ambiante, en l\x27unit\xE9 sp\xE9cifi\xE9e, sous forme de nombre \xE0 virgule',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_CURRENTVALUE_INVALID</tt>.'};
+doc['LightSensor']['get_errorMessage']={syn:'Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du capteur de lumi\xE8re.',lib:'lightsensor.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du capteur de lumi\xE8re. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'une cha\xEEne de caract\xE8res correspondant au message de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du capteur de lumi\xE8re.'};
+doc['LightSensor']['get_errorType']={syn:'Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du capteur de lumi\xE8re.',lib:'lightsensor.get_errorType()',pro:'def get_errorType()',cmt:'<p>Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du capteur de lumi\xE8re. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'un nombre correspondant au code de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du capteur de lumi\xE8re.'};
+doc['LightSensor']['get_friendlyName']={syn:'Retourne un identifiant global du capteur de lumi\xE8re au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>.',lib:'lightsensor.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Retourne un identifiant global du capteur de lumi\xE8re au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>. Le cha\xEEne retourn\xE9e utilise soit les noms logiques du module et du capteur de lumi\xE8re si ils sont d\xE9finis, soit respectivement le num\xE9ro de s\xE9rie du module et l\x27identifant mat\xE9riel du capteur de lumi\xE8re (par exemple: <tt>MyCustomName.relay1</tt>)</p>',ret:'une cha\xEEne de caract\xE8res identifiant le capteur de lumi\xE8re en utilisant les noms logiques (ex: <tt>MyCustomName.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['LightSensor']['get_functionDescriptor']={syn:'Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction.',lib:'lightsensor.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction. Cet identifiant peut \xEAtre utilis\xE9 pour tester si deux instance de <tt>YFunction</tt> r\xE9f\xE9rencent physiquement la m\xEAme fonction sur le m\xEAme module.</p>',ret:'un identifiant de type <tt>YFUN_DESCR</tt>.',ext:'Si la fonction n\x27a jamais \xE9t\xE9 contact\xE9e, la valeur retourn\xE9e sera <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>'};
+doc['LightSensor']['get_functionId']={syn:'Retourne l\x27identifiant mat\xE9riel du capteur de lumi\xE8re, sans r\xE9f\xE9rence au module.',lib:'lightsensor.get_functionId()',pro:'def get_functionId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel du capteur de lumi\xE8re, sans r\xE9f\xE9rence au module. Par example <tt>relay1</tt>.</p>',ret:'une cha\xEEne de caract\xE8res identifiant le capteur de lumi\xE8re (ex: <tt>relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['LightSensor']['get_hardwareId']={syn:'Retourne l\x27identifiant mat\xE9riel unique du capteur de lumi\xE8re au format <tt>SERIAL.FUNCTIONID</tt>.',lib:'lightsensor.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel unique du capteur de lumi\xE8re au format <tt>SERIAL.FUNCTIONID</tt>. L\x27identifiant unique est compos\xE9 du num\xE9ro de s\xE9rie du module et de l\x27identifiant mat\xE9riel du capteur de lumi\xE8re (par example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'une cha\xEEne de caract\xE8res identifiant le capteur de lumi\xE8re (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['LightSensor']['get_highestValue']={syn:'Retourne la valeur maximale observ\xE9e pour la lumi\xE8re ambiante depuis le d\xE9marrage du module.',lib:'lightsensor.get_highestValue()',pro:'def get_highestValue()',cmt:'<p>Retourne la valeur maximale observ\xE9e pour la lumi\xE8re ambiante depuis le d\xE9marrage du module.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur maximale observ\xE9e pour la lumi\xE8re ambiante depuis le d\xE9marrage du module',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_HIGHESTVALUE_INVALID</tt>.'};
+doc['LightSensor']['get_logFrequency']={syn:'Retourne la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es.',lib:'lightsensor.get_logFrequency()',pro:'def get_logFrequency()',cmt:'<p>Retourne la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_LOGFREQUENCY_INVALID</tt>.'};
+doc['LightSensor']['get_logicalName']={syn:'Retourne le nom logique du capteur de lumi\xE8re.',lib:'lightsensor.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Retourne le nom logique du capteur de lumi\xE8re.</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du capteur de lumi\xE8re.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['LightSensor']['get_lowestValue']={syn:'Retourne la valeur minimale observ\xE9e pour la lumi\xE8re ambiante depuis le d\xE9marrage du module.',lib:'lightsensor.get_lowestValue()',pro:'def get_lowestValue()',cmt:'<p>Retourne la valeur minimale observ\xE9e pour la lumi\xE8re ambiante depuis le d\xE9marrage du module.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur minimale observ\xE9e pour la lumi\xE8re ambiante depuis le d\xE9marrage du module',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_LOWESTVALUE_INVALID</tt>.'};
+doc['LightSensor']['get_measureType']={syn:'Retourne le type de mesure de lumi\xE8re utilis\xE9 par le module.',lib:'lightsensor.get_measureType()',pro:'def get_measureType()',cmt:'<p>Retourne le type de mesure de lumi\xE8re utilis\xE9 par le module.</p>',ret:'une valeur parmi <tt>Y_MEASURETYPE_HUMAN_EYE</tt>, <tt>Y_MEASURETYPE_WIDE_SPECTRUM</tt>, <tt>Y_MEASURETYPE_INFRARED</tt>, <tt>Y_MEASURETYPE_HIGH_RATE</tt> et <tt>Y_MEASURETYPE_HIGH_ENERGY</tt> repr&eacute;sentant le type de mesure de lumi\xE8re utilis\xE9 par le module',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_MEASURETYPE_INVALID</tt>.'};
+doc['LightSensor']['get_module']={syn:'Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction.',lib:'lightsensor.get_module()',pro:'def get_module()',cmt:'<p>Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction. Si la fonction ne peut \xEAtre trouv\xE9e sur aucun module, l\x27instance de <tt>YModule</tt> retourn\xE9e ne sera pas joignable.</p>',ret:'une instance de <tt>YModule</tt>'};
+doc['LightSensor']['get_recordedData']={syn:'Retourne un objet DataSet repr\xE9sentant des mesures de ce capteur pr\xE9c\xE9demment enregistr\xE9es \xE0 l\x27aide du DataLogger, pour l\x27intervalle de temps sp\xE9cifi\xE9.',lib:'lightsensor.get_recordedData()',pro:'def get_recordedData(<span id=pn>startTime</span>, <span id=pn>endTime</span>)',cmt:'<p>Retourne un objet DataSet repr\xE9sentant des mesures de ce capteur pr\xE9c\xE9demment enregistr\xE9es \xE0 l\x27aide du DataLogger, pour l\x27intervalle de temps sp\xE9cifi\xE9. Veuillez vous r\xE9f\xE9rer \xE0 la documentation de la classe DataSet pour plus plus d\x27informations sur la mani\xE8re d\x27obtenir un aper\xE7u des mesures pour la p\xE9riode, et comment charger progressivement une grande quantit\xE9 de mesures depuis le dataLogger.</p><p> Cette m\xE9thode ne fonctionne que si le module utilise un firmware r\xE9cent, car les objets DataSet ne sont pas support\xE9s par les firmwares ant\xE9rieurs \xE0 la r\xE9vision 13000.</p>',par:{startTime:'le d\xE9but de l\x27intervalle de mesure d\xE9sir\xE9, c\x27est \xE0 dire en nombre de secondes depuis le 1er janvier 1970 UTC. La valeur 0 peut \xEAtre utilis\xE9e pour ne poser aucune limite sur le d\xE9but des mesures.',endTime:'la find de l\x27intercalle de mesure d\xE9sir\xE9, c\x27est \xE0 dire en nombre de secondes depuis le 1er janvier 1970 UTC. La valeur 0 peut \xEAtre utilis\xE9e pour ne poser aucune limite de fin.'},ret:'une instance de YDataSet, dont les m\xE9thodes permettent de d\x27acc\xE9der aux donn\xE9es historiques souhait\xE9es.'};
+doc['LightSensor']['get_reportFrequency']={syn:'Retourne la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction.',lib:'lightsensor.get_reportFrequency()',pro:'def get_reportFrequency()',cmt:'<p>Retourne la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_REPORTFREQUENCY_INVALID</tt>.'};
+doc['LightSensor']['get_resolution']={syn:'Retourne la r\xE9solution des valeurs mesur\xE9es.',lib:'lightsensor.get_resolution()',pro:'def get_resolution()',cmt:'<p>Retourne la r\xE9solution des valeurs mesur\xE9es. La r\xE9solution correspond \xE0 la pr\xE9cision num\xE9rique de la repr\xE9sentation des mesures. Elle n\x27est pas forc\xE9ment identique \xE0 la pr\xE9cision r\xE9elle du capteur.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la r\xE9solution des valeurs mesur\xE9es',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_RESOLUTION_INVALID</tt>.'};
+doc['LightSensor']['get_sensorState']={syn:'Retourne le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment.',lib:'lightsensor.get_sensorState()',pro:'def get_sensorState()',cmt:'<p>Retourne le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment.</p>',ret:'un entier repr&eacute;sentant le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_SENSORSTATE_INVALID</tt>.'};
+doc['LightSensor']['get_unit']={syn:'Retourne l\x27unit\xE9 dans laquelle la lumi\xE8re ambiante est exprim\xE9e.',lib:'lightsensor.get_unit()',pro:'def get_unit()',cmt:'<p>Retourne l\x27unit\xE9 dans laquelle la lumi\xE8re ambiante est exprim\xE9e.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant l\x27unit\xE9 dans laquelle la lumi\xE8re ambiante est exprim\xE9e',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_UNIT_INVALID</tt>.'};
+doc['LightSensor']['get_userData']={syn:'Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>.',lib:'lightsensor.get_userData()',pro:'def get_userData()',cmt:'<p>Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',ret:'l\x27objet stock\xE9 pr\xE9c\xE9demment par l\x27appelant.'};
+doc['LightSensor']['isOnline']={syn:'V\xE9rifie si le module h\xE9bergeant le capteur de lumi\xE8re est joignable, sans d\xE9clencher d\x27erreur.',lib:'lightsensor.isOnline()',pro:'def isOnline()',cmt:'<p>V\xE9rifie si le module h\xE9bergeant le capteur de lumi\xE8re est joignable, sans d\xE9clencher d\x27erreur. Si les valeurs des attributs en cache du capteur de lumi\xE8re sont valides au moment de l\x27appel, le module est consid\xE9r\xE9 joignable. Cette fonction ne cause en aucun cas d\x27exception, quelle que soit l\x27erreur qui pourrait se produire lors de la v\xE9rification de joignabilit\xE9.</p>',ret:'<tt>true</tt> si le capteur de lumi\xE8re est joignable, <tt>false</tt> sinon'};
+doc['LightSensor']['load']={syn:'Met en cache les valeurs courantes du capteur de lumi\xE8re, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e.',lib:'lightsensor.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Met en cache les valeurs courantes du capteur de lumi\xE8re, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e. Par d\xE9faut, lorsqu\x27on acc\xE8de \xE0 un module, tous les attributs des fonctions du module sont automatiquement mises en cache pour la dur\xE9e standard (5 ms). Cette m\xE9thode peut \xEAtre utilis\xE9e pour marquer occasionellement les donn\xE9es cach\xE9es comme valides pour une plus longue p\xE9riode, par exemple dans le but de r\xE9duire le trafic r\xE9seau.</p>',par:{msValidity:'un entier correspondant \xE0 la dur\xE9e de validit\xE9 attribu\xE9e aux les param\xE8tres charg\xE9s, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['LightSensor']['loadAttribute']={syn:'Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.',lib:'lightsensor.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un cha\xEEne vide.'};
+doc['LightSensor']['loadCalibrationPoints']={syn:'R\xE9cup\xE8re les points de correction de mesure pr\xE9c\xE9demment enregistr\xE9s \xE0 l\x27aide de la m\xE9thode <tt>calibrateFromPoints</tt>.',lib:'lightsensor.loadCalibrationPoints()',pro:'def loadCalibrationPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>R\xE9cup\xE8re les points de correction de mesure pr\xE9c\xE9demment enregistr\xE9s \xE0 l\x27aide de la m\xE9thode <tt>calibrateFromPoints</tt>.</p>',par:{rawValues:'tableau de nombres flottants, qui sera rempli par la fonction avec les valeurs brutes des points de correction.',refValues:'tableau de nombres flottants, qui sera rempli par la fonction avec les valeurs d\xE9sir\xE9es des points de correction.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['LightSensor']['muteValueCallbacks']={syn:'D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'lightsensor.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Vous pouvez utiliser cette fonction pour \xE9conomiser la bande passante et le CPU sur les machines de faible puissance, ou pour \xE9viter le d\xE9clanchement de callbacks HTTP. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['LightSensor']['nextLightSensor']={syn:'Continue l\x27\xE9num\xE9ration des capteurs de lumi\xE8re commenc\xE9e \xE0 l\x27aide de <tt>yFirstLightSensor()</tt>.',lib:'lightsensor.nextLightSensor()',pro:'def nextLightSensor()',cmt:'<p>Continue l\x27\xE9num\xE9ration des capteurs de lumi\xE8re commenc\xE9e \xE0 l\x27aide de <tt>yFirstLightSensor()</tt>.</p>',ret:'un pointeur sur un objet <tt>YLightSensor</tt> accessible en ligne, ou <tt>null</tt> lorsque l\x27\xE9num\xE9ration est termin\xE9e.'};
+doc['LightSensor']['registerTimedReportCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque notification p\xE9riodique.',lib:'lightsensor.registerTimedReportCallback()',pro:'def registerTimedReportCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque notification p\xE9riodique. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callbacks peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callbacks ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et un objet YMeasure d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['LightSensor']['registerValueCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e.',lib:'lightsensor.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callback peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callback ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et la cha\xEEne de caract\xE8re d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['LightSensor']['set_highestValue']={syn:'Modifie la m\xE9moire de valeur maximale observ\xE9e.',lib:'lightsensor.set_highestValue()',pro:'def set_highestValue(<span id=pn>newval</span>)',cmt:'<p>Modifie la m\xE9moire de valeur maximale observ\xE9e.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la m\xE9moire de valeur maximale observ\xE9e'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['LightSensor']['set_logFrequency']={syn:'Modifie la fr\xE9quence d\x27enregistrement des mesures dans le datalogger.',lib:'lightsensor.set_logFrequency()',pro:'def set_logFrequency(<span id=pn>newval</span>)',cmt:'<p>Modifie la fr\xE9quence d\x27enregistrement des mesures dans le datalogger. La fr\xE9quence peut \xEAtre sp\xE9cifi\xE9e en mesures par secondes, en mesures par minutes (par exemple \x2215/m\x22) ou en mesures par heure (par exemple \x224/h\x22). Pour d\xE9sactiver l\x27enregistrement des mesures de cette fonction, utilisez la valeur \x22OFF\x22.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence d\x27enregistrement des mesures dans le datalogger'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['LightSensor']['set_logicalName']={syn:'Modifie le nom logique du capteur de lumi\xE8re.',lib:'lightsensor.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Modifie le nom logique du capteur de lumi\xE8re. Vous pouvez utiliser <tt>yCheckLogicalName()</tt> pour v\xE9rifier si votre param\xE8tre est valide. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du capteur de lumi\xE8re.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27appel se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['LightSensor']['set_lowestValue']={syn:'Modifie la m\xE9moire de valeur minimale observ\xE9e.',lib:'lightsensor.set_lowestValue()',pro:'def set_lowestValue(<span id=pn>newval</span>)',cmt:'<p>Modifie la m\xE9moire de valeur minimale observ\xE9e.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la m\xE9moire de valeur minimale observ\xE9e'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['LightSensor']['set_measureType']={syn:'Change le type dde mesure de lumi\xE8re effectu\xE9e par le capteur.',lib:'lightsensor.set_measureType()',pro:'def set_measureType(<span id=pn>newval</span>)',cmt:'<p>Change le type dde mesure de lumi\xE8re effectu\xE9e par le capteur. La mesure peut soit approximer la r\xE9ponse de l\x27oeil humain, soit donner une valeur ciblant un spectre particulier, en fonction des possibilit\xE9s offertes par le r\xE9cepteur de lumi\xE8re. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une valeur parmi <tt>Y_MEASURETYPE_HUMAN_EYE</tt>, <tt>Y_MEASURETYPE_WIDE_SPECTRUM</tt>, <tt>Y_MEASURETYPE_INFRARED</tt>, <tt>Y_MEASURETYPE_HIGH_RATE</tt> et <tt>Y_MEASURETYPE_HIGH_ENERGY</tt>'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['LightSensor']['set_reportFrequency']={syn:'Modifie la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es.',lib:'lightsensor.set_reportFrequency()',pro:'def set_reportFrequency(<span id=pn>newval</span>)',cmt:'<p>Modifie la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es. La fr\xE9quence peut \xEAtre sp\xE9cifi\xE9e en mesures par secondes, en mesures par minutes (par exemple \x2215/m\x22) ou en mesures par heure (par exemple \x224/h\x22). Pour d\xE9sactiver les notifications p\xE9riodiques pour cette fonction, utilisez la valeur \x22OFF\x22.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['LightSensor']['set_resolution']={syn:'Modifie la r\xE9solution des valeurs physique mesur\xE9es.',lib:'lightsensor.set_resolution()',pro:'def set_resolution(<span id=pn>newval</span>)',cmt:'<p>Modifie la r\xE9solution des valeurs physique mesur\xE9es. La r\xE9solution correspond \xE0 la pr\xE9cision de l\x27affichage des mesures. Elle ne change pas la pr\xE9cision de la mesure elle-m\xEAme.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la r\xE9solution des valeurs physique mesur\xE9es'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['LightSensor']['set_userData']={syn:'Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>.',lib:'lightsensor.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',par:{data:'objet quelconque \xE0 m\xE9moriser'}};
+doc['LightSensor']['startDataLogger']={syn:'D\xE9marre l\x27enregistreur de donn\xE9es du module.',lib:'lightsensor.startDataLogger()',pro:'def startDataLogger()',cmt:'<p>D\xE9marre l\x27enregistreur de donn\xE9es du module. Attention, l\x27enregistreur ne sauvera les mesures de ce capteur que si la fr\xE9quence d\x27enregistrement (logFrequency) n\x27est pas sur \x22OFF\x22.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.'};
+doc['LightSensor']['stopDataLogger']={syn:'Arr\xEAte l\x27enregistreur de donn\xE9es du module.',lib:'lightsensor.stopDataLogger()',pro:'def stopDataLogger()',cmt:'<p>Arr\xEAte l\x27enregistreur de donn\xE9es du module.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.'};
+doc['LightSensor']['unmuteValueCallbacks']={syn:'R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'lightsensor.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Cette fonction annule un pr\xE9c\xE9dent appel \xE0 <tt>muteValueCallbacks()</tt>. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+//--- (end of generated code: LightSensor)
+//--- (generated code: HubPort)
+doc['HubPort']={'':{syn:'Interface d\x27un port de Yocto-hub',inc:'from yocto_hubport import *',cmt:'<p>Les objets YHubPort permettent de contr\xF4ler l\x27alimentation des ports d\x27un YoctoHub, ainsi que de d\xE9tecter si un module y est raccord\xE9 et lequel. Un YHubPort re\xE7oit toujours automatiquement comme nom logique le num\xE9ro de s\xE9rie unique du module Yoctopuce qui y est connect\xE9.</p>'}};
+doc['HubPort']['FindHubPort']={syn:'Permet de retrouver un port de Yocto-hub d\x27apr\xE8s un identifiant donn\xE9.',lib:'YHubPort.FindHubPort()',pro:'def FindHubPort(<span id=pn>func</span>)',cmt:'<p>Permet de retrouver un port de Yocto-hub d\x27apr\xE8s un identifiant donn\xE9. L\x27identifiant peut \xEAtre sp\xE9cifi\xE9 sous plusieurs formes:<br> <ul> <li>NomLogiqueFonction</li> <li>NoSerieModule.IdentifiantFonction</li> <li>NoSerieModule.NomLogiqueFonction</li> <li>NomLogiqueModule.IdentifiantMat\xE9riel</li> <li>NomLogiqueModule.NomLogiqueFonction</li> </ul></p><p> Cette fonction n\x27exige pas que le port de Yocto-hub soit en ligne au moment ou elle est appel\xE9e, l\x27objet retourn\xE9 sera n\xE9anmoins valide. Utiliser la m\xE9thode <tt>YHubPort.isOnline()</tt> pour tester si le port de Yocto-hub est utilisable \xE0 un moment donn\xE9. En cas d\x27ambigu\xEFt\xE9 lorsqu\x27on fait une recherche par nom logique, aucune erreur ne sera notifi\xE9e: la premi\xE8re instance trouv\xE9e sera renvoy\xE9e. La recherche se fait d\x27abord par nom mat\xE9riel, puis par nom logique.</p>',par:{func:'une cha\xEEne de caract\xE8res qui r\xE9f\xE9rence le port de Yocto-hub sans ambigu\xEFt\xE9'},ret:'un objet de classe <tt>YHubPort</tt> qui permet ensuite de contr\xF4ler le port de Yocto-hub.'};
+doc['HubPort']['FirstHubPort']={syn:'Commence l\x27\xE9num\xE9ration des port de Yocto-hub accessibles par la librairie.',lib:'YHubPort.FirstHubPort()',pro:'def FirstHubPort()',cmt:'<p>Commence l\x27\xE9num\xE9ration des port de Yocto-hub accessibles par la librairie. Utiliser la fonction <tt>YHubPort.nextHubPort()</tt> pour it\xE9rer sur les autres port de Yocto-hub.</p>',ret:'un pointeur sur un objet <tt>YHubPort</tt>, correspondant au premier port de Yocto-hub accessible en ligne, ou <tt>null</tt> si il n\x27y a pas de port de Yocto-hub disponibles.'};
+doc['HubPort']['clearCache']={syn:'Invalide le cache.',lib:'hubport.clearCache()',pro:'def clearCache()',cmt:'<p>Invalide le cache. Invalide le cache des valeurs courantes du port de Yocto-hub. Force le prochain appel \xE0 une m\xE9thode get_xxx() ou loadxxx() pour charger les les donn\xE9es depuis le module.</p>'};
+doc['HubPort']['describe']={syn:'Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du port de Yocto-hub au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'hubport.describe()',pro:'def describe()',cmt:'<p>Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du port de Yocto-hub au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. Plus pr\xE9cis\xE9ment, <tt>TYPE</tt> correspond au type de fonction, <tt>NAME</tt> correspond au nom utils\xE9 lors du premier acc\xE8s a la fonction, <tt>SERIAL</tt> correspond au num\xE9ro de s\xE9rie du module si le module est connect\xE9, ou <tt>\x22unresolved\x22</tt> sinon, et <tt>FUNCTIONID</tt> correspond \xE0 l\x27identifiant mat\xE9riel de la fonction si le module est connect\xE9. Par exemple, La methode va retourner <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> si le module est d\xE9j\xE0 connect\xE9 ou <tt>Relay(BadCustomeName.relay1)=unresolved</tt> si le module n\x27est pas d\xE9j\xE0 connect\xE9. Cette methode ne declenche aucune transaction USB ou TCP et peut donc \xEAtre utilis\xE9 dans un debuggeur.</p>',ret:'une cha\xEEne de caract\xE8res d\xE9crivant le port de Yocto-hub (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['HubPort']['get_advertisedValue']={syn:'Retourne la valeur courante du port de Yocto-hub (pas plus de 6 caract\xE8res).',lib:'hubport.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Retourne la valeur courante du port de Yocto-hub (pas plus de 6 caract\xE8res).</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur courante du port de Yocto-hub (pas plus de 6 caract\xE8res).',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['HubPort']['get_baudRate']={syn:'Retourne la vitesse de transfert utilis\xE9e par le port de Yocto-hub, en kbps.',lib:'hubport.get_baudRate()',pro:'def get_baudRate()',cmt:'<p>Retourne la vitesse de transfert utilis\xE9e par le port de Yocto-hub, en kbps. La valeur par d\xE9faut est 1000 kbps, une valeur inf\xE9rieure r\xE9v\xE8le des probl\xE8mes de communication.</p>',ret:'un entier repr&eacute;sentant la vitesse de transfert utilis\xE9e par le port de Yocto-hub, en kbps',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_BAUDRATE_INVALID</tt>.'};
+doc['HubPort']['get_enabled']={syn:'Retourne vrai si le port du Yocto-hub est aliment\xE9, faux sinon.',lib:'hubport.get_enabled()',pro:'def get_enabled()',cmt:'<p>Retourne vrai si le port du Yocto-hub est aliment\xE9, faux sinon.</p>',ret:'soit <tt>Y_ENABLED_FALSE</tt>, soit <tt>Y_ENABLED_TRUE</tt>, selon vrai si le port du Yocto-hub est aliment\xE9, faux sinon',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_ENABLED_INVALID</tt>.'};
+doc['HubPort']['get_errorMessage']={syn:'Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du port de Yocto-hub.',lib:'hubport.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du port de Yocto-hub. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'une cha\xEEne de caract\xE8res correspondant au message de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du port de Yocto-hub.'};
+doc['HubPort']['get_errorType']={syn:'Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du port de Yocto-hub.',lib:'hubport.get_errorType()',pro:'def get_errorType()',cmt:'<p>Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du port de Yocto-hub. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'un nombre correspondant au code de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du port de Yocto-hub.'};
+doc['HubPort']['get_friendlyName']={syn:'Retourne un identifiant global du port de Yocto-hub au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>.',lib:'hubport.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Retourne un identifiant global du port de Yocto-hub au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>. Le cha\xEEne retourn\xE9e utilise soit les noms logiques du module et du port de Yocto-hub si ils sont d\xE9finis, soit respectivement le num\xE9ro de s\xE9rie du module et l\x27identifant mat\xE9riel du port de Yocto-hub (par exemple: <tt>MyCustomName.relay1</tt>)</p>',ret:'une cha\xEEne de caract\xE8res identifiant le port de Yocto-hub en utilisant les noms logiques (ex: <tt>MyCustomName.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['HubPort']['get_functionDescriptor']={syn:'Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction.',lib:'hubport.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction. Cet identifiant peut \xEAtre utilis\xE9 pour tester si deux instance de <tt>YFunction</tt> r\xE9f\xE9rencent physiquement la m\xEAme fonction sur le m\xEAme module.</p>',ret:'un identifiant de type <tt>YFUN_DESCR</tt>.',ext:'Si la fonction n\x27a jamais \xE9t\xE9 contact\xE9e, la valeur retourn\xE9e sera <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>'};
+doc['HubPort']['get_functionId']={syn:'Retourne l\x27identifiant mat\xE9riel du port de Yocto-hub, sans r\xE9f\xE9rence au module.',lib:'hubport.get_functionId()',pro:'def get_functionId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel du port de Yocto-hub, sans r\xE9f\xE9rence au module. Par example <tt>relay1</tt>.</p>',ret:'une cha\xEEne de caract\xE8res identifiant le port de Yocto-hub (ex: <tt>relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['HubPort']['get_hardwareId']={syn:'Retourne l\x27identifiant mat\xE9riel unique du port de Yocto-hub au format <tt>SERIAL.FUNCTIONID</tt>.',lib:'hubport.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel unique du port de Yocto-hub au format <tt>SERIAL.FUNCTIONID</tt>. L\x27identifiant unique est compos\xE9 du num\xE9ro de s\xE9rie du module et de l\x27identifiant mat\xE9riel du port de Yocto-hub (par example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'une cha\xEEne de caract\xE8res identifiant le port de Yocto-hub (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['HubPort']['get_logicalName']={syn:'Retourne le nom logique du port de Yocto-hub.',lib:'hubport.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Retourne le nom logique du port de Yocto-hub.</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du port de Yocto-hub.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['HubPort']['get_module']={syn:'Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction.',lib:'hubport.get_module()',pro:'def get_module()',cmt:'<p>Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction. Si la fonction ne peut \xEAtre trouv\xE9e sur aucun module, l\x27instance de <tt>YModule</tt> retourn\xE9e ne sera pas joignable.</p>',ret:'une instance de <tt>YModule</tt>'};
+doc['HubPort']['get_portState']={syn:'Retourne l\x27\xE9tat actuel du port de Yocto-hub.',lib:'hubport.get_portState()',pro:'def get_portState()',cmt:'<p>Retourne l\x27\xE9tat actuel du port de Yocto-hub.</p>',ret:'une valeur parmi <tt>Y_PORTSTATE_OFF</tt>, <tt>Y_PORTSTATE_OVRLD</tt>, <tt>Y_PORTSTATE_ON</tt>, <tt>Y_PORTSTATE_RUN</tt> et <tt>Y_PORTSTATE_PROG</tt> repr&eacute;sentant l\x27\xE9tat actuel du port de Yocto-hub',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_PORTSTATE_INVALID</tt>.'};
+doc['HubPort']['get_userData']={syn:'Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>.',lib:'hubport.get_userData()',pro:'def get_userData()',cmt:'<p>Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',ret:'l\x27objet stock\xE9 pr\xE9c\xE9demment par l\x27appelant.'};
+doc['HubPort']['isOnline']={syn:'V\xE9rifie si le module h\xE9bergeant le port de Yocto-hub est joignable, sans d\xE9clencher d\x27erreur.',lib:'hubport.isOnline()',pro:'def isOnline()',cmt:'<p>V\xE9rifie si le module h\xE9bergeant le port de Yocto-hub est joignable, sans d\xE9clencher d\x27erreur. Si les valeurs des attributs en cache du port de Yocto-hub sont valides au moment de l\x27appel, le module est consid\xE9r\xE9 joignable. Cette fonction ne cause en aucun cas d\x27exception, quelle que soit l\x27erreur qui pourrait se produire lors de la v\xE9rification de joignabilit\xE9.</p>',ret:'<tt>true</tt> si le port de Yocto-hub est joignable, <tt>false</tt> sinon'};
+doc['HubPort']['load']={syn:'Met en cache les valeurs courantes du port de Yocto-hub, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e.',lib:'hubport.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Met en cache les valeurs courantes du port de Yocto-hub, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e. Par d\xE9faut, lorsqu\x27on acc\xE8de \xE0 un module, tous les attributs des fonctions du module sont automatiquement mises en cache pour la dur\xE9e standard (5 ms). Cette m\xE9thode peut \xEAtre utilis\xE9e pour marquer occasionellement les donn\xE9es cach\xE9es comme valides pour une plus longue p\xE9riode, par exemple dans le but de r\xE9duire le trafic r\xE9seau.</p>',par:{msValidity:'un entier correspondant \xE0 la dur\xE9e de validit\xE9 attribu\xE9e aux les param\xE8tres charg\xE9s, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['HubPort']['loadAttribute']={syn:'Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.',lib:'hubport.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un cha\xEEne vide.'};
+doc['HubPort']['muteValueCallbacks']={syn:'D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'hubport.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Vous pouvez utiliser cette fonction pour \xE9conomiser la bande passante et le CPU sur les machines de faible puissance, ou pour \xE9viter le d\xE9clanchement de callbacks HTTP. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['HubPort']['nextHubPort']={syn:'Continue l\x27\xE9num\xE9ration des port de Yocto-hub commenc\xE9e \xE0 l\x27aide de <tt>yFirstHubPort()</tt>.',lib:'hubport.nextHubPort()',pro:'def nextHubPort()',cmt:'<p>Continue l\x27\xE9num\xE9ration des port de Yocto-hub commenc\xE9e \xE0 l\x27aide de <tt>yFirstHubPort()</tt>.</p>',ret:'un pointeur sur un objet <tt>YHubPort</tt> accessible en ligne, ou <tt>null</tt> lorsque l\x27\xE9num\xE9ration est termin\xE9e.'};
+doc['HubPort']['registerValueCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e.',lib:'hubport.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callback peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callback ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et la cha\xEEne de caract\xE8re d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['HubPort']['set_enabled']={syn:'Modifie le mode d\x27activation du port du Yocto-hub.',lib:'hubport.set_enabled()',pro:'def set_enabled(<span id=pn>newval</span>)',cmt:'<p>Modifie le mode d\x27activation du port du Yocto-hub. Si le port est actif, il sera aliment\xE9. Sinon, l\x27alimentation du module est coup\xE9e.</p>',par:{newval:'soit <tt>Y_ENABLED_FALSE</tt>, soit <tt>Y_ENABLED_TRUE</tt>, selon le mode d\x27activation du port du Yocto-hub'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['HubPort']['set_logicalName']={syn:'Modifie le nom logique du port de Yocto-hub.',lib:'hubport.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Modifie le nom logique du port de Yocto-hub. Vous pouvez utiliser <tt>yCheckLogicalName()</tt> pour v\xE9rifier si votre param\xE8tre est valide. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du port de Yocto-hub.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27appel se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['HubPort']['set_userData']={syn:'Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>.',lib:'hubport.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',par:{data:'objet quelconque \xE0 m\xE9moriser'}};
+doc['HubPort']['unmuteValueCallbacks']={syn:'R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'hubport.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Cette fonction annule un pr\xE9c\xE9dent appel \xE0 <tt>muteValueCallbacks()</tt>. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+//--- (end of generated code: HubPort)
+//--- (generated code: AnButton)
+doc['AnButton']={'':{syn:'Interface de la fonction AnButton',inc:'from yocto_anbutton import *',cmt:'<p>La librairie de programmation Yoctopuce permet aussi bien de mesurer l\x27\xE9tat d\x27un simple bouton que de lire un potentiom\xE8tre analogique (r\xE9sistance variable), comme par exmple un bouton rotatif continu, une poign\xE9e de commande de gaz ou un joystick. Le module est capable de se calibrer sur les valeurs minimales et maximales du potentiom\xE8tre, et de restituer une valeur calibr\xE9e variant proportionnellement avec la position du potentiom\xE8tre, ind\xE9pendant de sa r\xE9sistance totale.</p>'}};
+doc['AnButton']['FindAnButton']={syn:'Permet de retrouver une entr\xE9e analogique d\x27apr\xE8s un identifiant donn\xE9.',lib:'YAnButton.FindAnButton()',pro:'def FindAnButton(<span id=pn>func</span>)',cmt:'<p>Permet de retrouver une entr\xE9e analogique d\x27apr\xE8s un identifiant donn\xE9. L\x27identifiant peut \xEAtre sp\xE9cifi\xE9 sous plusieurs formes:<br> <ul> <li>NomLogiqueFonction</li> <li>NoSerieModule.IdentifiantFonction</li> <li>NoSerieModule.NomLogiqueFonction</li> <li>NomLogiqueModule.IdentifiantMat\xE9riel</li> <li>NomLogiqueModule.NomLogiqueFonction</li> </ul></p><p> Cette fonction n\x27exige pas que l\x27entr\xE9e analogique soit en ligne au moment ou elle est appel\xE9e, l\x27objet retourn\xE9 sera n\xE9anmoins valide. Utiliser la m\xE9thode <tt>YAnButton.isOnline()</tt> pour tester si l\x27entr\xE9e analogique est utilisable \xE0 un moment donn\xE9. En cas d\x27ambigu\xEFt\xE9 lorsqu\x27on fait une recherche par nom logique, aucune erreur ne sera notifi\xE9e: la premi\xE8re instance trouv\xE9e sera renvoy\xE9e. La recherche se fait d\x27abord par nom mat\xE9riel, puis par nom logique.</p>',par:{func:'une cha\xEEne de caract\xE8res qui r\xE9f\xE9rence l\x27entr\xE9e analogique sans ambigu\xEFt\xE9'},ret:'un objet de classe <tt>YAnButton</tt> qui permet ensuite de contr\xF4ler l\x27entr\xE9e analogique.'};
+doc['AnButton']['FirstAnButton']={syn:'Commence l\x27\xE9num\xE9ration des entr\xE9es analogiques accessibles par la librairie.',lib:'YAnButton.FirstAnButton()',pro:'def FirstAnButton()',cmt:'<p>Commence l\x27\xE9num\xE9ration des entr\xE9es analogiques accessibles par la librairie. Utiliser la fonction <tt>YAnButton.nextAnButton()</tt> pour it\xE9rer sur les autres entr\xE9es analogiques.</p>',ret:'un pointeur sur un objet <tt>YAnButton</tt>, correspondant \xE0 la premi\xE8re entr\xE9e analogique accessible en ligne, ou <tt>null</tt> si il n\x27y a pas de entr\xE9es analogiques disponibles.'};
+doc['AnButton']['clearCache']={syn:'Invalide le cache.',lib:'anbutton.clearCache()',pro:'def clearCache()',cmt:'<p>Invalide le cache. Invalide le cache des valeurs courantes de l\x27entr\xE9e analogique. Force le prochain appel \xE0 une m\xE9thode get_xxx() ou loadxxx() pour charger les les donn\xE9es depuis le module.</p>'};
+doc['AnButton']['describe']={syn:'Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance de l\x27entr\xE9e analogique au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'anbutton.describe()',pro:'def describe()',cmt:'<p>Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance de l\x27entr\xE9e analogique au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. Plus pr\xE9cis\xE9ment, <tt>TYPE</tt> correspond au type de fonction, <tt>NAME</tt> correspond au nom utils\xE9 lors du premier acc\xE8s a la fonction, <tt>SERIAL</tt> correspond au num\xE9ro de s\xE9rie du module si le module est connect\xE9, ou <tt>\x22unresolved\x22</tt> sinon, et <tt>FUNCTIONID</tt> correspond \xE0 l\x27identifiant mat\xE9riel de la fonction si le module est connect\xE9. Par exemple, La methode va retourner <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> si le module est d\xE9j\xE0 connect\xE9 ou <tt>Relay(BadCustomeName.relay1)=unresolved</tt> si le module n\x27est pas d\xE9j\xE0 connect\xE9. Cette methode ne declenche aucune transaction USB ou TCP et peut donc \xEAtre utilis\xE9 dans un debuggeur.</p>',ret:'une cha\xEEne de caract\xE8res d\xE9crivant l\x27entr\xE9e analogique (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['AnButton']['get_advertisedValue']={syn:'Retourne la valeur courante de l\x27entr\xE9e analogique (pas plus de 6 caract\xE8res).',lib:'anbutton.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Retourne la valeur courante de l\x27entr\xE9e analogique (pas plus de 6 caract\xE8res).</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur courante de l\x27entr\xE9e analogique (pas plus de 6 caract\xE8res).',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['AnButton']['get_analogCalibration']={syn:'Permet de savoir si une proc\xE9dure de calibration est actuellement en cours.',lib:'anbutton.get_analogCalibration()',pro:'def get_analogCalibration()',cmt:'<p>Permet de savoir si une proc\xE9dure de calibration est actuellement en cours.</p>',ret:'soit <tt>Y_ANALOGCALIBRATION_OFF</tt>, soit <tt>Y_ANALOGCALIBRATION_ON</tt>',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_ANALOGCALIBRATION_INVALID</tt>.'};
+doc['AnButton']['get_calibratedValue']={syn:'Retourne la valeur calibr\xE9e de l\x27entr\xE9e (entre 0 et 1000 inclus).',lib:'anbutton.get_calibratedValue()',pro:'def get_calibratedValue()',cmt:'<p>Retourne la valeur calibr\xE9e de l\x27entr\xE9e (entre 0 et 1000 inclus).</p>',ret:'un entier repr&eacute;sentant la valeur calibr\xE9e de l\x27entr\xE9e (entre 0 et 1000 inclus)',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_CALIBRATEDVALUE_INVALID</tt>.'};
+doc['AnButton']['get_calibrationMax']={syn:'Retourne la valeur maximale observ\xE9e durant la calibration (entre 0 et 4095 inclus).',lib:'anbutton.get_calibrationMax()',pro:'def get_calibrationMax()',cmt:'<p>Retourne la valeur maximale observ\xE9e durant la calibration (entre 0 et 4095 inclus).</p>',ret:'un entier repr&eacute;sentant la valeur maximale observ\xE9e durant la calibration (entre 0 et 4095 inclus)',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_CALIBRATIONMAX_INVALID</tt>.'};
+doc['AnButton']['get_calibrationMin']={syn:'Retourne la valeur minimale observ\xE9e durant la calibration (entre 0 et 4095 inclus).',lib:'anbutton.get_calibrationMin()',pro:'def get_calibrationMin()',cmt:'<p>Retourne la valeur minimale observ\xE9e durant la calibration (entre 0 et 4095 inclus).</p>',ret:'un entier repr&eacute;sentant la valeur minimale observ\xE9e durant la calibration (entre 0 et 4095 inclus)',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_CALIBRATIONMIN_INVALID</tt>.'};
+doc['AnButton']['get_errorMessage']={syn:'Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de l\x27entr\xE9e analogique.',lib:'anbutton.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de l\x27entr\xE9e analogique. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'une cha\xEEne de caract\xE8res correspondant au message de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation de l\x27entr\xE9e analogique.'};
+doc['AnButton']['get_errorType']={syn:'Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de l\x27entr\xE9e analogique.',lib:'anbutton.get_errorType()',pro:'def get_errorType()',cmt:'<p>Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de l\x27entr\xE9e analogique. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'un nombre correspondant au code de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation de l\x27entr\xE9e analogique.'};
+doc['AnButton']['get_friendlyName']={syn:'Retourne un identifiant global de l\x27entr\xE9e analogique au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>.',lib:'anbutton.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Retourne un identifiant global de l\x27entr\xE9e analogique au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>. Le cha\xEEne retourn\xE9e utilise soit les noms logiques du module et de l\x27entr\xE9e analogique si ils sont d\xE9finis, soit respectivement le num\xE9ro de s\xE9rie du module et l\x27identifant mat\xE9riel de l\x27entr\xE9e analogique (par exemple: <tt>MyCustomName.relay1</tt>)</p>',ret:'une cha\xEEne de caract\xE8res identifiant l\x27entr\xE9e analogique en utilisant les noms logiques (ex: <tt>MyCustomName.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['AnButton']['get_functionDescriptor']={syn:'Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction.',lib:'anbutton.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction. Cet identifiant peut \xEAtre utilis\xE9 pour tester si deux instance de <tt>YFunction</tt> r\xE9f\xE9rencent physiquement la m\xEAme fonction sur le m\xEAme module.</p>',ret:'un identifiant de type <tt>YFUN_DESCR</tt>.',ext:'Si la fonction n\x27a jamais \xE9t\xE9 contact\xE9e, la valeur retourn\xE9e sera <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>'};
+doc['AnButton']['get_functionId']={syn:'Retourne l\x27identifiant mat\xE9riel de l\x27entr\xE9e analogique, sans r\xE9f\xE9rence au module.',lib:'anbutton.get_functionId()',pro:'def get_functionId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel de l\x27entr\xE9e analogique, sans r\xE9f\xE9rence au module. Par example <tt>relay1</tt>.</p>',ret:'une cha\xEEne de caract\xE8res identifiant l\x27entr\xE9e analogique (ex: <tt>relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['AnButton']['get_hardwareId']={syn:'Retourne l\x27identifiant mat\xE9riel unique de l\x27entr\xE9e analogique au format <tt>SERIAL.FUNCTIONID</tt>.',lib:'anbutton.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel unique de l\x27entr\xE9e analogique au format <tt>SERIAL.FUNCTIONID</tt>. L\x27identifiant unique est compos\xE9 du num\xE9ro de s\xE9rie du module et de l\x27identifiant mat\xE9riel de l\x27entr\xE9e analogique (par example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'une cha\xEEne de caract\xE8res identifiant l\x27entr\xE9e analogique (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['AnButton']['get_isPressed']={syn:'Retourne vrai si l\x27entr\xE9e (consid\xE9r\xE9e comme binaire) est active (contact ferm\xE9), et faux sinon.',lib:'anbutton.get_isPressed()',pro:'def get_isPressed()',cmt:'<p>Retourne vrai si l\x27entr\xE9e (consid\xE9r\xE9e comme binaire) est active (contact ferm\xE9), et faux sinon.</p>',ret:'soit <tt>Y_ISPRESSED_FALSE</tt>, soit <tt>Y_ISPRESSED_TRUE</tt>, selon vrai si l\x27entr\xE9e (consid\xE9r\xE9e comme binaire) est active (contact ferm\xE9), et faux sinon',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_ISPRESSED_INVALID</tt>.'};
+doc['AnButton']['get_lastTimePressed']={syn:'Retourne le temps absolu (nombre de millisecondes) entre la mise sous tension du module et la derni\xE8re pression observ\xE9e du bouton \xE0 l\x27entr\xE9e (transition du contact de ouvert \xE0 ferm\xE9).',lib:'anbutton.get_lastTimePressed()',pro:'def get_lastTimePressed()',cmt:'<p>Retourne le temps absolu (nombre de millisecondes) entre la mise sous tension du module et la derni\xE8re pression observ\xE9e du bouton \xE0 l\x27entr\xE9e (transition du contact de ouvert \xE0 ferm\xE9).</p>',ret:'un entier repr&eacute;sentant le temps absolu (nombre de millisecondes) entre la mise sous tension du module et la derni\xE8re pression observ\xE9e du bouton \xE0 l\x27entr\xE9e (transition du contact de ouvert \xE0 ferm\xE9)',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_LASTTIMEPRESSED_INVALID</tt>.'};
+doc['AnButton']['get_lastTimeReleased']={syn:'Retourne le temps absolu (nombre de millisecondes) entre la mise sous tension du module et le dernier rel\xE2chement observ\xE9e du bouton \xE0 l\x27entr\xE9e (transition du contact de ferm\xE9 \xE0 ouvert).',lib:'anbutton.get_lastTimeReleased()',pro:'def get_lastTimeReleased()',cmt:'<p>Retourne le temps absolu (nombre de millisecondes) entre la mise sous tension du module et le dernier rel\xE2chement observ\xE9e du bouton \xE0 l\x27entr\xE9e (transition du contact de ferm\xE9 \xE0 ouvert).</p>',ret:'un entier repr&eacute;sentant le temps absolu (nombre de millisecondes) entre la mise sous tension du module et le dernier rel\xE2chement observ\xE9e du bouton \xE0 l\x27entr\xE9e (transition du contact de ferm\xE9 \xE0 ouvert)',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_LASTTIMERELEASED_INVALID</tt>.'};
+doc['AnButton']['get_logicalName']={syn:'Retourne le nom logique de l\x27entr\xE9e analogique.',lib:'anbutton.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Retourne le nom logique de l\x27entr\xE9e analogique.</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique de l\x27entr\xE9e analogique.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['AnButton']['get_module']={syn:'Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction.',lib:'anbutton.get_module()',pro:'def get_module()',cmt:'<p>Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction. Si la fonction ne peut \xEAtre trouv\xE9e sur aucun module, l\x27instance de <tt>YModule</tt> retourn\xE9e ne sera pas joignable.</p>',ret:'une instance de <tt>YModule</tt>'};
+doc['AnButton']['get_pulseCounter']={syn:'Retourne la valeur du compteur d\x27impulsions.',lib:'anbutton.get_pulseCounter()',pro:'def get_pulseCounter()',cmt:'<p>Retourne la valeur du compteur d\x27impulsions. La valeur est cod\xE9e sur 32 bits. En cas de d\xE9passement de capacite (>=2^32), le compteur repart \xE0 z\xE9ro. Le compteur peut \xEAtre r\xE9initialis\xE9 en appelant la m\xE9thode resetCounter().</p>',ret:'un entier repr&eacute;sentant la valeur du compteur d\x27impulsions',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_PULSECOUNTER_INVALID</tt>.'};
+doc['AnButton']['get_pulseTimer']={syn:'Retourne le timer du compteur d\x27impulsions (ms).',lib:'anbutton.get_pulseTimer()',pro:'def get_pulseTimer()',cmt:'<p>Retourne le timer du compteur d\x27impulsions (ms).</p>',ret:'un entier repr&eacute;sentant le timer du compteur d\x27impulsions (ms)',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_PULSETIMER_INVALID</tt>.'};
+doc['AnButton']['get_rawValue']={syn:'Retourne la valeur mesur\xE9e de l\x27entr\xE9e telle-quelle (entre 0 et 4095 inclus).',lib:'anbutton.get_rawValue()',pro:'def get_rawValue()',cmt:'<p>Retourne la valeur mesur\xE9e de l\x27entr\xE9e telle-quelle (entre 0 et 4095 inclus).</p>',ret:'un entier repr&eacute;sentant la valeur mesur\xE9e de l\x27entr\xE9e telle-quelle (entre 0 et 4095 inclus)',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_RAWVALUE_INVALID</tt>.'};
+doc['AnButton']['get_sensitivity']={syn:'Retourne la sensibilit\xE9 pour l\x27entr\xE9e (entre 1 et 1000) pour le d\xE9clanchement de callbacks.',lib:'anbutton.get_sensitivity()',pro:'def get_sensitivity()',cmt:'<p>Retourne la sensibilit\xE9 pour l\x27entr\xE9e (entre 1 et 1000) pour le d\xE9clanchement de callbacks.</p>',ret:'un entier repr&eacute;sentant la sensibilit\xE9 pour l\x27entr\xE9e (entre 1 et 1000) pour le d\xE9clanchement de callbacks',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_SENSITIVITY_INVALID</tt>.'};
+doc['AnButton']['get_userData']={syn:'Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>.',lib:'anbutton.get_userData()',pro:'def get_userData()',cmt:'<p>Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',ret:'l\x27objet stock\xE9 pr\xE9c\xE9demment par l\x27appelant.'};
+doc['AnButton']['isOnline']={syn:'V\xE9rifie si le module h\xE9bergeant l\x27entr\xE9e analogique est joignable, sans d\xE9clencher d\x27erreur.',lib:'anbutton.isOnline()',pro:'def isOnline()',cmt:'<p>V\xE9rifie si le module h\xE9bergeant l\x27entr\xE9e analogique est joignable, sans d\xE9clencher d\x27erreur. Si les valeurs des attributs en cache de l\x27entr\xE9e analogique sont valides au moment de l\x27appel, le module est consid\xE9r\xE9 joignable. Cette fonction ne cause en aucun cas d\x27exception, quelle que soit l\x27erreur qui pourrait se produire lors de la v\xE9rification de joignabilit\xE9.</p>',ret:'<tt>true</tt> si l\x27entr\xE9e analogique est joignable, <tt>false</tt> sinon'};
+doc['AnButton']['load']={syn:'Met en cache les valeurs courantes de l\x27entr\xE9e analogique, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e.',lib:'anbutton.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Met en cache les valeurs courantes de l\x27entr\xE9e analogique, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e. Par d\xE9faut, lorsqu\x27on acc\xE8de \xE0 un module, tous les attributs des fonctions du module sont automatiquement mises en cache pour la dur\xE9e standard (5 ms). Cette m\xE9thode peut \xEAtre utilis\xE9e pour marquer occasionellement les donn\xE9es cach\xE9es comme valides pour une plus longue p\xE9riode, par exemple dans le but de r\xE9duire le trafic r\xE9seau.</p>',par:{msValidity:'un entier correspondant \xE0 la dur\xE9e de validit\xE9 attribu\xE9e aux les param\xE8tres charg\xE9s, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['AnButton']['loadAttribute']={syn:'Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.',lib:'anbutton.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un cha\xEEne vide.'};
+doc['AnButton']['muteValueCallbacks']={syn:'D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'anbutton.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Vous pouvez utiliser cette fonction pour \xE9conomiser la bande passante et le CPU sur les machines de faible puissance, ou pour \xE9viter le d\xE9clanchement de callbacks HTTP. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['AnButton']['nextAnButton']={syn:'Continue l\x27\xE9num\xE9ration des entr\xE9es analogiques commenc\xE9e \xE0 l\x27aide de <tt>yFirstAnButton()</tt>.',lib:'anbutton.nextAnButton()',pro:'def nextAnButton()',cmt:'<p>Continue l\x27\xE9num\xE9ration des entr\xE9es analogiques commenc\xE9e \xE0 l\x27aide de <tt>yFirstAnButton()</tt>.</p>',ret:'un pointeur sur un objet <tt>YAnButton</tt> accessible en ligne, ou <tt>null</tt> lorsque l\x27\xE9num\xE9ration est termin\xE9e.'};
+doc['AnButton']['registerValueCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e.',lib:'anbutton.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callback peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callback ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et la cha\xEEne de caract\xE8re d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['AnButton']['resetCounter']={syn:'R\xE9initialise le compteur d\x27impulsions et son timer.',lib:'anbutton.resetCounter()',pro:'def resetCounter()',cmt:'<p>R\xE9initialise le compteur d\x27impulsions et son timer.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['AnButton']['set_analogCalibration']={syn:'Enclenche ou d\xE9clenche le proc\xE9dure de calibration.',lib:'anbutton.set_analogCalibration()',pro:'def set_analogCalibration(<span id=pn>newval</span>)',cmt:'<p>Enclenche ou d\xE9clenche le proc\xE9dure de calibration. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module \xE0 la fin de la calibration si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'soit <tt>Y_ANALOGCALIBRATION_OFF</tt>, soit <tt>Y_ANALOGCALIBRATION_ON</tt>'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['AnButton']['set_calibrationMax']={syn:'Modifie la valeur maximale de calibration pour l\x27entr\xE9e (entre 0 et 4095 inclus), sans lancer la calibration automatique.',lib:'anbutton.set_calibrationMax()',pro:'def set_calibrationMax(<span id=pn>newval</span>)',cmt:'<p>Modifie la valeur maximale de calibration pour l\x27entr\xE9e (entre 0 et 4095 inclus), sans lancer la calibration automatique. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'un entier repr&eacute;sentant la valeur maximale de calibration pour l\x27entr\xE9e (entre 0 et 4095 inclus), sans lancer la calibration automatique'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['AnButton']['set_calibrationMin']={syn:'Modifie la valeur minimale de calibration pour l\x27entr\xE9e (entre 0 et 4095 inclus), sans lancer la calibration automatique.',lib:'anbutton.set_calibrationMin()',pro:'def set_calibrationMin(<span id=pn>newval</span>)',cmt:'<p>Modifie la valeur minimale de calibration pour l\x27entr\xE9e (entre 0 et 4095 inclus), sans lancer la calibration automatique. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'un entier repr&eacute;sentant la valeur minimale de calibration pour l\x27entr\xE9e (entre 0 et 4095 inclus), sans lancer la calibration automatique'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['AnButton']['set_logicalName']={syn:'Modifie le nom logique de l\x27entr\xE9e analogique.',lib:'anbutton.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Modifie le nom logique de l\x27entr\xE9e analogique. Vous pouvez utiliser <tt>yCheckLogicalName()</tt> pour v\xE9rifier si votre param\xE8tre est valide. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique de l\x27entr\xE9e analogique.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27appel se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['AnButton']['set_sensitivity']={syn:'Modifie la sensibilit\xE9 pour l\x27entr\xE9e (entre 1 et 1000) pour le d\xE9clanchement de callbacks.',lib:'anbutton.set_sensitivity()',pro:'def set_sensitivity(<span id=pn>newval</span>)',cmt:'<p>Modifie la sensibilit\xE9 pour l\x27entr\xE9e (entre 1 et 1000) pour le d\xE9clanchement de callbacks. La sensibilit\xE9 sert \xE0 filtrer les variations autour d\x27une valeur fixe, mais ne pr\xE9t\xE9rite pas la transmission d\x27\xE9v\xE9nements lorsque la valeur d\x27entr\xE9e \xE9volue constamment dans la m\xEAme direction. Cas particulier: lorsque la valeur 1000 est utilis\xE9e, seuls les valeurs d\xE9clenchant une commutation d\x27\xE9tat press\xE9/non-press\xE9 sont transmises. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'un entier repr&eacute;sentant la sensibilit\xE9 pour l\x27entr\xE9e (entre 1 et 1000) pour le d\xE9clanchement de callbacks'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['AnButton']['set_userData']={syn:'Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>.',lib:'anbutton.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',par:{data:'objet quelconque \xE0 m\xE9moriser'}};
+doc['AnButton']['unmuteValueCallbacks']={syn:'R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'anbutton.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Cette fonction annule un pr\xE9c\xE9dent appel \xE0 <tt>muteValueCallbacks()</tt>. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+//--- (end of generated code: AnButton)
+//--- (generated code: Voltage)
+doc['Voltage']={'':{syn:'Interface de la fonction Voltage',inc:'from yocto_voltage import *',cmt:'<p>La classe YVoltage permet de lire et de configurer les capteurs de tension Yoctopuce. Elle h\xE9rite de la class YSensor toutes les fonctions de base des capteurs Yoctopuce: lecture de mesures, callbacks, enregistreur de donn\xE9es.</p>'}};
+doc['Voltage']['FindVoltage']={syn:'Permet de retrouver un capteur de tension d\x27apr\xE8s un identifiant donn\xE9.',lib:'YVoltage.FindVoltage()',pro:'def FindVoltage(<span id=pn>func</span>)',cmt:'<p>Permet de retrouver un capteur de tension d\x27apr\xE8s un identifiant donn\xE9. L\x27identifiant peut \xEAtre sp\xE9cifi\xE9 sous plusieurs formes:<br> <ul> <li>NomLogiqueFonction</li> <li>NoSerieModule.IdentifiantFonction</li> <li>NoSerieModule.NomLogiqueFonction</li> <li>NomLogiqueModule.IdentifiantMat\xE9riel</li> <li>NomLogiqueModule.NomLogiqueFonction</li> </ul></p><p> Cette fonction n\x27exige pas que le capteur de tension soit en ligne au moment ou elle est appel\xE9e, l\x27objet retourn\xE9 sera n\xE9anmoins valide. Utiliser la m\xE9thode <tt>YVoltage.isOnline()</tt> pour tester si le capteur de tension est utilisable \xE0 un moment donn\xE9. En cas d\x27ambigu\xEFt\xE9 lorsqu\x27on fait une recherche par nom logique, aucune erreur ne sera notifi\xE9e: la premi\xE8re instance trouv\xE9e sera renvoy\xE9e. La recherche se fait d\x27abord par nom mat\xE9riel, puis par nom logique.</p>',par:{func:'une cha\xEEne de caract\xE8res qui r\xE9f\xE9rence le capteur de tension sans ambigu\xEFt\xE9'},ret:'un objet de classe <tt>YVoltage</tt> qui permet ensuite de contr\xF4ler le capteur de tension.'};
+doc['Voltage']['FirstVoltage']={syn:'Commence l\x27\xE9num\xE9ration des capteurs de tension accessibles par la librairie.',lib:'YVoltage.FirstVoltage()',pro:'def FirstVoltage()',cmt:'<p>Commence l\x27\xE9num\xE9ration des capteurs de tension accessibles par la librairie. Utiliser la fonction <tt>YVoltage.nextVoltage()</tt> pour it\xE9rer sur les autres capteurs de tension.</p>',ret:'un pointeur sur un objet <tt>YVoltage</tt>, correspondant au premier capteur de tension accessible en ligne, ou <tt>null</tt> si il n\x27y a pas de capteurs de tension disponibles.'};
+doc['Voltage']['calibrateFromPoints']={syn:'Enregistre des points de correction de mesure, typiquement pour compenser l\x27effet d\x27un bo\xEEtier sur les mesures rendues par le capteur.',lib:'voltage.calibrateFromPoints()',pro:'def calibrateFromPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Enregistre des points de correction de mesure, typiquement pour compenser l\x27effet d\x27un bo\xEEtier sur les mesures rendues par le capteur. Il est possible d\x27enregistrer jusqu\x27\xE0 cinq points de correction. Les points de correction doivent \xEAtre fournis en ordre croissant, et dans la plage valide du capteur. Le module effectue automatiquement une interpolation lin\xE9aire de l\x27erreur entre les points sp\xE9cifi\xE9s. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p><p> Pour plus de plus amples possibilit\xE9s d\x27appliquer une surcalibration aux capteurs, veuillez contacter support@yoctopuce.com.</p>',par:{rawValues:'tableau de nombres flottants, correspondant aux valeurs brutes rendues par le capteur pour les points de correction.',refValues:'tableau de nombres flottants, correspondant aux valeurs corrig\xE9es d\xE9sir\xE9es pour les points de correction.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Voltage']['clearCache']={syn:'Invalide le cache.',lib:'voltage.clearCache()',pro:'def clearCache()',cmt:'<p>Invalide le cache. Invalide le cache des valeurs courantes du capteur de tension. Force le prochain appel \xE0 une m\xE9thode get_xxx() ou loadxxx() pour charger les les donn\xE9es depuis le module.</p>'};
+doc['Voltage']['describe']={syn:'Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du capteur de tension au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'voltage.describe()',pro:'def describe()',cmt:'<p>Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du capteur de tension au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. Plus pr\xE9cis\xE9ment, <tt>TYPE</tt> correspond au type de fonction, <tt>NAME</tt> correspond au nom utils\xE9 lors du premier acc\xE8s a la fonction, <tt>SERIAL</tt> correspond au num\xE9ro de s\xE9rie du module si le module est connect\xE9, ou <tt>\x22unresolved\x22</tt> sinon, et <tt>FUNCTIONID</tt> correspond \xE0 l\x27identifiant mat\xE9riel de la fonction si le module est connect\xE9. Par exemple, La methode va retourner <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> si le module est d\xE9j\xE0 connect\xE9 ou <tt>Relay(BadCustomeName.relay1)=unresolved</tt> si le module n\x27est pas d\xE9j\xE0 connect\xE9. Cette methode ne declenche aucune transaction USB ou TCP et peut donc \xEAtre utilis\xE9 dans un debuggeur.</p>',ret:'une cha\xEEne de caract\xE8res d\xE9crivant le capteur de tension (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['Voltage']['get_advertisedValue']={syn:'Retourne la valeur courante du capteur de tension (pas plus de 6 caract\xE8res).',lib:'voltage.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Retourne la valeur courante du capteur de tension (pas plus de 6 caract\xE8res).</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur courante du capteur de tension (pas plus de 6 caract\xE8res).',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['Voltage']['get_currentRawValue']={syn:'Retourne la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en Volt, sous forme de nombre \xE0 virgule.',lib:'voltage.get_currentRawValue()',pro:'def get_currentRawValue()',cmt:'<p>Retourne la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en Volt, sous forme de nombre \xE0 virgule.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en Volt, sous forme de nombre \xE0 virgule',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_CURRENTRAWVALUE_INVALID</tt>.'};
+doc['Voltage']['get_currentValue']={syn:'Retourne la valeur actuelle de la tension, en Volt, sous forme de nombre \xE0 virgule.',lib:'voltage.get_currentValue()',pro:'def get_currentValue()',cmt:'<p>Retourne la valeur actuelle de la tension, en Volt, sous forme de nombre \xE0 virgule.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur actuelle de la tension, en Volt, sous forme de nombre \xE0 virgule',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_CURRENTVALUE_INVALID</tt>.'};
+doc['Voltage']['get_errorMessage']={syn:'Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du capteur de tension.',lib:'voltage.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du capteur de tension. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'une cha\xEEne de caract\xE8res correspondant au message de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du capteur de tension.'};
+doc['Voltage']['get_errorType']={syn:'Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du capteur de tension.',lib:'voltage.get_errorType()',pro:'def get_errorType()',cmt:'<p>Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du capteur de tension. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'un nombre correspondant au code de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du capteur de tension.'};
+doc['Voltage']['get_friendlyName']={syn:'Retourne un identifiant global du capteur de tension au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>.',lib:'voltage.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Retourne un identifiant global du capteur de tension au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>. Le cha\xEEne retourn\xE9e utilise soit les noms logiques du module et du capteur de tension si ils sont d\xE9finis, soit respectivement le num\xE9ro de s\xE9rie du module et l\x27identifant mat\xE9riel du capteur de tension (par exemple: <tt>MyCustomName.relay1</tt>)</p>',ret:'une cha\xEEne de caract\xE8res identifiant le capteur de tension en utilisant les noms logiques (ex: <tt>MyCustomName.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['Voltage']['get_functionDescriptor']={syn:'Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction.',lib:'voltage.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction. Cet identifiant peut \xEAtre utilis\xE9 pour tester si deux instance de <tt>YFunction</tt> r\xE9f\xE9rencent physiquement la m\xEAme fonction sur le m\xEAme module.</p>',ret:'un identifiant de type <tt>YFUN_DESCR</tt>.',ext:'Si la fonction n\x27a jamais \xE9t\xE9 contact\xE9e, la valeur retourn\xE9e sera <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>'};
+doc['Voltage']['get_functionId']={syn:'Retourne l\x27identifiant mat\xE9riel du capteur de tension, sans r\xE9f\xE9rence au module.',lib:'voltage.get_functionId()',pro:'def get_functionId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel du capteur de tension, sans r\xE9f\xE9rence au module. Par example <tt>relay1</tt>.</p>',ret:'une cha\xEEne de caract\xE8res identifiant le capteur de tension (ex: <tt>relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['Voltage']['get_hardwareId']={syn:'Retourne l\x27identifiant mat\xE9riel unique du capteur de tension au format <tt>SERIAL.FUNCTIONID</tt>.',lib:'voltage.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel unique du capteur de tension au format <tt>SERIAL.FUNCTIONID</tt>. L\x27identifiant unique est compos\xE9 du num\xE9ro de s\xE9rie du module et de l\x27identifiant mat\xE9riel du capteur de tension (par example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'une cha\xEEne de caract\xE8res identifiant le capteur de tension (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['Voltage']['get_highestValue']={syn:'Retourne la valeur maximale observ\xE9e pour la tension depuis le d\xE9marrage du module.',lib:'voltage.get_highestValue()',pro:'def get_highestValue()',cmt:'<p>Retourne la valeur maximale observ\xE9e pour la tension depuis le d\xE9marrage du module.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur maximale observ\xE9e pour la tension depuis le d\xE9marrage du module',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_HIGHESTVALUE_INVALID</tt>.'};
+doc['Voltage']['get_logFrequency']={syn:'Retourne la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es.',lib:'voltage.get_logFrequency()',pro:'def get_logFrequency()',cmt:'<p>Retourne la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_LOGFREQUENCY_INVALID</tt>.'};
+doc['Voltage']['get_logicalName']={syn:'Retourne le nom logique du capteur de tension.',lib:'voltage.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Retourne le nom logique du capteur de tension.</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du capteur de tension.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['Voltage']['get_lowestValue']={syn:'Retourne la valeur minimale observ\xE9e pour la tension depuis le d\xE9marrage du module.',lib:'voltage.get_lowestValue()',pro:'def get_lowestValue()',cmt:'<p>Retourne la valeur minimale observ\xE9e pour la tension depuis le d\xE9marrage du module.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur minimale observ\xE9e pour la tension depuis le d\xE9marrage du module',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_LOWESTVALUE_INVALID</tt>.'};
+doc['Voltage']['get_module']={syn:'Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction.',lib:'voltage.get_module()',pro:'def get_module()',cmt:'<p>Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction. Si la fonction ne peut \xEAtre trouv\xE9e sur aucun module, l\x27instance de <tt>YModule</tt> retourn\xE9e ne sera pas joignable.</p>',ret:'une instance de <tt>YModule</tt>'};
+doc['Voltage']['get_recordedData']={syn:'Retourne un objet DataSet repr\xE9sentant des mesures de ce capteur pr\xE9c\xE9demment enregistr\xE9es \xE0 l\x27aide du DataLogger, pour l\x27intervalle de temps sp\xE9cifi\xE9.',lib:'voltage.get_recordedData()',pro:'def get_recordedData(<span id=pn>startTime</span>, <span id=pn>endTime</span>)',cmt:'<p>Retourne un objet DataSet repr\xE9sentant des mesures de ce capteur pr\xE9c\xE9demment enregistr\xE9es \xE0 l\x27aide du DataLogger, pour l\x27intervalle de temps sp\xE9cifi\xE9. Veuillez vous r\xE9f\xE9rer \xE0 la documentation de la classe DataSet pour plus plus d\x27informations sur la mani\xE8re d\x27obtenir un aper\xE7u des mesures pour la p\xE9riode, et comment charger progressivement une grande quantit\xE9 de mesures depuis le dataLogger.</p><p> Cette m\xE9thode ne fonctionne que si le module utilise un firmware r\xE9cent, car les objets DataSet ne sont pas support\xE9s par les firmwares ant\xE9rieurs \xE0 la r\xE9vision 13000.</p>',par:{startTime:'le d\xE9but de l\x27intervalle de mesure d\xE9sir\xE9, c\x27est \xE0 dire en nombre de secondes depuis le 1er janvier 1970 UTC. La valeur 0 peut \xEAtre utilis\xE9e pour ne poser aucune limite sur le d\xE9but des mesures.',endTime:'la find de l\x27intercalle de mesure d\xE9sir\xE9, c\x27est \xE0 dire en nombre de secondes depuis le 1er janvier 1970 UTC. La valeur 0 peut \xEAtre utilis\xE9e pour ne poser aucune limite de fin.'},ret:'une instance de YDataSet, dont les m\xE9thodes permettent de d\x27acc\xE9der aux donn\xE9es historiques souhait\xE9es.'};
+doc['Voltage']['get_reportFrequency']={syn:'Retourne la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction.',lib:'voltage.get_reportFrequency()',pro:'def get_reportFrequency()',cmt:'<p>Retourne la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_REPORTFREQUENCY_INVALID</tt>.'};
+doc['Voltage']['get_resolution']={syn:'Retourne la r\xE9solution des valeurs mesur\xE9es.',lib:'voltage.get_resolution()',pro:'def get_resolution()',cmt:'<p>Retourne la r\xE9solution des valeurs mesur\xE9es. La r\xE9solution correspond \xE0 la pr\xE9cision num\xE9rique de la repr\xE9sentation des mesures. Elle n\x27est pas forc\xE9ment identique \xE0 la pr\xE9cision r\xE9elle du capteur.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la r\xE9solution des valeurs mesur\xE9es',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_RESOLUTION_INVALID</tt>.'};
+doc['Voltage']['get_sensorState']={syn:'Retourne le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment.',lib:'voltage.get_sensorState()',pro:'def get_sensorState()',cmt:'<p>Retourne le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment.</p>',ret:'un entier repr&eacute;sentant le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_SENSORSTATE_INVALID</tt>.'};
+doc['Voltage']['get_unit']={syn:'Retourne l\x27unit\xE9 dans laquelle la tension est exprim\xE9e.',lib:'voltage.get_unit()',pro:'def get_unit()',cmt:'<p>Retourne l\x27unit\xE9 dans laquelle la tension est exprim\xE9e.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant l\x27unit\xE9 dans laquelle la tension est exprim\xE9e',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_UNIT_INVALID</tt>.'};
+doc['Voltage']['get_userData']={syn:'Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>.',lib:'voltage.get_userData()',pro:'def get_userData()',cmt:'<p>Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',ret:'l\x27objet stock\xE9 pr\xE9c\xE9demment par l\x27appelant.'};
+doc['Voltage']['isOnline']={syn:'V\xE9rifie si le module h\xE9bergeant le capteur de tension est joignable, sans d\xE9clencher d\x27erreur.',lib:'voltage.isOnline()',pro:'def isOnline()',cmt:'<p>V\xE9rifie si le module h\xE9bergeant le capteur de tension est joignable, sans d\xE9clencher d\x27erreur. Si les valeurs des attributs en cache du capteur de tension sont valides au moment de l\x27appel, le module est consid\xE9r\xE9 joignable. Cette fonction ne cause en aucun cas d\x27exception, quelle que soit l\x27erreur qui pourrait se produire lors de la v\xE9rification de joignabilit\xE9.</p>',ret:'<tt>true</tt> si le capteur de tension est joignable, <tt>false</tt> sinon'};
+doc['Voltage']['load']={syn:'Met en cache les valeurs courantes du capteur de tension, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e.',lib:'voltage.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Met en cache les valeurs courantes du capteur de tension, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e. Par d\xE9faut, lorsqu\x27on acc\xE8de \xE0 un module, tous les attributs des fonctions du module sont automatiquement mises en cache pour la dur\xE9e standard (5 ms). Cette m\xE9thode peut \xEAtre utilis\xE9e pour marquer occasionellement les donn\xE9es cach\xE9es comme valides pour une plus longue p\xE9riode, par exemple dans le but de r\xE9duire le trafic r\xE9seau.</p>',par:{msValidity:'un entier correspondant \xE0 la dur\xE9e de validit\xE9 attribu\xE9e aux les param\xE8tres charg\xE9s, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Voltage']['loadAttribute']={syn:'Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.',lib:'voltage.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un cha\xEEne vide.'};
+doc['Voltage']['loadCalibrationPoints']={syn:'R\xE9cup\xE8re les points de correction de mesure pr\xE9c\xE9demment enregistr\xE9s \xE0 l\x27aide de la m\xE9thode <tt>calibrateFromPoints</tt>.',lib:'voltage.loadCalibrationPoints()',pro:'def loadCalibrationPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>R\xE9cup\xE8re les points de correction de mesure pr\xE9c\xE9demment enregistr\xE9s \xE0 l\x27aide de la m\xE9thode <tt>calibrateFromPoints</tt>.</p>',par:{rawValues:'tableau de nombres flottants, qui sera rempli par la fonction avec les valeurs brutes des points de correction.',refValues:'tableau de nombres flottants, qui sera rempli par la fonction avec les valeurs d\xE9sir\xE9es des points de correction.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Voltage']['muteValueCallbacks']={syn:'D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'voltage.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Vous pouvez utiliser cette fonction pour \xE9conomiser la bande passante et le CPU sur les machines de faible puissance, ou pour \xE9viter le d\xE9clanchement de callbacks HTTP. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Voltage']['nextVoltage']={syn:'Continue l\x27\xE9num\xE9ration des capteurs de tension commenc\xE9e \xE0 l\x27aide de <tt>yFirstVoltage()</tt>.',lib:'voltage.nextVoltage()',pro:'def nextVoltage()',cmt:'<p>Continue l\x27\xE9num\xE9ration des capteurs de tension commenc\xE9e \xE0 l\x27aide de <tt>yFirstVoltage()</tt>.</p>',ret:'un pointeur sur un objet <tt>YVoltage</tt> accessible en ligne, ou <tt>null</tt> lorsque l\x27\xE9num\xE9ration est termin\xE9e.'};
+doc['Voltage']['registerTimedReportCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque notification p\xE9riodique.',lib:'voltage.registerTimedReportCallback()',pro:'def registerTimedReportCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque notification p\xE9riodique. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callbacks peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callbacks ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et un objet YMeasure d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['Voltage']['registerValueCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e.',lib:'voltage.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callback peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callback ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et la cha\xEEne de caract\xE8re d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['Voltage']['set_highestValue']={syn:'Modifie la m\xE9moire de valeur maximale observ\xE9e.',lib:'voltage.set_highestValue()',pro:'def set_highestValue(<span id=pn>newval</span>)',cmt:'<p>Modifie la m\xE9moire de valeur maximale observ\xE9e.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la m\xE9moire de valeur maximale observ\xE9e'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Voltage']['set_logFrequency']={syn:'Modifie la fr\xE9quence d\x27enregistrement des mesures dans le datalogger.',lib:'voltage.set_logFrequency()',pro:'def set_logFrequency(<span id=pn>newval</span>)',cmt:'<p>Modifie la fr\xE9quence d\x27enregistrement des mesures dans le datalogger. La fr\xE9quence peut \xEAtre sp\xE9cifi\xE9e en mesures par secondes, en mesures par minutes (par exemple \x2215/m\x22) ou en mesures par heure (par exemple \x224/h\x22). Pour d\xE9sactiver l\x27enregistrement des mesures de cette fonction, utilisez la valeur \x22OFF\x22.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence d\x27enregistrement des mesures dans le datalogger'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Voltage']['set_logicalName']={syn:'Modifie le nom logique du capteur de tension.',lib:'voltage.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Modifie le nom logique du capteur de tension. Vous pouvez utiliser <tt>yCheckLogicalName()</tt> pour v\xE9rifier si votre param\xE8tre est valide. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du capteur de tension.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27appel se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Voltage']['set_lowestValue']={syn:'Modifie la m\xE9moire de valeur minimale observ\xE9e.',lib:'voltage.set_lowestValue()',pro:'def set_lowestValue(<span id=pn>newval</span>)',cmt:'<p>Modifie la m\xE9moire de valeur minimale observ\xE9e.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la m\xE9moire de valeur minimale observ\xE9e'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Voltage']['set_reportFrequency']={syn:'Modifie la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es.',lib:'voltage.set_reportFrequency()',pro:'def set_reportFrequency(<span id=pn>newval</span>)',cmt:'<p>Modifie la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es. La fr\xE9quence peut \xEAtre sp\xE9cifi\xE9e en mesures par secondes, en mesures par minutes (par exemple \x2215/m\x22) ou en mesures par heure (par exemple \x224/h\x22). Pour d\xE9sactiver les notifications p\xE9riodiques pour cette fonction, utilisez la valeur \x22OFF\x22.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Voltage']['set_resolution']={syn:'Modifie la r\xE9solution des valeurs physique mesur\xE9es.',lib:'voltage.set_resolution()',pro:'def set_resolution(<span id=pn>newval</span>)',cmt:'<p>Modifie la r\xE9solution des valeurs physique mesur\xE9es. La r\xE9solution correspond \xE0 la pr\xE9cision de l\x27affichage des mesures. Elle ne change pas la pr\xE9cision de la mesure elle-m\xEAme.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la r\xE9solution des valeurs physique mesur\xE9es'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Voltage']['set_userData']={syn:'Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>.',lib:'voltage.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',par:{data:'objet quelconque \xE0 m\xE9moriser'}};
+doc['Voltage']['startDataLogger']={syn:'D\xE9marre l\x27enregistreur de donn\xE9es du module.',lib:'voltage.startDataLogger()',pro:'def startDataLogger()',cmt:'<p>D\xE9marre l\x27enregistreur de donn\xE9es du module. Attention, l\x27enregistreur ne sauvera les mesures de ce capteur que si la fr\xE9quence d\x27enregistrement (logFrequency) n\x27est pas sur \x22OFF\x22.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.'};
+doc['Voltage']['stopDataLogger']={syn:'Arr\xEAte l\x27enregistreur de donn\xE9es du module.',lib:'voltage.stopDataLogger()',pro:'def stopDataLogger()',cmt:'<p>Arr\xEAte l\x27enregistreur de donn\xE9es du module.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.'};
+doc['Voltage']['unmuteValueCallbacks']={syn:'R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'voltage.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Cette fonction annule un pr\xE9c\xE9dent appel \xE0 <tt>muteValueCallbacks()</tt>. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+//--- (end of generated code: Voltage)
+//--- (generated code: Current)
+doc['Current']={'':{syn:'Interface de la fonction Current',inc:'from yocto_current import *',cmt:'<p>La classe YCurrent permet de lire et de configurer les capteurs de courant Yoctopuce. Elle h\xE9rite de la class YSensor toutes les fonctions de base des capteurs Yoctopuce: lecture de mesures, callbacks, enregistreur de donn\xE9es.</p>'}};
+doc['Current']['FindCurrent']={syn:'Permet de retrouver un capteur de courant d\x27apr\xE8s un identifiant donn\xE9.',lib:'YCurrent.FindCurrent()',pro:'def FindCurrent(<span id=pn>func</span>)',cmt:'<p>Permet de retrouver un capteur de courant d\x27apr\xE8s un identifiant donn\xE9. L\x27identifiant peut \xEAtre sp\xE9cifi\xE9 sous plusieurs formes:<br> <ul> <li>NomLogiqueFonction</li> <li>NoSerieModule.IdentifiantFonction</li> <li>NoSerieModule.NomLogiqueFonction</li> <li>NomLogiqueModule.IdentifiantMat\xE9riel</li> <li>NomLogiqueModule.NomLogiqueFonction</li> </ul></p><p> Cette fonction n\x27exige pas que le capteur de courant soit en ligne au moment ou elle est appel\xE9e, l\x27objet retourn\xE9 sera n\xE9anmoins valide. Utiliser la m\xE9thode <tt>YCurrent.isOnline()</tt> pour tester si le capteur de courant est utilisable \xE0 un moment donn\xE9. En cas d\x27ambigu\xEFt\xE9 lorsqu\x27on fait une recherche par nom logique, aucune erreur ne sera notifi\xE9e: la premi\xE8re instance trouv\xE9e sera renvoy\xE9e. La recherche se fait d\x27abord par nom mat\xE9riel, puis par nom logique.</p>',par:{func:'une cha\xEEne de caract\xE8res qui r\xE9f\xE9rence le capteur de courant sans ambigu\xEFt\xE9'},ret:'un objet de classe <tt>YCurrent</tt> qui permet ensuite de contr\xF4ler le capteur de courant.'};
+doc['Current']['FirstCurrent']={syn:'Commence l\x27\xE9num\xE9ration des capteurs de courant accessibles par la librairie.',lib:'YCurrent.FirstCurrent()',pro:'def FirstCurrent()',cmt:'<p>Commence l\x27\xE9num\xE9ration des capteurs de courant accessibles par la librairie. Utiliser la fonction <tt>YCurrent.nextCurrent()</tt> pour it\xE9rer sur les autres capteurs de courant.</p>',ret:'un pointeur sur un objet <tt>YCurrent</tt>, correspondant au premier capteur de courant accessible en ligne, ou <tt>null</tt> si il n\x27y a pas de capteurs de courant disponibles.'};
+doc['Current']['calibrateFromPoints']={syn:'Enregistre des points de correction de mesure, typiquement pour compenser l\x27effet d\x27un bo\xEEtier sur les mesures rendues par le capteur.',lib:'current.calibrateFromPoints()',pro:'def calibrateFromPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Enregistre des points de correction de mesure, typiquement pour compenser l\x27effet d\x27un bo\xEEtier sur les mesures rendues par le capteur. Il est possible d\x27enregistrer jusqu\x27\xE0 cinq points de correction. Les points de correction doivent \xEAtre fournis en ordre croissant, et dans la plage valide du capteur. Le module effectue automatiquement une interpolation lin\xE9aire de l\x27erreur entre les points sp\xE9cifi\xE9s. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p><p> Pour plus de plus amples possibilit\xE9s d\x27appliquer une surcalibration aux capteurs, veuillez contacter support@yoctopuce.com.</p>',par:{rawValues:'tableau de nombres flottants, correspondant aux valeurs brutes rendues par le capteur pour les points de correction.',refValues:'tableau de nombres flottants, correspondant aux valeurs corrig\xE9es d\xE9sir\xE9es pour les points de correction.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Current']['clearCache']={syn:'Invalide le cache.',lib:'current.clearCache()',pro:'def clearCache()',cmt:'<p>Invalide le cache. Invalide le cache des valeurs courantes du capteur de courant. Force le prochain appel \xE0 une m\xE9thode get_xxx() ou loadxxx() pour charger les les donn\xE9es depuis le module.</p>'};
+doc['Current']['describe']={syn:'Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du capteur de courant au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'current.describe()',pro:'def describe()',cmt:'<p>Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du capteur de courant au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. Plus pr\xE9cis\xE9ment, <tt>TYPE</tt> correspond au type de fonction, <tt>NAME</tt> correspond au nom utils\xE9 lors du premier acc\xE8s a la fonction, <tt>SERIAL</tt> correspond au num\xE9ro de s\xE9rie du module si le module est connect\xE9, ou <tt>\x22unresolved\x22</tt> sinon, et <tt>FUNCTIONID</tt> correspond \xE0 l\x27identifiant mat\xE9riel de la fonction si le module est connect\xE9. Par exemple, La methode va retourner <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> si le module est d\xE9j\xE0 connect\xE9 ou <tt>Relay(BadCustomeName.relay1)=unresolved</tt> si le module n\x27est pas d\xE9j\xE0 connect\xE9. Cette methode ne declenche aucune transaction USB ou TCP et peut donc \xEAtre utilis\xE9 dans un debuggeur.</p>',ret:'une cha\xEEne de caract\xE8res d\xE9crivant le capteur de courant (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['Current']['get_advertisedValue']={syn:'Retourne la valeur courante du capteur de courant (pas plus de 6 caract\xE8res).',lib:'current.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Retourne la valeur courante du capteur de courant (pas plus de 6 caract\xE8res).</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur courante du capteur de courant (pas plus de 6 caract\xE8res).',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['Current']['get_currentRawValue']={syn:'Retourne la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en mA, sous forme de nombre \xE0 virgule.',lib:'current.get_currentRawValue()',pro:'def get_currentRawValue()',cmt:'<p>Retourne la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en mA, sous forme de nombre \xE0 virgule.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en mA, sous forme de nombre \xE0 virgule',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_CURRENTRAWVALUE_INVALID</tt>.'};
+doc['Current']['get_currentValue']={syn:'Retourne la valeur actuelle du courant, en mA, sous forme de nombre \xE0 virgule.',lib:'current.get_currentValue()',pro:'def get_currentValue()',cmt:'<p>Retourne la valeur actuelle du courant, en mA, sous forme de nombre \xE0 virgule.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur actuelle du courant, en mA, sous forme de nombre \xE0 virgule',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_CURRENTVALUE_INVALID</tt>.'};
+doc['Current']['get_errorMessage']={syn:'Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du capteur de courant.',lib:'current.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du capteur de courant. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'une cha\xEEne de caract\xE8res correspondant au message de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du capteur de courant.'};
+doc['Current']['get_errorType']={syn:'Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du capteur de courant.',lib:'current.get_errorType()',pro:'def get_errorType()',cmt:'<p>Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du capteur de courant. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'un nombre correspondant au code de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du capteur de courant.'};
+doc['Current']['get_friendlyName']={syn:'Retourne un identifiant global du capteur de courant au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>.',lib:'current.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Retourne un identifiant global du capteur de courant au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>. Le cha\xEEne retourn\xE9e utilise soit les noms logiques du module et du capteur de courant si ils sont d\xE9finis, soit respectivement le num\xE9ro de s\xE9rie du module et l\x27identifant mat\xE9riel du capteur de courant (par exemple: <tt>MyCustomName.relay1</tt>)</p>',ret:'une cha\xEEne de caract\xE8res identifiant le capteur de courant en utilisant les noms logiques (ex: <tt>MyCustomName.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['Current']['get_functionDescriptor']={syn:'Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction.',lib:'current.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction. Cet identifiant peut \xEAtre utilis\xE9 pour tester si deux instance de <tt>YFunction</tt> r\xE9f\xE9rencent physiquement la m\xEAme fonction sur le m\xEAme module.</p>',ret:'un identifiant de type <tt>YFUN_DESCR</tt>.',ext:'Si la fonction n\x27a jamais \xE9t\xE9 contact\xE9e, la valeur retourn\xE9e sera <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>'};
+doc['Current']['get_functionId']={syn:'Retourne l\x27identifiant mat\xE9riel du capteur de courant, sans r\xE9f\xE9rence au module.',lib:'current.get_functionId()',pro:'def get_functionId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel du capteur de courant, sans r\xE9f\xE9rence au module. Par example <tt>relay1</tt>.</p>',ret:'une cha\xEEne de caract\xE8res identifiant le capteur de courant (ex: <tt>relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['Current']['get_hardwareId']={syn:'Retourne l\x27identifiant mat\xE9riel unique du capteur de courant au format <tt>SERIAL.FUNCTIONID</tt>.',lib:'current.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel unique du capteur de courant au format <tt>SERIAL.FUNCTIONID</tt>. L\x27identifiant unique est compos\xE9 du num\xE9ro de s\xE9rie du module et de l\x27identifiant mat\xE9riel du capteur de courant (par example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'une cha\xEEne de caract\xE8res identifiant le capteur de courant (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['Current']['get_highestValue']={syn:'Retourne la valeur maximale observ\xE9e pour le courant depuis le d\xE9marrage du module.',lib:'current.get_highestValue()',pro:'def get_highestValue()',cmt:'<p>Retourne la valeur maximale observ\xE9e pour le courant depuis le d\xE9marrage du module.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur maximale observ\xE9e pour le courant depuis le d\xE9marrage du module',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_HIGHESTVALUE_INVALID</tt>.'};
+doc['Current']['get_logFrequency']={syn:'Retourne la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es.',lib:'current.get_logFrequency()',pro:'def get_logFrequency()',cmt:'<p>Retourne la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_LOGFREQUENCY_INVALID</tt>.'};
+doc['Current']['get_logicalName']={syn:'Retourne le nom logique du capteur de courant.',lib:'current.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Retourne le nom logique du capteur de courant.</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du capteur de courant.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['Current']['get_lowestValue']={syn:'Retourne la valeur minimale observ\xE9e pour le courant depuis le d\xE9marrage du module.',lib:'current.get_lowestValue()',pro:'def get_lowestValue()',cmt:'<p>Retourne la valeur minimale observ\xE9e pour le courant depuis le d\xE9marrage du module.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur minimale observ\xE9e pour le courant depuis le d\xE9marrage du module',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_LOWESTVALUE_INVALID</tt>.'};
+doc['Current']['get_module']={syn:'Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction.',lib:'current.get_module()',pro:'def get_module()',cmt:'<p>Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction. Si la fonction ne peut \xEAtre trouv\xE9e sur aucun module, l\x27instance de <tt>YModule</tt> retourn\xE9e ne sera pas joignable.</p>',ret:'une instance de <tt>YModule</tt>'};
+doc['Current']['get_recordedData']={syn:'Retourne un objet DataSet repr\xE9sentant des mesures de ce capteur pr\xE9c\xE9demment enregistr\xE9es \xE0 l\x27aide du DataLogger, pour l\x27intervalle de temps sp\xE9cifi\xE9.',lib:'current.get_recordedData()',pro:'def get_recordedData(<span id=pn>startTime</span>, <span id=pn>endTime</span>)',cmt:'<p>Retourne un objet DataSet repr\xE9sentant des mesures de ce capteur pr\xE9c\xE9demment enregistr\xE9es \xE0 l\x27aide du DataLogger, pour l\x27intervalle de temps sp\xE9cifi\xE9. Veuillez vous r\xE9f\xE9rer \xE0 la documentation de la classe DataSet pour plus plus d\x27informations sur la mani\xE8re d\x27obtenir un aper\xE7u des mesures pour la p\xE9riode, et comment charger progressivement une grande quantit\xE9 de mesures depuis le dataLogger.</p><p> Cette m\xE9thode ne fonctionne que si le module utilise un firmware r\xE9cent, car les objets DataSet ne sont pas support\xE9s par les firmwares ant\xE9rieurs \xE0 la r\xE9vision 13000.</p>',par:{startTime:'le d\xE9but de l\x27intervalle de mesure d\xE9sir\xE9, c\x27est \xE0 dire en nombre de secondes depuis le 1er janvier 1970 UTC. La valeur 0 peut \xEAtre utilis\xE9e pour ne poser aucune limite sur le d\xE9but des mesures.',endTime:'la find de l\x27intercalle de mesure d\xE9sir\xE9, c\x27est \xE0 dire en nombre de secondes depuis le 1er janvier 1970 UTC. La valeur 0 peut \xEAtre utilis\xE9e pour ne poser aucune limite de fin.'},ret:'une instance de YDataSet, dont les m\xE9thodes permettent de d\x27acc\xE9der aux donn\xE9es historiques souhait\xE9es.'};
+doc['Current']['get_reportFrequency']={syn:'Retourne la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction.',lib:'current.get_reportFrequency()',pro:'def get_reportFrequency()',cmt:'<p>Retourne la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_REPORTFREQUENCY_INVALID</tt>.'};
+doc['Current']['get_resolution']={syn:'Retourne la r\xE9solution des valeurs mesur\xE9es.',lib:'current.get_resolution()',pro:'def get_resolution()',cmt:'<p>Retourne la r\xE9solution des valeurs mesur\xE9es. La r\xE9solution correspond \xE0 la pr\xE9cision num\xE9rique de la repr\xE9sentation des mesures. Elle n\x27est pas forc\xE9ment identique \xE0 la pr\xE9cision r\xE9elle du capteur.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la r\xE9solution des valeurs mesur\xE9es',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_RESOLUTION_INVALID</tt>.'};
+doc['Current']['get_sensorState']={syn:'Retourne le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment.',lib:'current.get_sensorState()',pro:'def get_sensorState()',cmt:'<p>Retourne le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment.</p>',ret:'un entier repr&eacute;sentant le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_SENSORSTATE_INVALID</tt>.'};
+doc['Current']['get_unit']={syn:'Retourne l\x27unit\xE9 dans laquelle le courant est exprim\xE9e.',lib:'current.get_unit()',pro:'def get_unit()',cmt:'<p>Retourne l\x27unit\xE9 dans laquelle le courant est exprim\xE9e.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant l\x27unit\xE9 dans laquelle le courant est exprim\xE9e',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_UNIT_INVALID</tt>.'};
+doc['Current']['get_userData']={syn:'Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>.',lib:'current.get_userData()',pro:'def get_userData()',cmt:'<p>Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',ret:'l\x27objet stock\xE9 pr\xE9c\xE9demment par l\x27appelant.'};
+doc['Current']['isOnline']={syn:'V\xE9rifie si le module h\xE9bergeant le capteur de courant est joignable, sans d\xE9clencher d\x27erreur.',lib:'current.isOnline()',pro:'def isOnline()',cmt:'<p>V\xE9rifie si le module h\xE9bergeant le capteur de courant est joignable, sans d\xE9clencher d\x27erreur. Si les valeurs des attributs en cache du capteur de courant sont valides au moment de l\x27appel, le module est consid\xE9r\xE9 joignable. Cette fonction ne cause en aucun cas d\x27exception, quelle que soit l\x27erreur qui pourrait se produire lors de la v\xE9rification de joignabilit\xE9.</p>',ret:'<tt>true</tt> si le capteur de courant est joignable, <tt>false</tt> sinon'};
+doc['Current']['load']={syn:'Met en cache les valeurs courantes du capteur de courant, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e.',lib:'current.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Met en cache les valeurs courantes du capteur de courant, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e. Par d\xE9faut, lorsqu\x27on acc\xE8de \xE0 un module, tous les attributs des fonctions du module sont automatiquement mises en cache pour la dur\xE9e standard (5 ms). Cette m\xE9thode peut \xEAtre utilis\xE9e pour marquer occasionellement les donn\xE9es cach\xE9es comme valides pour une plus longue p\xE9riode, par exemple dans le but de r\xE9duire le trafic r\xE9seau.</p>',par:{msValidity:'un entier correspondant \xE0 la dur\xE9e de validit\xE9 attribu\xE9e aux les param\xE8tres charg\xE9s, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Current']['loadAttribute']={syn:'Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.',lib:'current.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un cha\xEEne vide.'};
+doc['Current']['loadCalibrationPoints']={syn:'R\xE9cup\xE8re les points de correction de mesure pr\xE9c\xE9demment enregistr\xE9s \xE0 l\x27aide de la m\xE9thode <tt>calibrateFromPoints</tt>.',lib:'current.loadCalibrationPoints()',pro:'def loadCalibrationPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>R\xE9cup\xE8re les points de correction de mesure pr\xE9c\xE9demment enregistr\xE9s \xE0 l\x27aide de la m\xE9thode <tt>calibrateFromPoints</tt>.</p>',par:{rawValues:'tableau de nombres flottants, qui sera rempli par la fonction avec les valeurs brutes des points de correction.',refValues:'tableau de nombres flottants, qui sera rempli par la fonction avec les valeurs d\xE9sir\xE9es des points de correction.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Current']['muteValueCallbacks']={syn:'D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'current.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Vous pouvez utiliser cette fonction pour \xE9conomiser la bande passante et le CPU sur les machines de faible puissance, ou pour \xE9viter le d\xE9clanchement de callbacks HTTP. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Current']['nextCurrent']={syn:'Continue l\x27\xE9num\xE9ration des capteurs de courant commenc\xE9e \xE0 l\x27aide de <tt>yFirstCurrent()</tt>.',lib:'current.nextCurrent()',pro:'def nextCurrent()',cmt:'<p>Continue l\x27\xE9num\xE9ration des capteurs de courant commenc\xE9e \xE0 l\x27aide de <tt>yFirstCurrent()</tt>.</p>',ret:'un pointeur sur un objet <tt>YCurrent</tt> accessible en ligne, ou <tt>null</tt> lorsque l\x27\xE9num\xE9ration est termin\xE9e.'};
+doc['Current']['registerTimedReportCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque notification p\xE9riodique.',lib:'current.registerTimedReportCallback()',pro:'def registerTimedReportCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque notification p\xE9riodique. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callbacks peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callbacks ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et un objet YMeasure d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['Current']['registerValueCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e.',lib:'current.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callback peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callback ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et la cha\xEEne de caract\xE8re d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['Current']['set_highestValue']={syn:'Modifie la m\xE9moire de valeur maximale observ\xE9e.',lib:'current.set_highestValue()',pro:'def set_highestValue(<span id=pn>newval</span>)',cmt:'<p>Modifie la m\xE9moire de valeur maximale observ\xE9e.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la m\xE9moire de valeur maximale observ\xE9e'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Current']['set_logFrequency']={syn:'Modifie la fr\xE9quence d\x27enregistrement des mesures dans le datalogger.',lib:'current.set_logFrequency()',pro:'def set_logFrequency(<span id=pn>newval</span>)',cmt:'<p>Modifie la fr\xE9quence d\x27enregistrement des mesures dans le datalogger. La fr\xE9quence peut \xEAtre sp\xE9cifi\xE9e en mesures par secondes, en mesures par minutes (par exemple \x2215/m\x22) ou en mesures par heure (par exemple \x224/h\x22). Pour d\xE9sactiver l\x27enregistrement des mesures de cette fonction, utilisez la valeur \x22OFF\x22.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence d\x27enregistrement des mesures dans le datalogger'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Current']['set_logicalName']={syn:'Modifie le nom logique du capteur de courant.',lib:'current.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Modifie le nom logique du capteur de courant. Vous pouvez utiliser <tt>yCheckLogicalName()</tt> pour v\xE9rifier si votre param\xE8tre est valide. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du capteur de courant.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27appel se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Current']['set_lowestValue']={syn:'Modifie la m\xE9moire de valeur minimale observ\xE9e.',lib:'current.set_lowestValue()',pro:'def set_lowestValue(<span id=pn>newval</span>)',cmt:'<p>Modifie la m\xE9moire de valeur minimale observ\xE9e.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la m\xE9moire de valeur minimale observ\xE9e'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Current']['set_reportFrequency']={syn:'Modifie la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es.',lib:'current.set_reportFrequency()',pro:'def set_reportFrequency(<span id=pn>newval</span>)',cmt:'<p>Modifie la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es. La fr\xE9quence peut \xEAtre sp\xE9cifi\xE9e en mesures par secondes, en mesures par minutes (par exemple \x2215/m\x22) ou en mesures par heure (par exemple \x224/h\x22). Pour d\xE9sactiver les notifications p\xE9riodiques pour cette fonction, utilisez la valeur \x22OFF\x22.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Current']['set_resolution']={syn:'Modifie la r\xE9solution des valeurs physique mesur\xE9es.',lib:'current.set_resolution()',pro:'def set_resolution(<span id=pn>newval</span>)',cmt:'<p>Modifie la r\xE9solution des valeurs physique mesur\xE9es. La r\xE9solution correspond \xE0 la pr\xE9cision de l\x27affichage des mesures. Elle ne change pas la pr\xE9cision de la mesure elle-m\xEAme.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la r\xE9solution des valeurs physique mesur\xE9es'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Current']['set_userData']={syn:'Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>.',lib:'current.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',par:{data:'objet quelconque \xE0 m\xE9moriser'}};
+doc['Current']['startDataLogger']={syn:'D\xE9marre l\x27enregistreur de donn\xE9es du module.',lib:'current.startDataLogger()',pro:'def startDataLogger()',cmt:'<p>D\xE9marre l\x27enregistreur de donn\xE9es du module. Attention, l\x27enregistreur ne sauvera les mesures de ce capteur que si la fr\xE9quence d\x27enregistrement (logFrequency) n\x27est pas sur \x22OFF\x22.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.'};
+doc['Current']['stopDataLogger']={syn:'Arr\xEAte l\x27enregistreur de donn\xE9es du module.',lib:'current.stopDataLogger()',pro:'def stopDataLogger()',cmt:'<p>Arr\xEAte l\x27enregistreur de donn\xE9es du module.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.'};
+doc['Current']['unmuteValueCallbacks']={syn:'R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'current.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Cette fonction annule un pr\xE9c\xE9dent appel \xE0 <tt>muteValueCallbacks()</tt>. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+//--- (end of generated code: Current)
+//--- (generated code: CarbonDioxide)
+doc['CarbonDioxide']={'':{syn:'Interface de la fonction CarbonDioxide',inc:'from yocto_carbondioxide import *',cmt:'<p>La classe YCarbonDioxide permet de lire et de configurer les capteurs de CO2 Yoctopuce. Elle h\xE9rite de la class YSensor toutes les fonctions de base des capteurs Yoctopuce: lecture de mesures, callbacks, enregistreur de donn\xE9es. De plus, elle permet d\x27effectuer des calibrations manuelles si n\xE9cessaire.</p>'}};
+doc['CarbonDioxide']['FindCarbonDioxide']={syn:'Permet de retrouver un capteur de CO2 d\x27apr\xE8s un identifiant donn\xE9.',lib:'YCarbonDioxide.FindCarbonDioxide()',pro:'def FindCarbonDioxide(<span id=pn>func</span>)',cmt:'<p>Permet de retrouver un capteur de CO2 d\x27apr\xE8s un identifiant donn\xE9. L\x27identifiant peut \xEAtre sp\xE9cifi\xE9 sous plusieurs formes:<br> <ul> <li>NomLogiqueFonction</li> <li>NoSerieModule.IdentifiantFonction</li> <li>NoSerieModule.NomLogiqueFonction</li> <li>NomLogiqueModule.IdentifiantMat\xE9riel</li> <li>NomLogiqueModule.NomLogiqueFonction</li> </ul></p><p> Cette fonction n\x27exige pas que le capteur de CO2 soit en ligne au moment ou elle est appel\xE9e, l\x27objet retourn\xE9 sera n\xE9anmoins valide. Utiliser la m\xE9thode <tt>YCarbonDioxide.isOnline()</tt> pour tester si le capteur de CO2 est utilisable \xE0 un moment donn\xE9. En cas d\x27ambigu\xEFt\xE9 lorsqu\x27on fait une recherche par nom logique, aucune erreur ne sera notifi\xE9e: la premi\xE8re instance trouv\xE9e sera renvoy\xE9e. La recherche se fait d\x27abord par nom mat\xE9riel, puis par nom logique.</p>',par:{func:'une cha\xEEne de caract\xE8res qui r\xE9f\xE9rence le capteur de CO2 sans ambigu\xEFt\xE9'},ret:'un objet de classe <tt>YCarbonDioxide</tt> qui permet ensuite de contr\xF4ler le capteur de CO2.'};
+doc['CarbonDioxide']['FirstCarbonDioxide']={syn:'Commence l\x27\xE9num\xE9ration des capteurs de CO2 accessibles par la librairie.',lib:'YCarbonDioxide.FirstCarbonDioxide()',pro:'def FirstCarbonDioxide()',cmt:'<p>Commence l\x27\xE9num\xE9ration des capteurs de CO2 accessibles par la librairie. Utiliser la fonction <tt>YCarbonDioxide.nextCarbonDioxide()</tt> pour it\xE9rer sur les autres capteurs de CO2.</p>',ret:'un pointeur sur un objet <tt>YCarbonDioxide</tt>, correspondant au premier capteur de CO2 accessible en ligne, ou <tt>null</tt> si il n\x27y a pas de capteurs de CO2 disponibles.'};
+doc['CarbonDioxide']['calibrateFromPoints']={syn:'Enregistre des points de correction de mesure, typiquement pour compenser l\x27effet d\x27un bo\xEEtier sur les mesures rendues par le capteur.',lib:'carbondioxide.calibrateFromPoints()',pro:'def calibrateFromPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Enregistre des points de correction de mesure, typiquement pour compenser l\x27effet d\x27un bo\xEEtier sur les mesures rendues par le capteur. Il est possible d\x27enregistrer jusqu\x27\xE0 cinq points de correction. Les points de correction doivent \xEAtre fournis en ordre croissant, et dans la plage valide du capteur. Le module effectue automatiquement une interpolation lin\xE9aire de l\x27erreur entre les points sp\xE9cifi\xE9s. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p><p> Pour plus de plus amples possibilit\xE9s d\x27appliquer une surcalibration aux capteurs, veuillez contacter support@yoctopuce.com.</p>',par:{rawValues:'tableau de nombres flottants, correspondant aux valeurs brutes rendues par le capteur pour les points de correction.',refValues:'tableau de nombres flottants, correspondant aux valeurs corrig\xE9es d\xE9sir\xE9es pour les points de correction.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['CarbonDioxide']['clearCache']={syn:'Invalide le cache.',lib:'carbondioxide.clearCache()',pro:'def clearCache()',cmt:'<p>Invalide le cache. Invalide le cache des valeurs courantes du capteur de CO2. Force le prochain appel \xE0 une m\xE9thode get_xxx() ou loadxxx() pour charger les les donn\xE9es depuis le module.</p>'};
+doc['CarbonDioxide']['describe']={syn:'Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du capteur de CO2 au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'carbondioxide.describe()',pro:'def describe()',cmt:'<p>Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du capteur de CO2 au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. Plus pr\xE9cis\xE9ment, <tt>TYPE</tt> correspond au type de fonction, <tt>NAME</tt> correspond au nom utils\xE9 lors du premier acc\xE8s a la fonction, <tt>SERIAL</tt> correspond au num\xE9ro de s\xE9rie du module si le module est connect\xE9, ou <tt>\x22unresolved\x22</tt> sinon, et <tt>FUNCTIONID</tt> correspond \xE0 l\x27identifiant mat\xE9riel de la fonction si le module est connect\xE9. Par exemple, La methode va retourner <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> si le module est d\xE9j\xE0 connect\xE9 ou <tt>Relay(BadCustomeName.relay1)=unresolved</tt> si le module n\x27est pas d\xE9j\xE0 connect\xE9. Cette methode ne declenche aucune transaction USB ou TCP et peut donc \xEAtre utilis\xE9 dans un debuggeur.</p>',ret:'une cha\xEEne de caract\xE8res d\xE9crivant le capteur de CO2 (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['CarbonDioxide']['get_abcPeriod']={syn:'Retourne la dur\xE9e de la p\xE9riode pour la correction automatique de r\xE9f\xE9rence (auto-calibration) du capteur, exprim\xE9e en heures.',lib:'carbondioxide.get_abcPeriod()',pro:'def get_abcPeriod()',cmt:'<p>Retourne la dur\xE9e de la p\xE9riode pour la correction automatique de r\xE9f\xE9rence (auto-calibration) du capteur, exprim\xE9e en heures. Une valeur n\xE9gative signifie que la correction automatique de r\xE9f\xE9rence est d\xE9sactiv\xE9e.</p>',ret:'un entier repr&eacute;sentant la dur\xE9e de la p\xE9riode pour la correction automatique de r\xE9f\xE9rence (auto-calibration) du capteur, exprim\xE9e en heures',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_ABCPERIOD_INVALID</tt>.'};
+doc['CarbonDioxide']['get_advertisedValue']={syn:'Retourne la valeur courante du capteur de CO2 (pas plus de 6 caract\xE8res).',lib:'carbondioxide.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Retourne la valeur courante du capteur de CO2 (pas plus de 6 caract\xE8res).</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur courante du capteur de CO2 (pas plus de 6 caract\xE8res).',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['CarbonDioxide']['get_currentRawValue']={syn:'Retourne la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en ppm (val), sous forme de nombre \xE0 virgule.',lib:'carbondioxide.get_currentRawValue()',pro:'def get_currentRawValue()',cmt:'<p>Retourne la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en ppm (val), sous forme de nombre \xE0 virgule.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en ppm (val), sous forme de nombre \xE0 virgule',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_CURRENTRAWVALUE_INVALID</tt>.'};
+doc['CarbonDioxide']['get_currentValue']={syn:'Retourne la valeur actuelle du taux de CO2, en ppm (val), sous forme de nombre \xE0 virgule.',lib:'carbondioxide.get_currentValue()',pro:'def get_currentValue()',cmt:'<p>Retourne la valeur actuelle du taux de CO2, en ppm (val), sous forme de nombre \xE0 virgule.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur actuelle du taux de CO2, en ppm (val), sous forme de nombre \xE0 virgule',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_CURRENTVALUE_INVALID</tt>.'};
+doc['CarbonDioxide']['get_errorMessage']={syn:'Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du capteur de CO2.',lib:'carbondioxide.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du capteur de CO2. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'une cha\xEEne de caract\xE8res correspondant au message de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du capteur de CO2.'};
+doc['CarbonDioxide']['get_errorType']={syn:'Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du capteur de CO2.',lib:'carbondioxide.get_errorType()',pro:'def get_errorType()',cmt:'<p>Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du capteur de CO2. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'un nombre correspondant au code de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du capteur de CO2.'};
+doc['CarbonDioxide']['get_friendlyName']={syn:'Retourne un identifiant global du capteur de CO2 au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>.',lib:'carbondioxide.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Retourne un identifiant global du capteur de CO2 au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>. Le cha\xEEne retourn\xE9e utilise soit les noms logiques du module et du capteur de CO2 si ils sont d\xE9finis, soit respectivement le num\xE9ro de s\xE9rie du module et l\x27identifant mat\xE9riel du capteur de CO2 (par exemple: <tt>MyCustomName.relay1</tt>)</p>',ret:'une cha\xEEne de caract\xE8res identifiant le capteur de CO2 en utilisant les noms logiques (ex: <tt>MyCustomName.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['CarbonDioxide']['get_functionDescriptor']={syn:'Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction.',lib:'carbondioxide.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction. Cet identifiant peut \xEAtre utilis\xE9 pour tester si deux instance de <tt>YFunction</tt> r\xE9f\xE9rencent physiquement la m\xEAme fonction sur le m\xEAme module.</p>',ret:'un identifiant de type <tt>YFUN_DESCR</tt>.',ext:'Si la fonction n\x27a jamais \xE9t\xE9 contact\xE9e, la valeur retourn\xE9e sera <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>'};
+doc['CarbonDioxide']['get_functionId']={syn:'Retourne l\x27identifiant mat\xE9riel du capteur de CO2, sans r\xE9f\xE9rence au module.',lib:'carbondioxide.get_functionId()',pro:'def get_functionId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel du capteur de CO2, sans r\xE9f\xE9rence au module. Par example <tt>relay1</tt>.</p>',ret:'une cha\xEEne de caract\xE8res identifiant le capteur de CO2 (ex: <tt>relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['CarbonDioxide']['get_hardwareId']={syn:'Retourne l\x27identifiant mat\xE9riel unique du capteur de CO2 au format <tt>SERIAL.FUNCTIONID</tt>.',lib:'carbondioxide.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel unique du capteur de CO2 au format <tt>SERIAL.FUNCTIONID</tt>. L\x27identifiant unique est compos\xE9 du num\xE9ro de s\xE9rie du module et de l\x27identifiant mat\xE9riel du capteur de CO2 (par example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'une cha\xEEne de caract\xE8res identifiant le capteur de CO2 (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['CarbonDioxide']['get_highestValue']={syn:'Retourne la valeur maximale observ\xE9e pour le taux de CO2 depuis le d\xE9marrage du module.',lib:'carbondioxide.get_highestValue()',pro:'def get_highestValue()',cmt:'<p>Retourne la valeur maximale observ\xE9e pour le taux de CO2 depuis le d\xE9marrage du module.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur maximale observ\xE9e pour le taux de CO2 depuis le d\xE9marrage du module',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_HIGHESTVALUE_INVALID</tt>.'};
+doc['CarbonDioxide']['get_logFrequency']={syn:'Retourne la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es.',lib:'carbondioxide.get_logFrequency()',pro:'def get_logFrequency()',cmt:'<p>Retourne la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_LOGFREQUENCY_INVALID</tt>.'};
+doc['CarbonDioxide']['get_logicalName']={syn:'Retourne le nom logique du capteur de CO2.',lib:'carbondioxide.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Retourne le nom logique du capteur de CO2.</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du capteur de CO2.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['CarbonDioxide']['get_lowestValue']={syn:'Retourne la valeur minimale observ\xE9e pour le taux de CO2 depuis le d\xE9marrage du module.',lib:'carbondioxide.get_lowestValue()',pro:'def get_lowestValue()',cmt:'<p>Retourne la valeur minimale observ\xE9e pour le taux de CO2 depuis le d\xE9marrage du module.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur minimale observ\xE9e pour le taux de CO2 depuis le d\xE9marrage du module',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_LOWESTVALUE_INVALID</tt>.'};
+doc['CarbonDioxide']['get_module']={syn:'Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction.',lib:'carbondioxide.get_module()',pro:'def get_module()',cmt:'<p>Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction. Si la fonction ne peut \xEAtre trouv\xE9e sur aucun module, l\x27instance de <tt>YModule</tt> retourn\xE9e ne sera pas joignable.</p>',ret:'une instance de <tt>YModule</tt>'};
+doc['CarbonDioxide']['get_recordedData']={syn:'Retourne un objet DataSet repr\xE9sentant des mesures de ce capteur pr\xE9c\xE9demment enregistr\xE9es \xE0 l\x27aide du DataLogger, pour l\x27intervalle de temps sp\xE9cifi\xE9.',lib:'carbondioxide.get_recordedData()',pro:'def get_recordedData(<span id=pn>startTime</span>, <span id=pn>endTime</span>)',cmt:'<p>Retourne un objet DataSet repr\xE9sentant des mesures de ce capteur pr\xE9c\xE9demment enregistr\xE9es \xE0 l\x27aide du DataLogger, pour l\x27intervalle de temps sp\xE9cifi\xE9. Veuillez vous r\xE9f\xE9rer \xE0 la documentation de la classe DataSet pour plus plus d\x27informations sur la mani\xE8re d\x27obtenir un aper\xE7u des mesures pour la p\xE9riode, et comment charger progressivement une grande quantit\xE9 de mesures depuis le dataLogger.</p><p> Cette m\xE9thode ne fonctionne que si le module utilise un firmware r\xE9cent, car les objets DataSet ne sont pas support\xE9s par les firmwares ant\xE9rieurs \xE0 la r\xE9vision 13000.</p>',par:{startTime:'le d\xE9but de l\x27intervalle de mesure d\xE9sir\xE9, c\x27est \xE0 dire en nombre de secondes depuis le 1er janvier 1970 UTC. La valeur 0 peut \xEAtre utilis\xE9e pour ne poser aucune limite sur le d\xE9but des mesures.',endTime:'la find de l\x27intercalle de mesure d\xE9sir\xE9, c\x27est \xE0 dire en nombre de secondes depuis le 1er janvier 1970 UTC. La valeur 0 peut \xEAtre utilis\xE9e pour ne poser aucune limite de fin.'},ret:'une instance de YDataSet, dont les m\xE9thodes permettent de d\x27acc\xE9der aux donn\xE9es historiques souhait\xE9es.'};
+doc['CarbonDioxide']['get_reportFrequency']={syn:'Retourne la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction.',lib:'carbondioxide.get_reportFrequency()',pro:'def get_reportFrequency()',cmt:'<p>Retourne la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_REPORTFREQUENCY_INVALID</tt>.'};
+doc['CarbonDioxide']['get_resolution']={syn:'Retourne la r\xE9solution des valeurs mesur\xE9es.',lib:'carbondioxide.get_resolution()',pro:'def get_resolution()',cmt:'<p>Retourne la r\xE9solution des valeurs mesur\xE9es. La r\xE9solution correspond \xE0 la pr\xE9cision num\xE9rique de la repr\xE9sentation des mesures. Elle n\x27est pas forc\xE9ment identique \xE0 la pr\xE9cision r\xE9elle du capteur.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la r\xE9solution des valeurs mesur\xE9es',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_RESOLUTION_INVALID</tt>.'};
+doc['CarbonDioxide']['get_sensorState']={syn:'Retourne le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment.',lib:'carbondioxide.get_sensorState()',pro:'def get_sensorState()',cmt:'<p>Retourne le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment.</p>',ret:'un entier repr&eacute;sentant le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_SENSORSTATE_INVALID</tt>.'};
+doc['CarbonDioxide']['get_unit']={syn:'Retourne l\x27unit\xE9 dans laquelle le taux de CO2 est exprim\xE9e.',lib:'carbondioxide.get_unit()',pro:'def get_unit()',cmt:'<p>Retourne l\x27unit\xE9 dans laquelle le taux de CO2 est exprim\xE9e.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant l\x27unit\xE9 dans laquelle le taux de CO2 est exprim\xE9e',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_UNIT_INVALID</tt>.'};
+doc['CarbonDioxide']['get_userData']={syn:'Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>.',lib:'carbondioxide.get_userData()',pro:'def get_userData()',cmt:'<p>Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',ret:'l\x27objet stock\xE9 pr\xE9c\xE9demment par l\x27appelant.'};
+doc['CarbonDioxide']['isOnline']={syn:'V\xE9rifie si le module h\xE9bergeant le capteur de CO2 est joignable, sans d\xE9clencher d\x27erreur.',lib:'carbondioxide.isOnline()',pro:'def isOnline()',cmt:'<p>V\xE9rifie si le module h\xE9bergeant le capteur de CO2 est joignable, sans d\xE9clencher d\x27erreur. Si les valeurs des attributs en cache du capteur de CO2 sont valides au moment de l\x27appel, le module est consid\xE9r\xE9 joignable. Cette fonction ne cause en aucun cas d\x27exception, quelle que soit l\x27erreur qui pourrait se produire lors de la v\xE9rification de joignabilit\xE9.</p>',ret:'<tt>true</tt> si le capteur de CO2 est joignable, <tt>false</tt> sinon'};
+doc['CarbonDioxide']['load']={syn:'Met en cache les valeurs courantes du capteur de CO2, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e.',lib:'carbondioxide.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Met en cache les valeurs courantes du capteur de CO2, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e. Par d\xE9faut, lorsqu\x27on acc\xE8de \xE0 un module, tous les attributs des fonctions du module sont automatiquement mises en cache pour la dur\xE9e standard (5 ms). Cette m\xE9thode peut \xEAtre utilis\xE9e pour marquer occasionellement les donn\xE9es cach\xE9es comme valides pour une plus longue p\xE9riode, par exemple dans le but de r\xE9duire le trafic r\xE9seau.</p>',par:{msValidity:'un entier correspondant \xE0 la dur\xE9e de validit\xE9 attribu\xE9e aux les param\xE8tres charg\xE9s, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['CarbonDioxide']['loadAttribute']={syn:'Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.',lib:'carbondioxide.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un cha\xEEne vide.'};
+doc['CarbonDioxide']['loadCalibrationPoints']={syn:'R\xE9cup\xE8re les points de correction de mesure pr\xE9c\xE9demment enregistr\xE9s \xE0 l\x27aide de la m\xE9thode <tt>calibrateFromPoints</tt>.',lib:'carbondioxide.loadCalibrationPoints()',pro:'def loadCalibrationPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>R\xE9cup\xE8re les points de correction de mesure pr\xE9c\xE9demment enregistr\xE9s \xE0 l\x27aide de la m\xE9thode <tt>calibrateFromPoints</tt>.</p>',par:{rawValues:'tableau de nombres flottants, qui sera rempli par la fonction avec les valeurs brutes des points de correction.',refValues:'tableau de nombres flottants, qui sera rempli par la fonction avec les valeurs d\xE9sir\xE9es des points de correction.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['CarbonDioxide']['muteValueCallbacks']={syn:'D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'carbondioxide.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Vous pouvez utiliser cette fonction pour \xE9conomiser la bande passante et le CPU sur les machines de faible puissance, ou pour \xE9viter le d\xE9clanchement de callbacks HTTP. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['CarbonDioxide']['nextCarbonDioxide']={syn:'Continue l\x27\xE9num\xE9ration des capteurs de CO2 commenc\xE9e \xE0 l\x27aide de <tt>yFirstCarbonDioxide()</tt>.',lib:'carbondioxide.nextCarbonDioxide()',pro:'def nextCarbonDioxide()',cmt:'<p>Continue l\x27\xE9num\xE9ration des capteurs de CO2 commenc\xE9e \xE0 l\x27aide de <tt>yFirstCarbonDioxide()</tt>.</p>',ret:'un pointeur sur un objet <tt>YCarbonDioxide</tt> accessible en ligne, ou <tt>null</tt> lorsque l\x27\xE9num\xE9ration est termin\xE9e.'};
+doc['CarbonDioxide']['registerTimedReportCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque notification p\xE9riodique.',lib:'carbondioxide.registerTimedReportCallback()',pro:'def registerTimedReportCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque notification p\xE9riodique. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callbacks peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callbacks ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et un objet YMeasure d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['CarbonDioxide']['registerValueCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e.',lib:'carbondioxide.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callback peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callback ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et la cha\xEEne de caract\xE8re d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['CarbonDioxide']['set_abcPeriod']={syn:'Change la dur\xE9e de la p\xE9riode pour la correction automatique de r\xE9f\xE9rence (auto-calibration) du capteur, exprim\xE9e en heures.',lib:'carbondioxide.set_abcPeriod()',pro:'def set_abcPeriod(<span id=pn>newval</span>)',cmt:'<p>Change la dur\xE9e de la p\xE9riode pour la correction automatique de r\xE9f\xE9rence (auto-calibration) du capteur, exprim\xE9e en heures. Pour d\xE9sactivez la correction automatique de r\xE9f\xE9rence (par exemple lorsque le capteur est utilis\xE9 dans un environement constamment au dessus de 400ppm CO2), configurez la p\xE9riode \xE0 la valeur -1. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'un entier'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['CarbonDioxide']['set_highestValue']={syn:'Modifie la m\xE9moire de valeur maximale observ\xE9e.',lib:'carbondioxide.set_highestValue()',pro:'def set_highestValue(<span id=pn>newval</span>)',cmt:'<p>Modifie la m\xE9moire de valeur maximale observ\xE9e.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la m\xE9moire de valeur maximale observ\xE9e'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['CarbonDioxide']['set_logFrequency']={syn:'Modifie la fr\xE9quence d\x27enregistrement des mesures dans le datalogger.',lib:'carbondioxide.set_logFrequency()',pro:'def set_logFrequency(<span id=pn>newval</span>)',cmt:'<p>Modifie la fr\xE9quence d\x27enregistrement des mesures dans le datalogger. La fr\xE9quence peut \xEAtre sp\xE9cifi\xE9e en mesures par secondes, en mesures par minutes (par exemple \x2215/m\x22) ou en mesures par heure (par exemple \x224/h\x22). Pour d\xE9sactiver l\x27enregistrement des mesures de cette fonction, utilisez la valeur \x22OFF\x22.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence d\x27enregistrement des mesures dans le datalogger'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['CarbonDioxide']['set_logicalName']={syn:'Modifie le nom logique du capteur de CO2.',lib:'carbondioxide.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Modifie le nom logique du capteur de CO2. Vous pouvez utiliser <tt>yCheckLogicalName()</tt> pour v\xE9rifier si votre param\xE8tre est valide. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du capteur de CO2.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27appel se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['CarbonDioxide']['set_lowestValue']={syn:'Modifie la m\xE9moire de valeur minimale observ\xE9e.',lib:'carbondioxide.set_lowestValue()',pro:'def set_lowestValue(<span id=pn>newval</span>)',cmt:'<p>Modifie la m\xE9moire de valeur minimale observ\xE9e.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la m\xE9moire de valeur minimale observ\xE9e'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['CarbonDioxide']['set_reportFrequency']={syn:'Modifie la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es.',lib:'carbondioxide.set_reportFrequency()',pro:'def set_reportFrequency(<span id=pn>newval</span>)',cmt:'<p>Modifie la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es. La fr\xE9quence peut \xEAtre sp\xE9cifi\xE9e en mesures par secondes, en mesures par minutes (par exemple \x2215/m\x22) ou en mesures par heure (par exemple \x224/h\x22). Pour d\xE9sactiver les notifications p\xE9riodiques pour cette fonction, utilisez la valeur \x22OFF\x22.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['CarbonDioxide']['set_resolution']={syn:'Modifie la r\xE9solution des valeurs physique mesur\xE9es.',lib:'carbondioxide.set_resolution()',pro:'def set_resolution(<span id=pn>newval</span>)',cmt:'<p>Modifie la r\xE9solution des valeurs physique mesur\xE9es. La r\xE9solution correspond \xE0 la pr\xE9cision de l\x27affichage des mesures. Elle ne change pas la pr\xE9cision de la mesure elle-m\xEAme.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la r\xE9solution des valeurs physique mesur\xE9es'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['CarbonDioxide']['set_userData']={syn:'Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>.',lib:'carbondioxide.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',par:{data:'objet quelconque \xE0 m\xE9moriser'}};
+doc['CarbonDioxide']['startDataLogger']={syn:'D\xE9marre l\x27enregistreur de donn\xE9es du module.',lib:'carbondioxide.startDataLogger()',pro:'def startDataLogger()',cmt:'<p>D\xE9marre l\x27enregistreur de donn\xE9es du module. Attention, l\x27enregistreur ne sauvera les mesures de ce capteur que si la fr\xE9quence d\x27enregistrement (logFrequency) n\x27est pas sur \x22OFF\x22.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.'};
+doc['CarbonDioxide']['stopDataLogger']={syn:'Arr\xEAte l\x27enregistreur de donn\xE9es du module.',lib:'carbondioxide.stopDataLogger()',pro:'def stopDataLogger()',cmt:'<p>Arr\xEAte l\x27enregistreur de donn\xE9es du module.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.'};
+doc['CarbonDioxide']['triggerBaselineCalibration']={syn:'Lance une calibration au niveau de CO2 ambiant standard (400ppm).',lib:'carbondioxide.triggerBaselineCalibration()',pro:'def triggerBaselineCalibration()',cmt:'<p>Lance une calibration au niveau de CO2 ambiant standard (400ppm). Il n\x27est normalement pas n\xE9cessaire de calibrer le capteur, car is est con\xE7u pour compenser automatiquement toute d\xE9rive sur le long terme en se basant sur la plus faible valeur observ\xE9e durant la p\xE9riode de calibration automatique. Toutefois, si vous d\xE9sactivez la calibration automatique, vous pouvez lancer manuellement cette calibration ambiante en prenant soit de placer pr\xE9alablement le capteur dans un environnement standard (par exemple \xE0 l\x27ext\xE9rieur) \xE0 400ppm.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['CarbonDioxide']['triggerZeroCalibration']={syn:'Lance une calibration au niveau z\xE9ro (air exempt de CO2).',lib:'carbondioxide.triggerZeroCalibration()',pro:'def triggerZeroCalibration()',cmt:'<p>Lance une calibration au niveau z\xE9ro (air exempt de CO2). Il n\x27est normalement pas n\xE9cessaire de calibrer le capteur, car is est con\xE7u pour compenser automatiquement toute d\xE9rive sur le long terme en se basant sur la plus faible valeur observ\xE9e durant la p\xE9riode de calibration automatique. Toutefois, si vous d\xE9sactivez la calibration automatique, vous pouvez lancer manuellement cette calibration au niveau z\xE9ro apr\xE8s avoir fait circuler dans le capteur pendant une minute ou deux de l\x27air exempt de CO2, \xE0 l\x27aide d\x27un petit tube branch\xE9 sur le capteur. Contactez support@yoctopuce.com pour plus de d\xE9tail sur la proc\xE9dure de calibration au niveau z\xE9ro.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['CarbonDioxide']['unmuteValueCallbacks']={syn:'R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'carbondioxide.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Cette fonction annule un pr\xE9c\xE9dent appel \xE0 <tt>muteValueCallbacks()</tt>. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+//--- (end of generated code: CarbonDioxide)
+//--- (generated code: Led)
+doc['Led']={'':{syn:'Interface de la fonction Led',inc:'from yocto_led import *',cmt:'<p>La librairie de programmation Yoctopuce permet non seulement d\x27allumer la LED \xE0 une intensit\xE9 donn\xE9e, mais aussi de la faire osciller \xE0 plusieurs fr\xE9quences.</p>'}};
+doc['Led']['FindLed']={syn:'Permet de retrouver une LED d\x27apr\xE8s un identifiant donn\xE9.',lib:'YLed.FindLed()',pro:'def FindLed(<span id=pn>func</span>)',cmt:'<p>Permet de retrouver une LED d\x27apr\xE8s un identifiant donn\xE9. L\x27identifiant peut \xEAtre sp\xE9cifi\xE9 sous plusieurs formes:<br> <ul> <li>NomLogiqueFonction</li> <li>NoSerieModule.IdentifiantFonction</li> <li>NoSerieModule.NomLogiqueFonction</li> <li>NomLogiqueModule.IdentifiantMat\xE9riel</li> <li>NomLogiqueModule.NomLogiqueFonction</li> </ul></p><p> Cette fonction n\x27exige pas que la LED soit en ligne au moment ou elle est appel\xE9e, l\x27objet retourn\xE9 sera n\xE9anmoins valide. Utiliser la m\xE9thode <tt>YLed.isOnline()</tt> pour tester si la LED est utilisable \xE0 un moment donn\xE9. En cas d\x27ambigu\xEFt\xE9 lorsqu\x27on fait une recherche par nom logique, aucune erreur ne sera notifi\xE9e: la premi\xE8re instance trouv\xE9e sera renvoy\xE9e. La recherche se fait d\x27abord par nom mat\xE9riel, puis par nom logique.</p>',par:{func:'une cha\xEEne de caract\xE8res qui r\xE9f\xE9rence la LED sans ambigu\xEFt\xE9'},ret:'un objet de classe <tt>YLed</tt> qui permet ensuite de contr\xF4ler la LED.'};
+doc['Led']['FirstLed']={syn:'Commence l\x27\xE9num\xE9ration des LEDs accessibles par la librairie.',lib:'YLed.FirstLed()',pro:'def FirstLed()',cmt:'<p>Commence l\x27\xE9num\xE9ration des LEDs accessibles par la librairie. Utiliser la fonction <tt>YLed.nextLed()</tt> pour it\xE9rer sur les autres LEDs.</p>',ret:'un pointeur sur un objet <tt>YLed</tt>, correspondant \xE0 la premi\xE8re LED accessible en ligne, ou <tt>null</tt> si il n\x27y a pas de LEDs disponibles.'};
+doc['Led']['clearCache']={syn:'Invalide le cache.',lib:'led.clearCache()',pro:'def clearCache()',cmt:'<p>Invalide le cache. Invalide le cache des valeurs courantes de la LED. Force le prochain appel \xE0 une m\xE9thode get_xxx() ou loadxxx() pour charger les les donn\xE9es depuis le module.</p>'};
+doc['Led']['describe']={syn:'Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance de la LED au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'led.describe()',pro:'def describe()',cmt:'<p>Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance de la LED au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. Plus pr\xE9cis\xE9ment, <tt>TYPE</tt> correspond au type de fonction, <tt>NAME</tt> correspond au nom utils\xE9 lors du premier acc\xE8s a la fonction, <tt>SERIAL</tt> correspond au num\xE9ro de s\xE9rie du module si le module est connect\xE9, ou <tt>\x22unresolved\x22</tt> sinon, et <tt>FUNCTIONID</tt> correspond \xE0 l\x27identifiant mat\xE9riel de la fonction si le module est connect\xE9. Par exemple, La methode va retourner <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> si le module est d\xE9j\xE0 connect\xE9 ou <tt>Relay(BadCustomeName.relay1)=unresolved</tt> si le module n\x27est pas d\xE9j\xE0 connect\xE9. Cette methode ne declenche aucune transaction USB ou TCP et peut donc \xEAtre utilis\xE9 dans un debuggeur.</p>',ret:'une cha\xEEne de caract\xE8res d\xE9crivant la LED (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['Led']['get_advertisedValue']={syn:'Retourne la valeur courante de la LED (pas plus de 6 caract\xE8res).',lib:'led.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Retourne la valeur courante de la LED (pas plus de 6 caract\xE8res).</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur courante de la LED (pas plus de 6 caract\xE8res).',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['Led']['get_blinking']={syn:'Retourne le mode de signalisation de la LED.',lib:'led.get_blinking()',pro:'def get_blinking()',cmt:'<p>Retourne le mode de signalisation de la LED.</p>',ret:'une valeur parmi <tt>Y_BLINKING_STILL</tt>, <tt>Y_BLINKING_RELAX</tt>, <tt>Y_BLINKING_AWARE</tt>, <tt>Y_BLINKING_RUN</tt>, <tt>Y_BLINKING_CALL</tt> et <tt>Y_BLINKING_PANIC</tt> repr&eacute;sentant le mode de signalisation de la LED',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_BLINKING_INVALID</tt>.'};
+doc['Led']['get_errorMessage']={syn:'Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de la LED.',lib:'led.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de la LED. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'une cha\xEEne de caract\xE8res correspondant au message de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation de la LED.'};
+doc['Led']['get_errorType']={syn:'Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de la LED.',lib:'led.get_errorType()',pro:'def get_errorType()',cmt:'<p>Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de la LED. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'un nombre correspondant au code de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation de la LED.'};
+doc['Led']['get_friendlyName']={syn:'Retourne un identifiant global de la LED au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>.',lib:'led.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Retourne un identifiant global de la LED au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>. Le cha\xEEne retourn\xE9e utilise soit les noms logiques du module et de la LED si ils sont d\xE9finis, soit respectivement le num\xE9ro de s\xE9rie du module et l\x27identifant mat\xE9riel de la LED (par exemple: <tt>MyCustomName.relay1</tt>)</p>',ret:'une cha\xEEne de caract\xE8res identifiant la LED en utilisant les noms logiques (ex: <tt>MyCustomName.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['Led']['get_functionDescriptor']={syn:'Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction.',lib:'led.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction. Cet identifiant peut \xEAtre utilis\xE9 pour tester si deux instance de <tt>YFunction</tt> r\xE9f\xE9rencent physiquement la m\xEAme fonction sur le m\xEAme module.</p>',ret:'un identifiant de type <tt>YFUN_DESCR</tt>.',ext:'Si la fonction n\x27a jamais \xE9t\xE9 contact\xE9e, la valeur retourn\xE9e sera <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>'};
+doc['Led']['get_functionId']={syn:'Retourne l\x27identifiant mat\xE9riel de la LED, sans r\xE9f\xE9rence au module.',lib:'led.get_functionId()',pro:'def get_functionId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel de la LED, sans r\xE9f\xE9rence au module. Par example <tt>relay1</tt>.</p>',ret:'une cha\xEEne de caract\xE8res identifiant la LED (ex: <tt>relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['Led']['get_hardwareId']={syn:'Retourne l\x27identifiant mat\xE9riel unique de la LED au format <tt>SERIAL.FUNCTIONID</tt>.',lib:'led.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel unique de la LED au format <tt>SERIAL.FUNCTIONID</tt>. L\x27identifiant unique est compos\xE9 du num\xE9ro de s\xE9rie du module et de l\x27identifiant mat\xE9riel de la LED (par example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'une cha\xEEne de caract\xE8res identifiant la LED (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['Led']['get_logicalName']={syn:'Retourne le nom logique de la LED.',lib:'led.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Retourne le nom logique de la LED.</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique de la LED.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['Led']['get_luminosity']={syn:'Retourne l\x27intensit\xE9 de la LED en pour cent.',lib:'led.get_luminosity()',pro:'def get_luminosity()',cmt:'<p>Retourne l\x27intensit\xE9 de la LED en pour cent.</p>',ret:'un entier repr&eacute;sentant l\x27intensit\xE9 de la LED en pour cent',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_LUMINOSITY_INVALID</tt>.'};
+doc['Led']['get_module']={syn:'Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction.',lib:'led.get_module()',pro:'def get_module()',cmt:'<p>Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction. Si la fonction ne peut \xEAtre trouv\xE9e sur aucun module, l\x27instance de <tt>YModule</tt> retourn\xE9e ne sera pas joignable.</p>',ret:'une instance de <tt>YModule</tt>'};
+doc['Led']['get_power']={syn:'Retourne l\x27\xE9tat courant de la LED.',lib:'led.get_power()',pro:'def get_power()',cmt:'<p>Retourne l\x27\xE9tat courant de la LED.</p>',ret:'soit <tt>Y_POWER_OFF</tt>, soit <tt>Y_POWER_ON</tt>, selon l\x27\xE9tat courant de la LED',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_POWER_INVALID</tt>.'};
+doc['Led']['get_userData']={syn:'Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>.',lib:'led.get_userData()',pro:'def get_userData()',cmt:'<p>Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',ret:'l\x27objet stock\xE9 pr\xE9c\xE9demment par l\x27appelant.'};
+doc['Led']['isOnline']={syn:'V\xE9rifie si le module h\xE9bergeant la LED est joignable, sans d\xE9clencher d\x27erreur.',lib:'led.isOnline()',pro:'def isOnline()',cmt:'<p>V\xE9rifie si le module h\xE9bergeant la LED est joignable, sans d\xE9clencher d\x27erreur. Si les valeurs des attributs en cache de la LED sont valides au moment de l\x27appel, le module est consid\xE9r\xE9 joignable. Cette fonction ne cause en aucun cas d\x27exception, quelle que soit l\x27erreur qui pourrait se produire lors de la v\xE9rification de joignabilit\xE9.</p>',ret:'<tt>true</tt> si la LED est joignable, <tt>false</tt> sinon'};
+doc['Led']['load']={syn:'Met en cache les valeurs courantes de la LED, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e.',lib:'led.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Met en cache les valeurs courantes de la LED, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e. Par d\xE9faut, lorsqu\x27on acc\xE8de \xE0 un module, tous les attributs des fonctions du module sont automatiquement mises en cache pour la dur\xE9e standard (5 ms). Cette m\xE9thode peut \xEAtre utilis\xE9e pour marquer occasionellement les donn\xE9es cach\xE9es comme valides pour une plus longue p\xE9riode, par exemple dans le but de r\xE9duire le trafic r\xE9seau.</p>',par:{msValidity:'un entier correspondant \xE0 la dur\xE9e de validit\xE9 attribu\xE9e aux les param\xE8tres charg\xE9s, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Led']['loadAttribute']={syn:'Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.',lib:'led.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un cha\xEEne vide.'};
+doc['Led']['muteValueCallbacks']={syn:'D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'led.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Vous pouvez utiliser cette fonction pour \xE9conomiser la bande passante et le CPU sur les machines de faible puissance, ou pour \xE9viter le d\xE9clanchement de callbacks HTTP. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Led']['nextLed']={syn:'Continue l\x27\xE9num\xE9ration des LEDs commenc\xE9e \xE0 l\x27aide de <tt>yFirstLed()</tt>.',lib:'led.nextLed()',pro:'def nextLed()',cmt:'<p>Continue l\x27\xE9num\xE9ration des LEDs commenc\xE9e \xE0 l\x27aide de <tt>yFirstLed()</tt>.</p>',ret:'un pointeur sur un objet <tt>YLed</tt> accessible en ligne, ou <tt>null</tt> lorsque l\x27\xE9num\xE9ration est termin\xE9e.'};
+doc['Led']['registerValueCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e.',lib:'led.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callback peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callback ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et la cha\xEEne de caract\xE8re d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['Led']['set_blinking']={syn:'Modifie le mode de signalisation de la LED.',lib:'led.set_blinking()',pro:'def set_blinking(<span id=pn>newval</span>)',cmt:'<p>Modifie le mode de signalisation de la LED.</p>',par:{newval:'une valeur parmi <tt>Y_BLINKING_STILL</tt>, <tt>Y_BLINKING_RELAX</tt>, <tt>Y_BLINKING_AWARE</tt>, <tt>Y_BLINKING_RUN</tt>, <tt>Y_BLINKING_CALL</tt> et <tt>Y_BLINKING_PANIC</tt> repr&eacute;sentant le mode de signalisation de la LED'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Led']['set_logicalName']={syn:'Modifie le nom logique de la LED.',lib:'led.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Modifie le nom logique de la LED. Vous pouvez utiliser <tt>yCheckLogicalName()</tt> pour v\xE9rifier si votre param\xE8tre est valide. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique de la LED.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27appel se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Led']['set_luminosity']={syn:'Modifie l\x27intensit\xE9 lumineuse de la LED (en pour cent).',lib:'led.set_luminosity()',pro:'def set_luminosity(<span id=pn>newval</span>)',cmt:'<p>Modifie l\x27intensit\xE9 lumineuse de la LED (en pour cent).</p>',par:{newval:'un entier repr&eacute;sentant l\x27intensit\xE9 lumineuse de la LED (en pour cent)'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Led']['set_power']={syn:'Modifie l\x27\xE9tat courant de la LED.',lib:'led.set_power()',pro:'def set_power(<span id=pn>newval</span>)',cmt:'<p>Modifie l\x27\xE9tat courant de la LED.</p>',par:{newval:'soit <tt>Y_POWER_OFF</tt>, soit <tt>Y_POWER_ON</tt>, selon l\x27\xE9tat courant de la LED'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Led']['set_userData']={syn:'Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>.',lib:'led.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',par:{data:'objet quelconque \xE0 m\xE9moriser'}};
+doc['Led']['unmuteValueCallbacks']={syn:'R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'led.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Cette fonction annule un pr\xE9c\xE9dent appel \xE0 <tt>muteValueCallbacks()</tt>. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+//--- (end of generated code: Led)
+//--- (generated code: VSource)
+doc['VSource']={'':{syn:'Interface de la fonction Source de tension',inc:'from yocto_vsource import *',cmt:'<p>La librairie de programmation Yoctopuce permet de commande la tension de srotir du module. Vous pouvez affecter une valeur fixe,ou faire des transition de voltage.</p>'}};
+doc['VSource']['FindVSource']={syn:'Permet de retrouver une source de tension d\x27apr\xE8s un identifiant donn\xE9.',lib:'YVSource.FindVSource()',pro:'def FindVSource(<span id=pn>func</span>)',cmt:'<p>Permet de retrouver une source de tension d\x27apr\xE8s un identifiant donn\xE9. L\x27identifiant peut \xEAtre sp\xE9cifi\xE9 sous plusieurs formes:<br> <ul> <li>NomLogiqueFonction</li> <li>NoSerieModule.IdentifiantFonction</li> <li>NoSerieModule.NomLogiqueFonction</li> <li>NomLogiqueModule.IdentifiantMat\xE9riel</li> <li>NomLogiqueModule.NomLogiqueFonction</li> </ul> Cette fonction n\x27exige pas que la source de tension soit en ligne au moment ou elle est appel\xE9e, l\x27objet retourn\xE9 sera n\xE9anmoins valide. Utiliser la m\xE9thode <tt>YVSource.isOnline()</tt> pour tester si la source de tension est utilisable \xE0 un moment donn\xE9. En cas d\x27ambigu\xEFt\xE9 lorsqu\x27on fait une recherche par nom logique, aucune erreur ne sera notifi\xE9e: la premi\xE8re instance trouv\xE9e sera renvoy\xE9e. La recherche se fait d\x27abord par nom mat\xE9riel, puis par nom logique.</p>',par:{func:'une cha\xEEne de caract\xE8res qui r\xE9f\xE9rence la source de tension sans ambigu\xEFt\xE9'},ret:'un objet de classe <tt>YVSource</tt> qui permet ensuite de contr\xF4ler la source de tension.'};
+doc['VSource']['FirstVSource']={syn:'Commence l\x27\xE9num\xE9ration des sources de tension accessibles par la librairie.',lib:'YVSource.FirstVSource()',pro:'def FirstVSource()',cmt:'<p>Commence l\x27\xE9num\xE9ration des sources de tension accessibles par la librairie. Utiliser la fonction <tt>YVSource.nextVSource()</tt> pour it\xE9rer sur les autres sources de tension.</p>',ret:'un pointeur sur un objet <tt>YVSource</tt>, correspondant \xE0 la premi\xE8re source de tension accessible en ligne, ou <tt>null</tt> si il n\x27y a pas de sources de tension disponibles.'};
+doc['VSource']['get_advertisedValue']={syn:'Retourne la valeur courante de la source de tension (pas plus de 6 caract\xE8res).',lib:'vsource.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Retourne la valeur courante de la source de tension (pas plus de 6 caract\xE8res).</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur courante de la source de tension (pas plus de 6 caract\xE8res)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['VSource']['get_errorMessage']={syn:'Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de la fonction.',lib:'vsource.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de la fonction. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'une cha\xEEne de caract\xE8res correspondant au message de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation de la fonction'};
+doc['VSource']['get_errorType']={syn:'Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de la fonction.',lib:'vsource.get_errorType()',pro:'def get_errorType()',cmt:'<p>Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de la fonction. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'un nombre correspondant au code de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation de la fonction'};
+doc['VSource']['get_extPowerFailure']={syn:'Rend TRUE si le voltage de l\x27alimentation externe est trop bas.',lib:'vsource.get_extPowerFailure()',pro:'def get_extPowerFailure()',cmt:'<p>Rend TRUE si le voltage de l\x27alimentation externe est trop bas.</p>',ret:'soit <tt>Y_EXTPOWERFAILURE_FALSE</tt>, soit <tt>Y_EXTPOWERFAILURE_TRUE</tt>',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_EXTPOWERFAILURE_INVALID</tt>.'};
+doc['VSource']['get_failure']={syn:'Indique si le module est en condition d\x27erreur.',lib:'vsource.get_failure()',pro:'def get_failure()',cmt:'<p>Indique si le module est en condition d\x27erreur. Il possible de savoir de quelle erreur il s\x27agit en testant get_overheat, get_overcurrent etc... Lorsqu\x27un condition d\x27erreur est rencont\xE9e, la tension de sortie est mise \xE0 z\xE9ro est ne peut pas \xEAtre chang\xE9e tant la fonction reset() n\x27aura pas appell\xE9e.</p>',ret:'soit <tt>Y_FAILURE_FALSE</tt>, soit <tt>Y_FAILURE_TRUE</tt>',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FAILURE_INVALID</tt>.'};
+doc['VSource']['get_functionDescriptor']={syn:'Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction.',lib:'vsource.get_vsourceDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction. Cet identifiant peut \xEAtre utilis\xE9 pour tester si deux instance de <tt>YFunction</tt> r\xE9f\xE9rencent physiquement la m\xEAme fonction sur le m\xEAme module.</p>',ret:'un identifiant de type <tt>YFUN_DESCR</tt>. Si la fonction n\x27a jamais \xE9t\xE9 contact\xE9e, la valeur retourn\xE9e sera <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>'};
+doc['VSource']['get_logicalName']={syn:'Retourne le nom logique de la source de tension.',lib:'vsource.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Retourne le nom logique de la source de tension.</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique de la source de tension',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['VSource']['get_module']={syn:'Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction.',lib:'vsource.get_module()',pro:'def get_module()',cmt:'<p>Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction. Si la fonction ne peut \xEAtre trouv\xE9e sur aucun module, l\x27instance de <tt>YModule</tt> retourn\xE9e ne sera pas joignable.</p>',ret:'une instance de <tt>YModule</tt>'};
+doc['VSource']['get_overCurrent']={syn:'Rend TRUE si l\x27appareil connect\xE9 \xE0 la sortie du module consomme trop de courant.',lib:'vsource.get_overCurrent()',pro:'def get_overCurrent()',cmt:'<p>Rend TRUE si l\x27appareil connect\xE9 \xE0 la sortie du module consomme trop de courant.</p>',ret:'soit <tt>Y_OVERCURRENT_FALSE</tt>, soit <tt>Y_OVERCURRENT_TRUE</tt>',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_OVERCURRENT_INVALID</tt>.'};
+doc['VSource']['get_overHeat']={syn:'Rend TRUE si le module est en surchauffe.',lib:'vsource.get_overHeat()',pro:'def get_overHeat()',cmt:'<p>Rend TRUE si le module est en surchauffe.</p>',ret:'soit <tt>Y_OVERHEAT_FALSE</tt>, soit <tt>Y_OVERHEAT_TRUE</tt>',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_OVERHEAT_INVALID</tt>.'};
+doc['VSource']['get_overLoad']={syn:'Rend TRUE si le module n\x27est pas capable de tenir la tension de sortie demand\xE9e.',lib:'vsource.get_overLoad()',pro:'def get_overLoad()',cmt:'<p>Rend TRUE si le module n\x27est pas capable de tenir la tension de sortie demand\xE9e.</p>',ret:'soit <tt>Y_OVERLOAD_FALSE</tt>, soit <tt>Y_OVERLOAD_TRUE</tt>',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_OVERLOAD_INVALID</tt>.'};
+doc['VSource']['get_regulationFailure']={syn:'Rend TRUE si le voltage de sortie de trop \xE9lev\xE9 par report \xE0 la tension demand\xE9e demand\xE9e.',lib:'vsource.get_regulationFailure()',pro:'def get_regulationFailure()',cmt:'<p>Rend TRUE si le voltage de sortie de trop \xE9lev\xE9 par report \xE0 la tension demand\xE9e demand\xE9e.</p>',ret:'soit <tt>Y_REGULATIONFAILURE_FALSE</tt>, soit <tt>Y_REGULATIONFAILURE_TRUE</tt>',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_REGULATIONFAILURE_INVALID</tt>.'};
+doc['VSource']['get_unit']={syn:'Retourne l\x27unit\xE9 dans laquelle la tension est exprim\xE9e.',lib:'vsource.get_unit()',pro:'def get_unit()',cmt:'<p>Retourne l\x27unit\xE9 dans laquelle la tension est exprim\xE9e.</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant l\x27unit\xE9 dans laquelle la tension est exprim\xE9e',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_UNIT_INVALID</tt>.'};
+doc['VSource']['get_userData']={syn:'Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>.',lib:'vsource.get_userData()',pro:'def get_userData()',cmt:'<p>Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',ret:'l\x27objet stock\xE9 pr\xE9c\xE9demment par l\x27appelant.'};
+doc['VSource']['get_voltage']={syn:'Retourne la valeur de la commande de tension de sortie en mV ',lib:'vsource.get_voltage()',pro:'def get_voltage()',cmt:'<p>Retourne la valeur de la commande de tension de sortie en mV</p>',ret:'un entier repr\xE9sentant la valeur de la commande de tension de sortie en mV',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_VOLTAGE_INVALID</tt>.'};
+doc['VSource']['isOnline']={syn:'V\xE9rifie si le module h\xE9bergeant la fonction est joignable, sans d\xE9clencher d\x27erreur.',lib:'vsource.isOnline()',pro:'def isOnline()',cmt:'<p>V\xE9rifie si le module h\xE9bergeant la fonction est joignable, sans d\xE9clencher d\x27erreur. Si les valeurs des attributs en cache de la fonction sont valides au moment de l\x27appel, le module est consid\xE9r\xE9 joignable. Cette fonction ne cause en aucun cas d\x27exception, quelle que soit l\x27erreur qui pourrait se produire lors de la v\xE9rification de joignabilit\xE9.</p>',ret:'<tt>true</tt> si la fonction est joignable, <tt>false</tt> sinon'};
+doc['VSource']['load']={syn:'Met en cache les valeurs courantes de la fonction, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e.',lib:'vsource.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Met en cache les valeurs courantes de la fonction, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e. Par d\xE9faut, lorsqu\x27on acc\xE8de \xE0 un module, tous les attributs des fonctions du module sont automatiquement mises en cache pour la dur\xE9e standard (5 ms). Cette m\xE9thode peut \xEAtre utilis\xE9e pour marquer occasionellement les donn\xE9es cach\xE9es comme valides pour une plus longue p\xE9riode, par exemple dans le but de r\xE9duire le trafic r\xE9seau.</p>',par:{msValidity:'un entier correspondant \xE0 la dur\xE9e de validit\xE9 attribu\xE9e aux les param\xE8tres charg\xE9s, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur. En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['VSource']['nextVSource']={syn:'Continue l\x27\xE9num\xE9ration des sources de tension commenc\xE9e \xE0 l\x27aide de <tt>yFirstVSource()</tt>.',lib:'vsource.nextVSource()',pro:'def nextVSource()',cmt:'<p>Continue l\x27\xE9num\xE9ration des sources de tension commenc\xE9e \xE0 l\x27aide de <tt>yFirstVSource()</tt>.</p>',ret:'un pointeur sur un objet <tt>YVSource</tt> accessible en ligne, ou <tt>null</tt> lorsque l\x27\xE9num\xE9ration est termin\xE9e.'};
+doc['VSource']['pulse']={syn:'Active la sortie \xE0 une tension donn\xE9e, et pour dur\xE9e sp\xE9cifi\xE9e, puis revient ensuite spontan\xE9ment \xE0 z\xE9ro volt.',lib:'vsource.pulse()',pro:'def pulse(<span id=pn>voltage</span>, <span id=pn>ms_duration</span>)',cmt:'<p>Active la sortie \xE0 une tension donn\xE9e, et pour dur\xE9e sp\xE9cifi\xE9e, puis revient ensuite spontan\xE9ment \xE0 z\xE9ro volt.</p>',par:{voltage:'tension demand\xE9e, en millivolts',ms_duration:'dur\xE9e de l\x27impulsion, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['VSource']['registerValueCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e.',lib:'vsource.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callback peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callback ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et la cha\xEEne de caract\xE8re d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['VSource']['set_logicalName']={syn:'Modifie le nom logique de la source de tension.',lib:'vsource.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Modifie le nom logique de la source de tension. Vous pouvez utiliser <tt>yCheckLogicalName()</tt> pour v\xE9rifier si votre param\xE8tre est valide. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique de la source de tension'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['VSource']['set_userData']={syn:'Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>.',lib:'vsource.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',par:{data:'objet quelconque \xE0 m\xE9moriser'}};
+doc['VSource']['set_voltage']={syn:'R\xE8gle la tension de sortie du module (en milliVolts).',lib:'vsource.set_voltage()',pro:'def set_voltage(<span id=pn>newval</span>)',cmt:'<p>R\xE8gle la tension de sortie du module (en milliVolts).</p>',par:{newval:'un entier'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['VSource']['voltageMove']={syn:'D\xE9clenche une variation constante de la sortie vers une valeur donn\xE9e.',lib:'vsource.voltageMove()',pro:'def voltageMove(<span id=pn>target</span>, <span id=pn>ms_duration</span>)',cmt:'<p>D\xE9clenche une variation constante de la sortie vers une valeur donn\xE9e. </p>',par:{target:'nouvelle valeur de sortie \xE0 la fin de la transition, en milliVolts.',ms_duration:'dur\xE9e de la transition, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+//--- (end of generated code: VSource)
+//--- (generated code: Network)
+doc['Network']={'':{syn:'Interface de la fonction Network',inc:'from yocto_network import *',cmt:'<p>Les objets YNetwork permettent de contr\xF4ler les param\xE8tres TCP/IP des modules Yoctopuce dot\xE9s d\x27une interface r\xE9seau.</p>'}};
+doc['Network']['FindNetwork']={syn:'Permet de retrouver une interface r\xE9seau d\x27apr\xE8s un identifiant donn\xE9.',lib:'YNetwork.FindNetwork()',pro:'def FindNetwork(<span id=pn>func</span>)',cmt:'<p>Permet de retrouver une interface r\xE9seau d\x27apr\xE8s un identifiant donn\xE9. L\x27identifiant peut \xEAtre sp\xE9cifi\xE9 sous plusieurs formes:<br> <ul> <li>NomLogiqueFonction</li> <li>NoSerieModule.IdentifiantFonction</li> <li>NoSerieModule.NomLogiqueFonction</li> <li>NomLogiqueModule.IdentifiantMat\xE9riel</li> <li>NomLogiqueModule.NomLogiqueFonction</li> </ul></p><p> Cette fonction n\x27exige pas que l\x27interface r\xE9seau soit en ligne au moment ou elle est appel\xE9e, l\x27objet retourn\xE9 sera n\xE9anmoins valide. Utiliser la m\xE9thode <tt>YNetwork.isOnline()</tt> pour tester si l\x27interface r\xE9seau est utilisable \xE0 un moment donn\xE9. En cas d\x27ambigu\xEFt\xE9 lorsqu\x27on fait une recherche par nom logique, aucune erreur ne sera notifi\xE9e: la premi\xE8re instance trouv\xE9e sera renvoy\xE9e. La recherche se fait d\x27abord par nom mat\xE9riel, puis par nom logique.</p>',par:{func:'une cha\xEEne de caract\xE8res qui r\xE9f\xE9rence l\x27interface r\xE9seau sans ambigu\xEFt\xE9'},ret:'un objet de classe <tt>YNetwork</tt> qui permet ensuite de contr\xF4ler l\x27interface r\xE9seau.'};
+doc['Network']['FirstNetwork']={syn:'Commence l\x27\xE9num\xE9ration des interfaces r\xE9seau accessibles par la librairie.',lib:'YNetwork.FirstNetwork()',pro:'def FirstNetwork()',cmt:'<p>Commence l\x27\xE9num\xE9ration des interfaces r\xE9seau accessibles par la librairie. Utiliser la fonction <tt>YNetwork.nextNetwork()</tt> pour it\xE9rer sur les autres interfaces r\xE9seau.</p>',ret:'un pointeur sur un objet <tt>YNetwork</tt>, correspondant \xE0 la premi\xE8re interface r\xE9seau accessible en ligne, ou <tt>null</tt> si il n\x27y a pas de interfaces r\xE9seau disponibles.'};
+doc['Network']['callbackLogin']={syn:'Contacte le callback de notification et sauvegarde un laisser-passer pour s\x27y connecter.',lib:'network.callbackLogin()',pro:'def callbackLogin(<span id=pn>username</span>, <span id=pn>password</span>)',cmt:'<p>Contacte le callback de notification et sauvegarde un laisser-passer pour s\x27y connecter. Le mot de passe ne sera pas stock\xE9 dans le module, mais seulement une version hash\xE9e non r\xE9versible. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{username:'nom d\x27utilisateur pour s\x27identifier au callback',password:'mot de passe pour s\x27identifier au callback'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Network']['clearCache']={syn:'Invalide le cache.',lib:'network.clearCache()',pro:'def clearCache()',cmt:'<p>Invalide le cache. Invalide le cache des valeurs courantes de l\x27interface r\xE9seau. Force le prochain appel \xE0 une m\xE9thode get_xxx() ou loadxxx() pour charger les les donn\xE9es depuis le module.</p>'};
+doc['Network']['describe']={syn:'Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance de l\x27interface r\xE9seau au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'network.describe()',pro:'def describe()',cmt:'<p>Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance de l\x27interface r\xE9seau au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. Plus pr\xE9cis\xE9ment, <tt>TYPE</tt> correspond au type de fonction, <tt>NAME</tt> correspond au nom utils\xE9 lors du premier acc\xE8s a la fonction, <tt>SERIAL</tt> correspond au num\xE9ro de s\xE9rie du module si le module est connect\xE9, ou <tt>\x22unresolved\x22</tt> sinon, et <tt>FUNCTIONID</tt> correspond \xE0 l\x27identifiant mat\xE9riel de la fonction si le module est connect\xE9. Par exemple, La methode va retourner <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> si le module est d\xE9j\xE0 connect\xE9 ou <tt>Relay(BadCustomeName.relay1)=unresolved</tt> si le module n\x27est pas d\xE9j\xE0 connect\xE9. Cette methode ne declenche aucune transaction USB ou TCP et peut donc \xEAtre utilis\xE9 dans un debuggeur.</p>',ret:'une cha\xEEne de caract\xE8res d\xE9crivant l\x27interface r\xE9seau (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['Network']['get_adminPassword']={syn:'Retourne une cha\xEEne de hash si un mot de passe a \xE9t\xE9 configur\xE9 pour l\x27utilisateur \x22admin\x22, ou sinon une cha\xEEne vide.',lib:'network.get_adminPassword()',pro:'def get_adminPassword()',cmt:'<p>Retourne une cha\xEEne de hash si un mot de passe a \xE9t\xE9 configur\xE9 pour l\x27utilisateur \x22admin\x22, ou sinon une cha\xEEne vide.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant une cha\xEEne de hash si un mot de passe a \xE9t\xE9 configur\xE9 pour l\x27utilisateur \x22admin\x22, ou sinon une cha\xEEne vide',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_ADMINPASSWORD_INVALID</tt>.'};
+doc['Network']['get_advertisedValue']={syn:'Retourne la valeur courante de l\x27interface r\xE9seau (pas plus de 6 caract\xE8res).',lib:'network.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Retourne la valeur courante de l\x27interface r\xE9seau (pas plus de 6 caract\xE8res).</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur courante de l\x27interface r\xE9seau (pas plus de 6 caract\xE8res).',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['Network']['get_callbackCredentials']={syn:'Retourne une version hash\xE9e du laisser-passer pour le callback de notification s\x27il a \xE9t\xE9 configur\xE9, ou sinon une cha\xEEne vide.',lib:'network.get_callbackCredentials()',pro:'def get_callbackCredentials()',cmt:'<p>Retourne une version hash\xE9e du laisser-passer pour le callback de notification s\x27il a \xE9t\xE9 configur\xE9, ou sinon une cha\xEEne vide.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant une version hash\xE9e du laisser-passer pour le callback de notification s\x27il a \xE9t\xE9 configur\xE9, ou sinon une cha\xEEne vide',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_CALLBACKCREDENTIALS_INVALID</tt>.'};
+doc['Network']['get_callbackEncoding']={syn:'Retourne l\x27encodage \xE0 utiliser pour repr\xE9senter les valeurs notifi\xE9es par callback.',lib:'network.get_callbackEncoding()',pro:'def get_callbackEncoding()',cmt:'<p>Retourne l\x27encodage \xE0 utiliser pour repr\xE9senter les valeurs notifi\xE9es par callback.</p>',ret:'une valeur parmi <tt>Y_CALLBACKENCODING_FORM</tt>, <tt>Y_CALLBACKENCODING_JSON</tt>, <tt>Y_CALLBACKENCODING_JSON_ARRAY</tt>, <tt>Y_CALLBACKENCODING_CSV</tt>, <tt>Y_CALLBACKENCODING_YOCTO_API</tt>, <tt>Y_CALLBACKENCODING_JSON_NUM</tt>, <tt>Y_CALLBACKENCODING_EMONCMS</tt>, <tt>Y_CALLBACKENCODING_AZURE</tt>, <tt>Y_CALLBACKENCODING_INFLUXDB</tt> et <tt>Y_CALLBACKENCODING_MQTT</tt> repr&eacute;sentant l\x27encodage \xE0 utiliser pour repr\xE9senter les valeurs notifi\xE9es par callback',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_CALLBACKENCODING_INVALID</tt>.'};
+doc['Network']['get_callbackInitialDelay']={syn:'Retourne l\x27attente initiale avant la premi\xE8re notification par callback, en secondes.',lib:'network.get_callbackInitialDelay()',pro:'def get_callbackInitialDelay()',cmt:'<p>Retourne l\x27attente initiale avant la premi\xE8re notification par callback, en secondes.</p>',ret:'un entier repr&eacute;sentant l\x27attente initiale avant la premi\xE8re notification par callback, en secondes',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_CALLBACKINITIALDELAY_INVALID</tt>.'};
+doc['Network']['get_callbackMaxDelay']={syn:'Retourne l\x27attente maximale entre deux notifications par callback, en secondes.',lib:'network.get_callbackMaxDelay()',pro:'def get_callbackMaxDelay()',cmt:'<p>Retourne l\x27attente maximale entre deux notifications par callback, en secondes.</p>',ret:'un entier repr&eacute;sentant l\x27attente maximale entre deux notifications par callback, en secondes',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_CALLBACKMAXDELAY_INVALID</tt>.'};
+doc['Network']['get_callbackMethod']={syn:'Retourne la m\xE9thode HTTP \xE0 utiliser pour signaler les changements d\x27\xE9tat par callback.',lib:'network.get_callbackMethod()',pro:'def get_callbackMethod()',cmt:'<p>Retourne la m\xE9thode HTTP \xE0 utiliser pour signaler les changements d\x27\xE9tat par callback.</p>',ret:'une valeur parmi <tt>Y_CALLBACKMETHOD_POST</tt>, <tt>Y_CALLBACKMETHOD_GET</tt> et <tt>Y_CALLBACKMETHOD_PUT</tt> repr&eacute;sentant la m\xE9thode HTTP \xE0 utiliser pour signaler les changements d\x27\xE9tat par callback',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_CALLBACKMETHOD_INVALID</tt>.'};
+doc['Network']['get_callbackMinDelay']={syn:'Retourne l\x27attente minimale entre deux notifications par callback, en secondes.',lib:'network.get_callbackMinDelay()',pro:'def get_callbackMinDelay()',cmt:'<p>Retourne l\x27attente minimale entre deux notifications par callback, en secondes.</p>',ret:'un entier repr&eacute;sentant l\x27attente minimale entre deux notifications par callback, en secondes',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_CALLBACKMINDELAY_INVALID</tt>.'};
+doc['Network']['get_callbackUrl']={syn:'Retourne l\x27adresse (URL) de callback \xE0 notifier lors de changement d\x27\xE9tat significatifs.',lib:'network.get_callbackUrl()',pro:'def get_callbackUrl()',cmt:'<p>Retourne l\x27adresse (URL) de callback \xE0 notifier lors de changement d\x27\xE9tat significatifs.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant l\x27adresse (URL) de callback \xE0 notifier lors de changement d\x27\xE9tat significatifs',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_CALLBACKURL_INVALID</tt>.'};
+doc['Network']['get_defaultPage']={syn:'Retourne la page HTML \xE0 envoyer pour l\x27URL \x22/\x22 ',lib:'network.get_defaultPage()',pro:'def get_defaultPage()',cmt:'<p>Retourne la page HTML \xE0 envoyer pour l\x27URL \x22/\x22</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la page HTML \xE0 envoyer pour l\x27URL \x22/\x22',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_DEFAULTPAGE_INVALID</tt>.'};
+doc['Network']['get_discoverable']={syn:'Retourne l\x27\xE9tat d\x27activation du protocole d\x27annonce sur le r\xE9seau permettant de retrouver facilement le module (protocols uPnP/Bonjour).',lib:'network.get_discoverable()',pro:'def get_discoverable()',cmt:'<p>Retourne l\x27\xE9tat d\x27activation du protocole d\x27annonce sur le r\xE9seau permettant de retrouver facilement le module (protocols uPnP/Bonjour).</p>',ret:'soit <tt>Y_DISCOVERABLE_FALSE</tt>, soit <tt>Y_DISCOVERABLE_TRUE</tt>, selon l\x27\xE9tat d\x27activation du protocole d\x27annonce sur le r\xE9seau permettant de retrouver facilement le module (protocols uPnP/Bonjour)',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_DISCOVERABLE_INVALID</tt>.'};
+doc['Network']['get_errorMessage']={syn:'Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de l\x27interface r\xE9seau.',lib:'network.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de l\x27interface r\xE9seau. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'une cha\xEEne de caract\xE8res correspondant au message de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation de l\x27interface r\xE9seau.'};
+doc['Network']['get_errorType']={syn:'Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de l\x27interface r\xE9seau.',lib:'network.get_errorType()',pro:'def get_errorType()',cmt:'<p>Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de l\x27interface r\xE9seau. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'un nombre correspondant au code de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation de l\x27interface r\xE9seau.'};
+doc['Network']['get_friendlyName']={syn:'Retourne un identifiant global de l\x27interface r\xE9seau au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>.',lib:'network.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Retourne un identifiant global de l\x27interface r\xE9seau au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>. Le cha\xEEne retourn\xE9e utilise soit les noms logiques du module et de l\x27interface r\xE9seau si ils sont d\xE9finis, soit respectivement le num\xE9ro de s\xE9rie du module et l\x27identifant mat\xE9riel de l\x27interface r\xE9seau (par exemple: <tt>MyCustomName.relay1</tt>)</p>',ret:'une cha\xEEne de caract\xE8res identifiant l\x27interface r\xE9seau en utilisant les noms logiques (ex: <tt>MyCustomName.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['Network']['get_functionDescriptor']={syn:'Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction.',lib:'network.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction. Cet identifiant peut \xEAtre utilis\xE9 pour tester si deux instance de <tt>YFunction</tt> r\xE9f\xE9rencent physiquement la m\xEAme fonction sur le m\xEAme module.</p>',ret:'un identifiant de type <tt>YFUN_DESCR</tt>.',ext:'Si la fonction n\x27a jamais \xE9t\xE9 contact\xE9e, la valeur retourn\xE9e sera <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>'};
+doc['Network']['get_functionId']={syn:'Retourne l\x27identifiant mat\xE9riel de l\x27interface r\xE9seau, sans r\xE9f\xE9rence au module.',lib:'network.get_functionId()',pro:'def get_functionId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel de l\x27interface r\xE9seau, sans r\xE9f\xE9rence au module. Par example <tt>relay1</tt>.</p>',ret:'une cha\xEEne de caract\xE8res identifiant l\x27interface r\xE9seau (ex: <tt>relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['Network']['get_hardwareId']={syn:'Retourne l\x27identifiant mat\xE9riel unique de l\x27interface r\xE9seau au format <tt>SERIAL.FUNCTIONID</tt>.',lib:'network.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel unique de l\x27interface r\xE9seau au format <tt>SERIAL.FUNCTIONID</tt>. L\x27identifiant unique est compos\xE9 du num\xE9ro de s\xE9rie du module et de l\x27identifiant mat\xE9riel de l\x27interface r\xE9seau (par example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'une cha\xEEne de caract\xE8res identifiant l\x27interface r\xE9seau (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['Network']['get_httpPort']={syn:'Retourne la page HTML \xE0 envoyer pour l\x27URL \x22/\x22 ',lib:'network.get_httpPort()',pro:'def get_httpPort()',cmt:'<p>Retourne la page HTML \xE0 envoyer pour l\x27URL \x22/\x22</p>',ret:'un entier repr&eacute;sentant la page HTML \xE0 envoyer pour l\x27URL \x22/\x22',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_HTTPPORT_INVALID</tt>.'};
+doc['Network']['get_ipAddress']={syn:'Retourne l\x27adresse IP utilis\xE9e par le module Yoctopuce.',lib:'network.get_ipAddress()',pro:'def get_ipAddress()',cmt:'<p>Retourne l\x27adresse IP utilis\xE9e par le module Yoctopuce. Il peut s\x27agir d\x27une adresse configur\xE9e statiquement, ou d\x27une adresse re\xE7ue par un serveur DHCP.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant l\x27adresse IP utilis\xE9e par le module Yoctopuce',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_IPADDRESS_INVALID</tt>.'};
+doc['Network']['get_logicalName']={syn:'Retourne le nom logique de l\x27interface r\xE9seau.',lib:'network.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Retourne le nom logique de l\x27interface r\xE9seau.</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique de l\x27interface r\xE9seau.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['Network']['get_macAddress']={syn:'Retourne l\x27adresse MAC de l\x27interface r\xE9seau, unique pour chaque module.',lib:'network.get_macAddress()',pro:'def get_macAddress()',cmt:'<p>Retourne l\x27adresse MAC de l\x27interface r\xE9seau, unique pour chaque module. L\x27adresse MAC est aussi pr\xE9sente sur un autocollant sur le module, repr\xE9sent\xE9e en chiffres et en code-barres.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant l\x27adresse MAC de l\x27interface r\xE9seau, unique pour chaque module',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_MACADDRESS_INVALID</tt>.'};
+doc['Network']['get_module']={syn:'Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction.',lib:'network.get_module()',pro:'def get_module()',cmt:'<p>Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction. Si la fonction ne peut \xEAtre trouv\xE9e sur aucun module, l\x27instance de <tt>YModule</tt> retourn\xE9e ne sera pas joignable.</p>',ret:'une instance de <tt>YModule</tt>'};
+doc['Network']['get_ntpServer']={syn:'Retourne l\x27adresse IP du serveur de NTP \xE0 utiliser pour maintenir le module \xE0 l\x27heure.',lib:'network.get_ntpServer()',pro:'def get_ntpServer()',cmt:'<p>Retourne l\x27adresse IP du serveur de NTP \xE0 utiliser pour maintenir le module \xE0 l\x27heure.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant l\x27adresse IP du serveur de NTP \xE0 utiliser pour maintenir le module \xE0 l\x27heure',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_NTPSERVER_INVALID</tt>.'};
+doc['Network']['get_poeCurrent']={syn:'Retourne le courant consomm\xE9 par le module depuis Power-over-Ethernet (PoE), en milliamp\xE8res.',lib:'network.get_poeCurrent()',pro:'def get_poeCurrent()',cmt:'<p>Retourne le courant consomm\xE9 par le module depuis Power-over-Ethernet (PoE), en milliamp\xE8res. La consommation est mesur\xE9e apr\xE8s conversion en 5 Volt, et ne doit jamais d\xE9passer 1800 mA.</p>',ret:'un entier repr&eacute;sentant le courant consomm\xE9 par le module depuis Power-over-Ethernet (PoE), en milliamp\xE8res',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_POECURRENT_INVALID</tt>.'};
+doc['Network']['get_primaryDNS']={syn:'Retourne l\x27adresse IP du serveur de noms primaire que le module doit utiliser.',lib:'network.get_primaryDNS()',pro:'def get_primaryDNS()',cmt:'<p>Retourne l\x27adresse IP du serveur de noms primaire que le module doit utiliser.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant l\x27adresse IP du serveur de noms primaire que le module doit utiliser',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_PRIMARYDNS_INVALID</tt>.'};
+doc['Network']['get_readiness']={syn:'Retourne l\x27\xE9tat de fonctionnement atteint par l\x27interface r\xE9seau.',lib:'network.get_readiness()',pro:'def get_readiness()',cmt:'<p>Retourne l\x27\xE9tat de fonctionnement atteint par l\x27interface r\xE9seau. Le niveau z\xE9ro (DOWN_0) signifie qu\x27aucun support r\xE9seau mat\xE9riel n\x27a \xE9t\xE9 d\xE9tect\xE9. Soit il n\x27y a pas de signal sur le cable r\xE9seau, soit le point d\x27acc\xE8s sans fil choisi n\x27est pas d\xE9tect\xE9. Le niveau 1 (LIVE_1) est atteint lorsque le r\xE9seau est d\xE9tect\xE9, mais n\x27est pas encore connect\xE9. Pour un r\xE9seau sans fil, cela confirme la l\x27existence du SSID configur\xE9. Le niveau 2 (LINK_2) est atteint lorsque le support mat\xE9riel du r\xE9seau est fonctionnel. Pour une connection r\xE9seau filaire, le niveau 2 signifie que le cable est connect\xE9 aux deux bouts. Pour une connection \xE0 un point d\x27acc\xE8s r\xE9seau sans fil, il d\xE9montre que les param\xE8tres de s\xE9curit\xE9s configur\xE9s sont corrects. Pour une connection sans fil en mode ad-hoc, cela signifie qu\x27il y a au moins un partenaire sur le r\xE9seau ad-hoc. Le niveau 3 (DHCP_3) est atteint lorsque qu\x27une adresse IP a \xE9t\xE9 obtenue par DHCP. Le niveau 4 (DNS_4) est atteint lorsqu\x27un serveur DNS est joignable par le r\xE9seau. Le niveau 5 (WWW_5) est atteint lorsque la connectivit\xE9 globale \xE0 internet est av\xE9r\xE9e par l\x27obtention de l\x27heure courante sur une serveur NTP.</p>',ret:'une valeur parmi <tt>Y_READINESS_DOWN</tt>, <tt>Y_READINESS_EXISTS</tt>, <tt>Y_READINESS_LINKED</tt>, <tt>Y_READINESS_LAN_OK</tt> et <tt>Y_READINESS_WWW_OK</tt> repr&eacute;sentant l\x27\xE9tat de fonctionnement atteint par l\x27interface r\xE9seau',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_READINESS_INVALID</tt>.'};
+doc['Network']['get_router']={syn:'Retourne l\x27adresse IP du routeur (passerelle) utilis\xE9 par le module (<i>default gateway</i>).',lib:'network.get_router()',pro:'def get_router()',cmt:'<p>Retourne l\x27adresse IP du routeur (passerelle) utilis\xE9 par le module (<i>default gateway</i>).</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant l\x27adresse IP du routeur (passerelle) utilis\xE9 par le module (<i>default gateway</i>)',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_ROUTER_INVALID</tt>.'};
+doc['Network']['get_secondaryDNS']={syn:'Retourne l\x27adresse IP du serveur de noms secondaire que le module doit utiliser.',lib:'network.get_secondaryDNS()',pro:'def get_secondaryDNS()',cmt:'<p>Retourne l\x27adresse IP du serveur de noms secondaire que le module doit utiliser.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant l\x27adresse IP du serveur de noms secondaire que le module doit utiliser',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_SECONDARYDNS_INVALID</tt>.'};
+doc['Network']['get_subnetMask']={syn:'Retourne le masque de sous-r\xE9seau utilis\xE9 par le module.',lib:'network.get_subnetMask()',pro:'def get_subnetMask()',cmt:'<p>Retourne le masque de sous-r\xE9seau utilis\xE9 par le module.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant le masque de sous-r\xE9seau utilis\xE9 par le module',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_SUBNETMASK_INVALID</tt>.'};
+doc['Network']['get_userData']={syn:'Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>.',lib:'network.get_userData()',pro:'def get_userData()',cmt:'<p>Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',ret:'l\x27objet stock\xE9 pr\xE9c\xE9demment par l\x27appelant.'};
+doc['Network']['get_userPassword']={syn:'Retourne une cha\xEEne de hash si un mot de passe a \xE9t\xE9 configur\xE9 pour l\x27utilisateur \x22user\x22, ou sinon une cha\xEEne vide.',lib:'network.get_userPassword()',pro:'def get_userPassword()',cmt:'<p>Retourne une cha\xEEne de hash si un mot de passe a \xE9t\xE9 configur\xE9 pour l\x27utilisateur \x22user\x22, ou sinon une cha\xEEne vide.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant une cha\xEEne de hash si un mot de passe a \xE9t\xE9 configur\xE9 pour l\x27utilisateur \x22user\x22, ou sinon une cha\xEEne vide',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_USERPASSWORD_INVALID</tt>.'};
+doc['Network']['get_wwwWatchdogDelay']={syn:'Retourne la dur\xE9e de perte de connection WWW tol\xE9r\xE9e (en secondes) avant de d\xE9clancher un red\xE9marrage automatique pour tenter de r\xE9cup\xE9rer la connectivit\xE9 Internet.',lib:'network.get_wwwWatchdogDelay()',pro:'def get_wwwWatchdogDelay()',cmt:'<p>Retourne la dur\xE9e de perte de connection WWW tol\xE9r\xE9e (en secondes) avant de d\xE9clancher un red\xE9marrage automatique pour tenter de r\xE9cup\xE9rer la connectivit\xE9 Internet. Une valeur nulle d\xE9sactive le red\xE9marrage automatique en cas de perte de connectivit\xE9 WWW.</p>',ret:'un entier repr&eacute;sentant la dur\xE9e de perte de connection WWW tol\xE9r\xE9e (en secondes) avant de d\xE9clancher un red\xE9marrage automatique pour tenter de r\xE9cup\xE9rer la connectivit\xE9 Internet',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_WWWWATCHDOGDELAY_INVALID</tt>.'};
+doc['Network']['isOnline']={syn:'V\xE9rifie si le module h\xE9bergeant l\x27interface r\xE9seau est joignable, sans d\xE9clencher d\x27erreur.',lib:'network.isOnline()',pro:'def isOnline()',cmt:'<p>V\xE9rifie si le module h\xE9bergeant l\x27interface r\xE9seau est joignable, sans d\xE9clencher d\x27erreur. Si les valeurs des attributs en cache de l\x27interface r\xE9seau sont valides au moment de l\x27appel, le module est consid\xE9r\xE9 joignable. Cette fonction ne cause en aucun cas d\x27exception, quelle que soit l\x27erreur qui pourrait se produire lors de la v\xE9rification de joignabilit\xE9.</p>',ret:'<tt>true</tt> si l\x27interface r\xE9seau est joignable, <tt>false</tt> sinon'};
+doc['Network']['load']={syn:'Met en cache les valeurs courantes de l\x27interface r\xE9seau, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e.',lib:'network.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Met en cache les valeurs courantes de l\x27interface r\xE9seau, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e. Par d\xE9faut, lorsqu\x27on acc\xE8de \xE0 un module, tous les attributs des fonctions du module sont automatiquement mises en cache pour la dur\xE9e standard (5 ms). Cette m\xE9thode peut \xEAtre utilis\xE9e pour marquer occasionellement les donn\xE9es cach\xE9es comme valides pour une plus longue p\xE9riode, par exemple dans le but de r\xE9duire le trafic r\xE9seau.</p>',par:{msValidity:'un entier correspondant \xE0 la dur\xE9e de validit\xE9 attribu\xE9e aux les param\xE8tres charg\xE9s, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Network']['loadAttribute']={syn:'Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.',lib:'network.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un cha\xEEne vide.'};
+doc['Network']['muteValueCallbacks']={syn:'D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'network.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Vous pouvez utiliser cette fonction pour \xE9conomiser la bande passante et le CPU sur les machines de faible puissance, ou pour \xE9viter le d\xE9clanchement de callbacks HTTP. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Network']['nextNetwork']={syn:'Continue l\x27\xE9num\xE9ration des interfaces r\xE9seau commenc\xE9e \xE0 l\x27aide de <tt>yFirstNetwork()</tt>.',lib:'network.nextNetwork()',pro:'def nextNetwork()',cmt:'<p>Continue l\x27\xE9num\xE9ration des interfaces r\xE9seau commenc\xE9e \xE0 l\x27aide de <tt>yFirstNetwork()</tt>.</p>',ret:'un pointeur sur un objet <tt>YNetwork</tt> accessible en ligne, ou <tt>null</tt> lorsque l\x27\xE9num\xE9ration est termin\xE9e.'};
+doc['Network']['ping']={syn:'Ping l\x27adresse choisie pour v\xE9rifier la connexion r\xE9seau.',lib:'network.ping()',pro:'def ping(<span id=pn>host</span>)',cmt:'<p>Ping l\x27adresse choisie pour v\xE9rifier la connexion r\xE9seau. Envoie quatre requ\xEAtes ICMP ECHO_REQUEST \xE0 la cible host depuis le module. Cette m\xE9thode retourne une cha\xEEne de caract\xE8res avec le r\xE9sultat des 4 requ\xEAtes ICMP ECHO_RESPONSE.</p>',par:{host:'le nom d\x27h\xF4te ou l\x27adresse IP de la cible'},ret:'une cha\xEEne de caract\xE8res contenant le r\xE9sultat du ping.'};
+doc['Network']['registerValueCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e.',lib:'network.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callback peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callback ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et la cha\xEEne de caract\xE8re d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['Network']['set_adminPassword']={syn:'Modifie le mot de passe pour l\x27utilisateur \x22admin\x22, qui devient alors instantan\xE9ment n\xE9cessaire pour toute alt\xE9ration de l\x27\xE9tat du module.',lib:'network.set_adminPassword()',pro:'def set_adminPassword(<span id=pn>newval</span>)',cmt:'<p>Modifie le mot de passe pour l\x27utilisateur \x22admin\x22, qui devient alors instantan\xE9ment n\xE9cessaire pour toute alt\xE9ration de l\x27\xE9tat du module. Si la valeur fournie est une cha\xEEne vide, plus aucun mot de passe n\x27est n\xE9cessaire. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant le mot de passe pour l\x27utilisateur \x22admin\x22, qui devient alors instantan\xE9ment n\xE9cessaire pour toute alt\xE9ration de l\x27\xE9tat du module'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Network']['set_callbackCredentials']={syn:'Modifie le laisser-passer pour se connecter \xE0 l\x27adresse de callback.',lib:'network.set_callbackCredentials()',pro:'def set_callbackCredentials(<span id=pn>newval</span>)',cmt:'<p>Modifie le laisser-passer pour se connecter \xE0 l\x27adresse de callback. Le laisser-passer doit \xEAtre fourni tel que retourn\xE9 par la fonction <tt>get_callbackCredentials</tt>, sous la forme <tt>username:hash</tt>. La valeur du hash d\xE9pend de la m\xE9thode d\x27autorisation impl\xE9ment\xE9e par le callback. Pour une autorisation de type Basic, le hash est le MD5 de la cha\xEEne <tt>username:password</tt>. Pour une autorisation de type Digest, le hash est le MD5 de la cha\xEEne <tt>username:realm:password</tt>. Pour une utilisation simplifi\xE9e, utilisez la fonction <tt>callbackLogin</tt>. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant le laisser-passer pour se connecter \xE0 l\x27adresse de callback'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Network']['set_callbackEncoding']={syn:'Modifie l\x27encodage \xE0 utiliser pour repr\xE9senter les valeurs notifi\xE9es par callback.',lib:'network.set_callbackEncoding()',pro:'def set_callbackEncoding(<span id=pn>newval</span>)',cmt:'<p>Modifie l\x27encodage \xE0 utiliser pour repr\xE9senter les valeurs notifi\xE9es par callback.</p>',par:{newval:'une valeur parmi <tt>Y_CALLBACKENCODING_FORM</tt>, <tt>Y_CALLBACKENCODING_JSON</tt>, <tt>Y_CALLBACKENCODING_JSON_ARRAY</tt>, <tt>Y_CALLBACKENCODING_CSV</tt>, <tt>Y_CALLBACKENCODING_YOCTO_API</tt>, <tt>Y_CALLBACKENCODING_JSON_NUM</tt>, <tt>Y_CALLBACKENCODING_EMONCMS</tt>, <tt>Y_CALLBACKENCODING_AZURE</tt>, <tt>Y_CALLBACKENCODING_INFLUXDB</tt> et <tt>Y_CALLBACKENCODING_MQTT</tt> repr&eacute;sentant l\x27encodage \xE0 utiliser pour repr\xE9senter les valeurs notifi\xE9es par callback'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Network']['set_callbackInitialDelay']={syn:'Modifie l\x27attente initiale avant la premi\xE8re notification par callback, en secondes.',lib:'network.set_callbackInitialDelay()',pro:'def set_callbackInitialDelay(<span id=pn>newval</span>)',cmt:'<p>Modifie l\x27attente initiale avant la premi\xE8re notification par callback, en secondes.</p>',par:{newval:'un entier repr&eacute;sentant l\x27attente initiale avant la premi\xE8re notification par callback, en secondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Network']['set_callbackMaxDelay']={syn:'Modifie l\x27attente maximale entre deux notifications par callback, en secondes.',lib:'network.set_callbackMaxDelay()',pro:'def set_callbackMaxDelay(<span id=pn>newval</span>)',cmt:'<p>Modifie l\x27attente maximale entre deux notifications par callback, en secondes.</p>',par:{newval:'un entier repr&eacute;sentant l\x27attente maximale entre deux notifications par callback, en secondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Network']['set_callbackMethod']={syn:'Modifie la m\xE9thode HTTP \xE0 utiliser pour signaler les changements d\x27\xE9tat par callback.',lib:'network.set_callbackMethod()',pro:'def set_callbackMethod(<span id=pn>newval</span>)',cmt:'<p>Modifie la m\xE9thode HTTP \xE0 utiliser pour signaler les changements d\x27\xE9tat par callback.</p>',par:{newval:'une valeur parmi <tt>Y_CALLBACKMETHOD_POST</tt>, <tt>Y_CALLBACKMETHOD_GET</tt> et <tt>Y_CALLBACKMETHOD_PUT</tt> repr&eacute;sentant la m\xE9thode HTTP \xE0 utiliser pour signaler les changements d\x27\xE9tat par callback'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Network']['set_callbackMinDelay']={syn:'Modifie l\x27attente minimale entre deux notifications par callback, en secondes.',lib:'network.set_callbackMinDelay()',pro:'def set_callbackMinDelay(<span id=pn>newval</span>)',cmt:'<p>Modifie l\x27attente minimale entre deux notifications par callback, en secondes.</p>',par:{newval:'un entier repr&eacute;sentant l\x27attente minimale entre deux notifications par callback, en secondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Network']['set_callbackUrl']={syn:'Modifie l\x27adresse (URL) de callback \xE0 notifier lors de changement d\x27\xE9tat significatifs.',lib:'network.set_callbackUrl()',pro:'def set_callbackUrl(<span id=pn>newval</span>)',cmt:'<p>Modifie l\x27adresse (URL) de callback \xE0 notifier lors de changement d\x27\xE9tat significatifs. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant l\x27adresse (URL) de callback \xE0 notifier lors de changement d\x27\xE9tat significatifs'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Network']['set_defaultPage']={syn:'Modifie la page HTML par d\xE9faut du hub.',lib:'network.set_defaultPage()',pro:'def set_defaultPage(<span id=pn>newval</span>)',cmt:'<p>Modifie la page HTML par d\xE9faut du hub. Si aucune valeur n\x27est attribu\xE9e le hub retourne index.html qui est l\x27interface web du hub. Il est possible de changer cet page pour un fichier qui a \xE9t\xE9 upload\xE9 sur le hub.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la page HTML par d\xE9faut du hub'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Network']['set_discoverable']={syn:'Modifie l\x27\xE9tat d\x27activation du protocole d\x27annonce sur le r\xE9seau permettant de retrouver facilement le module (protocols uPnP/Bonjour).',lib:'network.set_discoverable()',pro:'def set_discoverable(<span id=pn>newval</span>)',cmt:'<p>Modifie l\x27\xE9tat d\x27activation du protocole d\x27annonce sur le r\xE9seau permettant de retrouver facilement le module (protocols uPnP/Bonjour).</p>',par:{newval:'soit <tt>Y_DISCOVERABLE_FALSE</tt>, soit <tt>Y_DISCOVERABLE_TRUE</tt>, selon l\x27\xE9tat d\x27activation du protocole d\x27annonce sur le r\xE9seau permettant de retrouver facilement le module (protocols uPnP/Bonjour)'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Network']['set_httpPort']={syn:'Modifie la page HTML par d\xE9faut du hub.',lib:'network.set_httpPort()',pro:'def set_httpPort(<span id=pn>newval</span>)',cmt:'<p>Modifie la page HTML par d\xE9faut du hub. Si aucune valeur n\x27est attribu\xE9e le hub retourne index.html qui est l\x27interface web du hub. Il est possible de changer cet page pour un fichier qui a \xE9t\xE9 upload\xE9 sur le hub.</p>',par:{newval:'un entier repr&eacute;sentant la page HTML par d\xE9faut du hub'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Network']['set_logicalName']={syn:'Modifie le nom logique de l\x27interface r\xE9seau.',lib:'network.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Modifie le nom logique de l\x27interface r\xE9seau. Vous pouvez utiliser <tt>yCheckLogicalName()</tt> pour v\xE9rifier si votre param\xE8tre est valide. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique de l\x27interface r\xE9seau.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27appel se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Network']['set_ntpServer']={syn:'Modifie l\x27adresse IP du serveur NTP que le module doit utiliser.',lib:'network.set_ntpServer()',pro:'def set_ntpServer(<span id=pn>newval</span>)',cmt:'<p>Modifie l\x27adresse IP du serveur NTP que le module doit utiliser. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> et de red\xE9marrer le module pour que le param\xE8tre soit appliqu\xE9.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant l\x27adresse IP du serveur NTP que le module doit utiliser'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Network']['set_primaryDNS']={syn:'Modifie l\x27adresse IP du serveur de noms primaire que le module doit utiliser.',lib:'network.set_primaryDNS()',pro:'def set_primaryDNS(<span id=pn>newval</span>)',cmt:'<p>Modifie l\x27adresse IP du serveur de noms primaire que le module doit utiliser. En mode DHCP, si une valeur est sp\xE9cifi\xE9e, elle remplacera celle re\xE7ue du serveur DHCP. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> et de red\xE9marrer le module pour que le param\xE8tre soit appliqu\xE9.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant l\x27adresse IP du serveur de noms primaire que le module doit utiliser'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Network']['set_secondaryDNS']={syn:'Modifie l\x27adresse IP du serveur de nom secondaire que le module doit utiliser.',lib:'network.set_secondaryDNS()',pro:'def set_secondaryDNS(<span id=pn>newval</span>)',cmt:'<p>Modifie l\x27adresse IP du serveur de nom secondaire que le module doit utiliser. En mode DHCP, si une valeur est sp\xE9cifi\xE9e, elle remplacera celle re\xE7ue du serveur DHCP. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> et de red\xE9marrer le module pour que le param\xE8tre soit appliqu\xE9.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant l\x27adresse IP du serveur de nom secondaire que le module doit utiliser'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Network']['set_userData']={syn:'Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>.',lib:'network.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',par:{data:'objet quelconque \xE0 m\xE9moriser'}};
+doc['Network']['set_userPassword']={syn:'Modifie le mode de passe pour l\x27utilisateur \x22user\x22, qui devient alors instantan\xE9ment n\xE9cessaire pour tout acc\xE8s au module.',lib:'network.set_userPassword()',pro:'def set_userPassword(<span id=pn>newval</span>)',cmt:'<p>Modifie le mode de passe pour l\x27utilisateur \x22user\x22, qui devient alors instantan\xE9ment n\xE9cessaire pour tout acc\xE8s au module. Si la valeur fournie est une cha\xEEne vide, plus aucun mot de passe n\x27est n\xE9cessaire. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant le mode de passe pour l\x27utilisateur \x22user\x22, qui devient alors instantan\xE9ment n\xE9cessaire pour tout acc\xE8s au module'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Network']['set_wwwWatchdogDelay']={syn:'Modifie la dur\xE9e de perte de connection WWW tol\xE9r\xE9e (en secondes) avant de d\xE9clancher un red\xE9marrage automatique pour tenter de r\xE9cup\xE9rer la connectivit\xE9 Internet.',lib:'network.set_wwwWatchdogDelay()',pro:'def set_wwwWatchdogDelay(<span id=pn>newval</span>)',cmt:'<p>Modifie la dur\xE9e de perte de connection WWW tol\xE9r\xE9e (en secondes) avant de d\xE9clancher un red\xE9marrage automatique pour tenter de r\xE9cup\xE9rer la connectivit\xE9 Internet. Une valeur nulle d\xE9sactive le red\xE9marrage automatique en cas de perte de connectivit\xE9 WWW. La plus petite dur\xE9e non-nulle utilisable est 90 secondes.</p>',par:{newval:'un entier repr&eacute;sentant la dur\xE9e de perte de connection WWW tol\xE9r\xE9e (en secondes) avant de d\xE9clancher un red\xE9marrage automatique pour tenter de r\xE9cup\xE9rer la connectivit\xE9 Internet'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Network']['triggerCallback']={syn:'D\xE9clenche un callback HTTP rapidement.',lib:'network.triggerCallback()',pro:'def triggerCallback()',cmt:'<p>D\xE9clenche un callback HTTP rapidement. Cette fonction peut m\xEAme \xEAtre appell\xE9e \xE0 l\x27int\xE9rieur d\x27un callback HTTP, dans quel cas le callback HTTP suivant sera appel\xE9 5 secondes apr\xE8s la fin du callback courant, ind\xE9pendamment de l\x27intervalle minimal configur\xE9 dans le module.</p>',ret:'une cha\xEEne de caract\xE8res contenant le r\xE9sultat du ping.'};
+doc['Network']['unmuteValueCallbacks']={syn:'R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'network.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Cette fonction annule un pr\xE9c\xE9dent appel \xE0 <tt>muteValueCallbacks()</tt>. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Network']['useDHCP']={syn:'Modifie la configuration de l\x27interface r\xE9seau pour utiliser une adresse assign\xE9e automatiquement par le serveur DHCP.',lib:'network.useDHCP()',pro:'def useDHCP(<span id=pn>fallbackIpAddr</span>, <span id=pn>fallbackSubnetMaskLen</span>, <span id=pn>fallbackRouter</span>)',cmt:'<p>Modifie la configuration de l\x27interface r\xE9seau pour utiliser une adresse assign\xE9e automatiquement par le serveur DHCP. En attendant qu\x27une adresse soit re\xE7ue (et ind\xE9finiment si aucun serveur DHCP ne r\xE9pond), le module utilisera les param\xE8tres IP sp\xE9cifi\xE9s \xE0 cette fonction. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> et de red\xE9marrer le module pour que le param\xE8tre soit appliqu\xE9.</p>',par:{fallbackIpAddr:'adresse IP \xE0 utiliser si aucun serveur DHCP ne r\xE9pond',fallbackSubnetMaskLen:'longueur du masque de sous-r\xE9seau \xE0 utiliser si aucun serveur DHCP ne r\xE9pond. Par exemple, la valeur 24 repr\xE9sente 255.255.255.0.',fallbackRouter:'adresse de la passerelle \xE0 utiliser si aucun serveur DHCP ne r\xE9pond'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Network']['useStaticIP']={syn:'Modifie la configuration de l\x27interface r\xE9seau pour utiliser une adresse IP assign\xE9e manuellement (adresse IP statique).',lib:'network.useStaticIP()',pro:'def useStaticIP(<span id=pn>ipAddress</span>, <span id=pn>subnetMaskLen</span>, <span id=pn>router</span>)',cmt:'<p>Modifie la configuration de l\x27interface r\xE9seau pour utiliser une adresse IP assign\xE9e manuellement (adresse IP statique). N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> et de red\xE9marrer le module pour que le param\xE8tre soit appliqu\xE9.</p>',par:{ipAddress:'adresse IP \xE0 utiliser par le module',subnetMaskLen:'longueur du masque de sous-r\xE9seau \xE0 utiliser. Par exemple, la valeur 24 repr\xE9sente 255.255.255.0.',router:'adresse IP de la passerelle \xE0 utiliser (\x22default gateway\x22)'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+//--- (end of generated code: Network)
+//--- (generated code: Wireless)
+doc['Wireless']={'':{syn:'Interface de la fonction Wireless',inc:'from yocto_wireless import *',cmt:'<p>La fonction YWireless permet de configurer et de contr\xF4ler la configuration du r\xE9seau sans fil sur les modules Yoctopuce qui en sont dot\xE9s.</p>'}};
+doc['Wireless']['FindWireless']={syn:'Permet de retrouver une interface r\xE9seau sans fil d\x27apr\xE8s un identifiant donn\xE9.',lib:'YWireless.FindWireless()',pro:'def FindWireless(<span id=pn>func</span>)',cmt:'<p>Permet de retrouver une interface r\xE9seau sans fil d\x27apr\xE8s un identifiant donn\xE9. L\x27identifiant peut \xEAtre sp\xE9cifi\xE9 sous plusieurs formes:<br> <ul> <li>NomLogiqueFonction</li> <li>NoSerieModule.IdentifiantFonction</li> <li>NoSerieModule.NomLogiqueFonction</li> <li>NomLogiqueModule.IdentifiantMat\xE9riel</li> <li>NomLogiqueModule.NomLogiqueFonction</li> </ul></p><p> Cette fonction n\x27exige pas que l\x27interface r\xE9seau sans fil soit en ligne au moment ou elle est appel\xE9e, l\x27objet retourn\xE9 sera n\xE9anmoins valide. Utiliser la m\xE9thode <tt>YWireless.isOnline()</tt> pour tester si l\x27interface r\xE9seau sans fil est utilisable \xE0 un moment donn\xE9. En cas d\x27ambigu\xEFt\xE9 lorsqu\x27on fait une recherche par nom logique, aucune erreur ne sera notifi\xE9e: la premi\xE8re instance trouv\xE9e sera renvoy\xE9e. La recherche se fait d\x27abord par nom mat\xE9riel, puis par nom logique.</p>',par:{func:'une cha\xEEne de caract\xE8res qui r\xE9f\xE9rence l\x27interface r\xE9seau sans fil sans ambigu\xEFt\xE9'},ret:'un objet de classe <tt>YWireless</tt> qui permet ensuite de contr\xF4ler l\x27interface r\xE9seau sans fil.'};
+doc['Wireless']['FirstWireless']={syn:'Commence l\x27\xE9num\xE9ration des interfaces r\xE9seau sans fil accessibles par la librairie.',lib:'YWireless.FirstWireless()',pro:'def FirstWireless()',cmt:'<p>Commence l\x27\xE9num\xE9ration des interfaces r\xE9seau sans fil accessibles par la librairie. Utiliser la fonction <tt>YWireless.nextWireless()</tt> pour it\xE9rer sur les autres interfaces r\xE9seau sans fil.</p>',ret:'un pointeur sur un objet <tt>YWireless</tt>, correspondant \xE0 la premi\xE8re interface r\xE9seau sans fil accessible en ligne, ou <tt>null</tt> si il n\x27y a pas de interfaces r\xE9seau sans fil disponibles.'};
+doc['Wireless']['adhocNetwork']={syn:'Modifie la configuration de l\x27interface r\xE9seau sans fil pour cr\xE9er un r\xE9seau sans fil sans point d\x27acc\xE8s, en mode \x22ad-hoc\x22.',lib:'wireless.adhocNetwork()',pro:'def adhocNetwork(<span id=pn>ssid</span>, <span id=pn>securityKey</span>)',cmt:'<p>Modifie la configuration de l\x27interface r\xE9seau sans fil pour cr\xE9er un r\xE9seau sans fil sans point d\x27acc\xE8s, en mode \x22ad-hoc\x22. Sur le YoctoHub-Wireless-g, il est recommand\xE9 d\x27utiliser de pr\xE9f\xE9rence la fonction softAPNetwork() qui cr\xE9e un pseudo point d\x27acc\xE8s, plus efficace et mieux support\xE9 qu\x27un r\xE9seau ad-hoc.</p><p> Si une clef d\x27acc\xE8s est configur\xE9e pour un r\xE9seau ad-hoc, le r\xE9seau sera prot\xE9g\xE9 par une s\xE9curit\xE9 WEP40 (5 caract\xE8res ou 10 chiffres hexad\xE9cimaux) ou WEP128 (13 caract\xE8res ou 26 chiffres hexad\xE9cimaux). Pour r\xE9duire les risques d\x27intrusion, il est recommand\xE9 d\x27utiliser une cl\xE9 WEP128 bas\xE9e sur 26 chiffres hexad\xE9cimaux provenant d\x27une bonne source al\xE9atoire.</p><p> N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> et de red\xE9marrer le module pour que le param\xE8tre soit appliqu\xE9.</p>',par:{ssid:'nom du r\xE9seau sans fil \xE0 cr\xE9er',securityKey:'cl\xE9 d\x27acc\xE8s de r\xE9seau, sous forme de cha\xEEne de caract\xE8res'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Wireless']['clearCache']={syn:'Invalide le cache.',lib:'wireless.clearCache()',pro:'def clearCache()',cmt:'<p>Invalide le cache. Invalide le cache des valeurs courantes de l\x27interface r\xE9seau sans fil. Force le prochain appel \xE0 une m\xE9thode get_xxx() ou loadxxx() pour charger les les donn\xE9es depuis le module.</p>'};
+doc['Wireless']['describe']={syn:'Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance de l\x27interface r\xE9seau sans fil au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'wireless.describe()',pro:'def describe()',cmt:'<p>Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance de l\x27interface r\xE9seau sans fil au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. Plus pr\xE9cis\xE9ment, <tt>TYPE</tt> correspond au type de fonction, <tt>NAME</tt> correspond au nom utils\xE9 lors du premier acc\xE8s a la fonction, <tt>SERIAL</tt> correspond au num\xE9ro de s\xE9rie du module si le module est connect\xE9, ou <tt>\x22unresolved\x22</tt> sinon, et <tt>FUNCTIONID</tt> correspond \xE0 l\x27identifiant mat\xE9riel de la fonction si le module est connect\xE9. Par exemple, La methode va retourner <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> si le module est d\xE9j\xE0 connect\xE9 ou <tt>Relay(BadCustomeName.relay1)=unresolved</tt> si le module n\x27est pas d\xE9j\xE0 connect\xE9. Cette methode ne declenche aucune transaction USB ou TCP et peut donc \xEAtre utilis\xE9 dans un debuggeur.</p>',ret:'une cha\xEEne de caract\xE8res d\xE9crivant l\x27interface r\xE9seau sans fil (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['Wireless']['get_advertisedValue']={syn:'Retourne la valeur courante de l\x27interface r\xE9seau sans fil (pas plus de 6 caract\xE8res).',lib:'wireless.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Retourne la valeur courante de l\x27interface r\xE9seau sans fil (pas plus de 6 caract\xE8res).</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur courante de l\x27interface r\xE9seau sans fil (pas plus de 6 caract\xE8res).',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['Wireless']['get_channel']={syn:'Retourne le num\xE9ro du canal 802.11 utilis\xE9, ou 0 si le r\xE9seau s\xE9lectionn\xE9 n\x27a pas \xE9t\xE9 trouv\xE9.',lib:'wireless.get_channel()',pro:'def get_channel()',cmt:'<p>Retourne le num\xE9ro du canal 802.11 utilis\xE9, ou 0 si le r\xE9seau s\xE9lectionn\xE9 n\x27a pas \xE9t\xE9 trouv\xE9.</p>',ret:'un entier repr&eacute;sentant le num\xE9ro du canal 802.11 utilis\xE9, ou 0 si le r\xE9seau s\xE9lectionn\xE9 n\x27a pas \xE9t\xE9 trouv\xE9',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_CHANNEL_INVALID</tt>.'};
+doc['Wireless']['get_detectedWlans']={syn:'Retourne une liste d\x27objets objet YFileRecord qui d\xE9crivent les r\xE9seaux sans fils d\xE9tect\xE9s.',lib:'wireless.get_detectedWlans()',pro:'def get_detectedWlans()',cmt:'<p>Retourne une liste d\x27objets objet YFileRecord qui d\xE9crivent les r\xE9seaux sans fils d\xE9tect\xE9s. La liste n\x27est pas mise \xE0 jour quand le module est d\xE9j\xE0 connect\xE9 \xE0 un acc\xE8s sans fil (mode \x22infrastructure\x22). Pour forcer la d\xE9tection des r\xE9seaux sans fil, il faut appeler <tt>addhocNetwork()</tt> pour se d\xE9connecter du r\xE9seau actuel. L\x27appelant est responsable de la d\xE9sallocation de la liste retourn\xE9e.</p>',ret:'une liste d\x27objets <tt>YWlanRecord</tt>, contenant le SSID, le canal, la qualit\xE9 du signal, et l\x27algorithme de s\xE9curit\xE9 utilis\xE9 par le r\xE9seau sans-fil',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne une liste vide.'};
+doc['Wireless']['get_errorMessage']={syn:'Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de l\x27interface r\xE9seau sans fil.',lib:'wireless.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de l\x27interface r\xE9seau sans fil. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'une cha\xEEne de caract\xE8res correspondant au message de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation de l\x27interface r\xE9seau sans fil.'};
+doc['Wireless']['get_errorType']={syn:'Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de l\x27interface r\xE9seau sans fil.',lib:'wireless.get_errorType()',pro:'def get_errorType()',cmt:'<p>Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de l\x27interface r\xE9seau sans fil. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'un nombre correspondant au code de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation de l\x27interface r\xE9seau sans fil.'};
+doc['Wireless']['get_friendlyName']={syn:'Retourne un identifiant global de l\x27interface r\xE9seau sans fil au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>.',lib:'wireless.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Retourne un identifiant global de l\x27interface r\xE9seau sans fil au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>. Le cha\xEEne retourn\xE9e utilise soit les noms logiques du module et de l\x27interface r\xE9seau sans fil si ils sont d\xE9finis, soit respectivement le num\xE9ro de s\xE9rie du module et l\x27identifant mat\xE9riel de l\x27interface r\xE9seau sans fil (par exemple: <tt>MyCustomName.relay1</tt>)</p>',ret:'une cha\xEEne de caract\xE8res identifiant l\x27interface r\xE9seau sans fil en utilisant les noms logiques (ex: <tt>MyCustomName.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['Wireless']['get_functionDescriptor']={syn:'Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction.',lib:'wireless.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction. Cet identifiant peut \xEAtre utilis\xE9 pour tester si deux instance de <tt>YFunction</tt> r\xE9f\xE9rencent physiquement la m\xEAme fonction sur le m\xEAme module.</p>',ret:'un identifiant de type <tt>YFUN_DESCR</tt>.',ext:'Si la fonction n\x27a jamais \xE9t\xE9 contact\xE9e, la valeur retourn\xE9e sera <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>'};
+doc['Wireless']['get_functionId']={syn:'Retourne l\x27identifiant mat\xE9riel de l\x27interface r\xE9seau sans fil, sans r\xE9f\xE9rence au module.',lib:'wireless.get_functionId()',pro:'def get_functionId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel de l\x27interface r\xE9seau sans fil, sans r\xE9f\xE9rence au module. Par example <tt>relay1</tt>.</p>',ret:'une cha\xEEne de caract\xE8res identifiant l\x27interface r\xE9seau sans fil (ex: <tt>relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['Wireless']['get_hardwareId']={syn:'Retourne l\x27identifiant mat\xE9riel unique de l\x27interface r\xE9seau sans fil au format <tt>SERIAL.FUNCTIONID</tt>.',lib:'wireless.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel unique de l\x27interface r\xE9seau sans fil au format <tt>SERIAL.FUNCTIONID</tt>. L\x27identifiant unique est compos\xE9 du num\xE9ro de s\xE9rie du module et de l\x27identifiant mat\xE9riel de l\x27interface r\xE9seau sans fil (par example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'une cha\xEEne de caract\xE8res identifiant l\x27interface r\xE9seau sans fil (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['Wireless']['get_linkQuality']={syn:'Retourne la qualit\xE9 de la connection, exprim\xE9e en pourcents.',lib:'wireless.get_linkQuality()',pro:'def get_linkQuality()',cmt:'<p>Retourne la qualit\xE9 de la connection, exprim\xE9e en pourcents.</p>',ret:'un entier repr&eacute;sentant la qualit\xE9 de la connection, exprim\xE9e en pourcents',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_LINKQUALITY_INVALID</tt>.'};
+doc['Wireless']['get_logicalName']={syn:'Retourne le nom logique de l\x27interface r\xE9seau sans fil.',lib:'wireless.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Retourne le nom logique de l\x27interface r\xE9seau sans fil.</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique de l\x27interface r\xE9seau sans fil.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['Wireless']['get_message']={syn:'Retourne le dernier message de diagnostique de l\x27interface au r\xE9seau sans fil.',lib:'wireless.get_message()',pro:'def get_message()',cmt:'<p>Retourne le dernier message de diagnostique de l\x27interface au r\xE9seau sans fil.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant le dernier message de diagnostique de l\x27interface au r\xE9seau sans fil',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_MESSAGE_INVALID</tt>.'};
+doc['Wireless']['get_module']={syn:'Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction.',lib:'wireless.get_module()',pro:'def get_module()',cmt:'<p>Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction. Si la fonction ne peut \xEAtre trouv\xE9e sur aucun module, l\x27instance de <tt>YModule</tt> retourn\xE9e ne sera pas joignable.</p>',ret:'une instance de <tt>YModule</tt>'};
+doc['Wireless']['get_security']={syn:'Retourne l\x27algorithme de s\xE9curit\xE9 utilis\xE9 par le r\xE9seau sans-fil s\xE9lectionn\xE9.',lib:'wireless.get_security()',pro:'def get_security()',cmt:'<p>Retourne l\x27algorithme de s\xE9curit\xE9 utilis\xE9 par le r\xE9seau sans-fil s\xE9lectionn\xE9.</p>',ret:'une valeur parmi <tt>Y_SECURITY_UNKNOWN</tt>, <tt>Y_SECURITY_OPEN</tt>, <tt>Y_SECURITY_WEP</tt>, <tt>Y_SECURITY_WPA</tt> et <tt>Y_SECURITY_WPA2</tt> repr&eacute;sentant l\x27algorithme de s\xE9curit\xE9 utilis\xE9 par le r\xE9seau sans-fil s\xE9lectionn\xE9',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_SECURITY_INVALID</tt>.'};
+doc['Wireless']['get_ssid']={syn:'Retourne le nom (SSID) du r\xE9seau sans-fil s\xE9lectionn\xE9.',lib:'wireless.get_ssid()',pro:'def get_ssid()',cmt:'<p>Retourne le nom (SSID) du r\xE9seau sans-fil s\xE9lectionn\xE9.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant le nom (SSID) du r\xE9seau sans-fil s\xE9lectionn\xE9',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_SSID_INVALID</tt>.'};
+doc['Wireless']['get_userData']={syn:'Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>.',lib:'wireless.get_userData()',pro:'def get_userData()',cmt:'<p>Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',ret:'l\x27objet stock\xE9 pr\xE9c\xE9demment par l\x27appelant.'};
+doc['Wireless']['isOnline']={syn:'V\xE9rifie si le module h\xE9bergeant l\x27interface r\xE9seau sans fil est joignable, sans d\xE9clencher d\x27erreur.',lib:'wireless.isOnline()',pro:'def isOnline()',cmt:'<p>V\xE9rifie si le module h\xE9bergeant l\x27interface r\xE9seau sans fil est joignable, sans d\xE9clencher d\x27erreur. Si les valeurs des attributs en cache de l\x27interface r\xE9seau sans fil sont valides au moment de l\x27appel, le module est consid\xE9r\xE9 joignable. Cette fonction ne cause en aucun cas d\x27exception, quelle que soit l\x27erreur qui pourrait se produire lors de la v\xE9rification de joignabilit\xE9.</p>',ret:'<tt>true</tt> si l\x27interface r\xE9seau sans fil est joignable, <tt>false</tt> sinon'};
+doc['Wireless']['joinNetwork']={syn:'Modifie la configuration de l\x27interface r\xE9seau sans fil pour se connecter \xE0 un point d\x27acc\xE8s sans fil existant (mode \x22infrastructure\x22).',lib:'wireless.joinNetwork()',pro:'def joinNetwork(<span id=pn>ssid</span>, <span id=pn>securityKey</span>)',cmt:'<p>Modifie la configuration de l\x27interface r\xE9seau sans fil pour se connecter \xE0 un point d\x27acc\xE8s sans fil existant (mode \x22infrastructure\x22). N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> et de red\xE9marrer le module pour que le param\xE8tre soit appliqu\xE9.</p>',par:{ssid:'nom du r\xE9seau sans fil \xE0 utiliser',securityKey:'cl\xE9 d\x27acc\xE8s au r\xE9seau, sous forme de cha\xEEne de caract\xE8res'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Wireless']['load']={syn:'Met en cache les valeurs courantes de l\x27interface r\xE9seau sans fil, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e.',lib:'wireless.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Met en cache les valeurs courantes de l\x27interface r\xE9seau sans fil, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e. Par d\xE9faut, lorsqu\x27on acc\xE8de \xE0 un module, tous les attributs des fonctions du module sont automatiquement mises en cache pour la dur\xE9e standard (5 ms). Cette m\xE9thode peut \xEAtre utilis\xE9e pour marquer occasionellement les donn\xE9es cach\xE9es comme valides pour une plus longue p\xE9riode, par exemple dans le but de r\xE9duire le trafic r\xE9seau.</p>',par:{msValidity:'un entier correspondant \xE0 la dur\xE9e de validit\xE9 attribu\xE9e aux les param\xE8tres charg\xE9s, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Wireless']['loadAttribute']={syn:'Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.',lib:'wireless.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un cha\xEEne vide.'};
+doc['Wireless']['muteValueCallbacks']={syn:'D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'wireless.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Vous pouvez utiliser cette fonction pour \xE9conomiser la bande passante et le CPU sur les machines de faible puissance, ou pour \xE9viter le d\xE9clanchement de callbacks HTTP. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Wireless']['nextWireless']={syn:'Continue l\x27\xE9num\xE9ration des interfaces r\xE9seau sans fil commenc\xE9e \xE0 l\x27aide de <tt>yFirstWireless()</tt>.',lib:'wireless.nextWireless()',pro:'def nextWireless()',cmt:'<p>Continue l\x27\xE9num\xE9ration des interfaces r\xE9seau sans fil commenc\xE9e \xE0 l\x27aide de <tt>yFirstWireless()</tt>.</p>',ret:'un pointeur sur un objet <tt>YWireless</tt> accessible en ligne, ou <tt>null</tt> lorsque l\x27\xE9num\xE9ration est termin\xE9e.'};
+doc['Wireless']['registerValueCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e.',lib:'wireless.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callback peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callback ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et la cha\xEEne de caract\xE8re d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['Wireless']['set_logicalName']={syn:'Modifie le nom logique de l\x27interface r\xE9seau sans fil.',lib:'wireless.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Modifie le nom logique de l\x27interface r\xE9seau sans fil. Vous pouvez utiliser <tt>yCheckLogicalName()</tt> pour v\xE9rifier si votre param\xE8tre est valide. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique de l\x27interface r\xE9seau sans fil.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27appel se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Wireless']['set_userData']={syn:'Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>.',lib:'wireless.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',par:{data:'objet quelconque \xE0 m\xE9moriser'}};
+doc['Wireless']['softAPNetwork']={syn:'Modifie la configuration de l\x27interface r\xE9seau sans fil pour cr\xE9er un pseudo point d\x27acc\xE8s sans fil (\x22Soft AP\x22).',lib:'wireless.softAPNetwork()',pro:'def softAPNetwork(<span id=pn>ssid</span>, <span id=pn>securityKey</span>)',cmt:'<p>Modifie la configuration de l\x27interface r\xE9seau sans fil pour cr\xE9er un pseudo point d\x27acc\xE8s sans fil (\x22Soft AP\x22). Cette fonction ne fonctionne que sur le YoctoHub-Wireless-g.</p><p> Si une clef d\x27acc\xE8s est configur\xE9e pour un r\xE9seau SoftAP, le r\xE9seau sera prot\xE9g\xE9 par une s\xE9curit\xE9 WEP40 (5 caract\xE8res ou 10 chiffres hexad\xE9cimaux) ou WEP128 (13 caract\xE8res ou 26 chiffres hexad\xE9cimaux). Pour r\xE9duire les risques d\x27intrusion, il est recommand\xE9 d\x27utiliser une cl\xE9 WEP128 bas\xE9e sur 26 chiffres hexad\xE9cimaux provenant d\x27une bonne source al\xE9atoire.</p><p> N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> et de red\xE9marrer le module pour que le param\xE8tre soit appliqu\xE9.</p>',par:{ssid:'nom du r\xE9seau sans fil \xE0 cr\xE9er',securityKey:'cl\xE9 d\x27acc\xE8s de r\xE9seau, sous forme de cha\xEEne de caract\xE8res'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Wireless']['unmuteValueCallbacks']={syn:'R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'wireless.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Cette fonction annule un pr\xE9c\xE9dent appel \xE0 <tt>muteValueCallbacks()</tt>. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+//--- (end of generated code: Wireless)
+//--- (generated code: Voc)
+doc['Voc']={'':{syn:'Interface de la fonction Voc',inc:'from yocto_voc import *',cmt:'<p>La classe YVoc permet de lire et de configurer les capteurs de composants organiques volatiles Yoctopuce. Elle h\xE9rite de la class YSensor toutes les fonctions de base des capteurs Yoctopuce: lecture de mesures, callbacks, enregistreur de donn\xE9es.</p>'}};
+doc['Voc']['FindVoc']={syn:'Permet de retrouver un capteur de Compos\xE9s Organiques Volatils d\x27apr\xE8s un identifiant donn\xE9.',lib:'YVoc.FindVoc()',pro:'def FindVoc(<span id=pn>func</span>)',cmt:'<p>Permet de retrouver un capteur de Compos\xE9s Organiques Volatils d\x27apr\xE8s un identifiant donn\xE9. L\x27identifiant peut \xEAtre sp\xE9cifi\xE9 sous plusieurs formes:<br> <ul> <li>NomLogiqueFonction</li> <li>NoSerieModule.IdentifiantFonction</li> <li>NoSerieModule.NomLogiqueFonction</li> <li>NomLogiqueModule.IdentifiantMat\xE9riel</li> <li>NomLogiqueModule.NomLogiqueFonction</li> </ul></p><p> Cette fonction n\x27exige pas que le capteur de Compos\xE9s Organiques Volatils soit en ligne au moment ou elle est appel\xE9e, l\x27objet retourn\xE9 sera n\xE9anmoins valide. Utiliser la m\xE9thode <tt>YVoc.isOnline()</tt> pour tester si le capteur de Compos\xE9s Organiques Volatils est utilisable \xE0 un moment donn\xE9. En cas d\x27ambigu\xEFt\xE9 lorsqu\x27on fait une recherche par nom logique, aucune erreur ne sera notifi\xE9e: la premi\xE8re instance trouv\xE9e sera renvoy\xE9e. La recherche se fait d\x27abord par nom mat\xE9riel, puis par nom logique.</p>',par:{func:'une cha\xEEne de caract\xE8res qui r\xE9f\xE9rence le capteur de Compos\xE9s Organiques Volatils sans ambigu\xEFt\xE9'},ret:'un objet de classe <tt>YVoc</tt> qui permet ensuite de contr\xF4ler le capteur de Compos\xE9s Organiques Volatils.'};
+doc['Voc']['FirstVoc']={syn:'Commence l\x27\xE9num\xE9ration des capteurs de Compos\xE9s Organiques Volatils accessibles par la librairie.',lib:'YVoc.FirstVoc()',pro:'def FirstVoc()',cmt:'<p>Commence l\x27\xE9num\xE9ration des capteurs de Compos\xE9s Organiques Volatils accessibles par la librairie. Utiliser la fonction <tt>YVoc.nextVoc()</tt> pour it\xE9rer sur les autres capteurs de Compos\xE9s Organiques Volatils.</p>',ret:'un pointeur sur un objet <tt>YVoc</tt>, correspondant au premier capteur de Compos\xE9s Organiques Volatils accessible en ligne, ou <tt>null</tt> si il n\x27y a pas de capteurs de Compos\xE9s Organiques Volatils disponibles.'};
+doc['Voc']['calibrateFromPoints']={syn:'Enregistre des points de correction de mesure, typiquement pour compenser l\x27effet d\x27un bo\xEEtier sur les mesures rendues par le capteur.',lib:'voc.calibrateFromPoints()',pro:'def calibrateFromPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Enregistre des points de correction de mesure, typiquement pour compenser l\x27effet d\x27un bo\xEEtier sur les mesures rendues par le capteur. Il est possible d\x27enregistrer jusqu\x27\xE0 cinq points de correction. Les points de correction doivent \xEAtre fournis en ordre croissant, et dans la plage valide du capteur. Le module effectue automatiquement une interpolation lin\xE9aire de l\x27erreur entre les points sp\xE9cifi\xE9s. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p><p> Pour plus de plus amples possibilit\xE9s d\x27appliquer une surcalibration aux capteurs, veuillez contacter support@yoctopuce.com.</p>',par:{rawValues:'tableau de nombres flottants, correspondant aux valeurs brutes rendues par le capteur pour les points de correction.',refValues:'tableau de nombres flottants, correspondant aux valeurs corrig\xE9es d\xE9sir\xE9es pour les points de correction.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Voc']['clearCache']={syn:'Invalide le cache.',lib:'voc.clearCache()',pro:'def clearCache()',cmt:'<p>Invalide le cache. Invalide le cache des valeurs courantes du capteur de Compos\xE9s Organiques Volatils. Force le prochain appel \xE0 une m\xE9thode get_xxx() ou loadxxx() pour charger les les donn\xE9es depuis le module.</p>'};
+doc['Voc']['describe']={syn:'Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du capteur de Compos\xE9s Organiques Volatils au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'voc.describe()',pro:'def describe()',cmt:'<p>Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du capteur de Compos\xE9s Organiques Volatils au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. Plus pr\xE9cis\xE9ment, <tt>TYPE</tt> correspond au type de fonction, <tt>NAME</tt> correspond au nom utils\xE9 lors du premier acc\xE8s a la fonction, <tt>SERIAL</tt> correspond au num\xE9ro de s\xE9rie du module si le module est connect\xE9, ou <tt>\x22unresolved\x22</tt> sinon, et <tt>FUNCTIONID</tt> correspond \xE0 l\x27identifiant mat\xE9riel de la fonction si le module est connect\xE9. Par exemple, La methode va retourner <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> si le module est d\xE9j\xE0 connect\xE9 ou <tt>Relay(BadCustomeName.relay1)=unresolved</tt> si le module n\x27est pas d\xE9j\xE0 connect\xE9. Cette methode ne declenche aucune transaction USB ou TCP et peut donc \xEAtre utilis\xE9 dans un debuggeur.</p>',ret:'une cha\xEEne de caract\xE8res d\xE9crivant le capteur de Compos\xE9s Organiques Volatils (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['Voc']['get_advertisedValue']={syn:'Retourne la valeur courante du capteur de Compos\xE9s Organiques Volatils (pas plus de 6 caract\xE8res).',lib:'voc.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Retourne la valeur courante du capteur de Compos\xE9s Organiques Volatils (pas plus de 6 caract\xE8res).</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur courante du capteur de Compos\xE9s Organiques Volatils (pas plus de 6 caract\xE8res).',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['Voc']['get_currentRawValue']={syn:'Retourne la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en ppm (vol), sous forme de nombre \xE0 virgule.',lib:'voc.get_currentRawValue()',pro:'def get_currentRawValue()',cmt:'<p>Retourne la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en ppm (vol), sous forme de nombre \xE0 virgule.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en ppm (vol), sous forme de nombre \xE0 virgule',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_CURRENTRAWVALUE_INVALID</tt>.'};
+doc['Voc']['get_currentValue']={syn:'Retourne la valeur actuelle du taux de VOC estim\xE9, en ppm (vol), sous forme de nombre \xE0 virgule.',lib:'voc.get_currentValue()',pro:'def get_currentValue()',cmt:'<p>Retourne la valeur actuelle du taux de VOC estim\xE9, en ppm (vol), sous forme de nombre \xE0 virgule.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur actuelle du taux de VOC estim\xE9, en ppm (vol), sous forme de nombre \xE0 virgule',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_CURRENTVALUE_INVALID</tt>.'};
+doc['Voc']['get_errorMessage']={syn:'Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du capteur de Compos\xE9s Organiques Volatils.',lib:'voc.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du capteur de Compos\xE9s Organiques Volatils. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'une cha\xEEne de caract\xE8res correspondant au message de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du capteur de Compos\xE9s Organiques Volatils.'};
+doc['Voc']['get_errorType']={syn:'Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du capteur de Compos\xE9s Organiques Volatils.',lib:'voc.get_errorType()',pro:'def get_errorType()',cmt:'<p>Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du capteur de Compos\xE9s Organiques Volatils. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'un nombre correspondant au code de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du capteur de Compos\xE9s Organiques Volatils.'};
+doc['Voc']['get_friendlyName']={syn:'Retourne un identifiant global du capteur de Compos\xE9s Organiques Volatils au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>.',lib:'voc.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Retourne un identifiant global du capteur de Compos\xE9s Organiques Volatils au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>. Le cha\xEEne retourn\xE9e utilise soit les noms logiques du module et du capteur de Compos\xE9s Organiques Volatils si ils sont d\xE9finis, soit respectivement le num\xE9ro de s\xE9rie du module et l\x27identifant mat\xE9riel du capteur de Compos\xE9s Organiques Volatils (par exemple: <tt>MyCustomName.relay1</tt>)</p>',ret:'une cha\xEEne de caract\xE8res identifiant le capteur de Compos\xE9s Organiques Volatils en utilisant les noms logiques (ex: <tt>MyCustomName.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['Voc']['get_functionDescriptor']={syn:'Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction.',lib:'voc.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction. Cet identifiant peut \xEAtre utilis\xE9 pour tester si deux instance de <tt>YFunction</tt> r\xE9f\xE9rencent physiquement la m\xEAme fonction sur le m\xEAme module.</p>',ret:'un identifiant de type <tt>YFUN_DESCR</tt>.',ext:'Si la fonction n\x27a jamais \xE9t\xE9 contact\xE9e, la valeur retourn\xE9e sera <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>'};
+doc['Voc']['get_functionId']={syn:'Retourne l\x27identifiant mat\xE9riel du capteur de Compos\xE9s Organiques Volatils, sans r\xE9f\xE9rence au module.',lib:'voc.get_functionId()',pro:'def get_functionId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel du capteur de Compos\xE9s Organiques Volatils, sans r\xE9f\xE9rence au module. Par example <tt>relay1</tt>.</p>',ret:'une cha\xEEne de caract\xE8res identifiant le capteur de Compos\xE9s Organiques Volatils (ex: <tt>relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['Voc']['get_hardwareId']={syn:'Retourne l\x27identifiant mat\xE9riel unique du capteur de Compos\xE9s Organiques Volatils au format <tt>SERIAL.FUNCTIONID</tt>.',lib:'voc.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel unique du capteur de Compos\xE9s Organiques Volatils au format <tt>SERIAL.FUNCTIONID</tt>. L\x27identifiant unique est compos\xE9 du num\xE9ro de s\xE9rie du module et de l\x27identifiant mat\xE9riel du capteur de Compos\xE9s Organiques Volatils (par example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'une cha\xEEne de caract\xE8res identifiant le capteur de Compos\xE9s Organiques Volatils (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['Voc']['get_highestValue']={syn:'Retourne la valeur maximale observ\xE9e pour le taux de VOC estim\xE9 depuis le d\xE9marrage du module.',lib:'voc.get_highestValue()',pro:'def get_highestValue()',cmt:'<p>Retourne la valeur maximale observ\xE9e pour le taux de VOC estim\xE9 depuis le d\xE9marrage du module.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur maximale observ\xE9e pour le taux de VOC estim\xE9 depuis le d\xE9marrage du module',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_HIGHESTVALUE_INVALID</tt>.'};
+doc['Voc']['get_logFrequency']={syn:'Retourne la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es.',lib:'voc.get_logFrequency()',pro:'def get_logFrequency()',cmt:'<p>Retourne la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_LOGFREQUENCY_INVALID</tt>.'};
+doc['Voc']['get_logicalName']={syn:'Retourne le nom logique du capteur de Compos\xE9s Organiques Volatils.',lib:'voc.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Retourne le nom logique du capteur de Compos\xE9s Organiques Volatils.</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du capteur de Compos\xE9s Organiques Volatils.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['Voc']['get_lowestValue']={syn:'Retourne la valeur minimale observ\xE9e pour le taux de VOC estim\xE9 depuis le d\xE9marrage du module.',lib:'voc.get_lowestValue()',pro:'def get_lowestValue()',cmt:'<p>Retourne la valeur minimale observ\xE9e pour le taux de VOC estim\xE9 depuis le d\xE9marrage du module.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur minimale observ\xE9e pour le taux de VOC estim\xE9 depuis le d\xE9marrage du module',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_LOWESTVALUE_INVALID</tt>.'};
+doc['Voc']['get_module']={syn:'Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction.',lib:'voc.get_module()',pro:'def get_module()',cmt:'<p>Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction. Si la fonction ne peut \xEAtre trouv\xE9e sur aucun module, l\x27instance de <tt>YModule</tt> retourn\xE9e ne sera pas joignable.</p>',ret:'une instance de <tt>YModule</tt>'};
+doc['Voc']['get_recordedData']={syn:'Retourne un objet DataSet repr\xE9sentant des mesures de ce capteur pr\xE9c\xE9demment enregistr\xE9es \xE0 l\x27aide du DataLogger, pour l\x27intervalle de temps sp\xE9cifi\xE9.',lib:'voc.get_recordedData()',pro:'def get_recordedData(<span id=pn>startTime</span>, <span id=pn>endTime</span>)',cmt:'<p>Retourne un objet DataSet repr\xE9sentant des mesures de ce capteur pr\xE9c\xE9demment enregistr\xE9es \xE0 l\x27aide du DataLogger, pour l\x27intervalle de temps sp\xE9cifi\xE9. Veuillez vous r\xE9f\xE9rer \xE0 la documentation de la classe DataSet pour plus plus d\x27informations sur la mani\xE8re d\x27obtenir un aper\xE7u des mesures pour la p\xE9riode, et comment charger progressivement une grande quantit\xE9 de mesures depuis le dataLogger.</p><p> Cette m\xE9thode ne fonctionne que si le module utilise un firmware r\xE9cent, car les objets DataSet ne sont pas support\xE9s par les firmwares ant\xE9rieurs \xE0 la r\xE9vision 13000.</p>',par:{startTime:'le d\xE9but de l\x27intervalle de mesure d\xE9sir\xE9, c\x27est \xE0 dire en nombre de secondes depuis le 1er janvier 1970 UTC. La valeur 0 peut \xEAtre utilis\xE9e pour ne poser aucune limite sur le d\xE9but des mesures.',endTime:'la find de l\x27intercalle de mesure d\xE9sir\xE9, c\x27est \xE0 dire en nombre de secondes depuis le 1er janvier 1970 UTC. La valeur 0 peut \xEAtre utilis\xE9e pour ne poser aucune limite de fin.'},ret:'une instance de YDataSet, dont les m\xE9thodes permettent de d\x27acc\xE9der aux donn\xE9es historiques souhait\xE9es.'};
+doc['Voc']['get_reportFrequency']={syn:'Retourne la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction.',lib:'voc.get_reportFrequency()',pro:'def get_reportFrequency()',cmt:'<p>Retourne la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_REPORTFREQUENCY_INVALID</tt>.'};
+doc['Voc']['get_resolution']={syn:'Retourne la r\xE9solution des valeurs mesur\xE9es.',lib:'voc.get_resolution()',pro:'def get_resolution()',cmt:'<p>Retourne la r\xE9solution des valeurs mesur\xE9es. La r\xE9solution correspond \xE0 la pr\xE9cision num\xE9rique de la repr\xE9sentation des mesures. Elle n\x27est pas forc\xE9ment identique \xE0 la pr\xE9cision r\xE9elle du capteur.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la r\xE9solution des valeurs mesur\xE9es',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_RESOLUTION_INVALID</tt>.'};
+doc['Voc']['get_sensorState']={syn:'Retourne le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment.',lib:'voc.get_sensorState()',pro:'def get_sensorState()',cmt:'<p>Retourne le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment.</p>',ret:'un entier repr&eacute;sentant le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_SENSORSTATE_INVALID</tt>.'};
+doc['Voc']['get_unit']={syn:'Retourne l\x27unit\xE9 dans laquelle le taux de VOC estim\xE9 est exprim\xE9e.',lib:'voc.get_unit()',pro:'def get_unit()',cmt:'<p>Retourne l\x27unit\xE9 dans laquelle le taux de VOC estim\xE9 est exprim\xE9e.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant l\x27unit\xE9 dans laquelle le taux de VOC estim\xE9 est exprim\xE9e',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_UNIT_INVALID</tt>.'};
+doc['Voc']['get_userData']={syn:'Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>.',lib:'voc.get_userData()',pro:'def get_userData()',cmt:'<p>Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',ret:'l\x27objet stock\xE9 pr\xE9c\xE9demment par l\x27appelant.'};
+doc['Voc']['isOnline']={syn:'V\xE9rifie si le module h\xE9bergeant le capteur de Compos\xE9s Organiques Volatils est joignable, sans d\xE9clencher d\x27erreur.',lib:'voc.isOnline()',pro:'def isOnline()',cmt:'<p>V\xE9rifie si le module h\xE9bergeant le capteur de Compos\xE9s Organiques Volatils est joignable, sans d\xE9clencher d\x27erreur. Si les valeurs des attributs en cache du capteur de Compos\xE9s Organiques Volatils sont valides au moment de l\x27appel, le module est consid\xE9r\xE9 joignable. Cette fonction ne cause en aucun cas d\x27exception, quelle que soit l\x27erreur qui pourrait se produire lors de la v\xE9rification de joignabilit\xE9.</p>',ret:'<tt>true</tt> si le capteur de Compos\xE9s Organiques Volatils est joignable, <tt>false</tt> sinon'};
+doc['Voc']['load']={syn:'Met en cache les valeurs courantes du capteur de Compos\xE9s Organiques Volatils, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e.',lib:'voc.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Met en cache les valeurs courantes du capteur de Compos\xE9s Organiques Volatils, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e. Par d\xE9faut, lorsqu\x27on acc\xE8de \xE0 un module, tous les attributs des fonctions du module sont automatiquement mises en cache pour la dur\xE9e standard (5 ms). Cette m\xE9thode peut \xEAtre utilis\xE9e pour marquer occasionellement les donn\xE9es cach\xE9es comme valides pour une plus longue p\xE9riode, par exemple dans le but de r\xE9duire le trafic r\xE9seau.</p>',par:{msValidity:'un entier correspondant \xE0 la dur\xE9e de validit\xE9 attribu\xE9e aux les param\xE8tres charg\xE9s, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Voc']['loadAttribute']={syn:'Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.',lib:'voc.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un cha\xEEne vide.'};
+doc['Voc']['loadCalibrationPoints']={syn:'R\xE9cup\xE8re les points de correction de mesure pr\xE9c\xE9demment enregistr\xE9s \xE0 l\x27aide de la m\xE9thode <tt>calibrateFromPoints</tt>.',lib:'voc.loadCalibrationPoints()',pro:'def loadCalibrationPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>R\xE9cup\xE8re les points de correction de mesure pr\xE9c\xE9demment enregistr\xE9s \xE0 l\x27aide de la m\xE9thode <tt>calibrateFromPoints</tt>.</p>',par:{rawValues:'tableau de nombres flottants, qui sera rempli par la fonction avec les valeurs brutes des points de correction.',refValues:'tableau de nombres flottants, qui sera rempli par la fonction avec les valeurs d\xE9sir\xE9es des points de correction.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Voc']['muteValueCallbacks']={syn:'D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'voc.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Vous pouvez utiliser cette fonction pour \xE9conomiser la bande passante et le CPU sur les machines de faible puissance, ou pour \xE9viter le d\xE9clanchement de callbacks HTTP. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Voc']['nextVoc']={syn:'Continue l\x27\xE9num\xE9ration des capteurs de Compos\xE9s Organiques Volatils commenc\xE9e \xE0 l\x27aide de <tt>yFirstVoc()</tt>.',lib:'voc.nextVoc()',pro:'def nextVoc()',cmt:'<p>Continue l\x27\xE9num\xE9ration des capteurs de Compos\xE9s Organiques Volatils commenc\xE9e \xE0 l\x27aide de <tt>yFirstVoc()</tt>.</p>',ret:'un pointeur sur un objet <tt>YVoc</tt> accessible en ligne, ou <tt>null</tt> lorsque l\x27\xE9num\xE9ration est termin\xE9e.'};
+doc['Voc']['registerTimedReportCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque notification p\xE9riodique.',lib:'voc.registerTimedReportCallback()',pro:'def registerTimedReportCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque notification p\xE9riodique. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callbacks peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callbacks ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et un objet YMeasure d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['Voc']['registerValueCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e.',lib:'voc.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callback peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callback ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et la cha\xEEne de caract\xE8re d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['Voc']['set_highestValue']={syn:'Modifie la m\xE9moire de valeur maximale observ\xE9e.',lib:'voc.set_highestValue()',pro:'def set_highestValue(<span id=pn>newval</span>)',cmt:'<p>Modifie la m\xE9moire de valeur maximale observ\xE9e.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la m\xE9moire de valeur maximale observ\xE9e'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Voc']['set_logFrequency']={syn:'Modifie la fr\xE9quence d\x27enregistrement des mesures dans le datalogger.',lib:'voc.set_logFrequency()',pro:'def set_logFrequency(<span id=pn>newval</span>)',cmt:'<p>Modifie la fr\xE9quence d\x27enregistrement des mesures dans le datalogger. La fr\xE9quence peut \xEAtre sp\xE9cifi\xE9e en mesures par secondes, en mesures par minutes (par exemple \x2215/m\x22) ou en mesures par heure (par exemple \x224/h\x22). Pour d\xE9sactiver l\x27enregistrement des mesures de cette fonction, utilisez la valeur \x22OFF\x22.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence d\x27enregistrement des mesures dans le datalogger'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Voc']['set_logicalName']={syn:'Modifie le nom logique du capteur de Compos\xE9s Organiques Volatils.',lib:'voc.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Modifie le nom logique du capteur de Compos\xE9s Organiques Volatils. Vous pouvez utiliser <tt>yCheckLogicalName()</tt> pour v\xE9rifier si votre param\xE8tre est valide. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du capteur de Compos\xE9s Organiques Volatils.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27appel se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Voc']['set_lowestValue']={syn:'Modifie la m\xE9moire de valeur minimale observ\xE9e.',lib:'voc.set_lowestValue()',pro:'def set_lowestValue(<span id=pn>newval</span>)',cmt:'<p>Modifie la m\xE9moire de valeur minimale observ\xE9e.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la m\xE9moire de valeur minimale observ\xE9e'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Voc']['set_reportFrequency']={syn:'Modifie la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es.',lib:'voc.set_reportFrequency()',pro:'def set_reportFrequency(<span id=pn>newval</span>)',cmt:'<p>Modifie la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es. La fr\xE9quence peut \xEAtre sp\xE9cifi\xE9e en mesures par secondes, en mesures par minutes (par exemple \x2215/m\x22) ou en mesures par heure (par exemple \x224/h\x22). Pour d\xE9sactiver les notifications p\xE9riodiques pour cette fonction, utilisez la valeur \x22OFF\x22.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Voc']['set_resolution']={syn:'Modifie la r\xE9solution des valeurs physique mesur\xE9es.',lib:'voc.set_resolution()',pro:'def set_resolution(<span id=pn>newval</span>)',cmt:'<p>Modifie la r\xE9solution des valeurs physique mesur\xE9es. La r\xE9solution correspond \xE0 la pr\xE9cision de l\x27affichage des mesures. Elle ne change pas la pr\xE9cision de la mesure elle-m\xEAme.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la r\xE9solution des valeurs physique mesur\xE9es'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Voc']['set_userData']={syn:'Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>.',lib:'voc.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',par:{data:'objet quelconque \xE0 m\xE9moriser'}};
+doc['Voc']['startDataLogger']={syn:'D\xE9marre l\x27enregistreur de donn\xE9es du module.',lib:'voc.startDataLogger()',pro:'def startDataLogger()',cmt:'<p>D\xE9marre l\x27enregistreur de donn\xE9es du module. Attention, l\x27enregistreur ne sauvera les mesures de ce capteur que si la fr\xE9quence d\x27enregistrement (logFrequency) n\x27est pas sur \x22OFF\x22.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.'};
+doc['Voc']['stopDataLogger']={syn:'Arr\xEAte l\x27enregistreur de donn\xE9es du module.',lib:'voc.stopDataLogger()',pro:'def stopDataLogger()',cmt:'<p>Arr\xEAte l\x27enregistreur de donn\xE9es du module.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.'};
+doc['Voc']['unmuteValueCallbacks']={syn:'R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'voc.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Cette fonction annule un pr\xE9c\xE9dent appel \xE0 <tt>muteValueCallbacks()</tt>. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+//--- (end of generated code: Voc)
+//--- (generated code: Watchdog)
+doc['Watchdog']={'':{syn:'Interface de la fonction Watchdog',inc:'from yocto_watchdog import *',cmt:'<p>La fonction WatchDog est g\xE9r\xE9e comme un relais qui couperait bri\xE8vement l\x27alimentation d\x27un appareil apr\xE8s un d\x27attente temps donn\xE9 afin de provoquer une r\xE9initialisation compl\xE8te de cet appareil. Il suffit d\x27appeler le watchdog \xE0 intervale r\xE9gulier pour l\x27emp\xEAcher de provoquer la r\xE9initialisation. Le watchog peut aussi \xEAtre pilot\xE9 directement \xE0 l\x27aide des m\xE9thode <i>pulse</i> et <i>delayedpulse</i> pour \xE9teindre un appareil pendant un temps donn\xE9.</p>'}};
+doc['Watchdog']['FindWatchdog']={syn:'Permet de retrouver un watchdog d\x27apr\xE8s un identifiant donn\xE9.',lib:'YWatchdog.FindWatchdog()',pro:'def FindWatchdog(<span id=pn>func</span>)',cmt:'<p>Permet de retrouver un watchdog d\x27apr\xE8s un identifiant donn\xE9. L\x27identifiant peut \xEAtre sp\xE9cifi\xE9 sous plusieurs formes:<br> <ul> <li>NomLogiqueFonction</li> <li>NoSerieModule.IdentifiantFonction</li> <li>NoSerieModule.NomLogiqueFonction</li> <li>NomLogiqueModule.IdentifiantMat\xE9riel</li> <li>NomLogiqueModule.NomLogiqueFonction</li> </ul></p><p> Cette fonction n\x27exige pas que le watchdog soit en ligne au moment ou elle est appel\xE9e, l\x27objet retourn\xE9 sera n\xE9anmoins valide. Utiliser la m\xE9thode <tt>YWatchdog.isOnline()</tt> pour tester si le watchdog est utilisable \xE0 un moment donn\xE9. En cas d\x27ambigu\xEFt\xE9 lorsqu\x27on fait une recherche par nom logique, aucune erreur ne sera notifi\xE9e: la premi\xE8re instance trouv\xE9e sera renvoy\xE9e. La recherche se fait d\x27abord par nom mat\xE9riel, puis par nom logique.</p>',par:{func:'une cha\xEEne de caract\xE8res qui r\xE9f\xE9rence le watchdog sans ambigu\xEFt\xE9'},ret:'un objet de classe <tt>YWatchdog</tt> qui permet ensuite de contr\xF4ler le watchdog.'};
+doc['Watchdog']['FirstWatchdog']={syn:'Commence l\x27\xE9num\xE9ration des watchdog accessibles par la librairie.',lib:'YWatchdog.FirstWatchdog()',pro:'def FirstWatchdog()',cmt:'<p>Commence l\x27\xE9num\xE9ration des watchdog accessibles par la librairie. Utiliser la fonction <tt>YWatchdog.nextWatchdog()</tt> pour it\xE9rer sur les autres watchdog.</p>',ret:'un pointeur sur un objet <tt>YWatchdog</tt>, correspondant au premier watchdog accessible en ligne, ou <tt>null</tt> si il n\x27y a pas de watchdog disponibles.'};
+doc['Watchdog']['clearCache']={syn:'Invalide le cache.',lib:'watchdog.clearCache()',pro:'def clearCache()',cmt:'<p>Invalide le cache. Invalide le cache des valeurs courantes du watchdog. Force le prochain appel \xE0 une m\xE9thode get_xxx() ou loadxxx() pour charger les les donn\xE9es depuis le module.</p>'};
+doc['Watchdog']['delayedPulse']={syn:'Pr\xE9-programme une impulsion ',lib:'watchdog.delayedPulse()',pro:'def delayedPulse(<span id=pn>ms_delay</span>, <span id=pn>ms_duration</span>)',cmt:'<p>Pr\xE9-programme une impulsion</p>',par:{ms_delay:'delai d\x27attente avant l\x27impulsion, en millisecondes',ms_duration:'dur\xE9e de l\x27impulsion, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Watchdog']['describe']={syn:'Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du watchdog au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'watchdog.describe()',pro:'def describe()',cmt:'<p>Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du watchdog au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. Plus pr\xE9cis\xE9ment, <tt>TYPE</tt> correspond au type de fonction, <tt>NAME</tt> correspond au nom utils\xE9 lors du premier acc\xE8s a la fonction, <tt>SERIAL</tt> correspond au num\xE9ro de s\xE9rie du module si le module est connect\xE9, ou <tt>\x22unresolved\x22</tt> sinon, et <tt>FUNCTIONID</tt> correspond \xE0 l\x27identifiant mat\xE9riel de la fonction si le module est connect\xE9. Par exemple, La methode va retourner <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> si le module est d\xE9j\xE0 connect\xE9 ou <tt>Relay(BadCustomeName.relay1)=unresolved</tt> si le module n\x27est pas d\xE9j\xE0 connect\xE9. Cette methode ne declenche aucune transaction USB ou TCP et peut donc \xEAtre utilis\xE9 dans un debuggeur.</p>',ret:'une cha\xEEne de caract\xE8res d\xE9crivant le watchdog (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['Watchdog']['get_advertisedValue']={syn:'Retourne la valeur courante du watchdog (pas plus de 6 caract\xE8res).',lib:'watchdog.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Retourne la valeur courante du watchdog (pas plus de 6 caract\xE8res).</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur courante du watchdog (pas plus de 6 caract\xE8res).',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['Watchdog']['get_autoStart']={syn:'Retourne l\x27\xE9tat du watchdog \xE0 la mise sous tension du module.',lib:'watchdog.get_autoStart()',pro:'def get_autoStart()',cmt:'<p>Retourne l\x27\xE9tat du watchdog \xE0 la mise sous tension du module.</p>',ret:'soit <tt>Y_AUTOSTART_OFF</tt>, soit <tt>Y_AUTOSTART_ON</tt>, selon l\x27\xE9tat du watchdog \xE0 la mise sous tension du module',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_AUTOSTART_INVALID</tt>.'};
+doc['Watchdog']['get_countdown']={syn:'Retourne le nombre de millisecondes restantes avant le d\xE9clenchement d\x27une impulsion pr\xE9programm\xE9e par un appel \xE0 delayedPulse().',lib:'watchdog.get_countdown()',pro:'def get_countdown()',cmt:'<p>Retourne le nombre de millisecondes restantes avant le d\xE9clenchement d\x27une impulsion pr\xE9programm\xE9e par un appel \xE0 delayedPulse(). Si aucune impulsion n\x27est programm\xE9e, retourne z\xE9ro.</p>',ret:'un entier repr&eacute;sentant le nombre de millisecondes restantes avant le d\xE9clenchement d\x27une impulsion pr\xE9programm\xE9e par un appel \xE0 delayedPulse()',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_COUNTDOWN_INVALID</tt>.'};
+doc['Watchdog']['get_errorMessage']={syn:'Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du watchdog.',lib:'watchdog.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du watchdog. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'une cha\xEEne de caract\xE8res correspondant au message de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du watchdog.'};
+doc['Watchdog']['get_errorType']={syn:'Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du watchdog.',lib:'watchdog.get_errorType()',pro:'def get_errorType()',cmt:'<p>Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du watchdog. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'un nombre correspondant au code de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du watchdog.'};
+doc['Watchdog']['get_friendlyName']={syn:'Retourne un identifiant global du watchdog au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>.',lib:'watchdog.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Retourne un identifiant global du watchdog au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>. Le cha\xEEne retourn\xE9e utilise soit les noms logiques du module et du watchdog si ils sont d\xE9finis, soit respectivement le num\xE9ro de s\xE9rie du module et l\x27identifant mat\xE9riel du watchdog (par exemple: <tt>MyCustomName.relay1</tt>)</p>',ret:'une cha\xEEne de caract\xE8res identifiant le watchdog en utilisant les noms logiques (ex: <tt>MyCustomName.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['Watchdog']['get_functionDescriptor']={syn:'Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction.',lib:'watchdog.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction. Cet identifiant peut \xEAtre utilis\xE9 pour tester si deux instance de <tt>YFunction</tt> r\xE9f\xE9rencent physiquement la m\xEAme fonction sur le m\xEAme module.</p>',ret:'un identifiant de type <tt>YFUN_DESCR</tt>.',ext:'Si la fonction n\x27a jamais \xE9t\xE9 contact\xE9e, la valeur retourn\xE9e sera <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>'};
+doc['Watchdog']['get_functionId']={syn:'Retourne l\x27identifiant mat\xE9riel du watchdog, sans r\xE9f\xE9rence au module.',lib:'watchdog.get_functionId()',pro:'def get_functionId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel du watchdog, sans r\xE9f\xE9rence au module. Par example <tt>relay1</tt>.</p>',ret:'une cha\xEEne de caract\xE8res identifiant le watchdog (ex: <tt>relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['Watchdog']['get_hardwareId']={syn:'Retourne l\x27identifiant mat\xE9riel unique du watchdog au format <tt>SERIAL.FUNCTIONID</tt>.',lib:'watchdog.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel unique du watchdog au format <tt>SERIAL.FUNCTIONID</tt>. L\x27identifiant unique est compos\xE9 du num\xE9ro de s\xE9rie du module et de l\x27identifiant mat\xE9riel du watchdog (par example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'une cha\xEEne de caract\xE8res identifiant le watchdog (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['Watchdog']['get_logicalName']={syn:'Retourne le nom logique du watchdog.',lib:'watchdog.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Retourne le nom logique du watchdog.</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du watchdog.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['Watchdog']['get_maxTimeOnStateA']={syn:'Retourne le temps maximal (en ms) pendant lequel le watchdog peut rester dans l\x27\xE9tat A avant de basculer automatiquement dans l\x27\xE9tat B.',lib:'watchdog.get_maxTimeOnStateA()',pro:'def get_maxTimeOnStateA()',cmt:'<p>Retourne le temps maximal (en ms) pendant lequel le watchdog peut rester dans l\x27\xE9tat A avant de basculer automatiquement dans l\x27\xE9tat B. Z\xE9ro signifie qu\x27il n\x27y a pas de limitation</p>',ret:'un entier repr&eacute;sentant le temps maximal (en ms) pendant lequel le watchdog peut rester dans l\x27\xE9tat A avant de basculer automatiquement dans l\x27\xE9tat B',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_MAXTIMEONSTATEA_INVALID</tt>.'};
+doc['Watchdog']['get_maxTimeOnStateB']={syn:'Retourne le temps maximal (en ms) pendant lequel le watchdog peut rester dans l\x27\xE9tat B avant de basculer automatiquement dans l\x27\xE9tat A.',lib:'watchdog.get_maxTimeOnStateB()',pro:'def get_maxTimeOnStateB()',cmt:'<p>Retourne le temps maximal (en ms) pendant lequel le watchdog peut rester dans l\x27\xE9tat B avant de basculer automatiquement dans l\x27\xE9tat A. Z\xE9ro signifie qu\x27il n\x27y a pas de limitation</p>',ret:'un entier repr&eacute;sentant le temps maximal (en ms) pendant lequel le watchdog peut rester dans l\x27\xE9tat B avant de basculer automatiquement dans l\x27\xE9tat A',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_MAXTIMEONSTATEB_INVALID</tt>.'};
+doc['Watchdog']['get_module']={syn:'Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction.',lib:'watchdog.get_module()',pro:'def get_module()',cmt:'<p>Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction. Si la fonction ne peut \xEAtre trouv\xE9e sur aucun module, l\x27instance de <tt>YModule</tt> retourn\xE9e ne sera pas joignable.</p>',ret:'une instance de <tt>YModule</tt>'};
+doc['Watchdog']['get_output']={syn:'Retourne l\x27\xE9tat de la sortie du watchdog, lorsqu\x27il est utilis\xE9 comme un simple interrupteur.',lib:'watchdog.get_output()',pro:'def get_output()',cmt:'<p>Retourne l\x27\xE9tat de la sortie du watchdog, lorsqu\x27il est utilis\xE9 comme un simple interrupteur.</p>',ret:'soit <tt>Y_OUTPUT_OFF</tt>, soit <tt>Y_OUTPUT_ON</tt>, selon l\x27\xE9tat de la sortie du watchdog, lorsqu\x27il est utilis\xE9 comme un simple interrupteur',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_OUTPUT_INVALID</tt>.'};
+doc['Watchdog']['get_pulseTimer']={syn:'Retourne le nombre de millisecondes restantes avant le retour \xE0 la position de repos (\xE9tat A), durant la g\xE9n\xE9ration d\x27une impulsion mesur\xE9e.',lib:'watchdog.get_pulseTimer()',pro:'def get_pulseTimer()',cmt:'<p>Retourne le nombre de millisecondes restantes avant le retour \xE0 la position de repos (\xE9tat A), durant la g\xE9n\xE9ration d\x27une impulsion mesur\xE9e. Si aucune impulsion n\x27est en cours, retourne z\xE9ro.</p>',ret:'un entier repr&eacute;sentant le nombre de millisecondes restantes avant le retour \xE0 la position de repos (\xE9tat A), durant la g\xE9n\xE9ration d\x27une impulsion mesur\xE9e',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_PULSETIMER_INVALID</tt>.'};
+doc['Watchdog']['get_running']={syn:'Retourne l\x27\xE9tat du watchdog.',lib:'watchdog.get_running()',pro:'def get_running()',cmt:'<p>Retourne l\x27\xE9tat du watchdog.</p>',ret:'soit <tt>Y_RUNNING_OFF</tt>, soit <tt>Y_RUNNING_ON</tt>, selon l\x27\xE9tat du watchdog',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_RUNNING_INVALID</tt>.'};
+doc['Watchdog']['get_state']={syn:'Retourne l\x27\xE9tat du watchdog (A pour la position de repos, B pour l\x27\xE9tat actif).',lib:'watchdog.get_state()',pro:'def get_state()',cmt:'<p>Retourne l\x27\xE9tat du watchdog (A pour la position de repos, B pour l\x27\xE9tat actif).</p>',ret:'soit <tt>Y_STATE_A</tt>, soit <tt>Y_STATE_B</tt>, selon l\x27\xE9tat du watchdog (A pour la position de repos, B pour l\x27\xE9tat actif)',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_STATE_INVALID</tt>.'};
+doc['Watchdog']['get_stateAtPowerOn']={syn:'Retourne l\x27\xE9tat du watchdog au d\xE9marrage du module (A pour la position de repos, B pour l\x27\xE9tat actif, UNCHANGED pour aucun changement).',lib:'watchdog.get_stateAtPowerOn()',pro:'def get_stateAtPowerOn()',cmt:'<p>Retourne l\x27\xE9tat du watchdog au d\xE9marrage du module (A pour la position de repos, B pour l\x27\xE9tat actif, UNCHANGED pour aucun changement).</p>',ret:'une valeur parmi <tt>Y_STATEATPOWERON_UNCHANGED</tt>, <tt>Y_STATEATPOWERON_A</tt> et <tt>Y_STATEATPOWERON_B</tt> repr&eacute;sentant l\x27\xE9tat du watchdog au d\xE9marrage du module (A pour la position de repos, B pour l\x27\xE9tat actif, UNCHANGED pour aucun changement)',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_STATEATPOWERON_INVALID</tt>.'};
+doc['Watchdog']['get_triggerDelay']={syn:'Retourne le d\xE9lai d\x27attente avant qu\x27un reset ne soit automatiquement g\xE9n\xE9r\xE9 par le watchog, en millisecondes.',lib:'watchdog.get_triggerDelay()',pro:'def get_triggerDelay()',cmt:'<p>Retourne le d\xE9lai d\x27attente avant qu\x27un reset ne soit automatiquement g\xE9n\xE9r\xE9 par le watchog, en millisecondes.</p>',ret:'un entier repr&eacute;sentant le d\xE9lai d\x27attente avant qu\x27un reset ne soit automatiquement g\xE9n\xE9r\xE9 par le watchog, en millisecondes',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_TRIGGERDELAY_INVALID</tt>.'};
+doc['Watchdog']['get_triggerDuration']={syn:'Retourne la dur\xE9e d\x27un reset g\xE9n\xE9r\xE9 par le watchog, en millisecondes.',lib:'watchdog.get_triggerDuration()',pro:'def get_triggerDuration()',cmt:'<p>Retourne la dur\xE9e d\x27un reset g\xE9n\xE9r\xE9 par le watchog, en millisecondes.</p>',ret:'un entier repr&eacute;sentant la dur\xE9e d\x27un reset g\xE9n\xE9r\xE9 par le watchog, en millisecondes',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_TRIGGERDURATION_INVALID</tt>.'};
+doc['Watchdog']['get_userData']={syn:'Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>.',lib:'watchdog.get_userData()',pro:'def get_userData()',cmt:'<p>Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',ret:'l\x27objet stock\xE9 pr\xE9c\xE9demment par l\x27appelant.'};
+doc['Watchdog']['isOnline']={syn:'V\xE9rifie si le module h\xE9bergeant le watchdog est joignable, sans d\xE9clencher d\x27erreur.',lib:'watchdog.isOnline()',pro:'def isOnline()',cmt:'<p>V\xE9rifie si le module h\xE9bergeant le watchdog est joignable, sans d\xE9clencher d\x27erreur. Si les valeurs des attributs en cache du watchdog sont valides au moment de l\x27appel, le module est consid\xE9r\xE9 joignable. Cette fonction ne cause en aucun cas d\x27exception, quelle que soit l\x27erreur qui pourrait se produire lors de la v\xE9rification de joignabilit\xE9.</p>',ret:'<tt>true</tt> si le watchdog est joignable, <tt>false</tt> sinon'};
+doc['Watchdog']['load']={syn:'Met en cache les valeurs courantes du watchdog, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e.',lib:'watchdog.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Met en cache les valeurs courantes du watchdog, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e. Par d\xE9faut, lorsqu\x27on acc\xE8de \xE0 un module, tous les attributs des fonctions du module sont automatiquement mises en cache pour la dur\xE9e standard (5 ms). Cette m\xE9thode peut \xEAtre utilis\xE9e pour marquer occasionellement les donn\xE9es cach\xE9es comme valides pour une plus longue p\xE9riode, par exemple dans le but de r\xE9duire le trafic r\xE9seau.</p>',par:{msValidity:'un entier correspondant \xE0 la dur\xE9e de validit\xE9 attribu\xE9e aux les param\xE8tres charg\xE9s, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Watchdog']['loadAttribute']={syn:'Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.',lib:'watchdog.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un cha\xEEne vide.'};
+doc['Watchdog']['muteValueCallbacks']={syn:'D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'watchdog.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Vous pouvez utiliser cette fonction pour \xE9conomiser la bande passante et le CPU sur les machines de faible puissance, ou pour \xE9viter le d\xE9clanchement de callbacks HTTP. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Watchdog']['nextWatchdog']={syn:'Continue l\x27\xE9num\xE9ration des watchdog commenc\xE9e \xE0 l\x27aide de <tt>yFirstWatchdog()</tt>.',lib:'watchdog.nextWatchdog()',pro:'def nextWatchdog()',cmt:'<p>Continue l\x27\xE9num\xE9ration des watchdog commenc\xE9e \xE0 l\x27aide de <tt>yFirstWatchdog()</tt>.</p>',ret:'un pointeur sur un objet <tt>YWatchdog</tt> accessible en ligne, ou <tt>null</tt> lorsque l\x27\xE9num\xE9ration est termin\xE9e.'};
+doc['Watchdog']['pulse']={syn:'Commute le relais \xE0 l\x27\xE9tat B (actif) pour un dur\xE9e sp\xE9cifi\xE9e, puis revient ensuite spontan\xE9ment vers l\x27\xE9tat A (\xE9tat de repos).',lib:'watchdog.pulse()',pro:'def pulse(<span id=pn>ms_duration</span>)',cmt:'<p>Commute le relais \xE0 l\x27\xE9tat B (actif) pour un dur\xE9e sp\xE9cifi\xE9e, puis revient ensuite spontan\xE9ment vers l\x27\xE9tat A (\xE9tat de repos).</p>',par:{ms_duration:'dur\xE9e de l\x27impulsion, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Watchdog']['registerValueCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e.',lib:'watchdog.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callback peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callback ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et la cha\xEEne de caract\xE8re d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['Watchdog']['resetWatchdog']={syn:'R\xE9initialise le WatchDog.',lib:'watchdog.resetWatchdog()',pro:'def resetWatchdog()',cmt:'<p>R\xE9initialise le WatchDog. Quand le watchdog est en fonctionnement cette fonction doit \xEAtre appel\xE9e \xE0 interval r\xE9gulier, pour emp\xE9cher que le watdog ne se d\xE9clenche</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Watchdog']['set_autoStart']={syn:'Modifie l\x27\xE9tat du watching au d\xE9marrage du module.',lib:'watchdog.set_autoStart()',pro:'def set_autoStart(<span id=pn>newval</span>)',cmt:'<p>Modifie l\x27\xE9tat du watching au d\xE9marrage du module. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> et de red\xE9marrer le module pour que le param\xE8tre soit appliqu\xE9.</p>',par:{newval:'soit <tt>Y_AUTOSTART_OFF</tt>, soit <tt>Y_AUTOSTART_ON</tt>, selon l\x27\xE9tat du watching au d\xE9marrage du module'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Watchdog']['set_logicalName']={syn:'Modifie le nom logique du watchdog.',lib:'watchdog.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Modifie le nom logique du watchdog. Vous pouvez utiliser <tt>yCheckLogicalName()</tt> pour v\xE9rifier si votre param\xE8tre est valide. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du watchdog.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27appel se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Watchdog']['set_maxTimeOnStateA']={syn:'R\xE8gle le temps maximal (en ms) pendant lequel le watchdog peut rester dans l\x27\xE9tat A avant de basculer automatiquement dans l\x27\xE9tat B.',lib:'watchdog.set_maxTimeOnStateA()',pro:'def set_maxTimeOnStateA(<span id=pn>newval</span>)',cmt:'<p>R\xE8gle le temps maximal (en ms) pendant lequel le watchdog peut rester dans l\x27\xE9tat A avant de basculer automatiquement dans l\x27\xE9tat B. Z\xE9ro signifie qu\x27il n\x27y a pas de limitation</p>',par:{newval:'un entier'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Watchdog']['set_maxTimeOnStateB']={syn:'R\xE8gle le temps maximal (en ms) pendant lequel le watchdog peut rester dans l\x27\xE9tat B avant de basculer automatiquement dans l\x27\xE9tat A.',lib:'watchdog.set_maxTimeOnStateB()',pro:'def set_maxTimeOnStateB(<span id=pn>newval</span>)',cmt:'<p>R\xE8gle le temps maximal (en ms) pendant lequel le watchdog peut rester dans l\x27\xE9tat B avant de basculer automatiquement dans l\x27\xE9tat A. Z\xE9ro signifie qu\x27il n\x27y a pas de limitation</p>',par:{newval:'un entier'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Watchdog']['set_output']={syn:'Modifie l\x27\xE9tat de la sortie du watchdog, lorsqu\x27il est utilis\xE9 comme un simple interrupteur.',lib:'watchdog.set_output()',pro:'def set_output(<span id=pn>newval</span>)',cmt:'<p>Modifie l\x27\xE9tat de la sortie du watchdog, lorsqu\x27il est utilis\xE9 comme un simple interrupteur.</p>',par:{newval:'soit <tt>Y_OUTPUT_OFF</tt>, soit <tt>Y_OUTPUT_ON</tt>, selon l\x27\xE9tat de la sortie du watchdog, lorsqu\x27il est utilis\xE9 comme un simple interrupteur'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Watchdog']['set_running']={syn:'Modifie manuellement l\x27\xE9tat de fonctionnement du watchdog.',lib:'watchdog.set_running()',pro:'def set_running(<span id=pn>newval</span>)',cmt:'<p>Modifie manuellement l\x27\xE9tat de fonctionnement du watchdog.</p>',par:{newval:'soit <tt>Y_RUNNING_OFF</tt>, soit <tt>Y_RUNNING_ON</tt>, selon manuellement l\x27\xE9tat de fonctionnement du watchdog'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Watchdog']['set_state']={syn:'Modifie l\x27\xE9tat du watchdog (A pour la position de repos, B pour l\x27\xE9tat actif).',lib:'watchdog.set_state()',pro:'def set_state(<span id=pn>newval</span>)',cmt:'<p>Modifie l\x27\xE9tat du watchdog (A pour la position de repos, B pour l\x27\xE9tat actif).</p>',par:{newval:'soit <tt>Y_STATE_A</tt>, soit <tt>Y_STATE_B</tt>, selon l\x27\xE9tat du watchdog (A pour la position de repos, B pour l\x27\xE9tat actif)'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Watchdog']['set_stateAtPowerOn']={syn:'Pr\xE9-programme l\x27\xE9tat du watchdog au d\xE9marrage du module(A pour la position de repos, B pour l\x27\xE9tat actif, UNCHANGED pour aucun changement).',lib:'watchdog.set_stateAtPowerOn()',pro:'def set_stateAtPowerOn(<span id=pn>newval</span>)',cmt:'<p>Pr\xE9-programme l\x27\xE9tat du watchdog au d\xE9marrage du module(A pour la position de repos, B pour l\x27\xE9tat actif, UNCHANGED pour aucun changement). N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module sinon la modification n\x27aura aucun effet.</p>',par:{newval:'une valeur parmi <tt>Y_STATEATPOWERON_UNCHANGED</tt>, <tt>Y_STATEATPOWERON_A</tt> et <tt>Y_STATEATPOWERON_B</tt>'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Watchdog']['set_triggerDelay']={syn:'Modifie le d\xE9lai d\x27attente avant qu\x27un reset ne soit g\xE9n\xE9r\xE9 par le watchog, en millisecondes.',lib:'watchdog.set_triggerDelay()',pro:'def set_triggerDelay(<span id=pn>newval</span>)',cmt:'<p>Modifie le d\xE9lai d\x27attente avant qu\x27un reset ne soit g\xE9n\xE9r\xE9 par le watchog, en millisecondes.</p>',par:{newval:'un entier repr&eacute;sentant le d\xE9lai d\x27attente avant qu\x27un reset ne soit g\xE9n\xE9r\xE9 par le watchog, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Watchdog']['set_triggerDuration']={syn:'Modifie la dur\xE9e des resets g\xE9n\xE9r\xE9s par le watchog, en millisecondes.',lib:'watchdog.set_triggerDuration()',pro:'def set_triggerDuration(<span id=pn>newval</span>)',cmt:'<p>Modifie la dur\xE9e des resets g\xE9n\xE9r\xE9s par le watchog, en millisecondes.</p>',par:{newval:'un entier repr&eacute;sentant la dur\xE9e des resets g\xE9n\xE9r\xE9s par le watchog, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Watchdog']['set_userData']={syn:'Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>.',lib:'watchdog.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',par:{data:'objet quelconque \xE0 m\xE9moriser'}};
+doc['Watchdog']['unmuteValueCallbacks']={syn:'R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'watchdog.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Cette fonction annule un pr\xE9c\xE9dent appel \xE0 <tt>muteValueCallbacks()</tt>. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+//--- (end of generated code: Watchdog)
+//--- (generated code: Power)
+doc['Power']={'':{syn:'Interface de la fonction Power',inc:'from yocto_power import *',cmt:'<p>La classe YPower permet de lire et de configurer les capteurs de puissance Yoctopuce. Elle h\xE9rite de la class YSensor toutes les fonctions de base des capteurs Yoctopuce: lecture de mesures, callbacks, enregistreur de donn\xE9es. De plus, elle d\x27acc\xE9der au compteur d\x27\xE9nergie et \xE0 l\x27estimation du facteur de puissance.</p>'}};
+doc['Power']['FindPower']={syn:'Permet de retrouver un capteur de puissance electrique d\x27apr\xE8s un identifiant donn\xE9.',lib:'YPower.FindPower()',pro:'def FindPower(<span id=pn>func</span>)',cmt:'<p>Permet de retrouver un capteur de puissance electrique d\x27apr\xE8s un identifiant donn\xE9. L\x27identifiant peut \xEAtre sp\xE9cifi\xE9 sous plusieurs formes:<br> <ul> <li>NomLogiqueFonction</li> <li>NoSerieModule.IdentifiantFonction</li> <li>NoSerieModule.NomLogiqueFonction</li> <li>NomLogiqueModule.IdentifiantMat\xE9riel</li> <li>NomLogiqueModule.NomLogiqueFonction</li> </ul></p><p> Cette fonction n\x27exige pas que le capteur de puissance electrique soit en ligne au moment ou elle est appel\xE9e, l\x27objet retourn\xE9 sera n\xE9anmoins valide. Utiliser la m\xE9thode <tt>YPower.isOnline()</tt> pour tester si le capteur de puissance electrique est utilisable \xE0 un moment donn\xE9. En cas d\x27ambigu\xEFt\xE9 lorsqu\x27on fait une recherche par nom logique, aucune erreur ne sera notifi\xE9e: la premi\xE8re instance trouv\xE9e sera renvoy\xE9e. La recherche se fait d\x27abord par nom mat\xE9riel, puis par nom logique.</p>',par:{func:'une cha\xEEne de caract\xE8res qui r\xE9f\xE9rence le capteur de puissance electrique sans ambigu\xEFt\xE9'},ret:'un objet de classe <tt>YPower</tt> qui permet ensuite de contr\xF4ler le capteur de puissance electrique.'};
+doc['Power']['FirstPower']={syn:'Commence l\x27\xE9num\xE9ration des capteurs de puissance electrique accessibles par la librairie.',lib:'YPower.FirstPower()',pro:'def FirstPower()',cmt:'<p>Commence l\x27\xE9num\xE9ration des capteurs de puissance electrique accessibles par la librairie. Utiliser la fonction <tt>YPower.nextPower()</tt> pour it\xE9rer sur les autres capteurs de puissance electrique.</p>',ret:'un pointeur sur un objet <tt>YPower</tt>, correspondant au premier capteur de puissance electrique accessible en ligne, ou <tt>null</tt> si il n\x27y a pas de capteurs de puissance electrique disponibles.'};
+doc['Power']['calibrateFromPoints']={syn:'Enregistre des points de correction de mesure, typiquement pour compenser l\x27effet d\x27un bo\xEEtier sur les mesures rendues par le capteur.',lib:'power.calibrateFromPoints()',pro:'def calibrateFromPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Enregistre des points de correction de mesure, typiquement pour compenser l\x27effet d\x27un bo\xEEtier sur les mesures rendues par le capteur. Il est possible d\x27enregistrer jusqu\x27\xE0 cinq points de correction. Les points de correction doivent \xEAtre fournis en ordre croissant, et dans la plage valide du capteur. Le module effectue automatiquement une interpolation lin\xE9aire de l\x27erreur entre les points sp\xE9cifi\xE9s. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p><p> Pour plus de plus amples possibilit\xE9s d\x27appliquer une surcalibration aux capteurs, veuillez contacter support@yoctopuce.com.</p>',par:{rawValues:'tableau de nombres flottants, correspondant aux valeurs brutes rendues par le capteur pour les points de correction.',refValues:'tableau de nombres flottants, correspondant aux valeurs corrig\xE9es d\xE9sir\xE9es pour les points de correction.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Power']['clearCache']={syn:'Invalide le cache.',lib:'power.clearCache()',pro:'def clearCache()',cmt:'<p>Invalide le cache. Invalide le cache des valeurs courantes du capteur de puissance electrique. Force le prochain appel \xE0 une m\xE9thode get_xxx() ou loadxxx() pour charger les les donn\xE9es depuis le module.</p>'};
+doc['Power']['describe']={syn:'Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du capteur de puissance electrique au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'power.describe()',pro:'def describe()',cmt:'<p>Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du capteur de puissance electrique au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. Plus pr\xE9cis\xE9ment, <tt>TYPE</tt> correspond au type de fonction, <tt>NAME</tt> correspond au nom utils\xE9 lors du premier acc\xE8s a la fonction, <tt>SERIAL</tt> correspond au num\xE9ro de s\xE9rie du module si le module est connect\xE9, ou <tt>\x22unresolved\x22</tt> sinon, et <tt>FUNCTIONID</tt> correspond \xE0 l\x27identifiant mat\xE9riel de la fonction si le module est connect\xE9. Par exemple, La methode va retourner <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> si le module est d\xE9j\xE0 connect\xE9 ou <tt>Relay(BadCustomeName.relay1)=unresolved</tt> si le module n\x27est pas d\xE9j\xE0 connect\xE9. Cette methode ne declenche aucune transaction USB ou TCP et peut donc \xEAtre utilis\xE9 dans un debuggeur.</p>',ret:'une cha\xEEne de caract\xE8res d\xE9crivant le capteur de puissance electrique (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['Power']['get_advertisedValue']={syn:'Retourne la valeur courante du capteur de puissance electrique (pas plus de 6 caract\xE8res).',lib:'power.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Retourne la valeur courante du capteur de puissance electrique (pas plus de 6 caract\xE8res).</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur courante du capteur de puissance electrique (pas plus de 6 caract\xE8res).',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['Power']['get_cosPhi']={syn:'Retourne le facteur de puissance (rapport entre la puissance r\xE9elle consomm\xE9e, en W, et la puissance apparente fournie, en VA).',lib:'power.get_cosPhi()',pro:'def get_cosPhi()',cmt:'<p>Retourne le facteur de puissance (rapport entre la puissance r\xE9elle consomm\xE9e, en W, et la puissance apparente fournie, en VA).</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant le facteur de puissance (rapport entre la puissance r\xE9elle consomm\xE9e, en W, et la puissance apparente fournie, en VA)',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_COSPHI_INVALID</tt>.'};
+doc['Power']['get_currentRawValue']={syn:'Retourne la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en Watt, sous forme de nombre \xE0 virgule.',lib:'power.get_currentRawValue()',pro:'def get_currentRawValue()',cmt:'<p>Retourne la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en Watt, sous forme de nombre \xE0 virgule.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en Watt, sous forme de nombre \xE0 virgule',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_CURRENTRAWVALUE_INVALID</tt>.'};
+doc['Power']['get_currentValue']={syn:'Retourne la valeur actuelle de la puissance \xE9lectrique, en Watt, sous forme de nombre \xE0 virgule.',lib:'power.get_currentValue()',pro:'def get_currentValue()',cmt:'<p>Retourne la valeur actuelle de la puissance \xE9lectrique, en Watt, sous forme de nombre \xE0 virgule.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur actuelle de la puissance \xE9lectrique, en Watt, sous forme de nombre \xE0 virgule',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_CURRENTVALUE_INVALID</tt>.'};
+doc['Power']['get_errorMessage']={syn:'Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du capteur de puissance electrique.',lib:'power.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du capteur de puissance electrique. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'une cha\xEEne de caract\xE8res correspondant au message de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du capteur de puissance electrique.'};
+doc['Power']['get_errorType']={syn:'Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du capteur de puissance electrique.',lib:'power.get_errorType()',pro:'def get_errorType()',cmt:'<p>Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du capteur de puissance electrique. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'un nombre correspondant au code de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du capteur de puissance electrique.'};
+doc['Power']['get_friendlyName']={syn:'Retourne un identifiant global du capteur de puissance electrique au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>.',lib:'power.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Retourne un identifiant global du capteur de puissance electrique au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>. Le cha\xEEne retourn\xE9e utilise soit les noms logiques du module et du capteur de puissance electrique si ils sont d\xE9finis, soit respectivement le num\xE9ro de s\xE9rie du module et l\x27identifant mat\xE9riel du capteur de puissance electrique (par exemple: <tt>MyCustomName.relay1</tt>)</p>',ret:'une cha\xEEne de caract\xE8res identifiant le capteur de puissance electrique en utilisant les noms logiques (ex: <tt>MyCustomName.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['Power']['get_functionDescriptor']={syn:'Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction.',lib:'power.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction. Cet identifiant peut \xEAtre utilis\xE9 pour tester si deux instance de <tt>YFunction</tt> r\xE9f\xE9rencent physiquement la m\xEAme fonction sur le m\xEAme module.</p>',ret:'un identifiant de type <tt>YFUN_DESCR</tt>.',ext:'Si la fonction n\x27a jamais \xE9t\xE9 contact\xE9e, la valeur retourn\xE9e sera <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>'};
+doc['Power']['get_functionId']={syn:'Retourne l\x27identifiant mat\xE9riel du capteur de puissance electrique, sans r\xE9f\xE9rence au module.',lib:'power.get_functionId()',pro:'def get_functionId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel du capteur de puissance electrique, sans r\xE9f\xE9rence au module. Par example <tt>relay1</tt>.</p>',ret:'une cha\xEEne de caract\xE8res identifiant le capteur de puissance electrique (ex: <tt>relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['Power']['get_hardwareId']={syn:'Retourne l\x27identifiant mat\xE9riel unique du capteur de puissance electrique au format <tt>SERIAL.FUNCTIONID</tt>.',lib:'power.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel unique du capteur de puissance electrique au format <tt>SERIAL.FUNCTIONID</tt>. L\x27identifiant unique est compos\xE9 du num\xE9ro de s\xE9rie du module et de l\x27identifiant mat\xE9riel du capteur de puissance electrique (par example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'une cha\xEEne de caract\xE8res identifiant le capteur de puissance electrique (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['Power']['get_highestValue']={syn:'Retourne la valeur maximale observ\xE9e pour la puissance \xE9lectrique depuis le d\xE9marrage du module.',lib:'power.get_highestValue()',pro:'def get_highestValue()',cmt:'<p>Retourne la valeur maximale observ\xE9e pour la puissance \xE9lectrique depuis le d\xE9marrage du module.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur maximale observ\xE9e pour la puissance \xE9lectrique depuis le d\xE9marrage du module',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_HIGHESTVALUE_INVALID</tt>.'};
+doc['Power']['get_logFrequency']={syn:'Retourne la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es.',lib:'power.get_logFrequency()',pro:'def get_logFrequency()',cmt:'<p>Retourne la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_LOGFREQUENCY_INVALID</tt>.'};
+doc['Power']['get_logicalName']={syn:'Retourne le nom logique du capteur de puissance electrique.',lib:'power.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Retourne le nom logique du capteur de puissance electrique.</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du capteur de puissance electrique.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['Power']['get_lowestValue']={syn:'Retourne la valeur minimale observ\xE9e pour la puissance \xE9lectrique depuis le d\xE9marrage du module.',lib:'power.get_lowestValue()',pro:'def get_lowestValue()',cmt:'<p>Retourne la valeur minimale observ\xE9e pour la puissance \xE9lectrique depuis le d\xE9marrage du module.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur minimale observ\xE9e pour la puissance \xE9lectrique depuis le d\xE9marrage du module',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_LOWESTVALUE_INVALID</tt>.'};
+doc['Power']['get_meter']={syn:'Retourne la valeur actuelle du compteur d\x27energie, calcul\xE9e par le wattm\xE8tre en int\xE9grant la consommation instantan\xE9e.',lib:'power.get_meter()',pro:'def get_meter()',cmt:'<p>Retourne la valeur actuelle du compteur d\x27energie, calcul\xE9e par le wattm\xE8tre en int\xE9grant la consommation instantan\xE9e. Ce compteur est r\xE9initialis\xE9 \xE0 chaque d\xE9marrage du module.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur actuelle du compteur d\x27energie, calcul\xE9e par le wattm\xE8tre en int\xE9grant la consommation instantan\xE9e',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_METER_INVALID</tt>.'};
+doc['Power']['get_meterTimer']={syn:'Retourne le temps \xE9coul\xE9 depuis la derni\xE8re initilialisation du compteur d\x27\xE9nergie, en secondes ',lib:'power.get_meterTimer()',pro:'def get_meterTimer()',cmt:'<p>Retourne le temps \xE9coul\xE9 depuis la derni\xE8re initilialisation du compteur d\x27\xE9nergie, en secondes</p>',ret:'un entier repr&eacute;sentant le temps \xE9coul\xE9 depuis la derni\xE8re initilialisation du compteur d\x27\xE9nergie, en secondes',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_METERTIMER_INVALID</tt>.'};
+doc['Power']['get_module']={syn:'Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction.',lib:'power.get_module()',pro:'def get_module()',cmt:'<p>Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction. Si la fonction ne peut \xEAtre trouv\xE9e sur aucun module, l\x27instance de <tt>YModule</tt> retourn\xE9e ne sera pas joignable.</p>',ret:'une instance de <tt>YModule</tt>'};
+doc['Power']['get_recordedData']={syn:'Retourne un objet DataSet repr\xE9sentant des mesures de ce capteur pr\xE9c\xE9demment enregistr\xE9es \xE0 l\x27aide du DataLogger, pour l\x27intervalle de temps sp\xE9cifi\xE9.',lib:'power.get_recordedData()',pro:'def get_recordedData(<span id=pn>startTime</span>, <span id=pn>endTime</span>)',cmt:'<p>Retourne un objet DataSet repr\xE9sentant des mesures de ce capteur pr\xE9c\xE9demment enregistr\xE9es \xE0 l\x27aide du DataLogger, pour l\x27intervalle de temps sp\xE9cifi\xE9. Veuillez vous r\xE9f\xE9rer \xE0 la documentation de la classe DataSet pour plus plus d\x27informations sur la mani\xE8re d\x27obtenir un aper\xE7u des mesures pour la p\xE9riode, et comment charger progressivement une grande quantit\xE9 de mesures depuis le dataLogger.</p><p> Cette m\xE9thode ne fonctionne que si le module utilise un firmware r\xE9cent, car les objets DataSet ne sont pas support\xE9s par les firmwares ant\xE9rieurs \xE0 la r\xE9vision 13000.</p>',par:{startTime:'le d\xE9but de l\x27intervalle de mesure d\xE9sir\xE9, c\x27est \xE0 dire en nombre de secondes depuis le 1er janvier 1970 UTC. La valeur 0 peut \xEAtre utilis\xE9e pour ne poser aucune limite sur le d\xE9but des mesures.',endTime:'la find de l\x27intercalle de mesure d\xE9sir\xE9, c\x27est \xE0 dire en nombre de secondes depuis le 1er janvier 1970 UTC. La valeur 0 peut \xEAtre utilis\xE9e pour ne poser aucune limite de fin.'},ret:'une instance de YDataSet, dont les m\xE9thodes permettent de d\x27acc\xE9der aux donn\xE9es historiques souhait\xE9es.'};
+doc['Power']['get_reportFrequency']={syn:'Retourne la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction.',lib:'power.get_reportFrequency()',pro:'def get_reportFrequency()',cmt:'<p>Retourne la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_REPORTFREQUENCY_INVALID</tt>.'};
+doc['Power']['get_resolution']={syn:'Retourne la r\xE9solution des valeurs mesur\xE9es.',lib:'power.get_resolution()',pro:'def get_resolution()',cmt:'<p>Retourne la r\xE9solution des valeurs mesur\xE9es. La r\xE9solution correspond \xE0 la pr\xE9cision num\xE9rique de la repr\xE9sentation des mesures. Elle n\x27est pas forc\xE9ment identique \xE0 la pr\xE9cision r\xE9elle du capteur.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la r\xE9solution des valeurs mesur\xE9es',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_RESOLUTION_INVALID</tt>.'};
+doc['Power']['get_sensorState']={syn:'Retourne le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment.',lib:'power.get_sensorState()',pro:'def get_sensorState()',cmt:'<p>Retourne le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment.</p>',ret:'un entier repr&eacute;sentant le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_SENSORSTATE_INVALID</tt>.'};
+doc['Power']['get_unit']={syn:'Retourne l\x27unit\xE9 dans laquelle la puissance \xE9lectrique est exprim\xE9e.',lib:'power.get_unit()',pro:'def get_unit()',cmt:'<p>Retourne l\x27unit\xE9 dans laquelle la puissance \xE9lectrique est exprim\xE9e.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant l\x27unit\xE9 dans laquelle la puissance \xE9lectrique est exprim\xE9e',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_UNIT_INVALID</tt>.'};
+doc['Power']['get_userData']={syn:'Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>.',lib:'power.get_userData()',pro:'def get_userData()',cmt:'<p>Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',ret:'l\x27objet stock\xE9 pr\xE9c\xE9demment par l\x27appelant.'};
+doc['Power']['isOnline']={syn:'V\xE9rifie si le module h\xE9bergeant le capteur de puissance electrique est joignable, sans d\xE9clencher d\x27erreur.',lib:'power.isOnline()',pro:'def isOnline()',cmt:'<p>V\xE9rifie si le module h\xE9bergeant le capteur de puissance electrique est joignable, sans d\xE9clencher d\x27erreur. Si les valeurs des attributs en cache du capteur de puissance electrique sont valides au moment de l\x27appel, le module est consid\xE9r\xE9 joignable. Cette fonction ne cause en aucun cas d\x27exception, quelle que soit l\x27erreur qui pourrait se produire lors de la v\xE9rification de joignabilit\xE9.</p>',ret:'<tt>true</tt> si le capteur de puissance electrique est joignable, <tt>false</tt> sinon'};
+doc['Power']['load']={syn:'Met en cache les valeurs courantes du capteur de puissance electrique, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e.',lib:'power.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Met en cache les valeurs courantes du capteur de puissance electrique, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e. Par d\xE9faut, lorsqu\x27on acc\xE8de \xE0 un module, tous les attributs des fonctions du module sont automatiquement mises en cache pour la dur\xE9e standard (5 ms). Cette m\xE9thode peut \xEAtre utilis\xE9e pour marquer occasionellement les donn\xE9es cach\xE9es comme valides pour une plus longue p\xE9riode, par exemple dans le but de r\xE9duire le trafic r\xE9seau.</p>',par:{msValidity:'un entier correspondant \xE0 la dur\xE9e de validit\xE9 attribu\xE9e aux les param\xE8tres charg\xE9s, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Power']['loadAttribute']={syn:'Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.',lib:'power.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un cha\xEEne vide.'};
+doc['Power']['loadCalibrationPoints']={syn:'R\xE9cup\xE8re les points de correction de mesure pr\xE9c\xE9demment enregistr\xE9s \xE0 l\x27aide de la m\xE9thode <tt>calibrateFromPoints</tt>.',lib:'power.loadCalibrationPoints()',pro:'def loadCalibrationPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>R\xE9cup\xE8re les points de correction de mesure pr\xE9c\xE9demment enregistr\xE9s \xE0 l\x27aide de la m\xE9thode <tt>calibrateFromPoints</tt>.</p>',par:{rawValues:'tableau de nombres flottants, qui sera rempli par la fonction avec les valeurs brutes des points de correction.',refValues:'tableau de nombres flottants, qui sera rempli par la fonction avec les valeurs d\xE9sir\xE9es des points de correction.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Power']['muteValueCallbacks']={syn:'D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'power.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Vous pouvez utiliser cette fonction pour \xE9conomiser la bande passante et le CPU sur les machines de faible puissance, ou pour \xE9viter le d\xE9clanchement de callbacks HTTP. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Power']['nextPower']={syn:'Continue l\x27\xE9num\xE9ration des capteurs de puissance electrique commenc\xE9e \xE0 l\x27aide de <tt>yFirstPower()</tt>.',lib:'power.nextPower()',pro:'def nextPower()',cmt:'<p>Continue l\x27\xE9num\xE9ration des capteurs de puissance electrique commenc\xE9e \xE0 l\x27aide de <tt>yFirstPower()</tt>.</p>',ret:'un pointeur sur un objet <tt>YPower</tt> accessible en ligne, ou <tt>null</tt> lorsque l\x27\xE9num\xE9ration est termin\xE9e.'};
+doc['Power']['registerTimedReportCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque notification p\xE9riodique.',lib:'power.registerTimedReportCallback()',pro:'def registerTimedReportCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque notification p\xE9riodique. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callbacks peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callbacks ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et un objet YMeasure d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['Power']['registerValueCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e.',lib:'power.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callback peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callback ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et la cha\xEEne de caract\xE8re d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['Power']['reset']={syn:'R\xE9initialise le compteur d\x27\xE9nergie.',lib:'power.reset()',pro:'def reset()',cmt:'<p>R\xE9initialise le compteur d\x27\xE9nergie.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Power']['set_highestValue']={syn:'Modifie la m\xE9moire de valeur maximale observ\xE9e.',lib:'power.set_highestValue()',pro:'def set_highestValue(<span id=pn>newval</span>)',cmt:'<p>Modifie la m\xE9moire de valeur maximale observ\xE9e.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la m\xE9moire de valeur maximale observ\xE9e'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Power']['set_logFrequency']={syn:'Modifie la fr\xE9quence d\x27enregistrement des mesures dans le datalogger.',lib:'power.set_logFrequency()',pro:'def set_logFrequency(<span id=pn>newval</span>)',cmt:'<p>Modifie la fr\xE9quence d\x27enregistrement des mesures dans le datalogger. La fr\xE9quence peut \xEAtre sp\xE9cifi\xE9e en mesures par secondes, en mesures par minutes (par exemple \x2215/m\x22) ou en mesures par heure (par exemple \x224/h\x22). Pour d\xE9sactiver l\x27enregistrement des mesures de cette fonction, utilisez la valeur \x22OFF\x22.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence d\x27enregistrement des mesures dans le datalogger'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Power']['set_logicalName']={syn:'Modifie le nom logique du capteur de puissance electrique.',lib:'power.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Modifie le nom logique du capteur de puissance electrique. Vous pouvez utiliser <tt>yCheckLogicalName()</tt> pour v\xE9rifier si votre param\xE8tre est valide. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du capteur de puissance electrique.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27appel se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Power']['set_lowestValue']={syn:'Modifie la m\xE9moire de valeur minimale observ\xE9e.',lib:'power.set_lowestValue()',pro:'def set_lowestValue(<span id=pn>newval</span>)',cmt:'<p>Modifie la m\xE9moire de valeur minimale observ\xE9e.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la m\xE9moire de valeur minimale observ\xE9e'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Power']['set_reportFrequency']={syn:'Modifie la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es.',lib:'power.set_reportFrequency()',pro:'def set_reportFrequency(<span id=pn>newval</span>)',cmt:'<p>Modifie la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es. La fr\xE9quence peut \xEAtre sp\xE9cifi\xE9e en mesures par secondes, en mesures par minutes (par exemple \x2215/m\x22) ou en mesures par heure (par exemple \x224/h\x22). Pour d\xE9sactiver les notifications p\xE9riodiques pour cette fonction, utilisez la valeur \x22OFF\x22.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Power']['set_resolution']={syn:'Modifie la r\xE9solution des valeurs physique mesur\xE9es.',lib:'power.set_resolution()',pro:'def set_resolution(<span id=pn>newval</span>)',cmt:'<p>Modifie la r\xE9solution des valeurs physique mesur\xE9es. La r\xE9solution correspond \xE0 la pr\xE9cision de l\x27affichage des mesures. Elle ne change pas la pr\xE9cision de la mesure elle-m\xEAme.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la r\xE9solution des valeurs physique mesur\xE9es'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Power']['set_userData']={syn:'Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>.',lib:'power.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',par:{data:'objet quelconque \xE0 m\xE9moriser'}};
+doc['Power']['startDataLogger']={syn:'D\xE9marre l\x27enregistreur de donn\xE9es du module.',lib:'power.startDataLogger()',pro:'def startDataLogger()',cmt:'<p>D\xE9marre l\x27enregistreur de donn\xE9es du module. Attention, l\x27enregistreur ne sauvera les mesures de ce capteur que si la fr\xE9quence d\x27enregistrement (logFrequency) n\x27est pas sur \x22OFF\x22.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.'};
+doc['Power']['stopDataLogger']={syn:'Arr\xEAte l\x27enregistreur de donn\xE9es du module.',lib:'power.stopDataLogger()',pro:'def stopDataLogger()',cmt:'<p>Arr\xEAte l\x27enregistreur de donn\xE9es du module.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.'};
+doc['Power']['unmuteValueCallbacks']={syn:'R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'power.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Cette fonction annule un pr\xE9c\xE9dent appel \xE0 <tt>muteValueCallbacks()</tt>. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+//--- (end of generated code: Power)
+//--- (generated code: Display)
+doc['Display']={'':{syn:'Interface de la fonction Display',inc:'from yocto_display import *',cmt:'<p>L\x27interface de contr\xF4le des \xE9crans Yoctopuce est con\xE7ue pour afficher facilement des informations et des images. Le module est capable de g\xE9rer seul la superposition de plusieurs couches graphiques, qui peuvent \xEAtre dessin\xE9es individuellement, sans affichage imm\xE9diat, puis librement positionn\xE9es sur l\x27\xE9cran. Il est aussi capable de rejouer des s\xE9quences de commandes pr\xE9-enregistr\xE9es (animations).</p>'}};
+doc['Display']['FindDisplay']={syn:'Permet de retrouver un ecran d\x27apr\xE8s un identifiant donn\xE9.',lib:'YDisplay.FindDisplay()',pro:'def FindDisplay(<span id=pn>func</span>)',cmt:'<p>Permet de retrouver un ecran d\x27apr\xE8s un identifiant donn\xE9. L\x27identifiant peut \xEAtre sp\xE9cifi\xE9 sous plusieurs formes:<br> <ul> <li>NomLogiqueFonction</li> <li>NoSerieModule.IdentifiantFonction</li> <li>NoSerieModule.NomLogiqueFonction</li> <li>NomLogiqueModule.IdentifiantMat\xE9riel</li> <li>NomLogiqueModule.NomLogiqueFonction</li> </ul></p><p> Cette fonction n\x27exige pas que l\x27ecran soit en ligne au moment ou elle est appel\xE9e, l\x27objet retourn\xE9 sera n\xE9anmoins valide. Utiliser la m\xE9thode <tt>YDisplay.isOnline()</tt> pour tester si l\x27ecran est utilisable \xE0 un moment donn\xE9. En cas d\x27ambigu\xEFt\xE9 lorsqu\x27on fait une recherche par nom logique, aucune erreur ne sera notifi\xE9e: la premi\xE8re instance trouv\xE9e sera renvoy\xE9e. La recherche se fait d\x27abord par nom mat\xE9riel, puis par nom logique.</p>',par:{func:'une cha\xEEne de caract\xE8res qui r\xE9f\xE9rence l\x27ecran sans ambigu\xEFt\xE9'},ret:'un objet de classe <tt>YDisplay</tt> qui permet ensuite de contr\xF4ler l\x27ecran.'};
+doc['Display']['FirstDisplay']={syn:'Commence l\x27\xE9num\xE9ration des \xE9cran accessibles par la librairie.',lib:'YDisplay.FirstDisplay()',pro:'def FirstDisplay()',cmt:'<p>Commence l\x27\xE9num\xE9ration des \xE9cran accessibles par la librairie. Utiliser la fonction <tt>YDisplay.nextDisplay()</tt> pour it\xE9rer sur les autres \xE9cran.</p>',ret:'un pointeur sur un objet <tt>YDisplay</tt>, correspondant au premier \xE9cran accessible en ligne, ou <tt>null</tt> si il n\x27y a pas de \xE9cran disponibles.'};
+doc['Display']['clearCache']={syn:'Invalide le cache.',lib:'display.clearCache()',pro:'def clearCache()',cmt:'<p>Invalide le cache. Invalide le cache des valeurs courantes de l\x27ecran. Force le prochain appel \xE0 une m\xE9thode get_xxx() ou loadxxx() pour charger les les donn\xE9es depuis le module.</p>'};
+doc['Display']['copyLayerContent']={syn:'Copie le contentu d\x27un couche d\x27affichage vers une autre couche.',lib:'display.copyLayerContent()',pro:'def copyLayerContent(<span id=pn>srcLayerId</span>, <span id=pn>dstLayerId</span>)',cmt:'<p>Copie le contentu d\x27un couche d\x27affichage vers une autre couche. La couleur et la transparence de tous les pixels de la couche de destination sont chang\xE9s pour correspondre \xE0 la couche source. Cette m\xE9thode modifie le contenu affich\xE9, mais n\x27a aucun effet sur les propri\xE9t\xE9s de l\x27objet layer lui-m\xEAme. Notez que la couche z\xE9ro n\x27a pas de transparence (elle est toujours opaque).</p>',par:{srcLayerId:'l\x27identifiant de la couche d\x27origine (un chiffre parmi 0..layerCount-1)',dstLayerId:'l\x27identifiant de la couche de destination (un chiffre parmi 0..layerCount-1)'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Display']['describe']={syn:'Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance de l\x27ecran au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'display.describe()',pro:'def describe()',cmt:'<p>Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance de l\x27ecran au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. Plus pr\xE9cis\xE9ment, <tt>TYPE</tt> correspond au type de fonction, <tt>NAME</tt> correspond au nom utils\xE9 lors du premier acc\xE8s a la fonction, <tt>SERIAL</tt> correspond au num\xE9ro de s\xE9rie du module si le module est connect\xE9, ou <tt>\x22unresolved\x22</tt> sinon, et <tt>FUNCTIONID</tt> correspond \xE0 l\x27identifiant mat\xE9riel de la fonction si le module est connect\xE9. Par exemple, La methode va retourner <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> si le module est d\xE9j\xE0 connect\xE9 ou <tt>Relay(BadCustomeName.relay1)=unresolved</tt> si le module n\x27est pas d\xE9j\xE0 connect\xE9. Cette methode ne declenche aucune transaction USB ou TCP et peut donc \xEAtre utilis\xE9 dans un debuggeur.</p>',ret:'une cha\xEEne de caract\xE8res d\xE9crivant l\x27ecran (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['Display']['fade']={syn:'Change la luminosit\xE9 de l\x27\xE9cran en douceur, pour produire un effet de fade-in ou fade-out.',lib:'display.fade()',pro:'def fade(<span id=pn>brightness</span>, <span id=pn>duration</span>)',cmt:'<p>Change la luminosit\xE9 de l\x27\xE9cran en douceur, pour produire un effet de fade-in ou fade-out.</p>',par:{brightness:'nouvelle valeur de luminosit\xE9 de l\x27\xE9cran',duration:'dur\xE9e en millisecondes de la transition.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Display']['get_advertisedValue']={syn:'Retourne la valeur courante de l\x27ecran (pas plus de 6 caract\xE8res).',lib:'display.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Retourne la valeur courante de l\x27ecran (pas plus de 6 caract\xE8res).</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur courante de l\x27ecran (pas plus de 6 caract\xE8res).',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['Display']['get_brightness']={syn:'Retourne la luminosit\xE9 des leds informatives du module (valeur entre 0 et 100).',lib:'display.get_brightness()',pro:'def get_brightness()',cmt:'<p>Retourne la luminosit\xE9 des leds informatives du module (valeur entre 0 et 100).</p>',ret:'un entier repr&eacute;sentant la luminosit\xE9 des leds informatives du module (valeur entre 0 et 100)',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_BRIGHTNESS_INVALID</tt>.'};
+doc['Display']['get_displayHeight']={syn:'Retourne la hauteur de l\x27\xE9cran, en pixels.',lib:'display.get_displayHeight()',pro:'def get_displayHeight()',cmt:'<p>Retourne la hauteur de l\x27\xE9cran, en pixels.</p>',ret:'un entier repr&eacute;sentant la hauteur de l\x27\xE9cran, en pixels',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_DISPLAYHEIGHT_INVALID</tt>.'};
+doc['Display']['get_displayLayer']={syn:'Retourne un objet YDisplayLayer utilisable pour dessiner sur la couche d\x27affichage correspondante.',lib:'display.get_displayLayer()',pro:'def get_displayLayer(<span id=pn>layerId</span>)',cmt:'<p>Retourne un objet YDisplayLayer utilisable pour dessiner sur la couche d\x27affichage correspondante. Le contenu n\x27est visible sur l\x27\xE9cran que lorsque la couche est active sur l\x27\xE9cran (et non masqu\xE9e par une couche sup\xE9rieure).</p>',par:{layerId:'l\x27identifiant de la couche d\x27affichage d\xE9sir\xE9e (un chiffre parmi 0..layerCount-1)'},ret:'un objet <tt>YDisplayLayer</tt>',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>null</tt>.'};
+doc['Display']['get_displayType']={syn:'Retourne le type de l\x27\xE9cran: monochrome, niveaux de gris ou couleur.',lib:'display.get_displayType()',pro:'def get_displayType()',cmt:'<p>Retourne le type de l\x27\xE9cran: monochrome, niveaux de gris ou couleur.</p>',ret:'une valeur parmi <tt>Y_DISPLAYTYPE_MONO</tt>, <tt>Y_DISPLAYTYPE_GRAY</tt> et <tt>Y_DISPLAYTYPE_RGB</tt> repr&eacute;sentant le type de l\x27\xE9cran: monochrome, niveaux de gris ou couleur',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_DISPLAYTYPE_INVALID</tt>.'};
+doc['Display']['get_displayWidth']={syn:'Retourne la largeur de l\x27\xE9cran, en pixels.',lib:'display.get_displayWidth()',pro:'def get_displayWidth()',cmt:'<p>Retourne la largeur de l\x27\xE9cran, en pixels.</p>',ret:'un entier repr&eacute;sentant la largeur de l\x27\xE9cran, en pixels',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_DISPLAYWIDTH_INVALID</tt>.'};
+doc['Display']['get_enabled']={syn:'Retourne vrai si le l\x27ecran est aliment\xE9, faux sinon.',lib:'display.get_enabled()',pro:'def get_enabled()',cmt:'<p>Retourne vrai si le l\x27ecran est aliment\xE9, faux sinon.</p>',ret:'soit <tt>Y_ENABLED_FALSE</tt>, soit <tt>Y_ENABLED_TRUE</tt>, selon vrai si le l\x27ecran est aliment\xE9, faux sinon',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_ENABLED_INVALID</tt>.'};
+doc['Display']['get_errorMessage']={syn:'Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de l\x27ecran.',lib:'display.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de l\x27ecran. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'une cha\xEEne de caract\xE8res correspondant au message de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation de l\x27ecran.'};
+doc['Display']['get_errorType']={syn:'Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de l\x27ecran.',lib:'display.get_errorType()',pro:'def get_errorType()',cmt:'<p>Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de l\x27ecran. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'un nombre correspondant au code de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation de l\x27ecran.'};
+doc['Display']['get_friendlyName']={syn:'Retourne un identifiant global de l\x27ecran au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>.',lib:'display.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Retourne un identifiant global de l\x27ecran au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>. Le cha\xEEne retourn\xE9e utilise soit les noms logiques du module et de l\x27ecran si ils sont d\xE9finis, soit respectivement le num\xE9ro de s\xE9rie du module et l\x27identifant mat\xE9riel de l\x27ecran (par exemple: <tt>MyCustomName.relay1</tt>)</p>',ret:'une cha\xEEne de caract\xE8res identifiant l\x27ecran en utilisant les noms logiques (ex: <tt>MyCustomName.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['Display']['get_functionDescriptor']={syn:'Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction.',lib:'display.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction. Cet identifiant peut \xEAtre utilis\xE9 pour tester si deux instance de <tt>YFunction</tt> r\xE9f\xE9rencent physiquement la m\xEAme fonction sur le m\xEAme module.</p>',ret:'un identifiant de type <tt>YFUN_DESCR</tt>.',ext:'Si la fonction n\x27a jamais \xE9t\xE9 contact\xE9e, la valeur retourn\xE9e sera <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>'};
+doc['Display']['get_functionId']={syn:'Retourne l\x27identifiant mat\xE9riel de l\x27ecran, sans r\xE9f\xE9rence au module.',lib:'display.get_functionId()',pro:'def get_functionId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel de l\x27ecran, sans r\xE9f\xE9rence au module. Par example <tt>relay1</tt>.</p>',ret:'une cha\xEEne de caract\xE8res identifiant l\x27ecran (ex: <tt>relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['Display']['get_hardwareId']={syn:'Retourne l\x27identifiant mat\xE9riel unique de l\x27ecran au format <tt>SERIAL.FUNCTIONID</tt>.',lib:'display.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel unique de l\x27ecran au format <tt>SERIAL.FUNCTIONID</tt>. L\x27identifiant unique est compos\xE9 du num\xE9ro de s\xE9rie du module et de l\x27identifiant mat\xE9riel de l\x27ecran (par example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'une cha\xEEne de caract\xE8res identifiant l\x27ecran (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['Display']['get_layerCount']={syn:'Retourne le nombre des couches affichables disponibles.',lib:'display.get_layerCount()',pro:'def get_layerCount()',cmt:'<p>Retourne le nombre des couches affichables disponibles.</p>',ret:'un entier repr&eacute;sentant le nombre des couches affichables disponibles',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_LAYERCOUNT_INVALID</tt>.'};
+doc['Display']['get_layerHeight']={syn:'Retourne la hauteur des couches affichables, en pixels.',lib:'display.get_layerHeight()',pro:'def get_layerHeight()',cmt:'<p>Retourne la hauteur des couches affichables, en pixels.</p>',ret:'un entier repr&eacute;sentant la hauteur des couches affichables, en pixels',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_LAYERHEIGHT_INVALID</tt>.'};
+doc['Display']['get_layerWidth']={syn:'Retourne la largeur des couches affichables, en pixels.',lib:'display.get_layerWidth()',pro:'def get_layerWidth()',cmt:'<p>Retourne la largeur des couches affichables, en pixels.</p>',ret:'un entier repr&eacute;sentant la largeur des couches affichables, en pixels',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_LAYERWIDTH_INVALID</tt>.'};
+doc['Display']['get_logicalName']={syn:'Retourne le nom logique de l\x27ecran.',lib:'display.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Retourne le nom logique de l\x27ecran.</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique de l\x27ecran.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['Display']['get_module']={syn:'Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction.',lib:'display.get_module()',pro:'def get_module()',cmt:'<p>Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction. Si la fonction ne peut \xEAtre trouv\xE9e sur aucun module, l\x27instance de <tt>YModule</tt> retourn\xE9e ne sera pas joignable.</p>',ret:'une instance de <tt>YModule</tt>'};
+doc['Display']['get_orientation']={syn:'Retourne l\x27orientation s\xE9lectionn\xE9e pour l\x27\xE9cran.',lib:'display.get_orientation()',pro:'def get_orientation()',cmt:'<p>Retourne l\x27orientation s\xE9lectionn\xE9e pour l\x27\xE9cran.</p>',ret:'une valeur parmi <tt>Y_ORIENTATION_LEFT</tt>, <tt>Y_ORIENTATION_UP</tt>, <tt>Y_ORIENTATION_RIGHT</tt> et <tt>Y_ORIENTATION_DOWN</tt> repr&eacute;sentant l\x27orientation s\xE9lectionn\xE9e pour l\x27\xE9cran',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_ORIENTATION_INVALID</tt>.'};
+doc['Display']['get_startupSeq']={syn:'Retourne le nom de la s\xE9quence \xE0 jouer \xE0 la mise sous tension de l\x27\xE9cran.',lib:'display.get_startupSeq()',pro:'def get_startupSeq()',cmt:'<p>Retourne le nom de la s\xE9quence \xE0 jouer \xE0 la mise sous tension de l\x27\xE9cran.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant le nom de la s\xE9quence \xE0 jouer \xE0 la mise sous tension de l\x27\xE9cran',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_STARTUPSEQ_INVALID</tt>.'};
+doc['Display']['get_userData']={syn:'Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>.',lib:'display.get_userData()',pro:'def get_userData()',cmt:'<p>Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',ret:'l\x27objet stock\xE9 pr\xE9c\xE9demment par l\x27appelant.'};
+doc['Display']['isOnline']={syn:'V\xE9rifie si le module h\xE9bergeant l\x27ecran est joignable, sans d\xE9clencher d\x27erreur.',lib:'display.isOnline()',pro:'def isOnline()',cmt:'<p>V\xE9rifie si le module h\xE9bergeant l\x27ecran est joignable, sans d\xE9clencher d\x27erreur. Si les valeurs des attributs en cache de l\x27ecran sont valides au moment de l\x27appel, le module est consid\xE9r\xE9 joignable. Cette fonction ne cause en aucun cas d\x27exception, quelle que soit l\x27erreur qui pourrait se produire lors de la v\xE9rification de joignabilit\xE9.</p>',ret:'<tt>true</tt> si l\x27ecran est joignable, <tt>false</tt> sinon'};
+doc['Display']['load']={syn:'Met en cache les valeurs courantes de l\x27ecran, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e.',lib:'display.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Met en cache les valeurs courantes de l\x27ecran, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e. Par d\xE9faut, lorsqu\x27on acc\xE8de \xE0 un module, tous les attributs des fonctions du module sont automatiquement mises en cache pour la dur\xE9e standard (5 ms). Cette m\xE9thode peut \xEAtre utilis\xE9e pour marquer occasionellement les donn\xE9es cach\xE9es comme valides pour une plus longue p\xE9riode, par exemple dans le but de r\xE9duire le trafic r\xE9seau.</p>',par:{msValidity:'un entier correspondant \xE0 la dur\xE9e de validit\xE9 attribu\xE9e aux les param\xE8tres charg\xE9s, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Display']['loadAttribute']={syn:'Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.',lib:'display.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un cha\xEEne vide.'};
+doc['Display']['muteValueCallbacks']={syn:'D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'display.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Vous pouvez utiliser cette fonction pour \xE9conomiser la bande passante et le CPU sur les machines de faible puissance, ou pour \xE9viter le d\xE9clanchement de callbacks HTTP. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Display']['newSequence']={syn:'Enclanche l\x27enregistrement de toutes les commandes d\x27affichage suivantes dans une s\xE9quence, qui pourra \xEAtre rejou\xE9e ult\xE9rieurement.',lib:'display.newSequence()',pro:'def newSequence()',cmt:'<p>Enclanche l\x27enregistrement de toutes les commandes d\x27affichage suivantes dans une s\xE9quence, qui pourra \xEAtre rejou\xE9e ult\xE9rieurement. Le nom de la s\xE9quence sera donn\xE9 au moment de l\x27appel \xE0 <tt>saveSequence()</tt>, une fois la s\xE9quence termin\xE9e.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Display']['nextDisplay']={syn:'Continue l\x27\xE9num\xE9ration des \xE9cran commenc\xE9e \xE0 l\x27aide de <tt>yFirstDisplay()</tt>.',lib:'display.nextDisplay()',pro:'def nextDisplay()',cmt:'<p>Continue l\x27\xE9num\xE9ration des \xE9cran commenc\xE9e \xE0 l\x27aide de <tt>yFirstDisplay()</tt>.</p>',ret:'un pointeur sur un objet <tt>YDisplay</tt> accessible en ligne, ou <tt>null</tt> lorsque l\x27\xE9num\xE9ration est termin\xE9e.'};
+doc['Display']['pauseSequence']={syn:'Attend pour la dur\xE9e sp\xE9cifi\xE9e (en millisecondes) avant de jouer les commandes suivantes de la s\xE9quence active.',lib:'display.pauseSequence()',pro:'def pauseSequence(<span id=pn>delay_ms</span>)',cmt:'<p>Attend pour la dur\xE9e sp\xE9cifi\xE9e (en millisecondes) avant de jouer les commandes suivantes de la s\xE9quence active. Cette m\xE9thode peut \xEAtre utilis\xE9e lors de l\x27enregistrement d\x27une s\xE9quence d\x27affichage, pour ins\xE9rer une attente mesur\xE9e lors de l\x27ex\xE9cution (mais sans effet imm\xE9diat). Cette m\xE9thode peut aussi \xEAtre appel\xE9e dynamiquement pendant l\x27ex\xE9cution d\x27une s\xE9quence enregistr\xE9e, pour suspendre temporairement ou reprendre l\x27ex\xE9cution. Pour annuler une attente, appelez simplement la m\xE9thode avec une attente de z\xE9ro.</p>',par:{delay_ms:'la dur\xE9e de l\x27attente, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Display']['playSequence']={syn:'Joue une s\xE9quence d\x27affichage pr\xE9alablement enregistr\xE9e \xE0 l\x27aide des m\xE9thodes <tt>newSequence()</tt> et <tt>saveSequence()</tt>.',lib:'display.playSequence()',pro:'def playSequence(<span id=pn>sequenceName</span>)',cmt:'<p>Joue une s\xE9quence d\x27affichage pr\xE9alablement enregistr\xE9e \xE0 l\x27aide des m\xE9thodes <tt>newSequence()</tt> et <tt>saveSequence()</tt>.</p>',par:{sequenceName:'le nom de la nouvelle s\xE9quence cr\xE9\xE9e'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Display']['registerValueCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e.',lib:'display.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callback peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callback ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et la cha\xEEne de caract\xE8re d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['Display']['resetAll']={syn:'Efface le contenu de l\x27\xE9cran et remet toutes les couches \xE0 leur \xE9tat initial.',lib:'display.resetAll()',pro:'def resetAll()',cmt:'<p>Efface le contenu de l\x27\xE9cran et remet toutes les couches \xE0 leur \xE9tat initial. Utiliser cette fonction dans une sequence va tuer stopper l\x27affichage de la sequence: ne pas utiliser cette fonction pour r\xE9initialiser l\x27\xE9cran au d\xE9but d\x27une s\xE9quence.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Display']['saveSequence']={syn:'Termine l\x27enregistrement d\x27une s\xE9quence et la sauvegarde sur la m\xE9moire interne de l\x27\xE9cran, sous le nom choisi.',lib:'display.saveSequence()',pro:'def saveSequence(<span id=pn>sequenceName</span>)',cmt:'<p>Termine l\x27enregistrement d\x27une s\xE9quence et la sauvegarde sur la m\xE9moire interne de l\x27\xE9cran, sous le nom choisi. La s\xE9quence peut \xEAtre rejou\xE9e ult\xE9rieurement \xE0 l\x27aide de la m\xE9thode <tt>playSequence()</tt>.</p>',par:{sequenceName:'le nom de la nouvelle s\xE9quence cr\xE9\xE9e'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Display']['set_brightness']={syn:'Modifie la luminosit\xE9de l\x27\xE9cran.',lib:'display.set_brightness()',pro:'def set_brightness(<span id=pn>newval</span>)',cmt:'<p>Modifie la luminosit\xE9de l\x27\xE9cran. Le param\xEAtre est une valeur entre 0 et 100. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'un entier repr&eacute;sentant la luminosit\xE9de l\x27\xE9cran'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Display']['set_enabled']={syn:'Modifie l\x27\xE9tat d\x27activit\xE9 de l\x27\xE9cran.',lib:'display.set_enabled()',pro:'def set_enabled(<span id=pn>newval</span>)',cmt:'<p>Modifie l\x27\xE9tat d\x27activit\xE9 de l\x27\xE9cran.</p>',par:{newval:'soit <tt>Y_ENABLED_FALSE</tt>, soit <tt>Y_ENABLED_TRUE</tt>, selon l\x27\xE9tat d\x27activit\xE9 de l\x27\xE9cran'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Display']['set_logicalName']={syn:'Modifie le nom logique de l\x27ecran.',lib:'display.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Modifie le nom logique de l\x27ecran. Vous pouvez utiliser <tt>yCheckLogicalName()</tt> pour v\xE9rifier si votre param\xE8tre est valide. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique de l\x27ecran.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27appel se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Display']['set_orientation']={syn:'Modifie l\x27orientation de l\x27\xE9cran.',lib:'display.set_orientation()',pro:'def set_orientation(<span id=pn>newval</span>)',cmt:'<p>Modifie l\x27orientation de l\x27\xE9cran. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une valeur parmi <tt>Y_ORIENTATION_LEFT</tt>, <tt>Y_ORIENTATION_UP</tt>, <tt>Y_ORIENTATION_RIGHT</tt> et <tt>Y_ORIENTATION_DOWN</tt> repr&eacute;sentant l\x27orientation de l\x27\xE9cran'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Display']['set_startupSeq']={syn:'Modifie le nom de la s\xE9quence \xE0 jouer \xE0 la mise sous tension de l\x27\xE9cran.',lib:'display.set_startupSeq()',pro:'def set_startupSeq(<span id=pn>newval</span>)',cmt:'<p>Modifie le nom de la s\xE9quence \xE0 jouer \xE0 la mise sous tension de l\x27\xE9cran. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant le nom de la s\xE9quence \xE0 jouer \xE0 la mise sous tension de l\x27\xE9cran'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Display']['set_userData']={syn:'Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>.',lib:'display.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',par:{data:'objet quelconque \xE0 m\xE9moriser'}};
+doc['Display']['stopSequence']={syn:'Arr\xEAte imm\xE9diatement la s\xE9quence d\x27affichage actuellement jou\xE9e sur l\x27\xE9cran.',lib:'display.stopSequence()',pro:'def stopSequence()',cmt:'<p>Arr\xEAte imm\xE9diatement la s\xE9quence d\x27affichage actuellement jou\xE9e sur l\x27\xE9cran. L\x27affichage est laiss\xE9 tel quel.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Display']['swapLayerContent']={syn:'Permute le contentu de deux couches d\x27affichage.',lib:'display.swapLayerContent()',pro:'def swapLayerContent(<span id=pn>layerIdA</span>, <span id=pn>layerIdB</span>)',cmt:'<p>Permute le contentu de deux couches d\x27affichage. La couleur et la transparence de tous les pixels des deux couches sont permut\xE9es. Cette m\xE9thode modifie le contenu affich\xE9, mais n\x27a aucun effet sur les propri\xE9t\xE9s de l\x27objet layer lui-m\xEAme. En particulier, la visibilit\xE9 des deux couches reste inchang\xE9e. Cela permet d\x27impl\xE9menter tr\xE8s efficacement un affichage par double-buffering, en utilisant une couche cach\xE9e et une couche visible. Notez que la couche z\xE9ro n\x27a pas de transparence (elle est toujours opaque).</p>',par:{layerIdA:'l\x27identifiant de la premi\xE8re couche (un chiffre parmi 0..layerCount-1)',layerIdB:'l\x27identifiant de la deuxi\xE8me couche (un chiffre parmi 0..layerCount-1)'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Display']['unmuteValueCallbacks']={syn:'R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'display.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Cette fonction annule un pr\xE9c\xE9dent appel \xE0 <tt>muteValueCallbacks()</tt>. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Display']['upload']={syn:'T\xE9l\xE9charge un contenu arbitraire (par exemple une image GIF) vers le syst\xE8me de fichier de l\x27\xE9cran, au chemin d\x27acc\xE8s sp\xE9cifi\xE9.',lib:'display.upload()',pro:'def upload(<span id=pn>pathname</span>, <span id=pn>content</span>)',cmt:'<p>T\xE9l\xE9charge un contenu arbitraire (par exemple une image GIF) vers le syst\xE8me de fichier de l\x27\xE9cran, au chemin d\x27acc\xE8s sp\xE9cifi\xE9. Si un fichier existe d\xE9j\xE0 pour le m\xEAme chemin d\x27acc\xE8s, son contenu est remplac\xE9.</p>',par:{pathname:'nom complet du fichier, y compris le chemin d\x27acc\xE8s.',content:'contenu du fichier \xE0 t\xE9l\xE9charger'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+//--- (end of generated code: Display)
+//--- (generated code: Files)
+doc['Files']={'':{syn:'Interface de la fonction Files',inc:'from yocto_files import *',cmt:'<p>L\x27interface de stockage de fichiers permet de stocker des fichiers sur certains modules, par exemple pour personnaliser un service web (dans le cas d\x27un module connect\xE9 au r\xE9seau) ou pour ajouter un police de caract\xE8res (dans le cas d\x27un module d\x27affichage).</p>'}};
+doc['Files']['FindFiles']={syn:'Permet de retrouver un syst\xE8me de fichier d\x27apr\xE8s un identifiant donn\xE9.',lib:'YFiles.FindFiles()',pro:'def FindFiles(<span id=pn>func</span>)',cmt:'<p>Permet de retrouver un syst\xE8me de fichier d\x27apr\xE8s un identifiant donn\xE9. L\x27identifiant peut \xEAtre sp\xE9cifi\xE9 sous plusieurs formes:<br> <ul> <li>NomLogiqueFonction</li> <li>NoSerieModule.IdentifiantFonction</li> <li>NoSerieModule.NomLogiqueFonction</li> <li>NomLogiqueModule.IdentifiantMat\xE9riel</li> <li>NomLogiqueModule.NomLogiqueFonction</li> </ul></p><p> Cette fonction n\x27exige pas que le syst\xE8me de fichier soit en ligne au moment ou elle est appel\xE9e, l\x27objet retourn\xE9 sera n\xE9anmoins valide. Utiliser la m\xE9thode <tt>YFiles.isOnline()</tt> pour tester si le syst\xE8me de fichier est utilisable \xE0 un moment donn\xE9. En cas d\x27ambigu\xEFt\xE9 lorsqu\x27on fait une recherche par nom logique, aucune erreur ne sera notifi\xE9e: la premi\xE8re instance trouv\xE9e sera renvoy\xE9e. La recherche se fait d\x27abord par nom mat\xE9riel, puis par nom logique.</p>',par:{func:'une cha\xEEne de caract\xE8res qui r\xE9f\xE9rence le syst\xE8me de fichier sans ambigu\xEFt\xE9'},ret:'un objet de classe <tt>YFiles</tt> qui permet ensuite de contr\xF4ler le syst\xE8me de fichier.'};
+doc['Files']['FirstFiles']={syn:'Commence l\x27\xE9num\xE9ration des syst\xE8me de fichier accessibles par la librairie.',lib:'YFiles.FirstFiles()',pro:'def FirstFiles()',cmt:'<p>Commence l\x27\xE9num\xE9ration des syst\xE8me de fichier accessibles par la librairie. Utiliser la fonction <tt>YFiles.nextFiles()</tt> pour it\xE9rer sur les autres syst\xE8me de fichier.</p>',ret:'un pointeur sur un objet <tt>YFiles</tt>, correspondant au premier syst\xE8me de fichier accessible en ligne, ou <tt>null</tt> si il n\x27y a pas de syst\xE8me de fichier disponibles.'};
+doc['Files']['clearCache']={syn:'Invalide le cache.',lib:'files.clearCache()',pro:'def clearCache()',cmt:'<p>Invalide le cache. Invalide le cache des valeurs courantes du syst\xE8me de fichier. Force le prochain appel \xE0 une m\xE9thode get_xxx() ou loadxxx() pour charger les les donn\xE9es depuis le module.</p>'};
+doc['Files']['describe']={syn:'Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du syst\xE8me de fichier au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'files.describe()',pro:'def describe()',cmt:'<p>Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du syst\xE8me de fichier au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. Plus pr\xE9cis\xE9ment, <tt>TYPE</tt> correspond au type de fonction, <tt>NAME</tt> correspond au nom utils\xE9 lors du premier acc\xE8s a la fonction, <tt>SERIAL</tt> correspond au num\xE9ro de s\xE9rie du module si le module est connect\xE9, ou <tt>\x22unresolved\x22</tt> sinon, et <tt>FUNCTIONID</tt> correspond \xE0 l\x27identifiant mat\xE9riel de la fonction si le module est connect\xE9. Par exemple, La methode va retourner <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> si le module est d\xE9j\xE0 connect\xE9 ou <tt>Relay(BadCustomeName.relay1)=unresolved</tt> si le module n\x27est pas d\xE9j\xE0 connect\xE9. Cette methode ne declenche aucune transaction USB ou TCP et peut donc \xEAtre utilis\xE9 dans un debuggeur.</p>',ret:'une cha\xEEne de caract\xE8res d\xE9crivant le syst\xE8me de fichier (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['Files']['download']={syn:'T\xE9l\xE9charge le fichier choisi du filesyst\xE8me et retourne son contenu.',lib:'files.download()',pro:'def download(<span id=pn>pathname</span>)',cmt:'<p>T\xE9l\xE9charge le fichier choisi du filesyst\xE8me et retourne son contenu.</p>',par:{pathname:'nom complet du fichier \xE0 charger, y compris le chemin d\x27acc\xE8s.'},ret:'le contenu du fichier charg\xE9 sous forme d\x27objet binaire',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un contenu vide.'};
+doc['Files']['fileExist']={syn:'Test si un fichier esit dans le syst\xE8me de fichier du module.',lib:'files.fileExist()',pro:'def fileExist(<span id=pn>filename</span>)',cmt:'<p>Test si un fichier esit dans le syst\xE8me de fichier du module.</p>',par:{filename:'le nom de fichier.'},ret:'vrais si le fichier existe, et faux is le fichier n\x27existe pas.',ext:'En cas d\x27erreur, d\xE9clenche une exception.'};
+doc['Files']['format_fs']={syn:'R\xE9tabli le syst\xE8me de fichier dans on \xE9tat original, d\xE9fragment\xE9.',lib:'files.format_fs()',pro:'def format_fs()',cmt:'<p>R\xE9tabli le syst\xE8me de fichier dans on \xE9tat original, d\xE9fragment\xE9. enti\xE8rement vide. Tous les fichiers pr\xE9c\xE9demment charg\xE9s sont irr\xE9m\xE9diablement effac\xE9s.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Files']['get_advertisedValue']={syn:'Retourne la valeur courante du syst\xE8me de fichier (pas plus de 6 caract\xE8res).',lib:'files.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Retourne la valeur courante du syst\xE8me de fichier (pas plus de 6 caract\xE8res).</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur courante du syst\xE8me de fichier (pas plus de 6 caract\xE8res).',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['Files']['get_errorMessage']={syn:'Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du syst\xE8me de fichier.',lib:'files.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du syst\xE8me de fichier. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'une cha\xEEne de caract\xE8res correspondant au message de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du syst\xE8me de fichier.'};
+doc['Files']['get_errorType']={syn:'Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du syst\xE8me de fichier.',lib:'files.get_errorType()',pro:'def get_errorType()',cmt:'<p>Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du syst\xE8me de fichier. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'un nombre correspondant au code de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du syst\xE8me de fichier.'};
+doc['Files']['get_filesCount']={syn:'Retourne le nombre de fichiers pr\xE9sents dans le syst\xE8me de fichier.',lib:'files.get_filesCount()',pro:'def get_filesCount()',cmt:'<p>Retourne le nombre de fichiers pr\xE9sents dans le syst\xE8me de fichier.</p>',ret:'un entier repr&eacute;sentant le nombre de fichiers pr\xE9sents dans le syst\xE8me de fichier',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_FILESCOUNT_INVALID</tt>.'};
+doc['Files']['get_freeSpace']={syn:'Retourne l\x27espace disponible dans le syst\xE8me de fichier pour charger des nouveaux fichiers, en octets.',lib:'files.get_freeSpace()',pro:'def get_freeSpace()',cmt:'<p>Retourne l\x27espace disponible dans le syst\xE8me de fichier pour charger des nouveaux fichiers, en octets.</p>',ret:'un entier repr&eacute;sentant l\x27espace disponible dans le syst\xE8me de fichier pour charger des nouveaux fichiers, en octets',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_FREESPACE_INVALID</tt>.'};
+doc['Files']['get_friendlyName']={syn:'Retourne un identifiant global du syst\xE8me de fichier au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>.',lib:'files.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Retourne un identifiant global du syst\xE8me de fichier au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>. Le cha\xEEne retourn\xE9e utilise soit les noms logiques du module et du syst\xE8me de fichier si ils sont d\xE9finis, soit respectivement le num\xE9ro de s\xE9rie du module et l\x27identifant mat\xE9riel du syst\xE8me de fichier (par exemple: <tt>MyCustomName.relay1</tt>)</p>',ret:'une cha\xEEne de caract\xE8res identifiant le syst\xE8me de fichier en utilisant les noms logiques (ex: <tt>MyCustomName.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['Files']['get_functionDescriptor']={syn:'Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction.',lib:'files.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction. Cet identifiant peut \xEAtre utilis\xE9 pour tester si deux instance de <tt>YFunction</tt> r\xE9f\xE9rencent physiquement la m\xEAme fonction sur le m\xEAme module.</p>',ret:'un identifiant de type <tt>YFUN_DESCR</tt>.',ext:'Si la fonction n\x27a jamais \xE9t\xE9 contact\xE9e, la valeur retourn\xE9e sera <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>'};
+doc['Files']['get_functionId']={syn:'Retourne l\x27identifiant mat\xE9riel du syst\xE8me de fichier, sans r\xE9f\xE9rence au module.',lib:'files.get_functionId()',pro:'def get_functionId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel du syst\xE8me de fichier, sans r\xE9f\xE9rence au module. Par example <tt>relay1</tt>.</p>',ret:'une cha\xEEne de caract\xE8res identifiant le syst\xE8me de fichier (ex: <tt>relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['Files']['get_hardwareId']={syn:'Retourne l\x27identifiant mat\xE9riel unique du syst\xE8me de fichier au format <tt>SERIAL.FUNCTIONID</tt>.',lib:'files.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel unique du syst\xE8me de fichier au format <tt>SERIAL.FUNCTIONID</tt>. L\x27identifiant unique est compos\xE9 du num\xE9ro de s\xE9rie du module et de l\x27identifiant mat\xE9riel du syst\xE8me de fichier (par example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'une cha\xEEne de caract\xE8res identifiant le syst\xE8me de fichier (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['Files']['get_list']={syn:'Retourne une liste d\x27objets objet YFileRecord qui d\xE9crivent les fichiers pr\xE9sents dans le syst\xE8me de fichier.',lib:'files.get_list()',pro:'def get_list(<span id=pn>pattern</span>)',cmt:'<p>Retourne une liste d\x27objets objet YFileRecord qui d\xE9crivent les fichiers pr\xE9sents dans le syst\xE8me de fichier.</p>',par:{pattern:'un filtre optionel sur les noms de fichiers retourn\xE9s, pouvant contenir des ast\xE9risques et des points d\x27interrogations comme jokers. Si le pattern fourni est vide, tous les fichiers sont retourn\xE9s.'},ret:'une liste d\x27objets <tt>YFileRecord</tt>, contenant le nom complet (y compris le chemin d\x27acc\xE8s), la taille en octets et le CRC 32-bit du contenu du fichier.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne une liste vide.'};
+doc['Files']['get_logicalName']={syn:'Retourne le nom logique du syst\xE8me de fichier.',lib:'files.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Retourne le nom logique du syst\xE8me de fichier.</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du syst\xE8me de fichier.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['Files']['get_module']={syn:'Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction.',lib:'files.get_module()',pro:'def get_module()',cmt:'<p>Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction. Si la fonction ne peut \xEAtre trouv\xE9e sur aucun module, l\x27instance de <tt>YModule</tt> retourn\xE9e ne sera pas joignable.</p>',ret:'une instance de <tt>YModule</tt>'};
+doc['Files']['get_userData']={syn:'Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>.',lib:'files.get_userData()',pro:'def get_userData()',cmt:'<p>Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',ret:'l\x27objet stock\xE9 pr\xE9c\xE9demment par l\x27appelant.'};
+doc['Files']['isOnline']={syn:'V\xE9rifie si le module h\xE9bergeant le syst\xE8me de fichier est joignable, sans d\xE9clencher d\x27erreur.',lib:'files.isOnline()',pro:'def isOnline()',cmt:'<p>V\xE9rifie si le module h\xE9bergeant le syst\xE8me de fichier est joignable, sans d\xE9clencher d\x27erreur. Si les valeurs des attributs en cache du syst\xE8me de fichier sont valides au moment de l\x27appel, le module est consid\xE9r\xE9 joignable. Cette fonction ne cause en aucun cas d\x27exception, quelle que soit l\x27erreur qui pourrait se produire lors de la v\xE9rification de joignabilit\xE9.</p>',ret:'<tt>true</tt> si le syst\xE8me de fichier est joignable, <tt>false</tt> sinon'};
+doc['Files']['load']={syn:'Met en cache les valeurs courantes du syst\xE8me de fichier, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e.',lib:'files.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Met en cache les valeurs courantes du syst\xE8me de fichier, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e. Par d\xE9faut, lorsqu\x27on acc\xE8de \xE0 un module, tous les attributs des fonctions du module sont automatiquement mises en cache pour la dur\xE9e standard (5 ms). Cette m\xE9thode peut \xEAtre utilis\xE9e pour marquer occasionellement les donn\xE9es cach\xE9es comme valides pour une plus longue p\xE9riode, par exemple dans le but de r\xE9duire le trafic r\xE9seau.</p>',par:{msValidity:'un entier correspondant \xE0 la dur\xE9e de validit\xE9 attribu\xE9e aux les param\xE8tres charg\xE9s, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Files']['loadAttribute']={syn:'Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.',lib:'files.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un cha\xEEne vide.'};
+doc['Files']['muteValueCallbacks']={syn:'D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'files.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Vous pouvez utiliser cette fonction pour \xE9conomiser la bande passante et le CPU sur les machines de faible puissance, ou pour \xE9viter le d\xE9clanchement de callbacks HTTP. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Files']['nextFiles']={syn:'Continue l\x27\xE9num\xE9ration des syst\xE8me de fichier commenc\xE9e \xE0 l\x27aide de <tt>yFirstFiles()</tt>.',lib:'files.nextFiles()',pro:'def nextFiles()',cmt:'<p>Continue l\x27\xE9num\xE9ration des syst\xE8me de fichier commenc\xE9e \xE0 l\x27aide de <tt>yFirstFiles()</tt>.</p>',ret:'un pointeur sur un objet <tt>YFiles</tt> accessible en ligne, ou <tt>null</tt> lorsque l\x27\xE9num\xE9ration est termin\xE9e.'};
+doc['Files']['registerValueCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e.',lib:'files.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callback peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callback ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et la cha\xEEne de caract\xE8re d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['Files']['remove']={syn:'Efface un fichier, sp\xE9cifi\xE9 par son path complet, du syst\xE8me de fichier.',lib:'files.remove()',pro:'def remove(<span id=pn>pathname</span>)',cmt:'<p>Efface un fichier, sp\xE9cifi\xE9 par son path complet, du syst\xE8me de fichier. A cause de la fragmentation, l\x27effacement d\x27un fichier ne lib\xE8re pas toujours la totalit\xE9 de l\x27espace qu\x27il occuppe. Par contre, la r\xE9-\xE9criture d\x27un fichier du m\xEAme nom r\xE9cup\xE9rera dans tout les cas l\x27espace qui n\x27aurait \xE9ventuellement pas \xE9t\xE9 lib\xE9r\xE9. Pour s\x27assurer de lib\xE9rer la totalit\xE9 de l\x27espace du syst\xE8me de fichier, utilisez la fonction <tt>format_fs</tt>.</p>',par:{pathname:'nom complet du fichier, y compris le chemin d\x27acc\xE8s.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Files']['set_logicalName']={syn:'Modifie le nom logique du syst\xE8me de fichier.',lib:'files.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Modifie le nom logique du syst\xE8me de fichier. Vous pouvez utiliser <tt>yCheckLogicalName()</tt> pour v\xE9rifier si votre param\xE8tre est valide. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du syst\xE8me de fichier.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27appel se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Files']['set_userData']={syn:'Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>.',lib:'files.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',par:{data:'objet quelconque \xE0 m\xE9moriser'}};
+doc['Files']['unmuteValueCallbacks']={syn:'R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'files.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Cette fonction annule un pr\xE9c\xE9dent appel \xE0 <tt>muteValueCallbacks()</tt>. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Files']['upload']={syn:'T\xE9l\xE9charge un contenu vers le syst\xE8me de fichier, au chemin d\x27acc\xE8s sp\xE9cifi\xE9.',lib:'files.upload()',pro:'def upload(<span id=pn>pathname</span>, <span id=pn>content</span>)',cmt:'<p>T\xE9l\xE9charge un contenu vers le syst\xE8me de fichier, au chemin d\x27acc\xE8s sp\xE9cifi\xE9. Si un fichier existe d\xE9j\xE0 pour le m\xEAme chemin d\x27acc\xE8s, son contenu est remplac\xE9.</p>',par:{pathname:'nom complet du fichier, y compris le chemin d\x27acc\xE8s.',content:'contenu du fichier \xE0 t\xE9l\xE9charger'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+//--- (end of generated code: Files)
+//--- (generated code: RealTimeClock)
+doc['RealTimeClock']={'':{syn:'Interface de la fonction Horloge Temps Real',inc:'from yocto_realtimeclock import *',cmt:'<p>La fonction RealTimeClock fourni la date et l\x27heure courante de mani\xE8re persistante, m\xEAme en cas de coupure de courant de plusieurs jours. Elle est le fondement des fonctions de r\xE9veil automatique impl\xE9ment\xE9es par le WakeUpScheduler. L\x27heure courante peut repr\xE9senter aussi bien une heure locale qu\x27une heure UTC, mais aucune adaptation automatique n\x27est fait au changement d\x27heure \xE9t\xE9/hiver.</p>'}};
+doc['RealTimeClock']['FindRealTimeClock']={syn:'Permet de retrouver une horloge d\x27apr\xE8s un identifiant donn\xE9.',lib:'YRealTimeClock.FindRealTimeClock()',pro:'def FindRealTimeClock(<span id=pn>func</span>)',cmt:'<p>Permet de retrouver une horloge d\x27apr\xE8s un identifiant donn\xE9. L\x27identifiant peut \xEAtre sp\xE9cifi\xE9 sous plusieurs formes:<br> <ul> <li>NomLogiqueFonction</li> <li>NoSerieModule.IdentifiantFonction</li> <li>NoSerieModule.NomLogiqueFonction</li> <li>NomLogiqueModule.IdentifiantMat\xE9riel</li> <li>NomLogiqueModule.NomLogiqueFonction</li> </ul></p><p> Cette fonction n\x27exige pas que l\x27horloge soit en ligne au moment ou elle est appel\xE9e, l\x27objet retourn\xE9 sera n\xE9anmoins valide. Utiliser la m\xE9thode <tt>YRealTimeClock.isOnline()</tt> pour tester si l\x27horloge est utilisable \xE0 un moment donn\xE9. En cas d\x27ambigu\xEFt\xE9 lorsqu\x27on fait une recherche par nom logique, aucune erreur ne sera notifi\xE9e: la premi\xE8re instance trouv\xE9e sera renvoy\xE9e. La recherche se fait d\x27abord par nom mat\xE9riel, puis par nom logique.</p>',par:{func:'une cha\xEEne de caract\xE8res qui r\xE9f\xE9rence l\x27horloge sans ambigu\xEFt\xE9'},ret:'un objet de classe <tt>YRealTimeClock</tt> qui permet ensuite de contr\xF4ler l\x27horloge.'};
+doc['RealTimeClock']['FirstRealTimeClock']={syn:'Commence l\x27\xE9num\xE9ration des horloge accessibles par la librairie.',lib:'YRealTimeClock.FirstRealTimeClock()',pro:'def FirstRealTimeClock()',cmt:'<p>Commence l\x27\xE9num\xE9ration des horloge accessibles par la librairie. Utiliser la fonction <tt>YRealTimeClock.nextRealTimeClock()</tt> pour it\xE9rer sur les autres horloge.</p>',ret:'un pointeur sur un objet <tt>YRealTimeClock</tt>, correspondant \xE0 la premi\xE8re horloge accessible en ligne, ou <tt>null</tt> si il n\x27y a pas de horloge disponibles.'};
+doc['RealTimeClock']['clearCache']={syn:'Invalide le cache.',lib:'realtimeclock.clearCache()',pro:'def clearCache()',cmt:'<p>Invalide le cache. Invalide le cache des valeurs courantes de l\x27horloge. Force le prochain appel \xE0 une m\xE9thode get_xxx() ou loadxxx() pour charger les les donn\xE9es depuis le module.</p>'};
+doc['RealTimeClock']['describe']={syn:'Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance de l\x27horloge au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'realtimeclock.describe()',pro:'def describe()',cmt:'<p>Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance de l\x27horloge au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. Plus pr\xE9cis\xE9ment, <tt>TYPE</tt> correspond au type de fonction, <tt>NAME</tt> correspond au nom utils\xE9 lors du premier acc\xE8s a la fonction, <tt>SERIAL</tt> correspond au num\xE9ro de s\xE9rie du module si le module est connect\xE9, ou <tt>\x22unresolved\x22</tt> sinon, et <tt>FUNCTIONID</tt> correspond \xE0 l\x27identifiant mat\xE9riel de la fonction si le module est connect\xE9. Par exemple, La methode va retourner <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> si le module est d\xE9j\xE0 connect\xE9 ou <tt>Relay(BadCustomeName.relay1)=unresolved</tt> si le module n\x27est pas d\xE9j\xE0 connect\xE9. Cette methode ne declenche aucune transaction USB ou TCP et peut donc \xEAtre utilis\xE9 dans un debuggeur.</p>',ret:'une cha\xEEne de caract\xE8res d\xE9crivant l\x27horloge (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['RealTimeClock']['get_advertisedValue']={syn:'Retourne la valeur courante de l\x27horloge (pas plus de 6 caract\xE8res).',lib:'realtimeclock.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Retourne la valeur courante de l\x27horloge (pas plus de 6 caract\xE8res).</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur courante de l\x27horloge (pas plus de 6 caract\xE8res).',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['RealTimeClock']['get_dateTime']={syn:'Retourne l\x27heure courante au format \x22AAAA/MM/JJ hh:mm:ss\x22.',lib:'realtimeclock.get_dateTime()',pro:'def get_dateTime()',cmt:'<p>Retourne l\x27heure courante au format \x22AAAA/MM/JJ hh:mm:ss\x22.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant l\x27heure courante au format \x22AAAA/MM/JJ hh:mm:ss\x22',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_DATETIME_INVALID</tt>.'};
+doc['RealTimeClock']['get_errorMessage']={syn:'Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de l\x27horloge.',lib:'realtimeclock.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de l\x27horloge. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'une cha\xEEne de caract\xE8res correspondant au message de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation de l\x27horloge.'};
+doc['RealTimeClock']['get_errorType']={syn:'Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de l\x27horloge.',lib:'realtimeclock.get_errorType()',pro:'def get_errorType()',cmt:'<p>Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de l\x27horloge. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'un nombre correspondant au code de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation de l\x27horloge.'};
+doc['RealTimeClock']['get_friendlyName']={syn:'Retourne un identifiant global de l\x27horloge au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>.',lib:'realtimeclock.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Retourne un identifiant global de l\x27horloge au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>. Le cha\xEEne retourn\xE9e utilise soit les noms logiques du module et de l\x27horloge si ils sont d\xE9finis, soit respectivement le num\xE9ro de s\xE9rie du module et l\x27identifant mat\xE9riel de l\x27horloge (par exemple: <tt>MyCustomName.relay1</tt>)</p>',ret:'une cha\xEEne de caract\xE8res identifiant l\x27horloge en utilisant les noms logiques (ex: <tt>MyCustomName.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['RealTimeClock']['get_functionDescriptor']={syn:'Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction.',lib:'realtimeclock.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction. Cet identifiant peut \xEAtre utilis\xE9 pour tester si deux instance de <tt>YFunction</tt> r\xE9f\xE9rencent physiquement la m\xEAme fonction sur le m\xEAme module.</p>',ret:'un identifiant de type <tt>YFUN_DESCR</tt>.',ext:'Si la fonction n\x27a jamais \xE9t\xE9 contact\xE9e, la valeur retourn\xE9e sera <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>'};
+doc['RealTimeClock']['get_functionId']={syn:'Retourne l\x27identifiant mat\xE9riel de l\x27horloge, sans r\xE9f\xE9rence au module.',lib:'realtimeclock.get_functionId()',pro:'def get_functionId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel de l\x27horloge, sans r\xE9f\xE9rence au module. Par example <tt>relay1</tt>.</p>',ret:'une cha\xEEne de caract\xE8res identifiant l\x27horloge (ex: <tt>relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['RealTimeClock']['get_hardwareId']={syn:'Retourne l\x27identifiant mat\xE9riel unique de l\x27horloge au format <tt>SERIAL.FUNCTIONID</tt>.',lib:'realtimeclock.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel unique de l\x27horloge au format <tt>SERIAL.FUNCTIONID</tt>. L\x27identifiant unique est compos\xE9 du num\xE9ro de s\xE9rie du module et de l\x27identifiant mat\xE9riel de l\x27horloge (par example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'une cha\xEEne de caract\xE8res identifiant l\x27horloge (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['RealTimeClock']['get_logicalName']={syn:'Retourne le nom logique de l\x27horloge.',lib:'realtimeclock.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Retourne le nom logique de l\x27horloge.</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique de l\x27horloge.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['RealTimeClock']['get_module']={syn:'Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction.',lib:'realtimeclock.get_module()',pro:'def get_module()',cmt:'<p>Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction. Si la fonction ne peut \xEAtre trouv\xE9e sur aucun module, l\x27instance de <tt>YModule</tt> retourn\xE9e ne sera pas joignable.</p>',ret:'une instance de <tt>YModule</tt>'};
+doc['RealTimeClock']['get_timeSet']={syn:'Retourne vrai si l\x27horloge \xE0 \xE9t\xE9 mise \xE0 l\x27heure, sinon faux.',lib:'realtimeclock.get_timeSet()',pro:'def get_timeSet()',cmt:'<p>Retourne vrai si l\x27horloge \xE0 \xE9t\xE9 mise \xE0 l\x27heure, sinon faux.</p>',ret:'soit <tt>Y_TIMESET_FALSE</tt>, soit <tt>Y_TIMESET_TRUE</tt>, selon vrai si l\x27horloge \xE0 \xE9t\xE9 mise \xE0 l\x27heure, sinon faux',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_TIMESET_INVALID</tt>.'};
+doc['RealTimeClock']['get_unixTime']={syn:'Retourne l\x27heure courante au format Unix (nombre de seconds secondes \xE9coul\xE9es depuis le 1er janvier 1970).',lib:'realtimeclock.get_unixTime()',pro:'def get_unixTime()',cmt:'<p>Retourne l\x27heure courante au format Unix (nombre de seconds secondes \xE9coul\xE9es depuis le 1er janvier 1970).</p>',ret:'un entier repr&eacute;sentant l\x27heure courante au format Unix (nombre de seconds secondes \xE9coul\xE9es depuis le 1er janvier 1970)',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_UNIXTIME_INVALID</tt>.'};
+doc['RealTimeClock']['get_userData']={syn:'Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>.',lib:'realtimeclock.get_userData()',pro:'def get_userData()',cmt:'<p>Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',ret:'l\x27objet stock\xE9 pr\xE9c\xE9demment par l\x27appelant.'};
+doc['RealTimeClock']['get_utcOffset']={syn:'Retourne le nombre de secondes de d\xE9callage entre l\x27heure courante et l\x27heure UTC (time zone).',lib:'realtimeclock.get_utcOffset()',pro:'def get_utcOffset()',cmt:'<p>Retourne le nombre de secondes de d\xE9callage entre l\x27heure courante et l\x27heure UTC (time zone).</p>',ret:'un entier repr&eacute;sentant le nombre de secondes de d\xE9callage entre l\x27heure courante et l\x27heure UTC (time zone)',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_UTCOFFSET_INVALID</tt>.'};
+doc['RealTimeClock']['isOnline']={syn:'V\xE9rifie si le module h\xE9bergeant l\x27horloge est joignable, sans d\xE9clencher d\x27erreur.',lib:'realtimeclock.isOnline()',pro:'def isOnline()',cmt:'<p>V\xE9rifie si le module h\xE9bergeant l\x27horloge est joignable, sans d\xE9clencher d\x27erreur. Si les valeurs des attributs en cache de l\x27horloge sont valides au moment de l\x27appel, le module est consid\xE9r\xE9 joignable. Cette fonction ne cause en aucun cas d\x27exception, quelle que soit l\x27erreur qui pourrait se produire lors de la v\xE9rification de joignabilit\xE9.</p>',ret:'<tt>true</tt> si l\x27horloge est joignable, <tt>false</tt> sinon'};
+doc['RealTimeClock']['load']={syn:'Met en cache les valeurs courantes de l\x27horloge, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e.',lib:'realtimeclock.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Met en cache les valeurs courantes de l\x27horloge, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e. Par d\xE9faut, lorsqu\x27on acc\xE8de \xE0 un module, tous les attributs des fonctions du module sont automatiquement mises en cache pour la dur\xE9e standard (5 ms). Cette m\xE9thode peut \xEAtre utilis\xE9e pour marquer occasionellement les donn\xE9es cach\xE9es comme valides pour une plus longue p\xE9riode, par exemple dans le but de r\xE9duire le trafic r\xE9seau.</p>',par:{msValidity:'un entier correspondant \xE0 la dur\xE9e de validit\xE9 attribu\xE9e aux les param\xE8tres charg\xE9s, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['RealTimeClock']['loadAttribute']={syn:'Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.',lib:'realtimeclock.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un cha\xEEne vide.'};
+doc['RealTimeClock']['muteValueCallbacks']={syn:'D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'realtimeclock.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Vous pouvez utiliser cette fonction pour \xE9conomiser la bande passante et le CPU sur les machines de faible puissance, ou pour \xE9viter le d\xE9clanchement de callbacks HTTP. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['RealTimeClock']['nextRealTimeClock']={syn:'Continue l\x27\xE9num\xE9ration des horloge commenc\xE9e \xE0 l\x27aide de <tt>yFirstRealTimeClock()</tt>.',lib:'realtimeclock.nextRealTimeClock()',pro:'def nextRealTimeClock()',cmt:'<p>Continue l\x27\xE9num\xE9ration des horloge commenc\xE9e \xE0 l\x27aide de <tt>yFirstRealTimeClock()</tt>.</p>',ret:'un pointeur sur un objet <tt>YRealTimeClock</tt> accessible en ligne, ou <tt>null</tt> lorsque l\x27\xE9num\xE9ration est termin\xE9e.'};
+doc['RealTimeClock']['registerValueCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e.',lib:'realtimeclock.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callback peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callback ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et la cha\xEEne de caract\xE8re d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['RealTimeClock']['set_logicalName']={syn:'Modifie le nom logique de l\x27horloge.',lib:'realtimeclock.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Modifie le nom logique de l\x27horloge. Vous pouvez utiliser <tt>yCheckLogicalName()</tt> pour v\xE9rifier si votre param\xE8tre est valide. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique de l\x27horloge.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27appel se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['RealTimeClock']['set_unixTime']={syn:'Modifie l\x27heure courante.',lib:'realtimeclock.set_unixTime()',pro:'def set_unixTime(<span id=pn>newval</span>)',cmt:'<p>Modifie l\x27heure courante. L\x27heure est pass\xE9e au format Unix (nombre de seconds secondes \xE9coul\xE9es depuis le 1er janvier 1970).</p>',par:{newval:'un entier repr&eacute;sentant l\x27heure courante'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['RealTimeClock']['set_userData']={syn:'Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>.',lib:'realtimeclock.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',par:{data:'objet quelconque \xE0 m\xE9moriser'}};
+doc['RealTimeClock']['set_utcOffset']={syn:'Modifie le nombre de secondes de d\xE9calage entre l\x27heure courante et l\x27heure UTC (time zone).',lib:'realtimeclock.set_utcOffset()',pro:'def set_utcOffset(<span id=pn>newval</span>)',cmt:'<p>Modifie le nombre de secondes de d\xE9calage entre l\x27heure courante et l\x27heure UTC (time zone). Le d\xE9callage est automatiquement arrondi au quart d\x27heure le plus proche.</p>',par:{newval:'un entier repr&eacute;sentant le nombre de secondes de d\xE9calage entre l\x27heure courante et l\x27heure UTC (time zone)'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['RealTimeClock']['unmuteValueCallbacks']={syn:'R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'realtimeclock.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Cette fonction annule un pr\xE9c\xE9dent appel \xE0 <tt>muteValueCallbacks()</tt>. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+//--- (end of generated code: RealTimeClock)
+//--- (generated code: WakeUpMonitor)
+doc['WakeUpMonitor']={'':{syn:'Interface de la fonction WakeUpMonitor',inc:'from yocto_wakeupmonitor import *',cmt:'<p>La fonction WakeUpMonitor prend en charge le contr\xF4le global de toutes les sources de r\xE9veil possibles ainsi que les mises en sommeil automatiques.</p>'}};
+doc['WakeUpMonitor']['FindWakeUpMonitor']={syn:'Permet de retrouver un moniteur d\x27apr\xE8s un identifiant donn\xE9.',lib:'YWakeUpMonitor.FindWakeUpMonitor()',pro:'def FindWakeUpMonitor(<span id=pn>func</span>)',cmt:'<p>Permet de retrouver un moniteur d\x27apr\xE8s un identifiant donn\xE9. L\x27identifiant peut \xEAtre sp\xE9cifi\xE9 sous plusieurs formes:<br> <ul> <li>NomLogiqueFonction</li> <li>NoSerieModule.IdentifiantFonction</li> <li>NoSerieModule.NomLogiqueFonction</li> <li>NomLogiqueModule.IdentifiantMat\xE9riel</li> <li>NomLogiqueModule.NomLogiqueFonction</li> </ul></p><p> Cette fonction n\x27exige pas que le moniteur soit en ligne au moment ou elle est appel\xE9e, l\x27objet retourn\xE9 sera n\xE9anmoins valide. Utiliser la m\xE9thode <tt>YWakeUpMonitor.isOnline()</tt> pour tester si le moniteur est utilisable \xE0 un moment donn\xE9. En cas d\x27ambigu\xEFt\xE9 lorsqu\x27on fait une recherche par nom logique, aucune erreur ne sera notifi\xE9e: la premi\xE8re instance trouv\xE9e sera renvoy\xE9e. La recherche se fait d\x27abord par nom mat\xE9riel, puis par nom logique.</p>',par:{func:'une cha\xEEne de caract\xE8res qui r\xE9f\xE9rence le moniteur sans ambigu\xEFt\xE9'},ret:'un objet de classe <tt>YWakeUpMonitor</tt> qui permet ensuite de contr\xF4ler le moniteur.'};
+doc['WakeUpMonitor']['FirstWakeUpMonitor']={syn:'Commence l\x27\xE9num\xE9ration des Moniteurs accessibles par la librairie.',lib:'YWakeUpMonitor.FirstWakeUpMonitor()',pro:'def FirstWakeUpMonitor()',cmt:'<p>Commence l\x27\xE9num\xE9ration des Moniteurs accessibles par la librairie. Utiliser la fonction <tt>YWakeUpMonitor.nextWakeUpMonitor()</tt> pour it\xE9rer sur les autres Moniteurs.</p>',ret:'un pointeur sur un objet <tt>YWakeUpMonitor</tt>, correspondant au premier moniteur accessible en ligne, ou <tt>null</tt> si il n\x27y a pas de Moniteurs disponibles.'};
+doc['WakeUpMonitor']['clearCache']={syn:'Invalide le cache.',lib:'wakeupmonitor.clearCache()',pro:'def clearCache()',cmt:'<p>Invalide le cache. Invalide le cache des valeurs courantes du moniteur. Force le prochain appel \xE0 une m\xE9thode get_xxx() ou loadxxx() pour charger les les donn\xE9es depuis le module.</p>'};
+doc['WakeUpMonitor']['describe']={syn:'Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du moniteur au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'wakeupmonitor.describe()',pro:'def describe()',cmt:'<p>Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du moniteur au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. Plus pr\xE9cis\xE9ment, <tt>TYPE</tt> correspond au type de fonction, <tt>NAME</tt> correspond au nom utils\xE9 lors du premier acc\xE8s a la fonction, <tt>SERIAL</tt> correspond au num\xE9ro de s\xE9rie du module si le module est connect\xE9, ou <tt>\x22unresolved\x22</tt> sinon, et <tt>FUNCTIONID</tt> correspond \xE0 l\x27identifiant mat\xE9riel de la fonction si le module est connect\xE9. Par exemple, La methode va retourner <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> si le module est d\xE9j\xE0 connect\xE9 ou <tt>Relay(BadCustomeName.relay1)=unresolved</tt> si le module n\x27est pas d\xE9j\xE0 connect\xE9. Cette methode ne declenche aucune transaction USB ou TCP et peut donc \xEAtre utilis\xE9 dans un debuggeur.</p>',ret:'une cha\xEEne de caract\xE8res d\xE9crivant le moniteur (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['WakeUpMonitor']['get_advertisedValue']={syn:'Retourne la valeur courante du moniteur (pas plus de 6 caract\xE8res).',lib:'wakeupmonitor.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Retourne la valeur courante du moniteur (pas plus de 6 caract\xE8res).</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur courante du moniteur (pas plus de 6 caract\xE8res).',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['WakeUpMonitor']['get_errorMessage']={syn:'Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du moniteur.',lib:'wakeupmonitor.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du moniteur. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'une cha\xEEne de caract\xE8res correspondant au message de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du moniteur.'};
+doc['WakeUpMonitor']['get_errorType']={syn:'Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du moniteur.',lib:'wakeupmonitor.get_errorType()',pro:'def get_errorType()',cmt:'<p>Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du moniteur. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'un nombre correspondant au code de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du moniteur.'};
+doc['WakeUpMonitor']['get_friendlyName']={syn:'Retourne un identifiant global du moniteur au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>.',lib:'wakeupmonitor.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Retourne un identifiant global du moniteur au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>. Le cha\xEEne retourn\xE9e utilise soit les noms logiques du module et du moniteur si ils sont d\xE9finis, soit respectivement le num\xE9ro de s\xE9rie du module et l\x27identifant mat\xE9riel du moniteur (par exemple: <tt>MyCustomName.relay1</tt>)</p>',ret:'une cha\xEEne de caract\xE8res identifiant le moniteur en utilisant les noms logiques (ex: <tt>MyCustomName.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['WakeUpMonitor']['get_functionDescriptor']={syn:'Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction.',lib:'wakeupmonitor.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction. Cet identifiant peut \xEAtre utilis\xE9 pour tester si deux instance de <tt>YFunction</tt> r\xE9f\xE9rencent physiquement la m\xEAme fonction sur le m\xEAme module.</p>',ret:'un identifiant de type <tt>YFUN_DESCR</tt>.',ext:'Si la fonction n\x27a jamais \xE9t\xE9 contact\xE9e, la valeur retourn\xE9e sera <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>'};
+doc['WakeUpMonitor']['get_functionId']={syn:'Retourne l\x27identifiant mat\xE9riel du moniteur, sans r\xE9f\xE9rence au module.',lib:'wakeupmonitor.get_functionId()',pro:'def get_functionId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel du moniteur, sans r\xE9f\xE9rence au module. Par example <tt>relay1</tt>.</p>',ret:'une cha\xEEne de caract\xE8res identifiant le moniteur (ex: <tt>relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['WakeUpMonitor']['get_hardwareId']={syn:'Retourne l\x27identifiant mat\xE9riel unique du moniteur au format <tt>SERIAL.FUNCTIONID</tt>.',lib:'wakeupmonitor.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel unique du moniteur au format <tt>SERIAL.FUNCTIONID</tt>. L\x27identifiant unique est compos\xE9 du num\xE9ro de s\xE9rie du module et de l\x27identifiant mat\xE9riel du moniteur (par example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'une cha\xEEne de caract\xE8res identifiant le moniteur (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['WakeUpMonitor']['get_logicalName']={syn:'Retourne le nom logique du moniteur.',lib:'wakeupmonitor.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Retourne le nom logique du moniteur.</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du moniteur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['WakeUpMonitor']['get_module']={syn:'Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction.',lib:'wakeupmonitor.get_module()',pro:'def get_module()',cmt:'<p>Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction. Si la fonction ne peut \xEAtre trouv\xE9e sur aucun module, l\x27instance de <tt>YModule</tt> retourn\xE9e ne sera pas joignable.</p>',ret:'une instance de <tt>YModule</tt>'};
+doc['WakeUpMonitor']['get_nextWakeUp']={syn:'Retourne la prochaine date/heure de r\xE9veil agend\xE9e (format UNIX).',lib:'wakeupmonitor.get_nextWakeUp()',pro:'def get_nextWakeUp()',cmt:'<p>Retourne la prochaine date/heure de r\xE9veil agend\xE9e (format UNIX).</p>',ret:'un entier repr&eacute;sentant la prochaine date/heure de r\xE9veil agend\xE9e (format UNIX)',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_NEXTWAKEUP_INVALID</tt>.'};
+doc['WakeUpMonitor']['get_powerDuration']={syn:'Retourne le temp d\x27\xE9veil maximal en secondes avant de retourner en sommeil automatiquement.',lib:'wakeupmonitor.get_powerDuration()',pro:'def get_powerDuration()',cmt:'<p>Retourne le temp d\x27\xE9veil maximal en secondes avant de retourner en sommeil automatiquement.</p>',ret:'un entier repr&eacute;sentant le temp d\x27\xE9veil maximal en secondes avant de retourner en sommeil automatiquement',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_POWERDURATION_INVALID</tt>.'};
+doc['WakeUpMonitor']['get_sleepCountdown']={syn:'Retourne le temps avant le prochain sommeil.',lib:'wakeupmonitor.get_sleepCountdown()',pro:'def get_sleepCountdown()',cmt:'<p>Retourne le temps avant le prochain sommeil.</p>',ret:'un entier repr&eacute;sentant le temps avant le prochain sommeil',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_SLEEPCOUNTDOWN_INVALID</tt>.'};
+doc['WakeUpMonitor']['get_userData']={syn:'Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>.',lib:'wakeupmonitor.get_userData()',pro:'def get_userData()',cmt:'<p>Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',ret:'l\x27objet stock\xE9 pr\xE9c\xE9demment par l\x27appelant.'};
+doc['WakeUpMonitor']['get_wakeUpReason']={syn:'Renvoie la raison du dernier r\xE9veil.',lib:'wakeupmonitor.get_wakeUpReason()',pro:'def get_wakeUpReason()',cmt:'<p>Renvoie la raison du dernier r\xE9veil.</p>',ret:'une valeur parmi <tt>Y_WAKEUPREASON_USBPOWER</tt>, <tt>Y_WAKEUPREASON_EXTPOWER</tt>, <tt>Y_WAKEUPREASON_ENDOFSLEEP</tt>, <tt>Y_WAKEUPREASON_EXTSIG1</tt>, <tt>Y_WAKEUPREASON_SCHEDULE1</tt> et <tt>Y_WAKEUPREASON_SCHEDULE2</tt>',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_WAKEUPREASON_INVALID</tt>.'};
+doc['WakeUpMonitor']['get_wakeUpState']={syn:'Revoie l\x27\xE9tat actuel du moniteur.',lib:'wakeupmonitor.get_wakeUpState()',pro:'def get_wakeUpState()',cmt:'<p>Revoie l\x27\xE9tat actuel du moniteur.</p>',ret:'soit <tt>Y_WAKEUPSTATE_SLEEPING</tt>, soit <tt>Y_WAKEUPSTATE_AWAKE</tt>',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_WAKEUPSTATE_INVALID</tt>.'};
+doc['WakeUpMonitor']['isOnline']={syn:'V\xE9rifie si le module h\xE9bergeant le moniteur est joignable, sans d\xE9clencher d\x27erreur.',lib:'wakeupmonitor.isOnline()',pro:'def isOnline()',cmt:'<p>V\xE9rifie si le module h\xE9bergeant le moniteur est joignable, sans d\xE9clencher d\x27erreur. Si les valeurs des attributs en cache du moniteur sont valides au moment de l\x27appel, le module est consid\xE9r\xE9 joignable. Cette fonction ne cause en aucun cas d\x27exception, quelle que soit l\x27erreur qui pourrait se produire lors de la v\xE9rification de joignabilit\xE9.</p>',ret:'<tt>true</tt> si le moniteur est joignable, <tt>false</tt> sinon'};
+doc['WakeUpMonitor']['load']={syn:'Met en cache les valeurs courantes du moniteur, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e.',lib:'wakeupmonitor.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Met en cache les valeurs courantes du moniteur, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e. Par d\xE9faut, lorsqu\x27on acc\xE8de \xE0 un module, tous les attributs des fonctions du module sont automatiquement mises en cache pour la dur\xE9e standard (5 ms). Cette m\xE9thode peut \xEAtre utilis\xE9e pour marquer occasionellement les donn\xE9es cach\xE9es comme valides pour une plus longue p\xE9riode, par exemple dans le but de r\xE9duire le trafic r\xE9seau.</p>',par:{msValidity:'un entier correspondant \xE0 la dur\xE9e de validit\xE9 attribu\xE9e aux les param\xE8tres charg\xE9s, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['WakeUpMonitor']['loadAttribute']={syn:'Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.',lib:'wakeupmonitor.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un cha\xEEne vide.'};
+doc['WakeUpMonitor']['muteValueCallbacks']={syn:'D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'wakeupmonitor.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Vous pouvez utiliser cette fonction pour \xE9conomiser la bande passante et le CPU sur les machines de faible puissance, ou pour \xE9viter le d\xE9clanchement de callbacks HTTP. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['WakeUpMonitor']['nextWakeUpMonitor']={syn:'Continue l\x27\xE9num\xE9ration des Moniteurs commenc\xE9e \xE0 l\x27aide de <tt>yFirstWakeUpMonitor()</tt>.',lib:'wakeupmonitor.nextWakeUpMonitor()',pro:'def nextWakeUpMonitor()',cmt:'<p>Continue l\x27\xE9num\xE9ration des Moniteurs commenc\xE9e \xE0 l\x27aide de <tt>yFirstWakeUpMonitor()</tt>.</p>',ret:'un pointeur sur un objet <tt>YWakeUpMonitor</tt> accessible en ligne, ou <tt>null</tt> lorsque l\x27\xE9num\xE9ration est termin\xE9e.'};
+doc['WakeUpMonitor']['registerValueCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e.',lib:'wakeupmonitor.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callback peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callback ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et la cha\xEEne de caract\xE8re d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['WakeUpMonitor']['resetSleepCountDown']={syn:'R\xE9initialise le compteur de mise en sommeil.',lib:'wakeupmonitor.resetSleepCountDown()',pro:'def resetSleepCountDown()',cmt:'<p>R\xE9initialise le compteur de mise en sommeil.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur. En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['WakeUpMonitor']['set_logicalName']={syn:'Modifie le nom logique du moniteur.',lib:'wakeupmonitor.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Modifie le nom logique du moniteur. Vous pouvez utiliser <tt>yCheckLogicalName()</tt> pour v\xE9rifier si votre param\xE8tre est valide. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du moniteur.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27appel se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['WakeUpMonitor']['set_nextWakeUp']={syn:'Modifie les jours de la semaine o\xF9 un r\xE9veil doit avoir lieu.',lib:'wakeupmonitor.set_nextWakeUp()',pro:'def set_nextWakeUp(<span id=pn>newval</span>)',cmt:'<p>Modifie les jours de la semaine o\xF9 un r\xE9veil doit avoir lieu.</p>',par:{newval:'un entier repr&eacute;sentant les jours de la semaine o\xF9 un r\xE9veil doit avoir lieu'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['WakeUpMonitor']['set_powerDuration']={syn:'Modifie le temps d\x27\xE9veil maximal en secondes avant de retourner en sommeil automatiquement.',lib:'wakeupmonitor.set_powerDuration()',pro:'def set_powerDuration(<span id=pn>newval</span>)',cmt:'<p>Modifie le temps d\x27\xE9veil maximal en secondes avant de retourner en sommeil automatiquement.</p>',par:{newval:'un entier repr&eacute;sentant le temps d\x27\xE9veil maximal en secondes avant de retourner en sommeil automatiquement'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['WakeUpMonitor']['set_sleepCountdown']={syn:'Modifie le temps avant le prochain sommeil .',lib:'wakeupmonitor.set_sleepCountdown()',pro:'def set_sleepCountdown(<span id=pn>newval</span>)',cmt:'<p>Modifie le temps avant le prochain sommeil .</p>',par:{newval:'un entier repr&eacute;sentant le temps avant le prochain sommeil'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['WakeUpMonitor']['set_userData']={syn:'Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>.',lib:'wakeupmonitor.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',par:{data:'objet quelconque \xE0 m\xE9moriser'}};
+doc['WakeUpMonitor']['sleep']={syn:'D\xE9clenche une mise en sommeil jusqu\x27\xE0 la prochaine condition de r\xE9veil, l\x27heure du RTC du module doit imp\xE9rativement avoir \xE9t\xE9 r\xE9gl\xE9e au pr\xE9alable.',lib:'wakeupmonitor.sleep()',pro:'def sleep(<span id=pn>secBeforeSleep</span>)',cmt:'<p>D\xE9clenche une mise en sommeil jusqu\x27\xE0 la prochaine condition de r\xE9veil, l\x27heure du RTC du module doit imp\xE9rativement avoir \xE9t\xE9 r\xE9gl\xE9e au pr\xE9alable.</p>',par:{secBeforeSleep:'nombre de seconde avant la mise en sommeil'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['WakeUpMonitor']['sleepFor']={syn:'D\xE9clenche une mise en sommeil pour un temps donn\xE9 ou jusqu\x27\xE0 la prochaine condition de r\xE9veil, l\x27heure du RTC du module doit imp\xE9rativement avoir \xE9t\xE9 r\xE9gl\xE9e au pr\xE9alable.',lib:'wakeupmonitor.sleepFor()',pro:'def sleepFor(<span id=pn>secUntilWakeUp</span>, <span id=pn>secBeforeSleep</span>)',cmt:'<p>D\xE9clenche une mise en sommeil pour un temps donn\xE9 ou jusqu\x27\xE0 la prochaine condition de r\xE9veil, l\x27heure du RTC du module doit imp\xE9rativement avoir \xE9t\xE9 r\xE9gl\xE9e au pr\xE9alable. Le compte \xE0 rebours avant la mise en sommeil peut \xEAtre annul\xE9 gr\xE2ce \xE0 resetSleepCountDown.</p>',par:{secUntilWakeUp:'nombre de secondes avant le prochain r\xE9veil',secBeforeSleep:'nombre de secondes avant la mise en sommeil'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['WakeUpMonitor']['sleepUntil']={syn:'D\xE9clenche une mise en sommeil jusqu\x27\xE0 une date donn\xE9e ou jusqu\x27\xE0 la prochaine condition de r\xE9veil, l\x27heure du RTC du module doit imp\xE9rativement avoir \xE9t\xE9 r\xE9gl\xE9e au pr\xE9alable.',lib:'wakeupmonitor.sleepUntil()',pro:'def sleepUntil(<span id=pn>wakeUpTime</span>, <span id=pn>secBeforeSleep</span>)',cmt:'<p>D\xE9clenche une mise en sommeil jusqu\x27\xE0 une date donn\xE9e ou jusqu\x27\xE0 la prochaine condition de r\xE9veil, l\x27heure du RTC du module doit imp\xE9rativement avoir \xE9t\xE9 r\xE9gl\xE9e au pr\xE9alable. Le compte \xE0 rebours avant la mise en sommeil peut \xEAtre annul\xE9 gr\xE2ce \xE0 resetSleepCountDown.</p>',par:{wakeUpTime:'date/heure du r\xE9veil (format UNIX)',secBeforeSleep:'nombre de secondes avant la mise en sommeil'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['WakeUpMonitor']['unmuteValueCallbacks']={syn:'R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'wakeupmonitor.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Cette fonction annule un pr\xE9c\xE9dent appel \xE0 <tt>muteValueCallbacks()</tt>. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['WakeUpMonitor']['wakeUp']={syn:'Force un r\xE9veil.',lib:'wakeupmonitor.wakeUp()',pro:'def wakeUp()',cmt:'<p>Force un r\xE9veil.</p>'};
+//--- (end of generated code: WakeUpMonitor)
+//--- (generated code: WakeUpSchedule)
+doc['WakeUpSchedule']={'':{syn:'Interface de la fonction WakeUpSchedule',inc:'from yocto_wakeupschedule import *',cmt:'<p>La fonction WakeUpSchedule impl\xE9mente une condition de r\xE9veil. Le r\xE9veil est sp\xE9cifi\xE9e par un ensemble de mois et/ou jours et/ou heures et/ou minutes o\xF9 il doit se produire.</p>'}};
+doc['WakeUpSchedule']['FindWakeUpSchedule']={syn:'Permet de retrouver un r\xE9veil agend\xE9 d\x27apr\xE8s un identifiant donn\xE9.',lib:'YWakeUpSchedule.FindWakeUpSchedule()',pro:'def FindWakeUpSchedule(<span id=pn>func</span>)',cmt:'<p>Permet de retrouver un r\xE9veil agend\xE9 d\x27apr\xE8s un identifiant donn\xE9. L\x27identifiant peut \xEAtre sp\xE9cifi\xE9 sous plusieurs formes:<br> <ul> <li>NomLogiqueFonction</li> <li>NoSerieModule.IdentifiantFonction</li> <li>NoSerieModule.NomLogiqueFonction</li> <li>NomLogiqueModule.IdentifiantMat\xE9riel</li> <li>NomLogiqueModule.NomLogiqueFonction</li> </ul></p><p> Cette fonction n\x27exige pas que le r\xE9veil agend\xE9 soit en ligne au moment ou elle est appel\xE9e, l\x27objet retourn\xE9 sera n\xE9anmoins valide. Utiliser la m\xE9thode <tt>YWakeUpSchedule.isOnline()</tt> pour tester si le r\xE9veil agend\xE9 est utilisable \xE0 un moment donn\xE9. En cas d\x27ambigu\xEFt\xE9 lorsqu\x27on fait une recherche par nom logique, aucune erreur ne sera notifi\xE9e: la premi\xE8re instance trouv\xE9e sera renvoy\xE9e. La recherche se fait d\x27abord par nom mat\xE9riel, puis par nom logique.</p>',par:{func:'une cha\xEEne de caract\xE8res qui r\xE9f\xE9rence le r\xE9veil agend\xE9 sans ambigu\xEFt\xE9'},ret:'un objet de classe <tt>YWakeUpSchedule</tt> qui permet ensuite de contr\xF4ler le r\xE9veil agend\xE9.'};
+doc['WakeUpSchedule']['FirstWakeUpSchedule']={syn:'Commence l\x27\xE9num\xE9ration des r\xE9veils agend\xE9s accessibles par la librairie.',lib:'YWakeUpSchedule.FirstWakeUpSchedule()',pro:'def FirstWakeUpSchedule()',cmt:'<p>Commence l\x27\xE9num\xE9ration des r\xE9veils agend\xE9s accessibles par la librairie. Utiliser la fonction <tt>YWakeUpSchedule.nextWakeUpSchedule()</tt> pour it\xE9rer sur les autres r\xE9veils agend\xE9s.</p>',ret:'un pointeur sur un objet <tt>YWakeUpSchedule</tt>, correspondant au premier r\xE9veil agend\xE9 accessible en ligne, ou <tt>null</tt> si il n\x27y a pas de r\xE9veils agend\xE9s disponibles.'};
+doc['WakeUpSchedule']['clearCache']={syn:'Invalide le cache.',lib:'wakeupschedule.clearCache()',pro:'def clearCache()',cmt:'<p>Invalide le cache. Invalide le cache des valeurs courantes du r\xE9veil agend\xE9. Force le prochain appel \xE0 une m\xE9thode get_xxx() ou loadxxx() pour charger les les donn\xE9es depuis le module.</p>'};
+doc['WakeUpSchedule']['describe']={syn:'Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du r\xE9veil agend\xE9 au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'wakeupschedule.describe()',pro:'def describe()',cmt:'<p>Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du r\xE9veil agend\xE9 au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. Plus pr\xE9cis\xE9ment, <tt>TYPE</tt> correspond au type de fonction, <tt>NAME</tt> correspond au nom utils\xE9 lors du premier acc\xE8s a la fonction, <tt>SERIAL</tt> correspond au num\xE9ro de s\xE9rie du module si le module est connect\xE9, ou <tt>\x22unresolved\x22</tt> sinon, et <tt>FUNCTIONID</tt> correspond \xE0 l\x27identifiant mat\xE9riel de la fonction si le module est connect\xE9. Par exemple, La methode va retourner <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> si le module est d\xE9j\xE0 connect\xE9 ou <tt>Relay(BadCustomeName.relay1)=unresolved</tt> si le module n\x27est pas d\xE9j\xE0 connect\xE9. Cette methode ne declenche aucune transaction USB ou TCP et peut donc \xEAtre utilis\xE9 dans un debuggeur.</p>',ret:'une cha\xEEne de caract\xE8res d\xE9crivant le r\xE9veil agend\xE9 (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['WakeUpSchedule']['get_advertisedValue']={syn:'Retourne la valeur courante du r\xE9veil agend\xE9 (pas plus de 6 caract\xE8res).',lib:'wakeupschedule.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Retourne la valeur courante du r\xE9veil agend\xE9 (pas plus de 6 caract\xE8res).</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur courante du r\xE9veil agend\xE9 (pas plus de 6 caract\xE8res).',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['WakeUpSchedule']['get_errorMessage']={syn:'Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du r\xE9veil agend\xE9.',lib:'wakeupschedule.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du r\xE9veil agend\xE9. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'une cha\xEEne de caract\xE8res correspondant au message de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du r\xE9veil agend\xE9.'};
+doc['WakeUpSchedule']['get_errorType']={syn:'Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du r\xE9veil agend\xE9.',lib:'wakeupschedule.get_errorType()',pro:'def get_errorType()',cmt:'<p>Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du r\xE9veil agend\xE9. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'un nombre correspondant au code de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du r\xE9veil agend\xE9.'};
+doc['WakeUpSchedule']['get_friendlyName']={syn:'Retourne un identifiant global du r\xE9veil agend\xE9 au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>.',lib:'wakeupschedule.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Retourne un identifiant global du r\xE9veil agend\xE9 au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>. Le cha\xEEne retourn\xE9e utilise soit les noms logiques du module et du r\xE9veil agend\xE9 si ils sont d\xE9finis, soit respectivement le num\xE9ro de s\xE9rie du module et l\x27identifant mat\xE9riel du r\xE9veil agend\xE9 (par exemple: <tt>MyCustomName.relay1</tt>)</p>',ret:'une cha\xEEne de caract\xE8res identifiant le r\xE9veil agend\xE9 en utilisant les noms logiques (ex: <tt>MyCustomName.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['WakeUpSchedule']['get_functionDescriptor']={syn:'Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction.',lib:'wakeupschedule.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction. Cet identifiant peut \xEAtre utilis\xE9 pour tester si deux instance de <tt>YFunction</tt> r\xE9f\xE9rencent physiquement la m\xEAme fonction sur le m\xEAme module.</p>',ret:'un identifiant de type <tt>YFUN_DESCR</tt>.',ext:'Si la fonction n\x27a jamais \xE9t\xE9 contact\xE9e, la valeur retourn\xE9e sera <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>'};
+doc['WakeUpSchedule']['get_functionId']={syn:'Retourne l\x27identifiant mat\xE9riel du r\xE9veil agend\xE9, sans r\xE9f\xE9rence au module.',lib:'wakeupschedule.get_functionId()',pro:'def get_functionId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel du r\xE9veil agend\xE9, sans r\xE9f\xE9rence au module. Par example <tt>relay1</tt>.</p>',ret:'une cha\xEEne de caract\xE8res identifiant le r\xE9veil agend\xE9 (ex: <tt>relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['WakeUpSchedule']['get_hardwareId']={syn:'Retourne l\x27identifiant mat\xE9riel unique du r\xE9veil agend\xE9 au format <tt>SERIAL.FUNCTIONID</tt>.',lib:'wakeupschedule.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel unique du r\xE9veil agend\xE9 au format <tt>SERIAL.FUNCTIONID</tt>. L\x27identifiant unique est compos\xE9 du num\xE9ro de s\xE9rie du module et de l\x27identifiant mat\xE9riel du r\xE9veil agend\xE9 (par example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'une cha\xEEne de caract\xE8res identifiant le r\xE9veil agend\xE9 (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['WakeUpSchedule']['get_hours']={syn:'Retourne les heures o\xF9 le r\xE9veil est actif..',lib:'wakeupschedule.get_hours()',pro:'def get_hours()',cmt:'<p>Retourne les heures o\xF9 le r\xE9veil est actif..</p>',ret:'un entier repr&eacute;sentant les heures o\xF9 le r\xE9veil est actif',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_HOURS_INVALID</tt>.'};
+doc['WakeUpSchedule']['get_logicalName']={syn:'Retourne le nom logique du r\xE9veil agend\xE9.',lib:'wakeupschedule.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Retourne le nom logique du r\xE9veil agend\xE9.</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du r\xE9veil agend\xE9.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['WakeUpSchedule']['get_minutes']={syn:'Retourne toutes les minutes de chaque heure o\xF9 le r\xE9veil est actif.',lib:'wakeupschedule.get_minutes()',pro:'def get_minutes()',cmt:'<p>Retourne toutes les minutes de chaque heure o\xF9 le r\xE9veil est actif.</p>'};
+doc['WakeUpSchedule']['get_minutesA']={syn:'Retourne les minutes de l\x27interval 00-29 de chaque heures o\xF9 le r\xE9veil est actif.',lib:'wakeupschedule.get_minutesA()',pro:'def get_minutesA()',cmt:'<p>Retourne les minutes de l\x27interval 00-29 de chaque heures o\xF9 le r\xE9veil est actif.</p>',ret:'un entier repr&eacute;sentant les minutes de l\x27interval 00-29 de chaque heures o\xF9 le r\xE9veil est actif',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_MINUTESA_INVALID</tt>.'};
+doc['WakeUpSchedule']['get_minutesB']={syn:'Retourne les minutes de l\x27interval 30-59 de chaque heure o\xF9 le r\xE9veil est actif.',lib:'wakeupschedule.get_minutesB()',pro:'def get_minutesB()',cmt:'<p>Retourne les minutes de l\x27interval 30-59 de chaque heure o\xF9 le r\xE9veil est actif.</p>',ret:'un entier repr&eacute;sentant les minutes de l\x27interval 30-59 de chaque heure o\xF9 le r\xE9veil est actif',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_MINUTESB_INVALID</tt>.'};
+doc['WakeUpSchedule']['get_module']={syn:'Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction.',lib:'wakeupschedule.get_module()',pro:'def get_module()',cmt:'<p>Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction. Si la fonction ne peut \xEAtre trouv\xE9e sur aucun module, l\x27instance de <tt>YModule</tt> retourn\xE9e ne sera pas joignable.</p>',ret:'une instance de <tt>YModule</tt>'};
+doc['WakeUpSchedule']['get_monthDays']={syn:'Retourne les jours du mois o\xF9 le r\xE9veil est actif.',lib:'wakeupschedule.get_monthDays()',pro:'def get_monthDays()',cmt:'<p>Retourne les jours du mois o\xF9 le r\xE9veil est actif.</p>',ret:'un entier repr&eacute;sentant les jours du mois o\xF9 le r\xE9veil est actif',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_MONTHDAYS_INVALID</tt>.'};
+doc['WakeUpSchedule']['get_months']={syn:'Retourne les mois o\xF9 le r\xE9veil est actif.',lib:'wakeupschedule.get_months()',pro:'def get_months()',cmt:'<p>Retourne les mois o\xF9 le r\xE9veil est actif.</p>',ret:'un entier repr&eacute;sentant les mois o\xF9 le r\xE9veil est actif',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_MONTHS_INVALID</tt>.'};
+doc['WakeUpSchedule']['get_nextOccurence']={syn:'Retourne la date/heure de la prochaine occurence de r\xE9veil.',lib:'wakeupschedule.get_nextOccurence()',pro:'def get_nextOccurence()',cmt:'<p>Retourne la date/heure de la prochaine occurence de r\xE9veil.</p>',ret:'un entier repr&eacute;sentant la date/heure de la prochaine occurence de r\xE9veil',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_NEXTOCCURENCE_INVALID</tt>.'};
+doc['WakeUpSchedule']['get_userData']={syn:'Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>.',lib:'wakeupschedule.get_userData()',pro:'def get_userData()',cmt:'<p>Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',ret:'l\x27objet stock\xE9 pr\xE9c\xE9demment par l\x27appelant.'};
+doc['WakeUpSchedule']['get_weekDays']={syn:'Retourne les jours de la semaine o\xF9 le r\xE9veil est actif.',lib:'wakeupschedule.get_weekDays()',pro:'def get_weekDays()',cmt:'<p>Retourne les jours de la semaine o\xF9 le r\xE9veil est actif.</p>',ret:'un entier repr&eacute;sentant les jours de la semaine o\xF9 le r\xE9veil est actif',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_WEEKDAYS_INVALID</tt>.'};
+doc['WakeUpSchedule']['isOnline']={syn:'V\xE9rifie si le module h\xE9bergeant le r\xE9veil agend\xE9 est joignable, sans d\xE9clencher d\x27erreur.',lib:'wakeupschedule.isOnline()',pro:'def isOnline()',cmt:'<p>V\xE9rifie si le module h\xE9bergeant le r\xE9veil agend\xE9 est joignable, sans d\xE9clencher d\x27erreur. Si les valeurs des attributs en cache du r\xE9veil agend\xE9 sont valides au moment de l\x27appel, le module est consid\xE9r\xE9 joignable. Cette fonction ne cause en aucun cas d\x27exception, quelle que soit l\x27erreur qui pourrait se produire lors de la v\xE9rification de joignabilit\xE9.</p>',ret:'<tt>true</tt> si le r\xE9veil agend\xE9 est joignable, <tt>false</tt> sinon'};
+doc['WakeUpSchedule']['load']={syn:'Met en cache les valeurs courantes du r\xE9veil agend\xE9, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e.',lib:'wakeupschedule.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Met en cache les valeurs courantes du r\xE9veil agend\xE9, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e. Par d\xE9faut, lorsqu\x27on acc\xE8de \xE0 un module, tous les attributs des fonctions du module sont automatiquement mises en cache pour la dur\xE9e standard (5 ms). Cette m\xE9thode peut \xEAtre utilis\xE9e pour marquer occasionellement les donn\xE9es cach\xE9es comme valides pour une plus longue p\xE9riode, par exemple dans le but de r\xE9duire le trafic r\xE9seau.</p>',par:{msValidity:'un entier correspondant \xE0 la dur\xE9e de validit\xE9 attribu\xE9e aux les param\xE8tres charg\xE9s, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['WakeUpSchedule']['loadAttribute']={syn:'Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.',lib:'wakeupschedule.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un cha\xEEne vide.'};
+doc['WakeUpSchedule']['muteValueCallbacks']={syn:'D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'wakeupschedule.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Vous pouvez utiliser cette fonction pour \xE9conomiser la bande passante et le CPU sur les machines de faible puissance, ou pour \xE9viter le d\xE9clanchement de callbacks HTTP. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['WakeUpSchedule']['nextWakeUpSchedule']={syn:'Continue l\x27\xE9num\xE9ration des r\xE9veils agend\xE9s commenc\xE9e \xE0 l\x27aide de <tt>yFirstWakeUpSchedule()</tt>.',lib:'wakeupschedule.nextWakeUpSchedule()',pro:'def nextWakeUpSchedule()',cmt:'<p>Continue l\x27\xE9num\xE9ration des r\xE9veils agend\xE9s commenc\xE9e \xE0 l\x27aide de <tt>yFirstWakeUpSchedule()</tt>.</p>',ret:'un pointeur sur un objet <tt>YWakeUpSchedule</tt> accessible en ligne, ou <tt>null</tt> lorsque l\x27\xE9num\xE9ration est termin\xE9e.'};
+doc['WakeUpSchedule']['registerValueCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e.',lib:'wakeupschedule.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callback peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callback ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et la cha\xEEne de caract\xE8re d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['WakeUpSchedule']['set_hours']={syn:'Modifie les heures o\xF9 un r\xE9veil doit avoir lieu.',lib:'wakeupschedule.set_hours()',pro:'def set_hours(<span id=pn>newval</span>)',cmt:'<p>Modifie les heures o\xF9 un r\xE9veil doit avoir lieu.</p>',par:{newval:'un entier repr&eacute;sentant les heures o\xF9 un r\xE9veil doit avoir lieu'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['WakeUpSchedule']['set_logicalName']={syn:'Modifie le nom logique du r\xE9veil agend\xE9.',lib:'wakeupschedule.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Modifie le nom logique du r\xE9veil agend\xE9. Vous pouvez utiliser <tt>yCheckLogicalName()</tt> pour v\xE9rifier si votre param\xE8tre est valide. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du r\xE9veil agend\xE9.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27appel se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['WakeUpSchedule']['set_minutes']={syn:'Modifie toutes les minutes o\xF9 un r\xE9veil doit avoir lieu ',lib:'wakeupschedule.set_minutes()',pro:'def set_minutes(<span id=pn>bitmap</span>)',cmt:'<p>Modifie toutes les minutes o\xF9 un r\xE9veil doit avoir lieu</p>',par:{bitmap:'Minutes 00-59 de chaque heure o\xF9 le r\xE9veil est actif.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['WakeUpSchedule']['set_minutesA']={syn:'Modifie les minutes de l\x27interval 00-29 o\xF9 un r\xE9veil doit avoir lieu.',lib:'wakeupschedule.set_minutesA()',pro:'def set_minutesA(<span id=pn>newval</span>)',cmt:'<p>Modifie les minutes de l\x27interval 00-29 o\xF9 un r\xE9veil doit avoir lieu.</p>',par:{newval:'un entier repr&eacute;sentant les minutes de l\x27interval 00-29 o\xF9 un r\xE9veil doit avoir lieu'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['WakeUpSchedule']['set_minutesB']={syn:'Modifie les minutes de l\x27interval 30-59 o\xF9 un r\xE9veil doit avoir lieu.',lib:'wakeupschedule.set_minutesB()',pro:'def set_minutesB(<span id=pn>newval</span>)',cmt:'<p>Modifie les minutes de l\x27interval 30-59 o\xF9 un r\xE9veil doit avoir lieu.</p>',par:{newval:'un entier repr&eacute;sentant les minutes de l\x27interval 30-59 o\xF9 un r\xE9veil doit avoir lieu'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['WakeUpSchedule']['set_monthDays']={syn:'Modifie les jours du mois o\xF9 un r\xE9veil doit avoir lieu.',lib:'wakeupschedule.set_monthDays()',pro:'def set_monthDays(<span id=pn>newval</span>)',cmt:'<p>Modifie les jours du mois o\xF9 un r\xE9veil doit avoir lieu.</p>',par:{newval:'un entier repr&eacute;sentant les jours du mois o\xF9 un r\xE9veil doit avoir lieu'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['WakeUpSchedule']['set_months']={syn:'Modifie les mois o\xF9 un r\xE9veil doit avoir lieu.',lib:'wakeupschedule.set_months()',pro:'def set_months(<span id=pn>newval</span>)',cmt:'<p>Modifie les mois o\xF9 un r\xE9veil doit avoir lieu.</p>',par:{newval:'un entier repr&eacute;sentant les mois o\xF9 un r\xE9veil doit avoir lieu'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['WakeUpSchedule']['set_userData']={syn:'Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>.',lib:'wakeupschedule.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',par:{data:'objet quelconque \xE0 m\xE9moriser'}};
+doc['WakeUpSchedule']['set_weekDays']={syn:'Modifie les jours de la semaine o\xF9 un r\xE9veil doit avoir lieu.',lib:'wakeupschedule.set_weekDays()',pro:'def set_weekDays(<span id=pn>newval</span>)',cmt:'<p>Modifie les jours de la semaine o\xF9 un r\xE9veil doit avoir lieu.</p>',par:{newval:'un entier repr&eacute;sentant les jours de la semaine o\xF9 un r\xE9veil doit avoir lieu'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['WakeUpSchedule']['unmuteValueCallbacks']={syn:'R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'wakeupschedule.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Cette fonction annule un pr\xE9c\xE9dent appel \xE0 <tt>muteValueCallbacks()</tt>. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+//--- (end of generated code: WakeUpSchedule)
+//--- (generated code: GenericSensor)
+doc['GenericSensor']={'':{syn:'Interface de la fonction GenericSensor',inc:'from yocto_genericsensor import *',cmt:'<p>La classe YGenericSensor permet de lire et de configurer les transducteurs de signaux Yoctopuce. Elle h\xE9rite de la class YSensor toutes les fonctions de base des capteurs Yoctopuce: lecture de mesures, callbacks, enregistreur de donn\xE9es. De plus, elle permet de configurer une conversion automatique entre le signal mesur\xE9 et la grandeur physique repr\xE9sent\xE9e.</p>'}};
+doc['GenericSensor']['FindGenericSensor']={syn:'Permet de retrouver un capteur g\xE9n\xE9rique d\x27apr\xE8s un identifiant donn\xE9.',lib:'YGenericSensor.FindGenericSensor()',pro:'def FindGenericSensor(<span id=pn>func</span>)',cmt:'<p>Permet de retrouver un capteur g\xE9n\xE9rique d\x27apr\xE8s un identifiant donn\xE9. L\x27identifiant peut \xEAtre sp\xE9cifi\xE9 sous plusieurs formes:<br> <ul> <li>NomLogiqueFonction</li> <li>NoSerieModule.IdentifiantFonction</li> <li>NoSerieModule.NomLogiqueFonction</li> <li>NomLogiqueModule.IdentifiantMat\xE9riel</li> <li>NomLogiqueModule.NomLogiqueFonction</li> </ul></p><p> Cette fonction n\x27exige pas que le capteur g\xE9n\xE9rique soit en ligne au moment ou elle est appel\xE9e, l\x27objet retourn\xE9 sera n\xE9anmoins valide. Utiliser la m\xE9thode <tt>YGenericSensor.isOnline()</tt> pour tester si le capteur g\xE9n\xE9rique est utilisable \xE0 un moment donn\xE9. En cas d\x27ambigu\xEFt\xE9 lorsqu\x27on fait une recherche par nom logique, aucune erreur ne sera notifi\xE9e: la premi\xE8re instance trouv\xE9e sera renvoy\xE9e. La recherche se fait d\x27abord par nom mat\xE9riel, puis par nom logique.</p>',par:{func:'une cha\xEEne de caract\xE8res qui r\xE9f\xE9rence le capteur g\xE9n\xE9rique sans ambigu\xEFt\xE9'},ret:'un objet de classe <tt>YGenericSensor</tt> qui permet ensuite de contr\xF4ler le capteur g\xE9n\xE9rique.'};
+doc['GenericSensor']['FirstGenericSensor']={syn:'Commence l\x27\xE9num\xE9ration des capteurs g\xE9n\xE9riques accessibles par la librairie.',lib:'YGenericSensor.FirstGenericSensor()',pro:'def FirstGenericSensor()',cmt:'<p>Commence l\x27\xE9num\xE9ration des capteurs g\xE9n\xE9riques accessibles par la librairie. Utiliser la fonction <tt>YGenericSensor.nextGenericSensor()</tt> pour it\xE9rer sur les autres capteurs g\xE9n\xE9riques.</p>',ret:'un pointeur sur un objet <tt>YGenericSensor</tt>, correspondant au premier capteur g\xE9n\xE9rique accessible en ligne, ou <tt>null</tt> si il n\x27y a pas de capteurs g\xE9n\xE9riques disponibles.'};
+doc['GenericSensor']['calibrateFromPoints']={syn:'Enregistre des points de correction de mesure, typiquement pour compenser l\x27effet d\x27un bo\xEEtier sur les mesures rendues par le capteur.',lib:'genericsensor.calibrateFromPoints()',pro:'def calibrateFromPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Enregistre des points de correction de mesure, typiquement pour compenser l\x27effet d\x27un bo\xEEtier sur les mesures rendues par le capteur. Il est possible d\x27enregistrer jusqu\x27\xE0 cinq points de correction. Les points de correction doivent \xEAtre fournis en ordre croissant, et dans la plage valide du capteur. Le module effectue automatiquement une interpolation lin\xE9aire de l\x27erreur entre les points sp\xE9cifi\xE9s. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p><p> Pour plus de plus amples possibilit\xE9s d\x27appliquer une surcalibration aux capteurs, veuillez contacter support@yoctopuce.com.</p>',par:{rawValues:'tableau de nombres flottants, correspondant aux valeurs brutes rendues par le capteur pour les points de correction.',refValues:'tableau de nombres flottants, correspondant aux valeurs corrig\xE9es d\xE9sir\xE9es pour les points de correction.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['GenericSensor']['clearCache']={syn:'Invalide le cache.',lib:'genericsensor.clearCache()',pro:'def clearCache()',cmt:'<p>Invalide le cache. Invalide le cache des valeurs courantes du capteur g\xE9n\xE9rique. Force le prochain appel \xE0 une m\xE9thode get_xxx() ou loadxxx() pour charger les les donn\xE9es depuis le module.</p>'};
+doc['GenericSensor']['describe']={syn:'Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du capteur g\xE9n\xE9rique au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'genericsensor.describe()',pro:'def describe()',cmt:'<p>Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du capteur g\xE9n\xE9rique au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. Plus pr\xE9cis\xE9ment, <tt>TYPE</tt> correspond au type de fonction, <tt>NAME</tt> correspond au nom utils\xE9 lors du premier acc\xE8s a la fonction, <tt>SERIAL</tt> correspond au num\xE9ro de s\xE9rie du module si le module est connect\xE9, ou <tt>\x22unresolved\x22</tt> sinon, et <tt>FUNCTIONID</tt> correspond \xE0 l\x27identifiant mat\xE9riel de la fonction si le module est connect\xE9. Par exemple, La methode va retourner <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> si le module est d\xE9j\xE0 connect\xE9 ou <tt>Relay(BadCustomeName.relay1)=unresolved</tt> si le module n\x27est pas d\xE9j\xE0 connect\xE9. Cette methode ne declenche aucune transaction USB ou TCP et peut donc \xEAtre utilis\xE9 dans un debuggeur.</p>',ret:'une cha\xEEne de caract\xE8res d\xE9crivant le capteur g\xE9n\xE9rique (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['GenericSensor']['get_advertisedValue']={syn:'Retourne la valeur courante du capteur g\xE9n\xE9rique (pas plus de 6 caract\xE8res).',lib:'genericsensor.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Retourne la valeur courante du capteur g\xE9n\xE9rique (pas plus de 6 caract\xE8res).</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur courante du capteur g\xE9n\xE9rique (pas plus de 6 caract\xE8res).',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['GenericSensor']['get_currentRawValue']={syn:'Retourne la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration).',lib:'genericsensor.get_currentRawValue()',pro:'def get_currentRawValue()',cmt:'<p>Retourne la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration).</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration)',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_CURRENTRAWVALUE_INVALID</tt>.'};
+doc['GenericSensor']['get_currentValue']={syn:'Retourne la valeur mesur\xE9e actuelle.',lib:'genericsensor.get_currentValue()',pro:'def get_currentValue()',cmt:'<p>Retourne la valeur mesur\xE9e actuelle.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur mesur\xE9e actuelle',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_CURRENTVALUE_INVALID</tt>.'};
+doc['GenericSensor']['get_errorMessage']={syn:'Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du capteur g\xE9n\xE9rique.',lib:'genericsensor.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du capteur g\xE9n\xE9rique. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'une cha\xEEne de caract\xE8res correspondant au message de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du capteur g\xE9n\xE9rique.'};
+doc['GenericSensor']['get_errorType']={syn:'Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du capteur g\xE9n\xE9rique.',lib:'genericsensor.get_errorType()',pro:'def get_errorType()',cmt:'<p>Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du capteur g\xE9n\xE9rique. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'un nombre correspondant au code de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du capteur g\xE9n\xE9rique.'};
+doc['GenericSensor']['get_friendlyName']={syn:'Retourne un identifiant global du capteur g\xE9n\xE9rique au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>.',lib:'genericsensor.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Retourne un identifiant global du capteur g\xE9n\xE9rique au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>. Le cha\xEEne retourn\xE9e utilise soit les noms logiques du module et du capteur g\xE9n\xE9rique si ils sont d\xE9finis, soit respectivement le num\xE9ro de s\xE9rie du module et l\x27identifant mat\xE9riel du capteur g\xE9n\xE9rique (par exemple: <tt>MyCustomName.relay1</tt>)</p>',ret:'une cha\xEEne de caract\xE8res identifiant le capteur g\xE9n\xE9rique en utilisant les noms logiques (ex: <tt>MyCustomName.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['GenericSensor']['get_functionDescriptor']={syn:'Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction.',lib:'genericsensor.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction. Cet identifiant peut \xEAtre utilis\xE9 pour tester si deux instance de <tt>YFunction</tt> r\xE9f\xE9rencent physiquement la m\xEAme fonction sur le m\xEAme module.</p>',ret:'un identifiant de type <tt>YFUN_DESCR</tt>.',ext:'Si la fonction n\x27a jamais \xE9t\xE9 contact\xE9e, la valeur retourn\xE9e sera <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>'};
+doc['GenericSensor']['get_functionId']={syn:'Retourne l\x27identifiant mat\xE9riel du capteur g\xE9n\xE9rique, sans r\xE9f\xE9rence au module.',lib:'genericsensor.get_functionId()',pro:'def get_functionId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel du capteur g\xE9n\xE9rique, sans r\xE9f\xE9rence au module. Par example <tt>relay1</tt>.</p>',ret:'une cha\xEEne de caract\xE8res identifiant le capteur g\xE9n\xE9rique (ex: <tt>relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['GenericSensor']['get_hardwareId']={syn:'Retourne l\x27identifiant mat\xE9riel unique du capteur g\xE9n\xE9rique au format <tt>SERIAL.FUNCTIONID</tt>.',lib:'genericsensor.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel unique du capteur g\xE9n\xE9rique au format <tt>SERIAL.FUNCTIONID</tt>. L\x27identifiant unique est compos\xE9 du num\xE9ro de s\xE9rie du module et de l\x27identifiant mat\xE9riel du capteur g\xE9n\xE9rique (par example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'une cha\xEEne de caract\xE8res identifiant le capteur g\xE9n\xE9rique (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['GenericSensor']['get_highestValue']={syn:'Retourne la valeur maximale observ\xE9e pour la measure depuis le d\xE9marrage du module.',lib:'genericsensor.get_highestValue()',pro:'def get_highestValue()',cmt:'<p>Retourne la valeur maximale observ\xE9e pour la measure depuis le d\xE9marrage du module.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur maximale observ\xE9e pour la measure depuis le d\xE9marrage du module',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_HIGHESTVALUE_INVALID</tt>.'};
+doc['GenericSensor']['get_logFrequency']={syn:'Retourne la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es.',lib:'genericsensor.get_logFrequency()',pro:'def get_logFrequency()',cmt:'<p>Retourne la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_LOGFREQUENCY_INVALID</tt>.'};
+doc['GenericSensor']['get_logicalName']={syn:'Retourne le nom logique du capteur g\xE9n\xE9rique.',lib:'genericsensor.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Retourne le nom logique du capteur g\xE9n\xE9rique.</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du capteur g\xE9n\xE9rique.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['GenericSensor']['get_lowestValue']={syn:'Retourne la valeur minimale observ\xE9e pour la measure depuis le d\xE9marrage du module.',lib:'genericsensor.get_lowestValue()',pro:'def get_lowestValue()',cmt:'<p>Retourne la valeur minimale observ\xE9e pour la measure depuis le d\xE9marrage du module.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur minimale observ\xE9e pour la measure depuis le d\xE9marrage du module',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_LOWESTVALUE_INVALID</tt>.'};
+doc['GenericSensor']['get_module']={syn:'Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction.',lib:'genericsensor.get_module()',pro:'def get_module()',cmt:'<p>Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction. Si la fonction ne peut \xEAtre trouv\xE9e sur aucun module, l\x27instance de <tt>YModule</tt> retourn\xE9e ne sera pas joignable.</p>',ret:'une instance de <tt>YModule</tt>'};
+doc['GenericSensor']['get_recordedData']={syn:'Retourne un objet DataSet repr\xE9sentant des mesures de ce capteur pr\xE9c\xE9demment enregistr\xE9es \xE0 l\x27aide du DataLogger, pour l\x27intervalle de temps sp\xE9cifi\xE9.',lib:'genericsensor.get_recordedData()',pro:'def get_recordedData(<span id=pn>startTime</span>, <span id=pn>endTime</span>)',cmt:'<p>Retourne un objet DataSet repr\xE9sentant des mesures de ce capteur pr\xE9c\xE9demment enregistr\xE9es \xE0 l\x27aide du DataLogger, pour l\x27intervalle de temps sp\xE9cifi\xE9. Veuillez vous r\xE9f\xE9rer \xE0 la documentation de la classe DataSet pour plus plus d\x27informations sur la mani\xE8re d\x27obtenir un aper\xE7u des mesures pour la p\xE9riode, et comment charger progressivement une grande quantit\xE9 de mesures depuis le dataLogger.</p><p> Cette m\xE9thode ne fonctionne que si le module utilise un firmware r\xE9cent, car les objets DataSet ne sont pas support\xE9s par les firmwares ant\xE9rieurs \xE0 la r\xE9vision 13000.</p>',par:{startTime:'le d\xE9but de l\x27intervalle de mesure d\xE9sir\xE9, c\x27est \xE0 dire en nombre de secondes depuis le 1er janvier 1970 UTC. La valeur 0 peut \xEAtre utilis\xE9e pour ne poser aucune limite sur le d\xE9but des mesures.',endTime:'la find de l\x27intercalle de mesure d\xE9sir\xE9, c\x27est \xE0 dire en nombre de secondes depuis le 1er janvier 1970 UTC. La valeur 0 peut \xEAtre utilis\xE9e pour ne poser aucune limite de fin.'},ret:'une instance de YDataSet, dont les m\xE9thodes permettent de d\x27acc\xE9der aux donn\xE9es historiques souhait\xE9es.'};
+doc['GenericSensor']['get_reportFrequency']={syn:'Retourne la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction.',lib:'genericsensor.get_reportFrequency()',pro:'def get_reportFrequency()',cmt:'<p>Retourne la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_REPORTFREQUENCY_INVALID</tt>.'};
+doc['GenericSensor']['get_resolution']={syn:'Retourne la r\xE9solution des valeurs mesur\xE9es.',lib:'genericsensor.get_resolution()',pro:'def get_resolution()',cmt:'<p>Retourne la r\xE9solution des valeurs mesur\xE9es. La r\xE9solution correspond \xE0 la pr\xE9cision num\xE9rique de la repr\xE9sentation des mesures. Elle n\x27est pas forc\xE9ment identique \xE0 la pr\xE9cision r\xE9elle du capteur.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la r\xE9solution des valeurs mesur\xE9es',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_RESOLUTION_INVALID</tt>.'};
+doc['GenericSensor']['get_sensorState']={syn:'Retourne le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment.',lib:'genericsensor.get_sensorState()',pro:'def get_sensorState()',cmt:'<p>Retourne le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment.</p>',ret:'un entier repr&eacute;sentant le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_SENSORSTATE_INVALID</tt>.'};
+doc['GenericSensor']['get_signalBias']={syn:'Retourne le biais du signal \xE9lectrique pour la correction du point z\xE9ro.',lib:'genericsensor.get_signalBias()',pro:'def get_signalBias()',cmt:'<p>Retourne le biais du signal \xE9lectrique pour la correction du point z\xE9ro. Un biais positif correspond \xE0 la correction d\x27un signal trop positif, tandis qu\x27un biais n\xE9gatif correspond \xE0 la correction d\x27un signal trop n\xE9gatif.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant le biais du signal \xE9lectrique pour la correction du point z\xE9ro',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_SIGNALBIAS_INVALID</tt>.'};
+doc['GenericSensor']['get_signalRange']={syn:'Retourne la plage de signal \xE9lectrique utilis\xE9 par le capteur.',lib:'genericsensor.get_signalRange()',pro:'def get_signalRange()',cmt:'<p>Retourne la plage de signal \xE9lectrique utilis\xE9 par le capteur.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la plage de signal \xE9lectrique utilis\xE9 par le capteur',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_SIGNALRANGE_INVALID</tt>.'};
+doc['GenericSensor']['get_signalSampling']={syn:'Retourne la m\xE9thode d\x27\xE9chantillonnage du signal utilis\xE9e.',lib:'genericsensor.get_signalSampling()',pro:'def get_signalSampling()',cmt:'<p>Retourne la m\xE9thode d\x27\xE9chantillonnage du signal utilis\xE9e. La m\xE9thode <tt>HIGH_RATE</tt> effectue les mesures le plus rapidement possible, sans aucun filtrage. La m\xE9thode <tt>HIGH_RATE_FILTERED</tt> rajoute un filtre m\xE9dian sur une fen\xEAtre de 7 \xE9chantillons. La m\xE9thode <tt>LOW_NOISE</tt> utilise une fr\xE9quence d\x27aquisition r\xE9duite pour r\xE9duire le bruit. La m\xE9thode <tt>LOW_NOISE_FILTERED</tt> combine la fr\xE9quence r\xE9duite avec un filtre m\xE9dian, pour obtenir des mesures aussi stables que possible m\xEAme sur un signal bruit\xE9.</p>',ret:'une valeur parmi <tt>Y_SIGNALSAMPLING_HIGH_RATE</tt>, <tt>Y_SIGNALSAMPLING_HIGH_RATE_FILTERED</tt>, <tt>Y_SIGNALSAMPLING_LOW_NOISE</tt> et <tt>Y_SIGNALSAMPLING_LOW_NOISE_FILTERED</tt> repr&eacute;sentant la m\xE9thode d\x27\xE9chantillonnage du signal utilis\xE9e',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_SIGNALSAMPLING_INVALID</tt>.'};
+doc['GenericSensor']['get_signalUnit']={syn:'Retourne l\x27unit\xE9 du signal \xE9lectrique utilis\xE9 par le capteur.',lib:'genericsensor.get_signalUnit()',pro:'def get_signalUnit()',cmt:'<p>Retourne l\x27unit\xE9 du signal \xE9lectrique utilis\xE9 par le capteur.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant l\x27unit\xE9 du signal \xE9lectrique utilis\xE9 par le capteur',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_SIGNALUNIT_INVALID</tt>.'};
+doc['GenericSensor']['get_signalValue']={syn:'Retourne la valeur actuelle du signal \xE9lectrique mesur\xE9 par le capteur.',lib:'genericsensor.get_signalValue()',pro:'def get_signalValue()',cmt:'<p>Retourne la valeur actuelle du signal \xE9lectrique mesur\xE9 par le capteur.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur actuelle du signal \xE9lectrique mesur\xE9 par le capteur',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_SIGNALVALUE_INVALID</tt>.'};
+doc['GenericSensor']['get_unit']={syn:'Retourne l\x27unit\xE9 dans laquelle la measure est exprim\xE9e.',lib:'genericsensor.get_unit()',pro:'def get_unit()',cmt:'<p>Retourne l\x27unit\xE9 dans laquelle la measure est exprim\xE9e.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant l\x27unit\xE9 dans laquelle la measure est exprim\xE9e',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_UNIT_INVALID</tt>.'};
+doc['GenericSensor']['get_userData']={syn:'Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>.',lib:'genericsensor.get_userData()',pro:'def get_userData()',cmt:'<p>Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',ret:'l\x27objet stock\xE9 pr\xE9c\xE9demment par l\x27appelant.'};
+doc['GenericSensor']['get_valueRange']={syn:'Retourne la plage de valeurs physiques mesur\xE9s par le capteur.',lib:'genericsensor.get_valueRange()',pro:'def get_valueRange()',cmt:'<p>Retourne la plage de valeurs physiques mesur\xE9s par le capteur.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la plage de valeurs physiques mesur\xE9s par le capteur',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_VALUERANGE_INVALID</tt>.'};
+doc['GenericSensor']['isOnline']={syn:'V\xE9rifie si le module h\xE9bergeant le capteur g\xE9n\xE9rique est joignable, sans d\xE9clencher d\x27erreur.',lib:'genericsensor.isOnline()',pro:'def isOnline()',cmt:'<p>V\xE9rifie si le module h\xE9bergeant le capteur g\xE9n\xE9rique est joignable, sans d\xE9clencher d\x27erreur. Si les valeurs des attributs en cache du capteur g\xE9n\xE9rique sont valides au moment de l\x27appel, le module est consid\xE9r\xE9 joignable. Cette fonction ne cause en aucun cas d\x27exception, quelle que soit l\x27erreur qui pourrait se produire lors de la v\xE9rification de joignabilit\xE9.</p>',ret:'<tt>true</tt> si le capteur g\xE9n\xE9rique est joignable, <tt>false</tt> sinon'};
+doc['GenericSensor']['load']={syn:'Met en cache les valeurs courantes du capteur g\xE9n\xE9rique, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e.',lib:'genericsensor.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Met en cache les valeurs courantes du capteur g\xE9n\xE9rique, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e. Par d\xE9faut, lorsqu\x27on acc\xE8de \xE0 un module, tous les attributs des fonctions du module sont automatiquement mises en cache pour la dur\xE9e standard (5 ms). Cette m\xE9thode peut \xEAtre utilis\xE9e pour marquer occasionellement les donn\xE9es cach\xE9es comme valides pour une plus longue p\xE9riode, par exemple dans le but de r\xE9duire le trafic r\xE9seau.</p>',par:{msValidity:'un entier correspondant \xE0 la dur\xE9e de validit\xE9 attribu\xE9e aux les param\xE8tres charg\xE9s, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['GenericSensor']['loadAttribute']={syn:'Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.',lib:'genericsensor.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un cha\xEEne vide.'};
+doc['GenericSensor']['loadCalibrationPoints']={syn:'R\xE9cup\xE8re les points de correction de mesure pr\xE9c\xE9demment enregistr\xE9s \xE0 l\x27aide de la m\xE9thode <tt>calibrateFromPoints</tt>.',lib:'genericsensor.loadCalibrationPoints()',pro:'def loadCalibrationPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>R\xE9cup\xE8re les points de correction de mesure pr\xE9c\xE9demment enregistr\xE9s \xE0 l\x27aide de la m\xE9thode <tt>calibrateFromPoints</tt>.</p>',par:{rawValues:'tableau de nombres flottants, qui sera rempli par la fonction avec les valeurs brutes des points de correction.',refValues:'tableau de nombres flottants, qui sera rempli par la fonction avec les valeurs d\xE9sir\xE9es des points de correction.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['GenericSensor']['muteValueCallbacks']={syn:'D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'genericsensor.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Vous pouvez utiliser cette fonction pour \xE9conomiser la bande passante et le CPU sur les machines de faible puissance, ou pour \xE9viter le d\xE9clanchement de callbacks HTTP. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['GenericSensor']['nextGenericSensor']={syn:'Continue l\x27\xE9num\xE9ration des capteurs g\xE9n\xE9riques commenc\xE9e \xE0 l\x27aide de <tt>yFirstGenericSensor()</tt>.',lib:'genericsensor.nextGenericSensor()',pro:'def nextGenericSensor()',cmt:'<p>Continue l\x27\xE9num\xE9ration des capteurs g\xE9n\xE9riques commenc\xE9e \xE0 l\x27aide de <tt>yFirstGenericSensor()</tt>.</p>',ret:'un pointeur sur un objet <tt>YGenericSensor</tt> accessible en ligne, ou <tt>null</tt> lorsque l\x27\xE9num\xE9ration est termin\xE9e.'};
+doc['GenericSensor']['registerTimedReportCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque notification p\xE9riodique.',lib:'genericsensor.registerTimedReportCallback()',pro:'def registerTimedReportCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque notification p\xE9riodique. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callbacks peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callbacks ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et un objet YMeasure d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['GenericSensor']['registerValueCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e.',lib:'genericsensor.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callback peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callback ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et la cha\xEEne de caract\xE8re d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['GenericSensor']['set_highestValue']={syn:'Modifie la m\xE9moire de valeur maximale observ\xE9e.',lib:'genericsensor.set_highestValue()',pro:'def set_highestValue(<span id=pn>newval</span>)',cmt:'<p>Modifie la m\xE9moire de valeur maximale observ\xE9e.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la m\xE9moire de valeur maximale observ\xE9e'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['GenericSensor']['set_logFrequency']={syn:'Modifie la fr\xE9quence d\x27enregistrement des mesures dans le datalogger.',lib:'genericsensor.set_logFrequency()',pro:'def set_logFrequency(<span id=pn>newval</span>)',cmt:'<p>Modifie la fr\xE9quence d\x27enregistrement des mesures dans le datalogger. La fr\xE9quence peut \xEAtre sp\xE9cifi\xE9e en mesures par secondes, en mesures par minutes (par exemple \x2215/m\x22) ou en mesures par heure (par exemple \x224/h\x22). Pour d\xE9sactiver l\x27enregistrement des mesures de cette fonction, utilisez la valeur \x22OFF\x22.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence d\x27enregistrement des mesures dans le datalogger'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['GenericSensor']['set_logicalName']={syn:'Modifie le nom logique du capteur g\xE9n\xE9rique.',lib:'genericsensor.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Modifie le nom logique du capteur g\xE9n\xE9rique. Vous pouvez utiliser <tt>yCheckLogicalName()</tt> pour v\xE9rifier si votre param\xE8tre est valide. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du capteur g\xE9n\xE9rique.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27appel se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['GenericSensor']['set_lowestValue']={syn:'Modifie la m\xE9moire de valeur minimale observ\xE9e.',lib:'genericsensor.set_lowestValue()',pro:'def set_lowestValue(<span id=pn>newval</span>)',cmt:'<p>Modifie la m\xE9moire de valeur minimale observ\xE9e.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la m\xE9moire de valeur minimale observ\xE9e'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['GenericSensor']['set_reportFrequency']={syn:'Modifie la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es.',lib:'genericsensor.set_reportFrequency()',pro:'def set_reportFrequency(<span id=pn>newval</span>)',cmt:'<p>Modifie la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es. La fr\xE9quence peut \xEAtre sp\xE9cifi\xE9e en mesures par secondes, en mesures par minutes (par exemple \x2215/m\x22) ou en mesures par heure (par exemple \x224/h\x22). Pour d\xE9sactiver les notifications p\xE9riodiques pour cette fonction, utilisez la valeur \x22OFF\x22.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['GenericSensor']['set_resolution']={syn:'Modifie la r\xE9solution des valeurs physique mesur\xE9es.',lib:'genericsensor.set_resolution()',pro:'def set_resolution(<span id=pn>newval</span>)',cmt:'<p>Modifie la r\xE9solution des valeurs physique mesur\xE9es. La r\xE9solution correspond \xE0 la pr\xE9cision de l\x27affichage des mesures. Elle ne change pas la pr\xE9cision de la mesure elle-m\xEAme.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la r\xE9solution des valeurs physique mesur\xE9es'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['GenericSensor']['set_signalBias']={syn:'Modifie le biais du signal \xE9lectrique pour la correction du point z\xE9ro.',lib:'genericsensor.set_signalBias()',pro:'def set_signalBias(<span id=pn>newval</span>)',cmt:'<p>Modifie le biais du signal \xE9lectrique pour la correction du point z\xE9ro. Si votre signal \xE9lectrique est positif lorsqu\x27il devrait \xEAtre nul, configurez un biais positif de la m\xEAme valeur afin de corriger l\x27erreur.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant le biais du signal \xE9lectrique pour la correction du point z\xE9ro'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['GenericSensor']['set_signalRange']={syn:'Modifie la plage de signal \xE9lectrique utilis\xE9 par le capteur.',lib:'genericsensor.set_signalRange()',pro:'def set_signalRange(<span id=pn>newval</span>)',cmt:'<p>Modifie la plage de signal \xE9lectrique utilis\xE9 par le capteur.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la plage de signal \xE9lectrique utilis\xE9 par le capteur'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['GenericSensor']['set_signalSampling']={syn:'Modifie la m\xE9thode d\x27\xE9chantillonnage du signal \xE0 utiliser.',lib:'genericsensor.set_signalSampling()',pro:'def set_signalSampling(<span id=pn>newval</span>)',cmt:'<p>Modifie la m\xE9thode d\x27\xE9chantillonnage du signal \xE0 utiliser. La m\xE9thode <tt>HIGH_RATE</tt> effectue les mesures le plus rapidement possible, sans aucun filtrage. La m\xE9thode <tt>HIGH_RATE_FILTERED</tt> rajoute un filtre m\xE9dian sur une fen\xEAtre de 7 \xE9chantillons. La m\xE9thode <tt>LOW_NOISE</tt> utilise une fr\xE9quence d\x27aquisition r\xE9duite pour r\xE9duire le bruit. La m\xE9thode <tt>LOW_NOISE_FILTERED</tt> combine la fr\xE9quence r\xE9duite avec un filtre m\xE9dian, pour obtenir des mesures aussi stables que possible m\xEAme sur un signal bruit\xE9.</p>',par:{newval:'une valeur parmi <tt>Y_SIGNALSAMPLING_HIGH_RATE</tt>, <tt>Y_SIGNALSAMPLING_HIGH_RATE_FILTERED</tt>, <tt>Y_SIGNALSAMPLING_LOW_NOISE</tt> et <tt>Y_SIGNALSAMPLING_LOW_NOISE_FILTERED</tt> repr&eacute;sentant la m\xE9thode d\x27\xE9chantillonnage du signal \xE0 utiliser'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['GenericSensor']['set_unit']={syn:'Change l\x27unit\xE9 dans laquelle la valeur mesur\xE9e est exprim\xE9e.',lib:'genericsensor.set_unit()',pro:'def set_unit(<span id=pn>newval</span>)',cmt:'<p>Change l\x27unit\xE9 dans laquelle la valeur mesur\xE9e est exprim\xE9e. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['GenericSensor']['set_userData']={syn:'Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>.',lib:'genericsensor.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',par:{data:'objet quelconque \xE0 m\xE9moriser'}};
+doc['GenericSensor']['set_valueRange']={syn:'Modifie la plage de valeurs physiques mesur\xE9s par le capteur.',lib:'genericsensor.set_valueRange()',pro:'def set_valueRange(<span id=pn>newval</span>)',cmt:'<p>Modifie la plage de valeurs physiques mesur\xE9s par le capteur. Le changement de plage peut avoir pour effet de bord un changement automatique de la r\xE9solution affich\xE9e.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la plage de valeurs physiques mesur\xE9s par le capteur'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['GenericSensor']['startDataLogger']={syn:'D\xE9marre l\x27enregistreur de donn\xE9es du module.',lib:'genericsensor.startDataLogger()',pro:'def startDataLogger()',cmt:'<p>D\xE9marre l\x27enregistreur de donn\xE9es du module. Attention, l\x27enregistreur ne sauvera les mesures de ce capteur que si la fr\xE9quence d\x27enregistrement (logFrequency) n\x27est pas sur \x22OFF\x22.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.'};
+doc['GenericSensor']['stopDataLogger']={syn:'Arr\xEAte l\x27enregistreur de donn\xE9es du module.',lib:'genericsensor.stopDataLogger()',pro:'def stopDataLogger()',cmt:'<p>Arr\xEAte l\x27enregistreur de donn\xE9es du module.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.'};
+doc['GenericSensor']['unmuteValueCallbacks']={syn:'R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'genericsensor.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Cette fonction annule un pr\xE9c\xE9dent appel \xE0 <tt>muteValueCallbacks()</tt>. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['GenericSensor']['zeroAdjust']={syn:'Ajuste le biais du signal de sorte \xE0 ce que la valeur actuelle du signal soit interpr\xE9t\xE9e comme z\xE9ro (tare).',lib:'genericsensor.zeroAdjust()',pro:'def zeroAdjust()',cmt:'<p>Ajuste le biais du signal de sorte \xE0 ce que la valeur actuelle du signal soit interpr\xE9t\xE9e comme z\xE9ro (tare).</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.'};
+//--- (end of generated code: GenericSensor)
+//--- (generated code: DigitalIO)
+doc['DigitalIO']={'':{syn:'Interface de la fonction DigitalIO',inc:'from yocto_digitalio import *',cmt:'<p>La librairie de programmation Yoctopuce permet simplement de changer l\x27\xE9tat de chaque bit du port d\x27entr\xE9e sortie. Il est possible de changer tous les bits du port \xE0 la fois, ou de les changer ind\xE9pendament. La librairie permet aussi de cr\xE9er des courtes impulsions de dur\xE9e d\xE9termin\xE9e. Le comportement \xE9lectrique de chanque entr\xE9e/sortie peut \xEAtre modifi\xE9 (open drain et polarit\xE9 inverse).</p>'}};
+doc['DigitalIO']['FindDigitalIO']={syn:'Permet de retrouver un port d\x27E/S digital d\x27apr\xE8s un identifiant donn\xE9.',lib:'YDigitalIO.FindDigitalIO()',pro:'def FindDigitalIO(<span id=pn>func</span>)',cmt:'<p>Permet de retrouver un port d\x27E/S digital d\x27apr\xE8s un identifiant donn\xE9. L\x27identifiant peut \xEAtre sp\xE9cifi\xE9 sous plusieurs formes:<br> <ul> <li>NomLogiqueFonction</li> <li>NoSerieModule.IdentifiantFonction</li> <li>NoSerieModule.NomLogiqueFonction</li> <li>NomLogiqueModule.IdentifiantMat\xE9riel</li> <li>NomLogiqueModule.NomLogiqueFonction</li> </ul></p><p> Cette fonction n\x27exige pas que le port d\x27E/S digital soit en ligne au moment ou elle est appel\xE9e, l\x27objet retourn\xE9 sera n\xE9anmoins valide. Utiliser la m\xE9thode <tt>YDigitalIO.isOnline()</tt> pour tester si le port d\x27E/S digital est utilisable \xE0 un moment donn\xE9. En cas d\x27ambigu\xEFt\xE9 lorsqu\x27on fait une recherche par nom logique, aucune erreur ne sera notifi\xE9e: la premi\xE8re instance trouv\xE9e sera renvoy\xE9e. La recherche se fait d\x27abord par nom mat\xE9riel, puis par nom logique.</p>',par:{func:'une cha\xEEne de caract\xE8res qui r\xE9f\xE9rence le port d\x27E/S digital sans ambigu\xEFt\xE9'},ret:'un objet de classe <tt>YDigitalIO</tt> qui permet ensuite de contr\xF4ler le port d\x27E/S digital.'};
+doc['DigitalIO']['FirstDigitalIO']={syn:'Commence l\x27\xE9num\xE9ration des ports d\x27E/S digitaux accessibles par la librairie.',lib:'YDigitalIO.FirstDigitalIO()',pro:'def FirstDigitalIO()',cmt:'<p>Commence l\x27\xE9num\xE9ration des ports d\x27E/S digitaux accessibles par la librairie. Utiliser la fonction <tt>YDigitalIO.nextDigitalIO()</tt> pour it\xE9rer sur les autres ports d\x27E/S digitaux.</p>',ret:'un pointeur sur un objet <tt>YDigitalIO</tt>, correspondant au premier port d\x27E/S digital accessible en ligne, ou <tt>null</tt> si il n\x27y a pas de ports d\x27E/S digitaux disponibles.'};
+doc['DigitalIO']['clearCache']={syn:'Invalide le cache.',lib:'digitalio.clearCache()',pro:'def clearCache()',cmt:'<p>Invalide le cache. Invalide le cache des valeurs courantes du port d\x27E/S digital. Force le prochain appel \xE0 une m\xE9thode get_xxx() ou loadxxx() pour charger les les donn\xE9es depuis le module.</p>'};
+doc['DigitalIO']['delayedPulse']={syn:'Pr\xE9programme une impulsion de dur\xE9e sp\xE9cifi\xE9e sur un bit choisi.',lib:'digitalio.delayedPulse()',pro:'def delayedPulse(<span id=pn>bitno</span>, <span id=pn>ms_delay</span>, <span id=pn>ms_duration</span>)',cmt:'<p>Pr\xE9programme une impulsion de dur\xE9e sp\xE9cifi\xE9e sur un bit choisi. Le bit va passer \xE0 1 puis automatiquement revenir \xE0 0 apr\xE8s le temps donn\xE9.</p>',par:{bitno:'index du bit dans le port; le bit de poid faible est \xE0 l\x27index 0',ms_delay:'d\xE9lai d\x27attente avant l\x27impulsion, en millisecondes',ms_duration:'dur\xE9e de l\x27impulsion d\xE9sir\xE9e, en millisecondes. Notez que la r\xE9solution temporelle du module n\x27est pas garantie \xE0 la milliseconde.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['DigitalIO']['describe']={syn:'Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du port d\x27E/S digital au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'digitalio.describe()',pro:'def describe()',cmt:'<p>Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du port d\x27E/S digital au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. Plus pr\xE9cis\xE9ment, <tt>TYPE</tt> correspond au type de fonction, <tt>NAME</tt> correspond au nom utils\xE9 lors du premier acc\xE8s a la fonction, <tt>SERIAL</tt> correspond au num\xE9ro de s\xE9rie du module si le module est connect\xE9, ou <tt>\x22unresolved\x22</tt> sinon, et <tt>FUNCTIONID</tt> correspond \xE0 l\x27identifiant mat\xE9riel de la fonction si le module est connect\xE9. Par exemple, La methode va retourner <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> si le module est d\xE9j\xE0 connect\xE9 ou <tt>Relay(BadCustomeName.relay1)=unresolved</tt> si le module n\x27est pas d\xE9j\xE0 connect\xE9. Cette methode ne declenche aucune transaction USB ou TCP et peut donc \xEAtre utilis\xE9 dans un debuggeur.</p>',ret:'une cha\xEEne de caract\xE8res d\xE9crivant le port d\x27E/S digital (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['DigitalIO']['get_advertisedValue']={syn:'Retourne la valeur courante du port d\x27E/S digital (pas plus de 6 caract\xE8res).',lib:'digitalio.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Retourne la valeur courante du port d\x27E/S digital (pas plus de 6 caract\xE8res).</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur courante du port d\x27E/S digital (pas plus de 6 caract\xE8res).',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['DigitalIO']['get_bitDirection']={syn:'Retourne la direction d\x27un seul bit du port d\x27E/S.',lib:'digitalio.get_bitDirection()',pro:'def get_bitDirection(<span id=pn>bitno</span>)',cmt:'<p>Retourne la direction d\x27un seul bit du port d\x27E/S. (0 signifie que le bit est une entr\xE9e, 1 une sortie)</p>',par:{bitno:'index du bit dans le port; le bit de poid faible est \xE0 l\x27index 0'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['DigitalIO']['get_bitOpenDrain']={syn:'Retourne la direction d\x27un seul bit du port d\x27E/S.',lib:'digitalio.get_bitOpenDrain()',pro:'def get_bitOpenDrain(<span id=pn>bitno</span>)',cmt:'<p>Retourne la direction d\x27un seul bit du port d\x27E/S.</p>',par:{bitno:'index du bit dans le port; le bit de poid faible est \xE0 l\x27index 0'},ret:'0 repr\xE9sente une entr\xE9e ou une sortie digitale standard, 1 repr\xE9sente une entr\xE9e ou sortie en mode collecteur ouvert (drain ouvert)..',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['DigitalIO']['get_bitPolarity']={syn:'Retourne la polarit\xE9 d\x27un seul bit du port d\x27E/S.',lib:'digitalio.get_bitPolarity()',pro:'def get_bitPolarity(<span id=pn>bitno</span>)',cmt:'<p>Retourne la polarit\xE9 d\x27un seul bit du port d\x27E/S. 0 signifie que l\x27entr\xE9e sortie est en mode normal, 1 qu\x27elle est en mode inverse</p>',par:{bitno:'index du bit dans le port; le bit de poid faible est \xE0 l\x27index 0'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['DigitalIO']['get_bitState']={syn:'Retourne l\x27\xE9tat d\x27un seul bit du port d\x27E/S.',lib:'digitalio.get_bitState()',pro:'def get_bitState(<span id=pn>bitno</span>)',cmt:'<p>Retourne l\x27\xE9tat d\x27un seul bit du port d\x27E/S.</p>',par:{bitno:'index du bit dans le port; le bit de poid faible est \xE0 l\x27index 0'},ret:'l\x27\xE9tat du bit (0 ou 1).',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['DigitalIO']['get_errorMessage']={syn:'Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du port d\x27E/S digital.',lib:'digitalio.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du port d\x27E/S digital. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'une cha\xEEne de caract\xE8res correspondant au message de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du port d\x27E/S digital.'};
+doc['DigitalIO']['get_errorType']={syn:'Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du port d\x27E/S digital.',lib:'digitalio.get_errorType()',pro:'def get_errorType()',cmt:'<p>Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du port d\x27E/S digital. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'un nombre correspondant au code de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du port d\x27E/S digital.'};
+doc['DigitalIO']['get_friendlyName']={syn:'Retourne un identifiant global du port d\x27E/S digital au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>.',lib:'digitalio.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Retourne un identifiant global du port d\x27E/S digital au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>. Le cha\xEEne retourn\xE9e utilise soit les noms logiques du module et du port d\x27E/S digital si ils sont d\xE9finis, soit respectivement le num\xE9ro de s\xE9rie du module et l\x27identifant mat\xE9riel du port d\x27E/S digital (par exemple: <tt>MyCustomName.relay1</tt>)</p>',ret:'une cha\xEEne de caract\xE8res identifiant le port d\x27E/S digital en utilisant les noms logiques (ex: <tt>MyCustomName.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['DigitalIO']['get_functionDescriptor']={syn:'Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction.',lib:'digitalio.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction. Cet identifiant peut \xEAtre utilis\xE9 pour tester si deux instance de <tt>YFunction</tt> r\xE9f\xE9rencent physiquement la m\xEAme fonction sur le m\xEAme module.</p>',ret:'un identifiant de type <tt>YFUN_DESCR</tt>.',ext:'Si la fonction n\x27a jamais \xE9t\xE9 contact\xE9e, la valeur retourn\xE9e sera <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>'};
+doc['DigitalIO']['get_functionId']={syn:'Retourne l\x27identifiant mat\xE9riel du port d\x27E/S digital, sans r\xE9f\xE9rence au module.',lib:'digitalio.get_functionId()',pro:'def get_functionId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel du port d\x27E/S digital, sans r\xE9f\xE9rence au module. Par example <tt>relay1</tt>.</p>',ret:'une cha\xEEne de caract\xE8res identifiant le port d\x27E/S digital (ex: <tt>relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['DigitalIO']['get_hardwareId']={syn:'Retourne l\x27identifiant mat\xE9riel unique du port d\x27E/S digital au format <tt>SERIAL.FUNCTIONID</tt>.',lib:'digitalio.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel unique du port d\x27E/S digital au format <tt>SERIAL.FUNCTIONID</tt>. L\x27identifiant unique est compos\xE9 du num\xE9ro de s\xE9rie du module et de l\x27identifiant mat\xE9riel du port d\x27E/S digital (par example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'une cha\xEEne de caract\xE8res identifiant le port d\x27E/S digital (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['DigitalIO']['get_logicalName']={syn:'Retourne le nom logique du port d\x27E/S digital.',lib:'digitalio.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Retourne le nom logique du port d\x27E/S digital.</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du port d\x27E/S digital.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['DigitalIO']['get_module']={syn:'Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction.',lib:'digitalio.get_module()',pro:'def get_module()',cmt:'<p>Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction. Si la fonction ne peut \xEAtre trouv\xE9e sur aucun module, l\x27instance de <tt>YModule</tt> retourn\xE9e ne sera pas joignable.</p>',ret:'une instance de <tt>YModule</tt>'};
+doc['DigitalIO']['get_outputVoltage']={syn:'Retourne la source de tension utilis\xE9e pour piloter les bits en sortie.',lib:'digitalio.get_outputVoltage()',pro:'def get_outputVoltage()',cmt:'<p>Retourne la source de tension utilis\xE9e pour piloter les bits en sortie.</p>',ret:'une valeur parmi <tt>Y_OUTPUTVOLTAGE_USB_5V</tt>, <tt>Y_OUTPUTVOLTAGE_USB_3V</tt> et <tt>Y_OUTPUTVOLTAGE_EXT_V</tt> repr&eacute;sentant la source de tension utilis\xE9e pour piloter les bits en sortie',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_OUTPUTVOLTAGE_INVALID</tt>.'};
+doc['DigitalIO']['get_portDirection']={syn:'Retourne la direction des bits du port (bitmap): 0 repr\xE9sente un bit en entr\xE9e, 1 repr\xE9sente un bit en sortie.',lib:'digitalio.get_portDirection()',pro:'def get_portDirection()',cmt:'<p>Retourne la direction des bits du port (bitmap): 0 repr\xE9sente un bit en entr\xE9e, 1 repr\xE9sente un bit en sortie.</p>',ret:'un entier repr&eacute;sentant la direction des bits du port (bitmap): 0 repr\xE9sente un bit en entr\xE9e, 1 repr\xE9sente un bit en sortie',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_PORTDIRECTION_INVALID</tt>.'};
+doc['DigitalIO']['get_portOpenDrain']={syn:'Retourne le type d\x27interface \xE9lectrique de chaque bit du port (bitmap).',lib:'digitalio.get_portOpenDrain()',pro:'def get_portOpenDrain()',cmt:'<p>Retourne le type d\x27interface \xE9lectrique de chaque bit du port (bitmap). 0 repr\xE9sente une entr\xE9e ou une sortie digitale standard, 1 repr\xE9sente une entr\xE9e ou sortie en mode collecteur ouvert (drain ouvert).</p>',ret:'un entier repr&eacute;sentant le type d\x27interface \xE9lectrique de chaque bit du port (bitmap)',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_PORTOPENDRAIN_INVALID</tt>.'};
+doc['DigitalIO']['get_portPolarity']={syn:'Retourne la polarit\xE9 des bits du port (bitmap).',lib:'digitalio.get_portPolarity()',pro:'def get_portPolarity()',cmt:'<p>Retourne la polarit\xE9 des bits du port (bitmap). Pour chaque bit \xE0 0 l\x27entr\xE9e sortie correspondante fonctionne mani\xE8re normale, pour chaque bit \xE0 1 elle fonctionne ne mani\xE8re invers\xE9e.</p>',ret:'un entier repr&eacute;sentant la polarit\xE9 des bits du port (bitmap)',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_PORTPOLARITY_INVALID</tt>.'};
+doc['DigitalIO']['get_portSize']={syn:'Retourne le nombre de bits impl\xE9ment\xE9s dans le port d\x27E/S.',lib:'digitalio.get_portSize()',pro:'def get_portSize()',cmt:'<p>Retourne le nombre de bits impl\xE9ment\xE9s dans le port d\x27E/S.</p>',ret:'un entier repr&eacute;sentant le nombre de bits impl\xE9ment\xE9s dans le port d\x27E/S',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_PORTSIZE_INVALID</tt>.'};
+doc['DigitalIO']['get_portState']={syn:'Retourne l\x27\xE9tat du port d\x27E/S digital: le bit 0 repr\xE9sente l\x27input 0 et ainsi de suite.',lib:'digitalio.get_portState()',pro:'def get_portState()',cmt:'<p>Retourne l\x27\xE9tat du port d\x27E/S digital: le bit 0 repr\xE9sente l\x27input 0 et ainsi de suite.</p>',ret:'un entier repr&eacute;sentant l\x27\xE9tat du port d\x27E/S digital: le bit 0 repr\xE9sente l\x27input 0 et ainsi de suite',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_PORTSTATE_INVALID</tt>.'};
+doc['DigitalIO']['get_userData']={syn:'Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>.',lib:'digitalio.get_userData()',pro:'def get_userData()',cmt:'<p>Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',ret:'l\x27objet stock\xE9 pr\xE9c\xE9demment par l\x27appelant.'};
+doc['DigitalIO']['isOnline']={syn:'V\xE9rifie si le module h\xE9bergeant le port d\x27E/S digital est joignable, sans d\xE9clencher d\x27erreur.',lib:'digitalio.isOnline()',pro:'def isOnline()',cmt:'<p>V\xE9rifie si le module h\xE9bergeant le port d\x27E/S digital est joignable, sans d\xE9clencher d\x27erreur. Si les valeurs des attributs en cache du port d\x27E/S digital sont valides au moment de l\x27appel, le module est consid\xE9r\xE9 joignable. Cette fonction ne cause en aucun cas d\x27exception, quelle que soit l\x27erreur qui pourrait se produire lors de la v\xE9rification de joignabilit\xE9.</p>',ret:'<tt>true</tt> si le port d\x27E/S digital est joignable, <tt>false</tt> sinon'};
+doc['DigitalIO']['load']={syn:'Met en cache les valeurs courantes du port d\x27E/S digital, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e.',lib:'digitalio.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Met en cache les valeurs courantes du port d\x27E/S digital, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e. Par d\xE9faut, lorsqu\x27on acc\xE8de \xE0 un module, tous les attributs des fonctions du module sont automatiquement mises en cache pour la dur\xE9e standard (5 ms). Cette m\xE9thode peut \xEAtre utilis\xE9e pour marquer occasionellement les donn\xE9es cach\xE9es comme valides pour une plus longue p\xE9riode, par exemple dans le but de r\xE9duire le trafic r\xE9seau.</p>',par:{msValidity:'un entier correspondant \xE0 la dur\xE9e de validit\xE9 attribu\xE9e aux les param\xE8tres charg\xE9s, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['DigitalIO']['loadAttribute']={syn:'Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.',lib:'digitalio.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un cha\xEEne vide.'};
+doc['DigitalIO']['muteValueCallbacks']={syn:'D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'digitalio.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Vous pouvez utiliser cette fonction pour \xE9conomiser la bande passante et le CPU sur les machines de faible puissance, ou pour \xE9viter le d\xE9clanchement de callbacks HTTP. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['DigitalIO']['nextDigitalIO']={syn:'Continue l\x27\xE9num\xE9ration des ports d\x27E/S digitaux commenc\xE9e \xE0 l\x27aide de <tt>yFirstDigitalIO()</tt>.',lib:'digitalio.nextDigitalIO()',pro:'def nextDigitalIO()',cmt:'<p>Continue l\x27\xE9num\xE9ration des ports d\x27E/S digitaux commenc\xE9e \xE0 l\x27aide de <tt>yFirstDigitalIO()</tt>.</p>',ret:'un pointeur sur un objet <tt>YDigitalIO</tt> accessible en ligne, ou <tt>null</tt> lorsque l\x27\xE9num\xE9ration est termin\xE9e.'};
+doc['DigitalIO']['pulse']={syn:'D\xE9clenche une impulsion de dur\xE9e sp\xE9cifi\xE9e sur un bit choisi.',lib:'digitalio.pulse()',pro:'def pulse(<span id=pn>bitno</span>, <span id=pn>ms_duration</span>)',cmt:'<p>D\xE9clenche une impulsion de dur\xE9e sp\xE9cifi\xE9e sur un bit choisi. Le bit va passer \xE0 1 puis automatiquement revenir \xE0 0 apr\xE8s le temps donn\xE9.</p>',par:{bitno:'index du bit dans le port; le bit de poid faible est \xE0 l\x27index 0',ms_duration:'dur\xE9e de l\x27impulsion d\xE9sir\xE9e, en millisecondes. Notez que la r\xE9solution temporelle du module n\x27est pas garantie \xE0 la milliseconde.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['DigitalIO']['registerValueCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e.',lib:'digitalio.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callback peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callback ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et la cha\xEEne de caract\xE8re d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['DigitalIO']['set_bitDirection']={syn:'Change la direction d\x27un seul bit du port d\x27E/S.',lib:'digitalio.set_bitDirection()',pro:'def set_bitDirection(<span id=pn>bitno</span>, <span id=pn>bitdirection</span>)',cmt:'<p>Change la direction d\x27un seul bit du port d\x27E/S.</p>',par:{bitno:'index du bit dans le port; le bit de poid faible est \xE0 l\x27index 0',bitdirection:'nouvelle valeur de la direction, 0=entr\xE9e, 1=sortie. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9 apr\xE8s un red\xE9marrage du module.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['DigitalIO']['set_bitOpenDrain']={syn:'Change le type d\x27interface \xE9lectrique d\x27un seul bit du port d\x27E/S.',lib:'digitalio.set_bitOpenDrain()',pro:'def set_bitOpenDrain(<span id=pn>bitno</span>, <span id=pn>opendrain</span>)',cmt:'<p>Change le type d\x27interface \xE9lectrique d\x27un seul bit du port d\x27E/S.</p>',par:{bitno:'index du bit dans le port; le bit de poid faible est \xE0 l\x27index 0',opendrain:'0 pour faire une entr\xE9e ou une sortie digitale standard, 1 pour une entr\xE9e ou sortie en mode collecteur ouvert (drain ouvert). N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9 apr\xE8s un red\xE9marrage du module.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['DigitalIO']['set_bitPolarity']={syn:'Change la polarit\xE9 d\x27un seul bit du port d\x27E/S.',lib:'digitalio.set_bitPolarity()',pro:'def set_bitPolarity(<span id=pn>bitno</span>, <span id=pn>bitpolarity</span>)',cmt:'<p>Change la polarit\xE9 d\x27un seul bit du port d\x27E/S.</p>',par:{bitno:'index du bit dans le port; le bit de poid faible est \xE0 l\x27index 0',bitpolarity:'nouvelle valeur de la plarit\xE9. 0=mode normal, 1=mode inverse. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9 apr\xE8s un red\xE9marrage du module.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['DigitalIO']['set_bitState']={syn:'Change l\x27\xE9tat d\x27un seul bit du port d\x27E/S.',lib:'digitalio.set_bitState()',pro:'def set_bitState(<span id=pn>bitno</span>, <span id=pn>bitstate</span>)',cmt:'<p>Change l\x27\xE9tat d\x27un seul bit du port d\x27E/S.</p>',par:{bitno:'index du bit dans le port; le bit de poid faible est \xE0 l\x27index 0',bitstate:'nouvel \xE9tat du bit (1 ou 0)'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['DigitalIO']['set_logicalName']={syn:'Modifie le nom logique du port d\x27E/S digital.',lib:'digitalio.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Modifie le nom logique du port d\x27E/S digital. Vous pouvez utiliser <tt>yCheckLogicalName()</tt> pour v\xE9rifier si votre param\xE8tre est valide. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du port d\x27E/S digital.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27appel se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['DigitalIO']['set_outputVoltage']={syn:'Modifie la source de tension utilis\xE9e pour piloter les bits en sortie.',lib:'digitalio.set_outputVoltage()',pro:'def set_outputVoltage(<span id=pn>newval</span>)',cmt:'<p>Modifie la source de tension utilis\xE9e pour piloter les bits en sortie. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9 apr\xE8s un red\xE9marrage du module.</p>',par:{newval:'une valeur parmi <tt>Y_OUTPUTVOLTAGE_USB_5V</tt>, <tt>Y_OUTPUTVOLTAGE_USB_3V</tt> et <tt>Y_OUTPUTVOLTAGE_EXT_V</tt> repr&eacute;sentant la source de tension utilis\xE9e pour piloter les bits en sortie'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['DigitalIO']['set_portDirection']={syn:'Modifie la direction des bits du port (bitmap): 0 repr\xE9sente un bit en entr\xE9e, 1 repr\xE9sente un bit en sortie.',lib:'digitalio.set_portDirection()',pro:'def set_portDirection(<span id=pn>newval</span>)',cmt:'<p>Modifie la direction des bits du port (bitmap): 0 repr\xE9sente un bit en entr\xE9e, 1 repr\xE9sente un bit en sortie. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'un entier repr&eacute;sentant la direction des bits du port (bitmap): 0 repr\xE9sente un bit en entr\xE9e, 1 repr\xE9sente un bit en sortie'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['DigitalIO']['set_portOpenDrain']={syn:'Modifie le type d\x27interface \xE9lectrique de chaque bit du port (bitmap).',lib:'digitalio.set_portOpenDrain()',pro:'def set_portOpenDrain(<span id=pn>newval</span>)',cmt:'<p>Modifie le type d\x27interface \xE9lectrique de chaque bit du port (bitmap). 0 repr\xE9sente une entr\xE9e ou une sortie digitale standard, 1 repr\xE9sente une entr\xE9e ou sortie en mode collecteur ouvert (drain ouvert). N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'un entier repr&eacute;sentant le type d\x27interface \xE9lectrique de chaque bit du port (bitmap)'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['DigitalIO']['set_portPolarity']={syn:'Modifie la polarit\xE9e des bits du port (bitmap): Pour chaque bit \xE0 0 l\x27entr\xE9e sortie correspondante fonctionne mani\xE8re normale, pour chaque bit \xE0 1 elle fonctionne ne mani\xE8re invers\xE9e.',lib:'digitalio.set_portPolarity()',pro:'def set_portPolarity(<span id=pn>newval</span>)',cmt:'<p>Modifie la polarit\xE9e des bits du port (bitmap): Pour chaque bit \xE0 0 l\x27entr\xE9e sortie correspondante fonctionne mani\xE8re normale, pour chaque bit \xE0 1 elle fonctionne ne mani\xE8re invers\xE9e.</p>',par:{newval:'un entier repr&eacute;sentant la polarit\xE9e des bits du port (bitmap): Pour chaque bit \xE0 0 l\x27entr\xE9e sortie correspondante fonctionne mani\xE8re normale, pour chaque bit \xE0 1 elle fonctionne ne mani\xE8re invers\xE9e'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['DigitalIO']['set_portState']={syn:'Modifie l\x27\xE9tat du port d\x27E/S digital: le bit 0 repr\xE9sente l\x27input 0 et ainsi de suite.',lib:'digitalio.set_portState()',pro:'def set_portState(<span id=pn>newval</span>)',cmt:'<p>Modifie l\x27\xE9tat du port d\x27E/S digital: le bit 0 repr\xE9sente l\x27input 0 et ainsi de suite. Seuls les bits configur\xE9s en sortie dans <tt>portDirection</tt> sont affect\xE9s.</p>',par:{newval:'un entier repr&eacute;sentant l\x27\xE9tat du port d\x27E/S digital: le bit 0 repr\xE9sente l\x27input 0 et ainsi de suite'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['DigitalIO']['set_userData']={syn:'Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>.',lib:'digitalio.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',par:{data:'objet quelconque \xE0 m\xE9moriser'}};
+doc['DigitalIO']['toggle_bitState']={syn:'Inverse l\x27\xE9tat d\x27un seul bit du port d\x27E/S.',lib:'digitalio.toggle_bitState()',pro:'def toggle_bitState(<span id=pn>bitno</span>)',cmt:'<p>Inverse l\x27\xE9tat d\x27un seul bit du port d\x27E/S.</p>',par:{bitno:'index du bit dans le port; le bit de poid faible est \xE0 l\x27index 0'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['DigitalIO']['unmuteValueCallbacks']={syn:'R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'digitalio.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Cette fonction annule un pr\xE9c\xE9dent appel \xE0 <tt>muteValueCallbacks()</tt>. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+//--- (end of generated code: DigitalIO)
+//--- (generated code: OsControl)
+doc['OsControl']={'':{syn:'contr\xF4le d\x27OS',inc:'from yocto_oscontrol import *',cmt:'<p>L\x27objet OsControl permet de controler le syst\xE8m d\x27exploitation sur lequel tourne un VirtualHub. OsControl n\x27est disponible que dans le VirtualHub software. Attention, cette fonctionnalit\xE9 doit \xEAtre explicitement activ\xE9 au lancement du VirtualHub, avec l\x27option -o.</p>'}};
+doc['OsControl']['FindOsControl']={syn:'Permet de retrouver un contr\xF4le d\x27OS d\x27apr\xE8s un identifiant donn\xE9.',lib:'YOsControl.FindOsControl()',pro:'def FindOsControl(<span id=pn>func</span>)',cmt:'<p>Permet de retrouver un contr\xF4le d\x27OS d\x27apr\xE8s un identifiant donn\xE9. L\x27identifiant peut \xEAtre sp\xE9cifi\xE9 sous plusieurs formes:<br> <ul> <li>NomLogiqueFonction</li> <li>NoSerieModule.IdentifiantFonction</li> <li>NoSerieModule.NomLogiqueFonction</li> <li>NomLogiqueModule.IdentifiantMat\xE9riel</li> <li>NomLogiqueModule.NomLogiqueFonction</li> </ul></p><p> Cette fonction n\x27exige pas que le contr\xF4le d\x27OS soit en ligne au moment ou elle est appel\xE9e, l\x27objet retourn\xE9 sera n\xE9anmoins valide. Utiliser la m\xE9thode <tt>YOsControl.isOnline()</tt> pour tester si le contr\xF4le d\x27OS est utilisable \xE0 un moment donn\xE9. En cas d\x27ambigu\xEFt\xE9 lorsqu\x27on fait une recherche par nom logique, aucune erreur ne sera notifi\xE9e: la premi\xE8re instance trouv\xE9e sera renvoy\xE9e. La recherche se fait d\x27abord par nom mat\xE9riel, puis par nom logique.</p>',par:{func:'une cha\xEEne de caract\xE8res qui r\xE9f\xE9rence le contr\xF4le d\x27OS sans ambigu\xEFt\xE9'},ret:'un objet de classe <tt>YOsControl</tt> qui permet ensuite de contr\xF4ler le contr\xF4le d\x27OS.'};
+doc['OsControl']['FirstOsControl']={syn:'Commence l\x27\xE9num\xE9ration des contr\xF4le d\x27OS accessibles par la librairie.',lib:'YOsControl.FirstOsControl()',pro:'def FirstOsControl()',cmt:'<p>Commence l\x27\xE9num\xE9ration des contr\xF4le d\x27OS accessibles par la librairie. Utiliser la fonction <tt>YOsControl.nextOsControl()</tt> pour it\xE9rer sur les autres contr\xF4le d\x27OS.</p>',ret:'un pointeur sur un objet <tt>YOsControl</tt>, correspondant au premier contr\xF4le d\x27OS accessible en ligne, ou <tt>null</tt> si il n\x27y a pas de contr\xF4le d\x27OS disponibles.'};
+doc['OsControl']['clearCache']={syn:'Invalide le cache.',lib:'oscontrol.clearCache()',pro:'def clearCache()',cmt:'<p>Invalide le cache. Invalide le cache des valeurs courantes du contr\xF4le d\x27OS. Force le prochain appel \xE0 une m\xE9thode get_xxx() ou loadxxx() pour charger les les donn\xE9es depuis le module.</p>'};
+doc['OsControl']['describe']={syn:'Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du contr\xF4le d\x27OS au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'oscontrol.describe()',pro:'def describe()',cmt:'<p>Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du contr\xF4le d\x27OS au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. Plus pr\xE9cis\xE9ment, <tt>TYPE</tt> correspond au type de fonction, <tt>NAME</tt> correspond au nom utils\xE9 lors du premier acc\xE8s a la fonction, <tt>SERIAL</tt> correspond au num\xE9ro de s\xE9rie du module si le module est connect\xE9, ou <tt>\x22unresolved\x22</tt> sinon, et <tt>FUNCTIONID</tt> correspond \xE0 l\x27identifiant mat\xE9riel de la fonction si le module est connect\xE9. Par exemple, La methode va retourner <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> si le module est d\xE9j\xE0 connect\xE9 ou <tt>Relay(BadCustomeName.relay1)=unresolved</tt> si le module n\x27est pas d\xE9j\xE0 connect\xE9. Cette methode ne declenche aucune transaction USB ou TCP et peut donc \xEAtre utilis\xE9 dans un debuggeur.</p>',ret:'une cha\xEEne de caract\xE8res d\xE9crivant le contr\xF4le d\x27OS (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['OsControl']['get_advertisedValue']={syn:'Retourne la valeur courante du contr\xF4le d\x27OS (pas plus de 6 caract\xE8res).',lib:'oscontrol.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Retourne la valeur courante du contr\xF4le d\x27OS (pas plus de 6 caract\xE8res).</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur courante du contr\xF4le d\x27OS (pas plus de 6 caract\xE8res).',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['OsControl']['get_errorMessage']={syn:'Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du contr\xF4le d\x27OS.',lib:'oscontrol.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du contr\xF4le d\x27OS. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'une cha\xEEne de caract\xE8res correspondant au message de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du contr\xF4le d\x27OS.'};
+doc['OsControl']['get_errorType']={syn:'Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du contr\xF4le d\x27OS.',lib:'oscontrol.get_errorType()',pro:'def get_errorType()',cmt:'<p>Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du contr\xF4le d\x27OS. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'un nombre correspondant au code de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du contr\xF4le d\x27OS.'};
+doc['OsControl']['get_friendlyName']={syn:'Retourne un identifiant global du contr\xF4le d\x27OS au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>.',lib:'oscontrol.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Retourne un identifiant global du contr\xF4le d\x27OS au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>. Le cha\xEEne retourn\xE9e utilise soit les noms logiques du module et du contr\xF4le d\x27OS si ils sont d\xE9finis, soit respectivement le num\xE9ro de s\xE9rie du module et l\x27identifant mat\xE9riel du contr\xF4le d\x27OS (par exemple: <tt>MyCustomName.relay1</tt>)</p>',ret:'une cha\xEEne de caract\xE8res identifiant le contr\xF4le d\x27OS en utilisant les noms logiques (ex: <tt>MyCustomName.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['OsControl']['get_functionDescriptor']={syn:'Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction.',lib:'oscontrol.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction. Cet identifiant peut \xEAtre utilis\xE9 pour tester si deux instance de <tt>YFunction</tt> r\xE9f\xE9rencent physiquement la m\xEAme fonction sur le m\xEAme module.</p>',ret:'un identifiant de type <tt>YFUN_DESCR</tt>.',ext:'Si la fonction n\x27a jamais \xE9t\xE9 contact\xE9e, la valeur retourn\xE9e sera <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>'};
+doc['OsControl']['get_functionId']={syn:'Retourne l\x27identifiant mat\xE9riel du contr\xF4le d\x27OS, sans r\xE9f\xE9rence au module.',lib:'oscontrol.get_functionId()',pro:'def get_functionId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel du contr\xF4le d\x27OS, sans r\xE9f\xE9rence au module. Par example <tt>relay1</tt>.</p>',ret:'une cha\xEEne de caract\xE8res identifiant le contr\xF4le d\x27OS (ex: <tt>relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['OsControl']['get_hardwareId']={syn:'Retourne l\x27identifiant mat\xE9riel unique du contr\xF4le d\x27OS au format <tt>SERIAL.FUNCTIONID</tt>.',lib:'oscontrol.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel unique du contr\xF4le d\x27OS au format <tt>SERIAL.FUNCTIONID</tt>. L\x27identifiant unique est compos\xE9 du num\xE9ro de s\xE9rie du module et de l\x27identifiant mat\xE9riel du contr\xF4le d\x27OS (par example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'une cha\xEEne de caract\xE8res identifiant le contr\xF4le d\x27OS (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['OsControl']['get_logicalName']={syn:'Retourne le nom logique du contr\xF4le d\x27OS.',lib:'oscontrol.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Retourne le nom logique du contr\xF4le d\x27OS.</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du contr\xF4le d\x27OS.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['OsControl']['get_module']={syn:'Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction.',lib:'oscontrol.get_module()',pro:'def get_module()',cmt:'<p>Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction. Si la fonction ne peut \xEAtre trouv\xE9e sur aucun module, l\x27instance de <tt>YModule</tt> retourn\xE9e ne sera pas joignable.</p>',ret:'une instance de <tt>YModule</tt>'};
+doc['OsControl']['get_shutdownCountdown']={syn:'Retourne le nombre de secondes restantes avant un arr\xEAt de l\x27OS, ou z\xE9ro si aucun arr\xEAt n\x27a \xE9t\xE9 agend\xE9.',lib:'oscontrol.get_shutdownCountdown()',pro:'def get_shutdownCountdown()',cmt:'<p>Retourne le nombre de secondes restantes avant un arr\xEAt de l\x27OS, ou z\xE9ro si aucun arr\xEAt n\x27a \xE9t\xE9 agend\xE9.</p>',ret:'un entier repr&eacute;sentant le nombre de secondes restantes avant un arr\xEAt de l\x27OS, ou z\xE9ro si aucun arr\xEAt n\x27a \xE9t\xE9 agend\xE9',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_SHUTDOWNCOUNTDOWN_INVALID</tt>.'};
+doc['OsControl']['get_userData']={syn:'Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>.',lib:'oscontrol.get_userData()',pro:'def get_userData()',cmt:'<p>Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',ret:'l\x27objet stock\xE9 pr\xE9c\xE9demment par l\x27appelant.'};
+doc['OsControl']['isOnline']={syn:'V\xE9rifie si le module h\xE9bergeant le contr\xF4le d\x27OS est joignable, sans d\xE9clencher d\x27erreur.',lib:'oscontrol.isOnline()',pro:'def isOnline()',cmt:'<p>V\xE9rifie si le module h\xE9bergeant le contr\xF4le d\x27OS est joignable, sans d\xE9clencher d\x27erreur. Si les valeurs des attributs en cache du contr\xF4le d\x27OS sont valides au moment de l\x27appel, le module est consid\xE9r\xE9 joignable. Cette fonction ne cause en aucun cas d\x27exception, quelle que soit l\x27erreur qui pourrait se produire lors de la v\xE9rification de joignabilit\xE9.</p>',ret:'<tt>true</tt> si le contr\xF4le d\x27OS est joignable, <tt>false</tt> sinon'};
+doc['OsControl']['load']={syn:'Met en cache les valeurs courantes du contr\xF4le d\x27OS, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e.',lib:'oscontrol.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Met en cache les valeurs courantes du contr\xF4le d\x27OS, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e. Par d\xE9faut, lorsqu\x27on acc\xE8de \xE0 un module, tous les attributs des fonctions du module sont automatiquement mises en cache pour la dur\xE9e standard (5 ms). Cette m\xE9thode peut \xEAtre utilis\xE9e pour marquer occasionellement les donn\xE9es cach\xE9es comme valides pour une plus longue p\xE9riode, par exemple dans le but de r\xE9duire le trafic r\xE9seau.</p>',par:{msValidity:'un entier correspondant \xE0 la dur\xE9e de validit\xE9 attribu\xE9e aux les param\xE8tres charg\xE9s, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['OsControl']['loadAttribute']={syn:'Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.',lib:'oscontrol.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un cha\xEEne vide.'};
+doc['OsControl']['muteValueCallbacks']={syn:'D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'oscontrol.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Vous pouvez utiliser cette fonction pour \xE9conomiser la bande passante et le CPU sur les machines de faible puissance, ou pour \xE9viter le d\xE9clanchement de callbacks HTTP. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['OsControl']['nextOsControl']={syn:'Continue l\x27\xE9num\xE9ration des contr\xF4le d\x27OS commenc\xE9e \xE0 l\x27aide de <tt>yFirstOsControl()</tt>.',lib:'oscontrol.nextOsControl()',pro:'def nextOsControl()',cmt:'<p>Continue l\x27\xE9num\xE9ration des contr\xF4le d\x27OS commenc\xE9e \xE0 l\x27aide de <tt>yFirstOsControl()</tt>.</p>',ret:'un pointeur sur un objet <tt>YOsControl</tt> accessible en ligne, ou <tt>null</tt> lorsque l\x27\xE9num\xE9ration est termin\xE9e.'};
+doc['OsControl']['registerValueCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e.',lib:'oscontrol.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callback peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callback ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et la cha\xEEne de caract\xE8re d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['OsControl']['set_logicalName']={syn:'Modifie le nom logique du contr\xF4le d\x27OS.',lib:'oscontrol.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Modifie le nom logique du contr\xF4le d\x27OS. Vous pouvez utiliser <tt>yCheckLogicalName()</tt> pour v\xE9rifier si votre param\xE8tre est valide. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du contr\xF4le d\x27OS.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27appel se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['OsControl']['set_userData']={syn:'Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>.',lib:'oscontrol.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',par:{data:'objet quelconque \xE0 m\xE9moriser'}};
+doc['OsControl']['shutdown']={syn:'Agende un arr\xEAt de l\x27OS dans un nombre donn\xE9 de secondes.',lib:'oscontrol.shutdown()',pro:'def shutdown(<span id=pn>secBeforeShutDown</span>)',cmt:'<p>Agende un arr\xEAt de l\x27OS dans un nombre donn\xE9 de secondes.</p>',par:{secBeforeShutDown:'nombre de secondes avant l\x27arr\xEAt'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['OsControl']['unmuteValueCallbacks']={syn:'R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'oscontrol.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Cette fonction annule un pr\xE9c\xE9dent appel \xE0 <tt>muteValueCallbacks()</tt>. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+//--- (end of generated code: OsControl)
+//--- (generated code: YAPI)
+doc['YAPI']={'':{syn:'Fonctions g\xE9n\xE9rales',inc:'from yocto_api import *',cmt:'<p>Ces quelques fonctions g\xE9n\xE9rales permettent l\x27initialisation et la configuration de la librairie Yoctopuce. Dans la plupart des cas, un appel \xE0 <tt>yRegisterHub()</tt> suffira en tout et pour tout. Ensuite, vous pourrez appeler la fonction globale <tt>yFind...()</tt> ou <tt>yFirst...()</tt> correspondant \xE0 votre module pour pouvoir interagir avec lui.</p>'}};
+doc['YAPI']['CheckLogicalName']={syn:'V\xE9rifie si un nom donn\xE9 est valide comme nom logique pour un module ou une fonction.',lib:'YAPI.CheckLogicalName()',pro:'def CheckLogicalName(<span id=pn>name</span>)',cmt:'<p>V\xE9rifie si un nom donn\xE9 est valide comme nom logique pour un module ou une fonction. Un nom logique valide est form\xE9 de 19 caract\xE8res au maximum, choisis parmi <tt>A..Z</tt>, <tt>a..z</tt>, <tt>0..9</tt>, <tt>_</tt> et <tt>-</tt>. Lorsqu\x27on configure un nom logique avec une cha\xEEne incorrecte, les caract\xE8res invalides sont ignor\xE9s.</p>',par:{name:'une cha\xEEne de caract\xE8res contenant le nom v\xE9rifier.'},ret:'<tt>true</tt> si le nom est valide, <tt>false</tt> dans le cas contraire.'};
+doc['YAPI']['DisableExceptions']={syn:'D\xE9sactive l\x27utilisation d\x27exceptions pour la gestion des erreurs.',lib:'YAPI.DisableExceptions()',pro:'def DisableExceptions()',cmt:'<p>D\xE9sactive l\x27utilisation d\x27exceptions pour la gestion des erreurs. Lorsque les exceptions sont d\xE9sactiv\xE9es, chaque fonction retourne une valeur d\x27erreur sp\xE9cifique selon son type, document\xE9e dans ce manuel de r\xE9f\xE9rence.</p>'};
+doc['YAPI']['EnableExceptions']={syn:'R\xE9active l\x27utilisation d\x27exceptions pour la gestion des erreurs.',lib:'YAPI.EnableExceptions()',pro:'def EnableExceptions()',cmt:'<p>R\xE9active l\x27utilisation d\x27exceptions pour la gestion des erreurs. Attention, lorsque les exceptions sont activ\xE9es, tout appel \xE0 une fonction de la librairie qui \xE9choue d\xE9clenche une exception. Dans le cas o\xF9 celle-ci n\x27est pas intercept\xE9e correctement par le code appelant, soit le debugger se lance, soit le programme de l\x27utilisateur est imm\xE9diatement stopp\xE9 (crash).</p>'};
+doc['YAPI']['FreeAPI']={syn:'Lib\xE8re la m\xE9moire dynamique utilis\xE9e par la librairie Yoctopuce.',lib:'YAPI.FreeAPI()',pro:'def FreeAPI()',cmt:'<p>Lib\xE8re la m\xE9moire dynamique utilis\xE9e par la librairie Yoctopuce. Il n\x27est en g\xE9n\xE9ral pas n\xE9cessaire d\x27appeler cette fonction, sauf si vous d\xE9sirez lib\xE9rer tous les blocs de m\xE9moire allou\xE9s dynamiquement dans le but d\x27identifier une source de blocs perdus par exemple. Vous ne devez plus appeler aucune fonction de la librairie apr\xE8s avoir appel\xE9 <tt>yFreeAPI()</tt>, sous peine de crash.</p>'};
+doc['YAPI']['GetAPIVersion']={syn:'Retourne la version de la librairie Yoctopuce utilis\xE9e.',lib:'YAPI.GetAPIVersion()',pro:'def GetAPIVersion()',cmt:'<p>Retourne la version de la librairie Yoctopuce utilis\xE9e. La version est retourn\xE9e sous forme d\x27une cha\xEEne de caract\xE8res au format <tt>\x22Majeure.Mineure.NoBuild\x22</tt>, par exemple <tt>\x221.01.5535\x22</tt>. Pour les langages utilisant une DLL externe (par exemple C#, VisualBasic ou Delphi), la cha\xEEne contient en outre la version de la DLL au m\xEAme format, par exemple <tt>\x221.01.5535 (1.01.5439)\x22</tt>.</p><p> Si vous d\xE9sirez v\xE9rifier dans votre code que la version de la librairie est compatible avec celle que vous avez utilis\xE9 durant le d\xE9veloppement, v\xE9rifiez que le num\xE9ro majeur soit strictement \xE9gal et que le num\xE9ro mineur soit \xE9gal ou sup\xE9rieur. Le num\xE9ro de build n\x27est pas significatif par rapport \xE0 la compatibilit\xE9 de la librairie.</p>',ret:'une cha\xEEne de caract\xE8res d\xE9crivant la version de la librairie.'};
+doc['YAPI']['GetTickCount']={syn:'Retourne la valeur du compteur monotone de temps (en millisecondes).',lib:'YAPI.GetTickCount()',pro:'def GetTickCount()',cmt:'<p>Retourne la valeur du compteur monotone de temps (en millisecondes). Ce compteur peut \xEAtre utilis\xE9 pour calculer des d\xE9lais en rapport avec les modules Yoctopuce, dont la base de temps est aussi la milliseconde.</p>',ret:'un long entier contenant la valeur du compteur de millisecondes.'};
+doc['YAPI']['HandleEvents']={syn:'Maintient la communication de la librairie avec les modules Yoctopuce.',lib:'YAPI.HandleEvents()',pro:'def HandleEvents(<span id=pn>errmsg</span>=None)',cmt:'<p>Maintient la communication de la librairie avec les modules Yoctopuce. Si votre programme inclut des longues boucles d\x27attente, vous pouvez y inclure un appel \xE0 cette fonction pour que la librairie prenne en charge les informations mise en attente par les modules sur les canaux de communication. Ce n\x27est pas strictement indispensable mais cela peut am\xE9liorer la r\xE9activit\xE9 des la librairie pour les commandes suivantes.</p><p> Cette fonction peut signaler une erreur au cas \xE0 la communication avec un module Yoctopuce ne se passerait pas comme attendu.</p>',par:{errmsg:'une cha\xEEne de caract\xE8res pass\xE9e par r\xE9f\xE9rence, dans laquelle sera stock\xE9 un \xE9ventuel message d\x27erreur.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['YAPI']['InitAPI']={syn:'Initialise la librairie de programmation de Yoctopuce explicitement.',lib:'YAPI.InitAPI()',pro:'def InitAPI(<span id=pn>mode</span>, <span id=pn>errmsg</span>=None)',cmt:'<p>Initialise la librairie de programmation de Yoctopuce explicitement. Il n\x27est pas indispensable d\x27appeler <tt>yInitAPI()</tt>, la librairie sera automatiquement initialis\xE9e de toute mani\xE8re au premier appel \xE0 <tt>yRegisterHub()</tt>.</p><p> Lorsque cette fonctin est utilis\xE9e avec comme <tt>mode</tt> la valeur <tt>Y_DETECT_NONE</tt>, il faut explicitement appeler <tt>yRegisterHub()</tt> pour indiquer \xE0 la librairie sur quel VirtualHub les modules sont connect\xE9s, avant d\x27essayer d\x27y acc\xE9der.</p>',par:{mode:'un entier sp\xE9cifiant le type de d\xE9tection automatique de modules \xE0 utiliser. Les valeurs possibles sont <tt>Y_DETECT_NONE</tt>, <tt>Y_DETECT_USB</tt>, <tt>Y_DETECT_NET</tt> et <tt>Y_DETECT_ALL</tt>.',errmsg:'une cha\xEEne de caract\xE8res pass\xE9e par r\xE9f\xE9rence, dans laquelle sera stock\xE9 un \xE9ventuel message d\x27erreur.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['YAPI']['PreregisterHub']={syn:'Alternative plus tolerante \xE0 RegisterHub().',lib:'YAPI.PreregisterHub()',pro:'def PreregisterHub(<span id=pn>url</span>, <span id=pn>errmsg</span>=None)',cmt:'<p>Alternative plus tolerante \xE0 RegisterHub(). Cette fonction a le m\xEAme but et la m\xEAme param\xE8tres que la fonction <tt>RegisterHub</tt>, mais contrairement \xE0 celle-ci <tt>PreregisterHub()</tt> ne d\xE9clanche pas d\x27erreur si le hub choisi n\x27est pas joignable au moment de l\x27appel. Il est ainsi possible d\x27enregistrer un hub r\xE9seau ind\xE9pendemment de la connectivit\xE9, afin de tenter de ne le contacter que lorsqu\x27on cherche r\xE9ellement un module.</p>',par:{url:'une cha\xEEne de caract\xE8res contenant <ui>\x22usb\x22</ui>,<ui>\x22callback\x22,</ui> ou l\x27URL racine du VirtualHub \xE0 utiliser.',errmsg:'une cha\xEEne de caract\xE8res pass\xE9e par r\xE9f\xE9rence, dans laquelle sera stock\xE9 un \xE9ventuel message d\x27erreur.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['YAPI']['RegisterDeviceArrivalCallback']={syn:'Enregistre une fonction de callback qui sera appel\xE9e \xE0 chaque fois qu\x27un module est branch\xE9.',lib:'YAPI.RegisterDeviceArrivalCallback()',pro:'def RegisterDeviceArrivalCallback(<span id=pn>arrivalCallback</span>)',cmt:'<p>Enregistre une fonction de callback qui sera appel\xE9e \xE0 chaque fois qu\x27un module est branch\xE9. Le callback sera appel\xE9 pendant l\x27\xE9xecution de la fonction <tt>yUpdateDeviceList</tt>, que vous devrez appeler r\xE9guli\xE8rement.</p>',par:{arrivalCallback:'une proc\xE9dure qui prend un <tt>YModule</tt> en param\xE8tre, ou <tt>null</tt> pour supprimer un callback d\xE9ja enregistr\xE9.'}};
+doc['YAPI']['RegisterDeviceRemovalCallback']={syn:'Enregistre une fonction de callback qui sera appel\xE9e \xE0 chaque fois qu\x27un module est d\xE9branch\xE9.',lib:'YAPI.RegisterDeviceRemovalCallback()',pro:'def RegisterDeviceRemovalCallback(<span id=pn>removalCallback</span>)',cmt:'<p>Enregistre une fonction de callback qui sera appel\xE9e \xE0 chaque fois qu\x27un module est d\xE9branch\xE9. Le callback sera appel\xE9 pendant l\x27\xE9xecution de la fonction <tt>yUpdateDeviceList</tt>, que vous devrez appeler r\xE9guli\xE8rement.</p>',par:{removalCallback:'une proc\xE9dure qui prend un <tt>YModule</tt> en param\xE8tre, ou <tt>null</tt> pour supprimer un callback d\xE9ja enregistr\xE9.'}};
+doc['YAPI']['RegisterHub']={syn:'Configure la librairie Yoctopuce pour utiliser les modules connect\xE9s sur une machine donn\xE9e.',lib:'YAPI.RegisterHub()',pro:'def RegisterHub(<span id=pn>url</span>, <span id=pn>errmsg</span>=None)',cmt:'<p>Configure la librairie Yoctopuce pour utiliser les modules connect\xE9s sur une machine donn\xE9e. Le premier param\xE8tre d\xE9termine le fonctionnement de l\x27API, il peut prendre les valeurs suivantes:</p><p> <b>usb</b>: Si vous utilisez le mot-cl\xE9 <ui>usb</ui>, l\x27API utilise les modules Yoctopuce connect\xE9s directement par USB. Certains languages comme PHP, Javascript et Java ne permettent pas un acc\xE8s direct aux couches mat\xE9rielles, <ui>usb</ui> ne marchera donc pas avec ces languages. Dans ce cas, utilisez un VirtualHub ou un YoctoHub r\xE9seau (voir ci-dessous).</p><p> <b><i>x.x.x.x</i></b> ou <b><i>hostname</i></b>: L\x27API utilise les modules connect\xE9s \xE0 la machine dont l\x27adresse IP est <i>x.x.x.x</i>, ou dont le nom d\x27h\xF4te DNS est <i>hostname</i>. Cette machine peut \xEAtre un ordinateur classique faisant tourner un VirtualHub, ou un YoctoHub avec r\xE9seau (YoctoHub-Ethernet / YoctoHub-Wireless). Si vous d\xE9sirez utiliser le VirtualHub tournant sur votre machine locale, utilisez l\x27adresse IP 127.0.0.1.</p><p> <b>callback</b> Le mot-cl\xE9 <ui>callback</ui> permet de faire fonctionnner l\x27API dans un mode app\xE9l\xE9 \x22<i>callback HTTP</i>\x22. C\x27est un mode sp\xE9cial permettant, entre autres, de prendre le contr\xF4le de modules Yoctopuce \xE0 travers un filtre NAT par l\x27interm\xE9diaire d\x27un VirtualHub ou d\x27un Hub Yoctopuce. Il vous suffit de configuer le hub pour qu\x27il appelle votre script \xE0 intervalle r\xE9gulier. Ce mode de fonctionnement n\x27est disponible actuellement qu\x27en PHP et en Node.JS.</p><p> Attention, seule une application peut fonctionner \xE0 la fois sur une machine donn\xE9e en acc\xE8s direct \xE0 USB, sinon il y aurait un conflit d\x27acc\xE8s aux modules. Cela signifie en particulier que vous devez stopper le VirtualHub avant de lancer une application utilisant l\x27acc\xE8s direct \xE0 USB. Cette limitation peut \xEAtre contourn\xE9e en passant par un VirtualHub plut\xF4t que d\x27utiliser directement USB.</p><p> Si vous d\xE9sirez vous connecter \xE0 un Hub, virtuel ou non, sur lequel le controle d\x27acc\xE8s a \xE9t\xE9 activ\xE9, vous devez donner le param\xE8tre url sous la forme:</p><p> <tt>http://nom:mot_de_passe@adresse:port</tt></p><p> Vous pouvez appeller <i>RegisterHub</i> plusieurs fois pour vous connecter \xE0 plusieurs machines diff\xE9rentes.</p>',par:{url:'une cha\xEEne de caract\xE8res contenant <ui>\x22usb\x22</ui>,<ui>\x22callback\x22,</ui> ou l\x27URL racine du VirtualHub \xE0 utiliser.',errmsg:'une cha\xEEne de caract\xE8res pass\xE9e par r\xE9f\xE9rence, dans laquelle sera stock\xE9 un \xE9ventuel message d\x27erreur.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['YAPI']['RegisterHubDiscoveryCallback']={syn:'Enregistre une fonction de callback qui est appel\xE9e chaque fois qu\x27un hub r\xE9seau s\x27annonce avec un message SSDP.',lib:'YAPI.RegisterHubDiscoveryCallback()',pro:'def RegisterHubDiscoveryCallback(<span id=pn>hubDiscoveryCallback</span>)',cmt:'<p>Enregistre une fonction de callback qui est appel\xE9e chaque fois qu\x27un hub r\xE9seau s\x27annonce avec un message SSDP. la fonction de callback re\xE7ois deux cha\xEEnes de caract\xE8res en param\xE8tre La premi\xE8re cha\xEEne contient le num\xE9ro de s\xE9rie du hub r\xE9seau et la deuxi\xE8me cha\xEEne contient l\x27URL du hub. L\x27URL peut \xEAtre pass\xE9e directement en argument \xE0 la fonction <tt>yRegisterHub</tt>. Le callback sera appel\xE9 pendant l\x92ex\xE9cution de la fonction <tt>yUpdateDeviceList</tt>, que vous devrez appeler r\xE9guli\xE8rement.</p>',par:{hubDiscoveryCallback:'une proc\xE9dure qui prend deux cha\xEEne de caract\xE8res en param\xE8tre, ou <tt>null</tt> pour supprimer un callback d\xE9j\xE0 enregistr\xE9.'}};
+doc['YAPI']['RegisterLogFunction']={syn:'Enregistre une fonction de callback qui sera appell\xE9e \xE0 chaque fois que l\x27API a quelque chose \xE0 dire.',lib:'YAPI.RegisterLogFunction()',pro:'def RegisterLogFunction(<span id=pn>logfun</span>)',cmt:'<p>Enregistre une fonction de callback qui sera appell\xE9e \xE0 chaque fois que l\x27API a quelque chose \xE0 dire. Utile pour d\xE9bugger le fonctionnement de l\x27API.</p>',par:{logfun:'une procedure qui prend une cha\xEEne de caract\xE8re en param\xE8tre, ou <tt>null</tt> pour supprimer un callback d\xE9ja enregistr\xE9.'}};
+doc['YAPI']['SelectArchitecture']={syn:'S\xE9lectionne manuellement l\x27architecture de la libraire dynamique \xE0 utiliser pour acc\xE9der \xE0 USB.',lib:'YAPI.SelectArchitecture()',pro:'def SelectArchitecture(<span id=pn>arch</span>)',cmt:'<p>S\xE9lectionne manuellement l\x27architecture de la libraire dynamique \xE0 utiliser pour acc\xE9der \xE0 USB. Par d\xE9faut, la libraire Python d\xE9tecte automatiquement la version de la libraire dynamique \xE0 utiliser pour acc\xE9der au port USB. Sous Linux ARM il n\x27est pas possible de d\xE9tecter de mani\xE8re fiable si il s\x27agit d\x27une installation Soft float (armel) ou Hard float (armhf). Dans ce cas, il est donc recommend\xE9 d\x27appeler <tt>SelectArchitecture()</tt> avant tout autre appel \xE0 la librairie pour forcer l\x27utilisation d\x27une architecture sp\xE9cifi\xE9e.</p>',par:{arch:'une cha\xEEne de caract\xE8re sp\xE9cifiant l\x27architecture \xE0 utiliser. Les valeurs possibles sont <tt>\x22armhf\x22</tt>,<tt>\x22armel\x22</tt>, <tt>\x22i386\x22</tt>,<tt>\x22x86_64\x22</tt>,<tt>\x2232bit\x22</tt>, <tt>\x2264bit\x22</tt>'},ret:'rien.',ext:'En cas d\x27erreur, d\xE9clenche une exception.'};
+doc['YAPI']['Sleep']={syn:'Effectue une pause dans l\x27ex\xE9cution du programme pour une dur\xE9e sp\xE9cifi\xE9e.',lib:'YAPI.Sleep()',pro:'def Sleep(<span id=pn>ms_duration</span>, <span id=pn>errmsg</span>=None)',cmt:'<p>Effectue une pause dans l\x27ex\xE9cution du programme pour une dur\xE9e sp\xE9cifi\xE9e. L\x27attente est passive, c\x27est-\xE0-dire qu\x27elle n\x27occupe pas significativement le processeur, de sorte \xE0 le laisser disponible pour les autres processus fonctionnant sur la machine. Durant l\x27attente, la librairie va n\xE9anmoins continuer \xE0 lire p\xE9riodiquement les informations en provenance des modules Yoctopuce en appelant la fonction <tt>yHandleEvents()</tt> afin de se maintenir \xE0 jour.</p><p> Cette fonction peut signaler une erreur au cas \xE0 la communication avec un module Yoctopuce ne se passerait pas comme attendu.</p>',par:{ms_duration:'un entier correspondant \xE0 la dur\xE9e de la pause, en millisecondes',errmsg:'une cha\xEEne de caract\xE8res pass\xE9e par r\xE9f\xE9rence, dans laquelle sera stock\xE9 un \xE9ventuel message d\x27erreur.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['YAPI']['TestHub']={syn:'Test si un hub est joignable.',lib:'YAPI.TestHub()',pro:'def TestHub(<span id=pn>url</span>, <span id=pn>mstimeout</span>, <span id=pn>errmsg</span>=None)',cmt:'<p>Test si un hub est joignable. Cette m\xE9thode n\x27enregistre pas le hub, elle ne fait que de v\xE9rifier que le hub est joignable. Le param\xE8tre url suit les m\xEAmes conventions que la m\xE9thode <tt>RegisterHub</tt>. Cette m\xE9thode est utile pour v\xE9rifier les param\xE8tres d\x27authentification d\x27un hub. Il est possible de forcer la m\xE9thode \xE0 rendre la main apr\xE8s mstimeout millisecondes.</p>',par:{url:'une cha\xEEne de caract\xE8res contenant <ui>\x22usb\x22</ui>,<ui>\x22callback\x22,</ui> ou l\x27URL racine du VirtualHub \xE0 utiliser.',mstimeout:'le nombre de millisecondes disponible pour tester la connexion.',errmsg:'une cha\xEEne de caract\xE8res pass\xE9e par r\xE9f\xE9rence, dans laquelle sera stock\xE9 un \xE9ventuel message d\x27erreur.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur retourne un code d\x27erreur n\xE9gatif.'};
+doc['YAPI']['TriggerHubDiscovery']={syn:'Relance une d\xE9tection des hubs r\xE9seau.',lib:'YAPI.TriggerHubDiscovery()',pro:'def TriggerHubDiscovery(<span id=pn>errmsg</span>=None)',cmt:'<p>Relance une d\xE9tection des hubs r\xE9seau. Si une fonction de callback est enregistr\xE9e avec <tt>yRegisterDeviceRemovalCallback</tt> elle sera appel\xE9e \xE0 chaque hub r\xE9seau qui r\xE9pondra \xE0 la d\xE9tection SSDP.</p>',par:{errmsg:'une cha\xEEne de caract\xE8res pass\xE9e par r\xE9f\xE9rence, dans laquelle sera stock\xE9 un \xE9ventuel message d\x27erreur.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur. En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['YAPI']['UnregisterHub']={syn:'Configure la librairie Yoctopuce pour ne plus utiliser les modules connect\xE9s sur une machine pr\xE9alablement enregistrer avec RegisterHub.',lib:'YAPI.UnregisterHub()',pro:'def UnregisterHub(<span id=pn>url</span>)',cmt:'<p>Configure la librairie Yoctopuce pour ne plus utiliser les modules connect\xE9s sur une machine pr\xE9alablement enregistrer avec RegisterHub.</p>',par:{url:'une cha\xEEne de caract\xE8res contenant <ui>\x22usb\x22</ui> ou l\x27URL racine du VirtualHub \xE0 ne plus utiliser.'}};
+doc['YAPI']['UpdateDeviceList']={syn:'Force une mise-\xE0-jour de la liste des modules Yoctopuce connect\xE9s.',lib:'YAPI.UpdateDeviceList()',pro:'def UpdateDeviceList(<span id=pn>errmsg</span>=None)',cmt:'<p>Force une mise-\xE0-jour de la liste des modules Yoctopuce connect\xE9s. La librairie va v\xE9rifier sur les machines ou ports USB pr\xE9c\xE9demment enregistr\xE9s en utilisant la fonction <tt>yRegisterHub</tt> si un module a \xE9t\xE9 connect\xE9 ou d\xE9connect\xE9, et le cas \xE9ch\xE9ant appeler les fonctions de callback d\xE9finies par l\x27utilisateur.</p><p> Cette fonction peut \xEAtre appel\xE9e aussi souvent que d\xE9sir\xE9, afin de rendre l\x27application r\xE9active aux \xE9v\xE9nements de hot-plug.</p>',par:{errmsg:'une cha\xEEne de caract\xE8res pass\xE9e par r\xE9f\xE9rence, dans laquelle sera stock\xE9 un \xE9ventuel message d\x27erreur.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+//--- (end of generated code: YAPI)
+//--- (generated code: DataStream)
+doc['DataStream']={'':{syn:'S\xE9quence de donn\xE9es enregistr\xE9es brute',inc:'from yocto_api import *',cmt:'<p>Les objets YDataStream correspondent aux s\xE9quences de mesures enregistr\xE9es brutes, directement telles qu\x27obtenues par l\x27enregistreur de donn\xE9es pr\xE9sent dans les senseurs de Yoctopuce.</p><p> Dans la plupart des cas, il n\x27est pas n\xE9cessaire d\x27utiliser les objets DataStream, car les objets YDataSet (retourn\xE9s par la m\xE9thode <tt>get_recordedData()</tt> des senseurs et la m\xE9thode <tt>get_dataSets()</tt> du DataLogger) fournissent une interface plus pratique.</p>'}};
+doc['DataStream']['get_averageValue']={syn:'Retourne la moyenne des valeurs observ\xE9es durant cette s\xE9quence.',lib:'datastream.get_averageValue()',pro:'def get_averageValue()',cmt:'<p>Retourne la moyenne des valeurs observ\xE9es durant cette s\xE9quence. Si le module utilise un firmware ant\xE9rieur \xE0 la version 13000, cette m\xE9thode retournera toujours Y_DATA_INVALID.</p>',ret:'un nombre d\xE9cimal correspondant \xE0 la moyenne des valeurs, ou Y_DATA_INVALID si la s\xE9quence n\x27est pas encore termin\xE9e.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne Y_DATA_INVALID.'};
+doc['DataStream']['get_columnCount']={syn:'Retourne le nombre de colonnes de donn\xE9es contenus dans la s\xE9quence.',lib:'datastream.get_columnCount()',pro:'def get_columnCount()',cmt:'<p>Retourne le nombre de colonnes de donn\xE9es contenus dans la s\xE9quence. La s\xE9mantique des donn\xE9es pr\xE9sentes dans chaque colonne peut \xEAtre obtenue \xE0 l\x27aide de la m\xE9thode <tt>get_columnNames()</tt>.</p><p> Si le module utilise un firmware ant\xE9rieur \xE0 la version 13000, cette m\xE9thode d\xE9clanche le chargement de toutes les donn\xE9es de la s\xE9quence si n\xE9cessaire, ce qui peut prendre un petit instant.</p>',ret:'un entier positif correspondant au nombre de colonnes.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne z\xE9ro.'};
+doc['DataStream']['get_columnNames']={syn:'Retourne le nom (la s\xE9mantique) des colonnes de donn\xE9es contenus dans la s\xE9quence.',lib:'datastream.get_columnNames()',pro:'def get_columnNames()',cmt:'<p>Retourne le nom (la s\xE9mantique) des colonnes de donn\xE9es contenus dans la s\xE9quence. Dans la plupart des cas, le nom des colonnes correspond \xE0 l\x27identifiant mat\xE9riel du capteur qui a produit la mesure. Pour les s\xE9quences enregistr\xE9es \xE0 faible f\xE9rquence, l\x27enregistreur de donn\xE9e stocke la valeur min, moyenne et max observ\xE9e durant chaque intervalle de temps dans des colonnes avec les suffixes _min, _avg et _max respectivement.</p><p> Si le module utilise un firmware ant\xE9rieur \xE0 la version 13000, cette m\xE9thode d\xE9clanche le chargement de toutes les donn\xE9es de la s\xE9quence si n\xE9cessaire, ce qui peut prendre un petit instant.</p>',ret:'une liste de cha\xEEne de caract\xE8res.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne une liste vide.'};
+doc['DataStream']['get_data']={syn:'Retourne une mesure unique de la s\xE9quence, sp\xE9cifi\xE9e par l\x27index de l\x27enregistrement (ligne) et de la mesure (colonne).',lib:'datastream.get_data()',pro:'def get_data(<span id=pn>row</span>, <span id=pn>col</span>)',cmt:'<p>Retourne une mesure unique de la s\xE9quence, sp\xE9cifi\xE9e par l\x27index de l\x27enregistrement (ligne) et de la mesure (colonne). La s\xE9mentique des donn\xE9es pr\xE9sentes dans chaque colonne peut \xEAtre obtenue \xE0 l\x27aide de la m\xE9thode get_columnNames().</p><p> Cette m\xE9thode d\xE9clanche le chargement de toutes les donn\xE9es de la s\xE9quence, si cela n\x27\xE9tait pas encore fait.</p>',par:{row:'index de l\x27enregistrement (ligne)',col:'index de la mesure (colonne)'},ret:'un nombre d\xE9cimal',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne Y_DATA_INVALID.'};
+doc['DataStream']['get_dataRows']={syn:'Retourne toutes les donn\xE9es mesur\xE9es contenues dans la s\xE9quence, sous forme d\x27une liste de vecteurs (table bidimensionnelle).',lib:'datastream.get_dataRows()',pro:'def get_dataRows()',cmt:'<p>Retourne toutes les donn\xE9es mesur\xE9es contenues dans la s\xE9quence, sous forme d\x27une liste de vecteurs (table bidimensionnelle). La s\xE9mentique des donn\xE9es pr\xE9sentes dans chaque colonne peut \xEAtre obtenue \xE0 l\x27aide de la m\xE9thode <tt>get_columnNames()</tt>.</p><p> Cette m\xE9thode d\xE9clanche le chargement de toutes les donn\xE9es de la s\xE9quence, si cela n\x27\xE9tait pas encore fait.</p>',ret:'une liste d\x27enregistrements, chaque enregistrement \xE9tant lui-m\xEAme une liste de nombres d\xE9cimaux.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne une liste vide.'};
+doc['DataStream']['get_dataSamplesIntervalMs']={syn:'Retourne le nombre de millisecondes entre chaque mesure de la s\xE9quence.',lib:'datastream.get_dataSamplesIntervalMs()',pro:'def get_dataSamplesIntervalMs()',cmt:'<p>Retourne le nombre de millisecondes entre chaque mesure de la s\xE9quence. Par d\xE9faut, l\x27enregistreur m\xE9morise une mesure par seconde, mais la fr\xE9quence d\x27enregistrement peut \xEAtre chang\xE9e pour chaque fonction.</p>',ret:'un entier positif correspondant au nombre de millisecondes entre deux mesures cons\xE9cutives.'};
+doc['DataStream']['get_duration']={syn:'Retourne la dur\xE9e approximative de cette s\xE9quence, en secondes.',lib:'datastream.get_duration()',pro:'def get_duration()',cmt:'<p>Retourne la dur\xE9e approximative de cette s\xE9quence, en secondes.</p>',ret:'le nombre de secondes couvertes par cette s\xE9quence.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne Y_DURATION_INVALID.'};
+doc['DataStream']['get_maxValue']={syn:'Retourne la plus grande valeur observ\xE9e durant cette s\xE9quence.',lib:'datastream.get_maxValue()',pro:'def get_maxValue()',cmt:'<p>Retourne la plus grande valeur observ\xE9e durant cette s\xE9quence. Si le module utilise un firmware ant\xE9rieur \xE0 la version 13000, cette m\xE9thode retournera toujours Y_DATA_INVALID.</p>',ret:'un nombre d\xE9cimal correspondant \xE0 la plus grande valeur, ou Y_DATA_INVALID si la s\xE9quence n\x27est pas encore termin\xE9e.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne Y_DATA_INVALID.'};
+doc['DataStream']['get_minValue']={syn:'Retourne la plus petite valeur observ\xE9e durant cette s\xE9quence.',lib:'datastream.get_minValue()',pro:'def get_minValue()',cmt:'<p>Retourne la plus petite valeur observ\xE9e durant cette s\xE9quence. Si le module utilise un firmware ant\xE9rieur \xE0 la version 13000, cette m\xE9thode retournera toujours Y_DATA_INVALID.</p>',ret:'un nombre d\xE9cimal correspondant \xE0 la plus petite valeur, ou Y_DATA_INVALID si la s\xE9quence n\x27est pas encore termin\xE9e.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne Y_DATA_INVALID.'};
+doc['DataStream']['get_rowCount']={syn:'Retourne le nombre d\x27enregistrement contenus dans la s\xE9quence.',lib:'datastream.get_rowCount()',pro:'def get_rowCount()',cmt:'<p>Retourne le nombre d\x27enregistrement contenus dans la s\xE9quence.</p><p> Si le module utilise un firmware ant\xE9rieur \xE0 la version 13000, cette m\xE9thode d\xE9clanche le chargement de toutes les donn\xE9es de la s\xE9quence si n\xE9cessaire, ce qui peut prendre un petit instant.</p>',ret:'un entier positif correspondant au nombre d\x27enregistrements.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne z\xE9ro.'};
+doc['DataStream']['get_runIndex']={syn:'Retourne le num\xE9ro de Run de la s\xE9quence de donn\xE9es.',lib:'datastream.get_runIndex()',pro:'def get_runIndex()',cmt:'<p>Retourne le num\xE9ro de Run de la s\xE9quence de donn\xE9es. Un Run peut \xEAtre compos\xE9 de plusieurs s\xE9quences, couvrant diff\xE9rents intervalles de temps.</p>',ret:'un entier positif correspondant au num\xE9ro du Run'};
+doc['DataStream']['get_startTime']={syn:'Retourne le temps de d\xE9part relatif de la s\xE9quence (en secondes).',lib:'datastream.get_startTime()',pro:'def get_startTime()',cmt:'<p>Retourne le temps de d\xE9part relatif de la s\xE9quence (en secondes). Pour les firmwares r\xE9cents, la valeur est relative \xE0 l\x27heure courantegener (valeur n\xE9gative). Pour les modules utilisant un firmware plus ancien que la version 13000, la valeur est le nombre de secondes depuis la mise sous tension du module (valeure positive). Si vous d\xE9sirez obtenir l\x27heure absolue du d\xE9but de la s\xE9quence, utilisez <tt>get_startTimeUTC()</tt>.</p>',ret:'un entier positif correspondant au nombre de secondes \xE9coul\xE9es entre le d\xE9but du Run et le d\xE9but de la s\xE9quence enregistr\xE9e.'};
+doc['DataStream']['get_startTimeUTC']={syn:'Retourne l\x27heure absolue du d\xE9but de la s\xE9quence de donn\xE9es, sous forme du nombre de secondes depuis le 1er janvier 1970 (date/heure au format Unix).',lib:'datastream.get_startTimeUTC()',pro:'def get_startTimeUTC()',cmt:'<p>Retourne l\x27heure absolue du d\xE9but de la s\xE9quence de donn\xE9es, sous forme du nombre de secondes depuis le 1er janvier 1970 (date/heure au format Unix). Si l\x27heure UTC n\x27\xE9tait pas configur\xE9e dans l\x27enregistreur de donn\xE9es au d\xE9but de la s\xE9quence, cette m\xE9thode retourne 0.</p>',ret:'un entier positif correspondant au nombre de secondes \xE9coul\xE9es entre le 1er janvier 1970 et le d\xE9but de la s\xE9quence enregistr\xE9e.'};
+//--- (end of generated code: DataStream)
+//--- (generated code: DataSet)
+doc['DataSet']={'':{syn:'S\xE9quence de donn\xE9es enregistr\xE9es',inc:'from yocto_api import *',cmt:'<p>Les objets YDataSet permettent de r\xE9cup\xE9rer un ensemble de mesures enregistr\xE9es correspondant \xE0 un capteur donn\xE9, pour une p\xE9riode choisie. Ils permettent le chargement progressif des donn\xE9es. Lorsque l\x27objet YDataSet est instanci\xE9 par la fonction <tt>get_recordedData()</tt>, aucune donn\xE9e n\x27est encore charg\xE9e du module. Ce sont les appels successifs \xE0 la m\xE9thode <tt>loadMore()</tt> qui proc\xE8dent au chargement effectif des donn\xE9es depuis l\x27enregistreur de donn\xE9es.</p><p> Un r\xE9sum\xE9 des mesures disponibles est disponible via la fonction <tt>get_preview()</tt> d\xE8s le premier appel \xE0 <tt>loadMore()</tt>. Les mesures elles-m\xEAme sont disponibles via la fonction <tt>get_measures()</tt> au fur et \xE0 mesure de leur chargement.</p><p> Cette classe ne fonctionne que si le module utilise un firmware r\xE9cent, car les objets YDataSet ne sont pas support\xE9s par les firmwares ant\xE9rieurs \xE0 la r\xE9vision 13000.</p>'}};
+doc['DataSet']['get_endTimeUTC']={syn:'Retourne l\x27heure absolue de la fin des mesures disponibles, sous forme du nombre de secondes depuis le 1er janvier 1970 (date/heure au format Unix).',lib:'dataset.get_endTimeUTC()',pro:'def get_endTimeUTC()',cmt:'<p>Retourne l\x27heure absolue de la fin des mesures disponibles, sous forme du nombre de secondes depuis le 1er janvier 1970 (date/heure au format Unix). Lorsque l\x27objet YDataSet est cr\xE9\xE9, l\x27heure de fin est celle qui a \xE9t\xE9 pass\xE9e en param\xE8tre \xE0 la fonction <tt>get_dataSet</tt>. D\xE8s le premier appel \xE0 la m\xE9thode <tt>loadMore()</tt>, l\x27heure de fin est mise \xE0 jour \xE0 la derni\xE8re mesure effectivement disponible dans l\x27enregistreur de donn\xE9es pour la plage sp\xE9cifi\xE9e.</p>',ret:'un entier positif correspondant au nombre de secondes \xE9coul\xE9es entre le 1er janvier 1970 et la derni\xE8re mesure.'};
+doc['DataSet']['get_functionId']={syn:'Retourne l\x27identifiant mat\xE9riel de la fonction qui a effectu\xE9 les mesures, sans r\xE9f\xE9rence au module.',lib:'dataset.get_functionId()',pro:'def get_functionId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel de la fonction qui a effectu\xE9 les mesures, sans r\xE9f\xE9rence au module. Par example <tt>temperature1</tt>.</p>',ret:'une cha\xEEne de caract\xE8res identifiant la fonction (ex: <tt>temperature1</tt>)'};
+doc['DataSet']['get_hardwareId']={syn:'Retourne l\x27identifiant mat\xE9riel unique de la fonction qui a effectu\xE9 les mesures, au format <tt>SERIAL.FUNCTIONID</tt>.',lib:'dataset.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel unique de la fonction qui a effectu\xE9 les mesures, au format <tt>SERIAL.FUNCTIONID</tt>. L\x27identifiant unique est compos\xE9 du num\xE9ro de s\xE9rie du module et de l\x27identifiant mat\xE9riel de la fonction (par example <tt>THRMCPL1-123456.temperature1</tt>).</p>',ret:'une cha\xEEne de caract\xE8res identifiant la fonction (ex: <tt>THRMCPL1-123456.temperature1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['DataSet']['get_measures']={syn:'Retourne toutes les mesures d\xE9j\xE0 disponibles pour le DataSet, sous forme d\x27une liste d\x27objets YMeasure.',lib:'dataset.get_measures()',pro:'def get_measures()',cmt:'<p>Retourne toutes les mesures d\xE9j\xE0 disponibles pour le DataSet, sous forme d\x27une liste d\x27objets YMeasure. Chaque \xE9l\xE9ment contient: - le moment ou la mesure a d\xE9but\xE9 - le moment ou la mesure s\x27est termin\xE9e - la valeur minimale observ\xE9e dans l\x27intervalle de temps - la valeur moyenne observ\xE9e dans l\x27intervalle de temps - la valeur maximale observ\xE9e dans l\x27intervalle de temps</p><p> Avant d\x27appeler cette m\xE9thode, vous devez appeler <tt>loadMore()</tt> pour charger des donn\xE9es depuis l\x27enregistreur sur le module. L\x27appel doit \xEAtre r\xE9p\xE9t\xE9 plusieurs fois pour charger toutes les donn\xE9es, mais vous pouvez commencer \xE0 utiliser les donn\xE9es disponibles avant qu\x27elles n\x27aient \xE9t\xE9 toutes charg\xE9es</p><p> Les mesures les plus anciennes sont toujours charg\xE9es les premi\xE8res, et les plus r\xE9centes en dernier. De ce fait, les timestamps dans la table des mesures sont normalement par ordre chronologique. La seule exception est dans le cas o\xF9 il y a eu un ajustement de l\x27horloge UTC de l\x27enregistreur de donn\xE9es pendant l\x27enregistrement.</p>',ret:'un tableau d\x27enregistrements, chaque enregistrement repr\xE9sentant une mesure effectu\xE9e \xE0 un moment pr\xE9cis.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un tableau vide.'};
+doc['DataSet']['get_measuresAt']={syn:'Retourne les mesures d\xE9taill\xE9es pour une mesure r\xE9sum\xE9e pr\xE9c\xE9demment retourn\xE9e par <tt>get_preview()</tt>.',lib:'dataset.get_measuresAt()',pro:'def get_measuresAt(<span id=pn>measure</span>)',cmt:'<p>Retourne les mesures d\xE9taill\xE9es pour une mesure r\xE9sum\xE9e pr\xE9c\xE9demment retourn\xE9e par <tt>get_preview()</tt>. Le r\xE9sultat est fourni sous forme d\x27une liste d\x27objets YMeasure.</p>',par:{measure:'mesure r\xE9sum\xE9e extraite de la liste pr\xE9c\xE9demment retourn\xE9e par <tt>get_preview()</tt>.'},ret:'un tableau d\x27enregistrements, chaque enregistrement repr\xE9sentant les mesures observ\xE9e durant un certain intervalle de temps.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un tableau vide.'};
+doc['DataSet']['get_preview']={syn:'Retourne une version r\xE9sum\xE9e des mesures qui pourront \xEAtre obtenues de ce YDataSet, sous forme d\x27une liste d\x27objets YMeasure.',lib:'dataset.get_preview()',pro:'def get_preview()',cmt:'<p>Retourne une version r\xE9sum\xE9e des mesures qui pourront \xEAtre obtenues de ce YDataSet, sous forme d\x27une liste d\x27objets YMeasure. Chaque \xE9l\xE9ment contient: - le d\xE9but d\x27un intervalle de temps - la fin d\x27un intervalle de temps - la valeur minimale observ\xE9e dans l\x27intervalle de temps - la valeur moyenne observ\xE9e dans l\x27intervalle de temps - la valeur maximale observ\xE9e dans l\x27intervalle de temps</p><p> Le r\xE9sum\xE9 des mesures est disponible d\xE8s que <tt>loadMore()</tt> a \xE9t\xE9 appel\xE9 pour la premi\xE8re fois.</p>',ret:'un tableau d\x27enregistrements, chaque enregistrement repr\xE9sentant les mesures observ\xE9e durant un certain intervalle de temps.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un tableau vide.'};
+doc['DataSet']['get_progress']={syn:'Retourne l\x27\xE9tat d\x27avancement du chargement des donn\xE9es, sur une \xE9chelle de 0 \xE0 100.',lib:'dataset.get_progress()',pro:'def get_progress()',cmt:'<p>Retourne l\x27\xE9tat d\x27avancement du chargement des donn\xE9es, sur une \xE9chelle de 0 \xE0 100. A l\x27instanciation de l\x27objet par la fonction <tt>get_dataSet()</tt>, l\x27avancement est nul. Au fur et \xE0 mesure des appels \xE0 <tt>loadMore()</tt>, l\x27avancement progresse pour atteindre la valeur 100 lorsque toutes les mesures ont \xE9t\xE9 charg\xE9es.</p>',ret:'un nombre entier entre 0 et 100 repr\xE9sentant l\x27avancement du chargement des donn\xE9es demand\xE9es.'};
+doc['DataSet']['get_startTimeUTC']={syn:'Retourne l\x27heure absolue du d\xE9but des mesures disponibels, sous forme du nombre de secondes depuis le 1er janvier 1970 (date/heure au format Unix).',lib:'dataset.get_startTimeUTC()',pro:'def get_startTimeUTC()',cmt:'<p>Retourne l\x27heure absolue du d\xE9but des mesures disponibels, sous forme du nombre de secondes depuis le 1er janvier 1970 (date/heure au format Unix). Lorsque l\x27objet YDataSet est cr\xE9\xE9, l\x27heure de d\xE9part est celle qui a \xE9t\xE9 pass\xE9e en param\xE8tre \xE0 la fonction <tt>get_dataSet</tt>. D\xE8s le premier appel \xE0 la m\xE9thode <tt>loadMore()</tt>, l\x27heure de d\xE9part est mise \xE0 jour \xE0 la premi\xE8re mesure effectivement disponible dans l\x27enregistreur de donn\xE9es pour la plage sp\xE9cifi\xE9e.</p>',ret:'un entier positif correspondant au nombre de secondes \xE9coul\xE9es entre le 1er janvier 1970 et la premi\xE8re mesure enregistr\xE9e.'};
+doc['DataSet']['get_summary']={syn:'Retourne un objet YMeasure r\xE9sumant tout le YDataSet.',lib:'dataset.get_summary()',pro:'def get_summary()',cmt:'<p>Retourne un objet YMeasure r\xE9sumant tout le YDataSet. Il inclut les information suivantes: - le moment de la premi\xE8re mesure - le moment de la derni\xE8re mesure - la valeur minimale observ\xE9e dans l\x27intervalle de temps - la valeur moyenne observ\xE9e dans l\x27intervalle de temps - la valeur maximale observ\xE9e dans l\x27intervalle de temps</p><p> Ce r\xE9sum\xE9 des mesures est disponible d\xE8s que <tt>loadMore()</tt> a \xE9t\xE9 appel\xE9 pour la premi\xE8re fois.</p>',ret:'un objet YMeasure'};
+doc['DataSet']['get_unit']={syn:'Retourne l\x27unit\xE9 dans laquelle la valeur mesur\xE9e est exprim\xE9e.',lib:'dataset.get_unit()',pro:'def get_unit()',cmt:'<p>Retourne l\x27unit\xE9 dans laquelle la valeur mesur\xE9e est exprim\xE9e.</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant une unit\xE9 physique.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_UNIT_INVALID</tt>.'};
+doc['DataSet']['loadMore']={syn:'Proc\xE8de au chargement du bloc suivant de mesures depuis l\x27enregistreur de donn\xE9es du module, et met \xE0 jour l\x27indicateur d\x27avancement.',lib:'dataset.loadMore()',pro:'def loadMore()',cmt:'<p>Proc\xE8de au chargement du bloc suivant de mesures depuis l\x27enregistreur de donn\xE9es du module, et met \xE0 jour l\x27indicateur d\x27avancement.</p>',ret:'un nombre entier entre 0 et 100 repr\xE9sentant l\x27avancement du chargement des donn\xE9es demand\xE9es, ou un code d\x27erreur n\xE9gatif en cas de probl\xE8me.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+//--- (end of generated code: DataSet)
+//--- (generated code: Measure)
+doc['Measure']={'':{syn:'Valeur mesur\xE9e',inc:'from yocto_api import *',cmt:'<p>Les objets YMeasure sont utilis\xE9s dans l\x27interface de programmation Yoctopuce pour repr\xE9senter une valeur observ\xE9e un moment donn\xE9e. Ces objets sont utilis\xE9s en particulier en conjonction avec la classe YDataSet.</p>'}};
+doc['Measure']['get_averageValue']={syn:'Retourne la valeur moyenne observ\xE9e durant l\x27intervalle de temps couvert par la mesure.',lib:'measure.get_averageValue()',pro:'def get_averageValue()',cmt:'<p>Retourne la valeur moyenne observ\xE9e durant l\x27intervalle de temps couvert par la mesure.</p>',ret:'un nombre d\xE9cimal correspondant \xE0 la valeur moyenne observ\xE9e.'};
+doc['Measure']['get_endTimeUTC']={syn:'Retourne l\x27heure absolue de la fin de la mesure, sous forme du nombre de secondes depuis le 1er janvier 1970 UTC (date/heure au format Unix).',lib:'measure.get_endTimeUTC()',pro:'def get_endTimeUTC()',cmt:'<p>Retourne l\x27heure absolue de la fin de la mesure, sous forme du nombre de secondes depuis le 1er janvier 1970 UTC (date/heure au format Unix). Lors que l\x27enregistrement de donn\xE9es se fait \xE0 une fr\xE9quence sup\xE9rieure \xE0 une mesure par seconde, le timestamp peuvent inclurent une fraction d\xE9cimale.</p>',ret:'un nombre r\xE9el positif correspondant au nombre de secondes \xE9coul\xE9es entre le 1er janvier 1970 UTC et la fin de la mesure.'};
+doc['Measure']['get_maxValue']={syn:'Retourne la plus grande valeur observ\xE9e durant l\x27intervalle de temps couvert par la mesure.',lib:'measure.get_maxValue()',pro:'def get_maxValue()',cmt:'<p>Retourne la plus grande valeur observ\xE9e durant l\x27intervalle de temps couvert par la mesure.</p>',ret:'un nombre d\xE9cimal correspondant \xE0 la plus grande valeur observ\xE9e.'};
+doc['Measure']['get_minValue']={syn:'Retourne la plus petite valeur observ\xE9e durant l\x27intervalle de temps couvert par la mesure.',lib:'measure.get_minValue()',pro:'def get_minValue()',cmt:'<p>Retourne la plus petite valeur observ\xE9e durant l\x27intervalle de temps couvert par la mesure.</p>',ret:'un nombre d\xE9cimal correspondant \xE0 la plus petite valeur observ\xE9e.'};
+doc['Measure']['get_startTimeUTC']={syn:'Retourne l\x27heure absolue du d\xE9but de la mesure, sous forme du nombre de secondes depuis le 1er janvier 1970 UTC (date/heure au format Unix).',lib:'measure.get_startTimeUTC()',pro:'def get_startTimeUTC()',cmt:'<p>Retourne l\x27heure absolue du d\xE9but de la mesure, sous forme du nombre de secondes depuis le 1er janvier 1970 UTC (date/heure au format Unix). Lors que l\x27enregistrement de donn\xE9es se fait \xE0 une fr\xE9quence sup\xE9rieure \xE0 une mesure par seconde, le timestamp peuvent inclurent une fraction d\xE9cimale.</p>',ret:'un nombre r\xE9el positif correspondant au nombre de secondes \xE9coul\xE9es entre le 1er janvier 1970 UTC et la d\xE9but de la mesure.'};
+//--- (end of generated code: Measure)
+//--- (generated code: DisplayLayer)
+doc['DisplayLayer']={'':{syn:'Interface des objets DisplayLayer',inc:'from yocto_display import *',cmt:'<p>Un DisplayLayer est une couche de contenu affichable (images, texte, etc.). Le contenu n\x27est visible sur l\x27\xE9cran que lorsque la couche est active sur l\x27\xE9cran (et non masqu\xE9e par une couche sup\xE9rieure).</p>'}};
+doc['DisplayLayer']['clear']={syn:'Efface tout le contenu de la couche de dessin, de sorte \xE0 ce qu\x27elle redevienne enti\xE8rement transparente.',lib:'displaylayer.clear()',pro:'def clear()',cmt:'<p>Efface tout le contenu de la couche de dessin, de sorte \xE0 ce qu\x27elle redevienne enti\xE8rement transparente. Cette m\xE9thode ne change pas les r\xE9glages de le couche. Si vous d\xE9sirez remettre la couche dans son \xE9tat initial, utilisez plut\xF4t la m\xE9thode <tt>reset()</tt>.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['DisplayLayer']['clearConsole']={syn:'Efface le contenu de la zone de console, et repositionne le curseur de la console en haut \xE0 gauche de la zone.',lib:'displaylayer.clearConsole()',pro:'def clearConsole()',cmt:'<p>Efface le contenu de la zone de console, et repositionne le curseur de la console en haut \xE0 gauche de la zone.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['DisplayLayer']['consoleOut']={syn:'Affiche un message dans la zone de console, et d\xE9place le curseur de la console \xE0 la fin du texte.',lib:'displaylayer.consoleOut()',pro:'def consoleOut(<span id=pn>text</span>)',cmt:'<p>Affiche un message dans la zone de console, et d\xE9place le curseur de la console \xE0 la fin du texte. Le curseur revient automatiquement en d\xE9but de ligne suivante lorsqu\x27un saut de ligne est rencontr\xE9, ou lorsque la marge droite est atteinte. Lorsque le texte \xE0 afficher s\x27appr\xEAte \xE0 d\xE9passer la marge inf\xE9rieure, le contenu de la zone de console est automatiquement d\xE9cal\xE9 vers le haut afin de laisser la place \xE0 la nouvelle ligne de texte.</p>',par:{text:'le message \xE0 afficher'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['DisplayLayer']['drawBar']={syn:'Dessine un rectangle plein \xE0 une position sp\xE9cifi\xE9e.',lib:'displaylayer.drawBar()',pro:'def drawBar(<span id=pn>x1</span>, <span id=pn>y1</span>, <span id=pn>x2</span>, <span id=pn>y2</span>)',cmt:'<p>Dessine un rectangle plein \xE0 une position sp\xE9cifi\xE9e.</p>',par:{x1:'la distance en pixels depuis la gauche de la couche jusqu\x27au bord gauche du rectangle',y1:'la distance en pixels depuis le haut de la couche jusqu\x27au bord sup\xE9rieur du rectangle',x2:'la distance en pixels depuis la gauche de la couche jusqu\x27au bord droit du rectangle',y2:'la distance en pixels depuis le haut de la couche jusqu\x27au bord inf\xE9rieur du rectangle'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['DisplayLayer']['drawBitmap']={syn:'Dessine un bitmap \xE0 la position sp\xE9cifi\xE9e de la couche.',lib:'displaylayer.drawBitmap()',pro:'def drawBitmap(<span id=pn>x</span>, <span id=pn>y</span>, <span id=pn>w</span>, <span id=pn>bitmap</span>, <span id=pn>bgcol</span>)',cmt:'<p>Dessine un bitmap \xE0 la position sp\xE9cifi\xE9e de la couche. Le bitmap est pass\xE9 sous forme d\x27un objet binaire, o\xF9 chaque bit correspond \xE0 un pixel, de gauche \xE0 droite et de haut en bas. Le bit de poids fort de chaque octet correspond au pixel de gauche, et le bit de poids faible au pixel le plus \xE0 droite. Les bits \xE0 1 sont dessin\xE9s avec la couleur active de la couche. Les bits \xE0 0 avec la couleur de fond sp\xE9cifi\xE9e, sauf si la valeur -1 a \xE9t\xE9 choisie, auquel cas ils ne sont pas dessin\xE9s (ils sont consid\xE9r\xE9s comme transparents). Chaque ligne commence sur un nouvel octet. La hauteur du bitmap est donn\xE9e implicitement par la taille de l\x27objet binaire.</p>',par:{x:'la distance en pixels depuis la gauche de la couche jusqu\x27au bord gauche du bitmap',y:'la distance en pixels depuis le haut de la couche jusqu\x27au bord sup\xE9rieur du bitmap',w:'la largeur du bitmap, en pixels',bitmap:'l\x27objet binaire contenant le bitmap',bgcol:'le niveau de gris \xE0 utiliser pour les bits \xE0 z\xE9ro (0 = noir, 255 = blanc), ou -1 pour lasser les pixels inchang\xE9s'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['DisplayLayer']['drawCircle']={syn:'Dessine un cercle vide \xE0 une position sp\xE9cifi\xE9e.',lib:'displaylayer.drawCircle()',pro:'def drawCircle(<span id=pn>x</span>, <span id=pn>y</span>, <span id=pn>r</span>)',cmt:'<p>Dessine un cercle vide \xE0 une position sp\xE9cifi\xE9e.</p>',par:{x:'la distance en pixels depuis la gauche de la couche jusqu\x27au centre du cercle',y:'la distance en pixels depuis le haut de la couche jusqu\x27au centre du cercle',r:'le rayon du cercle, en pixels'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['DisplayLayer']['drawDisc']={syn:'Dessine un disque plein \xE0 une position sp\xE9cifi\xE9e.',lib:'displaylayer.drawDisc()',pro:'def drawDisc(<span id=pn>x</span>, <span id=pn>y</span>, <span id=pn>r</span>)',cmt:'<p>Dessine un disque plein \xE0 une position sp\xE9cifi\xE9e.</p>',par:{x:'la distance en pixels depuis la gauche de la couche jusqu\x27au centre du disque',y:'la distance en pixels depuis le haut de la couche jusqu\x27au centre du disque',r:'le rayon du disque, en pixels'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['DisplayLayer']['drawImage']={syn:'Dessine une image GIF \xE0 la position sp\xE9cifi\xE9e de la couche.',lib:'displaylayer.drawImage()',pro:'def drawImage(<span id=pn>x</span>, <span id=pn>y</span>, <span id=pn>imagename</span>)',cmt:'<p>Dessine une image GIF \xE0 la position sp\xE9cifi\xE9e de la couche. L\x27image GIF doit avoir \xE9t\xE9 pr\xE9alablement pr\xE9charg\xE9e dans la m\xE9moire du module. Si vous rencontrez des probl\xE8mes \xE0 l\x27utilisation d\x27une image bitmap, consultez les logs du module pour voir si vous n\x27y trouvez pas un message \xE0 propos d\x27un fichier d\x27image manquant ou d\x27un format de fichier invalide.</p>',par:{x:'la distance en pixels depuis la gauche de la couche jusqu\x27au bord gauche de l\x27image',y:'la distance en pixels depuis le haut de la couche jusqu\x27au bord sup\xE9rieur de l\x27image',imagename:'le nom du fichier GIF \xE0 afficher'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['DisplayLayer']['drawPixel']={syn:'Dessine un pixel unique \xE0 une position sp\xE9cifi\xE9e.',lib:'displaylayer.drawPixel()',pro:'def drawPixel(<span id=pn>x</span>, <span id=pn>y</span>)',cmt:'<p>Dessine un pixel unique \xE0 une position sp\xE9cifi\xE9e.</p>',par:{x:'la distance en pixels depuis la gauche de la couche',y:'la distance en pixels depuis le haut de la couche'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['DisplayLayer']['drawRect']={syn:'Dessine un rectangle vide \xE0 une position sp\xE9cifi\xE9e.',lib:'displaylayer.drawRect()',pro:'def drawRect(<span id=pn>x1</span>, <span id=pn>y1</span>, <span id=pn>x2</span>, <span id=pn>y2</span>)',cmt:'<p>Dessine un rectangle vide \xE0 une position sp\xE9cifi\xE9e.</p>',par:{x1:'la distance en pixels depuis la gauche de la couche jusqu\x27au bord gauche du rectangle',y1:'la distance en pixels depuis le haut de la couche jusqu\x27au bord sup\xE9rieur du rectangle',x2:'la distance en pixels depuis la gauche de la couche jusqu\x27au bord droit du rectangle',y2:'la distance en pixels depuis le haut de la couche jusqu\x27au bord inf\xE9rieur du rectangle'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['DisplayLayer']['drawText']={syn:'Affiche un texte \xE0 la position sp\xE9cifi\xE9e de la couche.',lib:'displaylayer.drawText()',pro:'def drawText(<span id=pn>x</span>, <span id=pn>y</span>, <span id=pn>anchor</span>, <span id=pn>text</span>)',cmt:'<p>Affiche un texte \xE0 la position sp\xE9cifi\xE9e de la couche. Le point du texte qui sera align\xE9 sur la position sp\xE9cifi\xE9e est appel\xE9 point d\x27ancrage, et peut \xEAtre choisi parmi plusieurs options.</p>',par:{x:'la distance en pixels depuis la gauche de la couche jusqu\x27au point d\x27ancrage du texte',y:'la distance en pixels depuis le haut de la couche jusqu\x27au point d\x27ancrage du texte',anchor:'le point d\x27ancrage du texte, choisi parmi l\x27\xE9num\xE9ration <tt>Y_ALIGN</tt>: <tt>Y_ALIGN_TOP_LEFT</tt>, <tt>Y_ALIGN_CENTER_LEFT</tt>, <tt>Y_ALIGN_BASELINE_LEFT</tt>, <tt>Y_ALIGN_BOTTOM_LEFT</tt>, <tt>Y_ALIGN_TOP_CENTER</tt>, <tt>Y_ALIGN_CENTER</tt>, <tt>Y_ALIGN_BASELINE_CENTER</tt>, <tt>Y_ALIGN_BOTTOM_CENTER</tt>, <tt>Y_ALIGN_TOP_DECIMAL</tt>, <tt>Y_ALIGN_CENTER_DECIMAL</tt>, <tt>Y_ALIGN_BASELINE_DECIMAL</tt>, <tt>Y_ALIGN_BOTTOM_DECIMAL</tt>, <tt>Y_ALIGN_TOP_RIGHT</tt>, <tt>Y_ALIGN_CENTER_RIGHT</tt>, <tt>Y_ALIGN_BASELINE_RIGHT</tt>, <tt>Y_ALIGN_BOTTOM_RIGHT</tt>.',text:'le texte \xE0 afficher'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['DisplayLayer']['get_display']={syn:'Retourne l\x27YDisplay parent.',lib:'displaylayer.get_display()',pro:'def get_display()',cmt:'<p>Retourne l\x27YDisplay parent. Retourne l\x27objet YDisplay parent du YDisplayLayer courant.</p>',ret:'un objet <tt>YDisplay</tt>'};
+doc['DisplayLayer']['get_displayHeight']={syn:'Retourne la hauteur de l\x27\xE9cran, en pixels.',lib:'displaylayer.get_displayHeight()',pro:'def get_displayHeight()',cmt:'<p>Retourne la hauteur de l\x27\xE9cran, en pixels.</p>',ret:'un entier repr\xE9sentant la hauteur de l\x27\xE9cran, en pixels',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne Y_DISPLAYHEIGHT_INVALID.'};
+doc['DisplayLayer']['get_displayWidth']={syn:'Retourne la largeur de l\x27\xE9cran, en pixels.',lib:'displaylayer.get_displayWidth()',pro:'def get_displayWidth()',cmt:'<p>Retourne la largeur de l\x27\xE9cran, en pixels.</p>',ret:'un entier repr\xE9sentant la largeur de l\x27\xE9cran, en pixels',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne Y_DISPLAYWIDTH_INVALID.'};
+doc['DisplayLayer']['get_layerHeight']={syn:'Retourne la hauteur des couches affichables, en pixels.',lib:'displaylayer.get_layerHeight()',pro:'def get_layerHeight()',cmt:'<p>Retourne la hauteur des couches affichables, en pixels.</p>',ret:'un entier repr\xE9sentant la hauteur des couches affichables, en pixels. En cas d\x27erreur, d\xE9clenche une exception ou retourne Y_LAYERHEIGHT_INVALID.'};
+doc['DisplayLayer']['get_layerWidth']={syn:'Retourne la largeur des couches affichables, en pixels.',lib:'displaylayer.get_layerWidth()',pro:'def get_layerWidth()',cmt:'<p>Retourne la largeur des couches affichables, en pixels.</p>',ret:'un entier repr\xE9sentant la largeur des couches affichables, en pixels',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne Y_LAYERWIDTH_INVALID.'};
+doc['DisplayLayer']['hide']={syn:'Cache la couche de dessin.',lib:'displaylayer.hide()',pro:'def hide()',cmt:'<p>Cache la couche de dessin. L\x27etat de la couche est pr\xE9serv\xE9, mais la couche ne sera plus plus affich\xE9s \xE0 l\x27\xE9cran jusqu\x27au prochain appel \xE0 <tt>unhide()</tt>. Le fait de cacher la couche am\xE9liore les performances de toutes les primitives d\x27affichage, car il \xE9vite de consacrer inutilement des cycles de calcul \xE0 afficher les \xE9tats interm\xE9diaires (technique de double-buffering).</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['DisplayLayer']['lineTo']={syn:'Dessine une ligne depuis le point de dessin courant jusqu\x27\xE0 la position sp\xE9cifi\xE9e.',lib:'displaylayer.lineTo()',pro:'def lineTo(<span id=pn>x</span>, <span id=pn>y</span>)',cmt:'<p>Dessine une ligne depuis le point de dessin courant jusqu\x27\xE0 la position sp\xE9cifi\xE9e. Le pixel final sp\xE9cifi\xE9 est inclus dans la ligne dessin\xE9e. Le point de dessin courant est d\xE9plac\xE9 \xE0 au point final de la ligne.</p>',par:{x:'la distance en pixels depuis la gauche de la couche jusqu\x27au point final',y:'la distance en pixels depuis le haut de la couche jusqu\x27au point final'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['DisplayLayer']['moveTo']={syn:'D\xE9place le point de dessin courant de cette couche \xE0 la position sp\xE9cifi\xE9e.',lib:'displaylayer.moveTo()',pro:'def moveTo(<span id=pn>x</span>, <span id=pn>y</span>)',cmt:'<p>D\xE9place le point de dessin courant de cette couche \xE0 la position sp\xE9cifi\xE9e.</p>',par:{x:'la distance en pixels depuis la gauche de la couche de dessin',y:'la distance en pixels depuis le haut de la couche de dessin'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['DisplayLayer']['reset']={syn:'Remet la couche de dessin dans son \xE9tat initial (enti\xE8rement transparente, r\xE9glages par d\xE9faut).',lib:'displaylayer.reset()',pro:'def reset()',cmt:'<p>Remet la couche de dessin dans son \xE9tat initial (enti\xE8rement transparente, r\xE9glages par d\xE9faut). R\xE9initialise la position du point de dessin courant au coin sup\xE9rieur gauche, et la couleur de dessin \xE0 la valeur la plus lumineuse. Si vous d\xE9sirez simplement effacer le contenu de la couche, utilisez plut\xF4t la m\xE9thode <tt>clear()</tt>.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['DisplayLayer']['selectColorPen']={syn:'Choisit la couleur du crayon \xE0 utiliser pour tous les appels suivants aux fonctions de dessin.',lib:'displaylayer.selectColorPen()',pro:'def selectColorPen(<span id=pn>color</span>)',cmt:'<p>Choisit la couleur du crayon \xE0 utiliser pour tous les appels suivants aux fonctions de dessin. La couleur est fournie sous forme de couleur RGB. Pour les \xE9crans monochromes ou en niveaux de gris, la couleur est automatiquement ramen\xE9e dans les valeurs permises.</p>',par:{color:'la couleur RGB d\xE9sir\xE9e (sous forme d\x27entier 24 bits)'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['DisplayLayer']['selectEraser']={syn:'Choisit une gomme plut\xF4t qu\x27un crayon pour tous les appels suivants aux fonctions de dessin, \xE0 l\x27exception de copie d\x27images bitmaps.',lib:'displaylayer.selectEraser()',pro:'def selectEraser()',cmt:'<p>Choisit une gomme plut\xF4t qu\x27un crayon pour tous les appels suivants aux fonctions de dessin, \xE0 l\x27exception de copie d\x27images bitmaps. Tous les points dessin\xE9s \xE0 la gomme redeviennent transparents (comme ils l\x27\xE9taient lorsque la couche \xE9tait vide), rendant ainsi visibles les couches inf\xE9rieures.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['DisplayLayer']['selectFont']={syn:'S\xE9lectionne la police de caract\xE8res \xE0 utiliser pour les fonctions d\x27affichage de texte suivantes.',lib:'displaylayer.selectFont()',pro:'def selectFont(<span id=pn>fontname</span>)',cmt:'<p>S\xE9lectionne la police de caract\xE8res \xE0 utiliser pour les fonctions d\x27affichage de texte suivantes. La police est sp\xE9cifi\xE9e par le nom de son fichier. Vous pouvez utiliser l\x27une des polices pr\xE9d\xE9finies dans le module, ou une autre police que vous avez pr\xE9alablement pr\xE9charg\xE9 dans la m\xE9moire du module. Si vous rencontrez des probl\xE8mes \xE0 l\x27utilisation d\x27une police de caract\xE8res, consultez les logs du module pour voir si vous n\x27y trouvez pas un message \xE0 propos d\x27un fichier de police manquant ou d\x27un format de fichier invalide.</p>',par:{fontname:'le nom du fichier d\xE9finissant la police de caract\xE8res'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['DisplayLayer']['selectGrayPen']={syn:'Choisit le niveau de gris \xE0 utiliser pour tous les appels suivants aux fonctions de dessin.',lib:'displaylayer.selectGrayPen()',pro:'def selectGrayPen(<span id=pn>graylevel</span>)',cmt:'<p>Choisit le niveau de gris \xE0 utiliser pour tous les appels suivants aux fonctions de dessin. Le niveau de gris est fourni sous forme d\x27un chiffre allant de 0 (noir) \xE0 255 (blanc, ou la couleur la plus claire de l\x27\xE9cran, quelle qu\x27elle soit). Pour les \xE9crans monochromes (sans niveaux de gris), tout valeur inf\xE9rieure \xE0 128 conduit \xE0 un point noir, et toue valeur sup\xE9rieure ou \xE9gale \xE0 128 devient un point lumineux.</p>',par:{graylevel:'le niveau de gris d\xE9sir\xE9, de 0 \xE0 255'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['DisplayLayer']['setAntialiasingMode']={syn:'Active ou d\xE9sactive l\x27anti-aliasing pour tracer les lignes et les cercles.',lib:'displaylayer.setAntialiasingMode()',pro:'def setAntialiasingMode(<span id=pn>mode</span>)',cmt:'<p>Active ou d\xE9sactive l\x27anti-aliasing pour tracer les lignes et les cercles. L\x27anti-aliasing est att\xE9nue la pixelisation des images lorsqu\x27on regarde l\x27\xE9cran depuis une distance suffisante, mais peut aussi donner parfois une impression de flou lorsque l\x27\xE9cran est regard\xE9 de tr\xE8s pr\xE8s. Au final, c\x27est un choix esth\xE9tique qui vous revient. L\x27anti-aliasing est activ\xE9 par d\xE9faut pour les \xE9crans en niveaux de gris et les \xE9crans couleurs, mais vous pouvez le d\xE9sactiver si vous pr\xE9f\xE9rez. Ce r\xE9glage n\x27a pas d\x27effet sur les \xE9crans monochromes.</p>',par:{mode:'<t>true</t> pour activer l\x27antialiasing, <t>false</t> pour le d\xE9sactiver.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['DisplayLayer']['setConsoleBackground']={syn:'Configure la couleur de fond utilis\xE9e par la fonction <tt>clearConsole</tt> et par le d\xE9filement automatique de la console.',lib:'displaylayer.setConsoleBackground()',pro:'def setConsoleBackground(<span id=pn>bgcol</span>)',cmt:'<p>Configure la couleur de fond utilis\xE9e par la fonction <tt>clearConsole</tt> et par le d\xE9filement automatique de la console.</p>',par:{bgcol:'le niveau de gris \xE0 utiliser pour le fond lors de d\xE9filement (0 = noir, 255 = blanc), ou -1 pour un fond transparent'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['DisplayLayer']['setConsoleMargins']={syn:'Configure les marges d\x27affichage pour la fonction <tt>consoleOut</tt>.',lib:'displaylayer.setConsoleMargins()',pro:'def setConsoleMargins(<span id=pn>x1</span>, <span id=pn>y1</span>, <span id=pn>x2</span>, <span id=pn>y2</span>)',cmt:'<p>Configure les marges d\x27affichage pour la fonction <tt>consoleOut</tt>.</p>',par:{x1:'la distance en pixels depuis la gauche de la couche jusqu\x27\xE0 la marge gauche',y1:'la distance en pixels depuis le haut de la couche jusqu\x27\xE0 la marge sup\xE9rieure',x2:'la distance en pixels depuis la gauche de la couche jusqu\x27\xE0 la marge droite',y2:'la distance en pixels depuis le haut de la couche jusqu\x27\xE0 la marge inf\xE9rieure'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['DisplayLayer']['setConsoleWordWrap']={syn:'Configure le mode de retour \xE0 la ligne utilis\xE9 par la fonction <tt>consoleOut</tt>.',lib:'displaylayer.setConsoleWordWrap()',pro:'def setConsoleWordWrap(<span id=pn>wordwrap</span>)',cmt:'<p>Configure le mode de retour \xE0 la ligne utilis\xE9 par la fonction <tt>consoleOut</tt>.</p>',par:{wordwrap:'<tt>true</tt> pour retourner \xE0 la ligne entre les mots seulements, <tt>false</tt> pour retourner \xE0 l\x27extr\xEAme droite de chaque ligne.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['DisplayLayer']['setLayerPosition']={syn:'D\xE9place la position de la couche de dessin par rapport au coin sup\xE9rieur gauche de l\x27\xE9cran.',lib:'displaylayer.setLayerPosition()',pro:'def setLayerPosition(<span id=pn>x</span>, <span id=pn>y</span>, <span id=pn>scrollTime</span>)',cmt:'<p>D\xE9place la position de la couche de dessin par rapport au coin sup\xE9rieur gauche de l\x27\xE9cran. Lorsqu\x27une dur\xE9e de d\xE9filement est configur\xE9e, la position d\x27affichage de la couche est automatiquement mise \xE0 jour durant les millisecondes suivantes pour animer le d\xE9placement.</p>',par:{x:'la distance en pixels depuis la gauche de l\x27\xE9cran jusqu\x27\xE0 l\x27origine de la couche.',y:'la distance en pixels depuis le haut de l\x27\xE9cran jusqu\x27\xE0 l\x27origine de la couche.',scrollTime:'dur\xE9e en millisecondes du d\xE9placement, ou 0 si le d\xE9placement doit \xEAtre imm\xE9diat.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['DisplayLayer']['unhide']={syn:'Affiche la couche.',lib:'displaylayer.unhide()',pro:'def unhide()',cmt:'<p>Affiche la couche. Affiche a nouveau la couche apr\xE8s la command hide.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+//--- (end of generated code: DisplayLayer)
+//--- (generated code: Sensor)
+doc['Sensor']={'':{syn:'Interface des fonctions de type senseur',inc:'from yocto_api import *',cmt:'<p>La classe YSensor est la classe parente de tous les senseurs Yoctopuce. Elle permet de lire la valeur courante et l\x27unit\xE9 de n\x27importe quel capteur, de lire les valeurs min/max, de configurer la fr\xE9quence d\x27enregistrement autonome des donn\xE9es et de r\xE9cup\xE9rer les mesures enregistr\xE9es. Elle permet aussi d\x27enregistrer un callback appel\xE9 lorsque la valeur mesur\xE9e change ou \xE0 intervalle pr\xE9d\xE9fini. L\x27utilisation de cette classe plut\xF4t qu\x27une de ces sous-classes permet de cr\xE9er des application g\xE9n\xE9riques, compatibles m\xEAme avec les capteurs Yoctopuce futurs. Note: la classe YAnButton est le seul type d\x27entr\xE9e analogique qui n\x27h\xE9rite pas de YSensor.</p>'}};
+doc['Sensor']['FindSensor']={syn:'Permet de retrouver un senseur d\x27apr\xE8s un identifiant donn\xE9.',lib:'YSensor.FindSensor()',pro:'def FindSensor(<span id=pn>func</span>)',cmt:'<p>Permet de retrouver un senseur d\x27apr\xE8s un identifiant donn\xE9. L\x27identifiant peut \xEAtre sp\xE9cifi\xE9 sous plusieurs formes:<br> <ul> <li>NomLogiqueFonction</li> <li>NoSerieModule.IdentifiantFonction</li> <li>NoSerieModule.NomLogiqueFonction</li> <li>NomLogiqueModule.IdentifiantMat\xE9riel</li> <li>NomLogiqueModule.NomLogiqueFonction</li> </ul></p><p> Cette fonction n\x27exige pas que le senseur soit en ligne au moment ou elle est appel\xE9e, l\x27objet retourn\xE9 sera n\xE9anmoins valide. Utiliser la m\xE9thode <tt>YSensor.isOnline()</tt> pour tester si le senseur est utilisable \xE0 un moment donn\xE9. En cas d\x27ambigu\xEFt\xE9 lorsqu\x27on fait une recherche par nom logique, aucune erreur ne sera notifi\xE9e: la premi\xE8re instance trouv\xE9e sera renvoy\xE9e. La recherche se fait d\x27abord par nom mat\xE9riel, puis par nom logique.</p>',par:{func:'une cha\xEEne de caract\xE8res qui r\xE9f\xE9rence le senseur sans ambigu\xEFt\xE9'},ret:'un objet de classe <tt>YSensor</tt> qui permet ensuite de contr\xF4ler le senseur.'};
+doc['Sensor']['FirstSensor']={syn:'Commence l\x27\xE9num\xE9ration des senseurs accessibles par la librairie.',lib:'YSensor.FirstSensor()',pro:'def FirstSensor()',cmt:'<p>Commence l\x27\xE9num\xE9ration des senseurs accessibles par la librairie. Utiliser la fonction <tt>YSensor.nextSensor()</tt> pour it\xE9rer sur les autres senseurs.</p>',ret:'un pointeur sur un objet <tt>YSensor</tt>, correspondant au premier senseur accessible en ligne, ou <tt>null</tt> si il n\x27y a pas de senseurs disponibles.'};
+doc['Sensor']['calibrateFromPoints']={syn:'Enregistre des points de correction de mesure, typiquement pour compenser l\x27effet d\x27un bo\xEEtier sur les mesures rendues par le capteur.',lib:'sensor.calibrateFromPoints()',pro:'def calibrateFromPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Enregistre des points de correction de mesure, typiquement pour compenser l\x27effet d\x27un bo\xEEtier sur les mesures rendues par le capteur. Il est possible d\x27enregistrer jusqu\x27\xE0 cinq points de correction. Les points de correction doivent \xEAtre fournis en ordre croissant, et dans la plage valide du capteur. Le module effectue automatiquement une interpolation lin\xE9aire de l\x27erreur entre les points sp\xE9cifi\xE9s. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p><p> Pour plus de plus amples possibilit\xE9s d\x27appliquer une surcalibration aux capteurs, veuillez contacter support@yoctopuce.com.</p>',par:{rawValues:'tableau de nombres flottants, correspondant aux valeurs brutes rendues par le capteur pour les points de correction.',refValues:'tableau de nombres flottants, correspondant aux valeurs corrig\xE9es d\xE9sir\xE9es pour les points de correction.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Sensor']['clearCache']={syn:'Invalide le cache.',lib:'sensor.clearCache()',pro:'def clearCache()',cmt:'<p>Invalide le cache. Invalide le cache des valeurs courantes du senseur. Force le prochain appel \xE0 une m\xE9thode get_xxx() ou loadxxx() pour charger les les donn\xE9es depuis le module.</p>'};
+doc['Sensor']['describe']={syn:'Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du senseur au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'sensor.describe()',pro:'def describe()',cmt:'<p>Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du senseur au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. Plus pr\xE9cis\xE9ment, <tt>TYPE</tt> correspond au type de fonction, <tt>NAME</tt> correspond au nom utils\xE9 lors du premier acc\xE8s a la fonction, <tt>SERIAL</tt> correspond au num\xE9ro de s\xE9rie du module si le module est connect\xE9, ou <tt>\x22unresolved\x22</tt> sinon, et <tt>FUNCTIONID</tt> correspond \xE0 l\x27identifiant mat\xE9riel de la fonction si le module est connect\xE9. Par exemple, La methode va retourner <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> si le module est d\xE9j\xE0 connect\xE9 ou <tt>Relay(BadCustomeName.relay1)=unresolved</tt> si le module n\x27est pas d\xE9j\xE0 connect\xE9. Cette methode ne declenche aucune transaction USB ou TCP et peut donc \xEAtre utilis\xE9 dans un debuggeur.</p>',ret:'une cha\xEEne de caract\xE8res d\xE9crivant le senseur (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['Sensor']['get_advertisedValue']={syn:'Retourne la valeur courante du senseur (pas plus de 6 caract\xE8res).',lib:'sensor.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Retourne la valeur courante du senseur (pas plus de 6 caract\xE8res).</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur courante du senseur (pas plus de 6 caract\xE8res).',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['Sensor']['get_currentRawValue']={syn:'Retourne la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en l\x27unit\xE9 sp\xE9cifi\xE9e, sous forme de nombre \xE0 virgule.',lib:'sensor.get_currentRawValue()',pro:'def get_currentRawValue()',cmt:'<p>Retourne la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en l\x27unit\xE9 sp\xE9cifi\xE9e, sous forme de nombre \xE0 virgule.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en l\x27unit\xE9 sp\xE9cifi\xE9e, sous forme de nombre \xE0 virgule',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_CURRENTRAWVALUE_INVALID</tt>.'};
+doc['Sensor']['get_currentValue']={syn:'Retourne la valeur actuelle de la measure, en l\x27unit\xE9 sp\xE9cifi\xE9e, sous forme de nombre \xE0 virgule.',lib:'sensor.get_currentValue()',pro:'def get_currentValue()',cmt:'<p>Retourne la valeur actuelle de la measure, en l\x27unit\xE9 sp\xE9cifi\xE9e, sous forme de nombre \xE0 virgule.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur actuelle de la measure, en l\x27unit\xE9 sp\xE9cifi\xE9e, sous forme de nombre \xE0 virgule',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_CURRENTVALUE_INVALID</tt>.'};
+doc['Sensor']['get_errorMessage']={syn:'Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du senseur.',lib:'sensor.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du senseur. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'une cha\xEEne de caract\xE8res correspondant au message de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du senseur.'};
+doc['Sensor']['get_errorType']={syn:'Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du senseur.',lib:'sensor.get_errorType()',pro:'def get_errorType()',cmt:'<p>Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du senseur. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'un nombre correspondant au code de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du senseur.'};
+doc['Sensor']['get_friendlyName']={syn:'Retourne un identifiant global du senseur au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>.',lib:'sensor.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Retourne un identifiant global du senseur au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>. Le cha\xEEne retourn\xE9e utilise soit les noms logiques du module et du senseur si ils sont d\xE9finis, soit respectivement le num\xE9ro de s\xE9rie du module et l\x27identifant mat\xE9riel du senseur (par exemple: <tt>MyCustomName.relay1</tt>)</p>',ret:'une cha\xEEne de caract\xE8res identifiant le senseur en utilisant les noms logiques (ex: <tt>MyCustomName.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['Sensor']['get_functionDescriptor']={syn:'Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction.',lib:'sensor.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction. Cet identifiant peut \xEAtre utilis\xE9 pour tester si deux instance de <tt>YFunction</tt> r\xE9f\xE9rencent physiquement la m\xEAme fonction sur le m\xEAme module.</p>',ret:'un identifiant de type <tt>YFUN_DESCR</tt>.',ext:'Si la fonction n\x27a jamais \xE9t\xE9 contact\xE9e, la valeur retourn\xE9e sera <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>'};
+doc['Sensor']['get_functionId']={syn:'Retourne l\x27identifiant mat\xE9riel du senseur, sans r\xE9f\xE9rence au module.',lib:'sensor.get_functionId()',pro:'def get_functionId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel du senseur, sans r\xE9f\xE9rence au module. Par example <tt>relay1</tt>.</p>',ret:'une cha\xEEne de caract\xE8res identifiant le senseur (ex: <tt>relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['Sensor']['get_hardwareId']={syn:'Retourne l\x27identifiant mat\xE9riel unique du senseur au format <tt>SERIAL.FUNCTIONID</tt>.',lib:'sensor.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel unique du senseur au format <tt>SERIAL.FUNCTIONID</tt>. L\x27identifiant unique est compos\xE9 du num\xE9ro de s\xE9rie du module et de l\x27identifiant mat\xE9riel du senseur (par example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'une cha\xEEne de caract\xE8res identifiant le senseur (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['Sensor']['get_highestValue']={syn:'Retourne la valeur maximale observ\xE9e pour la measure depuis le d\xE9marrage du module.',lib:'sensor.get_highestValue()',pro:'def get_highestValue()',cmt:'<p>Retourne la valeur maximale observ\xE9e pour la measure depuis le d\xE9marrage du module.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur maximale observ\xE9e pour la measure depuis le d\xE9marrage du module',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_HIGHESTVALUE_INVALID</tt>.'};
+doc['Sensor']['get_logFrequency']={syn:'Retourne la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es.',lib:'sensor.get_logFrequency()',pro:'def get_logFrequency()',cmt:'<p>Retourne la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_LOGFREQUENCY_INVALID</tt>.'};
+doc['Sensor']['get_logicalName']={syn:'Retourne le nom logique du senseur.',lib:'sensor.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Retourne le nom logique du senseur.</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du senseur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['Sensor']['get_lowestValue']={syn:'Retourne la valeur minimale observ\xE9e pour la measure depuis le d\xE9marrage du module.',lib:'sensor.get_lowestValue()',pro:'def get_lowestValue()',cmt:'<p>Retourne la valeur minimale observ\xE9e pour la measure depuis le d\xE9marrage du module.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur minimale observ\xE9e pour la measure depuis le d\xE9marrage du module',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_LOWESTVALUE_INVALID</tt>.'};
+doc['Sensor']['get_module']={syn:'Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction.',lib:'sensor.get_module()',pro:'def get_module()',cmt:'<p>Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction. Si la fonction ne peut \xEAtre trouv\xE9e sur aucun module, l\x27instance de <tt>YModule</tt> retourn\xE9e ne sera pas joignable.</p>',ret:'une instance de <tt>YModule</tt>'};
+doc['Sensor']['get_recordedData']={syn:'Retourne un objet DataSet repr\xE9sentant des mesures de ce capteur pr\xE9c\xE9demment enregistr\xE9es \xE0 l\x27aide du DataLogger, pour l\x27intervalle de temps sp\xE9cifi\xE9.',lib:'sensor.get_recordedData()',pro:'def get_recordedData(<span id=pn>startTime</span>, <span id=pn>endTime</span>)',cmt:'<p>Retourne un objet DataSet repr\xE9sentant des mesures de ce capteur pr\xE9c\xE9demment enregistr\xE9es \xE0 l\x27aide du DataLogger, pour l\x27intervalle de temps sp\xE9cifi\xE9. Veuillez vous r\xE9f\xE9rer \xE0 la documentation de la classe DataSet pour plus plus d\x27informations sur la mani\xE8re d\x27obtenir un aper\xE7u des mesures pour la p\xE9riode, et comment charger progressivement une grande quantit\xE9 de mesures depuis le dataLogger.</p><p> Cette m\xE9thode ne fonctionne que si le module utilise un firmware r\xE9cent, car les objets DataSet ne sont pas support\xE9s par les firmwares ant\xE9rieurs \xE0 la r\xE9vision 13000.</p>',par:{startTime:'le d\xE9but de l\x27intervalle de mesure d\xE9sir\xE9, c\x27est \xE0 dire en nombre de secondes depuis le 1er janvier 1970 UTC. La valeur 0 peut \xEAtre utilis\xE9e pour ne poser aucune limite sur le d\xE9but des mesures.',endTime:'la find de l\x27intercalle de mesure d\xE9sir\xE9, c\x27est \xE0 dire en nombre de secondes depuis le 1er janvier 1970 UTC. La valeur 0 peut \xEAtre utilis\xE9e pour ne poser aucune limite de fin.'},ret:'une instance de YDataSet, dont les m\xE9thodes permettent de d\x27acc\xE9der aux donn\xE9es historiques souhait\xE9es.'};
+doc['Sensor']['get_reportFrequency']={syn:'Retourne la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction.',lib:'sensor.get_reportFrequency()',pro:'def get_reportFrequency()',cmt:'<p>Retourne la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_REPORTFREQUENCY_INVALID</tt>.'};
+doc['Sensor']['get_resolution']={syn:'Retourne la r\xE9solution des valeurs mesur\xE9es.',lib:'sensor.get_resolution()',pro:'def get_resolution()',cmt:'<p>Retourne la r\xE9solution des valeurs mesur\xE9es. La r\xE9solution correspond \xE0 la pr\xE9cision num\xE9rique de la repr\xE9sentation des mesures. Elle n\x27est pas forc\xE9ment identique \xE0 la pr\xE9cision r\xE9elle du capteur.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la r\xE9solution des valeurs mesur\xE9es',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_RESOLUTION_INVALID</tt>.'};
+doc['Sensor']['get_sensorState']={syn:'Retourne le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment.',lib:'sensor.get_sensorState()',pro:'def get_sensorState()',cmt:'<p>Retourne le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment.</p>',ret:'un entier repr&eacute;sentant le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_SENSORSTATE_INVALID</tt>.'};
+doc['Sensor']['get_unit']={syn:'Retourne l\x27unit\xE9 dans laquelle la measure est exprim\xE9e.',lib:'sensor.get_unit()',pro:'def get_unit()',cmt:'<p>Retourne l\x27unit\xE9 dans laquelle la measure est exprim\xE9e.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant l\x27unit\xE9 dans laquelle la measure est exprim\xE9e',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_UNIT_INVALID</tt>.'};
+doc['Sensor']['get_userData']={syn:'Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>.',lib:'sensor.get_userData()',pro:'def get_userData()',cmt:'<p>Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',ret:'l\x27objet stock\xE9 pr\xE9c\xE9demment par l\x27appelant.'};
+doc['Sensor']['isOnline']={syn:'V\xE9rifie si le module h\xE9bergeant le senseur est joignable, sans d\xE9clencher d\x27erreur.',lib:'sensor.isOnline()',pro:'def isOnline()',cmt:'<p>V\xE9rifie si le module h\xE9bergeant le senseur est joignable, sans d\xE9clencher d\x27erreur. Si les valeurs des attributs en cache du senseur sont valides au moment de l\x27appel, le module est consid\xE9r\xE9 joignable. Cette fonction ne cause en aucun cas d\x27exception, quelle que soit l\x27erreur qui pourrait se produire lors de la v\xE9rification de joignabilit\xE9.</p>',ret:'<tt>true</tt> si le senseur est joignable, <tt>false</tt> sinon'};
+doc['Sensor']['isSensorReady']={syn:'V\xE9rifie si le capteur est actuellement en \xE9tat de transmettre une mesure valide.',lib:'sensor.isSensorReady()',pro:'def isSensorReady()',cmt:'<p>V\xE9rifie si le capteur est actuellement en \xE9tat de transmettre une mesure valide. Retourne faux si le module n\x27est pas joignable, ou que le capteur n\x27a pas de mesure actuelle \xE0 communiquer. Cette fonction ne cause en aucun cas d\x27exception, quelle que soit l\x27erreur qui pourrait se produire lors de la v\xE9rification de joignabilit\xE9.</p>',ret:'<tt>true</tt> si le capteur dispose d\x27une mesure actuelle, <tt>false</tt> sinon'};
+doc['Sensor']['load']={syn:'Met en cache les valeurs courantes du senseur, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e.',lib:'sensor.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Met en cache les valeurs courantes du senseur, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e. Par d\xE9faut, lorsqu\x27on acc\xE8de \xE0 un module, tous les attributs des fonctions du module sont automatiquement mises en cache pour la dur\xE9e standard (5 ms). Cette m\xE9thode peut \xEAtre utilis\xE9e pour marquer occasionellement les donn\xE9es cach\xE9es comme valides pour une plus longue p\xE9riode, par exemple dans le but de r\xE9duire le trafic r\xE9seau.</p>',par:{msValidity:'un entier correspondant \xE0 la dur\xE9e de validit\xE9 attribu\xE9e aux les param\xE8tres charg\xE9s, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Sensor']['loadAttribute']={syn:'Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.',lib:'sensor.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un cha\xEEne vide.'};
+doc['Sensor']['loadCalibrationPoints']={syn:'R\xE9cup\xE8re les points de correction de mesure pr\xE9c\xE9demment enregistr\xE9s \xE0 l\x27aide de la m\xE9thode <tt>calibrateFromPoints</tt>.',lib:'sensor.loadCalibrationPoints()',pro:'def loadCalibrationPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>R\xE9cup\xE8re les points de correction de mesure pr\xE9c\xE9demment enregistr\xE9s \xE0 l\x27aide de la m\xE9thode <tt>calibrateFromPoints</tt>.</p>',par:{rawValues:'tableau de nombres flottants, qui sera rempli par la fonction avec les valeurs brutes des points de correction.',refValues:'tableau de nombres flottants, qui sera rempli par la fonction avec les valeurs d\xE9sir\xE9es des points de correction.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Sensor']['muteValueCallbacks']={syn:'D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'sensor.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Vous pouvez utiliser cette fonction pour \xE9conomiser la bande passante et le CPU sur les machines de faible puissance, ou pour \xE9viter le d\xE9clanchement de callbacks HTTP. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Sensor']['nextSensor']={syn:'Continue l\x27\xE9num\xE9ration des senseurs commenc\xE9e \xE0 l\x27aide de <tt>yFirstSensor()</tt>.',lib:'sensor.nextSensor()',pro:'def nextSensor()',cmt:'<p>Continue l\x27\xE9num\xE9ration des senseurs commenc\xE9e \xE0 l\x27aide de <tt>yFirstSensor()</tt>.</p>',ret:'un pointeur sur un objet <tt>YSensor</tt> accessible en ligne, ou <tt>null</tt> lorsque l\x27\xE9num\xE9ration est termin\xE9e.'};
+doc['Sensor']['registerTimedReportCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque notification p\xE9riodique.',lib:'sensor.registerTimedReportCallback()',pro:'def registerTimedReportCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque notification p\xE9riodique. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callbacks peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callbacks ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et un objet YMeasure d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['Sensor']['registerValueCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e.',lib:'sensor.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callback peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callback ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et la cha\xEEne de caract\xE8re d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['Sensor']['set_highestValue']={syn:'Modifie la m\xE9moire de valeur maximale observ\xE9e.',lib:'sensor.set_highestValue()',pro:'def set_highestValue(<span id=pn>newval</span>)',cmt:'<p>Modifie la m\xE9moire de valeur maximale observ\xE9e.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la m\xE9moire de valeur maximale observ\xE9e'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Sensor']['set_logFrequency']={syn:'Modifie la fr\xE9quence d\x27enregistrement des mesures dans le datalogger.',lib:'sensor.set_logFrequency()',pro:'def set_logFrequency(<span id=pn>newval</span>)',cmt:'<p>Modifie la fr\xE9quence d\x27enregistrement des mesures dans le datalogger. La fr\xE9quence peut \xEAtre sp\xE9cifi\xE9e en mesures par secondes, en mesures par minutes (par exemple \x2215/m\x22) ou en mesures par heure (par exemple \x224/h\x22). Pour d\xE9sactiver l\x27enregistrement des mesures de cette fonction, utilisez la valeur \x22OFF\x22.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence d\x27enregistrement des mesures dans le datalogger'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Sensor']['set_logicalName']={syn:'Modifie le nom logique du senseur.',lib:'sensor.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Modifie le nom logique du senseur. Vous pouvez utiliser <tt>yCheckLogicalName()</tt> pour v\xE9rifier si votre param\xE8tre est valide. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du senseur.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27appel se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Sensor']['set_lowestValue']={syn:'Modifie la m\xE9moire de valeur minimale observ\xE9e.',lib:'sensor.set_lowestValue()',pro:'def set_lowestValue(<span id=pn>newval</span>)',cmt:'<p>Modifie la m\xE9moire de valeur minimale observ\xE9e.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la m\xE9moire de valeur minimale observ\xE9e'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Sensor']['set_reportFrequency']={syn:'Modifie la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es.',lib:'sensor.set_reportFrequency()',pro:'def set_reportFrequency(<span id=pn>newval</span>)',cmt:'<p>Modifie la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es. La fr\xE9quence peut \xEAtre sp\xE9cifi\xE9e en mesures par secondes, en mesures par minutes (par exemple \x2215/m\x22) ou en mesures par heure (par exemple \x224/h\x22). Pour d\xE9sactiver les notifications p\xE9riodiques pour cette fonction, utilisez la valeur \x22OFF\x22.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Sensor']['set_resolution']={syn:'Modifie la r\xE9solution des valeurs physique mesur\xE9es.',lib:'sensor.set_resolution()',pro:'def set_resolution(<span id=pn>newval</span>)',cmt:'<p>Modifie la r\xE9solution des valeurs physique mesur\xE9es. La r\xE9solution correspond \xE0 la pr\xE9cision de l\x27affichage des mesures. Elle ne change pas la pr\xE9cision de la mesure elle-m\xEAme.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la r\xE9solution des valeurs physique mesur\xE9es'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Sensor']['set_userData']={syn:'Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>.',lib:'sensor.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',par:{data:'objet quelconque \xE0 m\xE9moriser'}};
+doc['Sensor']['startDataLogger']={syn:'D\xE9marre l\x27enregistreur de donn\xE9es du module.',lib:'sensor.startDataLogger()',pro:'def startDataLogger()',cmt:'<p>D\xE9marre l\x27enregistreur de donn\xE9es du module. Attention, l\x27enregistreur ne sauvera les mesures de ce capteur que si la fr\xE9quence d\x27enregistrement (logFrequency) n\x27est pas sur \x22OFF\x22.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.'};
+doc['Sensor']['stopDataLogger']={syn:'Arr\xEAte l\x27enregistreur de donn\xE9es du module.',lib:'sensor.stopDataLogger()',pro:'def stopDataLogger()',cmt:'<p>Arr\xEAte l\x27enregistreur de donn\xE9es du module.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.'};
+doc['Sensor']['unmuteValueCallbacks']={syn:'R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'sensor.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Cette fonction annule un pr\xE9c\xE9dent appel \xE0 <tt>muteValueCallbacks()</tt>. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+//--- (end of generated code: Sensor)
+//--- (generated code: Accelerometer)
+doc['Accelerometer']={'':{syn:'Interface de la fonction Accelerometer',inc:'from yocto_accelerometer import *',cmt:'<p>La classe YSensor est la classe parente de tous les senseurs Yoctopuce. Elle permet de lire la valeur courante et l\x27unit\xE9 de n\x27importe quel capteur, de lire les valeurs min/max, de configurer la fr\xE9quence d\x27enregistrement autonome des donn\xE9es et de r\xE9cup\xE9rer les mesures enregistr\xE9es. Elle permet aussi d\x27enregistrer un callback appel\xE9 lorsque la valeur mesur\xE9e change ou \xE0 intervalle pr\xE9d\xE9fini. L\x27utilisation de cette classe plut\xF4t qu\x27une de ces sous-classes permet de cr\xE9er des application g\xE9n\xE9riques, compatibles m\xEAme avec les capteurs Yoctopuce futurs. Note: la classe YAnButton est le seul type d\x27entr\xE9e analogique qui n\x27h\xE9rite pas de YSensor.</p>'}};
+doc['Accelerometer']['FindAccelerometer']={syn:'Permet de retrouver un acc\xE9l\xE9rom\xE8tre d\x27apr\xE8s un identifiant donn\xE9.',lib:'YAccelerometer.FindAccelerometer()',pro:'def FindAccelerometer(<span id=pn>func</span>)',cmt:'<p>Permet de retrouver un acc\xE9l\xE9rom\xE8tre d\x27apr\xE8s un identifiant donn\xE9. L\x27identifiant peut \xEAtre sp\xE9cifi\xE9 sous plusieurs formes:<br> <ul> <li>NomLogiqueFonction</li> <li>NoSerieModule.IdentifiantFonction</li> <li>NoSerieModule.NomLogiqueFonction</li> <li>NomLogiqueModule.IdentifiantMat\xE9riel</li> <li>NomLogiqueModule.NomLogiqueFonction</li> </ul></p><p> Cette fonction n\x27exige pas que l\x27acc\xE9l\xE9rom\xE8tre soit en ligne au moment ou elle est appel\xE9e, l\x27objet retourn\xE9 sera n\xE9anmoins valide. Utiliser la m\xE9thode <tt>YAccelerometer.isOnline()</tt> pour tester si l\x27acc\xE9l\xE9rom\xE8tre est utilisable \xE0 un moment donn\xE9. En cas d\x27ambigu\xEFt\xE9 lorsqu\x27on fait une recherche par nom logique, aucune erreur ne sera notifi\xE9e: la premi\xE8re instance trouv\xE9e sera renvoy\xE9e. La recherche se fait d\x27abord par nom mat\xE9riel, puis par nom logique.</p>',par:{func:'une cha\xEEne de caract\xE8res qui r\xE9f\xE9rence l\x27acc\xE9l\xE9rom\xE8tre sans ambigu\xEFt\xE9'},ret:'un objet de classe <tt>YAccelerometer</tt> qui permet ensuite de contr\xF4ler l\x27acc\xE9l\xE9rom\xE8tre.'};
+doc['Accelerometer']['FirstAccelerometer']={syn:'Commence l\x27\xE9num\xE9ration des acc\xE9l\xE9rom\xE8tres accessibles par la librairie.',lib:'YAccelerometer.FirstAccelerometer()',pro:'def FirstAccelerometer()',cmt:'<p>Commence l\x27\xE9num\xE9ration des acc\xE9l\xE9rom\xE8tres accessibles par la librairie. Utiliser la fonction <tt>YAccelerometer.nextAccelerometer()</tt> pour it\xE9rer sur les autres acc\xE9l\xE9rom\xE8tres.</p>',ret:'un pointeur sur un objet <tt>YAccelerometer</tt>, correspondant au premier acc\xE9l\xE9rom\xE8tre accessible en ligne, ou <tt>null</tt> si il n\x27y a pas de acc\xE9l\xE9rom\xE8tres disponibles.'};
+doc['Accelerometer']['calibrateFromPoints']={syn:'Enregistre des points de correction de mesure, typiquement pour compenser l\x27effet d\x27un bo\xEEtier sur les mesures rendues par le capteur.',lib:'accelerometer.calibrateFromPoints()',pro:'def calibrateFromPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Enregistre des points de correction de mesure, typiquement pour compenser l\x27effet d\x27un bo\xEEtier sur les mesures rendues par le capteur. Il est possible d\x27enregistrer jusqu\x27\xE0 cinq points de correction. Les points de correction doivent \xEAtre fournis en ordre croissant, et dans la plage valide du capteur. Le module effectue automatiquement une interpolation lin\xE9aire de l\x27erreur entre les points sp\xE9cifi\xE9s. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p><p> Pour plus de plus amples possibilit\xE9s d\x27appliquer une surcalibration aux capteurs, veuillez contacter support@yoctopuce.com.</p>',par:{rawValues:'tableau de nombres flottants, correspondant aux valeurs brutes rendues par le capteur pour les points de correction.',refValues:'tableau de nombres flottants, correspondant aux valeurs corrig\xE9es d\xE9sir\xE9es pour les points de correction.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Accelerometer']['clearCache']={syn:'Invalide le cache.',lib:'accelerometer.clearCache()',pro:'def clearCache()',cmt:'<p>Invalide le cache. Invalide le cache des valeurs courantes de l\x27acc\xE9l\xE9rom\xE8tre. Force le prochain appel \xE0 une m\xE9thode get_xxx() ou loadxxx() pour charger les les donn\xE9es depuis le module.</p>'};
+doc['Accelerometer']['describe']={syn:'Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance de l\x27acc\xE9l\xE9rom\xE8tre au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'accelerometer.describe()',pro:'def describe()',cmt:'<p>Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance de l\x27acc\xE9l\xE9rom\xE8tre au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. Plus pr\xE9cis\xE9ment, <tt>TYPE</tt> correspond au type de fonction, <tt>NAME</tt> correspond au nom utils\xE9 lors du premier acc\xE8s a la fonction, <tt>SERIAL</tt> correspond au num\xE9ro de s\xE9rie du module si le module est connect\xE9, ou <tt>\x22unresolved\x22</tt> sinon, et <tt>FUNCTIONID</tt> correspond \xE0 l\x27identifiant mat\xE9riel de la fonction si le module est connect\xE9. Par exemple, La methode va retourner <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> si le module est d\xE9j\xE0 connect\xE9 ou <tt>Relay(BadCustomeName.relay1)=unresolved</tt> si le module n\x27est pas d\xE9j\xE0 connect\xE9. Cette methode ne declenche aucune transaction USB ou TCP et peut donc \xEAtre utilis\xE9 dans un debuggeur.</p>',ret:'une cha\xEEne de caract\xE8res d\xE9crivant l\x27acc\xE9l\xE9rom\xE8tre (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['Accelerometer']['get_advertisedValue']={syn:'Retourne la valeur courante de l\x27acc\xE9l\xE9rom\xE8tre (pas plus de 6 caract\xE8res).',lib:'accelerometer.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Retourne la valeur courante de l\x27acc\xE9l\xE9rom\xE8tre (pas plus de 6 caract\xE8res).</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur courante de l\x27acc\xE9l\xE9rom\xE8tre (pas plus de 6 caract\xE8res).',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['Accelerometer']['get_bandwidth']={syn:'Retourne la fr\xE9quence de rafra\xEEchissement de la mesure, en Hz (Yocto-3D-V2 seulement).',lib:'accelerometer.get_bandwidth()',pro:'def get_bandwidth()',cmt:'<p>Retourne la fr\xE9quence de rafra\xEEchissement de la mesure, en Hz (Yocto-3D-V2 seulement).</p>',ret:'un entier repr&eacute;sentant la fr\xE9quence de rafra\xEEchissement de la mesure, en Hz (Yocto-3D-V2 seulement)',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_BANDWIDTH_INVALID</tt>.'};
+doc['Accelerometer']['get_currentRawValue']={syn:'Retourne la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en g, sous forme de nombre \xE0 virgule.',lib:'accelerometer.get_currentRawValue()',pro:'def get_currentRawValue()',cmt:'<p>Retourne la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en g, sous forme de nombre \xE0 virgule.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en g, sous forme de nombre \xE0 virgule',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_CURRENTRAWVALUE_INVALID</tt>.'};
+doc['Accelerometer']['get_currentValue']={syn:'Retourne la valeur actuelle de l\x27acc\xE9l\xE9ration, en g, sous forme de nombre \xE0 virgule.',lib:'accelerometer.get_currentValue()',pro:'def get_currentValue()',cmt:'<p>Retourne la valeur actuelle de l\x27acc\xE9l\xE9ration, en g, sous forme de nombre \xE0 virgule.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur actuelle de l\x27acc\xE9l\xE9ration, en g, sous forme de nombre \xE0 virgule',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_CURRENTVALUE_INVALID</tt>.'};
+doc['Accelerometer']['get_errorMessage']={syn:'Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de l\x27acc\xE9l\xE9rom\xE8tre.',lib:'accelerometer.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de l\x27acc\xE9l\xE9rom\xE8tre. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'une cha\xEEne de caract\xE8res correspondant au message de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation de l\x27acc\xE9l\xE9rom\xE8tre.'};
+doc['Accelerometer']['get_errorType']={syn:'Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de l\x27acc\xE9l\xE9rom\xE8tre.',lib:'accelerometer.get_errorType()',pro:'def get_errorType()',cmt:'<p>Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de l\x27acc\xE9l\xE9rom\xE8tre. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'un nombre correspondant au code de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation de l\x27acc\xE9l\xE9rom\xE8tre.'};
+doc['Accelerometer']['get_friendlyName']={syn:'Retourne un identifiant global de l\x27acc\xE9l\xE9rom\xE8tre au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>.',lib:'accelerometer.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Retourne un identifiant global de l\x27acc\xE9l\xE9rom\xE8tre au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>. Le cha\xEEne retourn\xE9e utilise soit les noms logiques du module et de l\x27acc\xE9l\xE9rom\xE8tre si ils sont d\xE9finis, soit respectivement le num\xE9ro de s\xE9rie du module et l\x27identifant mat\xE9riel de l\x27acc\xE9l\xE9rom\xE8tre (par exemple: <tt>MyCustomName.relay1</tt>)</p>',ret:'une cha\xEEne de caract\xE8res identifiant l\x27acc\xE9l\xE9rom\xE8tre en utilisant les noms logiques (ex: <tt>MyCustomName.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['Accelerometer']['get_functionDescriptor']={syn:'Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction.',lib:'accelerometer.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction. Cet identifiant peut \xEAtre utilis\xE9 pour tester si deux instance de <tt>YFunction</tt> r\xE9f\xE9rencent physiquement la m\xEAme fonction sur le m\xEAme module.</p>',ret:'un identifiant de type <tt>YFUN_DESCR</tt>.',ext:'Si la fonction n\x27a jamais \xE9t\xE9 contact\xE9e, la valeur retourn\xE9e sera <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>'};
+doc['Accelerometer']['get_functionId']={syn:'Retourne l\x27identifiant mat\xE9riel de l\x27acc\xE9l\xE9rom\xE8tre, sans r\xE9f\xE9rence au module.',lib:'accelerometer.get_functionId()',pro:'def get_functionId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel de l\x27acc\xE9l\xE9rom\xE8tre, sans r\xE9f\xE9rence au module. Par example <tt>relay1</tt>.</p>',ret:'une cha\xEEne de caract\xE8res identifiant l\x27acc\xE9l\xE9rom\xE8tre (ex: <tt>relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['Accelerometer']['get_hardwareId']={syn:'Retourne l\x27identifiant mat\xE9riel unique de l\x27acc\xE9l\xE9rom\xE8tre au format <tt>SERIAL.FUNCTIONID</tt>.',lib:'accelerometer.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel unique de l\x27acc\xE9l\xE9rom\xE8tre au format <tt>SERIAL.FUNCTIONID</tt>. L\x27identifiant unique est compos\xE9 du num\xE9ro de s\xE9rie du module et de l\x27identifiant mat\xE9riel de l\x27acc\xE9l\xE9rom\xE8tre (par example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'une cha\xEEne de caract\xE8res identifiant l\x27acc\xE9l\xE9rom\xE8tre (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['Accelerometer']['get_highestValue']={syn:'Retourne la valeur maximale observ\xE9e pour l\x27acc\xE9l\xE9ration depuis le d\xE9marrage du module.',lib:'accelerometer.get_highestValue()',pro:'def get_highestValue()',cmt:'<p>Retourne la valeur maximale observ\xE9e pour l\x27acc\xE9l\xE9ration depuis le d\xE9marrage du module.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur maximale observ\xE9e pour l\x27acc\xE9l\xE9ration depuis le d\xE9marrage du module',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_HIGHESTVALUE_INVALID</tt>.'};
+doc['Accelerometer']['get_logFrequency']={syn:'Retourne la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es.',lib:'accelerometer.get_logFrequency()',pro:'def get_logFrequency()',cmt:'<p>Retourne la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_LOGFREQUENCY_INVALID</tt>.'};
+doc['Accelerometer']['get_logicalName']={syn:'Retourne le nom logique de l\x27acc\xE9l\xE9rom\xE8tre.',lib:'accelerometer.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Retourne le nom logique de l\x27acc\xE9l\xE9rom\xE8tre.</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique de l\x27acc\xE9l\xE9rom\xE8tre.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['Accelerometer']['get_lowestValue']={syn:'Retourne la valeur minimale observ\xE9e pour l\x27acc\xE9l\xE9ration depuis le d\xE9marrage du module.',lib:'accelerometer.get_lowestValue()',pro:'def get_lowestValue()',cmt:'<p>Retourne la valeur minimale observ\xE9e pour l\x27acc\xE9l\xE9ration depuis le d\xE9marrage du module.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur minimale observ\xE9e pour l\x27acc\xE9l\xE9ration depuis le d\xE9marrage du module',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_LOWESTVALUE_INVALID</tt>.'};
+doc['Accelerometer']['get_module']={syn:'Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction.',lib:'accelerometer.get_module()',pro:'def get_module()',cmt:'<p>Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction. Si la fonction ne peut \xEAtre trouv\xE9e sur aucun module, l\x27instance de <tt>YModule</tt> retourn\xE9e ne sera pas joignable.</p>',ret:'une instance de <tt>YModule</tt>'};
+doc['Accelerometer']['get_recordedData']={syn:'Retourne un objet DataSet repr\xE9sentant des mesures de ce capteur pr\xE9c\xE9demment enregistr\xE9es \xE0 l\x27aide du DataLogger, pour l\x27intervalle de temps sp\xE9cifi\xE9.',lib:'accelerometer.get_recordedData()',pro:'def get_recordedData(<span id=pn>startTime</span>, <span id=pn>endTime</span>)',cmt:'<p>Retourne un objet DataSet repr\xE9sentant des mesures de ce capteur pr\xE9c\xE9demment enregistr\xE9es \xE0 l\x27aide du DataLogger, pour l\x27intervalle de temps sp\xE9cifi\xE9. Veuillez vous r\xE9f\xE9rer \xE0 la documentation de la classe DataSet pour plus plus d\x27informations sur la mani\xE8re d\x27obtenir un aper\xE7u des mesures pour la p\xE9riode, et comment charger progressivement une grande quantit\xE9 de mesures depuis le dataLogger.</p><p> Cette m\xE9thode ne fonctionne que si le module utilise un firmware r\xE9cent, car les objets DataSet ne sont pas support\xE9s par les firmwares ant\xE9rieurs \xE0 la r\xE9vision 13000.</p>',par:{startTime:'le d\xE9but de l\x27intervalle de mesure d\xE9sir\xE9, c\x27est \xE0 dire en nombre de secondes depuis le 1er janvier 1970 UTC. La valeur 0 peut \xEAtre utilis\xE9e pour ne poser aucune limite sur le d\xE9but des mesures.',endTime:'la find de l\x27intercalle de mesure d\xE9sir\xE9, c\x27est \xE0 dire en nombre de secondes depuis le 1er janvier 1970 UTC. La valeur 0 peut \xEAtre utilis\xE9e pour ne poser aucune limite de fin.'},ret:'une instance de YDataSet, dont les m\xE9thodes permettent de d\x27acc\xE9der aux donn\xE9es historiques souhait\xE9es.'};
+doc['Accelerometer']['get_reportFrequency']={syn:'Retourne la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction.',lib:'accelerometer.get_reportFrequency()',pro:'def get_reportFrequency()',cmt:'<p>Retourne la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_REPORTFREQUENCY_INVALID</tt>.'};
+doc['Accelerometer']['get_resolution']={syn:'Retourne la r\xE9solution des valeurs mesur\xE9es.',lib:'accelerometer.get_resolution()',pro:'def get_resolution()',cmt:'<p>Retourne la r\xE9solution des valeurs mesur\xE9es. La r\xE9solution correspond \xE0 la pr\xE9cision num\xE9rique de la repr\xE9sentation des mesures. Elle n\x27est pas forc\xE9ment identique \xE0 la pr\xE9cision r\xE9elle du capteur.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la r\xE9solution des valeurs mesur\xE9es',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_RESOLUTION_INVALID</tt>.'};
+doc['Accelerometer']['get_sensorState']={syn:'Retourne le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment.',lib:'accelerometer.get_sensorState()',pro:'def get_sensorState()',cmt:'<p>Retourne le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment.</p>',ret:'un entier repr&eacute;sentant le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_SENSORSTATE_INVALID</tt>.'};
+doc['Accelerometer']['get_unit']={syn:'Retourne l\x27unit\xE9 dans laquelle l\x27acc\xE9l\xE9ration est exprim\xE9e.',lib:'accelerometer.get_unit()',pro:'def get_unit()',cmt:'<p>Retourne l\x27unit\xE9 dans laquelle l\x27acc\xE9l\xE9ration est exprim\xE9e.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant l\x27unit\xE9 dans laquelle l\x27acc\xE9l\xE9ration est exprim\xE9e',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_UNIT_INVALID</tt>.'};
+doc['Accelerometer']['get_userData']={syn:'Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>.',lib:'accelerometer.get_userData()',pro:'def get_userData()',cmt:'<p>Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',ret:'l\x27objet stock\xE9 pr\xE9c\xE9demment par l\x27appelant.'};
+doc['Accelerometer']['get_xValue']={syn:'Retourne la composante X de l\x27acc\xE9l\xE9ration, sous forme de nombre \xE0 virgule.',lib:'accelerometer.get_xValue()',pro:'def get_xValue()',cmt:'<p>Retourne la composante X de l\x27acc\xE9l\xE9ration, sous forme de nombre \xE0 virgule.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la composante X de l\x27acc\xE9l\xE9ration, sous forme de nombre \xE0 virgule',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_XVALUE_INVALID</tt>.'};
+doc['Accelerometer']['get_yValue']={syn:'Retourne la composante Y de l\x27acc\xE9l\xE9ration, sous forme de nombre \xE0 virgule.',lib:'accelerometer.get_yValue()',pro:'def get_yValue()',cmt:'<p>Retourne la composante Y de l\x27acc\xE9l\xE9ration, sous forme de nombre \xE0 virgule.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la composante Y de l\x27acc\xE9l\xE9ration, sous forme de nombre \xE0 virgule',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_YVALUE_INVALID</tt>.'};
+doc['Accelerometer']['get_zValue']={syn:'Retourne la composante Z de l\x27acc\xE9l\xE9ration, sous forme de nombre \xE0 virgule.',lib:'accelerometer.get_zValue()',pro:'def get_zValue()',cmt:'<p>Retourne la composante Z de l\x27acc\xE9l\xE9ration, sous forme de nombre \xE0 virgule.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la composante Z de l\x27acc\xE9l\xE9ration, sous forme de nombre \xE0 virgule',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_ZVALUE_INVALID</tt>.'};
+doc['Accelerometer']['isOnline']={syn:'V\xE9rifie si le module h\xE9bergeant l\x27acc\xE9l\xE9rom\xE8tre est joignable, sans d\xE9clencher d\x27erreur.',lib:'accelerometer.isOnline()',pro:'def isOnline()',cmt:'<p>V\xE9rifie si le module h\xE9bergeant l\x27acc\xE9l\xE9rom\xE8tre est joignable, sans d\xE9clencher d\x27erreur. Si les valeurs des attributs en cache de l\x27acc\xE9l\xE9rom\xE8tre sont valides au moment de l\x27appel, le module est consid\xE9r\xE9 joignable. Cette fonction ne cause en aucun cas d\x27exception, quelle que soit l\x27erreur qui pourrait se produire lors de la v\xE9rification de joignabilit\xE9.</p>',ret:'<tt>true</tt> si l\x27acc\xE9l\xE9rom\xE8tre est joignable, <tt>false</tt> sinon'};
+doc['Accelerometer']['load']={syn:'Met en cache les valeurs courantes de l\x27acc\xE9l\xE9rom\xE8tre, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e.',lib:'accelerometer.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Met en cache les valeurs courantes de l\x27acc\xE9l\xE9rom\xE8tre, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e. Par d\xE9faut, lorsqu\x27on acc\xE8de \xE0 un module, tous les attributs des fonctions du module sont automatiquement mises en cache pour la dur\xE9e standard (5 ms). Cette m\xE9thode peut \xEAtre utilis\xE9e pour marquer occasionellement les donn\xE9es cach\xE9es comme valides pour une plus longue p\xE9riode, par exemple dans le but de r\xE9duire le trafic r\xE9seau.</p>',par:{msValidity:'un entier correspondant \xE0 la dur\xE9e de validit\xE9 attribu\xE9e aux les param\xE8tres charg\xE9s, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Accelerometer']['loadAttribute']={syn:'Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.',lib:'accelerometer.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un cha\xEEne vide.'};
+doc['Accelerometer']['loadCalibrationPoints']={syn:'R\xE9cup\xE8re les points de correction de mesure pr\xE9c\xE9demment enregistr\xE9s \xE0 l\x27aide de la m\xE9thode <tt>calibrateFromPoints</tt>.',lib:'accelerometer.loadCalibrationPoints()',pro:'def loadCalibrationPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>R\xE9cup\xE8re les points de correction de mesure pr\xE9c\xE9demment enregistr\xE9s \xE0 l\x27aide de la m\xE9thode <tt>calibrateFromPoints</tt>.</p>',par:{rawValues:'tableau de nombres flottants, qui sera rempli par la fonction avec les valeurs brutes des points de correction.',refValues:'tableau de nombres flottants, qui sera rempli par la fonction avec les valeurs d\xE9sir\xE9es des points de correction.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Accelerometer']['muteValueCallbacks']={syn:'D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'accelerometer.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Vous pouvez utiliser cette fonction pour \xE9conomiser la bande passante et le CPU sur les machines de faible puissance, ou pour \xE9viter le d\xE9clanchement de callbacks HTTP. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Accelerometer']['nextAccelerometer']={syn:'Continue l\x27\xE9num\xE9ration des acc\xE9l\xE9rom\xE8tres commenc\xE9e \xE0 l\x27aide de <tt>yFirstAccelerometer()</tt>.',lib:'accelerometer.nextAccelerometer()',pro:'def nextAccelerometer()',cmt:'<p>Continue l\x27\xE9num\xE9ration des acc\xE9l\xE9rom\xE8tres commenc\xE9e \xE0 l\x27aide de <tt>yFirstAccelerometer()</tt>.</p>',ret:'un pointeur sur un objet <tt>YAccelerometer</tt> accessible en ligne, ou <tt>null</tt> lorsque l\x27\xE9num\xE9ration est termin\xE9e.'};
+doc['Accelerometer']['registerTimedReportCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque notification p\xE9riodique.',lib:'accelerometer.registerTimedReportCallback()',pro:'def registerTimedReportCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque notification p\xE9riodique. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callbacks peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callbacks ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et un objet YMeasure d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['Accelerometer']['registerValueCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e.',lib:'accelerometer.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callback peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callback ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et la cha\xEEne de caract\xE8re d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['Accelerometer']['set_bandwidth']={syn:'Modifie la fr\xE9quence de rafra\xEEchissement de la mesure, en Hz (Yocto-3D-V2 seulement).',lib:'accelerometer.set_bandwidth()',pro:'def set_bandwidth(<span id=pn>newval</span>)',cmt:'<p>Modifie la fr\xE9quence de rafra\xEEchissement de la mesure, en Hz (Yocto-3D-V2 seulement). Lorsque la fr\xE9quence est plus basse, un moyennage est effectu\xE9.</p>',par:{newval:'un entier repr&eacute;sentant la fr\xE9quence de rafra\xEEchissement de la mesure, en Hz (Yocto-3D-V2 seulement)'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Accelerometer']['set_highestValue']={syn:'Modifie la m\xE9moire de valeur maximale observ\xE9e.',lib:'accelerometer.set_highestValue()',pro:'def set_highestValue(<span id=pn>newval</span>)',cmt:'<p>Modifie la m\xE9moire de valeur maximale observ\xE9e.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la m\xE9moire de valeur maximale observ\xE9e'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Accelerometer']['set_logFrequency']={syn:'Modifie la fr\xE9quence d\x27enregistrement des mesures dans le datalogger.',lib:'accelerometer.set_logFrequency()',pro:'def set_logFrequency(<span id=pn>newval</span>)',cmt:'<p>Modifie la fr\xE9quence d\x27enregistrement des mesures dans le datalogger. La fr\xE9quence peut \xEAtre sp\xE9cifi\xE9e en mesures par secondes, en mesures par minutes (par exemple \x2215/m\x22) ou en mesures par heure (par exemple \x224/h\x22). Pour d\xE9sactiver l\x27enregistrement des mesures de cette fonction, utilisez la valeur \x22OFF\x22.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence d\x27enregistrement des mesures dans le datalogger'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Accelerometer']['set_logicalName']={syn:'Modifie le nom logique de l\x27acc\xE9l\xE9rom\xE8tre.',lib:'accelerometer.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Modifie le nom logique de l\x27acc\xE9l\xE9rom\xE8tre. Vous pouvez utiliser <tt>yCheckLogicalName()</tt> pour v\xE9rifier si votre param\xE8tre est valide. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique de l\x27acc\xE9l\xE9rom\xE8tre.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27appel se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Accelerometer']['set_lowestValue']={syn:'Modifie la m\xE9moire de valeur minimale observ\xE9e.',lib:'accelerometer.set_lowestValue()',pro:'def set_lowestValue(<span id=pn>newval</span>)',cmt:'<p>Modifie la m\xE9moire de valeur minimale observ\xE9e.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la m\xE9moire de valeur minimale observ\xE9e'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Accelerometer']['set_reportFrequency']={syn:'Modifie la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es.',lib:'accelerometer.set_reportFrequency()',pro:'def set_reportFrequency(<span id=pn>newval</span>)',cmt:'<p>Modifie la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es. La fr\xE9quence peut \xEAtre sp\xE9cifi\xE9e en mesures par secondes, en mesures par minutes (par exemple \x2215/m\x22) ou en mesures par heure (par exemple \x224/h\x22). Pour d\xE9sactiver les notifications p\xE9riodiques pour cette fonction, utilisez la valeur \x22OFF\x22.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Accelerometer']['set_resolution']={syn:'Modifie la r\xE9solution des valeurs physique mesur\xE9es.',lib:'accelerometer.set_resolution()',pro:'def set_resolution(<span id=pn>newval</span>)',cmt:'<p>Modifie la r\xE9solution des valeurs physique mesur\xE9es. La r\xE9solution correspond \xE0 la pr\xE9cision de l\x27affichage des mesures. Elle ne change pas la pr\xE9cision de la mesure elle-m\xEAme.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la r\xE9solution des valeurs physique mesur\xE9es'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Accelerometer']['set_userData']={syn:'Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>.',lib:'accelerometer.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',par:{data:'objet quelconque \xE0 m\xE9moriser'}};
+doc['Accelerometer']['startDataLogger']={syn:'D\xE9marre l\x27enregistreur de donn\xE9es du module.',lib:'accelerometer.startDataLogger()',pro:'def startDataLogger()',cmt:'<p>D\xE9marre l\x27enregistreur de donn\xE9es du module. Attention, l\x27enregistreur ne sauvera les mesures de ce capteur que si la fr\xE9quence d\x27enregistrement (logFrequency) n\x27est pas sur \x22OFF\x22.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.'};
+doc['Accelerometer']['stopDataLogger']={syn:'Arr\xEAte l\x27enregistreur de donn\xE9es du module.',lib:'accelerometer.stopDataLogger()',pro:'def stopDataLogger()',cmt:'<p>Arr\xEAte l\x27enregistreur de donn\xE9es du module.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.'};
+doc['Accelerometer']['unmuteValueCallbacks']={syn:'R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'accelerometer.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Cette fonction annule un pr\xE9c\xE9dent appel \xE0 <tt>muteValueCallbacks()</tt>. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+//--- (end of generated code: Accelerometer)
+//--- (generated code: Magnetometer)
+doc['Magnetometer']={'':{syn:'Interface de la fonction Magnetometer',inc:'from yocto_magnetometer import *',cmt:'<p>La classe YSensor est la classe parente de tous les senseurs Yoctopuce. Elle permet de lire la valeur courante et l\x27unit\xE9 de n\x27importe quel capteur, de lire les valeurs min/max, de configurer la fr\xE9quence d\x27enregistrement autonome des donn\xE9es et de r\xE9cup\xE9rer les mesures enregistr\xE9es. Elle permet aussi d\x27enregistrer un callback appel\xE9 lorsque la valeur mesur\xE9e change ou \xE0 intervalle pr\xE9d\xE9fini. L\x27utilisation de cette classe plut\xF4t qu\x27une de ces sous-classes permet de cr\xE9er des application g\xE9n\xE9riques, compatibles m\xEAme avec les capteurs Yoctopuce futurs. Note: la classe YAnButton est le seul type d\x27entr\xE9e analogique qui n\x27h\xE9rite pas de YSensor.</p>'}};
+doc['Magnetometer']['FindMagnetometer']={syn:'Permet de retrouver un magn\xE9tom\xE8tre d\x27apr\xE8s un identifiant donn\xE9.',lib:'YMagnetometer.FindMagnetometer()',pro:'def FindMagnetometer(<span id=pn>func</span>)',cmt:'<p>Permet de retrouver un magn\xE9tom\xE8tre d\x27apr\xE8s un identifiant donn\xE9. L\x27identifiant peut \xEAtre sp\xE9cifi\xE9 sous plusieurs formes:<br> <ul> <li>NomLogiqueFonction</li> <li>NoSerieModule.IdentifiantFonction</li> <li>NoSerieModule.NomLogiqueFonction</li> <li>NomLogiqueModule.IdentifiantMat\xE9riel</li> <li>NomLogiqueModule.NomLogiqueFonction</li> </ul></p><p> Cette fonction n\x27exige pas que le magn\xE9tom\xE8tre soit en ligne au moment ou elle est appel\xE9e, l\x27objet retourn\xE9 sera n\xE9anmoins valide. Utiliser la m\xE9thode <tt>YMagnetometer.isOnline()</tt> pour tester si le magn\xE9tom\xE8tre est utilisable \xE0 un moment donn\xE9. En cas d\x27ambigu\xEFt\xE9 lorsqu\x27on fait une recherche par nom logique, aucune erreur ne sera notifi\xE9e: la premi\xE8re instance trouv\xE9e sera renvoy\xE9e. La recherche se fait d\x27abord par nom mat\xE9riel, puis par nom logique.</p>',par:{func:'une cha\xEEne de caract\xE8res qui r\xE9f\xE9rence le magn\xE9tom\xE8tre sans ambigu\xEFt\xE9'},ret:'un objet de classe <tt>YMagnetometer</tt> qui permet ensuite de contr\xF4ler le magn\xE9tom\xE8tre.'};
+doc['Magnetometer']['FirstMagnetometer']={syn:'Commence l\x27\xE9num\xE9ration des magn\xE9tom\xE8tres accessibles par la librairie.',lib:'YMagnetometer.FirstMagnetometer()',pro:'def FirstMagnetometer()',cmt:'<p>Commence l\x27\xE9num\xE9ration des magn\xE9tom\xE8tres accessibles par la librairie. Utiliser la fonction <tt>YMagnetometer.nextMagnetometer()</tt> pour it\xE9rer sur les autres magn\xE9tom\xE8tres.</p>',ret:'un pointeur sur un objet <tt>YMagnetometer</tt>, correspondant au premier magn\xE9tom\xE8tre accessible en ligne, ou <tt>null</tt> si il n\x27y a pas de magn\xE9tom\xE8tres disponibles.'};
+doc['Magnetometer']['calibrateFromPoints']={syn:'Enregistre des points de correction de mesure, typiquement pour compenser l\x27effet d\x27un bo\xEEtier sur les mesures rendues par le capteur.',lib:'magnetometer.calibrateFromPoints()',pro:'def calibrateFromPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Enregistre des points de correction de mesure, typiquement pour compenser l\x27effet d\x27un bo\xEEtier sur les mesures rendues par le capteur. Il est possible d\x27enregistrer jusqu\x27\xE0 cinq points de correction. Les points de correction doivent \xEAtre fournis en ordre croissant, et dans la plage valide du capteur. Le module effectue automatiquement une interpolation lin\xE9aire de l\x27erreur entre les points sp\xE9cifi\xE9s. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p><p> Pour plus de plus amples possibilit\xE9s d\x27appliquer une surcalibration aux capteurs, veuillez contacter support@yoctopuce.com.</p>',par:{rawValues:'tableau de nombres flottants, correspondant aux valeurs brutes rendues par le capteur pour les points de correction.',refValues:'tableau de nombres flottants, correspondant aux valeurs corrig\xE9es d\xE9sir\xE9es pour les points de correction.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Magnetometer']['clearCache']={syn:'Invalide le cache.',lib:'magnetometer.clearCache()',pro:'def clearCache()',cmt:'<p>Invalide le cache. Invalide le cache des valeurs courantes du magn\xE9tom\xE8tre. Force le prochain appel \xE0 une m\xE9thode get_xxx() ou loadxxx() pour charger les les donn\xE9es depuis le module.</p>'};
+doc['Magnetometer']['describe']={syn:'Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du magn\xE9tom\xE8tre au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'magnetometer.describe()',pro:'def describe()',cmt:'<p>Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du magn\xE9tom\xE8tre au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. Plus pr\xE9cis\xE9ment, <tt>TYPE</tt> correspond au type de fonction, <tt>NAME</tt> correspond au nom utils\xE9 lors du premier acc\xE8s a la fonction, <tt>SERIAL</tt> correspond au num\xE9ro de s\xE9rie du module si le module est connect\xE9, ou <tt>\x22unresolved\x22</tt> sinon, et <tt>FUNCTIONID</tt> correspond \xE0 l\x27identifiant mat\xE9riel de la fonction si le module est connect\xE9. Par exemple, La methode va retourner <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> si le module est d\xE9j\xE0 connect\xE9 ou <tt>Relay(BadCustomeName.relay1)=unresolved</tt> si le module n\x27est pas d\xE9j\xE0 connect\xE9. Cette methode ne declenche aucune transaction USB ou TCP et peut donc \xEAtre utilis\xE9 dans un debuggeur.</p>',ret:'une cha\xEEne de caract\xE8res d\xE9crivant le magn\xE9tom\xE8tre (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['Magnetometer']['get_advertisedValue']={syn:'Retourne la valeur courante du magn\xE9tom\xE8tre (pas plus de 6 caract\xE8res).',lib:'magnetometer.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Retourne la valeur courante du magn\xE9tom\xE8tre (pas plus de 6 caract\xE8res).</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur courante du magn\xE9tom\xE8tre (pas plus de 6 caract\xE8res).',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['Magnetometer']['get_bandwidth']={syn:'Retourne la fr\xE9quence de rafra\xEEchissement de la mesure, en Hz (Yocto-3D-V2 seulement).',lib:'magnetometer.get_bandwidth()',pro:'def get_bandwidth()',cmt:'<p>Retourne la fr\xE9quence de rafra\xEEchissement de la mesure, en Hz (Yocto-3D-V2 seulement).</p>',ret:'un entier repr&eacute;sentant la fr\xE9quence de rafra\xEEchissement de la mesure, en Hz (Yocto-3D-V2 seulement)',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_BANDWIDTH_INVALID</tt>.'};
+doc['Magnetometer']['get_currentRawValue']={syn:'Retourne la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en mT, sous forme de nombre \xE0 virgule.',lib:'magnetometer.get_currentRawValue()',pro:'def get_currentRawValue()',cmt:'<p>Retourne la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en mT, sous forme de nombre \xE0 virgule.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en mT, sous forme de nombre \xE0 virgule',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_CURRENTRAWVALUE_INVALID</tt>.'};
+doc['Magnetometer']['get_currentValue']={syn:'Retourne la valeur actuelle du champ magn\xE9tique, en mT, sous forme de nombre \xE0 virgule.',lib:'magnetometer.get_currentValue()',pro:'def get_currentValue()',cmt:'<p>Retourne la valeur actuelle du champ magn\xE9tique, en mT, sous forme de nombre \xE0 virgule.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur actuelle du champ magn\xE9tique, en mT, sous forme de nombre \xE0 virgule',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_CURRENTVALUE_INVALID</tt>.'};
+doc['Magnetometer']['get_errorMessage']={syn:'Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du magn\xE9tom\xE8tre.',lib:'magnetometer.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du magn\xE9tom\xE8tre. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'une cha\xEEne de caract\xE8res correspondant au message de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du magn\xE9tom\xE8tre.'};
+doc['Magnetometer']['get_errorType']={syn:'Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du magn\xE9tom\xE8tre.',lib:'magnetometer.get_errorType()',pro:'def get_errorType()',cmt:'<p>Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du magn\xE9tom\xE8tre. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'un nombre correspondant au code de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du magn\xE9tom\xE8tre.'};
+doc['Magnetometer']['get_friendlyName']={syn:'Retourne un identifiant global du magn\xE9tom\xE8tre au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>.',lib:'magnetometer.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Retourne un identifiant global du magn\xE9tom\xE8tre au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>. Le cha\xEEne retourn\xE9e utilise soit les noms logiques du module et du magn\xE9tom\xE8tre si ils sont d\xE9finis, soit respectivement le num\xE9ro de s\xE9rie du module et l\x27identifant mat\xE9riel du magn\xE9tom\xE8tre (par exemple: <tt>MyCustomName.relay1</tt>)</p>',ret:'une cha\xEEne de caract\xE8res identifiant le magn\xE9tom\xE8tre en utilisant les noms logiques (ex: <tt>MyCustomName.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['Magnetometer']['get_functionDescriptor']={syn:'Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction.',lib:'magnetometer.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction. Cet identifiant peut \xEAtre utilis\xE9 pour tester si deux instance de <tt>YFunction</tt> r\xE9f\xE9rencent physiquement la m\xEAme fonction sur le m\xEAme module.</p>',ret:'un identifiant de type <tt>YFUN_DESCR</tt>.',ext:'Si la fonction n\x27a jamais \xE9t\xE9 contact\xE9e, la valeur retourn\xE9e sera <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>'};
+doc['Magnetometer']['get_functionId']={syn:'Retourne l\x27identifiant mat\xE9riel du magn\xE9tom\xE8tre, sans r\xE9f\xE9rence au module.',lib:'magnetometer.get_functionId()',pro:'def get_functionId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel du magn\xE9tom\xE8tre, sans r\xE9f\xE9rence au module. Par example <tt>relay1</tt>.</p>',ret:'une cha\xEEne de caract\xE8res identifiant le magn\xE9tom\xE8tre (ex: <tt>relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['Magnetometer']['get_hardwareId']={syn:'Retourne l\x27identifiant mat\xE9riel unique du magn\xE9tom\xE8tre au format <tt>SERIAL.FUNCTIONID</tt>.',lib:'magnetometer.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel unique du magn\xE9tom\xE8tre au format <tt>SERIAL.FUNCTIONID</tt>. L\x27identifiant unique est compos\xE9 du num\xE9ro de s\xE9rie du module et de l\x27identifiant mat\xE9riel du magn\xE9tom\xE8tre (par example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'une cha\xEEne de caract\xE8res identifiant le magn\xE9tom\xE8tre (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['Magnetometer']['get_highestValue']={syn:'Retourne la valeur maximale observ\xE9e pour le champ magn\xE9tique depuis le d\xE9marrage du module.',lib:'magnetometer.get_highestValue()',pro:'def get_highestValue()',cmt:'<p>Retourne la valeur maximale observ\xE9e pour le champ magn\xE9tique depuis le d\xE9marrage du module.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur maximale observ\xE9e pour le champ magn\xE9tique depuis le d\xE9marrage du module',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_HIGHESTVALUE_INVALID</tt>.'};
+doc['Magnetometer']['get_logFrequency']={syn:'Retourne la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es.',lib:'magnetometer.get_logFrequency()',pro:'def get_logFrequency()',cmt:'<p>Retourne la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_LOGFREQUENCY_INVALID</tt>.'};
+doc['Magnetometer']['get_logicalName']={syn:'Retourne le nom logique du magn\xE9tom\xE8tre.',lib:'magnetometer.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Retourne le nom logique du magn\xE9tom\xE8tre.</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du magn\xE9tom\xE8tre.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['Magnetometer']['get_lowestValue']={syn:'Retourne la valeur minimale observ\xE9e pour le champ magn\xE9tique depuis le d\xE9marrage du module.',lib:'magnetometer.get_lowestValue()',pro:'def get_lowestValue()',cmt:'<p>Retourne la valeur minimale observ\xE9e pour le champ magn\xE9tique depuis le d\xE9marrage du module.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur minimale observ\xE9e pour le champ magn\xE9tique depuis le d\xE9marrage du module',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_LOWESTVALUE_INVALID</tt>.'};
+doc['Magnetometer']['get_module']={syn:'Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction.',lib:'magnetometer.get_module()',pro:'def get_module()',cmt:'<p>Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction. Si la fonction ne peut \xEAtre trouv\xE9e sur aucun module, l\x27instance de <tt>YModule</tt> retourn\xE9e ne sera pas joignable.</p>',ret:'une instance de <tt>YModule</tt>'};
+doc['Magnetometer']['get_recordedData']={syn:'Retourne un objet DataSet repr\xE9sentant des mesures de ce capteur pr\xE9c\xE9demment enregistr\xE9es \xE0 l\x27aide du DataLogger, pour l\x27intervalle de temps sp\xE9cifi\xE9.',lib:'magnetometer.get_recordedData()',pro:'def get_recordedData(<span id=pn>startTime</span>, <span id=pn>endTime</span>)',cmt:'<p>Retourne un objet DataSet repr\xE9sentant des mesures de ce capteur pr\xE9c\xE9demment enregistr\xE9es \xE0 l\x27aide du DataLogger, pour l\x27intervalle de temps sp\xE9cifi\xE9. Veuillez vous r\xE9f\xE9rer \xE0 la documentation de la classe DataSet pour plus plus d\x27informations sur la mani\xE8re d\x27obtenir un aper\xE7u des mesures pour la p\xE9riode, et comment charger progressivement une grande quantit\xE9 de mesures depuis le dataLogger.</p><p> Cette m\xE9thode ne fonctionne que si le module utilise un firmware r\xE9cent, car les objets DataSet ne sont pas support\xE9s par les firmwares ant\xE9rieurs \xE0 la r\xE9vision 13000.</p>',par:{startTime:'le d\xE9but de l\x27intervalle de mesure d\xE9sir\xE9, c\x27est \xE0 dire en nombre de secondes depuis le 1er janvier 1970 UTC. La valeur 0 peut \xEAtre utilis\xE9e pour ne poser aucune limite sur le d\xE9but des mesures.',endTime:'la find de l\x27intercalle de mesure d\xE9sir\xE9, c\x27est \xE0 dire en nombre de secondes depuis le 1er janvier 1970 UTC. La valeur 0 peut \xEAtre utilis\xE9e pour ne poser aucune limite de fin.'},ret:'une instance de YDataSet, dont les m\xE9thodes permettent de d\x27acc\xE9der aux donn\xE9es historiques souhait\xE9es.'};
+doc['Magnetometer']['get_reportFrequency']={syn:'Retourne la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction.',lib:'magnetometer.get_reportFrequency()',pro:'def get_reportFrequency()',cmt:'<p>Retourne la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_REPORTFREQUENCY_INVALID</tt>.'};
+doc['Magnetometer']['get_resolution']={syn:'Retourne la r\xE9solution des valeurs mesur\xE9es.',lib:'magnetometer.get_resolution()',pro:'def get_resolution()',cmt:'<p>Retourne la r\xE9solution des valeurs mesur\xE9es. La r\xE9solution correspond \xE0 la pr\xE9cision num\xE9rique de la repr\xE9sentation des mesures. Elle n\x27est pas forc\xE9ment identique \xE0 la pr\xE9cision r\xE9elle du capteur.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la r\xE9solution des valeurs mesur\xE9es',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_RESOLUTION_INVALID</tt>.'};
+doc['Magnetometer']['get_sensorState']={syn:'Retourne le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment.',lib:'magnetometer.get_sensorState()',pro:'def get_sensorState()',cmt:'<p>Retourne le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment.</p>',ret:'un entier repr&eacute;sentant le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_SENSORSTATE_INVALID</tt>.'};
+doc['Magnetometer']['get_unit']={syn:'Retourne l\x27unit\xE9 dans laquelle le champ magn\xE9tique est exprim\xE9e.',lib:'magnetometer.get_unit()',pro:'def get_unit()',cmt:'<p>Retourne l\x27unit\xE9 dans laquelle le champ magn\xE9tique est exprim\xE9e.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant l\x27unit\xE9 dans laquelle le champ magn\xE9tique est exprim\xE9e',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_UNIT_INVALID</tt>.'};
+doc['Magnetometer']['get_userData']={syn:'Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>.',lib:'magnetometer.get_userData()',pro:'def get_userData()',cmt:'<p>Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',ret:'l\x27objet stock\xE9 pr\xE9c\xE9demment par l\x27appelant.'};
+doc['Magnetometer']['get_xValue']={syn:'Retourne la composante X du champ magn\xE9tique, sous forme de nombre \xE0 virgule.',lib:'magnetometer.get_xValue()',pro:'def get_xValue()',cmt:'<p>Retourne la composante X du champ magn\xE9tique, sous forme de nombre \xE0 virgule.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la composante X du champ magn\xE9tique, sous forme de nombre \xE0 virgule',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_XVALUE_INVALID</tt>.'};
+doc['Magnetometer']['get_yValue']={syn:'Retourne la composante Y du champ magn\xE9tique, sous forme de nombre \xE0 virgule.',lib:'magnetometer.get_yValue()',pro:'def get_yValue()',cmt:'<p>Retourne la composante Y du champ magn\xE9tique, sous forme de nombre \xE0 virgule.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la composante Y du champ magn\xE9tique, sous forme de nombre \xE0 virgule',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_YVALUE_INVALID</tt>.'};
+doc['Magnetometer']['get_zValue']={syn:'Retourne la composante Z du champ magn\xE9tique, sous forme de nombre \xE0 virgule.',lib:'magnetometer.get_zValue()',pro:'def get_zValue()',cmt:'<p>Retourne la composante Z du champ magn\xE9tique, sous forme de nombre \xE0 virgule.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la composante Z du champ magn\xE9tique, sous forme de nombre \xE0 virgule',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_ZVALUE_INVALID</tt>.'};
+doc['Magnetometer']['isOnline']={syn:'V\xE9rifie si le module h\xE9bergeant le magn\xE9tom\xE8tre est joignable, sans d\xE9clencher d\x27erreur.',lib:'magnetometer.isOnline()',pro:'def isOnline()',cmt:'<p>V\xE9rifie si le module h\xE9bergeant le magn\xE9tom\xE8tre est joignable, sans d\xE9clencher d\x27erreur. Si les valeurs des attributs en cache du magn\xE9tom\xE8tre sont valides au moment de l\x27appel, le module est consid\xE9r\xE9 joignable. Cette fonction ne cause en aucun cas d\x27exception, quelle que soit l\x27erreur qui pourrait se produire lors de la v\xE9rification de joignabilit\xE9.</p>',ret:'<tt>true</tt> si le magn\xE9tom\xE8tre est joignable, <tt>false</tt> sinon'};
+doc['Magnetometer']['load']={syn:'Met en cache les valeurs courantes du magn\xE9tom\xE8tre, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e.',lib:'magnetometer.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Met en cache les valeurs courantes du magn\xE9tom\xE8tre, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e. Par d\xE9faut, lorsqu\x27on acc\xE8de \xE0 un module, tous les attributs des fonctions du module sont automatiquement mises en cache pour la dur\xE9e standard (5 ms). Cette m\xE9thode peut \xEAtre utilis\xE9e pour marquer occasionellement les donn\xE9es cach\xE9es comme valides pour une plus longue p\xE9riode, par exemple dans le but de r\xE9duire le trafic r\xE9seau.</p>',par:{msValidity:'un entier correspondant \xE0 la dur\xE9e de validit\xE9 attribu\xE9e aux les param\xE8tres charg\xE9s, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Magnetometer']['loadAttribute']={syn:'Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.',lib:'magnetometer.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un cha\xEEne vide.'};
+doc['Magnetometer']['loadCalibrationPoints']={syn:'R\xE9cup\xE8re les points de correction de mesure pr\xE9c\xE9demment enregistr\xE9s \xE0 l\x27aide de la m\xE9thode <tt>calibrateFromPoints</tt>.',lib:'magnetometer.loadCalibrationPoints()',pro:'def loadCalibrationPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>R\xE9cup\xE8re les points de correction de mesure pr\xE9c\xE9demment enregistr\xE9s \xE0 l\x27aide de la m\xE9thode <tt>calibrateFromPoints</tt>.</p>',par:{rawValues:'tableau de nombres flottants, qui sera rempli par la fonction avec les valeurs brutes des points de correction.',refValues:'tableau de nombres flottants, qui sera rempli par la fonction avec les valeurs d\xE9sir\xE9es des points de correction.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Magnetometer']['muteValueCallbacks']={syn:'D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'magnetometer.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Vous pouvez utiliser cette fonction pour \xE9conomiser la bande passante et le CPU sur les machines de faible puissance, ou pour \xE9viter le d\xE9clanchement de callbacks HTTP. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Magnetometer']['nextMagnetometer']={syn:'Continue l\x27\xE9num\xE9ration des magn\xE9tom\xE8tres commenc\xE9e \xE0 l\x27aide de <tt>yFirstMagnetometer()</tt>.',lib:'magnetometer.nextMagnetometer()',pro:'def nextMagnetometer()',cmt:'<p>Continue l\x27\xE9num\xE9ration des magn\xE9tom\xE8tres commenc\xE9e \xE0 l\x27aide de <tt>yFirstMagnetometer()</tt>.</p>',ret:'un pointeur sur un objet <tt>YMagnetometer</tt> accessible en ligne, ou <tt>null</tt> lorsque l\x27\xE9num\xE9ration est termin\xE9e.'};
+doc['Magnetometer']['registerTimedReportCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque notification p\xE9riodique.',lib:'magnetometer.registerTimedReportCallback()',pro:'def registerTimedReportCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque notification p\xE9riodique. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callbacks peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callbacks ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et un objet YMeasure d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['Magnetometer']['registerValueCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e.',lib:'magnetometer.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callback peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callback ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et la cha\xEEne de caract\xE8re d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['Magnetometer']['set_bandwidth']={syn:'Modifie la fr\xE9quence de rafra\xEEchissement de la mesure, en Hz (Yocto-3D-V2 seulement).',lib:'magnetometer.set_bandwidth()',pro:'def set_bandwidth(<span id=pn>newval</span>)',cmt:'<p>Modifie la fr\xE9quence de rafra\xEEchissement de la mesure, en Hz (Yocto-3D-V2 seulement). Lorsque la fr\xE9quence est plus basse, un moyennage est effectu\xE9.</p>',par:{newval:'un entier repr&eacute;sentant la fr\xE9quence de rafra\xEEchissement de la mesure, en Hz (Yocto-3D-V2 seulement)'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Magnetometer']['set_highestValue']={syn:'Modifie la m\xE9moire de valeur maximale observ\xE9e.',lib:'magnetometer.set_highestValue()',pro:'def set_highestValue(<span id=pn>newval</span>)',cmt:'<p>Modifie la m\xE9moire de valeur maximale observ\xE9e.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la m\xE9moire de valeur maximale observ\xE9e'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Magnetometer']['set_logFrequency']={syn:'Modifie la fr\xE9quence d\x27enregistrement des mesures dans le datalogger.',lib:'magnetometer.set_logFrequency()',pro:'def set_logFrequency(<span id=pn>newval</span>)',cmt:'<p>Modifie la fr\xE9quence d\x27enregistrement des mesures dans le datalogger. La fr\xE9quence peut \xEAtre sp\xE9cifi\xE9e en mesures par secondes, en mesures par minutes (par exemple \x2215/m\x22) ou en mesures par heure (par exemple \x224/h\x22). Pour d\xE9sactiver l\x27enregistrement des mesures de cette fonction, utilisez la valeur \x22OFF\x22.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence d\x27enregistrement des mesures dans le datalogger'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Magnetometer']['set_logicalName']={syn:'Modifie le nom logique du magn\xE9tom\xE8tre.',lib:'magnetometer.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Modifie le nom logique du magn\xE9tom\xE8tre. Vous pouvez utiliser <tt>yCheckLogicalName()</tt> pour v\xE9rifier si votre param\xE8tre est valide. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du magn\xE9tom\xE8tre.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27appel se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Magnetometer']['set_lowestValue']={syn:'Modifie la m\xE9moire de valeur minimale observ\xE9e.',lib:'magnetometer.set_lowestValue()',pro:'def set_lowestValue(<span id=pn>newval</span>)',cmt:'<p>Modifie la m\xE9moire de valeur minimale observ\xE9e.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la m\xE9moire de valeur minimale observ\xE9e'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Magnetometer']['set_reportFrequency']={syn:'Modifie la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es.',lib:'magnetometer.set_reportFrequency()',pro:'def set_reportFrequency(<span id=pn>newval</span>)',cmt:'<p>Modifie la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es. La fr\xE9quence peut \xEAtre sp\xE9cifi\xE9e en mesures par secondes, en mesures par minutes (par exemple \x2215/m\x22) ou en mesures par heure (par exemple \x224/h\x22). Pour d\xE9sactiver les notifications p\xE9riodiques pour cette fonction, utilisez la valeur \x22OFF\x22.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Magnetometer']['set_resolution']={syn:'Modifie la r\xE9solution des valeurs physique mesur\xE9es.',lib:'magnetometer.set_resolution()',pro:'def set_resolution(<span id=pn>newval</span>)',cmt:'<p>Modifie la r\xE9solution des valeurs physique mesur\xE9es. La r\xE9solution correspond \xE0 la pr\xE9cision de l\x27affichage des mesures. Elle ne change pas la pr\xE9cision de la mesure elle-m\xEAme.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la r\xE9solution des valeurs physique mesur\xE9es'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Magnetometer']['set_userData']={syn:'Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>.',lib:'magnetometer.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',par:{data:'objet quelconque \xE0 m\xE9moriser'}};
+doc['Magnetometer']['startDataLogger']={syn:'D\xE9marre l\x27enregistreur de donn\xE9es du module.',lib:'magnetometer.startDataLogger()',pro:'def startDataLogger()',cmt:'<p>D\xE9marre l\x27enregistreur de donn\xE9es du module. Attention, l\x27enregistreur ne sauvera les mesures de ce capteur que si la fr\xE9quence d\x27enregistrement (logFrequency) n\x27est pas sur \x22OFF\x22.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.'};
+doc['Magnetometer']['stopDataLogger']={syn:'Arr\xEAte l\x27enregistreur de donn\xE9es du module.',lib:'magnetometer.stopDataLogger()',pro:'def stopDataLogger()',cmt:'<p>Arr\xEAte l\x27enregistreur de donn\xE9es du module.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.'};
+doc['Magnetometer']['unmuteValueCallbacks']={syn:'R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'magnetometer.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Cette fonction annule un pr\xE9c\xE9dent appel \xE0 <tt>muteValueCallbacks()</tt>. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+//--- (end of generated code: Magnetometer)
+//--- (generated code: RefFrame)
+doc['RefFrame']={'':{syn:'Configuration du r\xE9f\xE9rentiel',inc:'from yocto_refframe import *',cmt:'<p>Cette classe permet de configurer l\x27orientation dans laquelle le Yocto-3D est utilis\xE9, afin que les fonctions d\x27orientation relatives au plan de la surface terrestre utilisent le r\xE9f\xE9rentiel appropri\xE9. La classe offre aussi un processus de recalibration tridimensionnel des capteurs, permettant de compenser les variations locales de l\x27acc\xE9l\xE9ration terrestre et d\x27am\xE9liorer la pr\xE9cision des capteurs d\x27inclinaisons.</p>'}};
+doc['RefFrame']['FindRefFrame']={syn:'Permet de retrouver un r\xE9f\xE9rentiel d\x27apr\xE8s un identifiant donn\xE9.',lib:'YRefFrame.FindRefFrame()',pro:'def FindRefFrame(<span id=pn>func</span>)',cmt:'<p>Permet de retrouver un r\xE9f\xE9rentiel d\x27apr\xE8s un identifiant donn\xE9. L\x27identifiant peut \xEAtre sp\xE9cifi\xE9 sous plusieurs formes:<br> <ul> <li>NomLogiqueFonction</li> <li>NoSerieModule.IdentifiantFonction</li> <li>NoSerieModule.NomLogiqueFonction</li> <li>NomLogiqueModule.IdentifiantMat\xE9riel</li> <li>NomLogiqueModule.NomLogiqueFonction</li> </ul></p><p> Cette fonction n\x27exige pas que le r\xE9f\xE9rentiel soit en ligne au moment ou elle est appel\xE9e, l\x27objet retourn\xE9 sera n\xE9anmoins valide. Utiliser la m\xE9thode <tt>YRefFrame.isOnline()</tt> pour tester si le r\xE9f\xE9rentiel est utilisable \xE0 un moment donn\xE9. En cas d\x27ambigu\xEFt\xE9 lorsqu\x27on fait une recherche par nom logique, aucune erreur ne sera notifi\xE9e: la premi\xE8re instance trouv\xE9e sera renvoy\xE9e. La recherche se fait d\x27abord par nom mat\xE9riel, puis par nom logique.</p>',par:{func:'une cha\xEEne de caract\xE8res qui r\xE9f\xE9rence le r\xE9f\xE9rentiel sans ambigu\xEFt\xE9'},ret:'un objet de classe <tt>YRefFrame</tt> qui permet ensuite de contr\xF4ler le r\xE9f\xE9rentiel.'};
+doc['RefFrame']['FirstRefFrame']={syn:'Commence l\x27\xE9num\xE9ration des r\xE9f\xE9rentiels accessibles par la librairie.',lib:'YRefFrame.FirstRefFrame()',pro:'def FirstRefFrame()',cmt:'<p>Commence l\x27\xE9num\xE9ration des r\xE9f\xE9rentiels accessibles par la librairie. Utiliser la fonction <tt>YRefFrame.nextRefFrame()</tt> pour it\xE9rer sur les autres r\xE9f\xE9rentiels.</p>',ret:'un pointeur sur un objet <tt>YRefFrame</tt>, correspondant au premier r\xE9f\xE9rentiel accessible en ligne, ou <tt>null</tt> si il n\x27y a pas de r\xE9f\xE9rentiels disponibles.'};
+doc['RefFrame']['cancel3DCalibration']={syn:'Annule la calibration tridimensionnelle en cours, et r\xE9tabli les r\xE9glages normaux.',lib:'refframe.cancel3DCalibration()',pro:'def cancel3DCalibration()',cmt:'<p>Annule la calibration tridimensionnelle en cours, et r\xE9tabli les r\xE9glages normaux.</p><p> En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.</p>'};
+doc['RefFrame']['clearCache']={syn:'Invalide le cache.',lib:'refframe.clearCache()',pro:'def clearCache()',cmt:'<p>Invalide le cache. Invalide le cache des valeurs courantes du r\xE9f\xE9rentiel. Force le prochain appel \xE0 une m\xE9thode get_xxx() ou loadxxx() pour charger les les donn\xE9es depuis le module.</p>'};
+doc['RefFrame']['describe']={syn:'Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du r\xE9f\xE9rentiel au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'refframe.describe()',pro:'def describe()',cmt:'<p>Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du r\xE9f\xE9rentiel au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. Plus pr\xE9cis\xE9ment, <tt>TYPE</tt> correspond au type de fonction, <tt>NAME</tt> correspond au nom utils\xE9 lors du premier acc\xE8s a la fonction, <tt>SERIAL</tt> correspond au num\xE9ro de s\xE9rie du module si le module est connect\xE9, ou <tt>\x22unresolved\x22</tt> sinon, et <tt>FUNCTIONID</tt> correspond \xE0 l\x27identifiant mat\xE9riel de la fonction si le module est connect\xE9. Par exemple, La methode va retourner <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> si le module est d\xE9j\xE0 connect\xE9 ou <tt>Relay(BadCustomeName.relay1)=unresolved</tt> si le module n\x27est pas d\xE9j\xE0 connect\xE9. Cette methode ne declenche aucune transaction USB ou TCP et peut donc \xEAtre utilis\xE9 dans un debuggeur.</p>',ret:'une cha\xEEne de caract\xE8res d\xE9crivant le r\xE9f\xE9rentiel (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['RefFrame']['get_3DCalibrationHint']={syn:'Retourne les instructions \xE0 suivre pour proc\xE9der \xE0 la calibration tridimensionnelle initi\xE9e avec la m\xE9thode <tt>start3DCalibration</tt>.',lib:'refframe.get_3DCalibrationHint()',pro:'def get_3DCalibrationHint()',cmt:'<p>Retourne les instructions \xE0 suivre pour proc\xE9der \xE0 la calibration tridimensionnelle initi\xE9e avec la m\xE9thode <tt>start3DCalibration</tt>.</p>',ret:'une cha\xEEne de caract\xE8res.'};
+doc['RefFrame']['get_3DCalibrationLogMsg']={syn:'Retourne le dernier message de log produit par le processus de calibration.',lib:'refframe.get_3DCalibrationLogMsg()',pro:'def get_3DCalibrationLogMsg()',cmt:'<p>Retourne le dernier message de log produit par le processus de calibration. Si aucun nouveau message n\x27est disponible, retourne une cha\xEEne vide.</p>',ret:'une cha\xEEne de caract\xE8res.'};
+doc['RefFrame']['get_3DCalibrationProgress']={syn:'Retourne l\x27avancement global du processus de calibration tridimensionnelle initi\xE9 avec la m\xE9thode <tt>start3DCalibration</tt>.',lib:'refframe.get_3DCalibrationProgress()',pro:'def get_3DCalibrationProgress()',cmt:'<p>Retourne l\x27avancement global du processus de calibration tridimensionnelle initi\xE9 avec la m\xE9thode <tt>start3DCalibration</tt>.</p>',ret:'une nombre entier entre 0 (pas commenc\xE9) et 100 (termin\xE9).'};
+doc['RefFrame']['get_3DCalibrationStage']={syn:'Retourne l\x27index de l\x27\xE9tape courante de la calibration initi\xE9e avec la m\xE9thode <tt>start3DCalibration</tt>.',lib:'refframe.get_3DCalibrationStage()',pro:'def get_3DCalibrationStage()',cmt:'<p>Retourne l\x27index de l\x27\xE9tape courante de la calibration initi\xE9e avec la m\xE9thode <tt>start3DCalibration</tt>.</p>',ret:'une nombre entier, croissant au fur et \xE0 mesure de la compl\xE9tion des \xE9tapes.'};
+doc['RefFrame']['get_3DCalibrationStageProgress']={syn:'Retourne l\x27avancement de l\x27\xE9tape courante de la calibration initi\xE9e avec la m\xE9thode <tt>start3DCalibration</tt>.',lib:'refframe.get_3DCalibrationStageProgress()',pro:'def get_3DCalibrationStageProgress()',cmt:'<p>Retourne l\x27avancement de l\x27\xE9tape courante de la calibration initi\xE9e avec la m\xE9thode <tt>start3DCalibration</tt>.</p>',ret:'une nombre entier entre 0 (pas commenc\xE9) et 100 (termin\xE9).'};
+doc['RefFrame']['get_advertisedValue']={syn:'Retourne la valeur courante du r\xE9f\xE9rentiel (pas plus de 6 caract\xE8res).',lib:'refframe.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Retourne la valeur courante du r\xE9f\xE9rentiel (pas plus de 6 caract\xE8res).</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur courante du r\xE9f\xE9rentiel (pas plus de 6 caract\xE8res).',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['RefFrame']['get_bearing']={syn:'Retourne le cap de r\xE9f\xE9rence utilis\xE9 par le compas.',lib:'refframe.get_bearing()',pro:'def get_bearing()',cmt:'<p>Retourne le cap de r\xE9f\xE9rence utilis\xE9 par le compas. Le cap relatif indiqu\xE9 par le compas est la diff\xE9rence entre le Nord magn\xE9tique mesur\xE9 et le cap de r\xE9f\xE9rence sp\xE9cifi\xE9 ici.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant le cap de r\xE9f\xE9rence utilis\xE9 par le compas',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_BEARING_INVALID</tt>.'};
+doc['RefFrame']['get_calibrationState']={syn:'Retourne l\x27\xE9tat de calibration des capteurs 3D (Yocto-3D-V2 seulement).',lib:'refframe.get_calibrationState()',pro:'def get_calibrationState()',cmt:'<p>Retourne l\x27\xE9tat de calibration des capteurs 3D (Yocto-3D-V2 seulement). Cette fonction retourne un entier repr\xE9sentant l\x27\xE9tat de calibration des trois capteurs inertiels du chip BNO055, pr\xE9sent dans le Yocto-3D-V2. Les centaines indiquent l\x27\xE9tat de calibration de l\x27acc\xE9l\xE9rom\xE8tre, les dizaines indiquent l\x27\xE9tat de calibration du magn\xE9tom\xE8tre, et les unit\xE9s indiquent l\x27\xE9tat de calibration du gyroscope. Pour chaque capteur, la valeur 0 indique l\x27absence de calibration tandis que la valeur 3 indique une calibration compl\xE8te.</p>',ret:'un entier repr\xE9sentant l\x27\xE9tat de calibration du Yocto-3D-V2: 333 quand il est enti\xE8rement calibr\xE9, 0 lorsqu\x27il n\x27est pas calibr\xE9 du tout.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif. Pour le Yocto-3D (V1), la valeur retourn\xE9e est toujours -3 (fonction non support\xE9e).'};
+doc['RefFrame']['get_errorMessage']={syn:'Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du r\xE9f\xE9rentiel.',lib:'refframe.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du r\xE9f\xE9rentiel. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'une cha\xEEne de caract\xE8res correspondant au message de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du r\xE9f\xE9rentiel.'};
+doc['RefFrame']['get_errorType']={syn:'Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du r\xE9f\xE9rentiel.',lib:'refframe.get_errorType()',pro:'def get_errorType()',cmt:'<p>Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du r\xE9f\xE9rentiel. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'un nombre correspondant au code de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du r\xE9f\xE9rentiel.'};
+doc['RefFrame']['get_friendlyName']={syn:'Retourne un identifiant global du r\xE9f\xE9rentiel au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>.',lib:'refframe.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Retourne un identifiant global du r\xE9f\xE9rentiel au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>. Le cha\xEEne retourn\xE9e utilise soit les noms logiques du module et du r\xE9f\xE9rentiel si ils sont d\xE9finis, soit respectivement le num\xE9ro de s\xE9rie du module et l\x27identifant mat\xE9riel du r\xE9f\xE9rentiel (par exemple: <tt>MyCustomName.relay1</tt>)</p>',ret:'une cha\xEEne de caract\xE8res identifiant le r\xE9f\xE9rentiel en utilisant les noms logiques (ex: <tt>MyCustomName.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['RefFrame']['get_functionDescriptor']={syn:'Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction.',lib:'refframe.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction. Cet identifiant peut \xEAtre utilis\xE9 pour tester si deux instance de <tt>YFunction</tt> r\xE9f\xE9rencent physiquement la m\xEAme fonction sur le m\xEAme module.</p>',ret:'un identifiant de type <tt>YFUN_DESCR</tt>.',ext:'Si la fonction n\x27a jamais \xE9t\xE9 contact\xE9e, la valeur retourn\xE9e sera <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>'};
+doc['RefFrame']['get_functionId']={syn:'Retourne l\x27identifiant mat\xE9riel du r\xE9f\xE9rentiel, sans r\xE9f\xE9rence au module.',lib:'refframe.get_functionId()',pro:'def get_functionId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel du r\xE9f\xE9rentiel, sans r\xE9f\xE9rence au module. Par example <tt>relay1</tt>.</p>',ret:'une cha\xEEne de caract\xE8res identifiant le r\xE9f\xE9rentiel (ex: <tt>relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['RefFrame']['get_hardwareId']={syn:'Retourne l\x27identifiant mat\xE9riel unique du r\xE9f\xE9rentiel au format <tt>SERIAL.FUNCTIONID</tt>.',lib:'refframe.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel unique du r\xE9f\xE9rentiel au format <tt>SERIAL.FUNCTIONID</tt>. L\x27identifiant unique est compos\xE9 du num\xE9ro de s\xE9rie du module et de l\x27identifiant mat\xE9riel du r\xE9f\xE9rentiel (par example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'une cha\xEEne de caract\xE8res identifiant le r\xE9f\xE9rentiel (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['RefFrame']['get_logicalName']={syn:'Retourne le nom logique du r\xE9f\xE9rentiel.',lib:'refframe.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Retourne le nom logique du r\xE9f\xE9rentiel.</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du r\xE9f\xE9rentiel.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['RefFrame']['get_measureQuality']={syn:'Retourne l\x27estimation de qualit\xE9 de la mesure d\x27orientation (Yocto-3D-V2 seulement).',lib:'refframe.get_measureQuality()',pro:'def get_measureQuality()',cmt:'<p>Retourne l\x27estimation de qualit\xE9 de la mesure d\x27orientation (Yocto-3D-V2 seulement). Cette fonction retourne un entier entre 0 et 3 repr\xE9sentant le degr\xE9 de confiance de l\x27estimation de position. Lorsque la valeur est 3, l\x27estimation est fiable. En dessous de 3, il faut s\x27attendre \xE0 des corrections d\x27orientations ult\xE9rieures, en particulier sur la boussole (fonction <tt>compass</tt>). Les causes les plus fr\xE9quentes pour une qualit\xE9 inf\xE9rieure \xE0 3 sont les interf\xE9rences magn\xE9tiques et les acc\xE9l\xE9rations our rotations en del\xE0 des capacit\xE9s du capteur.</p>',ret:'un entier entre 0 et 3 (3 quand la mesure est fiable)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif. Pour le Yocto-3D (V1), la valeur retourn\xE9e est toujours -3 (fonction non support\xE9e).'};
+doc['RefFrame']['get_module']={syn:'Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction.',lib:'refframe.get_module()',pro:'def get_module()',cmt:'<p>Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction. Si la fonction ne peut \xEAtre trouv\xE9e sur aucun module, l\x27instance de <tt>YModule</tt> retourn\xE9e ne sera pas joignable.</p>',ret:'une instance de <tt>YModule</tt>'};
+doc['RefFrame']['get_mountOrientation']={syn:'Retourne l\x27orientation \xE0 l\x27installation du module, telle que configur\xE9e afin de d\xE9finir le r\xE9f\xE9rentiel de la boussole et des inclinom\xE8tres.',lib:'refframe.get_mountOrientation()',pro:'def get_mountOrientation()',cmt:'<p>Retourne l\x27orientation \xE0 l\x27installation du module, telle que configur\xE9e afin de d\xE9finir le r\xE9f\xE9rentiel de la boussole et des inclinom\xE8tres.</p>',ret:'une valeur parmi l\x27\xE9num\xE9ration <tt>Y_MOUNTORIENTATION</tt> (<tt>Y_MOUNTORIENTATION_TWELVE</tt>, <tt>Y_MOUNTORIENTATION_THREE</tt>, <tt>Y_MOUNTORIENTATION_SIX</tt>, <tt>Y_MOUNTORIENTATION_NINE</tt>) correspondant \xE0 la l\x27orientation de la fl\xE8che \x22X\x22 sur le module par rapport \xE0 un cadran d\x27horloge vu par un observateur au centre de la bo\xEEte. Sur la face BOTTOM le 12h pointe vers l\x27avant, tandis que sur la face TOP le 12h pointe vers l\x27arri\xE8re.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['RefFrame']['get_mountPosition']={syn:'Retourne la position d\x27installation du module, telle que configur\xE9e afin de d\xE9finir le r\xE9f\xE9rentiel de la boussole et des inclinom\xE8tres.',lib:'refframe.get_mountPosition()',pro:'def get_mountPosition()',cmt:'<p>Retourne la position d\x27installation du module, telle que configur\xE9e afin de d\xE9finir le r\xE9f\xE9rentiel de la boussole et des inclinom\xE8tres.</p>',ret:'une valeur parmi l\x27\xE9num\xE9ration <tt>Y_MOUNTPOSITION</tt> (<tt>Y_MOUNTPOSITION_BOTTOM</tt>, <tt>Y_MOUNTPOSITION_TOP</tt>, <tt>Y_MOUNTPOSITION_FRONT</tt>, <tt>Y_MOUNTPOSITION_RIGHT</tt>, <tt>Y_MOUNTPOSITION_REAR</tt>, <tt>Y_MOUNTPOSITION_LEFT</tt>), correspondant \xE0 l\x27installation dans une bo\xEEte, sur l\x27une des six faces',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['RefFrame']['get_userData']={syn:'Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>.',lib:'refframe.get_userData()',pro:'def get_userData()',cmt:'<p>Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',ret:'l\x27objet stock\xE9 pr\xE9c\xE9demment par l\x27appelant.'};
+doc['RefFrame']['isOnline']={syn:'V\xE9rifie si le module h\xE9bergeant le r\xE9f\xE9rentiel est joignable, sans d\xE9clencher d\x27erreur.',lib:'refframe.isOnline()',pro:'def isOnline()',cmt:'<p>V\xE9rifie si le module h\xE9bergeant le r\xE9f\xE9rentiel est joignable, sans d\xE9clencher d\x27erreur. Si les valeurs des attributs en cache du r\xE9f\xE9rentiel sont valides au moment de l\x27appel, le module est consid\xE9r\xE9 joignable. Cette fonction ne cause en aucun cas d\x27exception, quelle que soit l\x27erreur qui pourrait se produire lors de la v\xE9rification de joignabilit\xE9.</p>',ret:'<tt>true</tt> si le r\xE9f\xE9rentiel est joignable, <tt>false</tt> sinon'};
+doc['RefFrame']['load']={syn:'Met en cache les valeurs courantes du r\xE9f\xE9rentiel, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e.',lib:'refframe.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Met en cache les valeurs courantes du r\xE9f\xE9rentiel, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e. Par d\xE9faut, lorsqu\x27on acc\xE8de \xE0 un module, tous les attributs des fonctions du module sont automatiquement mises en cache pour la dur\xE9e standard (5 ms). Cette m\xE9thode peut \xEAtre utilis\xE9e pour marquer occasionellement les donn\xE9es cach\xE9es comme valides pour une plus longue p\xE9riode, par exemple dans le but de r\xE9duire le trafic r\xE9seau.</p>',par:{msValidity:'un entier correspondant \xE0 la dur\xE9e de validit\xE9 attribu\xE9e aux les param\xE8tres charg\xE9s, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['RefFrame']['loadAttribute']={syn:'Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.',lib:'refframe.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un cha\xEEne vide.'};
+doc['RefFrame']['more3DCalibration']={syn:'Continue le processus de calibration tridimensionnelle des capteurs initi\xE9 avec la m\xE9thode <tt>start3DCalibration</tt>.',lib:'refframe.more3DCalibration()',pro:'def more3DCalibration()',cmt:'<p>Continue le processus de calibration tridimensionnelle des capteurs initi\xE9 avec la m\xE9thode <tt>start3DCalibration</tt>. Cette m\xE9thode doit \xEAtre appel\xE9e environ 5 fois par secondes apr\xE8s avoir positionn\xE9 le module selon les instructions fournies par la m\xE9thode <tt>get_3DCalibrationHint</tt> (les instructions changent pendant la proc\xE9dure de calibration).</p><p> En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.</p>'};
+doc['RefFrame']['muteValueCallbacks']={syn:'D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'refframe.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Vous pouvez utiliser cette fonction pour \xE9conomiser la bande passante et le CPU sur les machines de faible puissance, ou pour \xE9viter le d\xE9clanchement de callbacks HTTP. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['RefFrame']['nextRefFrame']={syn:'Continue l\x27\xE9num\xE9ration des r\xE9f\xE9rentiels commenc\xE9e \xE0 l\x27aide de <tt>yFirstRefFrame()</tt>.',lib:'refframe.nextRefFrame()',pro:'def nextRefFrame()',cmt:'<p>Continue l\x27\xE9num\xE9ration des r\xE9f\xE9rentiels commenc\xE9e \xE0 l\x27aide de <tt>yFirstRefFrame()</tt>.</p>',ret:'un pointeur sur un objet <tt>YRefFrame</tt> accessible en ligne, ou <tt>null</tt> lorsque l\x27\xE9num\xE9ration est termin\xE9e.'};
+doc['RefFrame']['registerValueCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e.',lib:'refframe.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callback peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callback ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et la cha\xEEne de caract\xE8re d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['RefFrame']['save3DCalibration']={syn:'Applique les param\xE8tres de calibration tridimensionnelle pr\xE9c\xE9demment calcul\xE9s.',lib:'refframe.save3DCalibration()',pro:'def save3DCalibration()',cmt:'<p>Applique les param\xE8tres de calibration tridimensionnelle pr\xE9c\xE9demment calcul\xE9s. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9 apr\xE8s le red\xE9marrage du module.</p><p> En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.</p>'};
+doc['RefFrame']['set_bearing']={syn:'Modifie le cap de r\xE9f\xE9rence utilis\xE9 par le compas.',lib:'refframe.set_bearing()',pro:'def set_bearing(<span id=pn>newval</span>)',cmt:'<p>Modifie le cap de r\xE9f\xE9rence utilis\xE9 par le compas. Le cap relatif indiqu\xE9 par le compas est la diff\xE9rence entre le Nord magn\xE9tique mesur\xE9 et le cap de r\xE9f\xE9rence sp\xE9cifi\xE9 ici.</p><p> Par exemple, si vous indiquez comme cap de r\xE9f\xE9rence la valeur de la d\xE9clinaison magn\xE9tique terrestre, le compas donnera l\x27orientation par rapport au Nord g\xE9ographique.</p><p> De m\xEAme, si le capteur n\x27est pas positionn\xE9 dans une des directions standard \xE0 cause d\x27un angle de lacet suppl\xE9mentaire, vous pouvez le configurer comme cap de r\xE9f\xE9rence afin que le compas donne la direction naturelle attendue.</p><p> N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant le cap de r\xE9f\xE9rence utilis\xE9 par le compas'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['RefFrame']['set_logicalName']={syn:'Modifie le nom logique du r\xE9f\xE9rentiel.',lib:'refframe.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Modifie le nom logique du r\xE9f\xE9rentiel. Vous pouvez utiliser <tt>yCheckLogicalName()</tt> pour v\xE9rifier si votre param\xE8tre est valide. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du r\xE9f\xE9rentiel.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27appel se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['RefFrame']['set_mountPosition']={syn:'Modifie le r\xE9f\xE9rentiel de la boussole et des inclinom\xE8tres.',lib:'refframe.set_mountPosition()',pro:'def set_mountPosition(<span id=pn>position</span>, <span id=pn>orientation</span>)',cmt:'<p>Modifie le r\xE9f\xE9rentiel de la boussole et des inclinom\xE8tres. La boussole magn\xE9tique et les inclinom\xE8tres gravitationnels fonctionnent par rapport au plan parall\xE8le \xE0 la surface terrestre. Dans les cas o\xF9 le module n\x27est pas utilis\xE9 horizontalement et \xE0 l\x27endroit, il faut indiquer son orientation de r\xE9f\xE9rence (parall\xE8le \xE0 la surface terrestre) afin que les mesures soient faites relativement \xE0 cette position.</p>',par:{position:'une valeur parmi l\x27\xE9num\xE9ration <tt>Y_MOUNTPOSITION</tt> (<tt>Y_MOUNTPOSITION_BOTTOM</tt>, <tt>Y_MOUNTPOSITION_TOP</tt>, <tt>Y_MOUNTPOSITION_FRONT</tt>, <tt>Y_MOUNTPOSITION_RIGHT</tt>, <tt>Y_MOUNTPOSITION_REAR</tt>, <tt>Y_MOUNTPOSITION_LEFT</tt>), correspondant \xE0 l\x27installation dans une bo\xEEte, sur l\x27une des six faces.',orientation:'une valeur parmi l\x27\xE9num\xE9ration <tt>Y_MOUNTORIENTATION</tt> (<tt>Y_MOUNTORIENTATION_TWELVE</tt>, <tt>Y_MOUNTORIENTATION_THREE</tt>, <tt>Y_MOUNTORIENTATION_SIX</tt>, <tt>Y_MOUNTORIENTATION_NINE</tt>) correspondant \xE0 la l\x27orientation de la fl\xE8che \x22X\x22 sur le module par rapport \xE0 un cadran d\x27horloge vu par un observateur au centre de la bo\xEEte. Sur la face BOTTOM le 12h pointe vers l\x27avant, tandis que sur la face TOP le 12h pointe vers l\x27arri\xE8re.'},ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['RefFrame']['set_userData']={syn:'Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>.',lib:'refframe.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',par:{data:'objet quelconque \xE0 m\xE9moriser'}};
+doc['RefFrame']['start3DCalibration']={syn:'Initie le processus de calibration tridimensionnelle des capteurs.',lib:'refframe.start3DCalibration()',pro:'def start3DCalibration()',cmt:'<p>Initie le processus de calibration tridimensionnelle des capteurs. Cette calibration est utilis\xE9e \xE0 bas niveau pour l\x27estimation innertielle de position et pour am\xE9liorer la pr\xE9cision des mesures d\x27inclinaison.</p><p> Apr\xE8s avoir appel\xE9 cette m\xE9thode, il faut positionner le module selon les instructions fournies par la m\xE9thode <tt>get_3DCalibrationHint</tt> et appeler <tt>more3DCalibration</tt> environ 5 fois par secondes. La proc\xE9dure de calibration est termin\xE9e lorsque la m\xE9thode <tt>get_3DCalibrationProgress</tt> retourne 100. Il est alors possible d\x27appliquer les param\xE8tres calcul\xE9s, \xE0 l\x27aide de la m\xE9thode <tt>save3DCalibration</tt>. A tout moment, la calibration peut \xEAtre abandonn\xE9e \xE0 l\x27aide de <tt>cancel3DCalibration</tt>.</p><p> En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.</p>'};
+doc['RefFrame']['unmuteValueCallbacks']={syn:'R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'refframe.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Cette fonction annule un pr\xE9c\xE9dent appel \xE0 <tt>muteValueCallbacks()</tt>. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+//--- (end of generated code: RefFrame)
+//--- (generated code: Compass)
+doc['Compass']={'':{syn:'Interface de la fonction Compass',inc:'from yocto_compass import *',cmt:'<p>La classe YSensor est la classe parente de tous les senseurs Yoctopuce. Elle permet de lire la valeur courante et l\x27unit\xE9 de n\x27importe quel capteur, de lire les valeurs min/max, de configurer la fr\xE9quence d\x27enregistrement autonome des donn\xE9es et de r\xE9cup\xE9rer les mesures enregistr\xE9es. Elle permet aussi d\x27enregistrer un callback appel\xE9 lorsque la valeur mesur\xE9e change ou \xE0 intervalle pr\xE9d\xE9fini. L\x27utilisation de cette classe plut\xF4t qu\x27une de ces sous-classes permet de cr\xE9er des application g\xE9n\xE9riques, compatibles m\xEAme avec les capteurs Yoctopuce futurs. Note: la classe YAnButton est le seul type d\x27entr\xE9e analogique qui n\x27h\xE9rite pas de YSensor.</p>'}};
+doc['Compass']['FindCompass']={syn:'Permet de retrouver un compas d\x27apr\xE8s un identifiant donn\xE9.',lib:'YCompass.FindCompass()',pro:'def FindCompass(<span id=pn>func</span>)',cmt:'<p>Permet de retrouver un compas d\x27apr\xE8s un identifiant donn\xE9. L\x27identifiant peut \xEAtre sp\xE9cifi\xE9 sous plusieurs formes:<br> <ul> <li>NomLogiqueFonction</li> <li>NoSerieModule.IdentifiantFonction</li> <li>NoSerieModule.NomLogiqueFonction</li> <li>NomLogiqueModule.IdentifiantMat\xE9riel</li> <li>NomLogiqueModule.NomLogiqueFonction</li> </ul></p><p> Cette fonction n\x27exige pas que le compas soit en ligne au moment ou elle est appel\xE9e, l\x27objet retourn\xE9 sera n\xE9anmoins valide. Utiliser la m\xE9thode <tt>YCompass.isOnline()</tt> pour tester si le compas est utilisable \xE0 un moment donn\xE9. En cas d\x27ambigu\xEFt\xE9 lorsqu\x27on fait une recherche par nom logique, aucune erreur ne sera notifi\xE9e: la premi\xE8re instance trouv\xE9e sera renvoy\xE9e. La recherche se fait d\x27abord par nom mat\xE9riel, puis par nom logique.</p>',par:{func:'une cha\xEEne de caract\xE8res qui r\xE9f\xE9rence le compas sans ambigu\xEFt\xE9'},ret:'un objet de classe <tt>YCompass</tt> qui permet ensuite de contr\xF4ler le compas.'};
+doc['Compass']['FirstCompass']={syn:'Commence l\x27\xE9num\xE9ration des compas accessibles par la librairie.',lib:'YCompass.FirstCompass()',pro:'def FirstCompass()',cmt:'<p>Commence l\x27\xE9num\xE9ration des compas accessibles par la librairie. Utiliser la fonction <tt>YCompass.nextCompass()</tt> pour it\xE9rer sur les autres compas.</p>',ret:'un pointeur sur un objet <tt>YCompass</tt>, correspondant au premier compas accessible en ligne, ou <tt>null</tt> si il n\x27y a pas de compas disponibles.'};
+doc['Compass']['calibrateFromPoints']={syn:'Enregistre des points de correction de mesure, typiquement pour compenser l\x27effet d\x27un bo\xEEtier sur les mesures rendues par le capteur.',lib:'compass.calibrateFromPoints()',pro:'def calibrateFromPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Enregistre des points de correction de mesure, typiquement pour compenser l\x27effet d\x27un bo\xEEtier sur les mesures rendues par le capteur. Il est possible d\x27enregistrer jusqu\x27\xE0 cinq points de correction. Les points de correction doivent \xEAtre fournis en ordre croissant, et dans la plage valide du capteur. Le module effectue automatiquement une interpolation lin\xE9aire de l\x27erreur entre les points sp\xE9cifi\xE9s. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p><p> Pour plus de plus amples possibilit\xE9s d\x27appliquer une surcalibration aux capteurs, veuillez contacter support@yoctopuce.com.</p>',par:{rawValues:'tableau de nombres flottants, correspondant aux valeurs brutes rendues par le capteur pour les points de correction.',refValues:'tableau de nombres flottants, correspondant aux valeurs corrig\xE9es d\xE9sir\xE9es pour les points de correction.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Compass']['clearCache']={syn:'Invalide le cache.',lib:'compass.clearCache()',pro:'def clearCache()',cmt:'<p>Invalide le cache. Invalide le cache des valeurs courantes du compas. Force le prochain appel \xE0 une m\xE9thode get_xxx() ou loadxxx() pour charger les les donn\xE9es depuis le module.</p>'};
+doc['Compass']['describe']={syn:'Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du compas au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'compass.describe()',pro:'def describe()',cmt:'<p>Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du compas au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. Plus pr\xE9cis\xE9ment, <tt>TYPE</tt> correspond au type de fonction, <tt>NAME</tt> correspond au nom utils\xE9 lors du premier acc\xE8s a la fonction, <tt>SERIAL</tt> correspond au num\xE9ro de s\xE9rie du module si le module est connect\xE9, ou <tt>\x22unresolved\x22</tt> sinon, et <tt>FUNCTIONID</tt> correspond \xE0 l\x27identifiant mat\xE9riel de la fonction si le module est connect\xE9. Par exemple, La methode va retourner <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> si le module est d\xE9j\xE0 connect\xE9 ou <tt>Relay(BadCustomeName.relay1)=unresolved</tt> si le module n\x27est pas d\xE9j\xE0 connect\xE9. Cette methode ne declenche aucune transaction USB ou TCP et peut donc \xEAtre utilis\xE9 dans un debuggeur.</p>',ret:'une cha\xEEne de caract\xE8res d\xE9crivant le compas (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['Compass']['get_advertisedValue']={syn:'Retourne la valeur courante du compas (pas plus de 6 caract\xE8res).',lib:'compass.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Retourne la valeur courante du compas (pas plus de 6 caract\xE8res).</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur courante du compas (pas plus de 6 caract\xE8res).',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['Compass']['get_bandwidth']={syn:'Retourne la fr\xE9quence de rafra\xEEchissement de la mesure, en Hz (Yocto-3D-V2 seulement).',lib:'compass.get_bandwidth()',pro:'def get_bandwidth()',cmt:'<p>Retourne la fr\xE9quence de rafra\xEEchissement de la mesure, en Hz (Yocto-3D-V2 seulement).</p>',ret:'un entier repr&eacute;sentant la fr\xE9quence de rafra\xEEchissement de la mesure, en Hz (Yocto-3D-V2 seulement)',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_BANDWIDTH_INVALID</tt>.'};
+doc['Compass']['get_currentRawValue']={syn:'Retourne la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en degr\xE9s, sous forme de nombre \xE0 virgule.',lib:'compass.get_currentRawValue()',pro:'def get_currentRawValue()',cmt:'<p>Retourne la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en degr\xE9s, sous forme de nombre \xE0 virgule.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en degr\xE9s, sous forme de nombre \xE0 virgule',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_CURRENTRAWVALUE_INVALID</tt>.'};
+doc['Compass']['get_currentValue']={syn:'Retourne la valeur actuelle du cap relatif, en degr\xE9s, sous forme de nombre \xE0 virgule.',lib:'compass.get_currentValue()',pro:'def get_currentValue()',cmt:'<p>Retourne la valeur actuelle du cap relatif, en degr\xE9s, sous forme de nombre \xE0 virgule.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur actuelle du cap relatif, en degr\xE9s, sous forme de nombre \xE0 virgule',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_CURRENTVALUE_INVALID</tt>.'};
+doc['Compass']['get_errorMessage']={syn:'Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du compas.',lib:'compass.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du compas. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'une cha\xEEne de caract\xE8res correspondant au message de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du compas.'};
+doc['Compass']['get_errorType']={syn:'Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du compas.',lib:'compass.get_errorType()',pro:'def get_errorType()',cmt:'<p>Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du compas. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'un nombre correspondant au code de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du compas.'};
+doc['Compass']['get_friendlyName']={syn:'Retourne un identifiant global du compas au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>.',lib:'compass.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Retourne un identifiant global du compas au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>. Le cha\xEEne retourn\xE9e utilise soit les noms logiques du module et du compas si ils sont d\xE9finis, soit respectivement le num\xE9ro de s\xE9rie du module et l\x27identifant mat\xE9riel du compas (par exemple: <tt>MyCustomName.relay1</tt>)</p>',ret:'une cha\xEEne de caract\xE8res identifiant le compas en utilisant les noms logiques (ex: <tt>MyCustomName.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['Compass']['get_functionDescriptor']={syn:'Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction.',lib:'compass.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction. Cet identifiant peut \xEAtre utilis\xE9 pour tester si deux instance de <tt>YFunction</tt> r\xE9f\xE9rencent physiquement la m\xEAme fonction sur le m\xEAme module.</p>',ret:'un identifiant de type <tt>YFUN_DESCR</tt>.',ext:'Si la fonction n\x27a jamais \xE9t\xE9 contact\xE9e, la valeur retourn\xE9e sera <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>'};
+doc['Compass']['get_functionId']={syn:'Retourne l\x27identifiant mat\xE9riel du compas, sans r\xE9f\xE9rence au module.',lib:'compass.get_functionId()',pro:'def get_functionId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel du compas, sans r\xE9f\xE9rence au module. Par example <tt>relay1</tt>.</p>',ret:'une cha\xEEne de caract\xE8res identifiant le compas (ex: <tt>relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['Compass']['get_hardwareId']={syn:'Retourne l\x27identifiant mat\xE9riel unique du compas au format <tt>SERIAL.FUNCTIONID</tt>.',lib:'compass.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel unique du compas au format <tt>SERIAL.FUNCTIONID</tt>. L\x27identifiant unique est compos\xE9 du num\xE9ro de s\xE9rie du module et de l\x27identifiant mat\xE9riel du compas (par example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'une cha\xEEne de caract\xE8res identifiant le compas (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['Compass']['get_highestValue']={syn:'Retourne la valeur maximale observ\xE9e pour le cap relatif depuis le d\xE9marrage du module.',lib:'compass.get_highestValue()',pro:'def get_highestValue()',cmt:'<p>Retourne la valeur maximale observ\xE9e pour le cap relatif depuis le d\xE9marrage du module.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur maximale observ\xE9e pour le cap relatif depuis le d\xE9marrage du module',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_HIGHESTVALUE_INVALID</tt>.'};
+doc['Compass']['get_logFrequency']={syn:'Retourne la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es.',lib:'compass.get_logFrequency()',pro:'def get_logFrequency()',cmt:'<p>Retourne la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_LOGFREQUENCY_INVALID</tt>.'};
+doc['Compass']['get_logicalName']={syn:'Retourne le nom logique du compas.',lib:'compass.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Retourne le nom logique du compas.</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du compas.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['Compass']['get_lowestValue']={syn:'Retourne la valeur minimale observ\xE9e pour le cap relatif depuis le d\xE9marrage du module.',lib:'compass.get_lowestValue()',pro:'def get_lowestValue()',cmt:'<p>Retourne la valeur minimale observ\xE9e pour le cap relatif depuis le d\xE9marrage du module.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur minimale observ\xE9e pour le cap relatif depuis le d\xE9marrage du module',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_LOWESTVALUE_INVALID</tt>.'};
+doc['Compass']['get_magneticHeading']={syn:'Retourne la direction du nord magn\xE9tique, ind\xE9pendemment du cap configur\xE9.',lib:'compass.get_magneticHeading()',pro:'def get_magneticHeading()',cmt:'<p>Retourne la direction du nord magn\xE9tique, ind\xE9pendemment du cap configur\xE9.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la direction du nord magn\xE9tique, ind\xE9pendemment du cap configur\xE9',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_MAGNETICHEADING_INVALID</tt>.'};
+doc['Compass']['get_module']={syn:'Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction.',lib:'compass.get_module()',pro:'def get_module()',cmt:'<p>Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction. Si la fonction ne peut \xEAtre trouv\xE9e sur aucun module, l\x27instance de <tt>YModule</tt> retourn\xE9e ne sera pas joignable.</p>',ret:'une instance de <tt>YModule</tt>'};
+doc['Compass']['get_recordedData']={syn:'Retourne un objet DataSet repr\xE9sentant des mesures de ce capteur pr\xE9c\xE9demment enregistr\xE9es \xE0 l\x27aide du DataLogger, pour l\x27intervalle de temps sp\xE9cifi\xE9.',lib:'compass.get_recordedData()',pro:'def get_recordedData(<span id=pn>startTime</span>, <span id=pn>endTime</span>)',cmt:'<p>Retourne un objet DataSet repr\xE9sentant des mesures de ce capteur pr\xE9c\xE9demment enregistr\xE9es \xE0 l\x27aide du DataLogger, pour l\x27intervalle de temps sp\xE9cifi\xE9. Veuillez vous r\xE9f\xE9rer \xE0 la documentation de la classe DataSet pour plus plus d\x27informations sur la mani\xE8re d\x27obtenir un aper\xE7u des mesures pour la p\xE9riode, et comment charger progressivement une grande quantit\xE9 de mesures depuis le dataLogger.</p><p> Cette m\xE9thode ne fonctionne que si le module utilise un firmware r\xE9cent, car les objets DataSet ne sont pas support\xE9s par les firmwares ant\xE9rieurs \xE0 la r\xE9vision 13000.</p>',par:{startTime:'le d\xE9but de l\x27intervalle de mesure d\xE9sir\xE9, c\x27est \xE0 dire en nombre de secondes depuis le 1er janvier 1970 UTC. La valeur 0 peut \xEAtre utilis\xE9e pour ne poser aucune limite sur le d\xE9but des mesures.',endTime:'la find de l\x27intercalle de mesure d\xE9sir\xE9, c\x27est \xE0 dire en nombre de secondes depuis le 1er janvier 1970 UTC. La valeur 0 peut \xEAtre utilis\xE9e pour ne poser aucune limite de fin.'},ret:'une instance de YDataSet, dont les m\xE9thodes permettent de d\x27acc\xE9der aux donn\xE9es historiques souhait\xE9es.'};
+doc['Compass']['get_reportFrequency']={syn:'Retourne la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction.',lib:'compass.get_reportFrequency()',pro:'def get_reportFrequency()',cmt:'<p>Retourne la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_REPORTFREQUENCY_INVALID</tt>.'};
+doc['Compass']['get_resolution']={syn:'Retourne la r\xE9solution des valeurs mesur\xE9es.',lib:'compass.get_resolution()',pro:'def get_resolution()',cmt:'<p>Retourne la r\xE9solution des valeurs mesur\xE9es. La r\xE9solution correspond \xE0 la pr\xE9cision num\xE9rique de la repr\xE9sentation des mesures. Elle n\x27est pas forc\xE9ment identique \xE0 la pr\xE9cision r\xE9elle du capteur.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la r\xE9solution des valeurs mesur\xE9es',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_RESOLUTION_INVALID</tt>.'};
+doc['Compass']['get_sensorState']={syn:'Retourne le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment.',lib:'compass.get_sensorState()',pro:'def get_sensorState()',cmt:'<p>Retourne le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment.</p>',ret:'un entier repr&eacute;sentant le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_SENSORSTATE_INVALID</tt>.'};
+doc['Compass']['get_unit']={syn:'Retourne l\x27unit\xE9 dans laquelle le cap relatif est exprim\xE9e.',lib:'compass.get_unit()',pro:'def get_unit()',cmt:'<p>Retourne l\x27unit\xE9 dans laquelle le cap relatif est exprim\xE9e.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant l\x27unit\xE9 dans laquelle le cap relatif est exprim\xE9e',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_UNIT_INVALID</tt>.'};
+doc['Compass']['get_userData']={syn:'Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>.',lib:'compass.get_userData()',pro:'def get_userData()',cmt:'<p>Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',ret:'l\x27objet stock\xE9 pr\xE9c\xE9demment par l\x27appelant.'};
+doc['Compass']['isOnline']={syn:'V\xE9rifie si le module h\xE9bergeant le compas est joignable, sans d\xE9clencher d\x27erreur.',lib:'compass.isOnline()',pro:'def isOnline()',cmt:'<p>V\xE9rifie si le module h\xE9bergeant le compas est joignable, sans d\xE9clencher d\x27erreur. Si les valeurs des attributs en cache du compas sont valides au moment de l\x27appel, le module est consid\xE9r\xE9 joignable. Cette fonction ne cause en aucun cas d\x27exception, quelle que soit l\x27erreur qui pourrait se produire lors de la v\xE9rification de joignabilit\xE9.</p>',ret:'<tt>true</tt> si le compas est joignable, <tt>false</tt> sinon'};
+doc['Compass']['load']={syn:'Met en cache les valeurs courantes du compas, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e.',lib:'compass.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Met en cache les valeurs courantes du compas, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e. Par d\xE9faut, lorsqu\x27on acc\xE8de \xE0 un module, tous les attributs des fonctions du module sont automatiquement mises en cache pour la dur\xE9e standard (5 ms). Cette m\xE9thode peut \xEAtre utilis\xE9e pour marquer occasionellement les donn\xE9es cach\xE9es comme valides pour une plus longue p\xE9riode, par exemple dans le but de r\xE9duire le trafic r\xE9seau.</p>',par:{msValidity:'un entier correspondant \xE0 la dur\xE9e de validit\xE9 attribu\xE9e aux les param\xE8tres charg\xE9s, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Compass']['loadAttribute']={syn:'Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.',lib:'compass.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un cha\xEEne vide.'};
+doc['Compass']['loadCalibrationPoints']={syn:'R\xE9cup\xE8re les points de correction de mesure pr\xE9c\xE9demment enregistr\xE9s \xE0 l\x27aide de la m\xE9thode <tt>calibrateFromPoints</tt>.',lib:'compass.loadCalibrationPoints()',pro:'def loadCalibrationPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>R\xE9cup\xE8re les points de correction de mesure pr\xE9c\xE9demment enregistr\xE9s \xE0 l\x27aide de la m\xE9thode <tt>calibrateFromPoints</tt>.</p>',par:{rawValues:'tableau de nombres flottants, qui sera rempli par la fonction avec les valeurs brutes des points de correction.',refValues:'tableau de nombres flottants, qui sera rempli par la fonction avec les valeurs d\xE9sir\xE9es des points de correction.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Compass']['muteValueCallbacks']={syn:'D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'compass.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Vous pouvez utiliser cette fonction pour \xE9conomiser la bande passante et le CPU sur les machines de faible puissance, ou pour \xE9viter le d\xE9clanchement de callbacks HTTP. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Compass']['nextCompass']={syn:'Continue l\x27\xE9num\xE9ration des compas commenc\xE9e \xE0 l\x27aide de <tt>yFirstCompass()</tt>.',lib:'compass.nextCompass()',pro:'def nextCompass()',cmt:'<p>Continue l\x27\xE9num\xE9ration des compas commenc\xE9e \xE0 l\x27aide de <tt>yFirstCompass()</tt>.</p>',ret:'un pointeur sur un objet <tt>YCompass</tt> accessible en ligne, ou <tt>null</tt> lorsque l\x27\xE9num\xE9ration est termin\xE9e.'};
+doc['Compass']['registerTimedReportCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque notification p\xE9riodique.',lib:'compass.registerTimedReportCallback()',pro:'def registerTimedReportCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque notification p\xE9riodique. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callbacks peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callbacks ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et un objet YMeasure d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['Compass']['registerValueCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e.',lib:'compass.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callback peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callback ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et la cha\xEEne de caract\xE8re d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['Compass']['set_bandwidth']={syn:'Modifie la fr\xE9quence de rafra\xEEchissement de la mesure, en Hz (Yocto-3D-V2 seulement).',lib:'compass.set_bandwidth()',pro:'def set_bandwidth(<span id=pn>newval</span>)',cmt:'<p>Modifie la fr\xE9quence de rafra\xEEchissement de la mesure, en Hz (Yocto-3D-V2 seulement). Lorsque la fr\xE9quence est plus basse, un moyennage est effectu\xE9.</p>',par:{newval:'un entier repr&eacute;sentant la fr\xE9quence de rafra\xEEchissement de la mesure, en Hz (Yocto-3D-V2 seulement)'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Compass']['set_highestValue']={syn:'Modifie la m\xE9moire de valeur maximale observ\xE9e.',lib:'compass.set_highestValue()',pro:'def set_highestValue(<span id=pn>newval</span>)',cmt:'<p>Modifie la m\xE9moire de valeur maximale observ\xE9e.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la m\xE9moire de valeur maximale observ\xE9e'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Compass']['set_logFrequency']={syn:'Modifie la fr\xE9quence d\x27enregistrement des mesures dans le datalogger.',lib:'compass.set_logFrequency()',pro:'def set_logFrequency(<span id=pn>newval</span>)',cmt:'<p>Modifie la fr\xE9quence d\x27enregistrement des mesures dans le datalogger. La fr\xE9quence peut \xEAtre sp\xE9cifi\xE9e en mesures par secondes, en mesures par minutes (par exemple \x2215/m\x22) ou en mesures par heure (par exemple \x224/h\x22). Pour d\xE9sactiver l\x27enregistrement des mesures de cette fonction, utilisez la valeur \x22OFF\x22.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence d\x27enregistrement des mesures dans le datalogger'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Compass']['set_logicalName']={syn:'Modifie le nom logique du compas.',lib:'compass.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Modifie le nom logique du compas. Vous pouvez utiliser <tt>yCheckLogicalName()</tt> pour v\xE9rifier si votre param\xE8tre est valide. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du compas.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27appel se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Compass']['set_lowestValue']={syn:'Modifie la m\xE9moire de valeur minimale observ\xE9e.',lib:'compass.set_lowestValue()',pro:'def set_lowestValue(<span id=pn>newval</span>)',cmt:'<p>Modifie la m\xE9moire de valeur minimale observ\xE9e.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la m\xE9moire de valeur minimale observ\xE9e'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Compass']['set_reportFrequency']={syn:'Modifie la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es.',lib:'compass.set_reportFrequency()',pro:'def set_reportFrequency(<span id=pn>newval</span>)',cmt:'<p>Modifie la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es. La fr\xE9quence peut \xEAtre sp\xE9cifi\xE9e en mesures par secondes, en mesures par minutes (par exemple \x2215/m\x22) ou en mesures par heure (par exemple \x224/h\x22). Pour d\xE9sactiver les notifications p\xE9riodiques pour cette fonction, utilisez la valeur \x22OFF\x22.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Compass']['set_resolution']={syn:'Modifie la r\xE9solution des valeurs physique mesur\xE9es.',lib:'compass.set_resolution()',pro:'def set_resolution(<span id=pn>newval</span>)',cmt:'<p>Modifie la r\xE9solution des valeurs physique mesur\xE9es. La r\xE9solution correspond \xE0 la pr\xE9cision de l\x27affichage des mesures. Elle ne change pas la pr\xE9cision de la mesure elle-m\xEAme.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la r\xE9solution des valeurs physique mesur\xE9es'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Compass']['set_userData']={syn:'Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>.',lib:'compass.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',par:{data:'objet quelconque \xE0 m\xE9moriser'}};
+doc['Compass']['startDataLogger']={syn:'D\xE9marre l\x27enregistreur de donn\xE9es du module.',lib:'compass.startDataLogger()',pro:'def startDataLogger()',cmt:'<p>D\xE9marre l\x27enregistreur de donn\xE9es du module. Attention, l\x27enregistreur ne sauvera les mesures de ce capteur que si la fr\xE9quence d\x27enregistrement (logFrequency) n\x27est pas sur \x22OFF\x22.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.'};
+doc['Compass']['stopDataLogger']={syn:'Arr\xEAte l\x27enregistreur de donn\xE9es du module.',lib:'compass.stopDataLogger()',pro:'def stopDataLogger()',cmt:'<p>Arr\xEAte l\x27enregistreur de donn\xE9es du module.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.'};
+doc['Compass']['unmuteValueCallbacks']={syn:'R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'compass.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Cette fonction annule un pr\xE9c\xE9dent appel \xE0 <tt>muteValueCallbacks()</tt>. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+//--- (end of generated code: Compass)
+//--- (generated code: Gyro)
+doc['Gyro']={'':{syn:'Interface de la fonction Gyro',inc:'from yocto_gyro import *',cmt:'<p>La classe YSensor est la classe parente de tous les senseurs Yoctopuce. Elle permet de lire la valeur courante et l\x27unit\xE9 de n\x27importe quel capteur, de lire les valeurs min/max, de configurer la fr\xE9quence d\x27enregistrement autonome des donn\xE9es et de r\xE9cup\xE9rer les mesures enregistr\xE9es. Elle permet aussi d\x27enregistrer un callback appel\xE9 lorsque la valeur mesur\xE9e change ou \xE0 intervalle pr\xE9d\xE9fini. L\x27utilisation de cette classe plut\xF4t qu\x27une de ces sous-classes permet de cr\xE9er des application g\xE9n\xE9riques, compatibles m\xEAme avec les capteurs Yoctopuce futurs. Note: la classe YAnButton est le seul type d\x27entr\xE9e analogique qui n\x27h\xE9rite pas de YSensor.</p>'}};
+doc['Gyro']['FindGyro']={syn:'Permet de retrouver un gyroscope d\x27apr\xE8s un identifiant donn\xE9.',lib:'YGyro.FindGyro()',pro:'def FindGyro(<span id=pn>func</span>)',cmt:'<p>Permet de retrouver un gyroscope d\x27apr\xE8s un identifiant donn\xE9. L\x27identifiant peut \xEAtre sp\xE9cifi\xE9 sous plusieurs formes:<br> <ul> <li>NomLogiqueFonction</li> <li>NoSerieModule.IdentifiantFonction</li> <li>NoSerieModule.NomLogiqueFonction</li> <li>NomLogiqueModule.IdentifiantMat\xE9riel</li> <li>NomLogiqueModule.NomLogiqueFonction</li> </ul></p><p> Cette fonction n\x27exige pas que le gyroscope soit en ligne au moment ou elle est appel\xE9e, l\x27objet retourn\xE9 sera n\xE9anmoins valide. Utiliser la m\xE9thode <tt>YGyro.isOnline()</tt> pour tester si le gyroscope est utilisable \xE0 un moment donn\xE9. En cas d\x27ambigu\xEFt\xE9 lorsqu\x27on fait une recherche par nom logique, aucune erreur ne sera notifi\xE9e: la premi\xE8re instance trouv\xE9e sera renvoy\xE9e. La recherche se fait d\x27abord par nom mat\xE9riel, puis par nom logique.</p>',par:{func:'une cha\xEEne de caract\xE8res qui r\xE9f\xE9rence le gyroscope sans ambigu\xEFt\xE9'},ret:'un objet de classe <tt>YGyro</tt> qui permet ensuite de contr\xF4ler le gyroscope.'};
+doc['Gyro']['FirstGyro']={syn:'Commence l\x27\xE9num\xE9ration des gyroscopes accessibles par la librairie.',lib:'YGyro.FirstGyro()',pro:'def FirstGyro()',cmt:'<p>Commence l\x27\xE9num\xE9ration des gyroscopes accessibles par la librairie. Utiliser la fonction <tt>YGyro.nextGyro()</tt> pour it\xE9rer sur les autres gyroscopes.</p>',ret:'un pointeur sur un objet <tt>YGyro</tt>, correspondant au premier gyroscope accessible en ligne, ou <tt>null</tt> si il n\x27y a pas de gyroscopes disponibles.'};
+doc['Gyro']['calibrateFromPoints']={syn:'Enregistre des points de correction de mesure, typiquement pour compenser l\x27effet d\x27un bo\xEEtier sur les mesures rendues par le capteur.',lib:'gyro.calibrateFromPoints()',pro:'def calibrateFromPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Enregistre des points de correction de mesure, typiquement pour compenser l\x27effet d\x27un bo\xEEtier sur les mesures rendues par le capteur. Il est possible d\x27enregistrer jusqu\x27\xE0 cinq points de correction. Les points de correction doivent \xEAtre fournis en ordre croissant, et dans la plage valide du capteur. Le module effectue automatiquement une interpolation lin\xE9aire de l\x27erreur entre les points sp\xE9cifi\xE9s. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p><p> Pour plus de plus amples possibilit\xE9s d\x27appliquer une surcalibration aux capteurs, veuillez contacter support@yoctopuce.com.</p>',par:{rawValues:'tableau de nombres flottants, correspondant aux valeurs brutes rendues par le capteur pour les points de correction.',refValues:'tableau de nombres flottants, correspondant aux valeurs corrig\xE9es d\xE9sir\xE9es pour les points de correction.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Gyro']['clearCache']={syn:'Invalide le cache.',lib:'gyro.clearCache()',pro:'def clearCache()',cmt:'<p>Invalide le cache. Invalide le cache des valeurs courantes du gyroscope. Force le prochain appel \xE0 une m\xE9thode get_xxx() ou loadxxx() pour charger les les donn\xE9es depuis le module.</p>'};
+doc['Gyro']['describe']={syn:'Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du gyroscope au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'gyro.describe()',pro:'def describe()',cmt:'<p>Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du gyroscope au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. Plus pr\xE9cis\xE9ment, <tt>TYPE</tt> correspond au type de fonction, <tt>NAME</tt> correspond au nom utils\xE9 lors du premier acc\xE8s a la fonction, <tt>SERIAL</tt> correspond au num\xE9ro de s\xE9rie du module si le module est connect\xE9, ou <tt>\x22unresolved\x22</tt> sinon, et <tt>FUNCTIONID</tt> correspond \xE0 l\x27identifiant mat\xE9riel de la fonction si le module est connect\xE9. Par exemple, La methode va retourner <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> si le module est d\xE9j\xE0 connect\xE9 ou <tt>Relay(BadCustomeName.relay1)=unresolved</tt> si le module n\x27est pas d\xE9j\xE0 connect\xE9. Cette methode ne declenche aucune transaction USB ou TCP et peut donc \xEAtre utilis\xE9 dans un debuggeur.</p>',ret:'une cha\xEEne de caract\xE8res d\xE9crivant le gyroscope (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['Gyro']['get_advertisedValue']={syn:'Retourne la valeur courante du gyroscope (pas plus de 6 caract\xE8res).',lib:'gyro.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Retourne la valeur courante du gyroscope (pas plus de 6 caract\xE8res).</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur courante du gyroscope (pas plus de 6 caract\xE8res).',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['Gyro']['get_bandwidth']={syn:'Retourne la fr\xE9quence de rafra\xEEchissement de la mesure, en Hz (Yocto-3D-V2 seulement).',lib:'gyro.get_bandwidth()',pro:'def get_bandwidth()',cmt:'<p>Retourne la fr\xE9quence de rafra\xEEchissement de la mesure, en Hz (Yocto-3D-V2 seulement).</p>',ret:'un entier repr&eacute;sentant la fr\xE9quence de rafra\xEEchissement de la mesure, en Hz (Yocto-3D-V2 seulement)',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_BANDWIDTH_INVALID</tt>.'};
+doc['Gyro']['get_currentRawValue']={syn:'Retourne la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en degr\xE9s par seconde, sous forme de nombre \xE0 virgule.',lib:'gyro.get_currentRawValue()',pro:'def get_currentRawValue()',cmt:'<p>Retourne la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en degr\xE9s par seconde, sous forme de nombre \xE0 virgule.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en degr\xE9s par seconde, sous forme de nombre \xE0 virgule',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_CURRENTRAWVALUE_INVALID</tt>.'};
+doc['Gyro']['get_currentValue']={syn:'Retourne la valeur actuelle de la vitesse angulaire, en degr\xE9s par seconde, sous forme de nombre \xE0 virgule.',lib:'gyro.get_currentValue()',pro:'def get_currentValue()',cmt:'<p>Retourne la valeur actuelle de la vitesse angulaire, en degr\xE9s par seconde, sous forme de nombre \xE0 virgule.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur actuelle de la vitesse angulaire, en degr\xE9s par seconde, sous forme de nombre \xE0 virgule',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_CURRENTVALUE_INVALID</tt>.'};
+doc['Gyro']['get_errorMessage']={syn:'Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du gyroscope.',lib:'gyro.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du gyroscope. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'une cha\xEEne de caract\xE8res correspondant au message de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du gyroscope.'};
+doc['Gyro']['get_errorType']={syn:'Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du gyroscope.',lib:'gyro.get_errorType()',pro:'def get_errorType()',cmt:'<p>Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du gyroscope. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'un nombre correspondant au code de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du gyroscope.'};
+doc['Gyro']['get_friendlyName']={syn:'Retourne un identifiant global du gyroscope au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>.',lib:'gyro.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Retourne un identifiant global du gyroscope au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>. Le cha\xEEne retourn\xE9e utilise soit les noms logiques du module et du gyroscope si ils sont d\xE9finis, soit respectivement le num\xE9ro de s\xE9rie du module et l\x27identifant mat\xE9riel du gyroscope (par exemple: <tt>MyCustomName.relay1</tt>)</p>',ret:'une cha\xEEne de caract\xE8res identifiant le gyroscope en utilisant les noms logiques (ex: <tt>MyCustomName.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['Gyro']['get_functionDescriptor']={syn:'Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction.',lib:'gyro.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction. Cet identifiant peut \xEAtre utilis\xE9 pour tester si deux instance de <tt>YFunction</tt> r\xE9f\xE9rencent physiquement la m\xEAme fonction sur le m\xEAme module.</p>',ret:'un identifiant de type <tt>YFUN_DESCR</tt>.',ext:'Si la fonction n\x27a jamais \xE9t\xE9 contact\xE9e, la valeur retourn\xE9e sera <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>'};
+doc['Gyro']['get_functionId']={syn:'Retourne l\x27identifiant mat\xE9riel du gyroscope, sans r\xE9f\xE9rence au module.',lib:'gyro.get_functionId()',pro:'def get_functionId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel du gyroscope, sans r\xE9f\xE9rence au module. Par example <tt>relay1</tt>.</p>',ret:'une cha\xEEne de caract\xE8res identifiant le gyroscope (ex: <tt>relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['Gyro']['get_hardwareId']={syn:'Retourne l\x27identifiant mat\xE9riel unique du gyroscope au format <tt>SERIAL.FUNCTIONID</tt>.',lib:'gyro.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel unique du gyroscope au format <tt>SERIAL.FUNCTIONID</tt>. L\x27identifiant unique est compos\xE9 du num\xE9ro de s\xE9rie du module et de l\x27identifiant mat\xE9riel du gyroscope (par example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'une cha\xEEne de caract\xE8res identifiant le gyroscope (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['Gyro']['get_heading']={syn:'Retourne une estimation du cap (angle de lacet), bas\xE9e sur l\x27int\xE9gration de mesures gyroscopiques combin\xE9e \xE0 des mesures statiques d\x27acc\xE9l\xE9ration et de champ magn\xE9tique.',lib:'gyro.get_heading()',pro:'def get_heading()',cmt:'<p>Retourne une estimation du cap (angle de lacet), bas\xE9e sur l\x27int\xE9gration de mesures gyroscopiques combin\xE9e \xE0 des mesures statiques d\x27acc\xE9l\xE9ration et de champ magn\xE9tique. L\x27axe de lacet peut \xEAtre attribu\xE9 \xE0 n\x27importe laquelle des direction physiques X, Y ou Z du module \xE0 l\x27aide des m\xE9thodes de la classe <tt>YRefFrame</tt>.</p>',ret:'un nombre \xE0 virgule correspondant au cap, exprim\xE9 en degr\xE9s (entre 0 et 360).'};
+doc['Gyro']['get_highestValue']={syn:'Retourne la valeur maximale observ\xE9e pour la vitesse angulaire depuis le d\xE9marrage du module.',lib:'gyro.get_highestValue()',pro:'def get_highestValue()',cmt:'<p>Retourne la valeur maximale observ\xE9e pour la vitesse angulaire depuis le d\xE9marrage du module.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur maximale observ\xE9e pour la vitesse angulaire depuis le d\xE9marrage du module',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_HIGHESTVALUE_INVALID</tt>.'};
+doc['Gyro']['get_logFrequency']={syn:'Retourne la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es.',lib:'gyro.get_logFrequency()',pro:'def get_logFrequency()',cmt:'<p>Retourne la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_LOGFREQUENCY_INVALID</tt>.'};
+doc['Gyro']['get_logicalName']={syn:'Retourne le nom logique du gyroscope.',lib:'gyro.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Retourne le nom logique du gyroscope.</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du gyroscope.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['Gyro']['get_lowestValue']={syn:'Retourne la valeur minimale observ\xE9e pour la vitesse angulaire depuis le d\xE9marrage du module.',lib:'gyro.get_lowestValue()',pro:'def get_lowestValue()',cmt:'<p>Retourne la valeur minimale observ\xE9e pour la vitesse angulaire depuis le d\xE9marrage du module.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur minimale observ\xE9e pour la vitesse angulaire depuis le d\xE9marrage du module',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_LOWESTVALUE_INVALID</tt>.'};
+doc['Gyro']['get_module']={syn:'Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction.',lib:'gyro.get_module()',pro:'def get_module()',cmt:'<p>Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction. Si la fonction ne peut \xEAtre trouv\xE9e sur aucun module, l\x27instance de <tt>YModule</tt> retourn\xE9e ne sera pas joignable.</p>',ret:'une instance de <tt>YModule</tt>'};
+doc['Gyro']['get_pitch']={syn:'Retourne une estimation de l\x27assiette (angle de tangage), bas\xE9e sur l\x27int\xE9gration de mesures gyroscopiques combin\xE9e \xE0 des mesures statiques d\x27acc\xE9l\xE9ration et de champ magn\xE9tique.',lib:'gyro.get_pitch()',pro:'def get_pitch()',cmt:'<p>Retourne une estimation de l\x27assiette (angle de tangage), bas\xE9e sur l\x27int\xE9gration de mesures gyroscopiques combin\xE9e \xE0 des mesures statiques d\x27acc\xE9l\xE9ration et de champ magn\xE9tique. L\x27axe de tangage peut \xEAtre attribu\xE9 \xE0 n\x27importe laquelle des direction physiques X, Y ou Z du module \xE0 l\x27aide des m\xE9thodes de la classe <tt>YRefFrame</tt>.</p>',ret:'un nombre \xE0 virgule correspondant \xE0 l\x27assiette, exprim\xE9e en degr\xE9s (entre -90 et +90).'};
+doc['Gyro']['get_quaternionW']={syn:'Retourne la composante <tt>w</tt> (composante r\xE9elle) du quaternion d\xE9crivant l\x27orientation estimat\xE9e du module, bas\xE9e sur l\x27int\xE9gration de mesures gyroscopiques combin\xE9e \xE0 des mesures statiques d\x27acc\xE9l\xE9ration et de champ magn\xE9tique.',lib:'gyro.get_quaternionW()',pro:'def get_quaternionW()',cmt:'<p>Retourne la composante <tt>w</tt> (composante r\xE9elle) du quaternion d\xE9crivant l\x27orientation estimat\xE9e du module, bas\xE9e sur l\x27int\xE9gration de mesures gyroscopiques combin\xE9e \xE0 des mesures statiques d\x27acc\xE9l\xE9ration et de champ magn\xE9tique.</p>',ret:'un nombre \xE0 virgule correspondant \xE0 la composante <tt>w</tt> du quaternion.'};
+doc['Gyro']['get_quaternionX']={syn:'Retourne la composante <tt>x</tt> du quaternion d\xE9crivant l\x27orientation estimat\xE9e du module, bas\xE9e sur l\x27int\xE9gration de mesures gyroscopiques combin\xE9e \xE0 des mesures statiques d\x27acc\xE9l\xE9ration et de champ magn\xE9tique.',lib:'gyro.get_quaternionX()',pro:'def get_quaternionX()',cmt:'<p>Retourne la composante <tt>x</tt> du quaternion d\xE9crivant l\x27orientation estimat\xE9e du module, bas\xE9e sur l\x27int\xE9gration de mesures gyroscopiques combin\xE9e \xE0 des mesures statiques d\x27acc\xE9l\xE9ration et de champ magn\xE9tique. La composante <tt>x</tt> est essentiellement corr\xE9l\xE9e aux rotations sur l\x27axe de roulis.</p>',ret:'un nombre \xE0 virgule correspondant \xE0 la composante <tt>x</tt> du quaternion.'};
+doc['Gyro']['get_quaternionY']={syn:'Retourne la composante <tt>y</tt> du quaternion d\xE9crivant l\x27orientation estimat\xE9e du module, bas\xE9e sur l\x27int\xE9gration de mesures gyroscopiques combin\xE9e \xE0 des mesures statiques d\x27acc\xE9l\xE9ration et de champ magn\xE9tique.',lib:'gyro.get_quaternionY()',pro:'def get_quaternionY()',cmt:'<p>Retourne la composante <tt>y</tt> du quaternion d\xE9crivant l\x27orientation estimat\xE9e du module, bas\xE9e sur l\x27int\xE9gration de mesures gyroscopiques combin\xE9e \xE0 des mesures statiques d\x27acc\xE9l\xE9ration et de champ magn\xE9tique. La composante <tt>y</tt> est essentiellement corr\xE9l\xE9e aux rotations sur l\x27axe de tangage.</p>',ret:'un nombre \xE0 virgule correspondant \xE0 la composante <tt>y</tt> du quaternion.'};
+doc['Gyro']['get_quaternionZ']={syn:'Retourne la composante <tt>z</tt> du quaternion d\xE9crivant l\x27orientation estimat\xE9e du module, bas\xE9e sur l\x27int\xE9gration de mesures gyroscopiques combin\xE9e \xE0 des mesures statiques d\x27acc\xE9l\xE9ration et de champ magn\xE9tique.',lib:'gyro.get_quaternionZ()',pro:'def get_quaternionZ()',cmt:'<p>Retourne la composante <tt>z</tt> du quaternion d\xE9crivant l\x27orientation estimat\xE9e du module, bas\xE9e sur l\x27int\xE9gration de mesures gyroscopiques combin\xE9e \xE0 des mesures statiques d\x27acc\xE9l\xE9ration et de champ magn\xE9tique. La composante <tt>z</tt> est essentiellement corr\xE9l\xE9e aux rotations sur l\x27axe de lacet.</p>',ret:'un nombre \xE0 virgule correspondant \xE0 la composante <tt>z</tt> du quaternion.'};
+doc['Gyro']['get_recordedData']={syn:'Retourne un objet DataSet repr\xE9sentant des mesures de ce capteur pr\xE9c\xE9demment enregistr\xE9es \xE0 l\x27aide du DataLogger, pour l\x27intervalle de temps sp\xE9cifi\xE9.',lib:'gyro.get_recordedData()',pro:'def get_recordedData(<span id=pn>startTime</span>, <span id=pn>endTime</span>)',cmt:'<p>Retourne un objet DataSet repr\xE9sentant des mesures de ce capteur pr\xE9c\xE9demment enregistr\xE9es \xE0 l\x27aide du DataLogger, pour l\x27intervalle de temps sp\xE9cifi\xE9. Veuillez vous r\xE9f\xE9rer \xE0 la documentation de la classe DataSet pour plus plus d\x27informations sur la mani\xE8re d\x27obtenir un aper\xE7u des mesures pour la p\xE9riode, et comment charger progressivement une grande quantit\xE9 de mesures depuis le dataLogger.</p><p> Cette m\xE9thode ne fonctionne que si le module utilise un firmware r\xE9cent, car les objets DataSet ne sont pas support\xE9s par les firmwares ant\xE9rieurs \xE0 la r\xE9vision 13000.</p>',par:{startTime:'le d\xE9but de l\x27intervalle de mesure d\xE9sir\xE9, c\x27est \xE0 dire en nombre de secondes depuis le 1er janvier 1970 UTC. La valeur 0 peut \xEAtre utilis\xE9e pour ne poser aucune limite sur le d\xE9but des mesures.',endTime:'la find de l\x27intercalle de mesure d\xE9sir\xE9, c\x27est \xE0 dire en nombre de secondes depuis le 1er janvier 1970 UTC. La valeur 0 peut \xEAtre utilis\xE9e pour ne poser aucune limite de fin.'},ret:'une instance de YDataSet, dont les m\xE9thodes permettent de d\x27acc\xE9der aux donn\xE9es historiques souhait\xE9es.'};
+doc['Gyro']['get_reportFrequency']={syn:'Retourne la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction.',lib:'gyro.get_reportFrequency()',pro:'def get_reportFrequency()',cmt:'<p>Retourne la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_REPORTFREQUENCY_INVALID</tt>.'};
+doc['Gyro']['get_resolution']={syn:'Retourne la r\xE9solution des valeurs mesur\xE9es.',lib:'gyro.get_resolution()',pro:'def get_resolution()',cmt:'<p>Retourne la r\xE9solution des valeurs mesur\xE9es. La r\xE9solution correspond \xE0 la pr\xE9cision num\xE9rique de la repr\xE9sentation des mesures. Elle n\x27est pas forc\xE9ment identique \xE0 la pr\xE9cision r\xE9elle du capteur.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la r\xE9solution des valeurs mesur\xE9es',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_RESOLUTION_INVALID</tt>.'};
+doc['Gyro']['get_roll']={syn:'Retourne une estimation de l\x27inclinaison (angle de roulis), bas\xE9e sur l\x27int\xE9gration de mesures gyroscopiques combin\xE9e \xE0 des mesures statiques d\x27acc\xE9l\xE9ration et de champ magn\xE9tique.',lib:'gyro.get_roll()',pro:'def get_roll()',cmt:'<p>Retourne une estimation de l\x27inclinaison (angle de roulis), bas\xE9e sur l\x27int\xE9gration de mesures gyroscopiques combin\xE9e \xE0 des mesures statiques d\x27acc\xE9l\xE9ration et de champ magn\xE9tique. L\x27axe de roulis peut \xEAtre attribu\xE9 \xE0 n\x27importe laquelle des direction physiques X, Y ou Z du module \xE0 l\x27aide des m\xE9thodes de la classe <tt>YRefFrame</tt>.</p>',ret:'un nombre \xE0 virgule correspondant \xE0 l\x27inclinaison, exprim\xE9e en degr\xE9s (entre -180 et +180).'};
+doc['Gyro']['get_sensorState']={syn:'Retourne le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment.',lib:'gyro.get_sensorState()',pro:'def get_sensorState()',cmt:'<p>Retourne le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment.</p>',ret:'un entier repr&eacute;sentant le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_SENSORSTATE_INVALID</tt>.'};
+doc['Gyro']['get_unit']={syn:'Retourne l\x27unit\xE9 dans laquelle la vitesse angulaire est exprim\xE9e.',lib:'gyro.get_unit()',pro:'def get_unit()',cmt:'<p>Retourne l\x27unit\xE9 dans laquelle la vitesse angulaire est exprim\xE9e.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant l\x27unit\xE9 dans laquelle la vitesse angulaire est exprim\xE9e',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_UNIT_INVALID</tt>.'};
+doc['Gyro']['get_userData']={syn:'Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>.',lib:'gyro.get_userData()',pro:'def get_userData()',cmt:'<p>Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',ret:'l\x27objet stock\xE9 pr\xE9c\xE9demment par l\x27appelant.'};
+doc['Gyro']['get_xValue']={syn:'Retourne la vitesse angulaire autour de l\x27axe X du module, sous forme de nombre \xE0 virgule.',lib:'gyro.get_xValue()',pro:'def get_xValue()',cmt:'<p>Retourne la vitesse angulaire autour de l\x27axe X du module, sous forme de nombre \xE0 virgule.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la vitesse angulaire autour de l\x27axe X du module, sous forme de nombre \xE0 virgule',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_XVALUE_INVALID</tt>.'};
+doc['Gyro']['get_yValue']={syn:'Retourne la vitesse angulaire autour de l\x27axe Y du module, sous forme de nombre \xE0 virgule.',lib:'gyro.get_yValue()',pro:'def get_yValue()',cmt:'<p>Retourne la vitesse angulaire autour de l\x27axe Y du module, sous forme de nombre \xE0 virgule.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la vitesse angulaire autour de l\x27axe Y du module, sous forme de nombre \xE0 virgule',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_YVALUE_INVALID</tt>.'};
+doc['Gyro']['get_zValue']={syn:'Retourne la vitesse angulaire autour de l\x27axe Z du module, sous forme de nombre \xE0 virgule.',lib:'gyro.get_zValue()',pro:'def get_zValue()',cmt:'<p>Retourne la vitesse angulaire autour de l\x27axe Z du module, sous forme de nombre \xE0 virgule.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la vitesse angulaire autour de l\x27axe Z du module, sous forme de nombre \xE0 virgule',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_ZVALUE_INVALID</tt>.'};
+doc['Gyro']['isOnline']={syn:'V\xE9rifie si le module h\xE9bergeant le gyroscope est joignable, sans d\xE9clencher d\x27erreur.',lib:'gyro.isOnline()',pro:'def isOnline()',cmt:'<p>V\xE9rifie si le module h\xE9bergeant le gyroscope est joignable, sans d\xE9clencher d\x27erreur. Si les valeurs des attributs en cache du gyroscope sont valides au moment de l\x27appel, le module est consid\xE9r\xE9 joignable. Cette fonction ne cause en aucun cas d\x27exception, quelle que soit l\x27erreur qui pourrait se produire lors de la v\xE9rification de joignabilit\xE9.</p>',ret:'<tt>true</tt> si le gyroscope est joignable, <tt>false</tt> sinon'};
+doc['Gyro']['load']={syn:'Met en cache les valeurs courantes du gyroscope, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e.',lib:'gyro.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Met en cache les valeurs courantes du gyroscope, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e. Par d\xE9faut, lorsqu\x27on acc\xE8de \xE0 un module, tous les attributs des fonctions du module sont automatiquement mises en cache pour la dur\xE9e standard (5 ms). Cette m\xE9thode peut \xEAtre utilis\xE9e pour marquer occasionellement les donn\xE9es cach\xE9es comme valides pour une plus longue p\xE9riode, par exemple dans le but de r\xE9duire le trafic r\xE9seau.</p>',par:{msValidity:'un entier correspondant \xE0 la dur\xE9e de validit\xE9 attribu\xE9e aux les param\xE8tres charg\xE9s, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Gyro']['loadAttribute']={syn:'Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.',lib:'gyro.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un cha\xEEne vide.'};
+doc['Gyro']['loadCalibrationPoints']={syn:'R\xE9cup\xE8re les points de correction de mesure pr\xE9c\xE9demment enregistr\xE9s \xE0 l\x27aide de la m\xE9thode <tt>calibrateFromPoints</tt>.',lib:'gyro.loadCalibrationPoints()',pro:'def loadCalibrationPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>R\xE9cup\xE8re les points de correction de mesure pr\xE9c\xE9demment enregistr\xE9s \xE0 l\x27aide de la m\xE9thode <tt>calibrateFromPoints</tt>.</p>',par:{rawValues:'tableau de nombres flottants, qui sera rempli par la fonction avec les valeurs brutes des points de correction.',refValues:'tableau de nombres flottants, qui sera rempli par la fonction avec les valeurs d\xE9sir\xE9es des points de correction.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Gyro']['muteValueCallbacks']={syn:'D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'gyro.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Vous pouvez utiliser cette fonction pour \xE9conomiser la bande passante et le CPU sur les machines de faible puissance, ou pour \xE9viter le d\xE9clanchement de callbacks HTTP. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Gyro']['nextGyro']={syn:'Continue l\x27\xE9num\xE9ration des gyroscopes commenc\xE9e \xE0 l\x27aide de <tt>yFirstGyro()</tt>.',lib:'gyro.nextGyro()',pro:'def nextGyro()',cmt:'<p>Continue l\x27\xE9num\xE9ration des gyroscopes commenc\xE9e \xE0 l\x27aide de <tt>yFirstGyro()</tt>.</p>',ret:'un pointeur sur un objet <tt>YGyro</tt> accessible en ligne, ou <tt>null</tt> lorsque l\x27\xE9num\xE9ration est termin\xE9e.'};
+doc['Gyro']['registerAnglesCallback']={syn:'Enregistre une fonction de callback qui sera appel\xE9e \xE0 chaque changement de l\x27estimation de l\x27orientation du module.',lib:'gyro.registerAnglesCallback()',pro:'def registerAnglesCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre une fonction de callback qui sera appel\xE9e \xE0 chaque changement de l\x27estimation de l\x27orientation du module. La fr\xE9quence d\x27appel est typiquement de 95Hz durant un mouvement. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand le callback peut se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que le callback ne soit pas appel\xE9s trop tard. Pour d\xE9sactiver le callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter quatre arguments: l\x27objet YGyro du module qui a tourn\xE9, et les valeurs des trois angles roll, pitch et heading en degr\xE9s (nombres \xE0 virgules).'}};
+doc['Gyro']['registerQuaternionCallback']={syn:'Enregistre une fonction de callback qui sera appel\xE9e \xE0 chaque changement de l\x27estimation de l\x27orientation du module.',lib:'gyro.registerQuaternionCallback()',pro:'def registerQuaternionCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre une fonction de callback qui sera appel\xE9e \xE0 chaque changement de l\x27estimation de l\x27orientation du module. La fr\xE9quence d\x27appel est typiquement de 95Hz durant un mouvement. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand le callback peut se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que le callback ne soit pas appel\xE9s trop tard. Pour d\xE9sactiver le callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter cinq arguments: l\x27objet YGyro du module qui a tourn\xE9, et les valeurs des quatre composantes w, x, y et z du quaternion (nombres \xE0 virgules).'}};
+doc['Gyro']['registerTimedReportCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque notification p\xE9riodique.',lib:'gyro.registerTimedReportCallback()',pro:'def registerTimedReportCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque notification p\xE9riodique. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callbacks peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callbacks ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et un objet YMeasure d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['Gyro']['registerValueCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e.',lib:'gyro.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callback peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callback ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et la cha\xEEne de caract\xE8re d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['Gyro']['set_bandwidth']={syn:'Modifie la fr\xE9quence de rafra\xEEchissement de la mesure, en Hz (Yocto-3D-V2 seulement).',lib:'gyro.set_bandwidth()',pro:'def set_bandwidth(<span id=pn>newval</span>)',cmt:'<p>Modifie la fr\xE9quence de rafra\xEEchissement de la mesure, en Hz (Yocto-3D-V2 seulement). Lorsque la fr\xE9quence est plus basse, un moyennage est effectu\xE9.</p>',par:{newval:'un entier repr&eacute;sentant la fr\xE9quence de rafra\xEEchissement de la mesure, en Hz (Yocto-3D-V2 seulement)'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Gyro']['set_highestValue']={syn:'Modifie la m\xE9moire de valeur maximale observ\xE9e.',lib:'gyro.set_highestValue()',pro:'def set_highestValue(<span id=pn>newval</span>)',cmt:'<p>Modifie la m\xE9moire de valeur maximale observ\xE9e.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la m\xE9moire de valeur maximale observ\xE9e'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Gyro']['set_logFrequency']={syn:'Modifie la fr\xE9quence d\x27enregistrement des mesures dans le datalogger.',lib:'gyro.set_logFrequency()',pro:'def set_logFrequency(<span id=pn>newval</span>)',cmt:'<p>Modifie la fr\xE9quence d\x27enregistrement des mesures dans le datalogger. La fr\xE9quence peut \xEAtre sp\xE9cifi\xE9e en mesures par secondes, en mesures par minutes (par exemple \x2215/m\x22) ou en mesures par heure (par exemple \x224/h\x22). Pour d\xE9sactiver l\x27enregistrement des mesures de cette fonction, utilisez la valeur \x22OFF\x22.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence d\x27enregistrement des mesures dans le datalogger'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Gyro']['set_logicalName']={syn:'Modifie le nom logique du gyroscope.',lib:'gyro.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Modifie le nom logique du gyroscope. Vous pouvez utiliser <tt>yCheckLogicalName()</tt> pour v\xE9rifier si votre param\xE8tre est valide. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du gyroscope.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27appel se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Gyro']['set_lowestValue']={syn:'Modifie la m\xE9moire de valeur minimale observ\xE9e.',lib:'gyro.set_lowestValue()',pro:'def set_lowestValue(<span id=pn>newval</span>)',cmt:'<p>Modifie la m\xE9moire de valeur minimale observ\xE9e.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la m\xE9moire de valeur minimale observ\xE9e'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Gyro']['set_reportFrequency']={syn:'Modifie la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es.',lib:'gyro.set_reportFrequency()',pro:'def set_reportFrequency(<span id=pn>newval</span>)',cmt:'<p>Modifie la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es. La fr\xE9quence peut \xEAtre sp\xE9cifi\xE9e en mesures par secondes, en mesures par minutes (par exemple \x2215/m\x22) ou en mesures par heure (par exemple \x224/h\x22). Pour d\xE9sactiver les notifications p\xE9riodiques pour cette fonction, utilisez la valeur \x22OFF\x22.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Gyro']['set_resolution']={syn:'Modifie la r\xE9solution des valeurs physique mesur\xE9es.',lib:'gyro.set_resolution()',pro:'def set_resolution(<span id=pn>newval</span>)',cmt:'<p>Modifie la r\xE9solution des valeurs physique mesur\xE9es. La r\xE9solution correspond \xE0 la pr\xE9cision de l\x27affichage des mesures. Elle ne change pas la pr\xE9cision de la mesure elle-m\xEAme.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la r\xE9solution des valeurs physique mesur\xE9es'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Gyro']['set_userData']={syn:'Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>.',lib:'gyro.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',par:{data:'objet quelconque \xE0 m\xE9moriser'}};
+doc['Gyro']['startDataLogger']={syn:'D\xE9marre l\x27enregistreur de donn\xE9es du module.',lib:'gyro.startDataLogger()',pro:'def startDataLogger()',cmt:'<p>D\xE9marre l\x27enregistreur de donn\xE9es du module. Attention, l\x27enregistreur ne sauvera les mesures de ce capteur que si la fr\xE9quence d\x27enregistrement (logFrequency) n\x27est pas sur \x22OFF\x22.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.'};
+doc['Gyro']['stopDataLogger']={syn:'Arr\xEAte l\x27enregistreur de donn\xE9es du module.',lib:'gyro.stopDataLogger()',pro:'def stopDataLogger()',cmt:'<p>Arr\xEAte l\x27enregistreur de donn\xE9es du module.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.'};
+doc['Gyro']['unmuteValueCallbacks']={syn:'R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'gyro.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Cette fonction annule un pr\xE9c\xE9dent appel \xE0 <tt>muteValueCallbacks()</tt>. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+//--- (end of generated code: Gyro)
+//--- (generated code: Tilt)
+doc['Tilt']={'':{syn:'Interface de la fonction Tilt',inc:'from yocto_tilt import *',cmt:'<p>La classe YSensor est la classe parente de tous les senseurs Yoctopuce. Elle permet de lire la valeur courante et l\x27unit\xE9 de n\x27importe quel capteur, de lire les valeurs min/max, de configurer la fr\xE9quence d\x27enregistrement autonome des donn\xE9es et de r\xE9cup\xE9rer les mesures enregistr\xE9es. Elle permet aussi d\x27enregistrer un callback appel\xE9 lorsque la valeur mesur\xE9e change ou \xE0 intervalle pr\xE9d\xE9fini. L\x27utilisation de cette classe plut\xF4t qu\x27une de ces sous-classes permet de cr\xE9er des application g\xE9n\xE9riques, compatibles m\xEAme avec les capteurs Yoctopuce futurs. Note: la classe YAnButton est le seul type d\x27entr\xE9e analogique qui n\x27h\xE9rite pas de YSensor.</p>'}};
+doc['Tilt']['FindTilt']={syn:'Permet de retrouver un inclinom\xE8tre d\x27apr\xE8s un identifiant donn\xE9.',lib:'YTilt.FindTilt()',pro:'def FindTilt(<span id=pn>func</span>)',cmt:'<p>Permet de retrouver un inclinom\xE8tre d\x27apr\xE8s un identifiant donn\xE9. L\x27identifiant peut \xEAtre sp\xE9cifi\xE9 sous plusieurs formes:<br> <ul> <li>NomLogiqueFonction</li> <li>NoSerieModule.IdentifiantFonction</li> <li>NoSerieModule.NomLogiqueFonction</li> <li>NomLogiqueModule.IdentifiantMat\xE9riel</li> <li>NomLogiqueModule.NomLogiqueFonction</li> </ul></p><p> Cette fonction n\x27exige pas que l\x27inclinom\xE8tre soit en ligne au moment ou elle est appel\xE9e, l\x27objet retourn\xE9 sera n\xE9anmoins valide. Utiliser la m\xE9thode <tt>YTilt.isOnline()</tt> pour tester si l\x27inclinom\xE8tre est utilisable \xE0 un moment donn\xE9. En cas d\x27ambigu\xEFt\xE9 lorsqu\x27on fait une recherche par nom logique, aucune erreur ne sera notifi\xE9e: la premi\xE8re instance trouv\xE9e sera renvoy\xE9e. La recherche se fait d\x27abord par nom mat\xE9riel, puis par nom logique.</p>',par:{func:'une cha\xEEne de caract\xE8res qui r\xE9f\xE9rence l\x27inclinom\xE8tre sans ambigu\xEFt\xE9'},ret:'un objet de classe <tt>YTilt</tt> qui permet ensuite de contr\xF4ler l\x27inclinom\xE8tre.'};
+doc['Tilt']['FirstTilt']={syn:'Commence l\x27\xE9num\xE9ration des inclinom\xE8tres accessibles par la librairie.',lib:'YTilt.FirstTilt()',pro:'def FirstTilt()',cmt:'<p>Commence l\x27\xE9num\xE9ration des inclinom\xE8tres accessibles par la librairie. Utiliser la fonction <tt>YTilt.nextTilt()</tt> pour it\xE9rer sur les autres inclinom\xE8tres.</p>',ret:'un pointeur sur un objet <tt>YTilt</tt>, correspondant au premier inclinom\xE8tre accessible en ligne, ou <tt>null</tt> si il n\x27y a pas de inclinom\xE8tres disponibles.'};
+doc['Tilt']['calibrateFromPoints']={syn:'Enregistre des points de correction de mesure, typiquement pour compenser l\x27effet d\x27un bo\xEEtier sur les mesures rendues par le capteur.',lib:'tilt.calibrateFromPoints()',pro:'def calibrateFromPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Enregistre des points de correction de mesure, typiquement pour compenser l\x27effet d\x27un bo\xEEtier sur les mesures rendues par le capteur. Il est possible d\x27enregistrer jusqu\x27\xE0 cinq points de correction. Les points de correction doivent \xEAtre fournis en ordre croissant, et dans la plage valide du capteur. Le module effectue automatiquement une interpolation lin\xE9aire de l\x27erreur entre les points sp\xE9cifi\xE9s. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p><p> Pour plus de plus amples possibilit\xE9s d\x27appliquer une surcalibration aux capteurs, veuillez contacter support@yoctopuce.com.</p>',par:{rawValues:'tableau de nombres flottants, correspondant aux valeurs brutes rendues par le capteur pour les points de correction.',refValues:'tableau de nombres flottants, correspondant aux valeurs corrig\xE9es d\xE9sir\xE9es pour les points de correction.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Tilt']['clearCache']={syn:'Invalide le cache.',lib:'tilt.clearCache()',pro:'def clearCache()',cmt:'<p>Invalide le cache. Invalide le cache des valeurs courantes de l\x27inclinom\xE8tre. Force le prochain appel \xE0 une m\xE9thode get_xxx() ou loadxxx() pour charger les les donn\xE9es depuis le module.</p>'};
+doc['Tilt']['describe']={syn:'Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance de l\x27inclinom\xE8tre au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'tilt.describe()',pro:'def describe()',cmt:'<p>Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance de l\x27inclinom\xE8tre au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. Plus pr\xE9cis\xE9ment, <tt>TYPE</tt> correspond au type de fonction, <tt>NAME</tt> correspond au nom utils\xE9 lors du premier acc\xE8s a la fonction, <tt>SERIAL</tt> correspond au num\xE9ro de s\xE9rie du module si le module est connect\xE9, ou <tt>\x22unresolved\x22</tt> sinon, et <tt>FUNCTIONID</tt> correspond \xE0 l\x27identifiant mat\xE9riel de la fonction si le module est connect\xE9. Par exemple, La methode va retourner <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> si le module est d\xE9j\xE0 connect\xE9 ou <tt>Relay(BadCustomeName.relay1)=unresolved</tt> si le module n\x27est pas d\xE9j\xE0 connect\xE9. Cette methode ne declenche aucune transaction USB ou TCP et peut donc \xEAtre utilis\xE9 dans un debuggeur.</p>',ret:'une cha\xEEne de caract\xE8res d\xE9crivant l\x27inclinom\xE8tre (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['Tilt']['get_advertisedValue']={syn:'Retourne la valeur courante de l\x27inclinom\xE8tre (pas plus de 6 caract\xE8res).',lib:'tilt.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Retourne la valeur courante de l\x27inclinom\xE8tre (pas plus de 6 caract\xE8res).</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur courante de l\x27inclinom\xE8tre (pas plus de 6 caract\xE8res).',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['Tilt']['get_bandwidth']={syn:'Retourne la fr\xE9quence de rafra\xEEchissement de la mesure, en Hz (Yocto-3D-V2 seulement).',lib:'tilt.get_bandwidth()',pro:'def get_bandwidth()',cmt:'<p>Retourne la fr\xE9quence de rafra\xEEchissement de la mesure, en Hz (Yocto-3D-V2 seulement).</p>',ret:'un entier repr&eacute;sentant la fr\xE9quence de rafra\xEEchissement de la mesure, en Hz (Yocto-3D-V2 seulement)',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_BANDWIDTH_INVALID</tt>.'};
+doc['Tilt']['get_currentRawValue']={syn:'Retourne la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en degr\xE9s, sous forme de nombre \xE0 virgule.',lib:'tilt.get_currentRawValue()',pro:'def get_currentRawValue()',cmt:'<p>Retourne la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en degr\xE9s, sous forme de nombre \xE0 virgule.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en degr\xE9s, sous forme de nombre \xE0 virgule',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_CURRENTRAWVALUE_INVALID</tt>.'};
+doc['Tilt']['get_currentValue']={syn:'Retourne la valeur actuelle de l\x27inclinaison, en degr\xE9s, sous forme de nombre \xE0 virgule.',lib:'tilt.get_currentValue()',pro:'def get_currentValue()',cmt:'<p>Retourne la valeur actuelle de l\x27inclinaison, en degr\xE9s, sous forme de nombre \xE0 virgule.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur actuelle de l\x27inclinaison, en degr\xE9s, sous forme de nombre \xE0 virgule',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_CURRENTVALUE_INVALID</tt>.'};
+doc['Tilt']['get_errorMessage']={syn:'Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de l\x27inclinom\xE8tre.',lib:'tilt.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de l\x27inclinom\xE8tre. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'une cha\xEEne de caract\xE8res correspondant au message de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation de l\x27inclinom\xE8tre.'};
+doc['Tilt']['get_errorType']={syn:'Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de l\x27inclinom\xE8tre.',lib:'tilt.get_errorType()',pro:'def get_errorType()',cmt:'<p>Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de l\x27inclinom\xE8tre. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'un nombre correspondant au code de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation de l\x27inclinom\xE8tre.'};
+doc['Tilt']['get_friendlyName']={syn:'Retourne un identifiant global de l\x27inclinom\xE8tre au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>.',lib:'tilt.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Retourne un identifiant global de l\x27inclinom\xE8tre au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>. Le cha\xEEne retourn\xE9e utilise soit les noms logiques du module et de l\x27inclinom\xE8tre si ils sont d\xE9finis, soit respectivement le num\xE9ro de s\xE9rie du module et l\x27identifant mat\xE9riel de l\x27inclinom\xE8tre (par exemple: <tt>MyCustomName.relay1</tt>)</p>',ret:'une cha\xEEne de caract\xE8res identifiant l\x27inclinom\xE8tre en utilisant les noms logiques (ex: <tt>MyCustomName.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['Tilt']['get_functionDescriptor']={syn:'Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction.',lib:'tilt.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction. Cet identifiant peut \xEAtre utilis\xE9 pour tester si deux instance de <tt>YFunction</tt> r\xE9f\xE9rencent physiquement la m\xEAme fonction sur le m\xEAme module.</p>',ret:'un identifiant de type <tt>YFUN_DESCR</tt>.',ext:'Si la fonction n\x27a jamais \xE9t\xE9 contact\xE9e, la valeur retourn\xE9e sera <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>'};
+doc['Tilt']['get_functionId']={syn:'Retourne l\x27identifiant mat\xE9riel de l\x27inclinom\xE8tre, sans r\xE9f\xE9rence au module.',lib:'tilt.get_functionId()',pro:'def get_functionId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel de l\x27inclinom\xE8tre, sans r\xE9f\xE9rence au module. Par example <tt>relay1</tt>.</p>',ret:'une cha\xEEne de caract\xE8res identifiant l\x27inclinom\xE8tre (ex: <tt>relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['Tilt']['get_hardwareId']={syn:'Retourne l\x27identifiant mat\xE9riel unique de l\x27inclinom\xE8tre au format <tt>SERIAL.FUNCTIONID</tt>.',lib:'tilt.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel unique de l\x27inclinom\xE8tre au format <tt>SERIAL.FUNCTIONID</tt>. L\x27identifiant unique est compos\xE9 du num\xE9ro de s\xE9rie du module et de l\x27identifiant mat\xE9riel de l\x27inclinom\xE8tre (par example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'une cha\xEEne de caract\xE8res identifiant l\x27inclinom\xE8tre (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['Tilt']['get_highestValue']={syn:'Retourne la valeur maximale observ\xE9e pour l\x27inclinaison depuis le d\xE9marrage du module.',lib:'tilt.get_highestValue()',pro:'def get_highestValue()',cmt:'<p>Retourne la valeur maximale observ\xE9e pour l\x27inclinaison depuis le d\xE9marrage du module.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur maximale observ\xE9e pour l\x27inclinaison depuis le d\xE9marrage du module',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_HIGHESTVALUE_INVALID</tt>.'};
+doc['Tilt']['get_logFrequency']={syn:'Retourne la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es.',lib:'tilt.get_logFrequency()',pro:'def get_logFrequency()',cmt:'<p>Retourne la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_LOGFREQUENCY_INVALID</tt>.'};
+doc['Tilt']['get_logicalName']={syn:'Retourne le nom logique de l\x27inclinom\xE8tre.',lib:'tilt.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Retourne le nom logique de l\x27inclinom\xE8tre.</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique de l\x27inclinom\xE8tre.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['Tilt']['get_lowestValue']={syn:'Retourne la valeur minimale observ\xE9e pour l\x27inclinaison depuis le d\xE9marrage du module.',lib:'tilt.get_lowestValue()',pro:'def get_lowestValue()',cmt:'<p>Retourne la valeur minimale observ\xE9e pour l\x27inclinaison depuis le d\xE9marrage du module.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur minimale observ\xE9e pour l\x27inclinaison depuis le d\xE9marrage du module',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_LOWESTVALUE_INVALID</tt>.'};
+doc['Tilt']['get_module']={syn:'Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction.',lib:'tilt.get_module()',pro:'def get_module()',cmt:'<p>Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction. Si la fonction ne peut \xEAtre trouv\xE9e sur aucun module, l\x27instance de <tt>YModule</tt> retourn\xE9e ne sera pas joignable.</p>',ret:'une instance de <tt>YModule</tt>'};
+doc['Tilt']['get_recordedData']={syn:'Retourne un objet DataSet repr\xE9sentant des mesures de ce capteur pr\xE9c\xE9demment enregistr\xE9es \xE0 l\x27aide du DataLogger, pour l\x27intervalle de temps sp\xE9cifi\xE9.',lib:'tilt.get_recordedData()',pro:'def get_recordedData(<span id=pn>startTime</span>, <span id=pn>endTime</span>)',cmt:'<p>Retourne un objet DataSet repr\xE9sentant des mesures de ce capteur pr\xE9c\xE9demment enregistr\xE9es \xE0 l\x27aide du DataLogger, pour l\x27intervalle de temps sp\xE9cifi\xE9. Veuillez vous r\xE9f\xE9rer \xE0 la documentation de la classe DataSet pour plus plus d\x27informations sur la mani\xE8re d\x27obtenir un aper\xE7u des mesures pour la p\xE9riode, et comment charger progressivement une grande quantit\xE9 de mesures depuis le dataLogger.</p><p> Cette m\xE9thode ne fonctionne que si le module utilise un firmware r\xE9cent, car les objets DataSet ne sont pas support\xE9s par les firmwares ant\xE9rieurs \xE0 la r\xE9vision 13000.</p>',par:{startTime:'le d\xE9but de l\x27intervalle de mesure d\xE9sir\xE9, c\x27est \xE0 dire en nombre de secondes depuis le 1er janvier 1970 UTC. La valeur 0 peut \xEAtre utilis\xE9e pour ne poser aucune limite sur le d\xE9but des mesures.',endTime:'la find de l\x27intercalle de mesure d\xE9sir\xE9, c\x27est \xE0 dire en nombre de secondes depuis le 1er janvier 1970 UTC. La valeur 0 peut \xEAtre utilis\xE9e pour ne poser aucune limite de fin.'},ret:'une instance de YDataSet, dont les m\xE9thodes permettent de d\x27acc\xE9der aux donn\xE9es historiques souhait\xE9es.'};
+doc['Tilt']['get_reportFrequency']={syn:'Retourne la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction.',lib:'tilt.get_reportFrequency()',pro:'def get_reportFrequency()',cmt:'<p>Retourne la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_REPORTFREQUENCY_INVALID</tt>.'};
+doc['Tilt']['get_resolution']={syn:'Retourne la r\xE9solution des valeurs mesur\xE9es.',lib:'tilt.get_resolution()',pro:'def get_resolution()',cmt:'<p>Retourne la r\xE9solution des valeurs mesur\xE9es. La r\xE9solution correspond \xE0 la pr\xE9cision num\xE9rique de la repr\xE9sentation des mesures. Elle n\x27est pas forc\xE9ment identique \xE0 la pr\xE9cision r\xE9elle du capteur.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la r\xE9solution des valeurs mesur\xE9es',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_RESOLUTION_INVALID</tt>.'};
+doc['Tilt']['get_sensorState']={syn:'Retourne le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment.',lib:'tilt.get_sensorState()',pro:'def get_sensorState()',cmt:'<p>Retourne le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment.</p>',ret:'un entier repr&eacute;sentant le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_SENSORSTATE_INVALID</tt>.'};
+doc['Tilt']['get_unit']={syn:'Retourne l\x27unit\xE9 dans laquelle l\x27inclinaison est exprim\xE9e.',lib:'tilt.get_unit()',pro:'def get_unit()',cmt:'<p>Retourne l\x27unit\xE9 dans laquelle l\x27inclinaison est exprim\xE9e.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant l\x27unit\xE9 dans laquelle l\x27inclinaison est exprim\xE9e',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_UNIT_INVALID</tt>.'};
+doc['Tilt']['get_userData']={syn:'Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>.',lib:'tilt.get_userData()',pro:'def get_userData()',cmt:'<p>Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',ret:'l\x27objet stock\xE9 pr\xE9c\xE9demment par l\x27appelant.'};
+doc['Tilt']['isOnline']={syn:'V\xE9rifie si le module h\xE9bergeant l\x27inclinom\xE8tre est joignable, sans d\xE9clencher d\x27erreur.',lib:'tilt.isOnline()',pro:'def isOnline()',cmt:'<p>V\xE9rifie si le module h\xE9bergeant l\x27inclinom\xE8tre est joignable, sans d\xE9clencher d\x27erreur. Si les valeurs des attributs en cache de l\x27inclinom\xE8tre sont valides au moment de l\x27appel, le module est consid\xE9r\xE9 joignable. Cette fonction ne cause en aucun cas d\x27exception, quelle que soit l\x27erreur qui pourrait se produire lors de la v\xE9rification de joignabilit\xE9.</p>',ret:'<tt>true</tt> si l\x27inclinom\xE8tre est joignable, <tt>false</tt> sinon'};
+doc['Tilt']['load']={syn:'Met en cache les valeurs courantes de l\x27inclinom\xE8tre, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e.',lib:'tilt.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Met en cache les valeurs courantes de l\x27inclinom\xE8tre, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e. Par d\xE9faut, lorsqu\x27on acc\xE8de \xE0 un module, tous les attributs des fonctions du module sont automatiquement mises en cache pour la dur\xE9e standard (5 ms). Cette m\xE9thode peut \xEAtre utilis\xE9e pour marquer occasionellement les donn\xE9es cach\xE9es comme valides pour une plus longue p\xE9riode, par exemple dans le but de r\xE9duire le trafic r\xE9seau.</p>',par:{msValidity:'un entier correspondant \xE0 la dur\xE9e de validit\xE9 attribu\xE9e aux les param\xE8tres charg\xE9s, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Tilt']['loadAttribute']={syn:'Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.',lib:'tilt.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un cha\xEEne vide.'};
+doc['Tilt']['loadCalibrationPoints']={syn:'R\xE9cup\xE8re les points de correction de mesure pr\xE9c\xE9demment enregistr\xE9s \xE0 l\x27aide de la m\xE9thode <tt>calibrateFromPoints</tt>.',lib:'tilt.loadCalibrationPoints()',pro:'def loadCalibrationPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>R\xE9cup\xE8re les points de correction de mesure pr\xE9c\xE9demment enregistr\xE9s \xE0 l\x27aide de la m\xE9thode <tt>calibrateFromPoints</tt>.</p>',par:{rawValues:'tableau de nombres flottants, qui sera rempli par la fonction avec les valeurs brutes des points de correction.',refValues:'tableau de nombres flottants, qui sera rempli par la fonction avec les valeurs d\xE9sir\xE9es des points de correction.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Tilt']['muteValueCallbacks']={syn:'D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'tilt.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Vous pouvez utiliser cette fonction pour \xE9conomiser la bande passante et le CPU sur les machines de faible puissance, ou pour \xE9viter le d\xE9clanchement de callbacks HTTP. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Tilt']['nextTilt']={syn:'Continue l\x27\xE9num\xE9ration des inclinom\xE8tres commenc\xE9e \xE0 l\x27aide de <tt>yFirstTilt()</tt>.',lib:'tilt.nextTilt()',pro:'def nextTilt()',cmt:'<p>Continue l\x27\xE9num\xE9ration des inclinom\xE8tres commenc\xE9e \xE0 l\x27aide de <tt>yFirstTilt()</tt>.</p>',ret:'un pointeur sur un objet <tt>YTilt</tt> accessible en ligne, ou <tt>null</tt> lorsque l\x27\xE9num\xE9ration est termin\xE9e.'};
+doc['Tilt']['registerTimedReportCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque notification p\xE9riodique.',lib:'tilt.registerTimedReportCallback()',pro:'def registerTimedReportCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque notification p\xE9riodique. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callbacks peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callbacks ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et un objet YMeasure d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['Tilt']['registerValueCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e.',lib:'tilt.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callback peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callback ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et la cha\xEEne de caract\xE8re d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['Tilt']['set_bandwidth']={syn:'Modifie la fr\xE9quence de rafra\xEEchissement de la mesure, en Hz (Yocto-3D-V2 seulement).',lib:'tilt.set_bandwidth()',pro:'def set_bandwidth(<span id=pn>newval</span>)',cmt:'<p>Modifie la fr\xE9quence de rafra\xEEchissement de la mesure, en Hz (Yocto-3D-V2 seulement). Lorsque la fr\xE9quence est plus basse, un moyennage est effectu\xE9.</p>',par:{newval:'un entier repr&eacute;sentant la fr\xE9quence de rafra\xEEchissement de la mesure, en Hz (Yocto-3D-V2 seulement)'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Tilt']['set_highestValue']={syn:'Modifie la m\xE9moire de valeur maximale observ\xE9e.',lib:'tilt.set_highestValue()',pro:'def set_highestValue(<span id=pn>newval</span>)',cmt:'<p>Modifie la m\xE9moire de valeur maximale observ\xE9e.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la m\xE9moire de valeur maximale observ\xE9e'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Tilt']['set_logFrequency']={syn:'Modifie la fr\xE9quence d\x27enregistrement des mesures dans le datalogger.',lib:'tilt.set_logFrequency()',pro:'def set_logFrequency(<span id=pn>newval</span>)',cmt:'<p>Modifie la fr\xE9quence d\x27enregistrement des mesures dans le datalogger. La fr\xE9quence peut \xEAtre sp\xE9cifi\xE9e en mesures par secondes, en mesures par minutes (par exemple \x2215/m\x22) ou en mesures par heure (par exemple \x224/h\x22). Pour d\xE9sactiver l\x27enregistrement des mesures de cette fonction, utilisez la valeur \x22OFF\x22.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence d\x27enregistrement des mesures dans le datalogger'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Tilt']['set_logicalName']={syn:'Modifie le nom logique de l\x27inclinom\xE8tre.',lib:'tilt.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Modifie le nom logique de l\x27inclinom\xE8tre. Vous pouvez utiliser <tt>yCheckLogicalName()</tt> pour v\xE9rifier si votre param\xE8tre est valide. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique de l\x27inclinom\xE8tre.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27appel se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Tilt']['set_lowestValue']={syn:'Modifie la m\xE9moire de valeur minimale observ\xE9e.',lib:'tilt.set_lowestValue()',pro:'def set_lowestValue(<span id=pn>newval</span>)',cmt:'<p>Modifie la m\xE9moire de valeur minimale observ\xE9e.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la m\xE9moire de valeur minimale observ\xE9e'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Tilt']['set_reportFrequency']={syn:'Modifie la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es.',lib:'tilt.set_reportFrequency()',pro:'def set_reportFrequency(<span id=pn>newval</span>)',cmt:'<p>Modifie la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es. La fr\xE9quence peut \xEAtre sp\xE9cifi\xE9e en mesures par secondes, en mesures par minutes (par exemple \x2215/m\x22) ou en mesures par heure (par exemple \x224/h\x22). Pour d\xE9sactiver les notifications p\xE9riodiques pour cette fonction, utilisez la valeur \x22OFF\x22.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Tilt']['set_resolution']={syn:'Modifie la r\xE9solution des valeurs physique mesur\xE9es.',lib:'tilt.set_resolution()',pro:'def set_resolution(<span id=pn>newval</span>)',cmt:'<p>Modifie la r\xE9solution des valeurs physique mesur\xE9es. La r\xE9solution correspond \xE0 la pr\xE9cision de l\x27affichage des mesures. Elle ne change pas la pr\xE9cision de la mesure elle-m\xEAme.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la r\xE9solution des valeurs physique mesur\xE9es'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Tilt']['set_userData']={syn:'Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>.',lib:'tilt.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',par:{data:'objet quelconque \xE0 m\xE9moriser'}};
+doc['Tilt']['startDataLogger']={syn:'D\xE9marre l\x27enregistreur de donn\xE9es du module.',lib:'tilt.startDataLogger()',pro:'def startDataLogger()',cmt:'<p>D\xE9marre l\x27enregistreur de donn\xE9es du module. Attention, l\x27enregistreur ne sauvera les mesures de ce capteur que si la fr\xE9quence d\x27enregistrement (logFrequency) n\x27est pas sur \x22OFF\x22.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.'};
+doc['Tilt']['stopDataLogger']={syn:'Arr\xEAte l\x27enregistreur de donn\xE9es du module.',lib:'tilt.stopDataLogger()',pro:'def stopDataLogger()',cmt:'<p>Arr\xEAte l\x27enregistreur de donn\xE9es du module.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.'};
+doc['Tilt']['unmuteValueCallbacks']={syn:'R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'tilt.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Cette fonction annule un pr\xE9c\xE9dent appel \xE0 <tt>muteValueCallbacks()</tt>. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+//--- (end of generated code: Tilt)
+//--- (generated code: Qt)
+doc['Qt']={'':{syn:'Interface du quaternion',inc:'from yocto_gyro import *',cmt:'<p>La class YQt de la librairie Yoctopuce permet d\x27acc\xE9der \xE0 l\x27estimation de l\x27orientation tridimentionnelle du Yocto-3D sous forme d\x27un quaternion. Il n\x27est en g\xE9n\xE9ral pas n\xE9cessaire d\x27y acc\xE9der directement, la classe YGyro offrant une abstraction de plus haut niveau.</p>'}};
+doc['Qt']['FindQt']={syn:'Permet de retrouver un \xE9l\xE9ment de quaternion d\x27apr\xE8s un identifiant donn\xE9.',lib:'YQt.FindQt()',pro:'def FindQt(<span id=pn>func</span>)',cmt:'<p>Permet de retrouver un \xE9l\xE9ment de quaternion d\x27apr\xE8s un identifiant donn\xE9. L\x27identifiant peut \xEAtre sp\xE9cifi\xE9 sous plusieurs formes:<br> <ul> <li>NomLogiqueFonction</li> <li>NoSerieModule.IdentifiantFonction</li> <li>NoSerieModule.NomLogiqueFonction</li> <li>NomLogiqueModule.IdentifiantMat\xE9riel</li> <li>NomLogiqueModule.NomLogiqueFonction</li> </ul></p><p> Cette fonction n\x27exige pas que l\x27\xE9l\xE9ment de quaternion soit en ligne au moment ou elle est appel\xE9e, l\x27objet retourn\xE9 sera n\xE9anmoins valide. Utiliser la m\xE9thode <tt>YQt.isOnline()</tt> pour tester si l\x27\xE9l\xE9ment de quaternion est utilisable \xE0 un moment donn\xE9. En cas d\x27ambigu\xEFt\xE9 lorsqu\x27on fait une recherche par nom logique, aucune erreur ne sera notifi\xE9e: la premi\xE8re instance trouv\xE9e sera renvoy\xE9e. La recherche se fait d\x27abord par nom mat\xE9riel, puis par nom logique.</p>',par:{func:'une cha\xEEne de caract\xE8res qui r\xE9f\xE9rence l\x27\xE9l\xE9ment de quaternion sans ambigu\xEFt\xE9'},ret:'un objet de classe <tt>YQt</tt> qui permet ensuite de contr\xF4ler l\x27\xE9l\xE9ment de quaternion.'};
+doc['Qt']['FirstQt']={syn:'Commence l\x27\xE9num\xE9ration des \xE9l\xE9ments de quaternion accessibles par la librairie.',lib:'YQt.FirstQt()',pro:'def FirstQt()',cmt:'<p>Commence l\x27\xE9num\xE9ration des \xE9l\xE9ments de quaternion accessibles par la librairie. Utiliser la fonction <tt>YQt.nextQt()</tt> pour it\xE9rer sur les autres \xE9l\xE9ments de quaternion.</p>',ret:'un pointeur sur un objet <tt>YQt</tt>, correspondant au premier \xE9l\xE9ment de quaternion accessible en ligne, ou <tt>null</tt> si il n\x27y a pas de \xE9l\xE9ments de quaternion disponibles.'};
+doc['Qt']['calibrateFromPoints']={syn:'Enregistre des points de correction de mesure, typiquement pour compenser l\x27effet d\x27un bo\xEEtier sur les mesures rendues par le capteur.',lib:'qt.calibrateFromPoints()',pro:'def calibrateFromPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Enregistre des points de correction de mesure, typiquement pour compenser l\x27effet d\x27un bo\xEEtier sur les mesures rendues par le capteur. Il est possible d\x27enregistrer jusqu\x27\xE0 cinq points de correction. Les points de correction doivent \xEAtre fournis en ordre croissant, et dans la plage valide du capteur. Le module effectue automatiquement une interpolation lin\xE9aire de l\x27erreur entre les points sp\xE9cifi\xE9s. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p><p> Pour plus de plus amples possibilit\xE9s d\x27appliquer une surcalibration aux capteurs, veuillez contacter support@yoctopuce.com.</p>',par:{rawValues:'tableau de nombres flottants, correspondant aux valeurs brutes rendues par le capteur pour les points de correction.',refValues:'tableau de nombres flottants, correspondant aux valeurs corrig\xE9es d\xE9sir\xE9es pour les points de correction.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Qt']['clearCache']={syn:'Invalide le cache.',lib:'qt.clearCache()',pro:'def clearCache()',cmt:'<p>Invalide le cache. Invalide le cache des valeurs courantes de l\x27\xE9l\xE9ment de quaternion. Force le prochain appel \xE0 une m\xE9thode get_xxx() ou loadxxx() pour charger les les donn\xE9es depuis le module.</p>'};
+doc['Qt']['describe']={syn:'Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance de l\x27\xE9l\xE9ment de quaternion au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'qt.describe()',pro:'def describe()',cmt:'<p>Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance de l\x27\xE9l\xE9ment de quaternion au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. Plus pr\xE9cis\xE9ment, <tt>TYPE</tt> correspond au type de fonction, <tt>NAME</tt> correspond au nom utils\xE9 lors du premier acc\xE8s a la fonction, <tt>SERIAL</tt> correspond au num\xE9ro de s\xE9rie du module si le module est connect\xE9, ou <tt>\x22unresolved\x22</tt> sinon, et <tt>FUNCTIONID</tt> correspond \xE0 l\x27identifiant mat\xE9riel de la fonction si le module est connect\xE9. Par exemple, La methode va retourner <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> si le module est d\xE9j\xE0 connect\xE9 ou <tt>Relay(BadCustomeName.relay1)=unresolved</tt> si le module n\x27est pas d\xE9j\xE0 connect\xE9. Cette methode ne declenche aucune transaction USB ou TCP et peut donc \xEAtre utilis\xE9 dans un debuggeur.</p>',ret:'une cha\xEEne de caract\xE8res d\xE9crivant l\x27\xE9l\xE9ment de quaternion (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['Qt']['get_advertisedValue']={syn:'Retourne la valeur courante de l\x27\xE9l\xE9ment de quaternion (pas plus de 6 caract\xE8res).',lib:'qt.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Retourne la valeur courante de l\x27\xE9l\xE9ment de quaternion (pas plus de 6 caract\xE8res).</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur courante de l\x27\xE9l\xE9ment de quaternion (pas plus de 6 caract\xE8res).',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['Qt']['get_currentRawValue']={syn:'Retourne la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en unit\xE9s, sous forme de nombre \xE0 virgule.',lib:'qt.get_currentRawValue()',pro:'def get_currentRawValue()',cmt:'<p>Retourne la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en unit\xE9s, sous forme de nombre \xE0 virgule.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en unit\xE9s, sous forme de nombre \xE0 virgule',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_CURRENTRAWVALUE_INVALID</tt>.'};
+doc['Qt']['get_currentValue']={syn:'Retourne la valeur actuelle de la coordonn\xE9e, en unit\xE9s, sous forme de nombre \xE0 virgule.',lib:'qt.get_currentValue()',pro:'def get_currentValue()',cmt:'<p>Retourne la valeur actuelle de la coordonn\xE9e, en unit\xE9s, sous forme de nombre \xE0 virgule.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur actuelle de la coordonn\xE9e, en unit\xE9s, sous forme de nombre \xE0 virgule',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_CURRENTVALUE_INVALID</tt>.'};
+doc['Qt']['get_errorMessage']={syn:'Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de l\x27\xE9l\xE9ment de quaternion.',lib:'qt.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de l\x27\xE9l\xE9ment de quaternion. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'une cha\xEEne de caract\xE8res correspondant au message de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation de l\x27\xE9l\xE9ment de quaternion.'};
+doc['Qt']['get_errorType']={syn:'Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de l\x27\xE9l\xE9ment de quaternion.',lib:'qt.get_errorType()',pro:'def get_errorType()',cmt:'<p>Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de l\x27\xE9l\xE9ment de quaternion. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'un nombre correspondant au code de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation de l\x27\xE9l\xE9ment de quaternion.'};
+doc['Qt']['get_friendlyName']={syn:'Retourne un identifiant global de l\x27\xE9l\xE9ment de quaternion au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>.',lib:'qt.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Retourne un identifiant global de l\x27\xE9l\xE9ment de quaternion au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>. Le cha\xEEne retourn\xE9e utilise soit les noms logiques du module et de l\x27\xE9l\xE9ment de quaternion si ils sont d\xE9finis, soit respectivement le num\xE9ro de s\xE9rie du module et l\x27identifant mat\xE9riel de l\x27\xE9l\xE9ment de quaternion (par exemple: <tt>MyCustomName.relay1</tt>)</p>',ret:'une cha\xEEne de caract\xE8res identifiant l\x27\xE9l\xE9ment de quaternion en utilisant les noms logiques (ex: <tt>MyCustomName.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['Qt']['get_functionDescriptor']={syn:'Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction.',lib:'qt.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction. Cet identifiant peut \xEAtre utilis\xE9 pour tester si deux instance de <tt>YFunction</tt> r\xE9f\xE9rencent physiquement la m\xEAme fonction sur le m\xEAme module.</p>',ret:'un identifiant de type <tt>YFUN_DESCR</tt>.',ext:'Si la fonction n\x27a jamais \xE9t\xE9 contact\xE9e, la valeur retourn\xE9e sera <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>'};
+doc['Qt']['get_functionId']={syn:'Retourne l\x27identifiant mat\xE9riel de l\x27\xE9l\xE9ment de quaternion, sans r\xE9f\xE9rence au module.',lib:'qt.get_functionId()',pro:'def get_functionId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel de l\x27\xE9l\xE9ment de quaternion, sans r\xE9f\xE9rence au module. Par example <tt>relay1</tt>.</p>',ret:'une cha\xEEne de caract\xE8res identifiant l\x27\xE9l\xE9ment de quaternion (ex: <tt>relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['Qt']['get_hardwareId']={syn:'Retourne l\x27identifiant mat\xE9riel unique de l\x27\xE9l\xE9ment de quaternion au format <tt>SERIAL.FUNCTIONID</tt>.',lib:'qt.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel unique de l\x27\xE9l\xE9ment de quaternion au format <tt>SERIAL.FUNCTIONID</tt>. L\x27identifiant unique est compos\xE9 du num\xE9ro de s\xE9rie du module et de l\x27identifiant mat\xE9riel de l\x27\xE9l\xE9ment de quaternion (par example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'une cha\xEEne de caract\xE8res identifiant l\x27\xE9l\xE9ment de quaternion (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['Qt']['get_highestValue']={syn:'Retourne la valeur maximale observ\xE9e pour la coordonn\xE9e depuis le d\xE9marrage du module.',lib:'qt.get_highestValue()',pro:'def get_highestValue()',cmt:'<p>Retourne la valeur maximale observ\xE9e pour la coordonn\xE9e depuis le d\xE9marrage du module.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur maximale observ\xE9e pour la coordonn\xE9e depuis le d\xE9marrage du module',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_HIGHESTVALUE_INVALID</tt>.'};
+doc['Qt']['get_logFrequency']={syn:'Retourne la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es.',lib:'qt.get_logFrequency()',pro:'def get_logFrequency()',cmt:'<p>Retourne la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_LOGFREQUENCY_INVALID</tt>.'};
+doc['Qt']['get_logicalName']={syn:'Retourne le nom logique de l\x27\xE9l\xE9ment de quaternion.',lib:'qt.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Retourne le nom logique de l\x27\xE9l\xE9ment de quaternion.</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique de l\x27\xE9l\xE9ment de quaternion.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['Qt']['get_lowestValue']={syn:'Retourne la valeur minimale observ\xE9e pour la coordonn\xE9e depuis le d\xE9marrage du module.',lib:'qt.get_lowestValue()',pro:'def get_lowestValue()',cmt:'<p>Retourne la valeur minimale observ\xE9e pour la coordonn\xE9e depuis le d\xE9marrage du module.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur minimale observ\xE9e pour la coordonn\xE9e depuis le d\xE9marrage du module',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_LOWESTVALUE_INVALID</tt>.'};
+doc['Qt']['get_module']={syn:'Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction.',lib:'qt.get_module()',pro:'def get_module()',cmt:'<p>Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction. Si la fonction ne peut \xEAtre trouv\xE9e sur aucun module, l\x27instance de <tt>YModule</tt> retourn\xE9e ne sera pas joignable.</p>',ret:'une instance de <tt>YModule</tt>'};
+doc['Qt']['get_recordedData']={syn:'Retourne un objet DataSet repr\xE9sentant des mesures de ce capteur pr\xE9c\xE9demment enregistr\xE9es \xE0 l\x27aide du DataLogger, pour l\x27intervalle de temps sp\xE9cifi\xE9.',lib:'qt.get_recordedData()',pro:'def get_recordedData(<span id=pn>startTime</span>, <span id=pn>endTime</span>)',cmt:'<p>Retourne un objet DataSet repr\xE9sentant des mesures de ce capteur pr\xE9c\xE9demment enregistr\xE9es \xE0 l\x27aide du DataLogger, pour l\x27intervalle de temps sp\xE9cifi\xE9. Veuillez vous r\xE9f\xE9rer \xE0 la documentation de la classe DataSet pour plus plus d\x27informations sur la mani\xE8re d\x27obtenir un aper\xE7u des mesures pour la p\xE9riode, et comment charger progressivement une grande quantit\xE9 de mesures depuis le dataLogger.</p><p> Cette m\xE9thode ne fonctionne que si le module utilise un firmware r\xE9cent, car les objets DataSet ne sont pas support\xE9s par les firmwares ant\xE9rieurs \xE0 la r\xE9vision 13000.</p>',par:{startTime:'le d\xE9but de l\x27intervalle de mesure d\xE9sir\xE9, c\x27est \xE0 dire en nombre de secondes depuis le 1er janvier 1970 UTC. La valeur 0 peut \xEAtre utilis\xE9e pour ne poser aucune limite sur le d\xE9but des mesures.',endTime:'la find de l\x27intercalle de mesure d\xE9sir\xE9, c\x27est \xE0 dire en nombre de secondes depuis le 1er janvier 1970 UTC. La valeur 0 peut \xEAtre utilis\xE9e pour ne poser aucune limite de fin.'},ret:'une instance de YDataSet, dont les m\xE9thodes permettent de d\x27acc\xE9der aux donn\xE9es historiques souhait\xE9es.'};
+doc['Qt']['get_reportFrequency']={syn:'Retourne la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction.',lib:'qt.get_reportFrequency()',pro:'def get_reportFrequency()',cmt:'<p>Retourne la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_REPORTFREQUENCY_INVALID</tt>.'};
+doc['Qt']['get_resolution']={syn:'Retourne la r\xE9solution des valeurs mesur\xE9es.',lib:'qt.get_resolution()',pro:'def get_resolution()',cmt:'<p>Retourne la r\xE9solution des valeurs mesur\xE9es. La r\xE9solution correspond \xE0 la pr\xE9cision num\xE9rique de la repr\xE9sentation des mesures. Elle n\x27est pas forc\xE9ment identique \xE0 la pr\xE9cision r\xE9elle du capteur.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la r\xE9solution des valeurs mesur\xE9es',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_RESOLUTION_INVALID</tt>.'};
+doc['Qt']['get_sensorState']={syn:'Retourne le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment.',lib:'qt.get_sensorState()',pro:'def get_sensorState()',cmt:'<p>Retourne le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment.</p>',ret:'un entier repr&eacute;sentant le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_SENSORSTATE_INVALID</tt>.'};
+doc['Qt']['get_unit']={syn:'Retourne l\x27unit\xE9 dans laquelle la coordonn\xE9e est exprim\xE9e.',lib:'qt.get_unit()',pro:'def get_unit()',cmt:'<p>Retourne l\x27unit\xE9 dans laquelle la coordonn\xE9e est exprim\xE9e.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant l\x27unit\xE9 dans laquelle la coordonn\xE9e est exprim\xE9e',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_UNIT_INVALID</tt>.'};
+doc['Qt']['get_userData']={syn:'Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>.',lib:'qt.get_userData()',pro:'def get_userData()',cmt:'<p>Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',ret:'l\x27objet stock\xE9 pr\xE9c\xE9demment par l\x27appelant.'};
+doc['Qt']['isOnline']={syn:'V\xE9rifie si le module h\xE9bergeant l\x27\xE9l\xE9ment de quaternion est joignable, sans d\xE9clencher d\x27erreur.',lib:'qt.isOnline()',pro:'def isOnline()',cmt:'<p>V\xE9rifie si le module h\xE9bergeant l\x27\xE9l\xE9ment de quaternion est joignable, sans d\xE9clencher d\x27erreur. Si les valeurs des attributs en cache de l\x27\xE9l\xE9ment de quaternion sont valides au moment de l\x27appel, le module est consid\xE9r\xE9 joignable. Cette fonction ne cause en aucun cas d\x27exception, quelle que soit l\x27erreur qui pourrait se produire lors de la v\xE9rification de joignabilit\xE9.</p>',ret:'<tt>true</tt> si l\x27\xE9l\xE9ment de quaternion est joignable, <tt>false</tt> sinon'};
+doc['Qt']['load']={syn:'Met en cache les valeurs courantes de l\x27\xE9l\xE9ment de quaternion, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e.',lib:'qt.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Met en cache les valeurs courantes de l\x27\xE9l\xE9ment de quaternion, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e. Par d\xE9faut, lorsqu\x27on acc\xE8de \xE0 un module, tous les attributs des fonctions du module sont automatiquement mises en cache pour la dur\xE9e standard (5 ms). Cette m\xE9thode peut \xEAtre utilis\xE9e pour marquer occasionellement les donn\xE9es cach\xE9es comme valides pour une plus longue p\xE9riode, par exemple dans le but de r\xE9duire le trafic r\xE9seau.</p>',par:{msValidity:'un entier correspondant \xE0 la dur\xE9e de validit\xE9 attribu\xE9e aux les param\xE8tres charg\xE9s, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Qt']['loadAttribute']={syn:'Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.',lib:'qt.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un cha\xEEne vide.'};
+doc['Qt']['loadCalibrationPoints']={syn:'R\xE9cup\xE8re les points de correction de mesure pr\xE9c\xE9demment enregistr\xE9s \xE0 l\x27aide de la m\xE9thode <tt>calibrateFromPoints</tt>.',lib:'qt.loadCalibrationPoints()',pro:'def loadCalibrationPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>R\xE9cup\xE8re les points de correction de mesure pr\xE9c\xE9demment enregistr\xE9s \xE0 l\x27aide de la m\xE9thode <tt>calibrateFromPoints</tt>.</p>',par:{rawValues:'tableau de nombres flottants, qui sera rempli par la fonction avec les valeurs brutes des points de correction.',refValues:'tableau de nombres flottants, qui sera rempli par la fonction avec les valeurs d\xE9sir\xE9es des points de correction.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Qt']['muteValueCallbacks']={syn:'D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'qt.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Vous pouvez utiliser cette fonction pour \xE9conomiser la bande passante et le CPU sur les machines de faible puissance, ou pour \xE9viter le d\xE9clanchement de callbacks HTTP. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Qt']['nextQt']={syn:'Continue l\x27\xE9num\xE9ration des \xE9l\xE9ments de quaternion commenc\xE9e \xE0 l\x27aide de <tt>yFirstQt()</tt>.',lib:'qt.nextQt()',pro:'def nextQt()',cmt:'<p>Continue l\x27\xE9num\xE9ration des \xE9l\xE9ments de quaternion commenc\xE9e \xE0 l\x27aide de <tt>yFirstQt()</tt>.</p>',ret:'un pointeur sur un objet <tt>YQt</tt> accessible en ligne, ou <tt>null</tt> lorsque l\x27\xE9num\xE9ration est termin\xE9e.'};
+doc['Qt']['registerTimedReportCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque notification p\xE9riodique.',lib:'qt.registerTimedReportCallback()',pro:'def registerTimedReportCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque notification p\xE9riodique. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callbacks peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callbacks ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et un objet YMeasure d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['Qt']['registerValueCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e.',lib:'qt.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callback peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callback ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et la cha\xEEne de caract\xE8re d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['Qt']['set_highestValue']={syn:'Modifie la m\xE9moire de valeur maximale observ\xE9e.',lib:'qt.set_highestValue()',pro:'def set_highestValue(<span id=pn>newval</span>)',cmt:'<p>Modifie la m\xE9moire de valeur maximale observ\xE9e.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la m\xE9moire de valeur maximale observ\xE9e'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Qt']['set_logFrequency']={syn:'Modifie la fr\xE9quence d\x27enregistrement des mesures dans le datalogger.',lib:'qt.set_logFrequency()',pro:'def set_logFrequency(<span id=pn>newval</span>)',cmt:'<p>Modifie la fr\xE9quence d\x27enregistrement des mesures dans le datalogger. La fr\xE9quence peut \xEAtre sp\xE9cifi\xE9e en mesures par secondes, en mesures par minutes (par exemple \x2215/m\x22) ou en mesures par heure (par exemple \x224/h\x22). Pour d\xE9sactiver l\x27enregistrement des mesures de cette fonction, utilisez la valeur \x22OFF\x22.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence d\x27enregistrement des mesures dans le datalogger'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Qt']['set_logicalName']={syn:'Modifie le nom logique de l\x27\xE9l\xE9ment de quaternion.',lib:'qt.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Modifie le nom logique de l\x27\xE9l\xE9ment de quaternion. Vous pouvez utiliser <tt>yCheckLogicalName()</tt> pour v\xE9rifier si votre param\xE8tre est valide. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique de l\x27\xE9l\xE9ment de quaternion.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27appel se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Qt']['set_lowestValue']={syn:'Modifie la m\xE9moire de valeur minimale observ\xE9e.',lib:'qt.set_lowestValue()',pro:'def set_lowestValue(<span id=pn>newval</span>)',cmt:'<p>Modifie la m\xE9moire de valeur minimale observ\xE9e.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la m\xE9moire de valeur minimale observ\xE9e'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Qt']['set_reportFrequency']={syn:'Modifie la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es.',lib:'qt.set_reportFrequency()',pro:'def set_reportFrequency(<span id=pn>newval</span>)',cmt:'<p>Modifie la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es. La fr\xE9quence peut \xEAtre sp\xE9cifi\xE9e en mesures par secondes, en mesures par minutes (par exemple \x2215/m\x22) ou en mesures par heure (par exemple \x224/h\x22). Pour d\xE9sactiver les notifications p\xE9riodiques pour cette fonction, utilisez la valeur \x22OFF\x22.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Qt']['set_resolution']={syn:'Modifie la r\xE9solution des valeurs physique mesur\xE9es.',lib:'qt.set_resolution()',pro:'def set_resolution(<span id=pn>newval</span>)',cmt:'<p>Modifie la r\xE9solution des valeurs physique mesur\xE9es. La r\xE9solution correspond \xE0 la pr\xE9cision de l\x27affichage des mesures. Elle ne change pas la pr\xE9cision de la mesure elle-m\xEAme.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la r\xE9solution des valeurs physique mesur\xE9es'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Qt']['set_userData']={syn:'Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>.',lib:'qt.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',par:{data:'objet quelconque \xE0 m\xE9moriser'}};
+doc['Qt']['startDataLogger']={syn:'D\xE9marre l\x27enregistreur de donn\xE9es du module.',lib:'qt.startDataLogger()',pro:'def startDataLogger()',cmt:'<p>D\xE9marre l\x27enregistreur de donn\xE9es du module. Attention, l\x27enregistreur ne sauvera les mesures de ce capteur que si la fr\xE9quence d\x27enregistrement (logFrequency) n\x27est pas sur \x22OFF\x22.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.'};
+doc['Qt']['stopDataLogger']={syn:'Arr\xEAte l\x27enregistreur de donn\xE9es du module.',lib:'qt.stopDataLogger()',pro:'def stopDataLogger()',cmt:'<p>Arr\xEAte l\x27enregistreur de donn\xE9es du module.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.'};
+doc['Qt']['unmuteValueCallbacks']={syn:'R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'qt.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Cette fonction annule un pr\xE9c\xE9dent appel \xE0 <tt>muteValueCallbacks()</tt>. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+//--- (end of generated code: Qt)
+//--- (generated code: PwmOutput)
+doc['PwmOutput']={'':{syn:'Interface de la fonction PwmOutput',inc:'from yocto_pwmoutput import *',cmt:'<p>La librairie de programmation Yoctopuce permet simplement de configurer, d\xE9marrer et arr\xEAter le PWM.</p>'}};
+doc['PwmOutput']['FindPwmOutput']={syn:'Permet de retrouver un PWM d\x27apr\xE8s un identifiant donn\xE9.',lib:'YPwmOutput.FindPwmOutput()',pro:'def FindPwmOutput(<span id=pn>func</span>)',cmt:'<p>Permet de retrouver un PWM d\x27apr\xE8s un identifiant donn\xE9. L\x27identifiant peut \xEAtre sp\xE9cifi\xE9 sous plusieurs formes:<br> <ul> <li>NomLogiqueFonction</li> <li>NoSerieModule.IdentifiantFonction</li> <li>NoSerieModule.NomLogiqueFonction</li> <li>NomLogiqueModule.IdentifiantMat\xE9riel</li> <li>NomLogiqueModule.NomLogiqueFonction</li> </ul></p><p> Cette fonction n\x27exige pas que le PWM soit en ligne au moment ou elle est appel\xE9e, l\x27objet retourn\xE9 sera n\xE9anmoins valide. Utiliser la m\xE9thode <tt>YPwmOutput.isOnline()</tt> pour tester si le PWM est utilisable \xE0 un moment donn\xE9. En cas d\x27ambigu\xEFt\xE9 lorsqu\x27on fait une recherche par nom logique, aucune erreur ne sera notifi\xE9e: la premi\xE8re instance trouv\xE9e sera renvoy\xE9e. La recherche se fait d\x27abord par nom mat\xE9riel, puis par nom logique.</p>',par:{func:'une cha\xEEne de caract\xE8res qui r\xE9f\xE9rence le PWM sans ambigu\xEFt\xE9'},ret:'un objet de classe <tt>YPwmOutput</tt> qui permet ensuite de contr\xF4ler le PWM.'};
+doc['PwmOutput']['FirstPwmOutput']={syn:'Commence l\x27\xE9num\xE9ration des PWM accessibles par la librairie.',lib:'YPwmOutput.FirstPwmOutput()',pro:'def FirstPwmOutput()',cmt:'<p>Commence l\x27\xE9num\xE9ration des PWM accessibles par la librairie. Utiliser la fonction <tt>YPwmOutput.nextPwmOutput()</tt> pour it\xE9rer sur les autres PWM.</p>',ret:'un pointeur sur un objet <tt>YPwmOutput</tt>, correspondant au premier PWM accessible en ligne, ou <tt>null</tt> si il n\x27y a pas de PWM disponibles.'};
+doc['PwmOutput']['clearCache']={syn:'Invalide le cache.',lib:'pwmoutput.clearCache()',pro:'def clearCache()',cmt:'<p>Invalide le cache. Invalide le cache des valeurs courantes du PWM. Force le prochain appel \xE0 une m\xE9thode get_xxx() ou loadxxx() pour charger les les donn\xE9es depuis le module.</p>'};
+doc['PwmOutput']['describe']={syn:'Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du PWM au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'pwmoutput.describe()',pro:'def describe()',cmt:'<p>Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du PWM au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. Plus pr\xE9cis\xE9ment, <tt>TYPE</tt> correspond au type de fonction, <tt>NAME</tt> correspond au nom utils\xE9 lors du premier acc\xE8s a la fonction, <tt>SERIAL</tt> correspond au num\xE9ro de s\xE9rie du module si le module est connect\xE9, ou <tt>\x22unresolved\x22</tt> sinon, et <tt>FUNCTIONID</tt> correspond \xE0 l\x27identifiant mat\xE9riel de la fonction si le module est connect\xE9. Par exemple, La methode va retourner <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> si le module est d\xE9j\xE0 connect\xE9 ou <tt>Relay(BadCustomeName.relay1)=unresolved</tt> si le module n\x27est pas d\xE9j\xE0 connect\xE9. Cette methode ne declenche aucune transaction USB ou TCP et peut donc \xEAtre utilis\xE9 dans un debuggeur.</p>',ret:'une cha\xEEne de caract\xE8res d\xE9crivant le PWM (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['PwmOutput']['dutyCycleMove']={syn:'D\xE9clenche une variation progressive de la longueur des impulsions vers une valeur donn\xE9e.',lib:'pwmoutput.dutyCycleMove()',pro:'def dutyCycleMove(<span id=pn>target</span>, <span id=pn>ms_duration</span>)',cmt:'<p>D\xE9clenche une variation progressive de la longueur des impulsions vers une valeur donn\xE9e.</p>',par:{target:'nouveau duty cycle \xE0 la fin de la transition (nombre flottant, entre 0 et 1)',ms_duration:'dur\xE9e totale de la transition, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['PwmOutput']['get_advertisedValue']={syn:'Retourne la valeur courante du PWM (pas plus de 6 caract\xE8res).',lib:'pwmoutput.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Retourne la valeur courante du PWM (pas plus de 6 caract\xE8res).</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur courante du PWM (pas plus de 6 caract\xE8res).',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['PwmOutput']['get_dutyCycle']={syn:'Retourne le duty cycle du PWM, en pour cents.',lib:'pwmoutput.get_dutyCycle()',pro:'def get_dutyCycle()',cmt:'<p>Retourne le duty cycle du PWM, en pour cents.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant le duty cycle du PWM, en pour cents',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_DUTYCYCLE_INVALID</tt>.'};
+doc['PwmOutput']['get_dutyCycleAtPowerOn']={syn:'Retourne le duty cycle du PWM au d\xE9marrage du module, sous la forme d\x27un nombre \xE0 virgule entre 0 et 100.',lib:'pwmoutput.get_dutyCycleAtPowerOn()',pro:'def get_dutyCycleAtPowerOn()',cmt:'<p>Retourne le duty cycle du PWM au d\xE9marrage du module, sous la forme d\x27un nombre \xE0 virgule entre 0 et 100.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant le duty cycle du PWM au d\xE9marrage du module, sous la forme d\x27un nombre \xE0 virgule entre 0 et 100',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_DUTYCYCLEATPOWERON_INVALID</tt>.'};
+doc['PwmOutput']['get_enabled']={syn:'Retourne l\x27\xE9tat de fonctionnement du PWM.',lib:'pwmoutput.get_enabled()',pro:'def get_enabled()',cmt:'<p>Retourne l\x27\xE9tat de fonctionnement du PWM.</p>',ret:'soit <tt>Y_ENABLED_FALSE</tt>, soit <tt>Y_ENABLED_TRUE</tt>, selon l\x27\xE9tat de fonctionnement du PWM',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_ENABLED_INVALID</tt>.'};
+doc['PwmOutput']['get_enabledAtPowerOn']={syn:'Retourne l\x27\xE9tat de fonctionnement du PWM \xE0 la mise sous tension du module.',lib:'pwmoutput.get_enabledAtPowerOn()',pro:'def get_enabledAtPowerOn()',cmt:'<p>Retourne l\x27\xE9tat de fonctionnement du PWM \xE0 la mise sous tension du module.</p>',ret:'soit <tt>Y_ENABLEDATPOWERON_FALSE</tt>, soit <tt>Y_ENABLEDATPOWERON_TRUE</tt>, selon l\x27\xE9tat de fonctionnement du PWM \xE0 la mise sous tension du module',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_ENABLEDATPOWERON_INVALID</tt>.'};
+doc['PwmOutput']['get_errorMessage']={syn:'Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du PWM.',lib:'pwmoutput.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du PWM. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'une cha\xEEne de caract\xE8res correspondant au message de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du PWM.'};
+doc['PwmOutput']['get_errorType']={syn:'Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du PWM.',lib:'pwmoutput.get_errorType()',pro:'def get_errorType()',cmt:'<p>Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du PWM. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'un nombre correspondant au code de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du PWM.'};
+doc['PwmOutput']['get_frequency']={syn:'Retourne la fr\xE9quence du PWM en Hz.',lib:'pwmoutput.get_frequency()',pro:'def get_frequency()',cmt:'<p>Retourne la fr\xE9quence du PWM en Hz.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la fr\xE9quence du PWM en Hz',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_FREQUENCY_INVALID</tt>.'};
+doc['PwmOutput']['get_friendlyName']={syn:'Retourne un identifiant global du PWM au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>.',lib:'pwmoutput.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Retourne un identifiant global du PWM au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>. Le cha\xEEne retourn\xE9e utilise soit les noms logiques du module et du PWM si ils sont d\xE9finis, soit respectivement le num\xE9ro de s\xE9rie du module et l\x27identifant mat\xE9riel du PWM (par exemple: <tt>MyCustomName.relay1</tt>)</p>',ret:'une cha\xEEne de caract\xE8res identifiant le PWM en utilisant les noms logiques (ex: <tt>MyCustomName.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['PwmOutput']['get_functionDescriptor']={syn:'Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction.',lib:'pwmoutput.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction. Cet identifiant peut \xEAtre utilis\xE9 pour tester si deux instance de <tt>YFunction</tt> r\xE9f\xE9rencent physiquement la m\xEAme fonction sur le m\xEAme module.</p>',ret:'un identifiant de type <tt>YFUN_DESCR</tt>.',ext:'Si la fonction n\x27a jamais \xE9t\xE9 contact\xE9e, la valeur retourn\xE9e sera <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>'};
+doc['PwmOutput']['get_functionId']={syn:'Retourne l\x27identifiant mat\xE9riel du PWM, sans r\xE9f\xE9rence au module.',lib:'pwmoutput.get_functionId()',pro:'def get_functionId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel du PWM, sans r\xE9f\xE9rence au module. Par example <tt>relay1</tt>.</p>',ret:'une cha\xEEne de caract\xE8res identifiant le PWM (ex: <tt>relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['PwmOutput']['get_hardwareId']={syn:'Retourne l\x27identifiant mat\xE9riel unique du PWM au format <tt>SERIAL.FUNCTIONID</tt>.',lib:'pwmoutput.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel unique du PWM au format <tt>SERIAL.FUNCTIONID</tt>. L\x27identifiant unique est compos\xE9 du num\xE9ro de s\xE9rie du module et de l\x27identifiant mat\xE9riel du PWM (par example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'une cha\xEEne de caract\xE8res identifiant le PWM (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['PwmOutput']['get_logicalName']={syn:'Retourne le nom logique du PWM.',lib:'pwmoutput.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Retourne le nom logique du PWM.</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du PWM.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['PwmOutput']['get_module']={syn:'Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction.',lib:'pwmoutput.get_module()',pro:'def get_module()',cmt:'<p>Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction. Si la fonction ne peut \xEAtre trouv\xE9e sur aucun module, l\x27instance de <tt>YModule</tt> retourn\xE9e ne sera pas joignable.</p>',ret:'une instance de <tt>YModule</tt>'};
+doc['PwmOutput']['get_period']={syn:'Retourne la p\xE9riode du PWM en millisecondes.',lib:'pwmoutput.get_period()',pro:'def get_period()',cmt:'<p>Retourne la p\xE9riode du PWM en millisecondes.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la p\xE9riode du PWM en millisecondes',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_PERIOD_INVALID</tt>.'};
+doc['PwmOutput']['get_pulseDuration']={syn:'Retourne la longueur d\x27une impulsion du PWM en millisecondes, sous forme d\x27un chiffre \xE0 virgule.',lib:'pwmoutput.get_pulseDuration()',pro:'def get_pulseDuration()',cmt:'<p>Retourne la longueur d\x27une impulsion du PWM en millisecondes, sous forme d\x27un chiffre \xE0 virgule.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la longueur d\x27une impulsion du PWM en millisecondes, sous forme d\x27un chiffre \xE0 virgule',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_PULSEDURATION_INVALID</tt>.'};
+doc['PwmOutput']['get_userData']={syn:'Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>.',lib:'pwmoutput.get_userData()',pro:'def get_userData()',cmt:'<p>Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',ret:'l\x27objet stock\xE9 pr\xE9c\xE9demment par l\x27appelant.'};
+doc['PwmOutput']['isOnline']={syn:'V\xE9rifie si le module h\xE9bergeant le PWM est joignable, sans d\xE9clencher d\x27erreur.',lib:'pwmoutput.isOnline()',pro:'def isOnline()',cmt:'<p>V\xE9rifie si le module h\xE9bergeant le PWM est joignable, sans d\xE9clencher d\x27erreur. Si les valeurs des attributs en cache du PWM sont valides au moment de l\x27appel, le module est consid\xE9r\xE9 joignable. Cette fonction ne cause en aucun cas d\x27exception, quelle que soit l\x27erreur qui pourrait se produire lors de la v\xE9rification de joignabilit\xE9.</p>',ret:'<tt>true</tt> si le PWM est joignable, <tt>false</tt> sinon'};
+doc['PwmOutput']['load']={syn:'Met en cache les valeurs courantes du PWM, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e.',lib:'pwmoutput.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Met en cache les valeurs courantes du PWM, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e. Par d\xE9faut, lorsqu\x27on acc\xE8de \xE0 un module, tous les attributs des fonctions du module sont automatiquement mises en cache pour la dur\xE9e standard (5 ms). Cette m\xE9thode peut \xEAtre utilis\xE9e pour marquer occasionellement les donn\xE9es cach\xE9es comme valides pour une plus longue p\xE9riode, par exemple dans le but de r\xE9duire le trafic r\xE9seau.</p>',par:{msValidity:'un entier correspondant \xE0 la dur\xE9e de validit\xE9 attribu\xE9e aux les param\xE8tres charg\xE9s, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['PwmOutput']['loadAttribute']={syn:'Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.',lib:'pwmoutput.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un cha\xEEne vide.'};
+doc['PwmOutput']['muteValueCallbacks']={syn:'D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'pwmoutput.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Vous pouvez utiliser cette fonction pour \xE9conomiser la bande passante et le CPU sur les machines de faible puissance, ou pour \xE9viter le d\xE9clanchement de callbacks HTTP. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['PwmOutput']['nextPwmOutput']={syn:'Continue l\x27\xE9num\xE9ration des PWM commenc\xE9e \xE0 l\x27aide de <tt>yFirstPwmOutput()</tt>.',lib:'pwmoutput.nextPwmOutput()',pro:'def nextPwmOutput()',cmt:'<p>Continue l\x27\xE9num\xE9ration des PWM commenc\xE9e \xE0 l\x27aide de <tt>yFirstPwmOutput()</tt>.</p>',ret:'un pointeur sur un objet <tt>YPwmOutput</tt> accessible en ligne, ou <tt>null</tt> lorsque l\x27\xE9num\xE9ration est termin\xE9e.'};
+doc['PwmOutput']['pulseDurationMove']={syn:'D\xE9clenche une transition progressive de la longueur des impulsions vers une valeur donn\xE9e.',lib:'pwmoutput.pulseDurationMove()',pro:'def pulseDurationMove(<span id=pn>ms_target</span>, <span id=pn>ms_duration</span>)',cmt:'<p>D\xE9clenche une transition progressive de la longueur des impulsions vers une valeur donn\xE9e. N\x27importe quel changement de fr\xE9quence, duty cycle, p\xE9riode ou encore de longueur d\x27impulsion annulera tout processus de transition en cours.</p>',par:{ms_target:'nouvelle longueur des impulsions \xE0 la fin de la transition (nombre flottant, repr\xE9sentant la longueur en millisecondes)',ms_duration:'dur\xE9e totale de la transition, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['PwmOutput']['registerValueCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e.',lib:'pwmoutput.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callback peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callback ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et la cha\xEEne de caract\xE8re d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['PwmOutput']['set_dutyCycle']={syn:'Modifie le duty cycle du PWM, en pour cents.',lib:'pwmoutput.set_dutyCycle()',pro:'def set_dutyCycle(<span id=pn>newval</span>)',cmt:'<p>Modifie le duty cycle du PWM, en pour cents.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant le duty cycle du PWM, en pour cents'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['PwmOutput']['set_dutyCycleAtPowerOn']={syn:'Modifie le duty cycle du PWM au d\xE9marrage du module.',lib:'pwmoutput.set_dutyCycleAtPowerOn()',pro:'def set_dutyCycleAtPowerOn(<span id=pn>newval</span>)',cmt:'<p>Modifie le duty cycle du PWM au d\xE9marrage du module. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module sinon la modification n\x27aura aucun effet.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant le duty cycle du PWM au d\xE9marrage du module'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['PwmOutput']['set_enabled']={syn:'D\xE9marre ou arr\xEAte le PWM.',lib:'pwmoutput.set_enabled()',pro:'def set_enabled(<span id=pn>newval</span>)',cmt:'<p>D\xE9marre ou arr\xEAte le PWM.</p>',par:{newval:'soit <tt>Y_ENABLED_FALSE</tt>, soit <tt>Y_ENABLED_TRUE</tt>'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['PwmOutput']['set_enabledAtPowerOn']={syn:'Modifie l\x27\xE9tat du fonctionnement du PWM \xE0 la mise sous tension du module.',lib:'pwmoutput.set_enabledAtPowerOn()',pro:'def set_enabledAtPowerOn(<span id=pn>newval</span>)',cmt:'<p>Modifie l\x27\xE9tat du fonctionnement du PWM \xE0 la mise sous tension du module. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module sinon la modification n\x27aura aucun effet.</p>',par:{newval:'soit <tt>Y_ENABLEDATPOWERON_FALSE</tt>, soit <tt>Y_ENABLEDATPOWERON_TRUE</tt>, selon l\x27\xE9tat du fonctionnement du PWM \xE0 la mise sous tension du module'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['PwmOutput']['set_frequency']={syn:'Modifie la fr\xE9quence du PWM.',lib:'pwmoutput.set_frequency()',pro:'def set_frequency(<span id=pn>newval</span>)',cmt:'<p>Modifie la fr\xE9quence du PWM. Le duty cycle est conserv\xE9 gr\xE2ce \xE0 un changement automatique de la longueur des impulsions.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la fr\xE9quence du PWM'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['PwmOutput']['set_logicalName']={syn:'Modifie le nom logique du PWM.',lib:'pwmoutput.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Modifie le nom logique du PWM. Vous pouvez utiliser <tt>yCheckLogicalName()</tt> pour v\xE9rifier si votre param\xE8tre est valide. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du PWM.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27appel se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['PwmOutput']['set_period']={syn:'Modifie la p\xE9riode du PWM en millisecondes.',lib:'pwmoutput.set_period()',pro:'def set_period(<span id=pn>newval</span>)',cmt:'<p>Modifie la p\xE9riode du PWM en millisecondes.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la p\xE9riode du PWM en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['PwmOutput']['set_pulseDuration']={syn:'Modifie la longueur des impulsions du PWM, en millisecondes.',lib:'pwmoutput.set_pulseDuration()',pro:'def set_pulseDuration(<span id=pn>newval</span>)',cmt:'<p>Modifie la longueur des impulsions du PWM, en millisecondes. Attention, la longueur d\x27une impulsion ne peut pas \xEAtre plus grande que la p\xE9riode, sinon la longueur sera automatiquement tronqu\xE9e \xE0 la p\xE9riode.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la longueur des impulsions du PWM, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['PwmOutput']['set_userData']={syn:'Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>.',lib:'pwmoutput.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',par:{data:'objet quelconque \xE0 m\xE9moriser'}};
+doc['PwmOutput']['unmuteValueCallbacks']={syn:'R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'pwmoutput.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Cette fonction annule un pr\xE9c\xE9dent appel \xE0 <tt>muteValueCallbacks()</tt>. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+//--- (end of generated code: PwmOutput)
+//--- (generated code: PwmPowerSource)
+doc['PwmPowerSource']={'':{syn:'Interface de la fonction PwmPowerSource',inc:'from yocto_pwmpowersource import *',cmt:'<p>La librairie de programmation Yoctopuce permet de configurer la source de tension utilis\xE9e par tous les PWM situ\xE9s sur un m\xEAme module.</p>'}};
+doc['PwmPowerSource']['FindPwmPowerSource']={syn:'Permet de retrouver une source de tension d\x27apr\xE8s un identifiant donn\xE9.',lib:'YPwmPowerSource.FindPwmPowerSource()',pro:'def FindPwmPowerSource(<span id=pn>func</span>)',cmt:'<p>Permet de retrouver une source de tension d\x27apr\xE8s un identifiant donn\xE9. L\x27identifiant peut \xEAtre sp\xE9cifi\xE9 sous plusieurs formes:<br> <ul> <li>NomLogiqueFonction</li> <li>NoSerieModule.IdentifiantFonction</li> <li>NoSerieModule.NomLogiqueFonction</li> <li>NomLogiqueModule.IdentifiantMat\xE9riel</li> <li>NomLogiqueModule.NomLogiqueFonction</li> </ul></p><p> Cette fonction n\x27exige pas que la source de tension soit en ligne au moment ou elle est appel\xE9e, l\x27objet retourn\xE9 sera n\xE9anmoins valide. Utiliser la m\xE9thode <tt>YPwmPowerSource.isOnline()</tt> pour tester si la source de tension est utilisable \xE0 un moment donn\xE9. En cas d\x27ambigu\xEFt\xE9 lorsqu\x27on fait une recherche par nom logique, aucune erreur ne sera notifi\xE9e: la premi\xE8re instance trouv\xE9e sera renvoy\xE9e. La recherche se fait d\x27abord par nom mat\xE9riel, puis par nom logique.</p>',par:{func:'une cha\xEEne de caract\xE8res qui r\xE9f\xE9rence la source de tension sans ambigu\xEFt\xE9'},ret:'un objet de classe <tt>YPwmPowerSource</tt> qui permet ensuite de contr\xF4ler la source de tension.'};
+doc['PwmPowerSource']['FirstPwmPowerSource']={syn:'Commence l\x27\xE9num\xE9ration des Source de tension accessibles par la librairie.',lib:'YPwmPowerSource.FirstPwmPowerSource()',pro:'def FirstPwmPowerSource()',cmt:'<p>Commence l\x27\xE9num\xE9ration des Source de tension accessibles par la librairie. Utiliser la fonction <tt>YPwmPowerSource.nextPwmPowerSource()</tt> pour it\xE9rer sur les autres Source de tension.</p>',ret:'un pointeur sur un objet <tt>YPwmPowerSource</tt>, correspondant \xE0 la premi\xE8re source de tension accessible en ligne, ou <tt>null</tt> si il n\x27y a pas de Source de tension disponibles.'};
+doc['PwmPowerSource']['clearCache']={syn:'Invalide le cache.',lib:'pwmpowersource.clearCache()',pro:'def clearCache()',cmt:'<p>Invalide le cache. Invalide le cache des valeurs courantes de la source de tension. Force le prochain appel \xE0 une m\xE9thode get_xxx() ou loadxxx() pour charger les les donn\xE9es depuis le module.</p>'};
+doc['PwmPowerSource']['describe']={syn:'Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance de la source de tension au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'pwmpowersource.describe()',pro:'def describe()',cmt:'<p>Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance de la source de tension au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. Plus pr\xE9cis\xE9ment, <tt>TYPE</tt> correspond au type de fonction, <tt>NAME</tt> correspond au nom utils\xE9 lors du premier acc\xE8s a la fonction, <tt>SERIAL</tt> correspond au num\xE9ro de s\xE9rie du module si le module est connect\xE9, ou <tt>\x22unresolved\x22</tt> sinon, et <tt>FUNCTIONID</tt> correspond \xE0 l\x27identifiant mat\xE9riel de la fonction si le module est connect\xE9. Par exemple, La methode va retourner <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> si le module est d\xE9j\xE0 connect\xE9 ou <tt>Relay(BadCustomeName.relay1)=unresolved</tt> si le module n\x27est pas d\xE9j\xE0 connect\xE9. Cette methode ne declenche aucune transaction USB ou TCP et peut donc \xEAtre utilis\xE9 dans un debuggeur.</p>',ret:'une cha\xEEne de caract\xE8res d\xE9crivant la source de tension (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['PwmPowerSource']['get_advertisedValue']={syn:'Retourne la valeur courante de la source de tension (pas plus de 6 caract\xE8res).',lib:'pwmpowersource.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Retourne la valeur courante de la source de tension (pas plus de 6 caract\xE8res).</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur courante de la source de tension (pas plus de 6 caract\xE8res).',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['PwmPowerSource']['get_errorMessage']={syn:'Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de la source de tension.',lib:'pwmpowersource.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de la source de tension. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'une cha\xEEne de caract\xE8res correspondant au message de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation de la source de tension.'};
+doc['PwmPowerSource']['get_errorType']={syn:'Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de la source de tension.',lib:'pwmpowersource.get_errorType()',pro:'def get_errorType()',cmt:'<p>Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de la source de tension. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'un nombre correspondant au code de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation de la source de tension.'};
+doc['PwmPowerSource']['get_friendlyName']={syn:'Retourne un identifiant global de la source de tension au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>.',lib:'pwmpowersource.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Retourne un identifiant global de la source de tension au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>. Le cha\xEEne retourn\xE9e utilise soit les noms logiques du module et de la source de tension si ils sont d\xE9finis, soit respectivement le num\xE9ro de s\xE9rie du module et l\x27identifant mat\xE9riel de la source de tension (par exemple: <tt>MyCustomName.relay1</tt>)</p>',ret:'une cha\xEEne de caract\xE8res identifiant la source de tension en utilisant les noms logiques (ex: <tt>MyCustomName.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['PwmPowerSource']['get_functionDescriptor']={syn:'Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction.',lib:'pwmpowersource.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction. Cet identifiant peut \xEAtre utilis\xE9 pour tester si deux instance de <tt>YFunction</tt> r\xE9f\xE9rencent physiquement la m\xEAme fonction sur le m\xEAme module.</p>',ret:'un identifiant de type <tt>YFUN_DESCR</tt>.',ext:'Si la fonction n\x27a jamais \xE9t\xE9 contact\xE9e, la valeur retourn\xE9e sera <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>'};
+doc['PwmPowerSource']['get_functionId']={syn:'Retourne l\x27identifiant mat\xE9riel de la source de tension, sans r\xE9f\xE9rence au module.',lib:'pwmpowersource.get_functionId()',pro:'def get_functionId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel de la source de tension, sans r\xE9f\xE9rence au module. Par example <tt>relay1</tt>.</p>',ret:'une cha\xEEne de caract\xE8res identifiant la source de tension (ex: <tt>relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['PwmPowerSource']['get_hardwareId']={syn:'Retourne l\x27identifiant mat\xE9riel unique de la source de tension au format <tt>SERIAL.FUNCTIONID</tt>.',lib:'pwmpowersource.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel unique de la source de tension au format <tt>SERIAL.FUNCTIONID</tt>. L\x27identifiant unique est compos\xE9 du num\xE9ro de s\xE9rie du module et de l\x27identifiant mat\xE9riel de la source de tension (par example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'une cha\xEEne de caract\xE8res identifiant la source de tension (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['PwmPowerSource']['get_logicalName']={syn:'Retourne le nom logique de la source de tension.',lib:'pwmpowersource.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Retourne le nom logique de la source de tension.</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique de la source de tension.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['PwmPowerSource']['get_module']={syn:'Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction.',lib:'pwmpowersource.get_module()',pro:'def get_module()',cmt:'<p>Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction. Si la fonction ne peut \xEAtre trouv\xE9e sur aucun module, l\x27instance de <tt>YModule</tt> retourn\xE9e ne sera pas joignable.</p>',ret:'une instance de <tt>YModule</tt>'};
+doc['PwmPowerSource']['get_powerMode']={syn:'Retourne la source de tension utilis\xE9 par tous les PWM du m\xEAme module.',lib:'pwmpowersource.get_powerMode()',pro:'def get_powerMode()',cmt:'<p>Retourne la source de tension utilis\xE9 par tous les PWM du m\xEAme module.</p>',ret:'une valeur parmi <tt>Y_POWERMODE_USB_5V</tt>, <tt>Y_POWERMODE_USB_3V</tt>, <tt>Y_POWERMODE_EXT_V</tt> et <tt>Y_POWERMODE_OPNDRN</tt> repr&eacute;sentant la source de tension utilis\xE9 par tous les PWM du m\xEAme module',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_POWERMODE_INVALID</tt>.'};
+doc['PwmPowerSource']['get_userData']={syn:'Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>.',lib:'pwmpowersource.get_userData()',pro:'def get_userData()',cmt:'<p>Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',ret:'l\x27objet stock\xE9 pr\xE9c\xE9demment par l\x27appelant.'};
+doc['PwmPowerSource']['isOnline']={syn:'V\xE9rifie si le module h\xE9bergeant la source de tension est joignable, sans d\xE9clencher d\x27erreur.',lib:'pwmpowersource.isOnline()',pro:'def isOnline()',cmt:'<p>V\xE9rifie si le module h\xE9bergeant la source de tension est joignable, sans d\xE9clencher d\x27erreur. Si les valeurs des attributs en cache de la source de tension sont valides au moment de l\x27appel, le module est consid\xE9r\xE9 joignable. Cette fonction ne cause en aucun cas d\x27exception, quelle que soit l\x27erreur qui pourrait se produire lors de la v\xE9rification de joignabilit\xE9.</p>',ret:'<tt>true</tt> si la source de tension est joignable, <tt>false</tt> sinon'};
+doc['PwmPowerSource']['load']={syn:'Met en cache les valeurs courantes de la source de tension, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e.',lib:'pwmpowersource.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Met en cache les valeurs courantes de la source de tension, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e. Par d\xE9faut, lorsqu\x27on acc\xE8de \xE0 un module, tous les attributs des fonctions du module sont automatiquement mises en cache pour la dur\xE9e standard (5 ms). Cette m\xE9thode peut \xEAtre utilis\xE9e pour marquer occasionellement les donn\xE9es cach\xE9es comme valides pour une plus longue p\xE9riode, par exemple dans le but de r\xE9duire le trafic r\xE9seau.</p>',par:{msValidity:'un entier correspondant \xE0 la dur\xE9e de validit\xE9 attribu\xE9e aux les param\xE8tres charg\xE9s, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['PwmPowerSource']['loadAttribute']={syn:'Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.',lib:'pwmpowersource.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un cha\xEEne vide.'};
+doc['PwmPowerSource']['muteValueCallbacks']={syn:'D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'pwmpowersource.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Vous pouvez utiliser cette fonction pour \xE9conomiser la bande passante et le CPU sur les machines de faible puissance, ou pour \xE9viter le d\xE9clanchement de callbacks HTTP. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['PwmPowerSource']['nextPwmPowerSource']={syn:'Continue l\x27\xE9num\xE9ration des Source de tension commenc\xE9e \xE0 l\x27aide de <tt>yFirstPwmPowerSource()</tt>.',lib:'pwmpowersource.nextPwmPowerSource()',pro:'def nextPwmPowerSource()',cmt:'<p>Continue l\x27\xE9num\xE9ration des Source de tension commenc\xE9e \xE0 l\x27aide de <tt>yFirstPwmPowerSource()</tt>.</p>',ret:'un pointeur sur un objet <tt>YPwmPowerSource</tt> accessible en ligne, ou <tt>null</tt> lorsque l\x27\xE9num\xE9ration est termin\xE9e.'};
+doc['PwmPowerSource']['registerValueCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e.',lib:'pwmpowersource.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callback peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callback ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et la cha\xEEne de caract\xE8re d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['PwmPowerSource']['set_logicalName']={syn:'Modifie le nom logique de la source de tension.',lib:'pwmpowersource.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Modifie le nom logique de la source de tension. Vous pouvez utiliser <tt>yCheckLogicalName()</tt> pour v\xE9rifier si votre param\xE8tre est valide. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique de la source de tension.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27appel se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['PwmPowerSource']['set_powerMode']={syn:'Modifie le mode fonctionnement des PWM qui peut sortir du 5 volts isol\xE9 issu de l\x27USB, du 3V isol\xE9 issu de l\x27USB, une tension arbitraire issue de l\x27alimentation externe.',lib:'pwmpowersource.set_powerMode()',pro:'def set_powerMode(<span id=pn>newval</span>)',cmt:'<p>Modifie le mode fonctionnement des PWM qui peut sortir du 5 volts isol\xE9 issu de l\x27USB, du 3V isol\xE9 issu de l\x27USB, une tension arbitraire issue de l\x27alimentation externe. Le PWM peut aussi en mode open drain, dans ce code il tire activement la ligne \xE0 z\xE9ro volts. Attention ce param\xE8tre est commun \xE0 tous les PWM du module, si vous changez le valeur de ce param\xE8tre, tous les PWM situ\xE9s sur le m\xEAme module seront affect\xE9s. Si vous souhaitez que le changement de ce param\xE8tre soit conserv\xE9 apr\xE8s un red\xE9marrage du module, n\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt>.</p>',par:{newval:'une valeur parmi <tt>Y_POWERMODE_USB_5V</tt>, <tt>Y_POWERMODE_USB_3V</tt>, <tt>Y_POWERMODE_EXT_V</tt> et <tt>Y_POWERMODE_OPNDRN</tt> repr&eacute;sentant le mode fonctionnement des PWM qui peut sortir du 5 volts isol\xE9 issu de l\x27USB, du 3V isol\xE9 issu de l\x27USB, une tension arbitraire issue de l\x27alimentation externe'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['PwmPowerSource']['set_userData']={syn:'Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>.',lib:'pwmpowersource.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',par:{data:'objet quelconque \xE0 m\xE9moriser'}};
+doc['PwmPowerSource']['unmuteValueCallbacks']={syn:'R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'pwmpowersource.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Cette fonction annule un pr\xE9c\xE9dent appel \xE0 <tt>muteValueCallbacks()</tt>. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+//--- (end of generated code: PwmPowerSource)
+//--- (generated code: Altitude)
+doc['Altitude']={'':{syn:'Interface de la fonction Altitude',inc:'from yocto_altitude import *',cmt:'<p>La classe YAltitude permet de lire et de configurer les capteurs d\x27altitude Yoctopuce. Elle h\xE9rite de la class YSensor toutes les fonctions de base des capteurs Yoctopuce: lecture de mesures, callbacks, enregistreur de donn\xE9es. De plus, pour les capteurs barom\xE9triques, elle permet de faire la configuration de la pression de r\xE9f\xE9rence au niveau de la mer (QNH).</p>'}};
+doc['Altitude']['FindAltitude']={syn:'Permet de retrouver un altimetre d\x27apr\xE8s un identifiant donn\xE9.',lib:'YAltitude.FindAltitude()',pro:'def FindAltitude(<span id=pn>func</span>)',cmt:'<p>Permet de retrouver un altimetre d\x27apr\xE8s un identifiant donn\xE9. L\x27identifiant peut \xEAtre sp\xE9cifi\xE9 sous plusieurs formes:<br> <ul> <li>NomLogiqueFonction</li> <li>NoSerieModule.IdentifiantFonction</li> <li>NoSerieModule.NomLogiqueFonction</li> <li>NomLogiqueModule.IdentifiantMat\xE9riel</li> <li>NomLogiqueModule.NomLogiqueFonction</li> </ul></p><p> Cette fonction n\x27exige pas que l\x27altim\xE8tre soit en ligne au moment ou elle est appel\xE9e, l\x27objet retourn\xE9 sera n\xE9anmoins valide. Utiliser la m\xE9thode <tt>YAltitude.isOnline()</tt> pour tester si l\x27altim\xE8tre est utilisable \xE0 un moment donn\xE9. En cas d\x27ambigu\xEFt\xE9 lorsqu\x27on fait une recherche par nom logique, aucune erreur ne sera notifi\xE9e: la premi\xE8re instance trouv\xE9e sera renvoy\xE9e. La recherche se fait d\x27abord par nom mat\xE9riel, puis par nom logique.</p>',par:{func:'une cha\xEEne de caract\xE8res qui r\xE9f\xE9rence l\x27altim\xE8tre sans ambigu\xEFt\xE9'},ret:'un objet de classe <tt>YAltitude</tt> qui permet ensuite de contr\xF4ler l\x27altim\xE8tre.'};
+doc['Altitude']['FirstAltitude']={syn:'Commence l\x27\xE9num\xE9ration des altim\xE8tres accessibles par la librairie.',lib:'YAltitude.FirstAltitude()',pro:'def FirstAltitude()',cmt:'<p>Commence l\x27\xE9num\xE9ration des altim\xE8tres accessibles par la librairie. Utiliser la fonction <tt>YAltitude.nextAltitude()</tt> pour it\xE9rer sur les autres altim\xE8tres.</p>',ret:'un pointeur sur un objet <tt>YAltitude</tt>, correspondant au premier altim\xE8tre accessible en ligne, ou <tt>null</tt> si il n\x27y a pas de altim\xE8tres disponibles.'};
+doc['Altitude']['calibrateFromPoints']={syn:'Enregistre des points de correction de mesure, typiquement pour compenser l\x27effet d\x27un bo\xEEtier sur les mesures rendues par le capteur.',lib:'altitude.calibrateFromPoints()',pro:'def calibrateFromPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Enregistre des points de correction de mesure, typiquement pour compenser l\x27effet d\x27un bo\xEEtier sur les mesures rendues par le capteur. Il est possible d\x27enregistrer jusqu\x27\xE0 cinq points de correction. Les points de correction doivent \xEAtre fournis en ordre croissant, et dans la plage valide du capteur. Le module effectue automatiquement une interpolation lin\xE9aire de l\x27erreur entre les points sp\xE9cifi\xE9s. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p><p> Pour plus de plus amples possibilit\xE9s d\x27appliquer une surcalibration aux capteurs, veuillez contacter support@yoctopuce.com.</p>',par:{rawValues:'tableau de nombres flottants, correspondant aux valeurs brutes rendues par le capteur pour les points de correction.',refValues:'tableau de nombres flottants, correspondant aux valeurs corrig\xE9es d\xE9sir\xE9es pour les points de correction.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Altitude']['clearCache']={syn:'Invalide le cache.',lib:'altitude.clearCache()',pro:'def clearCache()',cmt:'<p>Invalide le cache. Invalide le cache des valeurs courantes de l\x27altim\xE8tre. Force le prochain appel \xE0 une m\xE9thode get_xxx() ou loadxxx() pour charger les les donn\xE9es depuis le module.</p>'};
+doc['Altitude']['describe']={syn:'Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance de l\x27altim\xE8tre au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'altitude.describe()',pro:'def describe()',cmt:'<p>Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance de l\x27altim\xE8tre au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. Plus pr\xE9cis\xE9ment, <tt>TYPE</tt> correspond au type de fonction, <tt>NAME</tt> correspond au nom utils\xE9 lors du premier acc\xE8s a la fonction, <tt>SERIAL</tt> correspond au num\xE9ro de s\xE9rie du module si le module est connect\xE9, ou <tt>\x22unresolved\x22</tt> sinon, et <tt>FUNCTIONID</tt> correspond \xE0 l\x27identifiant mat\xE9riel de la fonction si le module est connect\xE9. Par exemple, La methode va retourner <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> si le module est d\xE9j\xE0 connect\xE9 ou <tt>Relay(BadCustomeName.relay1)=unresolved</tt> si le module n\x27est pas d\xE9j\xE0 connect\xE9. Cette methode ne declenche aucune transaction USB ou TCP et peut donc \xEAtre utilis\xE9 dans un debuggeur.</p>',ret:'une cha\xEEne de caract\xE8res d\xE9crivant l\x27altim\xE8tre (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['Altitude']['get_advertisedValue']={syn:'Retourne la valeur courante de l\x27altim\xE8tre (pas plus de 6 caract\xE8res).',lib:'altitude.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Retourne la valeur courante de l\x27altim\xE8tre (pas plus de 6 caract\xE8res).</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur courante de l\x27altim\xE8tre (pas plus de 6 caract\xE8res).',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['Altitude']['get_currentRawValue']={syn:'Retourne la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en m\xE8tres, sous forme de nombre \xE0 virgule.',lib:'altitude.get_currentRawValue()',pro:'def get_currentRawValue()',cmt:'<p>Retourne la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en m\xE8tres, sous forme de nombre \xE0 virgule.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en m\xE8tres, sous forme de nombre \xE0 virgule',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_CURRENTRAWVALUE_INVALID</tt>.'};
+doc['Altitude']['get_currentValue']={syn:'Retourne la valeur actuelle de l\x27altitude, en m\xE8tres, sous forme de nombre \xE0 virgule.',lib:'altitude.get_currentValue()',pro:'def get_currentValue()',cmt:'<p>Retourne la valeur actuelle de l\x27altitude, en m\xE8tres, sous forme de nombre \xE0 virgule.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur actuelle de l\x27altitude, en m\xE8tres, sous forme de nombre \xE0 virgule',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_CURRENTVALUE_INVALID</tt>.'};
+doc['Altitude']['get_errorMessage']={syn:'Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de l\x27altim\xE8tre.',lib:'altitude.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de l\x27altim\xE8tre. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'une cha\xEEne de caract\xE8res correspondant au message de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation de l\x27altim\xE8tre.'};
+doc['Altitude']['get_errorType']={syn:'Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de l\x27altim\xE8tre.',lib:'altitude.get_errorType()',pro:'def get_errorType()',cmt:'<p>Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de l\x27altim\xE8tre. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'un nombre correspondant au code de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation de l\x27altim\xE8tre.'};
+doc['Altitude']['get_friendlyName']={syn:'Retourne un identifiant global de l\x27altim\xE8tre au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>.',lib:'altitude.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Retourne un identifiant global de l\x27altim\xE8tre au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>. Le cha\xEEne retourn\xE9e utilise soit les noms logiques du module et de l\x27altim\xE8tre si ils sont d\xE9finis, soit respectivement le num\xE9ro de s\xE9rie du module et l\x27identifant mat\xE9riel de l\x27altim\xE8tre (par exemple: <tt>MyCustomName.relay1</tt>)</p>',ret:'une cha\xEEne de caract\xE8res identifiant l\x27altim\xE8tre en utilisant les noms logiques (ex: <tt>MyCustomName.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['Altitude']['get_functionDescriptor']={syn:'Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction.',lib:'altitude.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction. Cet identifiant peut \xEAtre utilis\xE9 pour tester si deux instance de <tt>YFunction</tt> r\xE9f\xE9rencent physiquement la m\xEAme fonction sur le m\xEAme module.</p>',ret:'un identifiant de type <tt>YFUN_DESCR</tt>.',ext:'Si la fonction n\x27a jamais \xE9t\xE9 contact\xE9e, la valeur retourn\xE9e sera <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>'};
+doc['Altitude']['get_functionId']={syn:'Retourne l\x27identifiant mat\xE9riel de l\x27altim\xE8tre, sans r\xE9f\xE9rence au module.',lib:'altitude.get_functionId()',pro:'def get_functionId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel de l\x27altim\xE8tre, sans r\xE9f\xE9rence au module. Par example <tt>relay1</tt>.</p>',ret:'une cha\xEEne de caract\xE8res identifiant l\x27altim\xE8tre (ex: <tt>relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['Altitude']['get_hardwareId']={syn:'Retourne l\x27identifiant mat\xE9riel unique de l\x27altim\xE8tre au format <tt>SERIAL.FUNCTIONID</tt>.',lib:'altitude.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel unique de l\x27altim\xE8tre au format <tt>SERIAL.FUNCTIONID</tt>. L\x27identifiant unique est compos\xE9 du num\xE9ro de s\xE9rie du module et de l\x27identifiant mat\xE9riel de l\x27altim\xE8tre (par example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'une cha\xEEne de caract\xE8res identifiant l\x27altim\xE8tre (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['Altitude']['get_highestValue']={syn:'Retourne la valeur maximale observ\xE9e pour l\x27altitude depuis le d\xE9marrage du module.',lib:'altitude.get_highestValue()',pro:'def get_highestValue()',cmt:'<p>Retourne la valeur maximale observ\xE9e pour l\x27altitude depuis le d\xE9marrage du module.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur maximale observ\xE9e pour l\x27altitude depuis le d\xE9marrage du module',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_HIGHESTVALUE_INVALID</tt>.'};
+doc['Altitude']['get_logFrequency']={syn:'Retourne la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es.',lib:'altitude.get_logFrequency()',pro:'def get_logFrequency()',cmt:'<p>Retourne la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_LOGFREQUENCY_INVALID</tt>.'};
+doc['Altitude']['get_logicalName']={syn:'Retourne le nom logique de l\x27altim\xE8tre.',lib:'altitude.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Retourne le nom logique de l\x27altim\xE8tre.</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique de l\x27altim\xE8tre.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['Altitude']['get_lowestValue']={syn:'Retourne la valeur minimale observ\xE9e pour l\x27altitude depuis le d\xE9marrage du module.',lib:'altitude.get_lowestValue()',pro:'def get_lowestValue()',cmt:'<p>Retourne la valeur minimale observ\xE9e pour l\x27altitude depuis le d\xE9marrage du module.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur minimale observ\xE9e pour l\x27altitude depuis le d\xE9marrage du module',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_LOWESTVALUE_INVALID</tt>.'};
+doc['Altitude']['get_module']={syn:'Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction.',lib:'altitude.get_module()',pro:'def get_module()',cmt:'<p>Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction. Si la fonction ne peut \xEAtre trouv\xE9e sur aucun module, l\x27instance de <tt>YModule</tt> retourn\xE9e ne sera pas joignable.</p>',ret:'une instance de <tt>YModule</tt>'};
+doc['Altitude']['get_qnh']={syn:'Retourne la pression de r\xE9f\xE9rence au niveau de la mer utilis\xE9e pour le calcul de l\x27altitude (QNH).',lib:'altitude.get_qnh()',pro:'def get_qnh()',cmt:'<p>Retourne la pression de r\xE9f\xE9rence au niveau de la mer utilis\xE9e pour le calcul de l\x27altitude (QNH).</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la pression de r\xE9f\xE9rence au niveau de la mer utilis\xE9e pour le calcul de l\x27altitude (QNH)',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_QNH_INVALID</tt>.'};
+doc['Altitude']['get_recordedData']={syn:'Retourne un objet DataSet repr\xE9sentant des mesures de ce capteur pr\xE9c\xE9demment enregistr\xE9es \xE0 l\x27aide du DataLogger, pour l\x27intervalle de temps sp\xE9cifi\xE9.',lib:'altitude.get_recordedData()',pro:'def get_recordedData(<span id=pn>startTime</span>, <span id=pn>endTime</span>)',cmt:'<p>Retourne un objet DataSet repr\xE9sentant des mesures de ce capteur pr\xE9c\xE9demment enregistr\xE9es \xE0 l\x27aide du DataLogger, pour l\x27intervalle de temps sp\xE9cifi\xE9. Veuillez vous r\xE9f\xE9rer \xE0 la documentation de la classe DataSet pour plus plus d\x27informations sur la mani\xE8re d\x27obtenir un aper\xE7u des mesures pour la p\xE9riode, et comment charger progressivement une grande quantit\xE9 de mesures depuis le dataLogger.</p><p> Cette m\xE9thode ne fonctionne que si le module utilise un firmware r\xE9cent, car les objets DataSet ne sont pas support\xE9s par les firmwares ant\xE9rieurs \xE0 la r\xE9vision 13000.</p>',par:{startTime:'le d\xE9but de l\x27intervalle de mesure d\xE9sir\xE9, c\x27est \xE0 dire en nombre de secondes depuis le 1er janvier 1970 UTC. La valeur 0 peut \xEAtre utilis\xE9e pour ne poser aucune limite sur le d\xE9but des mesures.',endTime:'la find de l\x27intercalle de mesure d\xE9sir\xE9, c\x27est \xE0 dire en nombre de secondes depuis le 1er janvier 1970 UTC. La valeur 0 peut \xEAtre utilis\xE9e pour ne poser aucune limite de fin.'},ret:'une instance de YDataSet, dont les m\xE9thodes permettent de d\x27acc\xE9der aux donn\xE9es historiques souhait\xE9es.'};
+doc['Altitude']['get_reportFrequency']={syn:'Retourne la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction.',lib:'altitude.get_reportFrequency()',pro:'def get_reportFrequency()',cmt:'<p>Retourne la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_REPORTFREQUENCY_INVALID</tt>.'};
+doc['Altitude']['get_resolution']={syn:'Retourne la r\xE9solution des valeurs mesur\xE9es.',lib:'altitude.get_resolution()',pro:'def get_resolution()',cmt:'<p>Retourne la r\xE9solution des valeurs mesur\xE9es. La r\xE9solution correspond \xE0 la pr\xE9cision num\xE9rique de la repr\xE9sentation des mesures. Elle n\x27est pas forc\xE9ment identique \xE0 la pr\xE9cision r\xE9elle du capteur.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la r\xE9solution des valeurs mesur\xE9es',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_RESOLUTION_INVALID</tt>.'};
+doc['Altitude']['get_sensorState']={syn:'Retourne le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment.',lib:'altitude.get_sensorState()',pro:'def get_sensorState()',cmt:'<p>Retourne le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment.</p>',ret:'un entier repr&eacute;sentant le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_SENSORSTATE_INVALID</tt>.'};
+doc['Altitude']['get_technology']={syn:'Renvoie la technologie employ\xE9e par la fonction pour calculer l\x27altitude.',lib:'altitude.get_technology()',pro:'def get_technology()',cmt:'<p>Renvoie la technologie employ\xE9e par la fonction pour calculer l\x27altitude. les valeur possible sont \x22barometric\x22 et \x22gps\x22</p>',ret:'une cha&icirc;ne de caract&egrave;res',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_TECHNOLOGY_INVALID</tt>.'};
+doc['Altitude']['get_unit']={syn:'Retourne l\x27unit\xE9 dans laquelle l\x27altitude est exprim\xE9e.',lib:'altitude.get_unit()',pro:'def get_unit()',cmt:'<p>Retourne l\x27unit\xE9 dans laquelle l\x27altitude est exprim\xE9e.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant l\x27unit\xE9 dans laquelle l\x27altitude est exprim\xE9e',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_UNIT_INVALID</tt>.'};
+doc['Altitude']['get_userData']={syn:'Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>.',lib:'altitude.get_userData()',pro:'def get_userData()',cmt:'<p>Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',ret:'l\x27objet stock\xE9 pr\xE9c\xE9demment par l\x27appelant.'};
+doc['Altitude']['isOnline']={syn:'V\xE9rifie si le module h\xE9bergeant l\x27altim\xE8tre est joignable, sans d\xE9clencher d\x27erreur.',lib:'altitude.isOnline()',pro:'def isOnline()',cmt:'<p>V\xE9rifie si le module h\xE9bergeant l\x27altim\xE8tre est joignable, sans d\xE9clencher d\x27erreur. Si les valeurs des attributs en cache de l\x27altim\xE8tre sont valides au moment de l\x27appel, le module est consid\xE9r\xE9 joignable. Cette fonction ne cause en aucun cas d\x27exception, quelle que soit l\x27erreur qui pourrait se produire lors de la v\xE9rification de joignabilit\xE9.</p>',ret:'<tt>true</tt> si l\x27altim\xE8tre est joignable, <tt>false</tt> sinon'};
+doc['Altitude']['load']={syn:'Met en cache les valeurs courantes de l\x27altim\xE8tre, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e.',lib:'altitude.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Met en cache les valeurs courantes de l\x27altim\xE8tre, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e. Par d\xE9faut, lorsqu\x27on acc\xE8de \xE0 un module, tous les attributs des fonctions du module sont automatiquement mises en cache pour la dur\xE9e standard (5 ms). Cette m\xE9thode peut \xEAtre utilis\xE9e pour marquer occasionellement les donn\xE9es cach\xE9es comme valides pour une plus longue p\xE9riode, par exemple dans le but de r\xE9duire le trafic r\xE9seau.</p>',par:{msValidity:'un entier correspondant \xE0 la dur\xE9e de validit\xE9 attribu\xE9e aux les param\xE8tres charg\xE9s, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Altitude']['loadAttribute']={syn:'Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.',lib:'altitude.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un cha\xEEne vide.'};
+doc['Altitude']['loadCalibrationPoints']={syn:'R\xE9cup\xE8re les points de correction de mesure pr\xE9c\xE9demment enregistr\xE9s \xE0 l\x27aide de la m\xE9thode <tt>calibrateFromPoints</tt>.',lib:'altitude.loadCalibrationPoints()',pro:'def loadCalibrationPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>R\xE9cup\xE8re les points de correction de mesure pr\xE9c\xE9demment enregistr\xE9s \xE0 l\x27aide de la m\xE9thode <tt>calibrateFromPoints</tt>.</p>',par:{rawValues:'tableau de nombres flottants, qui sera rempli par la fonction avec les valeurs brutes des points de correction.',refValues:'tableau de nombres flottants, qui sera rempli par la fonction avec les valeurs d\xE9sir\xE9es des points de correction.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Altitude']['muteValueCallbacks']={syn:'D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'altitude.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Vous pouvez utiliser cette fonction pour \xE9conomiser la bande passante et le CPU sur les machines de faible puissance, ou pour \xE9viter le d\xE9clanchement de callbacks HTTP. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Altitude']['nextAltitude']={syn:'Continue l\x27\xE9num\xE9ration des altim\xE8tres commenc\xE9e \xE0 l\x27aide de <tt>yFirstAltitude()</tt>.',lib:'altitude.nextAltitude()',pro:'def nextAltitude()',cmt:'<p>Continue l\x27\xE9num\xE9ration des altim\xE8tres commenc\xE9e \xE0 l\x27aide de <tt>yFirstAltitude()</tt>.</p>',ret:'un pointeur sur un objet <tt>YAltitude</tt> accessible en ligne, ou <tt>null</tt> lorsque l\x27\xE9num\xE9ration est termin\xE9e.'};
+doc['Altitude']['registerTimedReportCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque notification p\xE9riodique.',lib:'altitude.registerTimedReportCallback()',pro:'def registerTimedReportCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque notification p\xE9riodique. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callbacks peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callbacks ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et un objet YMeasure d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['Altitude']['registerValueCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e.',lib:'altitude.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callback peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callback ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et la cha\xEEne de caract\xE8re d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['Altitude']['set_currentValue']={syn:'Modifie l\x27altitude actuelle suppos\xE9e.',lib:'altitude.set_currentValue()',pro:'def set_currentValue(<span id=pn>newval</span>)',cmt:'<p>Modifie l\x27altitude actuelle suppos\xE9e. Ceci permet de compenser les changements de pression ou de travailler en mode relatif.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant l\x27altitude actuelle suppos\xE9e'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Altitude']['set_highestValue']={syn:'Modifie la m\xE9moire de valeur maximale observ\xE9e.',lib:'altitude.set_highestValue()',pro:'def set_highestValue(<span id=pn>newval</span>)',cmt:'<p>Modifie la m\xE9moire de valeur maximale observ\xE9e.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la m\xE9moire de valeur maximale observ\xE9e'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Altitude']['set_logFrequency']={syn:'Modifie la fr\xE9quence d\x27enregistrement des mesures dans le datalogger.',lib:'altitude.set_logFrequency()',pro:'def set_logFrequency(<span id=pn>newval</span>)',cmt:'<p>Modifie la fr\xE9quence d\x27enregistrement des mesures dans le datalogger. La fr\xE9quence peut \xEAtre sp\xE9cifi\xE9e en mesures par secondes, en mesures par minutes (par exemple \x2215/m\x22) ou en mesures par heure (par exemple \x224/h\x22). Pour d\xE9sactiver l\x27enregistrement des mesures de cette fonction, utilisez la valeur \x22OFF\x22.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence d\x27enregistrement des mesures dans le datalogger'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Altitude']['set_logicalName']={syn:'Modifie le nom logique de l\x27altim\xE8tre.',lib:'altitude.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Modifie le nom logique de l\x27altim\xE8tre. Vous pouvez utiliser <tt>yCheckLogicalName()</tt> pour v\xE9rifier si votre param\xE8tre est valide. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique de l\x27altim\xE8tre.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27appel se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Altitude']['set_lowestValue']={syn:'Modifie la m\xE9moire de valeur minimale observ\xE9e.',lib:'altitude.set_lowestValue()',pro:'def set_lowestValue(<span id=pn>newval</span>)',cmt:'<p>Modifie la m\xE9moire de valeur minimale observ\xE9e.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la m\xE9moire de valeur minimale observ\xE9e'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Altitude']['set_qnh']={syn:'Modifie la pression de r\xE9f\xE9rence au niveau de la mer utilis\xE9e pour le calcul de l\x27altitude (QNH).',lib:'altitude.set_qnh()',pro:'def set_qnh(<span id=pn>newval</span>)',cmt:'<p>Modifie la pression de r\xE9f\xE9rence au niveau de la mer utilis\xE9e pour le calcul de l\x27altitude (QNH). Ceci permet de compenser les changements de pression atmosph\xE9rique dus au climat.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la pression de r\xE9f\xE9rence au niveau de la mer utilis\xE9e pour le calcul de l\x27altitude (QNH)'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Altitude']['set_reportFrequency']={syn:'Modifie la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es.',lib:'altitude.set_reportFrequency()',pro:'def set_reportFrequency(<span id=pn>newval</span>)',cmt:'<p>Modifie la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es. La fr\xE9quence peut \xEAtre sp\xE9cifi\xE9e en mesures par secondes, en mesures par minutes (par exemple \x2215/m\x22) ou en mesures par heure (par exemple \x224/h\x22). Pour d\xE9sactiver les notifications p\xE9riodiques pour cette fonction, utilisez la valeur \x22OFF\x22.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Altitude']['set_resolution']={syn:'Modifie la r\xE9solution des valeurs physique mesur\xE9es.',lib:'altitude.set_resolution()',pro:'def set_resolution(<span id=pn>newval</span>)',cmt:'<p>Modifie la r\xE9solution des valeurs physique mesur\xE9es. La r\xE9solution correspond \xE0 la pr\xE9cision de l\x27affichage des mesures. Elle ne change pas la pr\xE9cision de la mesure elle-m\xEAme.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la r\xE9solution des valeurs physique mesur\xE9es'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Altitude']['set_userData']={syn:'Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>.',lib:'altitude.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',par:{data:'objet quelconque \xE0 m\xE9moriser'}};
+doc['Altitude']['startDataLogger']={syn:'D\xE9marre l\x27enregistreur de donn\xE9es du module.',lib:'altitude.startDataLogger()',pro:'def startDataLogger()',cmt:'<p>D\xE9marre l\x27enregistreur de donn\xE9es du module. Attention, l\x27enregistreur ne sauvera les mesures de ce capteur que si la fr\xE9quence d\x27enregistrement (logFrequency) n\x27est pas sur \x22OFF\x22.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.'};
+doc['Altitude']['stopDataLogger']={syn:'Arr\xEAte l\x27enregistreur de donn\xE9es du module.',lib:'altitude.stopDataLogger()',pro:'def stopDataLogger()',cmt:'<p>Arr\xEAte l\x27enregistreur de donn\xE9es du module.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.'};
+doc['Altitude']['unmuteValueCallbacks']={syn:'R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'altitude.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Cette fonction annule un pr\xE9c\xE9dent appel \xE0 <tt>muteValueCallbacks()</tt>. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+//--- (end of generated code: Altitude)
+//--- (generated code: Motor)
+doc['Motor']={'':{syn:'Interface de la fonction Motor',inc:'from yocto_motor import *',cmt:'<p>La librairie de programmation yoctopuce permet de piloter la puissance envoy\xE9e au moteur pour le faire tourner aussi bien dans un sens que dans l\x27autre, mais aussi de piloter des acc\xE9l\xE9rations lin\xE9aires: le moteur acc\xE9l\xE9re alors tout seul sans que vous vous ayez \xE0 vous en occuper. La librairie permet aussi de freiner le moteur: cela est r\xE9alis\xE9 en court-circuitant les p\xF4les du moteur, ce qui le transforme en frein \xE9lectro-magn\xE9tique.</p>'}};
+doc['Motor']['FindMotor']={syn:'Permet de retrouver un moteur d\x27apr\xE8s un identifiant donn\xE9.',lib:'YMotor.FindMotor()',pro:'def FindMotor(<span id=pn>func</span>)',cmt:'<p>Permet de retrouver un moteur d\x27apr\xE8s un identifiant donn\xE9. L\x27identifiant peut \xEAtre sp\xE9cifi\xE9 sous plusieurs formes:<br> <ul> <li>NomLogiqueFonction</li> <li>NoSerieModule.IdentifiantFonction</li> <li>NoSerieModule.NomLogiqueFonction</li> <li>NomLogiqueModule.IdentifiantMat\xE9riel</li> <li>NomLogiqueModule.NomLogiqueFonction</li> </ul></p><p> Cette fonction n\x27exige pas que le moteur soit en ligne au moment ou elle est appel\xE9e, l\x27objet retourn\xE9 sera n\xE9anmoins valide. Utiliser la m\xE9thode <tt>YMotor.isOnline()</tt> pour tester si le moteur est utilisable \xE0 un moment donn\xE9. En cas d\x27ambigu\xEFt\xE9 lorsqu\x27on fait une recherche par nom logique, aucune erreur ne sera notifi\xE9e: la premi\xE8re instance trouv\xE9e sera renvoy\xE9e. La recherche se fait d\x27abord par nom mat\xE9riel, puis par nom logique.</p>',par:{func:'une cha\xEEne de caract\xE8res qui r\xE9f\xE9rence le moteur sans ambigu\xEFt\xE9'},ret:'un objet de classe <tt>YMotor</tt> qui permet ensuite de contr\xF4ler le moteur.'};
+doc['Motor']['FirstMotor']={syn:'Commence l\x27\xE9num\xE9ration des moteur accessibles par la librairie.',lib:'YMotor.FirstMotor()',pro:'def FirstMotor()',cmt:'<p>Commence l\x27\xE9num\xE9ration des moteur accessibles par la librairie. Utiliser la fonction <tt>YMotor.nextMotor()</tt> pour it\xE9rer sur les autres moteur.</p>',ret:'un pointeur sur un objet <tt>YMotor</tt>, correspondant au premier moteur accessible en ligne, ou <tt>null</tt> si il n\x27y a pas de moteur disponibles.'};
+doc['Motor']['brakingForceMove']={syn:'Modifie progressivement la force de freinage appliqu\xE9e au moteur sur une dur\xE9e donn\xE9e.',lib:'motor.brakingForceMove()',pro:'def brakingForceMove(<span id=pn>targetPower</span>, <span id=pn>delay</span>)',cmt:'<p>Modifie progressivement la force de freinage appliqu\xE9e au moteur sur une dur\xE9e donn\xE9e.</p>',par:{targetPower:'force de freinage finale, en pourcentage',delay:'dur\xE9e (en ms) sur laquelle le changement de puissance sera effectu\xE9'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Motor']['clearCache']={syn:'Invalide le cache.',lib:'motor.clearCache()',pro:'def clearCache()',cmt:'<p>Invalide le cache. Invalide le cache des valeurs courantes du moteur. Force le prochain appel \xE0 une m\xE9thode get_xxx() ou loadxxx() pour charger les les donn\xE9es depuis le module.</p>'};
+doc['Motor']['describe']={syn:'Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du moteur au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'motor.describe()',pro:'def describe()',cmt:'<p>Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du moteur au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. Plus pr\xE9cis\xE9ment, <tt>TYPE</tt> correspond au type de fonction, <tt>NAME</tt> correspond au nom utils\xE9 lors du premier acc\xE8s a la fonction, <tt>SERIAL</tt> correspond au num\xE9ro de s\xE9rie du module si le module est connect\xE9, ou <tt>\x22unresolved\x22</tt> sinon, et <tt>FUNCTIONID</tt> correspond \xE0 l\x27identifiant mat\xE9riel de la fonction si le module est connect\xE9. Par exemple, La methode va retourner <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> si le module est d\xE9j\xE0 connect\xE9 ou <tt>Relay(BadCustomeName.relay1)=unresolved</tt> si le module n\x27est pas d\xE9j\xE0 connect\xE9. Cette methode ne declenche aucune transaction USB ou TCP et peut donc \xEAtre utilis\xE9 dans un debuggeur.</p>',ret:'une cha\xEEne de caract\xE8res d\xE9crivant le moteur (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['Motor']['drivingForceMove']={syn:'Modifie progressivement la puissance envoy\xE9e au moteur sur une dur\xE9e donn\xE9e.',lib:'motor.drivingForceMove()',pro:'def drivingForceMove(<span id=pn>targetPower</span>, <span id=pn>delay</span>)',cmt:'<p>Modifie progressivement la puissance envoy\xE9e au moteur sur une dur\xE9e donn\xE9e.</p>',par:{targetPower:'puissance finale d\xE9sir\xE9e, en pourcentage de -100% \xE0 +100%',delay:'dur\xE9e (en ms) sur laquelle le changement de puissance sera effectu\xE9'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Motor']['get_advertisedValue']={syn:'Retourne la valeur courante du moteur (pas plus de 6 caract\xE8res).',lib:'motor.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Retourne la valeur courante du moteur (pas plus de 6 caract\xE8res).</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur courante du moteur (pas plus de 6 caract\xE8res).',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['Motor']['get_brakingForce']={syn:'Retourne la force de freinage appliqu\xE9e au moteur, sous forme de pourcentage.',lib:'motor.get_brakingForce()',pro:'def get_brakingForce()',cmt:'<p>Retourne la force de freinage appliqu\xE9e au moteur, sous forme de pourcentage. La valeur 0 correspond ne pas freiner (moteur en roue libre).</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la force de freinage appliqu\xE9e au moteur, sous forme de pourcentage',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_BRAKINGFORCE_INVALID</tt>.'};
+doc['Motor']['get_cutOffVoltage']={syn:'Retourne la limite de l\x27alimentation en dessous de laquelle le contr\xF4leur va automatiquement se mettre en erreur et couper la consommation.',lib:'motor.get_cutOffVoltage()',pro:'def get_cutOffVoltage()',cmt:'<p>Retourne la limite de l\x27alimentation en dessous de laquelle le contr\xF4leur va automatiquement se mettre en erreur et couper la consommation. Ce r\xE9glage permet d\x27\xE9viter d\x27endommager un accumulateur un continuant \xE0 l\x27utiliser une fois \x22vide\x22.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la limite de l\x27alimentation en dessous de laquelle le contr\xF4leur va automatiquement se mettre en erreur et couper la consommation',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_CUTOFFVOLTAGE_INVALID</tt>.'};
+doc['Motor']['get_drivingForce']={syn:'Retourne la puissance actuelle envoy\xE9e au moteur, sous forme de nombre r\xE9el entre -100% et +100%.',lib:'motor.get_drivingForce()',pro:'def get_drivingForce()',cmt:'<p>Retourne la puissance actuelle envoy\xE9e au moteur, sous forme de nombre r\xE9el entre -100% et +100%.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la puissance actuelle envoy\xE9e au moteur, sous forme de nombre r\xE9el entre -100% et +100%',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_DRIVINGFORCE_INVALID</tt>.'};
+doc['Motor']['get_errorMessage']={syn:'Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du moteur.',lib:'motor.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du moteur. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'une cha\xEEne de caract\xE8res correspondant au message de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du moteur.'};
+doc['Motor']['get_errorType']={syn:'Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du moteur.',lib:'motor.get_errorType()',pro:'def get_errorType()',cmt:'<p>Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du moteur. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'un nombre correspondant au code de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du moteur.'};
+doc['Motor']['get_failSafeTimeout']={syn:'Retourne le temps en millisecondes pendant lequel le variateur pourra fonctionner sans instruction du processus de contr\xF4le.',lib:'motor.get_failSafeTimeout()',pro:'def get_failSafeTimeout()',cmt:'<p>Retourne le temps en millisecondes pendant lequel le variateur pourra fonctionner sans instruction du processus de contr\xF4le. Pass\xE9 ce delai, le contr\xF4leur arr\xEAtera le moteur et passera en mode erreur FAILSAFE. La s\xE9curit\xE9 failsafe est d\xE9sactiv\xE9e quand la valeur est \xE0 z\xE9ro.</p>',ret:'un entier repr&eacute;sentant le temps en millisecondes pendant lequel le variateur pourra fonctionner sans instruction du processus de contr\xF4le',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_FAILSAFETIMEOUT_INVALID</tt>.'};
+doc['Motor']['get_frequency']={syn:'Retourne la fr\xE9quence du signal PWM utilis\xE9 pour contr\xF4ler le moteur.',lib:'motor.get_frequency()',pro:'def get_frequency()',cmt:'<p>Retourne la fr\xE9quence du signal PWM utilis\xE9 pour contr\xF4ler le moteur.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la fr\xE9quence du signal PWM utilis\xE9 pour contr\xF4ler le moteur',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_FREQUENCY_INVALID</tt>.'};
+doc['Motor']['get_friendlyName']={syn:'Retourne un identifiant global du moteur au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>.',lib:'motor.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Retourne un identifiant global du moteur au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>. Le cha\xEEne retourn\xE9e utilise soit les noms logiques du module et du moteur si ils sont d\xE9finis, soit respectivement le num\xE9ro de s\xE9rie du module et l\x27identifant mat\xE9riel du moteur (par exemple: <tt>MyCustomName.relay1</tt>)</p>',ret:'une cha\xEEne de caract\xE8res identifiant le moteur en utilisant les noms logiques (ex: <tt>MyCustomName.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['Motor']['get_functionDescriptor']={syn:'Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction.',lib:'motor.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction. Cet identifiant peut \xEAtre utilis\xE9 pour tester si deux instance de <tt>YFunction</tt> r\xE9f\xE9rencent physiquement la m\xEAme fonction sur le m\xEAme module.</p>',ret:'un identifiant de type <tt>YFUN_DESCR</tt>.',ext:'Si la fonction n\x27a jamais \xE9t\xE9 contact\xE9e, la valeur retourn\xE9e sera <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>'};
+doc['Motor']['get_functionId']={syn:'Retourne l\x27identifiant mat\xE9riel du moteur, sans r\xE9f\xE9rence au module.',lib:'motor.get_functionId()',pro:'def get_functionId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel du moteur, sans r\xE9f\xE9rence au module. Par example <tt>relay1</tt>.</p>',ret:'une cha\xEEne de caract\xE8res identifiant le moteur (ex: <tt>relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['Motor']['get_hardwareId']={syn:'Retourne l\x27identifiant mat\xE9riel unique du moteur au format <tt>SERIAL.FUNCTIONID</tt>.',lib:'motor.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel unique du moteur au format <tt>SERIAL.FUNCTIONID</tt>. L\x27identifiant unique est compos\xE9 du num\xE9ro de s\xE9rie du module et de l\x27identifiant mat\xE9riel du moteur (par example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'une cha\xEEne de caract\xE8res identifiant le moteur (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['Motor']['get_logicalName']={syn:'Retourne le nom logique du moteur.',lib:'motor.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Retourne le nom logique du moteur.</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du moteur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['Motor']['get_module']={syn:'Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction.',lib:'motor.get_module()',pro:'def get_module()',cmt:'<p>Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction. Si la fonction ne peut \xEAtre trouv\xE9e sur aucun module, l\x27instance de <tt>YModule</tt> retourn\xE9e ne sera pas joignable.</p>',ret:'une instance de <tt>YModule</tt>'};
+doc['Motor']['get_motorStatus']={syn:'Retourne l\x27\xE9tat du contr\xF4leur de moteur.',lib:'motor.get_motorStatus()',pro:'def get_motorStatus()',cmt:'<p>Retourne l\x27\xE9tat du contr\xF4leur de moteur. Les \xE9tats possibles sont: IDLE si le moteur est \xE0 l\x27arr\xEAt/en roue libre, pr\xEAt \xE0 d\xE9marrer; FORWD si le contr\xF4leur fait tourner le moteur en marche avant; BACKWD si le contr\xF4leur fait tourner le moteur en marche arri\xE8re; BRAKE si le contr\xF4leur est en train de freiner; LOVOLT si le contr\xF4leur a d\xE9tect\xE9 une tension trop basse; HICURR si le contr\xF4leur a d\xE9tect\xE9 une surconsommation; HIHEAT si le contr\xF4leur a d\xE9tect\xE9 une surchauffe; FAILSF si le contr\xF4leur est pass\xE9 en protection failsafe.</p><p> Si le contr\xF4leur est en erreur (LOVOLT, HICURR, HIHEAT,FAILSF), il doit \xEAtre explicitement r\xE9initialis\xE9 avec la fonction <tt>resetStatus</tt>.</p>',ret:'une valeur parmi <tt>Y_MOTORSTATUS_IDLE</tt>, <tt>Y_MOTORSTATUS_BRAKE</tt>, <tt>Y_MOTORSTATUS_FORWD</tt>, <tt>Y_MOTORSTATUS_BACKWD</tt>, <tt>Y_MOTORSTATUS_LOVOLT</tt>, <tt>Y_MOTORSTATUS_HICURR</tt>, <tt>Y_MOTORSTATUS_HIHEAT</tt> et <tt>Y_MOTORSTATUS_FAILSF</tt> repr&eacute;sentant l\x27\xE9tat du contr\xF4leur de moteur',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_MOTORSTATUS_INVALID</tt>.'};
+doc['Motor']['get_overCurrentLimit']={syn:'Retourne la valeur limite du courant (en mA) au dessus de laquelle le contr\xF4leur va automatiquement se mettre en erreur.',lib:'motor.get_overCurrentLimit()',pro:'def get_overCurrentLimit()',cmt:'<p>Retourne la valeur limite du courant (en mA) au dessus de laquelle le contr\xF4leur va automatiquement se mettre en erreur. Une valeur nulle signifie qu\x27aucune limite n\x27est d\xE9finie.</p>',ret:'un entier repr&eacute;sentant la valeur limite du courant (en mA) au dessus de laquelle le contr\xF4leur va automatiquement se mettre en erreur',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_OVERCURRENTLIMIT_INVALID</tt>.'};
+doc['Motor']['get_starterTime']={syn:'Retourne la dur\xE9e (en ms) pendant laquelle le moteur est pilot\xE9 \xE0 basse fr\xE9quence pour faciliter son d\xE9marrage.',lib:'motor.get_starterTime()',pro:'def get_starterTime()',cmt:'<p>Retourne la dur\xE9e (en ms) pendant laquelle le moteur est pilot\xE9 \xE0 basse fr\xE9quence pour faciliter son d\xE9marrage.</p>',ret:'un entier repr&eacute;sentant la dur\xE9e (en ms) pendant laquelle le moteur est pilot\xE9 \xE0 basse fr\xE9quence pour faciliter son d\xE9marrage',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_STARTERTIME_INVALID</tt>.'};
+doc['Motor']['get_userData']={syn:'Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>.',lib:'motor.get_userData()',pro:'def get_userData()',cmt:'<p>Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',ret:'l\x27objet stock\xE9 pr\xE9c\xE9demment par l\x27appelant.'};
+doc['Motor']['isOnline']={syn:'V\xE9rifie si le module h\xE9bergeant le moteur est joignable, sans d\xE9clencher d\x27erreur.',lib:'motor.isOnline()',pro:'def isOnline()',cmt:'<p>V\xE9rifie si le module h\xE9bergeant le moteur est joignable, sans d\xE9clencher d\x27erreur. Si les valeurs des attributs en cache du moteur sont valides au moment de l\x27appel, le module est consid\xE9r\xE9 joignable. Cette fonction ne cause en aucun cas d\x27exception, quelle que soit l\x27erreur qui pourrait se produire lors de la v\xE9rification de joignabilit\xE9.</p>',ret:'<tt>true</tt> si le moteur est joignable, <tt>false</tt> sinon'};
+doc['Motor']['keepALive']={syn:'R\xE9arme la s\xE9curit\xE9 failsafe du contr\xF4leur.',lib:'motor.keepALive()',pro:'def keepALive()',cmt:'<p>R\xE9arme la s\xE9curit\xE9 failsafe du contr\xF4leur. Lorsque le moteur est en marche et que la s\xE9curit\xE9 failsafe est activ\xE9e, cette fonction doit \xEAtre appel\xE9e p\xE9riodiquement pour confirmer le bon fonctionnement du processus de contr\xF4le. A d\xE9faut, le moteur s\x27arr\xEAtera automatiquement au bout du temps pr\xE9vu. Notez que l\x27appel \xE0 une fonction de type <i>set</i> du moteur r\xE9arme aussi la s\xE9curit\xE9 failsafe.</p>'};
+doc['Motor']['load']={syn:'Met en cache les valeurs courantes du moteur, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e.',lib:'motor.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Met en cache les valeurs courantes du moteur, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e. Par d\xE9faut, lorsqu\x27on acc\xE8de \xE0 un module, tous les attributs des fonctions du module sont automatiquement mises en cache pour la dur\xE9e standard (5 ms). Cette m\xE9thode peut \xEAtre utilis\xE9e pour marquer occasionellement les donn\xE9es cach\xE9es comme valides pour une plus longue p\xE9riode, par exemple dans le but de r\xE9duire le trafic r\xE9seau.</p>',par:{msValidity:'un entier correspondant \xE0 la dur\xE9e de validit\xE9 attribu\xE9e aux les param\xE8tres charg\xE9s, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Motor']['loadAttribute']={syn:'Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.',lib:'motor.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un cha\xEEne vide.'};
+doc['Motor']['muteValueCallbacks']={syn:'D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'motor.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Vous pouvez utiliser cette fonction pour \xE9conomiser la bande passante et le CPU sur les machines de faible puissance, ou pour \xE9viter le d\xE9clanchement de callbacks HTTP. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Motor']['nextMotor']={syn:'Continue l\x27\xE9num\xE9ration des moteur commenc\xE9e \xE0 l\x27aide de <tt>yFirstMotor()</tt>.',lib:'motor.nextMotor()',pro:'def nextMotor()',cmt:'<p>Continue l\x27\xE9num\xE9ration des moteur commenc\xE9e \xE0 l\x27aide de <tt>yFirstMotor()</tt>.</p>',ret:'un pointeur sur un objet <tt>YMotor</tt> accessible en ligne, ou <tt>null</tt> lorsque l\x27\xE9num\xE9ration est termin\xE9e.'};
+doc['Motor']['registerValueCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e.',lib:'motor.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callback peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callback ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et la cha\xEEne de caract\xE8re d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['Motor']['resetStatus']={syn:'R\xE9initialise l\x27\xE9tat du contr\xF4leur \xE0 IDLE.',lib:'motor.resetStatus()',pro:'def resetStatus()',cmt:'<p>R\xE9initialise l\x27\xE9tat du contr\xF4leur \xE0 IDLE. Cette fonction doit \xEAtre explicitement appel\xE9e apr\xE8s toute condition d\x27erreur pour permettre au contr\xF4leur de repartir.</p>'};
+doc['Motor']['set_brakingForce']={syn:'Modifie imm\xE9diatement la force de freinage appliqu\xE9e au moteur (en pourcents).',lib:'motor.set_brakingForce()',pro:'def set_brakingForce(<span id=pn>newval</span>)',cmt:'<p>Modifie imm\xE9diatement la force de freinage appliqu\xE9e au moteur (en pourcents). La valeur 0 correspond \xE0 ne pas freiner (moteur en roue libre). Lorsque la force de freinage est chang\xE9e, la puissance de traction est remise \xE0 z\xE9ro.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant imm\xE9diatement la force de freinage appliqu\xE9e au moteur (en pourcents)'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Motor']['set_cutOffVoltage']={syn:'Modifie la limite de l\x27alimentation en dessous de laquelle le contr\xF4leur va automatiquement se mettre en erreur et couper la consommation.',lib:'motor.set_cutOffVoltage()',pro:'def set_cutOffVoltage(<span id=pn>newval</span>)',cmt:'<p>Modifie la limite de l\x27alimentation en dessous de laquelle le contr\xF4leur va automatiquement se mettre en erreur et couper la consommation. Ce r\xE9glage permet d\x27\xE9viter d\x27endommager un accumulateur un continuant \xE0 l\x27utiliser une fois \x22vide\x22. Attention, quel que soit le r\xE9glage du cutoff, le variateur passera en erreur si l\x27alimentation passe (m\xEAme bri\xE8vement) en dessous de 3V.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la limite de l\x27alimentation en dessous de laquelle le contr\xF4leur va automatiquement se mettre en erreur et couper la consommation'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Motor']['set_drivingForce']={syn:'Modifie imm\xE9diatement la puissance envoy\xE9e au moteur.',lib:'motor.set_drivingForce()',pro:'def set_drivingForce(<span id=pn>newval</span>)',cmt:'<p>Modifie imm\xE9diatement la puissance envoy\xE9e au moteur. La valeur est donn\xE9e en pourcentage de -100% \xE0 +100%. Si vous voulez m\xE9nager votre m\xE9canique et \xE9viter d\x27induire des consommations excessives qui pourraient d\xE9passer les capacit\xE9s du contr\xF4leur, \xE9vitez les changements de r\xE9gime trop brusques. Par exemple, passer brutalement de marche avant \xE0 marche arri\xE8re est une tr\xE8s mauvaise id\xE9e. A chaque fois que la puissance envoy\xE9e au moteur est chang\xE9e, le freinage est remis \xE0 z\xE9ro.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant imm\xE9diatement la puissance envoy\xE9e au moteur'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Motor']['set_failSafeTimeout']={syn:'Modifie le temps en millisecondes pendant lequel le variateur pourra fonctionner sans instruction du processus de contr\xF4le.',lib:'motor.set_failSafeTimeout()',pro:'def set_failSafeTimeout(<span id=pn>newval</span>)',cmt:'<p>Modifie le temps en millisecondes pendant lequel le variateur pourra fonctionner sans instruction du processus de contr\xF4le. Pass\xE9 ce delai, le contr\xF4leur arr\xEAtera le moteur et passera en mode erreur FAILSAFE. La s\xE9curit\xE9 failsafe est d\xE9sactiv\xE9e quand la valeur est \xE0 z\xE9ro.</p>',par:{newval:'un entier repr&eacute;sentant le temps en millisecondes pendant lequel le variateur pourra fonctionner sans instruction du processus de contr\xF4le'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Motor']['set_frequency']={syn:'Modifie la fr\xE9quence du signal PWM utilis\xE9e pour contr\xF4ler le moteur.',lib:'motor.set_frequency()',pro:'def set_frequency(<span id=pn>newval</span>)',cmt:'<p>Modifie la fr\xE9quence du signal PWM utilis\xE9e pour contr\xF4ler le moteur. Une fr\xE9quence basse est g\xE9n\xE9ralement plus efficace (les composant chauffent moins et le moteur d\xE9marre plus facilement), mais un bruit audible peut \xEAtre g\xE9n\xE9r\xE9. Une fr\xE9quence \xE9lev\xE9e peut r\xE9duire le bruit, mais il y a plus d\x27\xE9nergie perdue en chaleur.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la fr\xE9quence du signal PWM utilis\xE9e pour contr\xF4ler le moteur'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Motor']['set_logicalName']={syn:'Modifie le nom logique du moteur.',lib:'motor.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Modifie le nom logique du moteur. Vous pouvez utiliser <tt>yCheckLogicalName()</tt> pour v\xE9rifier si votre param\xE8tre est valide. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du moteur.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27appel se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Motor']['set_overCurrentLimit']={syn:'Modifie la valeur limite du courant (en mA) au dessus de laquelle le contr\xF4leur va automatiquement se mettre en erreur.',lib:'motor.set_overCurrentLimit()',pro:'def set_overCurrentLimit(<span id=pn>newval</span>)',cmt:'<p>Modifie la valeur limite du courant (en mA) au dessus de laquelle le contr\xF4leur va automatiquement se mettre en erreur. Une valeur nulle signifie qu\x27aucune limite n\x27est d\xE9finie. Attention, quel que soit le r\xE9glage choisi, le variateur passera en erreur si le courant passe, m\xEAme bri\xE8vement, en dessus de 32A.</p>',par:{newval:'un entier repr&eacute;sentant la valeur limite du courant (en mA) au dessus de laquelle le contr\xF4leur va automatiquement se mettre en erreur'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Motor']['set_starterTime']={syn:'Modifie la dur\xE9e (en ms) pendant laquelle le moteur est pilot\xE9 \xE0 basse fr\xE9quence pour faciliter son d\xE9marrage.',lib:'motor.set_starterTime()',pro:'def set_starterTime(<span id=pn>newval</span>)',cmt:'<p>Modifie la dur\xE9e (en ms) pendant laquelle le moteur est pilot\xE9 \xE0 basse fr\xE9quence pour faciliter son d\xE9marrage.</p>',par:{newval:'un entier repr&eacute;sentant la dur\xE9e (en ms) pendant laquelle le moteur est pilot\xE9 \xE0 basse fr\xE9quence pour faciliter son d\xE9marrage'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Motor']['set_userData']={syn:'Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>.',lib:'motor.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',par:{data:'objet quelconque \xE0 m\xE9moriser'}};
+doc['Motor']['unmuteValueCallbacks']={syn:'R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'motor.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Cette fonction annule un pr\xE9c\xE9dent appel \xE0 <tt>muteValueCallbacks()</tt>. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+//--- (end of generated code: Motor)
+//--- (generated code: SerialPort)
+doc['SerialPort']={'':{syn:'Interface de la fonction SerialPort',inc:'from yocto_serialport import *',cmt:'<p>La fonction SerialPort permet de piloter enti\xE8rement un module d\x27interface s\xE9rie Yoctopuce, pour envoyer et recevoir des donn\xE9es et configurer les param\xE8tres de transmission (vitesse, nombre de bits, parit\xE9, contr\xF4le de flux et protocole). Notez que les interfaces s\xE9rie Yoctopuce ne sont pas des visibles comme des ports COM virtuels. Ils sont faits pour \xEAtre utilis\xE9s comme tous les autres modules Yoctopuce.</p>'}};
+doc['SerialPort']['FindSerialPort']={syn:'Permet de retrouver une port s\xE9rie d\x27apr\xE8s un identifiant donn\xE9.',lib:'YSerialPort.FindSerialPort()',pro:'def FindSerialPort(<span id=pn>func</span>)',cmt:'<p>Permet de retrouver une port s\xE9rie d\x27apr\xE8s un identifiant donn\xE9. L\x27identifiant peut \xEAtre sp\xE9cifi\xE9 sous plusieurs formes:<br> <ul> <li>NomLogiqueFonction</li> <li>NoSerieModule.IdentifiantFonction</li> <li>NoSerieModule.NomLogiqueFonction</li> <li>NomLogiqueModule.IdentifiantMat\xE9riel</li> <li>NomLogiqueModule.NomLogiqueFonction</li> </ul></p><p> Cette fonction n\x27exige pas que le port s\xE9rie soit en ligne au moment ou elle est appel\xE9e, l\x27objet retourn\xE9 sera n\xE9anmoins valide. Utiliser la m\xE9thode <tt>YSerialPort.isOnline()</tt> pour tester si le port s\xE9rie est utilisable \xE0 un moment donn\xE9. En cas d\x27ambigu\xEFt\xE9 lorsqu\x27on fait une recherche par nom logique, aucune erreur ne sera notifi\xE9e: la premi\xE8re instance trouv\xE9e sera renvoy\xE9e. La recherche se fait d\x27abord par nom mat\xE9riel, puis par nom logique.</p>',par:{func:'une cha\xEEne de caract\xE8res qui r\xE9f\xE9rence le port s\xE9rie sans ambigu\xEFt\xE9'},ret:'un objet de classe <tt>YSerialPort</tt> qui permet ensuite de contr\xF4ler le port s\xE9rie.'};
+doc['SerialPort']['FirstSerialPort']={syn:'Commence l\x27\xE9num\xE9ration des le port s\xE9rie accessibles par la librairie.',lib:'YSerialPort.FirstSerialPort()',pro:'def FirstSerialPort()',cmt:'<p>Commence l\x27\xE9num\xE9ration des le port s\xE9rie accessibles par la librairie. Utiliser la fonction <tt>YSerialPort.nextSerialPort()</tt> pour it\xE9rer sur les autres le port s\xE9rie.</p>',ret:'un pointeur sur un objet <tt>YSerialPort</tt>, correspondant au premier port s\xE9rie accessible en ligne, ou <tt>null</tt> si il n\x27y a pas du port s\xE9rie disponibles.'};
+doc['SerialPort']['clearCache']={syn:'Invalide le cache.',lib:'serialport.clearCache()',pro:'def clearCache()',cmt:'<p>Invalide le cache. Invalide le cache des valeurs courantes du port s\xE9rie. Force le prochain appel \xE0 une m\xE9thode get_xxx() ou loadxxx() pour charger les les donn\xE9es depuis le module.</p>'};
+doc['SerialPort']['describe']={syn:'Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du port s\xE9rie au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'serialport.describe()',pro:'def describe()',cmt:'<p>Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du port s\xE9rie au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. Plus pr\xE9cis\xE9ment, <tt>TYPE</tt> correspond au type de fonction, <tt>NAME</tt> correspond au nom utils\xE9 lors du premier acc\xE8s a la fonction, <tt>SERIAL</tt> correspond au num\xE9ro de s\xE9rie du module si le module est connect\xE9, ou <tt>\x22unresolved\x22</tt> sinon, et <tt>FUNCTIONID</tt> correspond \xE0 l\x27identifiant mat\xE9riel de la fonction si le module est connect\xE9. Par exemple, La methode va retourner <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> si le module est d\xE9j\xE0 connect\xE9 ou <tt>Relay(BadCustomeName.relay1)=unresolved</tt> si le module n\x27est pas d\xE9j\xE0 connect\xE9. Cette methode ne declenche aucune transaction USB ou TCP et peut donc \xEAtre utilis\xE9 dans un debuggeur.</p>',ret:'une cha\xEEne de caract\xE8res d\xE9crivant le port s\xE9rie (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['SerialPort']['get_CTS']={syn:'Lit l\x27\xE9tat de la ligne CTS.',lib:'serialport.get_CTS()',pro:'def get_CTS()',cmt:'<p>Lit l\x27\xE9tat de la ligne CTS. La ligne CTS est habituellement pilot\xE9e par le signal RTS du p\xE9riph\xE9rique s\xE9rie connect\xE9.</p>',ret:'1 si le CTS est signal\xE9 (niveau haut), 0 si le CTS n\x27est pas actif (niveau bas).',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['SerialPort']['get_advertisedValue']={syn:'Retourne la valeur courante du port s\xE9rie (pas plus de 6 caract\xE8res).',lib:'serialport.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Retourne la valeur courante du port s\xE9rie (pas plus de 6 caract\xE8res).</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur courante du port s\xE9rie (pas plus de 6 caract\xE8res).',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['SerialPort']['get_currentJob']={syn:'Retourne le nom du fichier de t\xE2ches actif en ce moment.',lib:'serialport.get_currentJob()',pro:'def get_currentJob()',cmt:'<p>Retourne le nom du fichier de t\xE2ches actif en ce moment.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant le nom du fichier de t\xE2ches actif en ce moment',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_CURRENTJOB_INVALID</tt>.'};
+doc['SerialPort']['get_errCount']={syn:'Retourne le nombre d\x27erreurs de communication d\xE9tect\xE9es depuis la derni\xE8re mise \xE0 z\xE9ro.',lib:'serialport.get_errCount()',pro:'def get_errCount()',cmt:'<p>Retourne le nombre d\x27erreurs de communication d\xE9tect\xE9es depuis la derni\xE8re mise \xE0 z\xE9ro.</p>',ret:'un entier repr&eacute;sentant le nombre d\x27erreurs de communication d\xE9tect\xE9es depuis la derni\xE8re mise \xE0 z\xE9ro',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_ERRCOUNT_INVALID</tt>.'};
+doc['SerialPort']['get_errorMessage']={syn:'Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du port s\xE9rie.',lib:'serialport.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du port s\xE9rie. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'une cha\xEEne de caract\xE8res correspondant au message de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du port s\xE9rie.'};
+doc['SerialPort']['get_errorType']={syn:'Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du port s\xE9rie.',lib:'serialport.get_errorType()',pro:'def get_errorType()',cmt:'<p>Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du port s\xE9rie. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'un nombre correspondant au code de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du port s\xE9rie.'};
+doc['SerialPort']['get_friendlyName']={syn:'Retourne un identifiant global du port s\xE9rie au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>.',lib:'serialport.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Retourne un identifiant global du port s\xE9rie au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>. Le cha\xEEne retourn\xE9e utilise soit les noms logiques du module et du port s\xE9rie si ils sont d\xE9finis, soit respectivement le num\xE9ro de s\xE9rie du module et l\x27identifant mat\xE9riel du port s\xE9rie (par exemple: <tt>MyCustomName.relay1</tt>)</p>',ret:'une cha\xEEne de caract\xE8res identifiant le port s\xE9rie en utilisant les noms logiques (ex: <tt>MyCustomName.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['SerialPort']['get_functionDescriptor']={syn:'Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction.',lib:'serialport.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction. Cet identifiant peut \xEAtre utilis\xE9 pour tester si deux instance de <tt>YFunction</tt> r\xE9f\xE9rencent physiquement la m\xEAme fonction sur le m\xEAme module.</p>',ret:'un identifiant de type <tt>YFUN_DESCR</tt>.',ext:'Si la fonction n\x27a jamais \xE9t\xE9 contact\xE9e, la valeur retourn\xE9e sera <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>'};
+doc['SerialPort']['get_functionId']={syn:'Retourne l\x27identifiant mat\xE9riel du port s\xE9rie, sans r\xE9f\xE9rence au module.',lib:'serialport.get_functionId()',pro:'def get_functionId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel du port s\xE9rie, sans r\xE9f\xE9rence au module. Par example <tt>relay1</tt>.</p>',ret:'une cha\xEEne de caract\xE8res identifiant le port s\xE9rie (ex: <tt>relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['SerialPort']['get_hardwareId']={syn:'Retourne l\x27identifiant mat\xE9riel unique du port s\xE9rie au format <tt>SERIAL.FUNCTIONID</tt>.',lib:'serialport.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel unique du port s\xE9rie au format <tt>SERIAL.FUNCTIONID</tt>. L\x27identifiant unique est compos\xE9 du num\xE9ro de s\xE9rie du module et de l\x27identifiant mat\xE9riel du port s\xE9rie (par example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'une cha\xEEne de caract\xE8res identifiant le port s\xE9rie (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['SerialPort']['get_lastMsg']={syn:'Retourne le dernier message re\xE7u (pour les protocoles de type Line, Frame et Modbus).',lib:'serialport.get_lastMsg()',pro:'def get_lastMsg()',cmt:'<p>Retourne le dernier message re\xE7u (pour les protocoles de type Line, Frame et Modbus).</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant le dernier message re\xE7u (pour les protocoles de type Line, Frame et Modbus)',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_LASTMSG_INVALID</tt>.'};
+doc['SerialPort']['get_logicalName']={syn:'Retourne le nom logique du port s\xE9rie.',lib:'serialport.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Retourne le nom logique du port s\xE9rie.</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du port s\xE9rie.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['SerialPort']['get_module']={syn:'Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction.',lib:'serialport.get_module()',pro:'def get_module()',cmt:'<p>Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction. Si la fonction ne peut \xEAtre trouv\xE9e sur aucun module, l\x27instance de <tt>YModule</tt> retourn\xE9e ne sera pas joignable.</p>',ret:'une instance de <tt>YModule</tt>'};
+doc['SerialPort']['get_protocol']={syn:'Retourne le type de protocole utilis\xE9 sur la communication s\xE9rie, sous forme d\x27une cha\xEEne de caract\xE8res.',lib:'serialport.get_protocol()',pro:'def get_protocol()',cmt:'<p>Retourne le type de protocole utilis\xE9 sur la communication s\xE9rie, sous forme d\x27une cha\xEEne de caract\xE8res. Les valeurs possibles sont \x22Line\x22 pour des messages ASCII s\xE9par\xE9s par des retours de ligne, \x22Frame:[timeout]ms\x22 pour des messages binaires s\xE9par\xE9s par une temporisation, \x22Modbus-ASCII\x22 pour des messages MODBUS en mode ASCII, \x22Modbus-RTU\x22 pour des messages MODBUS en mode RTU, \x22Char\x22 pour un flux ASCII continu ou \x22Byte\x22 pour un flux binaire continue.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant le type de protocole utilis\xE9 sur la communication s\xE9rie, sous forme d\x27une cha\xEEne de caract\xE8res',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_PROTOCOL_INVALID</tt>.'};
+doc['SerialPort']['get_rxCount']={syn:'Retourne le nombre d\x27octets re\xE7us depuis la derni\xE8re mise \xE0 z\xE9ro.',lib:'serialport.get_rxCount()',pro:'def get_rxCount()',cmt:'<p>Retourne le nombre d\x27octets re\xE7us depuis la derni\xE8re mise \xE0 z\xE9ro.</p>',ret:'un entier repr&eacute;sentant le nombre d\x27octets re\xE7us depuis la derni\xE8re mise \xE0 z\xE9ro',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_RXCOUNT_INVALID</tt>.'};
+doc['SerialPort']['get_rxMsgCount']={syn:'Retourne le nombre de messages re\xE7us depuis la derni\xE8re mise \xE0 z\xE9ro.',lib:'serialport.get_rxMsgCount()',pro:'def get_rxMsgCount()',cmt:'<p>Retourne le nombre de messages re\xE7us depuis la derni\xE8re mise \xE0 z\xE9ro.</p>',ret:'un entier repr&eacute;sentant le nombre de messages re\xE7us depuis la derni\xE8re mise \xE0 z\xE9ro',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_RXMSGCOUNT_INVALID</tt>.'};
+doc['SerialPort']['get_serialMode']={syn:'Retourne les param\xE8tres de communication du port, sous forme d\x27une cha\xEEne de caract\xE8res du type \x229600,8N1\x22.',lib:'serialport.get_serialMode()',pro:'def get_serialMode()',cmt:'<p>Retourne les param\xE8tres de communication du port, sous forme d\x27une cha\xEEne de caract\xE8res du type \x229600,8N1\x22. La cha\xEEne contient le taux de transfert, le nombre de bits de donn\xE9es, la parit\xE9 parit\xE9 et le nombre de bits d\x27arr\xEAt. Un suffixe suppl\xE9mentaire optionnel est inclus si une option de contr\xF4le de flux est active: \x22CtsRts\x22 pour le contr\xF4le de flux mat\xE9riel, \x22XOnXOff\x22 pour le contr\xF4le de flux logique et \x22Simplex\x22 pour l\x27utilisation du signal RTS pour l\x27acquisition d\x27un bus partag\xE9 (tel qu\x27utilis\xE9 pour certains adaptateurs RS485 par exemple).</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant les param\xE8tres de communication du port, sous forme d\x27une cha\xEEne de caract\xE8res du type \x229600,8N1\x22',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_SERIALMODE_INVALID</tt>.'};
+doc['SerialPort']['get_startupJob']={syn:'Retourne le nom du fichier de t\xE2ches \xE0 ex\xE9cuter au d\xE9marrage du module.',lib:'serialport.get_startupJob()',pro:'def get_startupJob()',cmt:'<p>Retourne le nom du fichier de t\xE2ches \xE0 ex\xE9cuter au d\xE9marrage du module.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant le nom du fichier de t\xE2ches \xE0 ex\xE9cuter au d\xE9marrage du module',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_STARTUPJOB_INVALID</tt>.'};
+doc['SerialPort']['get_txCount']={syn:'Retourne le nombre d\x27octets transmis depuis la derni\xE8re mise \xE0 z\xE9ro.',lib:'serialport.get_txCount()',pro:'def get_txCount()',cmt:'<p>Retourne le nombre d\x27octets transmis depuis la derni\xE8re mise \xE0 z\xE9ro.</p>',ret:'un entier repr&eacute;sentant le nombre d\x27octets transmis depuis la derni\xE8re mise \xE0 z\xE9ro',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_TXCOUNT_INVALID</tt>.'};
+doc['SerialPort']['get_txMsgCount']={syn:'Retourne le nombre de messages envoy\xE9s depuis la derni\xE8re mise \xE0 z\xE9ro.',lib:'serialport.get_txMsgCount()',pro:'def get_txMsgCount()',cmt:'<p>Retourne le nombre de messages envoy\xE9s depuis la derni\xE8re mise \xE0 z\xE9ro.</p>',ret:'un entier repr&eacute;sentant le nombre de messages envoy\xE9s depuis la derni\xE8re mise \xE0 z\xE9ro',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_TXMSGCOUNT_INVALID</tt>.'};
+doc['SerialPort']['get_userData']={syn:'Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>.',lib:'serialport.get_userData()',pro:'def get_userData()',cmt:'<p>Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',ret:'l\x27objet stock\xE9 pr\xE9c\xE9demment par l\x27appelant.'};
+doc['SerialPort']['get_voltageLevel']={syn:'Retourne le niveau de tension utilis\xE9 par le module sur le port s\xE9rie.',lib:'serialport.get_voltageLevel()',pro:'def get_voltageLevel()',cmt:'<p>Retourne le niveau de tension utilis\xE9 par le module sur le port s\xE9rie.</p>',ret:'une valeur parmi <tt>Y_VOLTAGELEVEL_OFF</tt>, <tt>Y_VOLTAGELEVEL_TTL3V</tt>, <tt>Y_VOLTAGELEVEL_TTL3VR</tt>, <tt>Y_VOLTAGELEVEL_TTL5V</tt>, <tt>Y_VOLTAGELEVEL_TTL5VR</tt>, <tt>Y_VOLTAGELEVEL_RS232</tt> et <tt>Y_VOLTAGELEVEL_RS485</tt> repr&eacute;sentant le niveau de tension utilis\xE9 par le module sur le port s\xE9rie',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_VOLTAGELEVEL_INVALID</tt>.'};
+doc['SerialPort']['isOnline']={syn:'V\xE9rifie si le module h\xE9bergeant le port s\xE9rie est joignable, sans d\xE9clencher d\x27erreur.',lib:'serialport.isOnline()',pro:'def isOnline()',cmt:'<p>V\xE9rifie si le module h\xE9bergeant le port s\xE9rie est joignable, sans d\xE9clencher d\x27erreur. Si les valeurs des attributs en cache du port s\xE9rie sont valides au moment de l\x27appel, le module est consid\xE9r\xE9 joignable. Cette fonction ne cause en aucun cas d\x27exception, quelle que soit l\x27erreur qui pourrait se produire lors de la v\xE9rification de joignabilit\xE9.</p>',ret:'<tt>true</tt> si le port s\xE9rie est joignable, <tt>false</tt> sinon'};
+doc['SerialPort']['load']={syn:'Met en cache les valeurs courantes du port s\xE9rie, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e.',lib:'serialport.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Met en cache les valeurs courantes du port s\xE9rie, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e. Par d\xE9faut, lorsqu\x27on acc\xE8de \xE0 un module, tous les attributs des fonctions du module sont automatiquement mises en cache pour la dur\xE9e standard (5 ms). Cette m\xE9thode peut \xEAtre utilis\xE9e pour marquer occasionellement les donn\xE9es cach\xE9es comme valides pour une plus longue p\xE9riode, par exemple dans le but de r\xE9duire le trafic r\xE9seau.</p>',par:{msValidity:'un entier correspondant \xE0 la dur\xE9e de validit\xE9 attribu\xE9e aux les param\xE8tres charg\xE9s, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['SerialPort']['loadAttribute']={syn:'Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.',lib:'serialport.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un cha\xEEne vide.'};
+doc['SerialPort']['modbusReadBits']={syn:'Lit un ou plusieurs bits contigus depuis un p\xE9riph\xE9rique MODBUS.',lib:'serialport.modbusReadBits()',pro:'def modbusReadBits(<span id=pn>slaveNo</span>, <span id=pn>pduAddr</span>, <span id=pn>nBits</span>)',cmt:'<p>Lit un ou plusieurs bits contigus depuis un p\xE9riph\xE9rique MODBUS. Cette m\xE9thode utilise le code de fonction MODBUS 0x01 (Read Coils).</p>',par:{slaveNo:'addresse du p\xE9riph\xE9rique MODBUS esclave \xE0 interroger',pduAddr:'adresse relative du premier bit \xE0 lire (index\xE9 \xE0 partir de z\xE9ro).',nBits:'nombre de bits \xE0 lire'},ret:'un vecteur d\x27entiers, correspondant chacun \xE0 un bit.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un tableau vide.'};
+doc['SerialPort']['modbusReadInputBits']={syn:'Lit un ou plusieurs bits contigus depuis un p\xE9riph\xE9rique MODBUS.',lib:'serialport.modbusReadInputBits()',pro:'def modbusReadInputBits(<span id=pn>slaveNo</span>, <span id=pn>pduAddr</span>, <span id=pn>nBits</span>)',cmt:'<p>Lit un ou plusieurs bits contigus depuis un p\xE9riph\xE9rique MODBUS. Cette m\xE9thode utilise le code de fonction MODBUS 0x02 (Read Discrete Inputs).</p>',par:{slaveNo:'addresse du p\xE9riph\xE9rique MODBUS esclave \xE0 interroger',pduAddr:'adresse relative du premier bit \xE0 lire (index\xE9 \xE0 partir de z\xE9ro).',nBits:'nombre de bits \xE0 lire'},ret:'un vecteur d\x27entiers, correspondant chacun \xE0 un bit.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un tableau vide.'};
+doc['SerialPort']['modbusReadInputRegisters']={syn:'Lit un ou plusieurs registres d\x27entr\xE9e (registre enlecture seule) depuis un p\xE9riph\xE9rique MODBUS.',lib:'serialport.modbusReadInputRegisters()',pro:'def modbusReadInputRegisters(<span id=pn>slaveNo</span>, <span id=pn>pduAddr</span>, <span id=pn>nWords</span>)',cmt:'<p>Lit un ou plusieurs registres d\x27entr\xE9e (registre enlecture seule) depuis un p\xE9riph\xE9rique MODBUS. Cette m\xE9thode utilise le code de fonction MODBUS 0x04 (Read Input Registers).</p>',par:{slaveNo:'addresse du p\xE9riph\xE9rique MODBUS esclave \xE0 interroger',pduAddr:'adresse relative du premier registre d\x27entr\xE9e \xE0 lire (index\xE9 \xE0 partir de z\xE9ro).',nWords:'nombre de registres d\x27entr\xE9e \xE0 lire'},ret:'un vecteur d\x27entiers, correspondant chacun \xE0 une valeur d\x27entr\xE9e (16 bits).',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un tableau vide.'};
+doc['SerialPort']['modbusReadRegisters']={syn:'Lit un ou plusieurs registres interne depuis un p\xE9riph\xE9rique MODBUS.',lib:'serialport.modbusReadRegisters()',pro:'def modbusReadRegisters(<span id=pn>slaveNo</span>, <span id=pn>pduAddr</span>, <span id=pn>nWords</span>)',cmt:'<p>Lit un ou plusieurs registres interne depuis un p\xE9riph\xE9rique MODBUS. Cette m\xE9thode utilise le code de fonction MODBUS 0x03 (Read Holding Registers).</p>',par:{slaveNo:'addresse du p\xE9riph\xE9rique MODBUS esclave \xE0 interroger',pduAddr:'adresse relative du premier registre interne \xE0 lire (index\xE9 \xE0 partir de z\xE9ro).',nWords:'nombre de registres internes \xE0 lire'},ret:'un vecteur d\x27entiers, correspondant chacun \xE0 une valeur de registre (16 bits).',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un tableau vide.'};
+doc['SerialPort']['modbusWriteAndReadRegisters']={syn:'Modifie l\x27\xE9tat de plusieurs bits (ou relais) contigus sur un p\xE9riph\xE9rique MODBUS.',lib:'serialport.modbusWriteAndReadRegisters()',pro:'def modbusWriteAndReadRegisters(<span id=pn>slaveNo</span>, <span id=pn>pduWriteAddr</span>, <span id=pn>values</span>, <span id=pn>pduReadAddr</span>, <span id=pn>nReadWords</span>)',cmt:'<p>Modifie l\x27\xE9tat de plusieurs bits (ou relais) contigus sur un p\xE9riph\xE9rique MODBUS. Cette m\xE9thode utilise le code de fonction MODBUS 0x17 (Read/Write Multiple Registers).</p>',par:{slaveNo:'addresse du p\xE9riph\xE9rique MODBUS esclave \xE0 piloter',pduWriteAddr:'adresse relative du premier registre interne \xE0 modifier (index\xE9 \xE0 partir de z\xE9ro).',values:'vecteur de valeurs 16 bits \xE0 appliquer',pduReadAddr:'adresse relative du premier registre interne \xE0 lire (index\xE9 \xE0 partir de z\xE9ro).',nReadWords:'nombre de registres internes \xE0 lire'},ret:'un vecteur d\x27entiers, correspondant chacun \xE0 une valeur de registre (16 bits) lue.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un tableau vide.'};
+doc['SerialPort']['modbusWriteBit']={syn:'Modifie l\x27\xE9tat d\x27un seul bit (ou relais) sur un p\xE9riph\xE9rique MODBUS.',lib:'serialport.modbusWriteBit()',pro:'def modbusWriteBit(<span id=pn>slaveNo</span>, <span id=pn>pduAddr</span>, <span id=pn>value</span>)',cmt:'<p>Modifie l\x27\xE9tat d\x27un seul bit (ou relais) sur un p\xE9riph\xE9rique MODBUS. Cette m\xE9thode utilise le code de fonction MODBUS 0x05 (Write Single Coil).</p>',par:{slaveNo:'addresse du p\xE9riph\xE9rique MODBUS esclave \xE0 piloter',pduAddr:'adresse relative du bit \xE0 modifier (index\xE9 \xE0 partir de z\xE9ro).',value:'la valeur \xE0 appliquer (0 pour l\x27\xE9tat OFF, non-z\xE9ro pour l\x27\xE9tat ON)'},ret:'le nombre de bits affect\xE9s sur le p\xE9riph\xE9rique (1)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne z\xE9ro.'};
+doc['SerialPort']['modbusWriteBits']={syn:'Modifie l\x27\xE9tat de plusieurs bits (ou relais) contigus sur un p\xE9riph\xE9rique MODBUS.',lib:'serialport.modbusWriteBits()',pro:'def modbusWriteBits(<span id=pn>slaveNo</span>, <span id=pn>pduAddr</span>, <span id=pn>bits</span>)',cmt:'<p>Modifie l\x27\xE9tat de plusieurs bits (ou relais) contigus sur un p\xE9riph\xE9rique MODBUS. Cette m\xE9thode utilise le code de fonction MODBUS 0x0f (Write Multiple Coils).</p>',par:{slaveNo:'addresse du p\xE9riph\xE9rique MODBUS esclave \xE0 piloter',pduAddr:'adresse relative du premier bit \xE0 modifier (index\xE9 \xE0 partir de z\xE9ro).',bits:'vecteur de bits \xE0 appliquer (un entier par bit)'},ret:'le nombre de bits affect\xE9s sur le p\xE9riph\xE9rique',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne z\xE9ro.'};
+doc['SerialPort']['modbusWriteRegister']={syn:'Modifie la valeur d\x27un registre interne 16 bits sur un p\xE9riph\xE9rique MODBUS.',lib:'serialport.modbusWriteRegister()',pro:'def modbusWriteRegister(<span id=pn>slaveNo</span>, <span id=pn>pduAddr</span>, <span id=pn>value</span>)',cmt:'<p>Modifie la valeur d\x27un registre interne 16 bits sur un p\xE9riph\xE9rique MODBUS. Cette m\xE9thode utilise le code de fonction MODBUS 0x06 (Write Single Register).</p>',par:{slaveNo:'addresse du p\xE9riph\xE9rique MODBUS esclave \xE0 piloter',pduAddr:'adresse relative du registre \xE0 modifier (index\xE9 \xE0 partir de z\xE9ro).',value:'la valeur 16 bits \xE0 appliquer'},ret:'le nombre de registres affect\xE9s sur le p\xE9riph\xE9rique (1)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne z\xE9ro.'};
+doc['SerialPort']['modbusWriteRegisters']={syn:'Modifie l\x27\xE9tat de plusieurs registres internes 16 bits contigus sur un p\xE9riph\xE9rique MODBUS.',lib:'serialport.modbusWriteRegisters()',pro:'def modbusWriteRegisters(<span id=pn>slaveNo</span>, <span id=pn>pduAddr</span>, <span id=pn>values</span>)',cmt:'<p>Modifie l\x27\xE9tat de plusieurs registres internes 16 bits contigus sur un p\xE9riph\xE9rique MODBUS. Cette m\xE9thode utilise le code de fonction MODBUS 0x10 (Write Multiple Registers).</p>',par:{slaveNo:'addresse du p\xE9riph\xE9rique MODBUS esclave \xE0 piloter',pduAddr:'adresse relative du premier registre interne \xE0 modifier (index\xE9 \xE0 partir de z\xE9ro).',values:'vecteur de valeurs 16 bits \xE0 appliquer'},ret:'le nombre de registres affect\xE9s sur le p\xE9riph\xE9rique',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne z\xE9ro.'};
+doc['SerialPort']['muteValueCallbacks']={syn:'D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'serialport.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Vous pouvez utiliser cette fonction pour \xE9conomiser la bande passante et le CPU sur les machines de faible puissance, ou pour \xE9viter le d\xE9clanchement de callbacks HTTP. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['SerialPort']['nextSerialPort']={syn:'Continue l\x27\xE9num\xE9ration des le port s\xE9rie commenc\xE9e \xE0 l\x27aide de <tt>yFirstSerialPort()</tt>.',lib:'serialport.nextSerialPort()',pro:'def nextSerialPort()',cmt:'<p>Continue l\x27\xE9num\xE9ration des le port s\xE9rie commenc\xE9e \xE0 l\x27aide de <tt>yFirstSerialPort()</tt>.</p>',ret:'un pointeur sur un objet <tt>YSerialPort</tt> accessible en ligne, ou <tt>null</tt> lorsque l\x27\xE9num\xE9ration est termin\xE9e.'};
+doc['SerialPort']['queryLine']={syn:'Envoie un message sous forme de ligne de texte sur le port s\xE9rie, et lit la r\xE9ponse re\xE7ue.',lib:'serialport.queryLine()',pro:'def queryLine(<span id=pn>query</span>, <span id=pn>maxWait</span>)',cmt:'<p>Envoie un message sous forme de ligne de texte sur le port s\xE9rie, et lit la r\xE9ponse re\xE7ue. Cette fonction est pr\xE9vue pour \xEAtre utilis\xE9e lorsque le module est configur\xE9 en protocole \x27Line\x27.</p>',par:{query:'le message \xE0 envoyer (sans le retour de chariot)',maxWait:'le temps maximum d\x27attente pour obtenir une r\xE9ponse (en millisecondes).'},ret:'la premi\xE8re ligne de texte re\xE7ue apr\xE8s l\x27envoi du message. Les lignes suivantes peuvent \xEAtre obtenues avec des appels \xE0 readLine ou readMessages.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['SerialPort']['queryMODBUS']={syn:'Envoie un message \xE0 un p\xE9riph\xE9rique MODBUS esclave connect\xE9 au port s\xE9rie, et lit la r\xE9ponse re\xE7ue.',lib:'serialport.queryMODBUS()',pro:'def queryMODBUS(<span id=pn>slaveNo</span>, <span id=pn>pduBytes</span>)',cmt:'<p>Envoie un message \xE0 un p\xE9riph\xE9rique MODBUS esclave connect\xE9 au port s\xE9rie, et lit la r\xE9ponse re\xE7ue. Le contenu du message est le PDU, fourni sous forme de vecteur d\x27octets.</p>',par:{slaveNo:'addresse du p\xE9riph\xE9rique MODBUS esclave',pduBytes:'message \xE0 envoyer (PDU), sous forme de vecteur d\x27octets. Le premier octet du PDU est le code de fonction MODBUS.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un tableau vide (ou une r\xE9ponse d\x27erreur).'};
+doc['SerialPort']['readArray']={syn:'Lit le contenu du tampon de r\xE9ception sous forme de liste d\x27octets, \xE0 partir de la position courante dans le flux de donn\xE9e.',lib:'serialport.readArray()',pro:'def readArray(<span id=pn>nChars</span>)',cmt:'<p>Lit le contenu du tampon de r\xE9ception sous forme de liste d\x27octets, \xE0 partir de la position courante dans le flux de donn\xE9e. Si le contenu \xE0 la position n\x27est plus disponible dans le tampon de r\xE9ception, la fonction ne retournera que les donn\xE9es disponibles.</p>',par:{nChars:'le nombre maximum de bytes \xE0 lire'},ret:'une liste de bytes avec le contenu du tampon de r\xE9ception.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['SerialPort']['readBin']={syn:'Lit le contenu du tampon de r\xE9ception sous forme d\x27objet binaire, \xE0 partir de la position courante dans le flux de donn\xE9e.',lib:'serialport.readBin()',pro:'def readBin(<span id=pn>nChars</span>)',cmt:'<p>Lit le contenu du tampon de r\xE9ception sous forme d\x27objet binaire, \xE0 partir de la position courante dans le flux de donn\xE9e. Si le contenu \xE0 la position n\x27est plus disponible dans le tampon de r\xE9ception, la fonction ne retournera que les donn\xE9es disponibles.</p>',par:{nChars:'le nombre maximum de bytes \xE0 lire'},ret:'un objet binaire avec le contenu du tampon de r\xE9ception.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['SerialPort']['readByte']={syn:'Lit le prochain byte dans le tampon de r\xE9ception, \xE0 partir de la position courante dans le flux de donn\xE9e.',lib:'serialport.readByte()',pro:'def readByte()',cmt:'<p>Lit le prochain byte dans le tampon de r\xE9ception, \xE0 partir de la position courante dans le flux de donn\xE9e. Si le contenu \xE0 la position n\x27est plus disponible dans le tampon de r\xE9ception, ou si aucun octet n\x27est disponible pour l\x27instant, la fonction retourne YAPI_NO_MORE_DATA.</p>',ret:'le prochain byte',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['SerialPort']['readHex']={syn:'Lit le contenu du tampon de r\xE9ception sous forme hexad\xE9cimale, \xE0 partir de la position courante dans le flux de donn\xE9e.',lib:'serialport.readHex()',pro:'def readHex(<span id=pn>nBytes</span>)',cmt:'<p>Lit le contenu du tampon de r\xE9ception sous forme hexad\xE9cimale, \xE0 partir de la position courante dans le flux de donn\xE9e. Si le contenu \xE0 la position n\x27est plus disponible dans le tampon de r\xE9ception, la fonction ne retournera que les donn\xE9es disponibles.</p>',par:{nBytes:'le nombre maximal d\x27octets \xE0 lire'},ret:'une cha\xEEne de caract\xE8re avec le contenu du tampon de r\xE9ception, encod\xE9 en hexad\xE9cimal',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['SerialPort']['readLine']={syn:'Lit la prochaine ligne (ou le prochain message) du tampon de r\xE9ception, \xE0 partir de la position courante dans le flux de donn\xE9e.',lib:'serialport.readLine()',pro:'def readLine()',cmt:'<p>Lit la prochaine ligne (ou le prochain message) du tampon de r\xE9ception, \xE0 partir de la position courante dans le flux de donn\xE9e. Cette fonction est destin\xE9e \xE0 \xEAtre utilis\xE9e lorsque le module est configur\xE9 pour un protocole bas\xE9 message, comme en mode \x27Line\x27 ou en protocole \x27Frame\x27.</p><p> Si le contenu \xE0 la position n\x27est plus disponible dans le tampon de r\xE9ception, la fonction retournera la plus ancienne ligne disponible et d\xE9placera le pointeur de position juste apr\xE8s. Si aucune nouvelle ligne enti\xE8re n\x27est disponible, la fonction retourne un cha\xEEne vide.</p>',ret:'une cha\xEEne de caract\xE8re avec une ligne de texte',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['SerialPort']['readMessages']={syn:'Cherche les messages entrants dans le tampon de r\xE9ception correspondant \xE0 un format donn\xE9, \xE0 partir de la position courante.',lib:'serialport.readMessages()',pro:'def readMessages(<span id=pn>pattern</span>, <span id=pn>maxWait</span>)',cmt:'<p>Cherche les messages entrants dans le tampon de r\xE9ception correspondant \xE0 un format donn\xE9, \xE0 partir de la position courante. Cette fonction ne compare et ne retourne que les caract\xE8res imprimables. Les protocoles binaires sont g\xE9r\xE9s sous forme de repr\xE9sentation hexad\xE9cimale.</p><p> La recherche retourne tous les messages trouv\xE9s qui correspondent au format. Tant qu\x27aucun message ad\xE9quat n\x27est trouv\xE9, la fonction attendra, au maximum pour le temps sp\xE9cifi\xE9 en argument (en millisecondes).</p>',par:{pattern:'une expression r\xE9guli\xE8re limit\xE9e d\xE9crivant le format de message d\xE9sir\xE9, ou une cha\xEEne vide si aucun filtrage des messages n\x27est d\xE9sir\xE9. Pour les protocoles binaires, le format est appliqu\xE9 \xE0 la repr\xE9sentation hexad\xE9cimale du message.',maxWait:'le temps maximum d\x27attente pour obtenir un message, tant qu\x27aucun n\x27est trouv\xE9 dans le tampon de r\xE9ception (en millisecondes).'},ret:'un tableau de cha\xEEnes de caract\xE8res contenant les messages trouv\xE9s. Les messages binaires sont convertis automatiquement en repr\xE9sentation hexad\xE9cimale.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un tableau vide.'};
+doc['SerialPort']['readStr']={syn:'Lit le contenu du tampon de r\xE9ception sous forme de string, \xE0 partir de la position courante dans le flux de donn\xE9e.',lib:'serialport.readStr()',pro:'def readStr(<span id=pn>nChars</span>)',cmt:'<p>Lit le contenu du tampon de r\xE9ception sous forme de string, \xE0 partir de la position courante dans le flux de donn\xE9e. Si le contenu \xE0 la position n\x27est plus disponible dans le tampon de r\xE9ception, la fonction ne retournera que les donn\xE9es disponibles.</p>',par:{nChars:'le nombre maximum de caract\xE8res \xE0 lire'},ret:'une cha\xEEne de caract\xE8re avec le contenu du tampon de r\xE9ception.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['SerialPort']['read_avail']={syn:'Retourne le nombre de bytes pr\xEAts \xE0 \xEAtre lus dans le tampon de r\xE9ception, depuis la position courante dans le flux de donn\xE9e utilis\xE9 par l\x27objet d\x27API.',lib:'serialport.read_avail()',pro:'def read_avail()',cmt:'<p>Retourne le nombre de bytes pr\xEAts \xE0 \xEAtre lus dans le tampon de r\xE9ception, depuis la position courante dans le flux de donn\xE9e utilis\xE9 par l\x27objet d\x27API.</p>',ret:'le nombre d\x27octets pr\xEAts \xE0 \xEAtre lus'};
+doc['SerialPort']['read_seek']={syn:'Change le pointeur de position courante dans le flux de donn\xE9e \xE0 la valeur sp\xE9cifi\xE9e.',lib:'serialport.read_seek()',pro:'def read_seek(<span id=pn>absPos</span>)',cmt:'<p>Change le pointeur de position courante dans le flux de donn\xE9e \xE0 la valeur sp\xE9cifi\xE9e. Cette fonction n\x27a pas d\x27effet sur le module, elle ne fait que changer la valeur stock\xE9e dans l\x27objet d\x27API qui sera utilis\xE9e pour les prochaines operations de lecture.</p>',par:{absPos:'index de position absolue pour les op\xE9rations de lecture suivantes.'},ret:'rien du tout.'};
+doc['SerialPort']['read_tell']={syn:'Retourne la valeur actuelle du pointeur de position courante dans le flux de donn\xE9e utilis\xE9 par l\x27objet d\x27API.',lib:'serialport.read_tell()',pro:'def read_tell()',cmt:'<p>Retourne la valeur actuelle du pointeur de position courante dans le flux de donn\xE9e utilis\xE9 par l\x27objet d\x27API.</p>',ret:'l\x27index de position absolue pour les prochaines op\xE9rations de lecture.'};
+doc['SerialPort']['registerValueCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e.',lib:'serialport.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callback peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callback ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et la cha\xEEne de caract\xE8re d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['SerialPort']['reset']={syn:'Remet \xE0 z\xE9ro tous les compteurs et efface les tampons.',lib:'serialport.reset()',pro:'def reset()',cmt:'<p>Remet \xE0 z\xE9ro tous les compteurs et efface les tampons.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['SerialPort']['selectJob']={syn:'Charge et execute le fichier de t\xE2che sp\xE9cifi\xE9.',lib:'serialport.selectJob()',pro:'def selectJob(<span id=pn>jobfile</span>)',cmt:'<p>Charge et execute le fichier de t\xE2che sp\xE9cifi\xE9. Le fichier doit avoir \xE9t\xE9 pr\xE9alablement cr\xE9\xE9 en utilisant l\x27interface graphique, ou t\xE9l\xE9charg\xE9 sur le module \xE0 l\x27aide de la fonction <tt>uploadJob()</tt>.</p>',par:{jobfile:'nom du fichier de t\xE2che (fichier sur le module)'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['SerialPort']['set_RTS']={syn:'Change manuellement l\x27\xE9tat de la ligne RTS.',lib:'serialport.set_RTS()',pro:'def set_RTS(<span id=pn>val</span>)',cmt:'<p>Change manuellement l\x27\xE9tat de la ligne RTS. Cette fonction n\x27a pas d\x27effet lorsque le contr\xF4le du flux par CTS/RTS est actif, car la ligne RTS est alors pilot\xE9e automatiquement.</p>',par:{val:'1 pour activer la ligne RTS, 0 pour la d\xE9sactiver'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['SerialPort']['set_currentJob']={syn:'Modifie le nom du job \xE0 ex\xE9cuter au d\xE9marrage du module.',lib:'serialport.set_currentJob()',pro:'def set_currentJob(<span id=pn>newval</span>)',cmt:'<p>Modifie le nom du job \xE0 ex\xE9cuter au d\xE9marrage du module. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant le nom du job \xE0 ex\xE9cuter au d\xE9marrage du module'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['SerialPort']['set_logicalName']={syn:'Modifie le nom logique du port s\xE9rie.',lib:'serialport.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Modifie le nom logique du port s\xE9rie. Vous pouvez utiliser <tt>yCheckLogicalName()</tt> pour v\xE9rifier si votre param\xE8tre est valide. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du port s\xE9rie.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27appel se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['SerialPort']['set_protocol']={syn:'Modifie le type de protocol utilis\xE9 sur la communication s\xE9rie.',lib:'serialport.set_protocol()',pro:'def set_protocol(<span id=pn>newval</span>)',cmt:'<p>Modifie le type de protocol utilis\xE9 sur la communication s\xE9rie. Les valeurs possibles sont \x22Line\x22 pour des messages ASCII s\xE9par\xE9s par des retours de ligne, \x22Frame:[timeout]ms\x22 pour des messages binaires s\xE9par\xE9s par une temporisation, \x22Modbus-ASCII\x22 pour des messages MODBUS en mode ASCII, \x22Modbus-RTU\x22 pour des messages MODBUS en mode RTU, \x22Char\x22 pour un flux ASCII continu ou \x22Byte\x22 pour un flux binaire continue. Le suffixe \x22/[wait]ms\x22 peut \xEAtre ajout\xE9 pour r\xE9duire la cadence d\x27\xE9mission de sorte \xE0 ce qu\x27il y ait au minimum le nombre sp\xE9cifi\xE9 de millisecondes d\x27intervalle entre l\x27envoi de chaque byte.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant le type de protocol utilis\xE9 sur la communication s\xE9rie'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['SerialPort']['set_serialMode']={syn:'Modifie les param\xE8tres de communication du port, sous forme d\x27une cha\xEEne de caract\xE8res du type \x229600,8N1\x22.',lib:'serialport.set_serialMode()',pro:'def set_serialMode(<span id=pn>newval</span>)',cmt:'<p>Modifie les param\xE8tres de communication du port, sous forme d\x27une cha\xEEne de caract\xE8res du type \x229600,8N1\x22. La cha\xEEne contient le taux de transfert, le nombre de bits de donn\xE9es, la parit\xE9 parit\xE9 et le nombre de bits d\x27arr\xEAt. Un suffixe suppl\xE9mentaire optionnel peut \xEAtre inclus pour activer une option de contr\xF4le de flux: \x22CtsRts\x22 pour le contr\xF4le de flux mat\xE9riel, \x22XOnXOff\x22 pour le contr\xF4le de flux logique et \x22Simplex\x22 pour l\x27utilisation du signal RTS pour l\x27acquisition d\x27un bus partag\xE9 (tel qu\x27utilis\xE9 pour certains adaptateurs RS485 par exemple).</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant les param\xE8tres de communication du port, sous forme d\x27une cha\xEEne de caract\xE8res du type \x229600,8N1\x22'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['SerialPort']['set_startupJob']={syn:'Modifie le nom du job \xE0 ex\xE9cuter au d\xE9marrage du module.',lib:'serialport.set_startupJob()',pro:'def set_startupJob(<span id=pn>newval</span>)',cmt:'<p>Modifie le nom du job \xE0 ex\xE9cuter au d\xE9marrage du module. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant le nom du job \xE0 ex\xE9cuter au d\xE9marrage du module'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['SerialPort']['set_userData']={syn:'Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>.',lib:'serialport.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',par:{data:'objet quelconque \xE0 m\xE9moriser'}};
+doc['SerialPort']['set_voltageLevel']={syn:'Modifie le niveau de tension utilis\xE9 par le module sur le port s\xE9rie.',lib:'serialport.set_voltageLevel()',pro:'def set_voltageLevel(<span id=pn>newval</span>)',cmt:'<p>Modifie le niveau de tension utilis\xE9 par le module sur le port s\xE9rie. Les valeurs valides d\xE9pendent du mod\xE8le de module Yoctopuce h\xE9bergeant le port s\xE9rie. Consultez la documentation de votre module pour savoir quelles valeurs sont support\xE9es. Affecter une valeur invalide n\x27aura aucun effet.</p>',par:{newval:'une valeur parmi <tt>Y_VOLTAGELEVEL_OFF</tt>, <tt>Y_VOLTAGELEVEL_TTL3V</tt>, <tt>Y_VOLTAGELEVEL_TTL3VR</tt>, <tt>Y_VOLTAGELEVEL_TTL5V</tt>, <tt>Y_VOLTAGELEVEL_TTL5VR</tt>, <tt>Y_VOLTAGELEVEL_RS232</tt> et <tt>Y_VOLTAGELEVEL_RS485</tt> repr&eacute;sentant le niveau de tension utilis\xE9 par le module sur le port s\xE9rie'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['SerialPort']['unmuteValueCallbacks']={syn:'R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'serialport.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Cette fonction annule un pr\xE9c\xE9dent appel \xE0 <tt>muteValueCallbacks()</tt>. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['SerialPort']['uploadJob']={syn:'Sauvegarde une d\xE9finition de t\xE2che (au format JSON) dans un fichier.',lib:'serialport.uploadJob()',pro:'def uploadJob(<span id=pn>jobfile</span>, <span id=pn>jsonDef</span>)',cmt:'<p>Sauvegarde une d\xE9finition de t\xE2che (au format JSON) dans un fichier. Le fichier peut ensuite \xEAtre activ\xE9 \xE0 l\x27aide de la m\xE9thode <tt>selectJob()</tt>.</p>',par:{jobfile:'nom du fichier de t\xE2che sur le module',jsonDef:'une cha\xEEne de caract\xE8res contenant la d\xE9finition du job en JSON'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['SerialPort']['writeArray']={syn:'Envoie une s\xE9quence d\x27octets (fournie sous forme d\x27une liste) sur le port s\xE9rie.',lib:'serialport.writeArray()',pro:'def writeArray(<span id=pn>byteList</span>)',cmt:'<p>Envoie une s\xE9quence d\x27octets (fournie sous forme d\x27une liste) sur le port s\xE9rie.</p>',par:{byteList:'la liste d\x27octets \xE0 envoyer'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['SerialPort']['writeBin']={syn:'Envoie un objet binaire tel quel sur le port s\xE9rie.',lib:'serialport.writeBin()',pro:'def writeBin(<span id=pn>buff</span>)',cmt:'<p>Envoie un objet binaire tel quel sur le port s\xE9rie.</p>',par:{buff:'l\x27objet binaire \xE0 envoyer'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['SerialPort']['writeByte']={syn:'Envoie un unique byte sur le port s\xE9rie.',lib:'serialport.writeByte()',pro:'def writeByte(<span id=pn>code</span>)',cmt:'<p>Envoie un unique byte sur le port s\xE9rie.</p>',par:{code:'le byte \xE0 envoyer'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['SerialPort']['writeHex']={syn:'Envoie une s\xE9quence d\x27octets (fournie sous forme de cha\xEEne hexad\xE9cimale) sur le port s\xE9rie.',lib:'serialport.writeHex()',pro:'def writeHex(<span id=pn>hexString</span>)',cmt:'<p>Envoie une s\xE9quence d\x27octets (fournie sous forme de cha\xEEne hexad\xE9cimale) sur le port s\xE9rie.</p>',par:{hexString:'la cha\xEEne hexad\xE9cimale \xE0 envoyer'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['SerialPort']['writeLine']={syn:'Envoie une cha\xEEne de caract\xE8res sur le port s\xE9rie, suivie d\x27un saut de ligne (CR LF).',lib:'serialport.writeLine()',pro:'def writeLine(<span id=pn>text</span>)',cmt:'<p>Envoie une cha\xEEne de caract\xE8res sur le port s\xE9rie, suivie d\x27un saut de ligne (CR LF).</p>',par:{text:'la cha\xEEne de caract\xE8res \xE0 envoyer'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['SerialPort']['writeMODBUS']={syn:'Envoie une commande MODBUS (fournie sous forme de cha\xEEne hexad\xE9cimale) sur le port s\xE9rie.',lib:'serialport.writeMODBUS()',pro:'def writeMODBUS(<span id=pn>hexString</span>)',cmt:'<p>Envoie une commande MODBUS (fournie sous forme de cha\xEEne hexad\xE9cimale) sur le port s\xE9rie. Le message doit commencer par l\x27adresse de destination. Le CRC (ou LRC) MODBUS est ajout\xE9 automatiquement par la fonction. Cette fonction n\x27attend pas de r\xE9ponse.</p>',par:{hexString:'le message \xE0 envoyer, en hexad\xE9cimal, sans le CRC/LRC'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['SerialPort']['writeStr']={syn:'Envoie une cha\xEEne de caract\xE8res telle quelle sur le port s\xE9rie.',lib:'serialport.writeStr()',pro:'def writeStr(<span id=pn>text</span>)',cmt:'<p>Envoie une cha\xEEne de caract\xE8res telle quelle sur le port s\xE9rie.</p>',par:{text:'la cha\xEEne de caract\xE8res \xE0 envoyer'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+//--- (end of generated code: SerialPort)
+//--- (generated code: PwmInput)
+doc['PwmInput']={'':{syn:'Interface de la fonction PwmInput',inc:'from yocto_pwminput import *',cmt:'<p>La classe YPwmInput permet de lire et de configurer les capteurs PWM Yoctopuce. Elle h\xE9rite de la class YSensor toutes les fonctions de base des capteurs Yoctopuce: lecture de mesures, callbacks, enregistreur de donn\xE9es. De plus, elle permet de configurer le param\xE8tre du signal utilis\xE9 pour transmettre l\x27information: le duty cycle, le fr\xE9quence ou la longueur de la pulsation.</p>'}};
+doc['PwmInput']['FindPwmInput']={syn:'Permet de retrouver une entr\xE9e PWM d\x27apr\xE8s un identifiant donn\xE9.',lib:'YPwmInput.FindPwmInput()',pro:'def FindPwmInput(<span id=pn>func</span>)',cmt:'<p>Permet de retrouver une entr\xE9e PWM d\x27apr\xE8s un identifiant donn\xE9. L\x27identifiant peut \xEAtre sp\xE9cifi\xE9 sous plusieurs formes:<br> <ul> <li>NomLogiqueFonction</li> <li>NoSerieModule.IdentifiantFonction</li> <li>NoSerieModule.NomLogiqueFonction</li> <li>NomLogiqueModule.IdentifiantMat\xE9riel</li> <li>NomLogiqueModule.NomLogiqueFonction</li> </ul></p><p> Cette fonction n\x27exige pas que l\x27entr\xE9e PWM soit en ligne au moment ou elle est appel\xE9e, l\x27objet retourn\xE9 sera n\xE9anmoins valide. Utiliser la m\xE9thode <tt>YPwmInput.isOnline()</tt> pour tester si l\x27entr\xE9e PWM est utilisable \xE0 un moment donn\xE9. En cas d\x27ambigu\xEFt\xE9 lorsqu\x27on fait une recherche par nom logique, aucune erreur ne sera notifi\xE9e: la premi\xE8re instance trouv\xE9e sera renvoy\xE9e. La recherche se fait d\x27abord par nom mat\xE9riel, puis par nom logique.</p>',par:{func:'une cha\xEEne de caract\xE8res qui r\xE9f\xE9rence l\x27entr\xE9e PWM sans ambigu\xEFt\xE9'},ret:'un objet de classe <tt>YPwmInput</tt> qui permet ensuite de contr\xF4ler l\x27entr\xE9e PWM.'};
+doc['PwmInput']['FirstPwmInput']={syn:'Commence l\x27\xE9num\xE9ration des Entr\xE9e PWM accessibles par la librairie.',lib:'YPwmInput.FirstPwmInput()',pro:'def FirstPwmInput()',cmt:'<p>Commence l\x27\xE9num\xE9ration des Entr\xE9e PWM accessibles par la librairie. Utiliser la fonction <tt>YPwmInput.nextPwmInput()</tt> pour it\xE9rer sur les autres Entr\xE9e PWM.</p>',ret:'un pointeur sur un objet <tt>YPwmInput</tt>, correspondant \xE0 la premi\xE8re entr\xE9e PWM accessible en ligne, ou <tt>null</tt> si il n\x27y a pas de Entr\xE9e PWM disponibles.'};
+doc['PwmInput']['calibrateFromPoints']={syn:'Enregistre des points de correction de mesure, typiquement pour compenser l\x27effet d\x27un bo\xEEtier sur les mesures rendues par le capteur.',lib:'pwminput.calibrateFromPoints()',pro:'def calibrateFromPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Enregistre des points de correction de mesure, typiquement pour compenser l\x27effet d\x27un bo\xEEtier sur les mesures rendues par le capteur. Il est possible d\x27enregistrer jusqu\x27\xE0 cinq points de correction. Les points de correction doivent \xEAtre fournis en ordre croissant, et dans la plage valide du capteur. Le module effectue automatiquement une interpolation lin\xE9aire de l\x27erreur entre les points sp\xE9cifi\xE9s. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p><p> Pour plus de plus amples possibilit\xE9s d\x27appliquer une surcalibration aux capteurs, veuillez contacter support@yoctopuce.com.</p>',par:{rawValues:'tableau de nombres flottants, correspondant aux valeurs brutes rendues par le capteur pour les points de correction.',refValues:'tableau de nombres flottants, correspondant aux valeurs corrig\xE9es d\xE9sir\xE9es pour les points de correction.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['PwmInput']['clearCache']={syn:'Invalide le cache.',lib:'pwminput.clearCache()',pro:'def clearCache()',cmt:'<p>Invalide le cache. Invalide le cache des valeurs courantes de l\x27entr\xE9e PWM. Force le prochain appel \xE0 une m\xE9thode get_xxx() ou loadxxx() pour charger les les donn\xE9es depuis le module.</p>'};
+doc['PwmInput']['describe']={syn:'Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance de l\x27entr\xE9e PWM au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'pwminput.describe()',pro:'def describe()',cmt:'<p>Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance de l\x27entr\xE9e PWM au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. Plus pr\xE9cis\xE9ment, <tt>TYPE</tt> correspond au type de fonction, <tt>NAME</tt> correspond au nom utils\xE9 lors du premier acc\xE8s a la fonction, <tt>SERIAL</tt> correspond au num\xE9ro de s\xE9rie du module si le module est connect\xE9, ou <tt>\x22unresolved\x22</tt> sinon, et <tt>FUNCTIONID</tt> correspond \xE0 l\x27identifiant mat\xE9riel de la fonction si le module est connect\xE9. Par exemple, La methode va retourner <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> si le module est d\xE9j\xE0 connect\xE9 ou <tt>Relay(BadCustomeName.relay1)=unresolved</tt> si le module n\x27est pas d\xE9j\xE0 connect\xE9. Cette methode ne declenche aucune transaction USB ou TCP et peut donc \xEAtre utilis\xE9 dans un debuggeur.</p>',ret:'une cha\xEEne de caract\xE8res d\xE9crivant l\x27entr\xE9e PWM (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['PwmInput']['get_advertisedValue']={syn:'Retourne la valeur courante de l\x27entr\xE9e PWM (pas plus de 6 caract\xE8res).',lib:'pwminput.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Retourne la valeur courante de l\x27entr\xE9e PWM (pas plus de 6 caract\xE8res).</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur courante de l\x27entr\xE9e PWM (pas plus de 6 caract\xE8res).',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['PwmInput']['get_currentRawValue']={syn:'Retourne la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en Hz, sous forme de nombre \xE0 virgule.',lib:'pwminput.get_currentRawValue()',pro:'def get_currentRawValue()',cmt:'<p>Retourne la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en Hz, sous forme de nombre \xE0 virgule.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en Hz, sous forme de nombre \xE0 virgule',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_CURRENTRAWVALUE_INVALID</tt>.'};
+doc['PwmInput']['get_currentValue']={syn:'Retourne la valeur courante de la fonctionnalit\xE9 PwmInput, sous forme de nombre \xE0 virgule.',lib:'pwminput.get_currentValue()',pro:'def get_currentValue()',cmt:'<p>Retourne la valeur courante de la fonctionnalit\xE9 PwmInput, sous forme de nombre \xE0 virgule. En fonction du r\xE9glage pwmReportMode, cela peut \xEAtre soit la fr\xE9quence en Hz, le duty cycle en % ou encore la longueur d\x27impulsion en ms.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur courante de la fonctionnalit\xE9 PwmInput, sous forme de nombre \xE0 virgule',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_CURRENTVALUE_INVALID</tt>.'};
+doc['PwmInput']['get_dutyCycle']={syn:'Retourne le duty cycle du PWM, en pour cents.',lib:'pwminput.get_dutyCycle()',pro:'def get_dutyCycle()',cmt:'<p>Retourne le duty cycle du PWM, en pour cents.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant le duty cycle du PWM, en pour cents',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_DUTYCYCLE_INVALID</tt>.'};
+doc['PwmInput']['get_errorMessage']={syn:'Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de l\x27entr\xE9e PWM.',lib:'pwminput.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de l\x27entr\xE9e PWM. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'une cha\xEEne de caract\xE8res correspondant au message de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation de l\x27entr\xE9e PWM.'};
+doc['PwmInput']['get_errorType']={syn:'Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de l\x27entr\xE9e PWM.',lib:'pwminput.get_errorType()',pro:'def get_errorType()',cmt:'<p>Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de l\x27entr\xE9e PWM. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'un nombre correspondant au code de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation de l\x27entr\xE9e PWM.'};
+doc['PwmInput']['get_frequency']={syn:'Retourne la fr\xE9quence du PWM en Hz.',lib:'pwminput.get_frequency()',pro:'def get_frequency()',cmt:'<p>Retourne la fr\xE9quence du PWM en Hz.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la fr\xE9quence du PWM en Hz',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_FREQUENCY_INVALID</tt>.'};
+doc['PwmInput']['get_friendlyName']={syn:'Retourne un identifiant global de l\x27entr\xE9e PWM au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>.',lib:'pwminput.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Retourne un identifiant global de l\x27entr\xE9e PWM au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>. Le cha\xEEne retourn\xE9e utilise soit les noms logiques du module et de l\x27entr\xE9e PWM si ils sont d\xE9finis, soit respectivement le num\xE9ro de s\xE9rie du module et l\x27identifant mat\xE9riel de l\x27entr\xE9e PWM (par exemple: <tt>MyCustomName.relay1</tt>)</p>',ret:'une cha\xEEne de caract\xE8res identifiant l\x27entr\xE9e PWM en utilisant les noms logiques (ex: <tt>MyCustomName.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['PwmInput']['get_functionDescriptor']={syn:'Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction.',lib:'pwminput.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction. Cet identifiant peut \xEAtre utilis\xE9 pour tester si deux instance de <tt>YFunction</tt> r\xE9f\xE9rencent physiquement la m\xEAme fonction sur le m\xEAme module.</p>',ret:'un identifiant de type <tt>YFUN_DESCR</tt>.',ext:'Si la fonction n\x27a jamais \xE9t\xE9 contact\xE9e, la valeur retourn\xE9e sera <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>'};
+doc['PwmInput']['get_functionId']={syn:'Retourne l\x27identifiant mat\xE9riel de l\x27entr\xE9e PWM, sans r\xE9f\xE9rence au module.',lib:'pwminput.get_functionId()',pro:'def get_functionId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel de l\x27entr\xE9e PWM, sans r\xE9f\xE9rence au module. Par example <tt>relay1</tt>.</p>',ret:'une cha\xEEne de caract\xE8res identifiant l\x27entr\xE9e PWM (ex: <tt>relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['PwmInput']['get_hardwareId']={syn:'Retourne l\x27identifiant mat\xE9riel unique de l\x27entr\xE9e PWM au format <tt>SERIAL.FUNCTIONID</tt>.',lib:'pwminput.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel unique de l\x27entr\xE9e PWM au format <tt>SERIAL.FUNCTIONID</tt>. L\x27identifiant unique est compos\xE9 du num\xE9ro de s\xE9rie du module et de l\x27identifiant mat\xE9riel de l\x27entr\xE9e PWM (par example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'une cha\xEEne de caract\xE8res identifiant l\x27entr\xE9e PWM (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['PwmInput']['get_highestValue']={syn:'Retourne la valeur maximale observ\xE9e pour le PWM depuis le d\xE9marrage du module.',lib:'pwminput.get_highestValue()',pro:'def get_highestValue()',cmt:'<p>Retourne la valeur maximale observ\xE9e pour le PWM depuis le d\xE9marrage du module.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur maximale observ\xE9e pour le PWM depuis le d\xE9marrage du module',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_HIGHESTVALUE_INVALID</tt>.'};
+doc['PwmInput']['get_logFrequency']={syn:'Retourne la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es.',lib:'pwminput.get_logFrequency()',pro:'def get_logFrequency()',cmt:'<p>Retourne la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_LOGFREQUENCY_INVALID</tt>.'};
+doc['PwmInput']['get_logicalName']={syn:'Retourne le nom logique de l\x27entr\xE9e PWM.',lib:'pwminput.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Retourne le nom logique de l\x27entr\xE9e PWM.</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique de l\x27entr\xE9e PWM.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['PwmInput']['get_lowestValue']={syn:'Retourne la valeur minimale observ\xE9e pour le PWM depuis le d\xE9marrage du module.',lib:'pwminput.get_lowestValue()',pro:'def get_lowestValue()',cmt:'<p>Retourne la valeur minimale observ\xE9e pour le PWM depuis le d\xE9marrage du module.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur minimale observ\xE9e pour le PWM depuis le d\xE9marrage du module',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_LOWESTVALUE_INVALID</tt>.'};
+doc['PwmInput']['get_module']={syn:'Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction.',lib:'pwminput.get_module()',pro:'def get_module()',cmt:'<p>Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction. Si la fonction ne peut \xEAtre trouv\xE9e sur aucun module, l\x27instance de <tt>YModule</tt> retourn\xE9e ne sera pas joignable.</p>',ret:'une instance de <tt>YModule</tt>'};
+doc['PwmInput']['get_period']={syn:'Retourne la p\xE9riode du PWM en millisecondes.',lib:'pwminput.get_period()',pro:'def get_period()',cmt:'<p>Retourne la p\xE9riode du PWM en millisecondes.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la p\xE9riode du PWM en millisecondes',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_PERIOD_INVALID</tt>.'};
+doc['PwmInput']['get_pulseCounter']={syn:'Retourne la valeur du compteur d\x27impulsions.',lib:'pwminput.get_pulseCounter()',pro:'def get_pulseCounter()',cmt:'<p>Retourne la valeur du compteur d\x27impulsions. Ce compteur est en r\xE9alit\xE9 incr\xE9ment\xE9 deux fois par p\xE9riode. Ce compteur est limit\xE9 \xE0 1 milliard.</p>',ret:'un entier repr&eacute;sentant la valeur du compteur d\x27impulsions',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_PULSECOUNTER_INVALID</tt>.'};
+doc['PwmInput']['get_pulseDuration']={syn:'Retourne la longueur d\x27une impulsion du PWM en millisecondes, sous forme d\x27un chiffre \xE0 virgule.',lib:'pwminput.get_pulseDuration()',pro:'def get_pulseDuration()',cmt:'<p>Retourne la longueur d\x27une impulsion du PWM en millisecondes, sous forme d\x27un chiffre \xE0 virgule.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la longueur d\x27une impulsion du PWM en millisecondes, sous forme d\x27un chiffre \xE0 virgule',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_PULSEDURATION_INVALID</tt>.'};
+doc['PwmInput']['get_pulseTimer']={syn:'Retourne le timer du compteur d\x27impulsions (ms).',lib:'pwminput.get_pulseTimer()',pro:'def get_pulseTimer()',cmt:'<p>Retourne le timer du compteur d\x27impulsions (ms).</p>',ret:'un entier repr&eacute;sentant le timer du compteur d\x27impulsions (ms)',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_PULSETIMER_INVALID</tt>.'};
+doc['PwmInput']['get_pwmReportMode']={syn:'Retourne le type de param\xE8tre (fr\xE9quence, duty cycle , longueur d\x27impulsion ou nombre de changements d\x27\xE9tat) renvoy\xE9 par la fonction get_currentValue et les callback.',lib:'pwminput.get_pwmReportMode()',pro:'def get_pwmReportMode()',cmt:'<p>Retourne le type de param\xE8tre (fr\xE9quence, duty cycle , longueur d\x27impulsion ou nombre de changements d\x27\xE9tat) renvoy\xE9 par la fonction get_currentValue et les callback.</p>',ret:'une valeur parmi <tt>Y_PWMREPORTMODE_PWM_DUTYCYCLE</tt>, <tt>Y_PWMREPORTMODE_PWM_FREQUENCY</tt>, <tt>Y_PWMREPORTMODE_PWM_PULSEDURATION</tt> et <tt>Y_PWMREPORTMODE_PWM_EDGECOUNT</tt> repr&eacute;sentant le type de param\xE8tre (fr\xE9quence, duty cycle , longueur d\x27impulsion ou nombre de changements d\x27\xE9tat) renvoy\xE9 par la fonction get_currentValue et les callback',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_PWMREPORTMODE_INVALID</tt>.'};
+doc['PwmInput']['get_recordedData']={syn:'Retourne un objet DataSet repr\xE9sentant des mesures de ce capteur pr\xE9c\xE9demment enregistr\xE9es \xE0 l\x27aide du DataLogger, pour l\x27intervalle de temps sp\xE9cifi\xE9.',lib:'pwminput.get_recordedData()',pro:'def get_recordedData(<span id=pn>startTime</span>, <span id=pn>endTime</span>)',cmt:'<p>Retourne un objet DataSet repr\xE9sentant des mesures de ce capteur pr\xE9c\xE9demment enregistr\xE9es \xE0 l\x27aide du DataLogger, pour l\x27intervalle de temps sp\xE9cifi\xE9. Veuillez vous r\xE9f\xE9rer \xE0 la documentation de la classe DataSet pour plus plus d\x27informations sur la mani\xE8re d\x27obtenir un aper\xE7u des mesures pour la p\xE9riode, et comment charger progressivement une grande quantit\xE9 de mesures depuis le dataLogger.</p><p> Cette m\xE9thode ne fonctionne que si le module utilise un firmware r\xE9cent, car les objets DataSet ne sont pas support\xE9s par les firmwares ant\xE9rieurs \xE0 la r\xE9vision 13000.</p>',par:{startTime:'le d\xE9but de l\x27intervalle de mesure d\xE9sir\xE9, c\x27est \xE0 dire en nombre de secondes depuis le 1er janvier 1970 UTC. La valeur 0 peut \xEAtre utilis\xE9e pour ne poser aucune limite sur le d\xE9but des mesures.',endTime:'la find de l\x27intercalle de mesure d\xE9sir\xE9, c\x27est \xE0 dire en nombre de secondes depuis le 1er janvier 1970 UTC. La valeur 0 peut \xEAtre utilis\xE9e pour ne poser aucune limite de fin.'},ret:'une instance de YDataSet, dont les m\xE9thodes permettent de d\x27acc\xE9der aux donn\xE9es historiques souhait\xE9es.'};
+doc['PwmInput']['get_reportFrequency']={syn:'Retourne la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction.',lib:'pwminput.get_reportFrequency()',pro:'def get_reportFrequency()',cmt:'<p>Retourne la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_REPORTFREQUENCY_INVALID</tt>.'};
+doc['PwmInput']['get_resolution']={syn:'Retourne la r\xE9solution des valeurs mesur\xE9es.',lib:'pwminput.get_resolution()',pro:'def get_resolution()',cmt:'<p>Retourne la r\xE9solution des valeurs mesur\xE9es. La r\xE9solution correspond \xE0 la pr\xE9cision num\xE9rique de la repr\xE9sentation des mesures. Elle n\x27est pas forc\xE9ment identique \xE0 la pr\xE9cision r\xE9elle du capteur.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la r\xE9solution des valeurs mesur\xE9es',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_RESOLUTION_INVALID</tt>.'};
+doc['PwmInput']['get_sensorState']={syn:'Retourne le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment.',lib:'pwminput.get_sensorState()',pro:'def get_sensorState()',cmt:'<p>Retourne le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment.</p>',ret:'un entier repr&eacute;sentant le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_SENSORSTATE_INVALID</tt>.'};
+doc['PwmInput']['get_unit']={syn:'Retourne l\x27unit\xE9 dans laquelle la valeur retourn\xE9e par get_currentValue et les callback est exprim\xE9e.',lib:'pwminput.get_unit()',pro:'def get_unit()',cmt:'<p>Retourne l\x27unit\xE9 dans laquelle la valeur retourn\xE9e par get_currentValue et les callback est exprim\xE9e. Cette unit\xE9 d\xE9pend du r\xE9glage pwmReportMode.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant l\x27unit\xE9 dans laquelle la valeur retourn\xE9e par get_currentValue et les callback est exprim\xE9e',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_UNIT_INVALID</tt>.'};
+doc['PwmInput']['get_userData']={syn:'Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>.',lib:'pwminput.get_userData()',pro:'def get_userData()',cmt:'<p>Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',ret:'l\x27objet stock\xE9 pr\xE9c\xE9demment par l\x27appelant.'};
+doc['PwmInput']['isOnline']={syn:'V\xE9rifie si le module h\xE9bergeant l\x27entr\xE9e PWM est joignable, sans d\xE9clencher d\x27erreur.',lib:'pwminput.isOnline()',pro:'def isOnline()',cmt:'<p>V\xE9rifie si le module h\xE9bergeant l\x27entr\xE9e PWM est joignable, sans d\xE9clencher d\x27erreur. Si les valeurs des attributs en cache de l\x27entr\xE9e PWM sont valides au moment de l\x27appel, le module est consid\xE9r\xE9 joignable. Cette fonction ne cause en aucun cas d\x27exception, quelle que soit l\x27erreur qui pourrait se produire lors de la v\xE9rification de joignabilit\xE9.</p>',ret:'<tt>true</tt> si l\x27entr\xE9e PWM est joignable, <tt>false</tt> sinon'};
+doc['PwmInput']['load']={syn:'Met en cache les valeurs courantes de l\x27entr\xE9e PWM, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e.',lib:'pwminput.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Met en cache les valeurs courantes de l\x27entr\xE9e PWM, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e. Par d\xE9faut, lorsqu\x27on acc\xE8de \xE0 un module, tous les attributs des fonctions du module sont automatiquement mises en cache pour la dur\xE9e standard (5 ms). Cette m\xE9thode peut \xEAtre utilis\xE9e pour marquer occasionellement les donn\xE9es cach\xE9es comme valides pour une plus longue p\xE9riode, par exemple dans le but de r\xE9duire le trafic r\xE9seau.</p>',par:{msValidity:'un entier correspondant \xE0 la dur\xE9e de validit\xE9 attribu\xE9e aux les param\xE8tres charg\xE9s, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['PwmInput']['loadAttribute']={syn:'Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.',lib:'pwminput.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un cha\xEEne vide.'};
+doc['PwmInput']['loadCalibrationPoints']={syn:'R\xE9cup\xE8re les points de correction de mesure pr\xE9c\xE9demment enregistr\xE9s \xE0 l\x27aide de la m\xE9thode <tt>calibrateFromPoints</tt>.',lib:'pwminput.loadCalibrationPoints()',pro:'def loadCalibrationPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>R\xE9cup\xE8re les points de correction de mesure pr\xE9c\xE9demment enregistr\xE9s \xE0 l\x27aide de la m\xE9thode <tt>calibrateFromPoints</tt>.</p>',par:{rawValues:'tableau de nombres flottants, qui sera rempli par la fonction avec les valeurs brutes des points de correction.',refValues:'tableau de nombres flottants, qui sera rempli par la fonction avec les valeurs d\xE9sir\xE9es des points de correction.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['PwmInput']['muteValueCallbacks']={syn:'D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'pwminput.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Vous pouvez utiliser cette fonction pour \xE9conomiser la bande passante et le CPU sur les machines de faible puissance, ou pour \xE9viter le d\xE9clanchement de callbacks HTTP. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['PwmInput']['nextPwmInput']={syn:'Continue l\x27\xE9num\xE9ration des Entr\xE9e PWM commenc\xE9e \xE0 l\x27aide de <tt>yFirstPwmInput()</tt>.',lib:'pwminput.nextPwmInput()',pro:'def nextPwmInput()',cmt:'<p>Continue l\x27\xE9num\xE9ration des Entr\xE9e PWM commenc\xE9e \xE0 l\x27aide de <tt>yFirstPwmInput()</tt>.</p>',ret:'un pointeur sur un objet <tt>YPwmInput</tt> accessible en ligne, ou <tt>null</tt> lorsque l\x27\xE9num\xE9ration est termin\xE9e.'};
+doc['PwmInput']['registerTimedReportCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque notification p\xE9riodique.',lib:'pwminput.registerTimedReportCallback()',pro:'def registerTimedReportCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque notification p\xE9riodique. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callbacks peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callbacks ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et un objet YMeasure d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['PwmInput']['registerValueCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e.',lib:'pwminput.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callback peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callback ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et la cha\xEEne de caract\xE8re d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['PwmInput']['resetCounter']={syn:'R\xE9initialise le compteur d\x27impulsions et son timer.',lib:'pwminput.resetCounter()',pro:'def resetCounter()',cmt:'<p>R\xE9initialise le compteur d\x27impulsions et son timer.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['PwmInput']['set_highestValue']={syn:'Modifie la m\xE9moire de valeur maximale observ\xE9e.',lib:'pwminput.set_highestValue()',pro:'def set_highestValue(<span id=pn>newval</span>)',cmt:'<p>Modifie la m\xE9moire de valeur maximale observ\xE9e.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la m\xE9moire de valeur maximale observ\xE9e'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['PwmInput']['set_logFrequency']={syn:'Modifie la fr\xE9quence d\x27enregistrement des mesures dans le datalogger.',lib:'pwminput.set_logFrequency()',pro:'def set_logFrequency(<span id=pn>newval</span>)',cmt:'<p>Modifie la fr\xE9quence d\x27enregistrement des mesures dans le datalogger. La fr\xE9quence peut \xEAtre sp\xE9cifi\xE9e en mesures par secondes, en mesures par minutes (par exemple \x2215/m\x22) ou en mesures par heure (par exemple \x224/h\x22). Pour d\xE9sactiver l\x27enregistrement des mesures de cette fonction, utilisez la valeur \x22OFF\x22.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence d\x27enregistrement des mesures dans le datalogger'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['PwmInput']['set_logicalName']={syn:'Modifie le nom logique de l\x27entr\xE9e PWM.',lib:'pwminput.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Modifie le nom logique de l\x27entr\xE9e PWM. Vous pouvez utiliser <tt>yCheckLogicalName()</tt> pour v\xE9rifier si votre param\xE8tre est valide. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique de l\x27entr\xE9e PWM.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27appel se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['PwmInput']['set_lowestValue']={syn:'Modifie la m\xE9moire de valeur minimale observ\xE9e.',lib:'pwminput.set_lowestValue()',pro:'def set_lowestValue(<span id=pn>newval</span>)',cmt:'<p>Modifie la m\xE9moire de valeur minimale observ\xE9e.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la m\xE9moire de valeur minimale observ\xE9e'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['PwmInput']['set_pwmReportMode']={syn:'Change le type de param\xE8tre (fr\xE9quence, duty cycle, longueur d\x27impulsion ou nombre de changement d\x27\xE9tat) renvoy\xE9 par la fonction get_currentValue et les callback.',lib:'pwminput.set_pwmReportMode()',pro:'def set_pwmReportMode(<span id=pn>newval</span>)',cmt:'<p>Change le type de param\xE8tre (fr\xE9quence, duty cycle, longueur d\x27impulsion ou nombre de changement d\x27\xE9tat) renvoy\xE9 par la fonction get_currentValue et les callback. Seuls les six digits de droite du nombre de changements d\x27\xE9tat sont transmis, pour les valeurs plus grandes que un million, utiliser get_pulseCounter().</p>',par:{newval:'une valeur parmi <tt>Y_PWMREPORTMODE_PWM_DUTYCYCLE</tt>, <tt>Y_PWMREPORTMODE_PWM_FREQUENCY</tt>, <tt>Y_PWMREPORTMODE_PWM_PULSEDURATION</tt> et <tt>Y_PWMREPORTMODE_PWM_EDGECOUNT</tt>'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['PwmInput']['set_reportFrequency']={syn:'Modifie la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es.',lib:'pwminput.set_reportFrequency()',pro:'def set_reportFrequency(<span id=pn>newval</span>)',cmt:'<p>Modifie la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es. La fr\xE9quence peut \xEAtre sp\xE9cifi\xE9e en mesures par secondes, en mesures par minutes (par exemple \x2215/m\x22) ou en mesures par heure (par exemple \x224/h\x22). Pour d\xE9sactiver les notifications p\xE9riodiques pour cette fonction, utilisez la valeur \x22OFF\x22.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['PwmInput']['set_resolution']={syn:'Modifie la r\xE9solution des valeurs physique mesur\xE9es.',lib:'pwminput.set_resolution()',pro:'def set_resolution(<span id=pn>newval</span>)',cmt:'<p>Modifie la r\xE9solution des valeurs physique mesur\xE9es. La r\xE9solution correspond \xE0 la pr\xE9cision de l\x27affichage des mesures. Elle ne change pas la pr\xE9cision de la mesure elle-m\xEAme.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la r\xE9solution des valeurs physique mesur\xE9es'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['PwmInput']['set_userData']={syn:'Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>.',lib:'pwminput.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',par:{data:'objet quelconque \xE0 m\xE9moriser'}};
+doc['PwmInput']['startDataLogger']={syn:'D\xE9marre l\x27enregistreur de donn\xE9es du module.',lib:'pwminput.startDataLogger()',pro:'def startDataLogger()',cmt:'<p>D\xE9marre l\x27enregistreur de donn\xE9es du module. Attention, l\x27enregistreur ne sauvera les mesures de ce capteur que si la fr\xE9quence d\x27enregistrement (logFrequency) n\x27est pas sur \x22OFF\x22.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.'};
+doc['PwmInput']['stopDataLogger']={syn:'Arr\xEAte l\x27enregistreur de donn\xE9es du module.',lib:'pwminput.stopDataLogger()',pro:'def stopDataLogger()',cmt:'<p>Arr\xEAte l\x27enregistreur de donn\xE9es du module.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.'};
+doc['PwmInput']['unmuteValueCallbacks']={syn:'R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'pwminput.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Cette fonction annule un pr\xE9c\xE9dent appel \xE0 <tt>muteValueCallbacks()</tt>. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+//--- (end of generated code: PwmInput)
+//--- (generated code: SegmentedDisplay)
+doc['SegmentedDisplay']={'':{syn:'Interface de la fonction SegmentedDisplay',inc:'from yocto_segmenteddisplay import *',cmt:'<p>La classe SegmentedDisplay permet de g\xE9rer des afficheurs \xE0 segments</p>'}};
+doc['SegmentedDisplay']['FindSegmentedDisplay']={syn:'Permet de retrouver un afficheur d\x27apr\xE8s un identifiant donn\xE9.',lib:'YSegmentedDisplay.FindSegmentedDisplay()',pro:'def FindSegmentedDisplay(<span id=pn>func</span>)',cmt:'<p>Permet de retrouver un afficheur d\x27apr\xE8s un identifiant donn\xE9. L\x27identifiant peut \xEAtre sp\xE9cifi\xE9 sous plusieurs formes:<br> <ul> <li>NomLogiqueFonction</li> <li>NoSerieModule.IdentifiantFonction</li> <li>NoSerieModule.NomLogiqueFonction</li> <li>NomLogiqueModule.IdentifiantMat\xE9riel</li> <li>NomLogiqueModule.NomLogiqueFonction</li> </ul></p><p> Cette fonction n\x27exige pas que l\x27afficheur soit en ligne au moment ou elle est appel\xE9e, l\x27objet retourn\xE9 sera n\xE9anmoins valide. Utiliser la m\xE9thode <tt>YSegmentedDisplay.isOnline()</tt> pour tester si l\x27afficheur est utilisable \xE0 un moment donn\xE9. En cas d\x27ambigu\xEFt\xE9 lorsqu\x27on fait une recherche par nom logique, aucune erreur ne sera notifi\xE9e: la premi\xE8re instance trouv\xE9e sera renvoy\xE9e. La recherche se fait d\x27abord par nom mat\xE9riel, puis par nom logique.</p>',par:{func:'une cha\xEEne de caract\xE8res qui r\xE9f\xE9rence l\x27afficheur sans ambigu\xEFt\xE9'},ret:'un objet de classe <tt>YSegmentedDisplay</tt> qui permet ensuite de contr\xF4ler l\x27afficheur.'};
+doc['SegmentedDisplay']['FirstSegmentedDisplay']={syn:'Commence l\x27\xE9num\xE9ration des un afficheur accessibles par la librairie.',lib:'YSegmentedDisplay.FirstSegmentedDisplay()',pro:'def FirstSegmentedDisplay()',cmt:'<p>Commence l\x27\xE9num\xE9ration des un afficheur accessibles par la librairie. Utiliser la fonction <tt>YSegmentedDisplay.nextSegmentedDisplay()</tt> pour it\xE9rer sur les autres un afficheur.</p>',ret:'un pointeur sur un objet <tt>YSegmentedDisplay</tt>, correspondant au premier afficheur accessible en ligne, ou <tt>null</tt> si il n\x27y a pas de un afficheur disponibles.'};
+doc['SegmentedDisplay']['clearCache']={syn:'Invalide le cache.',lib:'segmenteddisplay.clearCache()',pro:'def clearCache()',cmt:'<p>Invalide le cache. Invalide le cache des valeurs courantes de l\x27afficheur. Force le prochain appel \xE0 une m\xE9thode get_xxx() ou loadxxx() pour charger les les donn\xE9es depuis le module.</p>'};
+doc['SegmentedDisplay']['describe']={syn:'Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance de l\x27afficheur au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'segmenteddisplay.describe()',pro:'def describe()',cmt:'<p>Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance de l\x27afficheur au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. Plus pr\xE9cis\xE9ment, <tt>TYPE</tt> correspond au type de fonction, <tt>NAME</tt> correspond au nom utils\xE9 lors du premier acc\xE8s a la fonction, <tt>SERIAL</tt> correspond au num\xE9ro de s\xE9rie du module si le module est connect\xE9, ou <tt>\x22unresolved\x22</tt> sinon, et <tt>FUNCTIONID</tt> correspond \xE0 l\x27identifiant mat\xE9riel de la fonction si le module est connect\xE9. Par exemple, La methode va retourner <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> si le module est d\xE9j\xE0 connect\xE9 ou <tt>Relay(BadCustomeName.relay1)=unresolved</tt> si le module n\x27est pas d\xE9j\xE0 connect\xE9. Cette methode ne declenche aucune transaction USB ou TCP et peut donc \xEAtre utilis\xE9 dans un debuggeur.</p>',ret:'une cha\xEEne de caract\xE8res d\xE9crivant l\x27afficheur (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['SegmentedDisplay']['get_advertisedValue']={syn:'Retourne la valeur courante de l\x27afficheur (pas plus de 6 caract\xE8res).',lib:'segmenteddisplay.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Retourne la valeur courante de l\x27afficheur (pas plus de 6 caract\xE8res).</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur courante de l\x27afficheur (pas plus de 6 caract\xE8res).',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['SegmentedDisplay']['get_displayedText']={syn:'Retourne le texte actuellement affich\xE9 \xE0 l\x27\xE9cran.',lib:'segmenteddisplay.get_displayedText()',pro:'def get_displayedText()',cmt:'<p>Retourne le texte actuellement affich\xE9 \xE0 l\x27\xE9cran.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant le texte actuellement affich\xE9 \xE0 l\x27\xE9cran',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_DISPLAYEDTEXT_INVALID</tt>.'};
+doc['SegmentedDisplay']['get_errorMessage']={syn:'Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de l\x27afficheur.',lib:'segmenteddisplay.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de l\x27afficheur. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'une cha\xEEne de caract\xE8res correspondant au message de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation de l\x27afficheur.'};
+doc['SegmentedDisplay']['get_errorType']={syn:'Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de l\x27afficheur.',lib:'segmenteddisplay.get_errorType()',pro:'def get_errorType()',cmt:'<p>Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de l\x27afficheur. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'un nombre correspondant au code de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation de l\x27afficheur.'};
+doc['SegmentedDisplay']['get_friendlyName']={syn:'Retourne un identifiant global de l\x27afficheur au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>.',lib:'segmenteddisplay.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Retourne un identifiant global de l\x27afficheur au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>. Le cha\xEEne retourn\xE9e utilise soit les noms logiques du module et de l\x27afficheur si ils sont d\xE9finis, soit respectivement le num\xE9ro de s\xE9rie du module et l\x27identifant mat\xE9riel de l\x27afficheur (par exemple: <tt>MyCustomName.relay1</tt>)</p>',ret:'une cha\xEEne de caract\xE8res identifiant l\x27afficheur en utilisant les noms logiques (ex: <tt>MyCustomName.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['SegmentedDisplay']['get_functionDescriptor']={syn:'Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction.',lib:'segmenteddisplay.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction. Cet identifiant peut \xEAtre utilis\xE9 pour tester si deux instance de <tt>YFunction</tt> r\xE9f\xE9rencent physiquement la m\xEAme fonction sur le m\xEAme module.</p>',ret:'un identifiant de type <tt>YFUN_DESCR</tt>.',ext:'Si la fonction n\x27a jamais \xE9t\xE9 contact\xE9e, la valeur retourn\xE9e sera <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>'};
+doc['SegmentedDisplay']['get_functionId']={syn:'Retourne l\x27identifiant mat\xE9riel de l\x27afficheur, sans r\xE9f\xE9rence au module.',lib:'segmenteddisplay.get_functionId()',pro:'def get_functionId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel de l\x27afficheur, sans r\xE9f\xE9rence au module. Par example <tt>relay1</tt>.</p>',ret:'une cha\xEEne de caract\xE8res identifiant l\x27afficheur (ex: <tt>relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['SegmentedDisplay']['get_hardwareId']={syn:'Retourne l\x27identifiant mat\xE9riel unique de l\x27afficheur au format <tt>SERIAL.FUNCTIONID</tt>.',lib:'segmenteddisplay.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel unique de l\x27afficheur au format <tt>SERIAL.FUNCTIONID</tt>. L\x27identifiant unique est compos\xE9 du num\xE9ro de s\xE9rie du module et de l\x27identifiant mat\xE9riel de l\x27afficheur (par example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'une cha\xEEne de caract\xE8res identifiant l\x27afficheur (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['SegmentedDisplay']['get_logicalName']={syn:'Retourne le nom logique de l\x27afficheur.',lib:'segmenteddisplay.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Retourne le nom logique de l\x27afficheur.</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique de l\x27afficheur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['SegmentedDisplay']['get_module']={syn:'Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction.',lib:'segmenteddisplay.get_module()',pro:'def get_module()',cmt:'<p>Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction. Si la fonction ne peut \xEAtre trouv\xE9e sur aucun module, l\x27instance de <tt>YModule</tt> retourn\xE9e ne sera pas joignable.</p>',ret:'une instance de <tt>YModule</tt>'};
+doc['SegmentedDisplay']['get_userData']={syn:'Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>.',lib:'segmenteddisplay.get_userData()',pro:'def get_userData()',cmt:'<p>Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',ret:'l\x27objet stock\xE9 pr\xE9c\xE9demment par l\x27appelant.'};
+doc['SegmentedDisplay']['isOnline']={syn:'V\xE9rifie si le module h\xE9bergeant l\x27afficheur est joignable, sans d\xE9clencher d\x27erreur.',lib:'segmenteddisplay.isOnline()',pro:'def isOnline()',cmt:'<p>V\xE9rifie si le module h\xE9bergeant l\x27afficheur est joignable, sans d\xE9clencher d\x27erreur. Si les valeurs des attributs en cache de l\x27afficheur sont valides au moment de l\x27appel, le module est consid\xE9r\xE9 joignable. Cette fonction ne cause en aucun cas d\x27exception, quelle que soit l\x27erreur qui pourrait se produire lors de la v\xE9rification de joignabilit\xE9.</p>',ret:'<tt>true</tt> si l\x27afficheur est joignable, <tt>false</tt> sinon'};
+doc['SegmentedDisplay']['load']={syn:'Met en cache les valeurs courantes de l\x27afficheur, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e.',lib:'segmenteddisplay.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Met en cache les valeurs courantes de l\x27afficheur, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e. Par d\xE9faut, lorsqu\x27on acc\xE8de \xE0 un module, tous les attributs des fonctions du module sont automatiquement mises en cache pour la dur\xE9e standard (5 ms). Cette m\xE9thode peut \xEAtre utilis\xE9e pour marquer occasionellement les donn\xE9es cach\xE9es comme valides pour une plus longue p\xE9riode, par exemple dans le but de r\xE9duire le trafic r\xE9seau.</p>',par:{msValidity:'un entier correspondant \xE0 la dur\xE9e de validit\xE9 attribu\xE9e aux les param\xE8tres charg\xE9s, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['SegmentedDisplay']['loadAttribute']={syn:'Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.',lib:'segmenteddisplay.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un cha\xEEne vide.'};
+doc['SegmentedDisplay']['muteValueCallbacks']={syn:'D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'segmenteddisplay.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Vous pouvez utiliser cette fonction pour \xE9conomiser la bande passante et le CPU sur les machines de faible puissance, ou pour \xE9viter le d\xE9clanchement de callbacks HTTP. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['SegmentedDisplay']['nextSegmentedDisplay']={syn:'Continue l\x27\xE9num\xE9ration des un afficheur commenc\xE9e \xE0 l\x27aide de <tt>yFirstSegmentedDisplay()</tt>.',lib:'segmenteddisplay.nextSegmentedDisplay()',pro:'def nextSegmentedDisplay()',cmt:'<p>Continue l\x27\xE9num\xE9ration des un afficheur commenc\xE9e \xE0 l\x27aide de <tt>yFirstSegmentedDisplay()</tt>.</p>',ret:'un pointeur sur un objet <tt>YSegmentedDisplay</tt> accessible en ligne, ou <tt>null</tt> lorsque l\x27\xE9num\xE9ration est termin\xE9e.'};
+doc['SegmentedDisplay']['registerValueCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e.',lib:'segmenteddisplay.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callback peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callback ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et la cha\xEEne de caract\xE8re d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['SegmentedDisplay']['set_displayedText']={syn:'Modifie le texte actuellement affich\xE9 \xE0 l\x27\xE9cran.',lib:'segmenteddisplay.set_displayedText()',pro:'def set_displayedText(<span id=pn>newval</span>)',cmt:'<p>Modifie le texte actuellement affich\xE9 \xE0 l\x27\xE9cran.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant le texte actuellement affich\xE9 \xE0 l\x27\xE9cran'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['SegmentedDisplay']['set_logicalName']={syn:'Modifie le nom logique de l\x27afficheur.',lib:'segmenteddisplay.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Modifie le nom logique de l\x27afficheur. Vous pouvez utiliser <tt>yCheckLogicalName()</tt> pour v\xE9rifier si votre param\xE8tre est valide. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique de l\x27afficheur.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27appel se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['SegmentedDisplay']['set_userData']={syn:'Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>.',lib:'segmenteddisplay.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',par:{data:'objet quelconque \xE0 m\xE9moriser'}};
+doc['SegmentedDisplay']['unmuteValueCallbacks']={syn:'R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'segmenteddisplay.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Cette fonction annule un pr\xE9c\xE9dent appel \xE0 <tt>muteValueCallbacks()</tt>. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+//--- (end of generated code: SegmentedDisplay)
+//--- (generated code: Buzzer)
+doc['Buzzer']={'':{syn:'Interface de la fonction Buzzer',inc:'from yocto_buzzer import *',cmt:'<p>La librairie de programmation Yoctopuce permet de choisir la fr\xE9quence et le volume \xE0 laquelle le buzzer doit sonner. Il est aussi possible de pr\xE9-programmer une s\xE9quence \xE0 jouer.</p>'}};
+doc['Buzzer']['FindBuzzer']={syn:'Permet de retrouver un buzzer d\x27apr\xE8s un identifiant donn\xE9.',lib:'YBuzzer.FindBuzzer()',pro:'def FindBuzzer(<span id=pn>func</span>)',cmt:'<p>Permet de retrouver un buzzer d\x27apr\xE8s un identifiant donn\xE9. L\x27identifiant peut \xEAtre sp\xE9cifi\xE9 sous plusieurs formes:<br> <ul> <li>NomLogiqueFonction</li> <li>NoSerieModule.IdentifiantFonction</li> <li>NoSerieModule.NomLogiqueFonction</li> <li>NomLogiqueModule.IdentifiantMat\xE9riel</li> <li>NomLogiqueModule.NomLogiqueFonction</li> </ul></p><p> Cette fonction n\x27exige pas que le buzzer soit en ligne au moment ou elle est appel\xE9e, l\x27objet retourn\xE9 sera n\xE9anmoins valide. Utiliser la m\xE9thode <tt>YBuzzer.isOnline()</tt> pour tester si le buzzer est utilisable \xE0 un moment donn\xE9. En cas d\x27ambigu\xEFt\xE9 lorsqu\x27on fait une recherche par nom logique, aucune erreur ne sera notifi\xE9e: la premi\xE8re instance trouv\xE9e sera renvoy\xE9e. La recherche se fait d\x27abord par nom mat\xE9riel, puis par nom logique.</p>',par:{func:'une cha\xEEne de caract\xE8res qui r\xE9f\xE9rence le buzzer sans ambigu\xEFt\xE9'},ret:'un objet de classe <tt>YBuzzer</tt> qui permet ensuite de contr\xF4ler le buzzer.'};
+doc['Buzzer']['FirstBuzzer']={syn:'Commence l\x27\xE9num\xE9ration des buzzer accessibles par la librairie.',lib:'YBuzzer.FirstBuzzer()',pro:'def FirstBuzzer()',cmt:'<p>Commence l\x27\xE9num\xE9ration des buzzer accessibles par la librairie. Utiliser la fonction <tt>YBuzzer.nextBuzzer()</tt> pour it\xE9rer sur les autres buzzer.</p>',ret:'un pointeur sur un objet <tt>YBuzzer</tt>, correspondant au premier buzzer accessible en ligne, ou <tt>null</tt> si il n\x27y a pas de buzzer disponibles.'};
+doc['Buzzer']['addFreqMoveToPlaySeq']={syn:'Ajoute une transition en fr\xE9quence \xE0 la s\xE9quence \xE0 jouer.',lib:'buzzer.addFreqMoveToPlaySeq()',pro:'def addFreqMoveToPlaySeq(<span id=pn>freq</span>, <span id=pn>msDelay</span>)',cmt:'<p>Ajoute une transition en fr\xE9quence \xE0 la s\xE9quence \xE0 jouer.</p>',par:{freq:'fr\xE9quence d\xE9sir\xE9e \xE0 la fin de la transition, en Hz',msDelay:'dur\xE9e en millisecondes de la transition.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur. En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Buzzer']['addPulseToPlaySeq']={syn:'Ajoute une impulsion \xE0 la s\xE9quence \xE0 jouer.',lib:'buzzer.addPulseToPlaySeq()',pro:'def addPulseToPlaySeq(<span id=pn>freq</span>, <span id=pn>msDuration</span>)',cmt:'<p>Ajoute une impulsion \xE0 la s\xE9quence \xE0 jouer.</p>',par:{freq:'fr\xE9quence de l\x27impulsion en Hz',msDuration:'dur\xE9e de l\x27impulsion en millisecondes.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur. En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Buzzer']['addVolMoveToPlaySeq']={syn:'Ajoute une transition en volume \xE0 la s\xE9quence \xE0 jouer.',lib:'buzzer.addVolMoveToPlaySeq()',pro:'def addVolMoveToPlaySeq(<span id=pn>volume</span>, <span id=pn>msDuration</span>)',cmt:'<p>Ajoute une transition en volume \xE0 la s\xE9quence \xE0 jouer. La fr\xE9quence courante reste inchang\xE9e: si elle est \xE0 z\xE9ro, la transition n\x27aura aucun effet.</p>',par:{volume:'volume d\xE9sir\xE9 \xE0 la fin de la transition, en pourcentage.',msDuration:'dur\xE9e en millisecondes de la transition.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur. En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Buzzer']['clearCache']={syn:'Invalide le cache.',lib:'buzzer.clearCache()',pro:'def clearCache()',cmt:'<p>Invalide le cache. Invalide le cache des valeurs courantes du buzzer. Force le prochain appel \xE0 une m\xE9thode get_xxx() ou loadxxx() pour charger les les donn\xE9es depuis le module.</p>'};
+doc['Buzzer']['describe']={syn:'Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du buzzer au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'buzzer.describe()',pro:'def describe()',cmt:'<p>Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du buzzer au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. Plus pr\xE9cis\xE9ment, <tt>TYPE</tt> correspond au type de fonction, <tt>NAME</tt> correspond au nom utils\xE9 lors du premier acc\xE8s a la fonction, <tt>SERIAL</tt> correspond au num\xE9ro de s\xE9rie du module si le module est connect\xE9, ou <tt>\x22unresolved\x22</tt> sinon, et <tt>FUNCTIONID</tt> correspond \xE0 l\x27identifiant mat\xE9riel de la fonction si le module est connect\xE9. Par exemple, La methode va retourner <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> si le module est d\xE9j\xE0 connect\xE9 ou <tt>Relay(BadCustomeName.relay1)=unresolved</tt> si le module n\x27est pas d\xE9j\xE0 connect\xE9. Cette methode ne declenche aucune transaction USB ou TCP et peut donc \xEAtre utilis\xE9 dans un debuggeur.</p>',ret:'une cha\xEEne de caract\xE8res d\xE9crivant le buzzer (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['Buzzer']['freqMove']={syn:'Fait varier la fr\xE9quence du buzzer pendant un temps donn\xE9.',lib:'buzzer.freqMove()',pro:'def freqMove(<span id=pn>frequency</span>, <span id=pn>duration</span>)',cmt:'<p>Fait varier la fr\xE9quence du buzzer pendant un temps donn\xE9.</p>',par:{frequency:'fr\xE9quence \xE0 atteindre en hertz, une fr\xE9quence inf\xE9rieure \xE0 25Hz arr\xEAtera le buzzer.',duration:'dur\xE9e de l\x27impulsion en milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Buzzer']['get_advertisedValue']={syn:'Retourne la valeur courante du buzzer (pas plus de 6 caract\xE8res).',lib:'buzzer.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Retourne la valeur courante du buzzer (pas plus de 6 caract\xE8res).</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur courante du buzzer (pas plus de 6 caract\xE8res).',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['Buzzer']['get_errorMessage']={syn:'Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du buzzer.',lib:'buzzer.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du buzzer. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'une cha\xEEne de caract\xE8res correspondant au message de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du buzzer.'};
+doc['Buzzer']['get_errorType']={syn:'Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du buzzer.',lib:'buzzer.get_errorType()',pro:'def get_errorType()',cmt:'<p>Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du buzzer. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'un nombre correspondant au code de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du buzzer.'};
+doc['Buzzer']['get_frequency']={syn:'Retourne la fr\xE9quence du signal envoy\xE9 sur le buzzer/haut parleur.',lib:'buzzer.get_frequency()',pro:'def get_frequency()',cmt:'<p>Retourne la fr\xE9quence du signal envoy\xE9 sur le buzzer/haut parleur.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la fr\xE9quence du signal envoy\xE9 sur le buzzer/haut parleur',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_FREQUENCY_INVALID</tt>.'};
+doc['Buzzer']['get_friendlyName']={syn:'Retourne un identifiant global du buzzer au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>.',lib:'buzzer.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Retourne un identifiant global du buzzer au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>. Le cha\xEEne retourn\xE9e utilise soit les noms logiques du module et du buzzer si ils sont d\xE9finis, soit respectivement le num\xE9ro de s\xE9rie du module et l\x27identifant mat\xE9riel du buzzer (par exemple: <tt>MyCustomName.relay1</tt>)</p>',ret:'une cha\xEEne de caract\xE8res identifiant le buzzer en utilisant les noms logiques (ex: <tt>MyCustomName.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['Buzzer']['get_functionDescriptor']={syn:'Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction.',lib:'buzzer.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction. Cet identifiant peut \xEAtre utilis\xE9 pour tester si deux instance de <tt>YFunction</tt> r\xE9f\xE9rencent physiquement la m\xEAme fonction sur le m\xEAme module.</p>',ret:'un identifiant de type <tt>YFUN_DESCR</tt>.',ext:'Si la fonction n\x27a jamais \xE9t\xE9 contact\xE9e, la valeur retourn\xE9e sera <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>'};
+doc['Buzzer']['get_functionId']={syn:'Retourne l\x27identifiant mat\xE9riel du buzzer, sans r\xE9f\xE9rence au module.',lib:'buzzer.get_functionId()',pro:'def get_functionId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel du buzzer, sans r\xE9f\xE9rence au module. Par example <tt>relay1</tt>.</p>',ret:'une cha\xEEne de caract\xE8res identifiant le buzzer (ex: <tt>relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['Buzzer']['get_hardwareId']={syn:'Retourne l\x27identifiant mat\xE9riel unique du buzzer au format <tt>SERIAL.FUNCTIONID</tt>.',lib:'buzzer.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel unique du buzzer au format <tt>SERIAL.FUNCTIONID</tt>. L\x27identifiant unique est compos\xE9 du num\xE9ro de s\xE9rie du module et de l\x27identifiant mat\xE9riel du buzzer (par example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'une cha\xEEne de caract\xE8res identifiant le buzzer (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['Buzzer']['get_logicalName']={syn:'Retourne le nom logique du buzzer.',lib:'buzzer.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Retourne le nom logique du buzzer.</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du buzzer.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['Buzzer']['get_module']={syn:'Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction.',lib:'buzzer.get_module()',pro:'def get_module()',cmt:'<p>Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction. Si la fonction ne peut \xEAtre trouv\xE9e sur aucun module, l\x27instance de <tt>YModule</tt> retourn\xE9e ne sera pas joignable.</p>',ret:'une instance de <tt>YModule</tt>'};
+doc['Buzzer']['get_playSeqMaxSize']={syn:'Retourne la longueur maximum de la s\xE9quence \xE0 jouer.',lib:'buzzer.get_playSeqMaxSize()',pro:'def get_playSeqMaxSize()',cmt:'<p>Retourne la longueur maximum de la s\xE9quence \xE0 jouer.</p>',ret:'un entier repr&eacute;sentant la longueur maximum de la s\xE9quence \xE0 jouer',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_PLAYSEQMAXSIZE_INVALID</tt>.'};
+doc['Buzzer']['get_playSeqSignature']={syn:'Retourne la signature de la signature de la s\xE9quence \xE0 jouer.',lib:'buzzer.get_playSeqSignature()',pro:'def get_playSeqSignature()',cmt:'<p>Retourne la signature de la signature de la s\xE9quence \xE0 jouer. Les s\xE9quences \xE0 jouer ne pouvant pas \xEAtre relues depuis le module, ce m\xE9canisme peut \xEAtre utilis\xE9 pour d\xE9tecter si une s\xE9quence sp\xE9cifique est d\xE9j\xE0 programm\xE9e.</p>',ret:'un entier repr&eacute;sentant la signature de la signature de la s\xE9quence \xE0 jouer',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_PLAYSEQSIGNATURE_INVALID</tt>.'};
+doc['Buzzer']['get_playSeqSize']={syn:'Retourne la longueur actuelle de la s\xE9quence \xE0 jouer.',lib:'buzzer.get_playSeqSize()',pro:'def get_playSeqSize()',cmt:'<p>Retourne la longueur actuelle de la s\xE9quence \xE0 jouer.</p>',ret:'un entier repr&eacute;sentant la longueur actuelle de la s\xE9quence \xE0 jouer',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_PLAYSEQSIZE_INVALID</tt>.'};
+doc['Buzzer']['get_userData']={syn:'Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>.',lib:'buzzer.get_userData()',pro:'def get_userData()',cmt:'<p>Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',ret:'l\x27objet stock\xE9 pr\xE9c\xE9demment par l\x27appelant.'};
+doc['Buzzer']['get_volume']={syn:'Retourne le volume du signal envoy\xE9 sur le buzzer/haut parleur.',lib:'buzzer.get_volume()',pro:'def get_volume()',cmt:'<p>Retourne le volume du signal envoy\xE9 sur le buzzer/haut parleur.</p>',ret:'un entier repr&eacute;sentant le volume du signal envoy\xE9 sur le buzzer/haut parleur',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_VOLUME_INVALID</tt>.'};
+doc['Buzzer']['isOnline']={syn:'V\xE9rifie si le module h\xE9bergeant le buzzer est joignable, sans d\xE9clencher d\x27erreur.',lib:'buzzer.isOnline()',pro:'def isOnline()',cmt:'<p>V\xE9rifie si le module h\xE9bergeant le buzzer est joignable, sans d\xE9clencher d\x27erreur. Si les valeurs des attributs en cache du buzzer sont valides au moment de l\x27appel, le module est consid\xE9r\xE9 joignable. Cette fonction ne cause en aucun cas d\x27exception, quelle que soit l\x27erreur qui pourrait se produire lors de la v\xE9rification de joignabilit\xE9.</p>',ret:'<tt>true</tt> si le buzzer est joignable, <tt>false</tt> sinon'};
+doc['Buzzer']['load']={syn:'Met en cache les valeurs courantes du buzzer, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e.',lib:'buzzer.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Met en cache les valeurs courantes du buzzer, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e. Par d\xE9faut, lorsqu\x27on acc\xE8de \xE0 un module, tous les attributs des fonctions du module sont automatiquement mises en cache pour la dur\xE9e standard (5 ms). Cette m\xE9thode peut \xEAtre utilis\xE9e pour marquer occasionellement les donn\xE9es cach\xE9es comme valides pour une plus longue p\xE9riode, par exemple dans le but de r\xE9duire le trafic r\xE9seau.</p>',par:{msValidity:'un entier correspondant \xE0 la dur\xE9e de validit\xE9 attribu\xE9e aux les param\xE8tres charg\xE9s, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Buzzer']['loadAttribute']={syn:'Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.',lib:'buzzer.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un cha\xEEne vide.'};
+doc['Buzzer']['muteValueCallbacks']={syn:'D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'buzzer.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Vous pouvez utiliser cette fonction pour \xE9conomiser la bande passante et le CPU sur les machines de faible puissance, ou pour \xE9viter le d\xE9clanchement de callbacks HTTP. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Buzzer']['nextBuzzer']={syn:'Continue l\x27\xE9num\xE9ration des buzzer commenc\xE9e \xE0 l\x27aide de <tt>yFirstBuzzer()</tt>.',lib:'buzzer.nextBuzzer()',pro:'def nextBuzzer()',cmt:'<p>Continue l\x27\xE9num\xE9ration des buzzer commenc\xE9e \xE0 l\x27aide de <tt>yFirstBuzzer()</tt>.</p>',ret:'un pointeur sur un objet <tt>YBuzzer</tt> accessible en ligne, ou <tt>null</tt> lorsque l\x27\xE9num\xE9ration est termin\xE9e.'};
+doc['Buzzer']['pulse']={syn:'Active le buzzer pendant un temps donn\xE9.',lib:'buzzer.pulse()',pro:'def pulse(<span id=pn>frequency</span>, <span id=pn>duration</span>)',cmt:'<p>Active le buzzer pendant un temps donn\xE9.</p>',par:{frequency:'fr\xE9quence de l\x27impulsion, en hertz',duration:'dur\xE9e de l\x27impulsion en milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Buzzer']['registerValueCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e.',lib:'buzzer.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callback peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callback ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et la cha\xEEne de caract\xE8re d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['Buzzer']['resetPlaySeq']={syn:'efface le contenu de la sequence \xE0 jouer et mets la fr\xE9quence \xE0 z\xE9ro.',lib:'buzzer.resetPlaySeq()',pro:'def resetPlaySeq()',cmt:'<p>efface le contenu de la sequence \xE0 jouer et mets la fr\xE9quence \xE0 z\xE9ro.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur. En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Buzzer']['set_frequency']={syn:'Modifie la fr\xE9quence du signal envoy\xE9 sur le buzzer/speaker.',lib:'buzzer.set_frequency()',pro:'def set_frequency(<span id=pn>newval</span>)',cmt:'<p>Modifie la fr\xE9quence du signal envoy\xE9 sur le buzzer/speaker. Une fr\xE9quence nulle stoppe le buzzer.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la fr\xE9quence du signal envoy\xE9 sur le buzzer/speaker'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Buzzer']['set_logicalName']={syn:'Modifie le nom logique du buzzer.',lib:'buzzer.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Modifie le nom logique du buzzer. Vous pouvez utiliser <tt>yCheckLogicalName()</tt> pour v\xE9rifier si votre param\xE8tre est valide. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du buzzer.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27appel se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Buzzer']['set_userData']={syn:'Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>.',lib:'buzzer.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',par:{data:'objet quelconque \xE0 m\xE9moriser'}};
+doc['Buzzer']['set_volume']={syn:'Modifie le volume du signal envoy\xE9 sur le buzzer/haut parleur.',lib:'buzzer.set_volume()',pro:'def set_volume(<span id=pn>newval</span>)',cmt:'<p>Modifie le volume du signal envoy\xE9 sur le buzzer/haut parleur.</p>',par:{newval:'un entier repr&eacute;sentant le volume du signal envoy\xE9 sur le buzzer/haut parleur'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Buzzer']['startPlaySeq']={syn:'D\xE9marre l\x27ex\xE9cution de la s\xE9quence \xE0 jouer pr\xE9programm\xE9e.',lib:'buzzer.startPlaySeq()',pro:'def startPlaySeq()',cmt:'<p>D\xE9marre l\x27ex\xE9cution de la s\xE9quence \xE0 jouer pr\xE9programm\xE9e. La s\xE9quence va tourner en boucle jusqu\x27\xE0 ce qu\x27elle soit stopp\xE9e par stopPlaySeq ou un changement explicite.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur. En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Buzzer']['stopPlaySeq']={syn:'Arr\xEAte l\x27ex\xE9cution de la s\xE9quence \xE0 jouer pr\xE9programm\xE9e et mets la fr\xE9quence \xE0 z\xE9ro.',lib:'buzzer.stopPlaySeq()',pro:'def stopPlaySeq()',cmt:'<p>Arr\xEAte l\x27ex\xE9cution de la s\xE9quence \xE0 jouer pr\xE9programm\xE9e et mets la fr\xE9quence \xE0 z\xE9ro.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur. En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Buzzer']['unmuteValueCallbacks']={syn:'R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'buzzer.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Cette fonction annule un pr\xE9c\xE9dent appel \xE0 <tt>muteValueCallbacks()</tt>. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Buzzer']['volumeMove']={syn:'Fait varier le volume du buzzer pendant un temps donn\xE9, la fr\xE9quence reste inchang\xE9e.',lib:'buzzer.volumeMove()',pro:'def volumeMove(<span id=pn>volume</span>, <span id=pn>duration</span>)',cmt:'<p>Fait varier le volume du buzzer pendant un temps donn\xE9, la fr\xE9quence reste inchang\xE9e.</p>',par:{volume:'volume \xE0 atteindre en %.',duration:'dur\xE9e de la transition en milliseconds'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+//--- (end of generated code: Buzzer)
+//--- (generated code: FirmwareUpdate)
+doc['FirmwareUpdate']={'':{syn:'Interface de contr\xF4le pour la mise \xE0 jour de firmware',inc:'from yocto_api import *',cmt:'<p>La classe YFirmwareUpdate permet de contr\xF4ler la mise \xE0 jour du de firmware d\x27un module Yoctopuce. Cette classe ne doit pas \xEAtre instancier directement, mais est retourn\xE9e par la m\xE9thode <tt>updateFirmware</tt> de l\x27un objet YModule.</p>'}};
+doc['FirmwareUpdate']['CheckFirmware']={syn:'Teste si le fichier byn est valide pour le module.',lib:'YFirmwareUpdate.CheckFirmware()',pro:'def CheckFirmware(<span id=pn>serial</span>, <span id=pn>path</span>, <span id=pn>minrelease</span>)',cmt:'<p>Teste si le fichier byn est valide pour le module. Il est possible de passer un r\xE9pertoire qui contient plusieurs fichiers byn. Dans ce cas cette m\xE9thode retourne le path du fichier byn compatible le plus r\xE9cent. Cette fonction ignore les firmwares qui sont plus anciens que minrelease.</p>',par:{serial:'le num\xE9ro de s\xE9rie du module \xE0 mettre \xE0 jour',path:'le path sur un fichier byn ou un r\xE9pertoire contenant plusieurs fichiers byn',minrelease:'un entier positif'},ret:'le path du fichier byn \xE0 utiliser, ou une cha\xEEne vide si aucun firmware plus r\xE9cent n\x27est disponible En cas d\x27erreur, retourne une cha\xEEne de caract\xE8re qui comment par \x22error:\x22.'};
+doc['FirmwareUpdate']['GetAllBootLoaders']={syn:'Retourne la liste des modules en mode \x22mise \xE0 jour\x22.',lib:'YFirmwareUpdate.GetAllBootLoaders()',pro:'def GetAllBootLoaders()',cmt:'<p>Retourne la liste des modules en mode \x22mise \xE0 jour\x22. Seuls les modules connect\xE9s en USB sont list\xE9s. Pour les modules connect\xE9s \xE0 un YoctoHub, il faut se connecter \xE0 l\x27interface web du YoctoHub.</p>',ret:'un tableau de cha\xEEnes de caract\xE8res contenant les num\xE9ros de s\xE9rie des modules en attente de \x22mise \xE0 jour\x22'};
+doc['FirmwareUpdate']['get_progress']={syn:'Retourne l\x27\xE9tat d\x27avancement de la mise \xE0 jour de firmware, sur une \xE9chelle de 0 \xE0 100.',lib:'firmwareupdate.get_progress()',pro:'def get_progress()',cmt:'<p>Retourne l\x27\xE9tat d\x27avancement de la mise \xE0 jour de firmware, sur une \xE9chelle de 0 \xE0 100. A l\x27instanciation de l\x27objet l\x27avancement est nul. Au fur et \xE0 mesure l\x27avancement progresse pour atteindre la valeur 100. Quand la valeur de 100 est retourn\xE9 la mise \xE0 jour s\x27est termin\xE9e avec succ\xE8s. En cas d\x27erreur pendant la mise \xE0 jour une valeur n\xE9gative est retourn\xE9e et la description de l\x27erreur peu \xEAtre obtenu avec la m\xE9thode <tt>get_progressMessage</tt>.</p>',ret:'un nombre entier entre 0 et 100 repr\xE9sentant l\x27avancement de la mise \xE0 jour du firmware, ou un code d\x27erreur n\xE9gatif en cas de probl\xE8me.'};
+doc['FirmwareUpdate']['get_progressMessage']={syn:'le dernier message de la mise \xE0 jour de firmware.',lib:'firmwareupdate.get_progressMessage()',pro:'def get_progressMessage()',cmt:'<p>le dernier message de la mise \xE0 jour de firmware. En cas d\x27erreur durant la mise \xE0 jour le message d\x27erreur est retourn\xE9.</p>',ret:'un cha\xEEne de caract\xE8re avec le dernier message, ou le message d\x27erreur si la mise \xE0 jour n\x27a pas r\xE9ussi'};
+doc['FirmwareUpdate']['startUpdate']={syn:'D\xE9marre la mise \xE0 jour de firmware.',lib:'firmwareupdate.startUpdate()',pro:'def startUpdate()',cmt:'<p>D\xE9marre la mise \xE0 jour de firmware. La m\xE9thode d\xE9marre en arri\xE8re plan le processus de mise \xE0 jour de firmware. Cet m\xE9thode rend la main imm\xE9diatement. l\x27\xE9tat d\x27avancement de la mise \xE0 jour peut \xEAtre suivit \xE0 l\x27aide des m\xE9thodes <tt>get_progress()</tt> et <tt>get_progressMessage()</tt>.</p>',ret:'un nombre entier entre 0 et 100 repr\xE9sentant l\x27avancement de la mise \xE0 jour du firmware, ou un code d\x27erreur n\xE9gatif en cas de probl\xE8me.',ext:'En cas d\x27erreur, un code d\x27erreur n\xE9gatif.'};
+//--- (end of generated code: FirmwareUpdate)
+//--- (generated code: Gps)
+doc['Gps']={'':{syn:'Interface de la fonction GPS',inc:'from yocto_gps import *',cmt:'<p>La fonction Gps permet d\x27extraire les donn\xE9es de positionnement du module GPS. Cette classe permet d\x27obtenir toutes les informations n\xE9cessaires. Cependant, si vous souhaitez d\xE9finir des callbacks sur des changement de position, utilisez plut\xF4t les classes YLatitude et YLongitude.</p>'}};
+doc['Gps']['FindGps']={syn:'Permet de retrouver un GPS d\x27apr\xE8s un identifiant donn\xE9.',lib:'YGps.FindGps()',pro:'def FindGps(<span id=pn>func</span>)',cmt:'<p>Permet de retrouver un GPS d\x27apr\xE8s un identifiant donn\xE9. L\x27identifiant peut \xEAtre sp\xE9cifi\xE9 sous plusieurs formes:<br> <ul> <li>NomLogiqueFonction</li> <li>NoSerieModule.IdentifiantFonction</li> <li>NoSerieModule.NomLogiqueFonction</li> <li>NomLogiqueModule.IdentifiantMat\xE9riel</li> <li>NomLogiqueModule.NomLogiqueFonction</li> </ul></p><p> Cette fonction n\x27exige pas que le GPS soit en ligne au moment ou elle est appel\xE9e, l\x27objet retourn\xE9 sera n\xE9anmoins valide. Utiliser la m\xE9thode <tt>YGps.isOnline()</tt> pour tester si le GPS est utilisable \xE0 un moment donn\xE9. En cas d\x27ambigu\xEFt\xE9 lorsqu\x27on fait une recherche par nom logique, aucune erreur ne sera notifi\xE9e: la premi\xE8re instance trouv\xE9e sera renvoy\xE9e. La recherche se fait d\x27abord par nom mat\xE9riel, puis par nom logique.</p>',par:{func:'une cha\xEEne de caract\xE8res qui r\xE9f\xE9rence le GPS sans ambigu\xEFt\xE9'},ret:'un objet de classe <tt>YGps</tt> qui permet ensuite de contr\xF4ler le GPS.'};
+doc['Gps']['FirstGps']={syn:'Commence l\x27\xE9num\xE9ration des le GPS accessibles par la librairie.',lib:'YGps.FirstGps()',pro:'def FirstGps()',cmt:'<p>Commence l\x27\xE9num\xE9ration des le GPS accessibles par la librairie. Utiliser la fonction <tt>YGps.nextGps()</tt> pour it\xE9rer sur les autres le GPS.</p>',ret:'un pointeur sur un objet <tt>YGps</tt>, correspondant au premier GPS accessible en ligne, ou <tt>null</tt> si il n\x27y a pas du GPS disponibles.'};
+doc['Gps']['clearCache']={syn:'Invalide le cache.',lib:'gps.clearCache()',pro:'def clearCache()',cmt:'<p>Invalide le cache. Invalide le cache des valeurs courantes du GPS. Force le prochain appel \xE0 une m\xE9thode get_xxx() ou loadxxx() pour charger les les donn\xE9es depuis le module.</p>'};
+doc['Gps']['describe']={syn:'Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du GPS au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'gps.describe()',pro:'def describe()',cmt:'<p>Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du GPS au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. Plus pr\xE9cis\xE9ment, <tt>TYPE</tt> correspond au type de fonction, <tt>NAME</tt> correspond au nom utils\xE9 lors du premier acc\xE8s a la fonction, <tt>SERIAL</tt> correspond au num\xE9ro de s\xE9rie du module si le module est connect\xE9, ou <tt>\x22unresolved\x22</tt> sinon, et <tt>FUNCTIONID</tt> correspond \xE0 l\x27identifiant mat\xE9riel de la fonction si le module est connect\xE9. Par exemple, La methode va retourner <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> si le module est d\xE9j\xE0 connect\xE9 ou <tt>Relay(BadCustomeName.relay1)=unresolved</tt> si le module n\x27est pas d\xE9j\xE0 connect\xE9. Cette methode ne declenche aucune transaction USB ou TCP et peut donc \xEAtre utilis\xE9 dans un debuggeur.</p>',ret:'une cha\xEEne de caract\xE8res d\xE9crivant le GPS (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['Gps']['get_advertisedValue']={syn:'Retourne la valeur courante du GPS (pas plus de 6 caract\xE8res).',lib:'gps.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Retourne la valeur courante du GPS (pas plus de 6 caract\xE8res).</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur courante du GPS (pas plus de 6 caract\xE8res).',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['Gps']['get_altitude']={syn:'Retourne l\x27altitude courante, Attention: la technologie GPS ne permet d\x27obtenir une altitude pr\xE9cise, des erreurs de plusieurs dizaine des m\xE8tres sont courantes.',lib:'gps.get_altitude()',pro:'def get_altitude()',cmt:'<p>Retourne l\x27altitude courante, Attention: la technologie GPS ne permet d\x27obtenir une altitude pr\xE9cise, des erreurs de plusieurs dizaine des m\xE8tres sont courantes.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant l\x27altitude courante, Attention: la technologie GPS ne permet d\x27obtenir une altitude pr\xE9cise, des erreurs de plusieurs dizaine des m\xE8tres sont courantes',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_ALTITUDE_INVALID</tt>.'};
+doc['Gps']['get_coordSystem']={syn:'Retourne le syst\xE8me de repr\xE9sentation utilis\xE9 pour les donn\xE9es de positionnement.',lib:'gps.get_coordSystem()',pro:'def get_coordSystem()',cmt:'<p>Retourne le syst\xE8me de repr\xE9sentation utilis\xE9 pour les donn\xE9es de positionnement.</p>',ret:'une valeur parmi <tt>Y_COORDSYSTEM_GPS_DMS</tt>, <tt>Y_COORDSYSTEM_GPS_DM</tt> et <tt>Y_COORDSYSTEM_GPS_D</tt> repr&eacute;sentant le syst\xE8me de repr\xE9sentation utilis\xE9 pour les donn\xE9es de positionnement',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_COORDSYSTEM_INVALID</tt>.'};
+doc['Gps']['get_dateTime']={syn:'Retourne l\x27heure courante au format \x22AAAA/MM/JJ hh:mm:ss\x22.',lib:'gps.get_dateTime()',pro:'def get_dateTime()',cmt:'<p>Retourne l\x27heure courante au format \x22AAAA/MM/JJ hh:mm:ss\x22.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant l\x27heure courante au format \x22AAAA/MM/JJ hh:mm:ss\x22',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_DATETIME_INVALID</tt>.'};
+doc['Gps']['get_dilution']={syn:'Retourne la dilution de pr\xE9cision horizontale.',lib:'gps.get_dilution()',pro:'def get_dilution()',cmt:'<p>Retourne la dilution de pr\xE9cision horizontale. Plus ce chiffre est petit, plus la pr\xE9cision est grande.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la dilution de pr\xE9cision horizontale',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_DILUTION_INVALID</tt>.'};
+doc['Gps']['get_direction']={syn:'Retourne la direction du d\xE9placement en degr\xE9s par rapport au nord vrai (g\xE9ographique).',lib:'gps.get_direction()',pro:'def get_direction()',cmt:'<p>Retourne la direction du d\xE9placement en degr\xE9s par rapport au nord vrai (g\xE9ographique).</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la direction du d\xE9placement en degr\xE9s par rapport au nord vrai (g\xE9ographique)',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_DIRECTION_INVALID</tt>.'};
+doc['Gps']['get_errorMessage']={syn:'Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du GPS.',lib:'gps.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du GPS. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'une cha\xEEne de caract\xE8res correspondant au message de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du GPS.'};
+doc['Gps']['get_errorType']={syn:'Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du GPS.',lib:'gps.get_errorType()',pro:'def get_errorType()',cmt:'<p>Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du GPS. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'un nombre correspondant au code de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du GPS.'};
+doc['Gps']['get_friendlyName']={syn:'Retourne un identifiant global du GPS au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>.',lib:'gps.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Retourne un identifiant global du GPS au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>. Le cha\xEEne retourn\xE9e utilise soit les noms logiques du module et du GPS si ils sont d\xE9finis, soit respectivement le num\xE9ro de s\xE9rie du module et l\x27identifant mat\xE9riel du GPS (par exemple: <tt>MyCustomName.relay1</tt>)</p>',ret:'une cha\xEEne de caract\xE8res identifiant le GPS en utilisant les noms logiques (ex: <tt>MyCustomName.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['Gps']['get_functionDescriptor']={syn:'Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction.',lib:'gps.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction. Cet identifiant peut \xEAtre utilis\xE9 pour tester si deux instance de <tt>YFunction</tt> r\xE9f\xE9rencent physiquement la m\xEAme fonction sur le m\xEAme module.</p>',ret:'un identifiant de type <tt>YFUN_DESCR</tt>.',ext:'Si la fonction n\x27a jamais \xE9t\xE9 contact\xE9e, la valeur retourn\xE9e sera <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>'};
+doc['Gps']['get_functionId']={syn:'Retourne l\x27identifiant mat\xE9riel du GPS, sans r\xE9f\xE9rence au module.',lib:'gps.get_functionId()',pro:'def get_functionId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel du GPS, sans r\xE9f\xE9rence au module. Par example <tt>relay1</tt>.</p>',ret:'une cha\xEEne de caract\xE8res identifiant le GPS (ex: <tt>relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['Gps']['get_groundSpeed']={syn:'Retourne la vitesse au sol actuelle en Km/h.',lib:'gps.get_groundSpeed()',pro:'def get_groundSpeed()',cmt:'<p>Retourne la vitesse au sol actuelle en Km/h.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la vitesse au sol actuelle en Km/h',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_GROUNDSPEED_INVALID</tt>.'};
+doc['Gps']['get_hardwareId']={syn:'Retourne l\x27identifiant mat\xE9riel unique du GPS au format <tt>SERIAL.FUNCTIONID</tt>.',lib:'gps.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel unique du GPS au format <tt>SERIAL.FUNCTIONID</tt>. L\x27identifiant unique est compos\xE9 du num\xE9ro de s\xE9rie du module et de l\x27identifiant mat\xE9riel du GPS (par example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'une cha\xEEne de caract\xE8res identifiant le GPS (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['Gps']['get_isFixed']={syn:'Retourne TRUE si le r\xE9cepteur a trouv\xE9 suffisamment de satellites pour fonctionner.',lib:'gps.get_isFixed()',pro:'def get_isFixed()',cmt:'<p>Retourne TRUE si le r\xE9cepteur a trouv\xE9 suffisamment de satellites pour fonctionner.</p>',ret:'soit <tt>Y_ISFIXED_FALSE</tt>, soit <tt>Y_ISFIXED_TRUE</tt>, selon TRUE si le r\xE9cepteur a trouv\xE9 suffisamment de satellites pour fonctionner',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_ISFIXED_INVALID</tt>.'};
+doc['Gps']['get_latitude']={syn:'Retourne la latitude courante.',lib:'gps.get_latitude()',pro:'def get_latitude()',cmt:'<p>Retourne la latitude courante.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la latitude courante',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_LATITUDE_INVALID</tt>.'};
+doc['Gps']['get_logicalName']={syn:'Retourne le nom logique du GPS.',lib:'gps.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Retourne le nom logique du GPS.</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du GPS.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['Gps']['get_longitude']={syn:'Retourne la longitude courante.',lib:'gps.get_longitude()',pro:'def get_longitude()',cmt:'<p>Retourne la longitude courante.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la longitude courante',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_LONGITUDE_INVALID</tt>.'};
+doc['Gps']['get_module']={syn:'Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction.',lib:'gps.get_module()',pro:'def get_module()',cmt:'<p>Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction. Si la fonction ne peut \xEAtre trouv\xE9e sur aucun module, l\x27instance de <tt>YModule</tt> retourn\xE9e ne sera pas joignable.</p>',ret:'une instance de <tt>YModule</tt>'};
+doc['Gps']['get_satCount']={syn:'Retourne le nombre de satellites visibles.',lib:'gps.get_satCount()',pro:'def get_satCount()',cmt:'<p>Retourne le nombre de satellites visibles.</p>',ret:'un entier repr&eacute;sentant le nombre de satellites visibles',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_SATCOUNT_INVALID</tt>.'};
+doc['Gps']['get_unixTime']={syn:'Retourne l\x27heure courante au format Unix (nombre de secondes \xE9coul\xE9es depuis le 1er janvier 1970).',lib:'gps.get_unixTime()',pro:'def get_unixTime()',cmt:'<p>Retourne l\x27heure courante au format Unix (nombre de secondes \xE9coul\xE9es depuis le 1er janvier 1970).</p>',ret:'un entier repr&eacute;sentant l\x27heure courante au format Unix (nombre de secondes \xE9coul\xE9es depuis le 1er janvier 1970)',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_UNIXTIME_INVALID</tt>.'};
+doc['Gps']['get_userData']={syn:'Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>.',lib:'gps.get_userData()',pro:'def get_userData()',cmt:'<p>Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',ret:'l\x27objet stock\xE9 pr\xE9c\xE9demment par l\x27appelant.'};
+doc['Gps']['get_utcOffset']={syn:'Retourne le nombre de secondes de d\xE9callage entre l\x27heure courante et l\x27heure UTC (time zone).',lib:'gps.get_utcOffset()',pro:'def get_utcOffset()',cmt:'<p>Retourne le nombre de secondes de d\xE9callage entre l\x27heure courante et l\x27heure UTC (time zone).</p>',ret:'un entier repr&eacute;sentant le nombre de secondes de d\xE9callage entre l\x27heure courante et l\x27heure UTC (time zone)',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_UTCOFFSET_INVALID</tt>.'};
+doc['Gps']['isOnline']={syn:'V\xE9rifie si le module h\xE9bergeant le GPS est joignable, sans d\xE9clencher d\x27erreur.',lib:'gps.isOnline()',pro:'def isOnline()',cmt:'<p>V\xE9rifie si le module h\xE9bergeant le GPS est joignable, sans d\xE9clencher d\x27erreur. Si les valeurs des attributs en cache du GPS sont valides au moment de l\x27appel, le module est consid\xE9r\xE9 joignable. Cette fonction ne cause en aucun cas d\x27exception, quelle que soit l\x27erreur qui pourrait se produire lors de la v\xE9rification de joignabilit\xE9.</p>',ret:'<tt>true</tt> si le GPS est joignable, <tt>false</tt> sinon'};
+doc['Gps']['load']={syn:'Met en cache les valeurs courantes du GPS, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e.',lib:'gps.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Met en cache les valeurs courantes du GPS, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e. Par d\xE9faut, lorsqu\x27on acc\xE8de \xE0 un module, tous les attributs des fonctions du module sont automatiquement mises en cache pour la dur\xE9e standard (5 ms). Cette m\xE9thode peut \xEAtre utilis\xE9e pour marquer occasionellement les donn\xE9es cach\xE9es comme valides pour une plus longue p\xE9riode, par exemple dans le but de r\xE9duire le trafic r\xE9seau.</p>',par:{msValidity:'un entier correspondant \xE0 la dur\xE9e de validit\xE9 attribu\xE9e aux les param\xE8tres charg\xE9s, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Gps']['loadAttribute']={syn:'Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.',lib:'gps.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un cha\xEEne vide.'};
+doc['Gps']['muteValueCallbacks']={syn:'D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'gps.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Vous pouvez utiliser cette fonction pour \xE9conomiser la bande passante et le CPU sur les machines de faible puissance, ou pour \xE9viter le d\xE9clanchement de callbacks HTTP. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Gps']['nextGps']={syn:'Continue l\x27\xE9num\xE9ration des le GPS commenc\xE9e \xE0 l\x27aide de <tt>yFirstGps()</tt>.',lib:'gps.nextGps()',pro:'def nextGps()',cmt:'<p>Continue l\x27\xE9num\xE9ration des le GPS commenc\xE9e \xE0 l\x27aide de <tt>yFirstGps()</tt>.</p>',ret:'un pointeur sur un objet <tt>YGps</tt> accessible en ligne, ou <tt>null</tt> lorsque l\x27\xE9num\xE9ration est termin\xE9e.'};
+doc['Gps']['registerValueCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e.',lib:'gps.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callback peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callback ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et la cha\xEEne de caract\xE8re d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['Gps']['set_coordSystem']={syn:'Change le syst\xE8me de repr\xE9sentation utilis\xE9 pour les donn\xE9es de positionnement.',lib:'gps.set_coordSystem()',pro:'def set_coordSystem(<span id=pn>newval</span>)',cmt:'<p>Change le syst\xE8me de repr\xE9sentation utilis\xE9 pour les donn\xE9es de positionnement.</p>',par:{newval:'une valeur parmi <tt>Y_COORDSYSTEM_GPS_DMS</tt>, <tt>Y_COORDSYSTEM_GPS_DM</tt> et <tt>Y_COORDSYSTEM_GPS_D</tt>'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Gps']['set_logicalName']={syn:'Modifie le nom logique du GPS.',lib:'gps.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Modifie le nom logique du GPS. Vous pouvez utiliser <tt>yCheckLogicalName()</tt> pour v\xE9rifier si votre param\xE8tre est valide. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du GPS.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27appel se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Gps']['set_userData']={syn:'Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>.',lib:'gps.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',par:{data:'objet quelconque \xE0 m\xE9moriser'}};
+doc['Gps']['set_utcOffset']={syn:'Modifie le nombre de secondes de d\xE9calage entre l\x27heure courante et l\x27heure UTC (time zone).',lib:'gps.set_utcOffset()',pro:'def set_utcOffset(<span id=pn>newval</span>)',cmt:'<p>Modifie le nombre de secondes de d\xE9calage entre l\x27heure courante et l\x27heure UTC (time zone). Le d\xE9callage est automatiquement arrondi au quart d\x27heure le plus proche. Si l\x27heure UTC est connue, l\x27heure courante sera automatiquement adapt\xE9e en fonction du d\xE9calage choisi.</p>',par:{newval:'un entier repr&eacute;sentant le nombre de secondes de d\xE9calage entre l\x27heure courante et l\x27heure UTC (time zone)'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Gps']['unmuteValueCallbacks']={syn:'R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'gps.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Cette fonction annule un pr\xE9c\xE9dent appel \xE0 <tt>muteValueCallbacks()</tt>. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+//--- (end of generated code: Gps)
+//--- (generated code: Latitude)
+doc['Latitude']={'':{syn:'Interface de la fonction Latitude',inc:'from yocto_latitude import *',cmt:'<p>La classe YLatitude permet de lire la latitude sur les capteurs de g\xE9olocalisation Yoctopuce. Elle h\xE9rite de la class YSensor toutes les fonctions de base des capteurs Yoctopuce: lecture de mesures, callbacks, enregistreur de donn\xE9es.</p>'}};
+doc['Latitude']['FindLatitude']={syn:'Permet de retrouver un capteur de latitude d\x27apr\xE8s un identifiant donn\xE9.',lib:'YLatitude.FindLatitude()',pro:'def FindLatitude(<span id=pn>func</span>)',cmt:'<p>Permet de retrouver un capteur de latitude d\x27apr\xE8s un identifiant donn\xE9. L\x27identifiant peut \xEAtre sp\xE9cifi\xE9 sous plusieurs formes:<br> <ul> <li>NomLogiqueFonction</li> <li>NoSerieModule.IdentifiantFonction</li> <li>NoSerieModule.NomLogiqueFonction</li> <li>NomLogiqueModule.IdentifiantMat\xE9riel</li> <li>NomLogiqueModule.NomLogiqueFonction</li> </ul></p><p> Cette fonction n\x27exige pas que le capteur de latitude soit en ligne au moment ou elle est appel\xE9e, l\x27objet retourn\xE9 sera n\xE9anmoins valide. Utiliser la m\xE9thode <tt>YLatitude.isOnline()</tt> pour tester si le capteur de latitude est utilisable \xE0 un moment donn\xE9. En cas d\x27ambigu\xEFt\xE9 lorsqu\x27on fait une recherche par nom logique, aucune erreur ne sera notifi\xE9e: la premi\xE8re instance trouv\xE9e sera renvoy\xE9e. La recherche se fait d\x27abord par nom mat\xE9riel, puis par nom logique.</p>',par:{func:'une cha\xEEne de caract\xE8res qui r\xE9f\xE9rence le capteur de latitude sans ambigu\xEFt\xE9'},ret:'un objet de classe <tt>YLatitude</tt> qui permet ensuite de contr\xF4ler le capteur de latitude.'};
+doc['Latitude']['FirstLatitude']={syn:'Commence l\x27\xE9num\xE9ration des capteurs de latitude accessibles par la librairie.',lib:'YLatitude.FirstLatitude()',pro:'def FirstLatitude()',cmt:'<p>Commence l\x27\xE9num\xE9ration des capteurs de latitude accessibles par la librairie. Utiliser la fonction <tt>YLatitude.nextLatitude()</tt> pour it\xE9rer sur les autres capteurs de latitude.</p>',ret:'un pointeur sur un objet <tt>YLatitude</tt>, correspondant au premier capteur delatitude accessible en ligne, ou <tt>null</tt> si il n\x27y a pas de capteurs de latitude disponibles.'};
+doc['Latitude']['calibrateFromPoints']={syn:'Enregistre des points de correction de mesure, typiquement pour compenser l\x27effet d\x27un bo\xEEtier sur les mesures rendues par le capteur.',lib:'latitude.calibrateFromPoints()',pro:'def calibrateFromPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Enregistre des points de correction de mesure, typiquement pour compenser l\x27effet d\x27un bo\xEEtier sur les mesures rendues par le capteur. Il est possible d\x27enregistrer jusqu\x27\xE0 cinq points de correction. Les points de correction doivent \xEAtre fournis en ordre croissant, et dans la plage valide du capteur. Le module effectue automatiquement une interpolation lin\xE9aire de l\x27erreur entre les points sp\xE9cifi\xE9s. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p><p> Pour plus de plus amples possibilit\xE9s d\x27appliquer une surcalibration aux capteurs, veuillez contacter support@yoctopuce.com.</p>',par:{rawValues:'tableau de nombres flottants, correspondant aux valeurs brutes rendues par le capteur pour les points de correction.',refValues:'tableau de nombres flottants, correspondant aux valeurs corrig\xE9es d\xE9sir\xE9es pour les points de correction.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Latitude']['clearCache']={syn:'Invalide le cache.',lib:'latitude.clearCache()',pro:'def clearCache()',cmt:'<p>Invalide le cache. Invalide le cache des valeurs courantes du capteur de latitude. Force le prochain appel \xE0 une m\xE9thode get_xxx() ou loadxxx() pour charger les les donn\xE9es depuis le module.</p>'};
+doc['Latitude']['describe']={syn:'Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du capteur de latitude au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'latitude.describe()',pro:'def describe()',cmt:'<p>Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du capteur de latitude au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. Plus pr\xE9cis\xE9ment, <tt>TYPE</tt> correspond au type de fonction, <tt>NAME</tt> correspond au nom utils\xE9 lors du premier acc\xE8s a la fonction, <tt>SERIAL</tt> correspond au num\xE9ro de s\xE9rie du module si le module est connect\xE9, ou <tt>\x22unresolved\x22</tt> sinon, et <tt>FUNCTIONID</tt> correspond \xE0 l\x27identifiant mat\xE9riel de la fonction si le module est connect\xE9. Par exemple, La methode va retourner <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> si le module est d\xE9j\xE0 connect\xE9 ou <tt>Relay(BadCustomeName.relay1)=unresolved</tt> si le module n\x27est pas d\xE9j\xE0 connect\xE9. Cette methode ne declenche aucune transaction USB ou TCP et peut donc \xEAtre utilis\xE9 dans un debuggeur.</p>',ret:'une cha\xEEne de caract\xE8res d\xE9crivant le capteur de latitude (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['Latitude']['get_advertisedValue']={syn:'Retourne la valeur courante du capteur de latitude (pas plus de 6 caract\xE8res).',lib:'latitude.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Retourne la valeur courante du capteur de latitude (pas plus de 6 caract\xE8res).</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur courante du capteur de latitude (pas plus de 6 caract\xE8res).',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['Latitude']['get_currentRawValue']={syn:'Retourne la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en deg/1000, sous forme de nombre \xE0 virgule.',lib:'latitude.get_currentRawValue()',pro:'def get_currentRawValue()',cmt:'<p>Retourne la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en deg/1000, sous forme de nombre \xE0 virgule.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en deg/1000, sous forme de nombre \xE0 virgule',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_CURRENTRAWVALUE_INVALID</tt>.'};
+doc['Latitude']['get_currentValue']={syn:'Retourne la valeur actuelle de la latitude, en deg/1000, sous forme de nombre \xE0 virgule.',lib:'latitude.get_currentValue()',pro:'def get_currentValue()',cmt:'<p>Retourne la valeur actuelle de la latitude, en deg/1000, sous forme de nombre \xE0 virgule.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur actuelle de la latitude, en deg/1000, sous forme de nombre \xE0 virgule',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_CURRENTVALUE_INVALID</tt>.'};
+doc['Latitude']['get_errorMessage']={syn:'Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du capteur de latitude.',lib:'latitude.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du capteur de latitude. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'une cha\xEEne de caract\xE8res correspondant au message de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du capteur de latitude.'};
+doc['Latitude']['get_errorType']={syn:'Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du capteur de latitude.',lib:'latitude.get_errorType()',pro:'def get_errorType()',cmt:'<p>Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du capteur de latitude. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'un nombre correspondant au code de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du capteur de latitude.'};
+doc['Latitude']['get_friendlyName']={syn:'Retourne un identifiant global du capteur de latitude au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>.',lib:'latitude.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Retourne un identifiant global du capteur de latitude au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>. Le cha\xEEne retourn\xE9e utilise soit les noms logiques du module et du capteur de latitude si ils sont d\xE9finis, soit respectivement le num\xE9ro de s\xE9rie du module et l\x27identifant mat\xE9riel du capteur de latitude (par exemple: <tt>MyCustomName.relay1</tt>)</p>',ret:'une cha\xEEne de caract\xE8res identifiant le capteur de latitude en utilisant les noms logiques (ex: <tt>MyCustomName.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['Latitude']['get_functionDescriptor']={syn:'Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction.',lib:'latitude.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction. Cet identifiant peut \xEAtre utilis\xE9 pour tester si deux instance de <tt>YFunction</tt> r\xE9f\xE9rencent physiquement la m\xEAme fonction sur le m\xEAme module.</p>',ret:'un identifiant de type <tt>YFUN_DESCR</tt>.',ext:'Si la fonction n\x27a jamais \xE9t\xE9 contact\xE9e, la valeur retourn\xE9e sera <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>'};
+doc['Latitude']['get_functionId']={syn:'Retourne l\x27identifiant mat\xE9riel du capteur de latitude, sans r\xE9f\xE9rence au module.',lib:'latitude.get_functionId()',pro:'def get_functionId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel du capteur de latitude, sans r\xE9f\xE9rence au module. Par example <tt>relay1</tt>.</p>',ret:'une cha\xEEne de caract\xE8res identifiant le capteur de latitude (ex: <tt>relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['Latitude']['get_hardwareId']={syn:'Retourne l\x27identifiant mat\xE9riel unique du capteur de latitude au format <tt>SERIAL.FUNCTIONID</tt>.',lib:'latitude.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel unique du capteur de latitude au format <tt>SERIAL.FUNCTIONID</tt>. L\x27identifiant unique est compos\xE9 du num\xE9ro de s\xE9rie du module et de l\x27identifiant mat\xE9riel du capteur de latitude (par example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'une cha\xEEne de caract\xE8res identifiant le capteur de latitude (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['Latitude']['get_highestValue']={syn:'Retourne la valeur maximale observ\xE9e pour la latitude depuis le d\xE9marrage du module.',lib:'latitude.get_highestValue()',pro:'def get_highestValue()',cmt:'<p>Retourne la valeur maximale observ\xE9e pour la latitude depuis le d\xE9marrage du module.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur maximale observ\xE9e pour la latitude depuis le d\xE9marrage du module',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_HIGHESTVALUE_INVALID</tt>.'};
+doc['Latitude']['get_logFrequency']={syn:'Retourne la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es.',lib:'latitude.get_logFrequency()',pro:'def get_logFrequency()',cmt:'<p>Retourne la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_LOGFREQUENCY_INVALID</tt>.'};
+doc['Latitude']['get_logicalName']={syn:'Retourne le nom logique du capteur de latitude.',lib:'latitude.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Retourne le nom logique du capteur de latitude.</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du capteur de latitude.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['Latitude']['get_lowestValue']={syn:'Retourne la valeur minimale observ\xE9e pour la latitude depuis le d\xE9marrage du module.',lib:'latitude.get_lowestValue()',pro:'def get_lowestValue()',cmt:'<p>Retourne la valeur minimale observ\xE9e pour la latitude depuis le d\xE9marrage du module.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur minimale observ\xE9e pour la latitude depuis le d\xE9marrage du module',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_LOWESTVALUE_INVALID</tt>.'};
+doc['Latitude']['get_module']={syn:'Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction.',lib:'latitude.get_module()',pro:'def get_module()',cmt:'<p>Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction. Si la fonction ne peut \xEAtre trouv\xE9e sur aucun module, l\x27instance de <tt>YModule</tt> retourn\xE9e ne sera pas joignable.</p>',ret:'une instance de <tt>YModule</tt>'};
+doc['Latitude']['get_recordedData']={syn:'Retourne un objet DataSet repr\xE9sentant des mesures de ce capteur pr\xE9c\xE9demment enregistr\xE9es \xE0 l\x27aide du DataLogger, pour l\x27intervalle de temps sp\xE9cifi\xE9.',lib:'latitude.get_recordedData()',pro:'def get_recordedData(<span id=pn>startTime</span>, <span id=pn>endTime</span>)',cmt:'<p>Retourne un objet DataSet repr\xE9sentant des mesures de ce capteur pr\xE9c\xE9demment enregistr\xE9es \xE0 l\x27aide du DataLogger, pour l\x27intervalle de temps sp\xE9cifi\xE9. Veuillez vous r\xE9f\xE9rer \xE0 la documentation de la classe DataSet pour plus plus d\x27informations sur la mani\xE8re d\x27obtenir un aper\xE7u des mesures pour la p\xE9riode, et comment charger progressivement une grande quantit\xE9 de mesures depuis le dataLogger.</p><p> Cette m\xE9thode ne fonctionne que si le module utilise un firmware r\xE9cent, car les objets DataSet ne sont pas support\xE9s par les firmwares ant\xE9rieurs \xE0 la r\xE9vision 13000.</p>',par:{startTime:'le d\xE9but de l\x27intervalle de mesure d\xE9sir\xE9, c\x27est \xE0 dire en nombre de secondes depuis le 1er janvier 1970 UTC. La valeur 0 peut \xEAtre utilis\xE9e pour ne poser aucune limite sur le d\xE9but des mesures.',endTime:'la find de l\x27intercalle de mesure d\xE9sir\xE9, c\x27est \xE0 dire en nombre de secondes depuis le 1er janvier 1970 UTC. La valeur 0 peut \xEAtre utilis\xE9e pour ne poser aucune limite de fin.'},ret:'une instance de YDataSet, dont les m\xE9thodes permettent de d\x27acc\xE9der aux donn\xE9es historiques souhait\xE9es.'};
+doc['Latitude']['get_reportFrequency']={syn:'Retourne la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction.',lib:'latitude.get_reportFrequency()',pro:'def get_reportFrequency()',cmt:'<p>Retourne la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_REPORTFREQUENCY_INVALID</tt>.'};
+doc['Latitude']['get_resolution']={syn:'Retourne la r\xE9solution des valeurs mesur\xE9es.',lib:'latitude.get_resolution()',pro:'def get_resolution()',cmt:'<p>Retourne la r\xE9solution des valeurs mesur\xE9es. La r\xE9solution correspond \xE0 la pr\xE9cision num\xE9rique de la repr\xE9sentation des mesures. Elle n\x27est pas forc\xE9ment identique \xE0 la pr\xE9cision r\xE9elle du capteur.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la r\xE9solution des valeurs mesur\xE9es',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_RESOLUTION_INVALID</tt>.'};
+doc['Latitude']['get_sensorState']={syn:'Retourne le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment.',lib:'latitude.get_sensorState()',pro:'def get_sensorState()',cmt:'<p>Retourne le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment.</p>',ret:'un entier repr&eacute;sentant le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_SENSORSTATE_INVALID</tt>.'};
+doc['Latitude']['get_unit']={syn:'Retourne l\x27unit\xE9 dans laquelle la latitude est exprim\xE9e.',lib:'latitude.get_unit()',pro:'def get_unit()',cmt:'<p>Retourne l\x27unit\xE9 dans laquelle la latitude est exprim\xE9e.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant l\x27unit\xE9 dans laquelle la latitude est exprim\xE9e',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_UNIT_INVALID</tt>.'};
+doc['Latitude']['get_userData']={syn:'Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>.',lib:'latitude.get_userData()',pro:'def get_userData()',cmt:'<p>Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',ret:'l\x27objet stock\xE9 pr\xE9c\xE9demment par l\x27appelant.'};
+doc['Latitude']['isOnline']={syn:'V\xE9rifie si le module h\xE9bergeant le capteur de latitude est joignable, sans d\xE9clencher d\x27erreur.',lib:'latitude.isOnline()',pro:'def isOnline()',cmt:'<p>V\xE9rifie si le module h\xE9bergeant le capteur de latitude est joignable, sans d\xE9clencher d\x27erreur. Si les valeurs des attributs en cache du capteur de latitude sont valides au moment de l\x27appel, le module est consid\xE9r\xE9 joignable. Cette fonction ne cause en aucun cas d\x27exception, quelle que soit l\x27erreur qui pourrait se produire lors de la v\xE9rification de joignabilit\xE9.</p>',ret:'<tt>true</tt> si le capteur de latitude est joignable, <tt>false</tt> sinon'};
+doc['Latitude']['load']={syn:'Met en cache les valeurs courantes du capteur de latitude, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e.',lib:'latitude.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Met en cache les valeurs courantes du capteur de latitude, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e. Par d\xE9faut, lorsqu\x27on acc\xE8de \xE0 un module, tous les attributs des fonctions du module sont automatiquement mises en cache pour la dur\xE9e standard (5 ms). Cette m\xE9thode peut \xEAtre utilis\xE9e pour marquer occasionellement les donn\xE9es cach\xE9es comme valides pour une plus longue p\xE9riode, par exemple dans le but de r\xE9duire le trafic r\xE9seau.</p>',par:{msValidity:'un entier correspondant \xE0 la dur\xE9e de validit\xE9 attribu\xE9e aux les param\xE8tres charg\xE9s, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Latitude']['loadAttribute']={syn:'Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.',lib:'latitude.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un cha\xEEne vide.'};
+doc['Latitude']['loadCalibrationPoints']={syn:'R\xE9cup\xE8re les points de correction de mesure pr\xE9c\xE9demment enregistr\xE9s \xE0 l\x27aide de la m\xE9thode <tt>calibrateFromPoints</tt>.',lib:'latitude.loadCalibrationPoints()',pro:'def loadCalibrationPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>R\xE9cup\xE8re les points de correction de mesure pr\xE9c\xE9demment enregistr\xE9s \xE0 l\x27aide de la m\xE9thode <tt>calibrateFromPoints</tt>.</p>',par:{rawValues:'tableau de nombres flottants, qui sera rempli par la fonction avec les valeurs brutes des points de correction.',refValues:'tableau de nombres flottants, qui sera rempli par la fonction avec les valeurs d\xE9sir\xE9es des points de correction.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Latitude']['muteValueCallbacks']={syn:'D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'latitude.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Vous pouvez utiliser cette fonction pour \xE9conomiser la bande passante et le CPU sur les machines de faible puissance, ou pour \xE9viter le d\xE9clanchement de callbacks HTTP. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Latitude']['nextLatitude']={syn:'Continue l\x27\xE9num\xE9ration des capteurs de latitude commenc\xE9e \xE0 l\x27aide de <tt>yFirstLatitude()</tt>.',lib:'latitude.nextLatitude()',pro:'def nextLatitude()',cmt:'<p>Continue l\x27\xE9num\xE9ration des capteurs de latitude commenc\xE9e \xE0 l\x27aide de <tt>yFirstLatitude()</tt>.</p>',ret:'un pointeur sur un objet <tt>YLatitude</tt> accessible en ligne, ou <tt>null</tt> lorsque l\x27\xE9num\xE9ration est termin\xE9e.'};
+doc['Latitude']['registerTimedReportCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque notification p\xE9riodique.',lib:'latitude.registerTimedReportCallback()',pro:'def registerTimedReportCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque notification p\xE9riodique. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callbacks peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callbacks ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et un objet YMeasure d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['Latitude']['registerValueCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e.',lib:'latitude.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callback peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callback ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et la cha\xEEne de caract\xE8re d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['Latitude']['set_highestValue']={syn:'Modifie la m\xE9moire de valeur maximale observ\xE9e.',lib:'latitude.set_highestValue()',pro:'def set_highestValue(<span id=pn>newval</span>)',cmt:'<p>Modifie la m\xE9moire de valeur maximale observ\xE9e.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la m\xE9moire de valeur maximale observ\xE9e'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Latitude']['set_logFrequency']={syn:'Modifie la fr\xE9quence d\x27enregistrement des mesures dans le datalogger.',lib:'latitude.set_logFrequency()',pro:'def set_logFrequency(<span id=pn>newval</span>)',cmt:'<p>Modifie la fr\xE9quence d\x27enregistrement des mesures dans le datalogger. La fr\xE9quence peut \xEAtre sp\xE9cifi\xE9e en mesures par secondes, en mesures par minutes (par exemple \x2215/m\x22) ou en mesures par heure (par exemple \x224/h\x22). Pour d\xE9sactiver l\x27enregistrement des mesures de cette fonction, utilisez la valeur \x22OFF\x22.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence d\x27enregistrement des mesures dans le datalogger'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Latitude']['set_logicalName']={syn:'Modifie le nom logique du capteur de latitude.',lib:'latitude.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Modifie le nom logique du capteur de latitude. Vous pouvez utiliser <tt>yCheckLogicalName()</tt> pour v\xE9rifier si votre param\xE8tre est valide. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du capteur de latitude.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27appel se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Latitude']['set_lowestValue']={syn:'Modifie la m\xE9moire de valeur minimale observ\xE9e.',lib:'latitude.set_lowestValue()',pro:'def set_lowestValue(<span id=pn>newval</span>)',cmt:'<p>Modifie la m\xE9moire de valeur minimale observ\xE9e.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la m\xE9moire de valeur minimale observ\xE9e'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Latitude']['set_reportFrequency']={syn:'Modifie la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es.',lib:'latitude.set_reportFrequency()',pro:'def set_reportFrequency(<span id=pn>newval</span>)',cmt:'<p>Modifie la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es. La fr\xE9quence peut \xEAtre sp\xE9cifi\xE9e en mesures par secondes, en mesures par minutes (par exemple \x2215/m\x22) ou en mesures par heure (par exemple \x224/h\x22). Pour d\xE9sactiver les notifications p\xE9riodiques pour cette fonction, utilisez la valeur \x22OFF\x22.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Latitude']['set_resolution']={syn:'Modifie la r\xE9solution des valeurs physique mesur\xE9es.',lib:'latitude.set_resolution()',pro:'def set_resolution(<span id=pn>newval</span>)',cmt:'<p>Modifie la r\xE9solution des valeurs physique mesur\xE9es. La r\xE9solution correspond \xE0 la pr\xE9cision de l\x27affichage des mesures. Elle ne change pas la pr\xE9cision de la mesure elle-m\xEAme.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la r\xE9solution des valeurs physique mesur\xE9es'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Latitude']['set_userData']={syn:'Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>.',lib:'latitude.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',par:{data:'objet quelconque \xE0 m\xE9moriser'}};
+doc['Latitude']['startDataLogger']={syn:'D\xE9marre l\x27enregistreur de donn\xE9es du module.',lib:'latitude.startDataLogger()',pro:'def startDataLogger()',cmt:'<p>D\xE9marre l\x27enregistreur de donn\xE9es du module. Attention, l\x27enregistreur ne sauvera les mesures de ce capteur que si la fr\xE9quence d\x27enregistrement (logFrequency) n\x27est pas sur \x22OFF\x22.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.'};
+doc['Latitude']['stopDataLogger']={syn:'Arr\xEAte l\x27enregistreur de donn\xE9es du module.',lib:'latitude.stopDataLogger()',pro:'def stopDataLogger()',cmt:'<p>Arr\xEAte l\x27enregistreur de donn\xE9es du module.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.'};
+doc['Latitude']['unmuteValueCallbacks']={syn:'R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'latitude.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Cette fonction annule un pr\xE9c\xE9dent appel \xE0 <tt>muteValueCallbacks()</tt>. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+//--- (end of generated code: Latitude)
+//--- (generated code: Longitude)
+doc['Longitude']={'':{syn:'Interface de la fonction Longitude',inc:'from yocto_longitude import *',cmt:'<p>La classe YLongitude permet de lire la longitude sur les capteurs de g\xE9olocalisation Yoctopuce. Elle h\xE9rite de la class YSensor toutes les fonctions de base des capteurs Yoctopuce: lecture de mesures, callbacks, enregistreur de donn\xE9es.</p>'}};
+doc['Longitude']['FindLongitude']={syn:'Permet de retrouver un capteur de longitude d\x27apr\xE8s un identifiant donn\xE9.',lib:'YLongitude.FindLongitude()',pro:'def FindLongitude(<span id=pn>func</span>)',cmt:'<p>Permet de retrouver un capteur de longitude d\x27apr\xE8s un identifiant donn\xE9. L\x27identifiant peut \xEAtre sp\xE9cifi\xE9 sous plusieurs formes:<br> <ul> <li>NomLogiqueFonction</li> <li>NoSerieModule.IdentifiantFonction</li> <li>NoSerieModule.NomLogiqueFonction</li> <li>NomLogiqueModule.IdentifiantMat\xE9riel</li> <li>NomLogiqueModule.NomLogiqueFonction</li> </ul></p><p> Cette fonction n\x27exige pas que le capteur de longitude soit en ligne au moment ou elle est appel\xE9e, l\x27objet retourn\xE9 sera n\xE9anmoins valide. Utiliser la m\xE9thode <tt>YLongitude.isOnline()</tt> pour tester si le capteur de longitude est utilisable \xE0 un moment donn\xE9. En cas d\x27ambigu\xEFt\xE9 lorsqu\x27on fait une recherche par nom logique, aucune erreur ne sera notifi\xE9e: la premi\xE8re instance trouv\xE9e sera renvoy\xE9e. La recherche se fait d\x27abord par nom mat\xE9riel, puis par nom logique.</p>',par:{func:'une cha\xEEne de caract\xE8res qui r\xE9f\xE9rence le capteur de longitude sans ambigu\xEFt\xE9'},ret:'un objet de classe <tt>YLongitude</tt> qui permet ensuite de contr\xF4ler le capteur de longitude.'};
+doc['Longitude']['FirstLongitude']={syn:'Commence l\x27\xE9num\xE9ration des capteurs de longitude accessibles par la librairie.',lib:'YLongitude.FirstLongitude()',pro:'def FirstLongitude()',cmt:'<p>Commence l\x27\xE9num\xE9ration des capteurs de longitude accessibles par la librairie. Utiliser la fonction <tt>YLongitude.nextLongitude()</tt> pour it\xE9rer sur les autres capteurs de longitude.</p>',ret:'un pointeur sur un objet <tt>YLongitude</tt>, correspondant au premier capteur delongitude accessible en ligne, ou <tt>null</tt> si il n\x27y a pas de capteurs de longitude disponibles.'};
+doc['Longitude']['calibrateFromPoints']={syn:'Enregistre des points de correction de mesure, typiquement pour compenser l\x27effet d\x27un bo\xEEtier sur les mesures rendues par le capteur.',lib:'longitude.calibrateFromPoints()',pro:'def calibrateFromPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Enregistre des points de correction de mesure, typiquement pour compenser l\x27effet d\x27un bo\xEEtier sur les mesures rendues par le capteur. Il est possible d\x27enregistrer jusqu\x27\xE0 cinq points de correction. Les points de correction doivent \xEAtre fournis en ordre croissant, et dans la plage valide du capteur. Le module effectue automatiquement une interpolation lin\xE9aire de l\x27erreur entre les points sp\xE9cifi\xE9s. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p><p> Pour plus de plus amples possibilit\xE9s d\x27appliquer une surcalibration aux capteurs, veuillez contacter support@yoctopuce.com.</p>',par:{rawValues:'tableau de nombres flottants, correspondant aux valeurs brutes rendues par le capteur pour les points de correction.',refValues:'tableau de nombres flottants, correspondant aux valeurs corrig\xE9es d\xE9sir\xE9es pour les points de correction.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Longitude']['clearCache']={syn:'Invalide le cache.',lib:'longitude.clearCache()',pro:'def clearCache()',cmt:'<p>Invalide le cache. Invalide le cache des valeurs courantes du capteur de longitude. Force le prochain appel \xE0 une m\xE9thode get_xxx() ou loadxxx() pour charger les les donn\xE9es depuis le module.</p>'};
+doc['Longitude']['describe']={syn:'Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du capteur de longitude au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'longitude.describe()',pro:'def describe()',cmt:'<p>Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du capteur de longitude au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. Plus pr\xE9cis\xE9ment, <tt>TYPE</tt> correspond au type de fonction, <tt>NAME</tt> correspond au nom utils\xE9 lors du premier acc\xE8s a la fonction, <tt>SERIAL</tt> correspond au num\xE9ro de s\xE9rie du module si le module est connect\xE9, ou <tt>\x22unresolved\x22</tt> sinon, et <tt>FUNCTIONID</tt> correspond \xE0 l\x27identifiant mat\xE9riel de la fonction si le module est connect\xE9. Par exemple, La methode va retourner <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> si le module est d\xE9j\xE0 connect\xE9 ou <tt>Relay(BadCustomeName.relay1)=unresolved</tt> si le module n\x27est pas d\xE9j\xE0 connect\xE9. Cette methode ne declenche aucune transaction USB ou TCP et peut donc \xEAtre utilis\xE9 dans un debuggeur.</p>',ret:'une cha\xEEne de caract\xE8res d\xE9crivant le capteur de longitude (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['Longitude']['get_advertisedValue']={syn:'Retourne la valeur courante du capteur de longitude (pas plus de 6 caract\xE8res).',lib:'longitude.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Retourne la valeur courante du capteur de longitude (pas plus de 6 caract\xE8res).</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur courante du capteur de longitude (pas plus de 6 caract\xE8res).',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['Longitude']['get_currentRawValue']={syn:'Retourne la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en deg/1000, sous forme de nombre \xE0 virgule.',lib:'longitude.get_currentRawValue()',pro:'def get_currentRawValue()',cmt:'<p>Retourne la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en deg/1000, sous forme de nombre \xE0 virgule.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en deg/1000, sous forme de nombre \xE0 virgule',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_CURRENTRAWVALUE_INVALID</tt>.'};
+doc['Longitude']['get_currentValue']={syn:'Retourne la valeur actuelle de la longitude, en deg/1000, sous forme de nombre \xE0 virgule.',lib:'longitude.get_currentValue()',pro:'def get_currentValue()',cmt:'<p>Retourne la valeur actuelle de la longitude, en deg/1000, sous forme de nombre \xE0 virgule.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur actuelle de la longitude, en deg/1000, sous forme de nombre \xE0 virgule',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_CURRENTVALUE_INVALID</tt>.'};
+doc['Longitude']['get_errorMessage']={syn:'Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du capteur de longitude.',lib:'longitude.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du capteur de longitude. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'une cha\xEEne de caract\xE8res correspondant au message de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du capteur de longitude.'};
+doc['Longitude']['get_errorType']={syn:'Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du capteur de longitude.',lib:'longitude.get_errorType()',pro:'def get_errorType()',cmt:'<p>Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du capteur de longitude. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'un nombre correspondant au code de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du capteur de longitude.'};
+doc['Longitude']['get_friendlyName']={syn:'Retourne un identifiant global du capteur de longitude au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>.',lib:'longitude.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Retourne un identifiant global du capteur de longitude au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>. Le cha\xEEne retourn\xE9e utilise soit les noms logiques du module et du capteur de longitude si ils sont d\xE9finis, soit respectivement le num\xE9ro de s\xE9rie du module et l\x27identifant mat\xE9riel du capteur de longitude (par exemple: <tt>MyCustomName.relay1</tt>)</p>',ret:'une cha\xEEne de caract\xE8res identifiant le capteur de longitude en utilisant les noms logiques (ex: <tt>MyCustomName.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['Longitude']['get_functionDescriptor']={syn:'Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction.',lib:'longitude.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction. Cet identifiant peut \xEAtre utilis\xE9 pour tester si deux instance de <tt>YFunction</tt> r\xE9f\xE9rencent physiquement la m\xEAme fonction sur le m\xEAme module.</p>',ret:'un identifiant de type <tt>YFUN_DESCR</tt>.',ext:'Si la fonction n\x27a jamais \xE9t\xE9 contact\xE9e, la valeur retourn\xE9e sera <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>'};
+doc['Longitude']['get_functionId']={syn:'Retourne l\x27identifiant mat\xE9riel du capteur de longitude, sans r\xE9f\xE9rence au module.',lib:'longitude.get_functionId()',pro:'def get_functionId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel du capteur de longitude, sans r\xE9f\xE9rence au module. Par example <tt>relay1</tt>.</p>',ret:'une cha\xEEne de caract\xE8res identifiant le capteur de longitude (ex: <tt>relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['Longitude']['get_hardwareId']={syn:'Retourne l\x27identifiant mat\xE9riel unique du capteur de longitude au format <tt>SERIAL.FUNCTIONID</tt>.',lib:'longitude.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel unique du capteur de longitude au format <tt>SERIAL.FUNCTIONID</tt>. L\x27identifiant unique est compos\xE9 du num\xE9ro de s\xE9rie du module et de l\x27identifiant mat\xE9riel du capteur de longitude (par example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'une cha\xEEne de caract\xE8res identifiant le capteur de longitude (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['Longitude']['get_highestValue']={syn:'Retourne la valeur maximale observ\xE9e pour la longitude depuis le d\xE9marrage du module.',lib:'longitude.get_highestValue()',pro:'def get_highestValue()',cmt:'<p>Retourne la valeur maximale observ\xE9e pour la longitude depuis le d\xE9marrage du module.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur maximale observ\xE9e pour la longitude depuis le d\xE9marrage du module',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_HIGHESTVALUE_INVALID</tt>.'};
+doc['Longitude']['get_logFrequency']={syn:'Retourne la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es.',lib:'longitude.get_logFrequency()',pro:'def get_logFrequency()',cmt:'<p>Retourne la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_LOGFREQUENCY_INVALID</tt>.'};
+doc['Longitude']['get_logicalName']={syn:'Retourne le nom logique du capteur de longitude.',lib:'longitude.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Retourne le nom logique du capteur de longitude.</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du capteur de longitude.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['Longitude']['get_lowestValue']={syn:'Retourne la valeur minimale observ\xE9e pour la longitude depuis le d\xE9marrage du module.',lib:'longitude.get_lowestValue()',pro:'def get_lowestValue()',cmt:'<p>Retourne la valeur minimale observ\xE9e pour la longitude depuis le d\xE9marrage du module.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur minimale observ\xE9e pour la longitude depuis le d\xE9marrage du module',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_LOWESTVALUE_INVALID</tt>.'};
+doc['Longitude']['get_module']={syn:'Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction.',lib:'longitude.get_module()',pro:'def get_module()',cmt:'<p>Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction. Si la fonction ne peut \xEAtre trouv\xE9e sur aucun module, l\x27instance de <tt>YModule</tt> retourn\xE9e ne sera pas joignable.</p>',ret:'une instance de <tt>YModule</tt>'};
+doc['Longitude']['get_recordedData']={syn:'Retourne un objet DataSet repr\xE9sentant des mesures de ce capteur pr\xE9c\xE9demment enregistr\xE9es \xE0 l\x27aide du DataLogger, pour l\x27intervalle de temps sp\xE9cifi\xE9.',lib:'longitude.get_recordedData()',pro:'def get_recordedData(<span id=pn>startTime</span>, <span id=pn>endTime</span>)',cmt:'<p>Retourne un objet DataSet repr\xE9sentant des mesures de ce capteur pr\xE9c\xE9demment enregistr\xE9es \xE0 l\x27aide du DataLogger, pour l\x27intervalle de temps sp\xE9cifi\xE9. Veuillez vous r\xE9f\xE9rer \xE0 la documentation de la classe DataSet pour plus plus d\x27informations sur la mani\xE8re d\x27obtenir un aper\xE7u des mesures pour la p\xE9riode, et comment charger progressivement une grande quantit\xE9 de mesures depuis le dataLogger.</p><p> Cette m\xE9thode ne fonctionne que si le module utilise un firmware r\xE9cent, car les objets DataSet ne sont pas support\xE9s par les firmwares ant\xE9rieurs \xE0 la r\xE9vision 13000.</p>',par:{startTime:'le d\xE9but de l\x27intervalle de mesure d\xE9sir\xE9, c\x27est \xE0 dire en nombre de secondes depuis le 1er janvier 1970 UTC. La valeur 0 peut \xEAtre utilis\xE9e pour ne poser aucune limite sur le d\xE9but des mesures.',endTime:'la find de l\x27intercalle de mesure d\xE9sir\xE9, c\x27est \xE0 dire en nombre de secondes depuis le 1er janvier 1970 UTC. La valeur 0 peut \xEAtre utilis\xE9e pour ne poser aucune limite de fin.'},ret:'une instance de YDataSet, dont les m\xE9thodes permettent de d\x27acc\xE9der aux donn\xE9es historiques souhait\xE9es.'};
+doc['Longitude']['get_reportFrequency']={syn:'Retourne la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction.',lib:'longitude.get_reportFrequency()',pro:'def get_reportFrequency()',cmt:'<p>Retourne la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_REPORTFREQUENCY_INVALID</tt>.'};
+doc['Longitude']['get_resolution']={syn:'Retourne la r\xE9solution des valeurs mesur\xE9es.',lib:'longitude.get_resolution()',pro:'def get_resolution()',cmt:'<p>Retourne la r\xE9solution des valeurs mesur\xE9es. La r\xE9solution correspond \xE0 la pr\xE9cision num\xE9rique de la repr\xE9sentation des mesures. Elle n\x27est pas forc\xE9ment identique \xE0 la pr\xE9cision r\xE9elle du capteur.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la r\xE9solution des valeurs mesur\xE9es',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_RESOLUTION_INVALID</tt>.'};
+doc['Longitude']['get_sensorState']={syn:'Retourne le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment.',lib:'longitude.get_sensorState()',pro:'def get_sensorState()',cmt:'<p>Retourne le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment.</p>',ret:'un entier repr&eacute;sentant le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_SENSORSTATE_INVALID</tt>.'};
+doc['Longitude']['get_unit']={syn:'Retourne l\x27unit\xE9 dans laquelle la longitude est exprim\xE9e.',lib:'longitude.get_unit()',pro:'def get_unit()',cmt:'<p>Retourne l\x27unit\xE9 dans laquelle la longitude est exprim\xE9e.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant l\x27unit\xE9 dans laquelle la longitude est exprim\xE9e',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_UNIT_INVALID</tt>.'};
+doc['Longitude']['get_userData']={syn:'Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>.',lib:'longitude.get_userData()',pro:'def get_userData()',cmt:'<p>Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',ret:'l\x27objet stock\xE9 pr\xE9c\xE9demment par l\x27appelant.'};
+doc['Longitude']['isOnline']={syn:'V\xE9rifie si le module h\xE9bergeant le capteur de longitude est joignable, sans d\xE9clencher d\x27erreur.',lib:'longitude.isOnline()',pro:'def isOnline()',cmt:'<p>V\xE9rifie si le module h\xE9bergeant le capteur de longitude est joignable, sans d\xE9clencher d\x27erreur. Si les valeurs des attributs en cache du capteur de longitude sont valides au moment de l\x27appel, le module est consid\xE9r\xE9 joignable. Cette fonction ne cause en aucun cas d\x27exception, quelle que soit l\x27erreur qui pourrait se produire lors de la v\xE9rification de joignabilit\xE9.</p>',ret:'<tt>true</tt> si le capteur de longitude est joignable, <tt>false</tt> sinon'};
+doc['Longitude']['load']={syn:'Met en cache les valeurs courantes du capteur de longitude, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e.',lib:'longitude.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Met en cache les valeurs courantes du capteur de longitude, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e. Par d\xE9faut, lorsqu\x27on acc\xE8de \xE0 un module, tous les attributs des fonctions du module sont automatiquement mises en cache pour la dur\xE9e standard (5 ms). Cette m\xE9thode peut \xEAtre utilis\xE9e pour marquer occasionellement les donn\xE9es cach\xE9es comme valides pour une plus longue p\xE9riode, par exemple dans le but de r\xE9duire le trafic r\xE9seau.</p>',par:{msValidity:'un entier correspondant \xE0 la dur\xE9e de validit\xE9 attribu\xE9e aux les param\xE8tres charg\xE9s, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Longitude']['loadAttribute']={syn:'Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.',lib:'longitude.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un cha\xEEne vide.'};
+doc['Longitude']['loadCalibrationPoints']={syn:'R\xE9cup\xE8re les points de correction de mesure pr\xE9c\xE9demment enregistr\xE9s \xE0 l\x27aide de la m\xE9thode <tt>calibrateFromPoints</tt>.',lib:'longitude.loadCalibrationPoints()',pro:'def loadCalibrationPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>R\xE9cup\xE8re les points de correction de mesure pr\xE9c\xE9demment enregistr\xE9s \xE0 l\x27aide de la m\xE9thode <tt>calibrateFromPoints</tt>.</p>',par:{rawValues:'tableau de nombres flottants, qui sera rempli par la fonction avec les valeurs brutes des points de correction.',refValues:'tableau de nombres flottants, qui sera rempli par la fonction avec les valeurs d\xE9sir\xE9es des points de correction.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Longitude']['muteValueCallbacks']={syn:'D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'longitude.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Vous pouvez utiliser cette fonction pour \xE9conomiser la bande passante et le CPU sur les machines de faible puissance, ou pour \xE9viter le d\xE9clanchement de callbacks HTTP. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Longitude']['nextLongitude']={syn:'Continue l\x27\xE9num\xE9ration des capteurs de longitude commenc\xE9e \xE0 l\x27aide de <tt>yFirstLongitude()</tt>.',lib:'longitude.nextLongitude()',pro:'def nextLongitude()',cmt:'<p>Continue l\x27\xE9num\xE9ration des capteurs de longitude commenc\xE9e \xE0 l\x27aide de <tt>yFirstLongitude()</tt>.</p>',ret:'un pointeur sur un objet <tt>YLongitude</tt> accessible en ligne, ou <tt>null</tt> lorsque l\x27\xE9num\xE9ration est termin\xE9e.'};
+doc['Longitude']['registerTimedReportCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque notification p\xE9riodique.',lib:'longitude.registerTimedReportCallback()',pro:'def registerTimedReportCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque notification p\xE9riodique. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callbacks peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callbacks ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et un objet YMeasure d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['Longitude']['registerValueCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e.',lib:'longitude.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callback peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callback ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et la cha\xEEne de caract\xE8re d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['Longitude']['set_highestValue']={syn:'Modifie la m\xE9moire de valeur maximale observ\xE9e.',lib:'longitude.set_highestValue()',pro:'def set_highestValue(<span id=pn>newval</span>)',cmt:'<p>Modifie la m\xE9moire de valeur maximale observ\xE9e.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la m\xE9moire de valeur maximale observ\xE9e'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Longitude']['set_logFrequency']={syn:'Modifie la fr\xE9quence d\x27enregistrement des mesures dans le datalogger.',lib:'longitude.set_logFrequency()',pro:'def set_logFrequency(<span id=pn>newval</span>)',cmt:'<p>Modifie la fr\xE9quence d\x27enregistrement des mesures dans le datalogger. La fr\xE9quence peut \xEAtre sp\xE9cifi\xE9e en mesures par secondes, en mesures par minutes (par exemple \x2215/m\x22) ou en mesures par heure (par exemple \x224/h\x22). Pour d\xE9sactiver l\x27enregistrement des mesures de cette fonction, utilisez la valeur \x22OFF\x22.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence d\x27enregistrement des mesures dans le datalogger'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Longitude']['set_logicalName']={syn:'Modifie le nom logique du capteur de longitude.',lib:'longitude.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Modifie le nom logique du capteur de longitude. Vous pouvez utiliser <tt>yCheckLogicalName()</tt> pour v\xE9rifier si votre param\xE8tre est valide. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du capteur de longitude.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27appel se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Longitude']['set_lowestValue']={syn:'Modifie la m\xE9moire de valeur minimale observ\xE9e.',lib:'longitude.set_lowestValue()',pro:'def set_lowestValue(<span id=pn>newval</span>)',cmt:'<p>Modifie la m\xE9moire de valeur minimale observ\xE9e.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la m\xE9moire de valeur minimale observ\xE9e'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Longitude']['set_reportFrequency']={syn:'Modifie la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es.',lib:'longitude.set_reportFrequency()',pro:'def set_reportFrequency(<span id=pn>newval</span>)',cmt:'<p>Modifie la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es. La fr\xE9quence peut \xEAtre sp\xE9cifi\xE9e en mesures par secondes, en mesures par minutes (par exemple \x2215/m\x22) ou en mesures par heure (par exemple \x224/h\x22). Pour d\xE9sactiver les notifications p\xE9riodiques pour cette fonction, utilisez la valeur \x22OFF\x22.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Longitude']['set_resolution']={syn:'Modifie la r\xE9solution des valeurs physique mesur\xE9es.',lib:'longitude.set_resolution()',pro:'def set_resolution(<span id=pn>newval</span>)',cmt:'<p>Modifie la r\xE9solution des valeurs physique mesur\xE9es. La r\xE9solution correspond \xE0 la pr\xE9cision de l\x27affichage des mesures. Elle ne change pas la pr\xE9cision de la mesure elle-m\xEAme.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la r\xE9solution des valeurs physique mesur\xE9es'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Longitude']['set_userData']={syn:'Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>.',lib:'longitude.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',par:{data:'objet quelconque \xE0 m\xE9moriser'}};
+doc['Longitude']['startDataLogger']={syn:'D\xE9marre l\x27enregistreur de donn\xE9es du module.',lib:'longitude.startDataLogger()',pro:'def startDataLogger()',cmt:'<p>D\xE9marre l\x27enregistreur de donn\xE9es du module. Attention, l\x27enregistreur ne sauvera les mesures de ce capteur que si la fr\xE9quence d\x27enregistrement (logFrequency) n\x27est pas sur \x22OFF\x22.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.'};
+doc['Longitude']['stopDataLogger']={syn:'Arr\xEAte l\x27enregistreur de donn\xE9es du module.',lib:'longitude.stopDataLogger()',pro:'def stopDataLogger()',cmt:'<p>Arr\xEAte l\x27enregistreur de donn\xE9es du module.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.'};
+doc['Longitude']['unmuteValueCallbacks']={syn:'R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'longitude.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Cette fonction annule un pr\xE9c\xE9dent appel \xE0 <tt>muteValueCallbacks()</tt>. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+//--- (end of generated code: Longitude)
+//--- (generated code: GroundSpeed)
+doc['GroundSpeed']={'':{syn:'Interface de la fonction GroundSpeed',inc:'from yocto_groundspeed import *',cmt:'<p>La classe YGroundSpeed permet de lire la vitesse sol sur les capteurs de g\xE9olocalisation Yoctopuce. Elle h\xE9rite de la class YSensor toutes les fonctions de base des capteurs Yoctopuce: lecture de mesures, callbacks, enregistreur de donn\xE9es.</p>'}};
+doc['GroundSpeed']['FindGroundSpeed']={syn:'Permet de retrouver un capteur de vitesse/sol d\x27apr\xE8s un identifiant donn\xE9.',lib:'YGroundSpeed.FindGroundSpeed()',pro:'def FindGroundSpeed(<span id=pn>func</span>)',cmt:'<p>Permet de retrouver un capteur de vitesse/sol d\x27apr\xE8s un identifiant donn\xE9. L\x27identifiant peut \xEAtre sp\xE9cifi\xE9 sous plusieurs formes:<br> <ul> <li>NomLogiqueFonction</li> <li>NoSerieModule.IdentifiantFonction</li> <li>NoSerieModule.NomLogiqueFonction</li> <li>NomLogiqueModule.IdentifiantMat\xE9riel</li> <li>NomLogiqueModule.NomLogiqueFonction</li> </ul></p><p> Cette fonction n\x27exige pas que le capteur de vitesse/sol soit en ligne au moment ou elle est appel\xE9e, l\x27objet retourn\xE9 sera n\xE9anmoins valide. Utiliser la m\xE9thode <tt>YGroundSpeed.isOnline()</tt> pour tester si le capteur de vitesse/sol est utilisable \xE0 un moment donn\xE9. En cas d\x27ambigu\xEFt\xE9 lorsqu\x27on fait une recherche par nom logique, aucune erreur ne sera notifi\xE9e: la premi\xE8re instance trouv\xE9e sera renvoy\xE9e. La recherche se fait d\x27abord par nom mat\xE9riel, puis par nom logique.</p>',par:{func:'une cha\xEEne de caract\xE8res qui r\xE9f\xE9rence le capteur de vitesse/sol sans ambigu\xEFt\xE9'},ret:'un objet de classe <tt>YGroundSpeed</tt> qui permet ensuite de contr\xF4ler le capteur de vitesse/sol.'};
+doc['GroundSpeed']['FirstGroundSpeed']={syn:'Commence l\x27\xE9num\xE9ration des capteurs de vitesse/sol accessibles par la librairie.',lib:'YGroundSpeed.FirstGroundSpeed()',pro:'def FirstGroundSpeed()',cmt:'<p>Commence l\x27\xE9num\xE9ration des capteurs de vitesse/sol accessibles par la librairie. Utiliser la fonction <tt>YGroundSpeed.nextGroundSpeed()</tt> pour it\xE9rer sur les autres capteurs de vitesse/sol.</p>',ret:'un pointeur sur un objet <tt>YGroundSpeed</tt>, correspondant au premier capteur vitesse/sol accessible en ligne, ou <tt>null</tt> si il n\x27y a pas de capteurs de vitesse/sol disponibles.'};
+doc['GroundSpeed']['calibrateFromPoints']={syn:'Enregistre des points de correction de mesure, typiquement pour compenser l\x27effet d\x27un bo\xEEtier sur les mesures rendues par le capteur.',lib:'groundspeed.calibrateFromPoints()',pro:'def calibrateFromPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Enregistre des points de correction de mesure, typiquement pour compenser l\x27effet d\x27un bo\xEEtier sur les mesures rendues par le capteur. Il est possible d\x27enregistrer jusqu\x27\xE0 cinq points de correction. Les points de correction doivent \xEAtre fournis en ordre croissant, et dans la plage valide du capteur. Le module effectue automatiquement une interpolation lin\xE9aire de l\x27erreur entre les points sp\xE9cifi\xE9s. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p><p> Pour plus de plus amples possibilit\xE9s d\x27appliquer une surcalibration aux capteurs, veuillez contacter support@yoctopuce.com.</p>',par:{rawValues:'tableau de nombres flottants, correspondant aux valeurs brutes rendues par le capteur pour les points de correction.',refValues:'tableau de nombres flottants, correspondant aux valeurs corrig\xE9es d\xE9sir\xE9es pour les points de correction.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['GroundSpeed']['clearCache']={syn:'Invalide le cache.',lib:'groundspeed.clearCache()',pro:'def clearCache()',cmt:'<p>Invalide le cache. Invalide le cache des valeurs courantes du capteur de vitesse/sol. Force le prochain appel \xE0 une m\xE9thode get_xxx() ou loadxxx() pour charger les les donn\xE9es depuis le module.</p>'};
+doc['GroundSpeed']['describe']={syn:'Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du capteur de vitesse/sol au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'groundspeed.describe()',pro:'def describe()',cmt:'<p>Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du capteur de vitesse/sol au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. Plus pr\xE9cis\xE9ment, <tt>TYPE</tt> correspond au type de fonction, <tt>NAME</tt> correspond au nom utils\xE9 lors du premier acc\xE8s a la fonction, <tt>SERIAL</tt> correspond au num\xE9ro de s\xE9rie du module si le module est connect\xE9, ou <tt>\x22unresolved\x22</tt> sinon, et <tt>FUNCTIONID</tt> correspond \xE0 l\x27identifiant mat\xE9riel de la fonction si le module est connect\xE9. Par exemple, La methode va retourner <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> si le module est d\xE9j\xE0 connect\xE9 ou <tt>Relay(BadCustomeName.relay1)=unresolved</tt> si le module n\x27est pas d\xE9j\xE0 connect\xE9. Cette methode ne declenche aucune transaction USB ou TCP et peut donc \xEAtre utilis\xE9 dans un debuggeur.</p>',ret:'une cha\xEEne de caract\xE8res d\xE9crivant le capteur de vitesse/sol (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['GroundSpeed']['get_advertisedValue']={syn:'Retourne la valeur courante du capteur de vitesse/sol (pas plus de 6 caract\xE8res).',lib:'groundspeed.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Retourne la valeur courante du capteur de vitesse/sol (pas plus de 6 caract\xE8res).</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur courante du capteur de vitesse/sol (pas plus de 6 caract\xE8res).',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['GroundSpeed']['get_currentRawValue']={syn:'Retourne la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en km/h, sous forme de nombre \xE0 virgule.',lib:'groundspeed.get_currentRawValue()',pro:'def get_currentRawValue()',cmt:'<p>Retourne la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en km/h, sous forme de nombre \xE0 virgule.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en km/h, sous forme de nombre \xE0 virgule',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_CURRENTRAWVALUE_INVALID</tt>.'};
+doc['GroundSpeed']['get_currentValue']={syn:'Retourne la valeur actuelle de la vitesse/sol, en km/h, sous forme de nombre \xE0 virgule.',lib:'groundspeed.get_currentValue()',pro:'def get_currentValue()',cmt:'<p>Retourne la valeur actuelle de la vitesse/sol, en km/h, sous forme de nombre \xE0 virgule.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur actuelle de la vitesse/sol, en km/h, sous forme de nombre \xE0 virgule',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_CURRENTVALUE_INVALID</tt>.'};
+doc['GroundSpeed']['get_errorMessage']={syn:'Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du capteur de vitesse/sol.',lib:'groundspeed.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du capteur de vitesse/sol. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'une cha\xEEne de caract\xE8res correspondant au message de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du capteur de vitesse/sol.'};
+doc['GroundSpeed']['get_errorType']={syn:'Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du capteur de vitesse/sol.',lib:'groundspeed.get_errorType()',pro:'def get_errorType()',cmt:'<p>Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du capteur de vitesse/sol. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'un nombre correspondant au code de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du capteur de vitesse/sol.'};
+doc['GroundSpeed']['get_friendlyName']={syn:'Retourne un identifiant global du capteur de vitesse/sol au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>.',lib:'groundspeed.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Retourne un identifiant global du capteur de vitesse/sol au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>. Le cha\xEEne retourn\xE9e utilise soit les noms logiques du module et du capteur de vitesse/sol si ils sont d\xE9finis, soit respectivement le num\xE9ro de s\xE9rie du module et l\x27identifant mat\xE9riel du capteur de vitesse/sol (par exemple: <tt>MyCustomName.relay1</tt>)</p>',ret:'une cha\xEEne de caract\xE8res identifiant le capteur de vitesse/sol en utilisant les noms logiques (ex: <tt>MyCustomName.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['GroundSpeed']['get_functionDescriptor']={syn:'Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction.',lib:'groundspeed.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction. Cet identifiant peut \xEAtre utilis\xE9 pour tester si deux instance de <tt>YFunction</tt> r\xE9f\xE9rencent physiquement la m\xEAme fonction sur le m\xEAme module.</p>',ret:'un identifiant de type <tt>YFUN_DESCR</tt>.',ext:'Si la fonction n\x27a jamais \xE9t\xE9 contact\xE9e, la valeur retourn\xE9e sera <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>'};
+doc['GroundSpeed']['get_functionId']={syn:'Retourne l\x27identifiant mat\xE9riel du capteur de vitesse/sol, sans r\xE9f\xE9rence au module.',lib:'groundspeed.get_functionId()',pro:'def get_functionId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel du capteur de vitesse/sol, sans r\xE9f\xE9rence au module. Par example <tt>relay1</tt>.</p>',ret:'une cha\xEEne de caract\xE8res identifiant le capteur de vitesse/sol (ex: <tt>relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['GroundSpeed']['get_hardwareId']={syn:'Retourne l\x27identifiant mat\xE9riel unique du capteur de vitesse/sol au format <tt>SERIAL.FUNCTIONID</tt>.',lib:'groundspeed.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel unique du capteur de vitesse/sol au format <tt>SERIAL.FUNCTIONID</tt>. L\x27identifiant unique est compos\xE9 du num\xE9ro de s\xE9rie du module et de l\x27identifiant mat\xE9riel du capteur de vitesse/sol (par example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'une cha\xEEne de caract\xE8res identifiant le capteur de vitesse/sol (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['GroundSpeed']['get_highestValue']={syn:'Retourne la valeur maximale observ\xE9e pour la vitesse/sol depuis le d\xE9marrage du module.',lib:'groundspeed.get_highestValue()',pro:'def get_highestValue()',cmt:'<p>Retourne la valeur maximale observ\xE9e pour la vitesse/sol depuis le d\xE9marrage du module.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur maximale observ\xE9e pour la vitesse/sol depuis le d\xE9marrage du module',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_HIGHESTVALUE_INVALID</tt>.'};
+doc['GroundSpeed']['get_logFrequency']={syn:'Retourne la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es.',lib:'groundspeed.get_logFrequency()',pro:'def get_logFrequency()',cmt:'<p>Retourne la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_LOGFREQUENCY_INVALID</tt>.'};
+doc['GroundSpeed']['get_logicalName']={syn:'Retourne le nom logique du capteur de vitesse/sol.',lib:'groundspeed.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Retourne le nom logique du capteur de vitesse/sol.</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du capteur de vitesse/sol.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['GroundSpeed']['get_lowestValue']={syn:'Retourne la valeur minimale observ\xE9e pour la vitesse/sol depuis le d\xE9marrage du module.',lib:'groundspeed.get_lowestValue()',pro:'def get_lowestValue()',cmt:'<p>Retourne la valeur minimale observ\xE9e pour la vitesse/sol depuis le d\xE9marrage du module.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur minimale observ\xE9e pour la vitesse/sol depuis le d\xE9marrage du module',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_LOWESTVALUE_INVALID</tt>.'};
+doc['GroundSpeed']['get_module']={syn:'Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction.',lib:'groundspeed.get_module()',pro:'def get_module()',cmt:'<p>Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction. Si la fonction ne peut \xEAtre trouv\xE9e sur aucun module, l\x27instance de <tt>YModule</tt> retourn\xE9e ne sera pas joignable.</p>',ret:'une instance de <tt>YModule</tt>'};
+doc['GroundSpeed']['get_recordedData']={syn:'Retourne un objet DataSet repr\xE9sentant des mesures de ce capteur pr\xE9c\xE9demment enregistr\xE9es \xE0 l\x27aide du DataLogger, pour l\x27intervalle de temps sp\xE9cifi\xE9.',lib:'groundspeed.get_recordedData()',pro:'def get_recordedData(<span id=pn>startTime</span>, <span id=pn>endTime</span>)',cmt:'<p>Retourne un objet DataSet repr\xE9sentant des mesures de ce capteur pr\xE9c\xE9demment enregistr\xE9es \xE0 l\x27aide du DataLogger, pour l\x27intervalle de temps sp\xE9cifi\xE9. Veuillez vous r\xE9f\xE9rer \xE0 la documentation de la classe DataSet pour plus plus d\x27informations sur la mani\xE8re d\x27obtenir un aper\xE7u des mesures pour la p\xE9riode, et comment charger progressivement une grande quantit\xE9 de mesures depuis le dataLogger.</p><p> Cette m\xE9thode ne fonctionne que si le module utilise un firmware r\xE9cent, car les objets DataSet ne sont pas support\xE9s par les firmwares ant\xE9rieurs \xE0 la r\xE9vision 13000.</p>',par:{startTime:'le d\xE9but de l\x27intervalle de mesure d\xE9sir\xE9, c\x27est \xE0 dire en nombre de secondes depuis le 1er janvier 1970 UTC. La valeur 0 peut \xEAtre utilis\xE9e pour ne poser aucune limite sur le d\xE9but des mesures.',endTime:'la find de l\x27intercalle de mesure d\xE9sir\xE9, c\x27est \xE0 dire en nombre de secondes depuis le 1er janvier 1970 UTC. La valeur 0 peut \xEAtre utilis\xE9e pour ne poser aucune limite de fin.'},ret:'une instance de YDataSet, dont les m\xE9thodes permettent de d\x27acc\xE9der aux donn\xE9es historiques souhait\xE9es.'};
+doc['GroundSpeed']['get_reportFrequency']={syn:'Retourne la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction.',lib:'groundspeed.get_reportFrequency()',pro:'def get_reportFrequency()',cmt:'<p>Retourne la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_REPORTFREQUENCY_INVALID</tt>.'};
+doc['GroundSpeed']['get_resolution']={syn:'Retourne la r\xE9solution des valeurs mesur\xE9es.',lib:'groundspeed.get_resolution()',pro:'def get_resolution()',cmt:'<p>Retourne la r\xE9solution des valeurs mesur\xE9es. La r\xE9solution correspond \xE0 la pr\xE9cision num\xE9rique de la repr\xE9sentation des mesures. Elle n\x27est pas forc\xE9ment identique \xE0 la pr\xE9cision r\xE9elle du capteur.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la r\xE9solution des valeurs mesur\xE9es',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_RESOLUTION_INVALID</tt>.'};
+doc['GroundSpeed']['get_sensorState']={syn:'Retourne le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment.',lib:'groundspeed.get_sensorState()',pro:'def get_sensorState()',cmt:'<p>Retourne le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment.</p>',ret:'un entier repr&eacute;sentant le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_SENSORSTATE_INVALID</tt>.'};
+doc['GroundSpeed']['get_unit']={syn:'Retourne l\x27unit\xE9 dans laquelle la vitesse/sol est exprim\xE9e.',lib:'groundspeed.get_unit()',pro:'def get_unit()',cmt:'<p>Retourne l\x27unit\xE9 dans laquelle la vitesse/sol est exprim\xE9e.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant l\x27unit\xE9 dans laquelle la vitesse/sol est exprim\xE9e',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_UNIT_INVALID</tt>.'};
+doc['GroundSpeed']['get_userData']={syn:'Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>.',lib:'groundspeed.get_userData()',pro:'def get_userData()',cmt:'<p>Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',ret:'l\x27objet stock\xE9 pr\xE9c\xE9demment par l\x27appelant.'};
+doc['GroundSpeed']['isOnline']={syn:'V\xE9rifie si le module h\xE9bergeant le capteur de vitesse/sol est joignable, sans d\xE9clencher d\x27erreur.',lib:'groundspeed.isOnline()',pro:'def isOnline()',cmt:'<p>V\xE9rifie si le module h\xE9bergeant le capteur de vitesse/sol est joignable, sans d\xE9clencher d\x27erreur. Si les valeurs des attributs en cache du capteur de vitesse/sol sont valides au moment de l\x27appel, le module est consid\xE9r\xE9 joignable. Cette fonction ne cause en aucun cas d\x27exception, quelle que soit l\x27erreur qui pourrait se produire lors de la v\xE9rification de joignabilit\xE9.</p>',ret:'<tt>true</tt> si le capteur de vitesse/sol est joignable, <tt>false</tt> sinon'};
+doc['GroundSpeed']['load']={syn:'Met en cache les valeurs courantes du capteur de vitesse/sol, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e.',lib:'groundspeed.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Met en cache les valeurs courantes du capteur de vitesse/sol, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e. Par d\xE9faut, lorsqu\x27on acc\xE8de \xE0 un module, tous les attributs des fonctions du module sont automatiquement mises en cache pour la dur\xE9e standard (5 ms). Cette m\xE9thode peut \xEAtre utilis\xE9e pour marquer occasionellement les donn\xE9es cach\xE9es comme valides pour une plus longue p\xE9riode, par exemple dans le but de r\xE9duire le trafic r\xE9seau.</p>',par:{msValidity:'un entier correspondant \xE0 la dur\xE9e de validit\xE9 attribu\xE9e aux les param\xE8tres charg\xE9s, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['GroundSpeed']['loadAttribute']={syn:'Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.',lib:'groundspeed.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un cha\xEEne vide.'};
+doc['GroundSpeed']['loadCalibrationPoints']={syn:'R\xE9cup\xE8re les points de correction de mesure pr\xE9c\xE9demment enregistr\xE9s \xE0 l\x27aide de la m\xE9thode <tt>calibrateFromPoints</tt>.',lib:'groundspeed.loadCalibrationPoints()',pro:'def loadCalibrationPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>R\xE9cup\xE8re les points de correction de mesure pr\xE9c\xE9demment enregistr\xE9s \xE0 l\x27aide de la m\xE9thode <tt>calibrateFromPoints</tt>.</p>',par:{rawValues:'tableau de nombres flottants, qui sera rempli par la fonction avec les valeurs brutes des points de correction.',refValues:'tableau de nombres flottants, qui sera rempli par la fonction avec les valeurs d\xE9sir\xE9es des points de correction.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['GroundSpeed']['muteValueCallbacks']={syn:'D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'groundspeed.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Vous pouvez utiliser cette fonction pour \xE9conomiser la bande passante et le CPU sur les machines de faible puissance, ou pour \xE9viter le d\xE9clanchement de callbacks HTTP. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['GroundSpeed']['nextGroundSpeed']={syn:'Continue l\x27\xE9num\xE9ration des capteurs de vitesse/sol commenc\xE9e \xE0 l\x27aide de <tt>yFirstGroundSpeed()</tt>.',lib:'groundspeed.nextGroundSpeed()',pro:'def nextGroundSpeed()',cmt:'<p>Continue l\x27\xE9num\xE9ration des capteurs de vitesse/sol commenc\xE9e \xE0 l\x27aide de <tt>yFirstGroundSpeed()</tt>.</p>',ret:'un pointeur sur un objet <tt>YGroundSpeed</tt> accessible en ligne, ou <tt>null</tt> lorsque l\x27\xE9num\xE9ration est termin\xE9e.'};
+doc['GroundSpeed']['registerTimedReportCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque notification p\xE9riodique.',lib:'groundspeed.registerTimedReportCallback()',pro:'def registerTimedReportCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque notification p\xE9riodique. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callbacks peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callbacks ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et un objet YMeasure d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['GroundSpeed']['registerValueCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e.',lib:'groundspeed.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callback peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callback ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et la cha\xEEne de caract\xE8re d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['GroundSpeed']['set_highestValue']={syn:'Modifie la m\xE9moire de valeur maximale observ\xE9e.',lib:'groundspeed.set_highestValue()',pro:'def set_highestValue(<span id=pn>newval</span>)',cmt:'<p>Modifie la m\xE9moire de valeur maximale observ\xE9e.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la m\xE9moire de valeur maximale observ\xE9e'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['GroundSpeed']['set_logFrequency']={syn:'Modifie la fr\xE9quence d\x27enregistrement des mesures dans le datalogger.',lib:'groundspeed.set_logFrequency()',pro:'def set_logFrequency(<span id=pn>newval</span>)',cmt:'<p>Modifie la fr\xE9quence d\x27enregistrement des mesures dans le datalogger. La fr\xE9quence peut \xEAtre sp\xE9cifi\xE9e en mesures par secondes, en mesures par minutes (par exemple \x2215/m\x22) ou en mesures par heure (par exemple \x224/h\x22). Pour d\xE9sactiver l\x27enregistrement des mesures de cette fonction, utilisez la valeur \x22OFF\x22.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence d\x27enregistrement des mesures dans le datalogger'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['GroundSpeed']['set_logicalName']={syn:'Modifie le nom logique du capteur de vitesse/sol.',lib:'groundspeed.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Modifie le nom logique du capteur de vitesse/sol. Vous pouvez utiliser <tt>yCheckLogicalName()</tt> pour v\xE9rifier si votre param\xE8tre est valide. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du capteur de vitesse/sol.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27appel se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['GroundSpeed']['set_lowestValue']={syn:'Modifie la m\xE9moire de valeur minimale observ\xE9e.',lib:'groundspeed.set_lowestValue()',pro:'def set_lowestValue(<span id=pn>newval</span>)',cmt:'<p>Modifie la m\xE9moire de valeur minimale observ\xE9e.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la m\xE9moire de valeur minimale observ\xE9e'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['GroundSpeed']['set_reportFrequency']={syn:'Modifie la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es.',lib:'groundspeed.set_reportFrequency()',pro:'def set_reportFrequency(<span id=pn>newval</span>)',cmt:'<p>Modifie la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es. La fr\xE9quence peut \xEAtre sp\xE9cifi\xE9e en mesures par secondes, en mesures par minutes (par exemple \x2215/m\x22) ou en mesures par heure (par exemple \x224/h\x22). Pour d\xE9sactiver les notifications p\xE9riodiques pour cette fonction, utilisez la valeur \x22OFF\x22.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['GroundSpeed']['set_resolution']={syn:'Modifie la r\xE9solution des valeurs physique mesur\xE9es.',lib:'groundspeed.set_resolution()',pro:'def set_resolution(<span id=pn>newval</span>)',cmt:'<p>Modifie la r\xE9solution des valeurs physique mesur\xE9es. La r\xE9solution correspond \xE0 la pr\xE9cision de l\x27affichage des mesures. Elle ne change pas la pr\xE9cision de la mesure elle-m\xEAme.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la r\xE9solution des valeurs physique mesur\xE9es'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['GroundSpeed']['set_userData']={syn:'Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>.',lib:'groundspeed.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',par:{data:'objet quelconque \xE0 m\xE9moriser'}};
+doc['GroundSpeed']['startDataLogger']={syn:'D\xE9marre l\x27enregistreur de donn\xE9es du module.',lib:'groundspeed.startDataLogger()',pro:'def startDataLogger()',cmt:'<p>D\xE9marre l\x27enregistreur de donn\xE9es du module. Attention, l\x27enregistreur ne sauvera les mesures de ce capteur que si la fr\xE9quence d\x27enregistrement (logFrequency) n\x27est pas sur \x22OFF\x22.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.'};
+doc['GroundSpeed']['stopDataLogger']={syn:'Arr\xEAte l\x27enregistreur de donn\xE9es du module.',lib:'groundspeed.stopDataLogger()',pro:'def stopDataLogger()',cmt:'<p>Arr\xEAte l\x27enregistreur de donn\xE9es du module.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.'};
+doc['GroundSpeed']['unmuteValueCallbacks']={syn:'R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'groundspeed.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Cette fonction annule un pr\xE9c\xE9dent appel \xE0 <tt>muteValueCallbacks()</tt>. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+//--- (end of generated code: GroundSpeed)
+//--- (generated code: PowerOutput)
+doc['PowerOutput']={'':{syn:'Interface d\x27alimentation de sortie',inc:'from yocto_poweroutput import *',cmt:'<p>La librairie de programmation Yoctopuce permet de contr\xF4ler l\x27alimentation mise a disposition sur certain module tels que le Yocto-Serial</p>'}};
+doc['PowerOutput']['FindPowerOutput']={syn:'Permet de retrouver une alimentation d\x27apr\xE8s un identifiant donn\xE9.',lib:'YPowerOutput.FindPowerOutput()',pro:'def FindPowerOutput(<span id=pn>func</span>)',cmt:'<p>Permet de retrouver une alimentation d\x27apr\xE8s un identifiant donn\xE9. L\x27identifiant peut \xEAtre sp\xE9cifi\xE9 sous plusieurs formes:<br> <ul> <li>NomLogiqueFonction</li> <li>NoSerieModule.IdentifiantFonction</li> <li>NoSerieModule.NomLogiqueFonction</li> <li>NomLogiqueModule.IdentifiantMat\xE9riel</li> <li>NomLogiqueModule.NomLogiqueFonction</li> </ul></p><p> Cette fonction n\x27exige pas que l\x27alimentation soit en ligne au moment ou elle est appel\xE9e, l\x27objet retourn\xE9 sera n\xE9anmoins valide. Utiliser la m\xE9thode <tt>YPowerOutput.isOnline()</tt> pour tester si l\x27alimentation est utilisable \xE0 un moment donn\xE9. En cas d\x27ambigu\xEFt\xE9 lorsqu\x27on fait une recherche par nom logique, aucune erreur ne sera notifi\xE9e: la premi\xE8re instance trouv\xE9e sera renvoy\xE9e. La recherche se fait d\x27abord par nom mat\xE9riel, puis par nom logique.</p>',par:{func:'une cha\xEEne de caract\xE8res qui r\xE9f\xE9rence l\x27alimentation sans ambigu\xEFt\xE9'},ret:'un objet de classe <tt>YPowerOutput</tt> qui permet ensuite de contr\xF4ler l\x27alimentation.'};
+doc['PowerOutput']['FirstPowerOutput']={syn:'Commence l\x27\xE9num\xE9ration des alimentation accessibles par la librairie.',lib:'YPowerOutput.FirstPowerOutput()',pro:'def FirstPowerOutput()',cmt:'<p>Commence l\x27\xE9num\xE9ration des alimentation accessibles par la librairie. Utiliser la fonction <tt>YPowerOutput.nextPowerOutput()</tt> pour it\xE9rer sur les autres alimentation.</p>',ret:'un pointeur sur un objet <tt>YPowerOutput</tt>, correspondant \xE0 la premiere alimentation accessible en ligne, ou <tt>null</tt> si il n\x27y a pas de alimentation disponibles.'};
+doc['PowerOutput']['clearCache']={syn:'Invalide le cache.',lib:'poweroutput.clearCache()',pro:'def clearCache()',cmt:'<p>Invalide le cache. Invalide le cache des valeurs courantes de l\x27alimentation. Force le prochain appel \xE0 une m\xE9thode get_xxx() ou loadxxx() pour charger les les donn\xE9es depuis le module.</p>'};
+doc['PowerOutput']['describe']={syn:'Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance de l\x27alimentation au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'poweroutput.describe()',pro:'def describe()',cmt:'<p>Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance de l\x27alimentation au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. Plus pr\xE9cis\xE9ment, <tt>TYPE</tt> correspond au type de fonction, <tt>NAME</tt> correspond au nom utils\xE9 lors du premier acc\xE8s a la fonction, <tt>SERIAL</tt> correspond au num\xE9ro de s\xE9rie du module si le module est connect\xE9, ou <tt>\x22unresolved\x22</tt> sinon, et <tt>FUNCTIONID</tt> correspond \xE0 l\x27identifiant mat\xE9riel de la fonction si le module est connect\xE9. Par exemple, La methode va retourner <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> si le module est d\xE9j\xE0 connect\xE9 ou <tt>Relay(BadCustomeName.relay1)=unresolved</tt> si le module n\x27est pas d\xE9j\xE0 connect\xE9. Cette methode ne declenche aucune transaction USB ou TCP et peut donc \xEAtre utilis\xE9 dans un debuggeur.</p>',ret:'une cha\xEEne de caract\xE8res d\xE9crivant l\x27alimentation (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['PowerOutput']['get_advertisedValue']={syn:'Retourne la valeur courante de l\x27alimentation (pas plus de 6 caract\xE8res).',lib:'poweroutput.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Retourne la valeur courante de l\x27alimentation (pas plus de 6 caract\xE8res).</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur courante de l\x27alimentation (pas plus de 6 caract\xE8res).',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['PowerOutput']['get_errorMessage']={syn:'Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de l\x27alimentation.',lib:'poweroutput.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de l\x27alimentation. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'une cha\xEEne de caract\xE8res correspondant au message de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation de l\x27alimentation.'};
+doc['PowerOutput']['get_errorType']={syn:'Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de l\x27alimentation.',lib:'poweroutput.get_errorType()',pro:'def get_errorType()',cmt:'<p>Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de l\x27alimentation. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'un nombre correspondant au code de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation de l\x27alimentation.'};
+doc['PowerOutput']['get_friendlyName']={syn:'Retourne un identifiant global de l\x27alimentation au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>.',lib:'poweroutput.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Retourne un identifiant global de l\x27alimentation au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>. Le cha\xEEne retourn\xE9e utilise soit les noms logiques du module et de l\x27alimentation si ils sont d\xE9finis, soit respectivement le num\xE9ro de s\xE9rie du module et l\x27identifant mat\xE9riel de l\x27alimentation (par exemple: <tt>MyCustomName.relay1</tt>)</p>',ret:'une cha\xEEne de caract\xE8res identifiant l\x27alimentation en utilisant les noms logiques (ex: <tt>MyCustomName.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['PowerOutput']['get_functionDescriptor']={syn:'Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction.',lib:'poweroutput.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction. Cet identifiant peut \xEAtre utilis\xE9 pour tester si deux instance de <tt>YFunction</tt> r\xE9f\xE9rencent physiquement la m\xEAme fonction sur le m\xEAme module.</p>',ret:'un identifiant de type <tt>YFUN_DESCR</tt>.',ext:'Si la fonction n\x27a jamais \xE9t\xE9 contact\xE9e, la valeur retourn\xE9e sera <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>'};
+doc['PowerOutput']['get_functionId']={syn:'Retourne l\x27identifiant mat\xE9riel de l\x27alimentation, sans r\xE9f\xE9rence au module.',lib:'poweroutput.get_functionId()',pro:'def get_functionId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel de l\x27alimentation, sans r\xE9f\xE9rence au module. Par example <tt>relay1</tt>.</p>',ret:'une cha\xEEne de caract\xE8res identifiant l\x27alimentation (ex: <tt>relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['PowerOutput']['get_hardwareId']={syn:'Retourne l\x27identifiant mat\xE9riel unique de l\x27alimentation au format <tt>SERIAL.FUNCTIONID</tt>.',lib:'poweroutput.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel unique de l\x27alimentation au format <tt>SERIAL.FUNCTIONID</tt>. L\x27identifiant unique est compos\xE9 du num\xE9ro de s\xE9rie du module et de l\x27identifiant mat\xE9riel de l\x27alimentation (par example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'une cha\xEEne de caract\xE8res identifiant l\x27alimentation (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['PowerOutput']['get_logicalName']={syn:'Retourne le nom logique de l\x27alimentation.',lib:'poweroutput.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Retourne le nom logique de l\x27alimentation.</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique de l\x27alimentation.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['PowerOutput']['get_module']={syn:'Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction.',lib:'poweroutput.get_module()',pro:'def get_module()',cmt:'<p>Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction. Si la fonction ne peut \xEAtre trouv\xE9e sur aucun module, l\x27instance de <tt>YModule</tt> retourn\xE9e ne sera pas joignable.</p>',ret:'une instance de <tt>YModule</tt>'};
+doc['PowerOutput']['get_userData']={syn:'Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>.',lib:'poweroutput.get_userData()',pro:'def get_userData()',cmt:'<p>Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',ret:'l\x27objet stock\xE9 pr\xE9c\xE9demment par l\x27appelant.'};
+doc['PowerOutput']['get_voltage']={syn:'Retourne voltage envoy\xE9 sur l\x27alimentation mise \xE0 disposition sur le module.',lib:'poweroutput.get_voltage()',pro:'def get_voltage()',cmt:'<p>Retourne voltage envoy\xE9 sur l\x27alimentation mise \xE0 disposition sur le module.</p>',ret:'une valeur parmi <tt>Y_VOLTAGE_OFF</tt>, <tt>Y_VOLTAGE_OUT3V3</tt> et <tt>Y_VOLTAGE_OUT5V</tt> repr&eacute;sentant voltage envoy\xE9 sur l\x27alimentation mise \xE0 disposition sur le module',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_VOLTAGE_INVALID</tt>.'};
+doc['PowerOutput']['isOnline']={syn:'V\xE9rifie si le module h\xE9bergeant l\x27alimentation est joignable, sans d\xE9clencher d\x27erreur.',lib:'poweroutput.isOnline()',pro:'def isOnline()',cmt:'<p>V\xE9rifie si le module h\xE9bergeant l\x27alimentation est joignable, sans d\xE9clencher d\x27erreur. Si les valeurs des attributs en cache de l\x27alimentation sont valides au moment de l\x27appel, le module est consid\xE9r\xE9 joignable. Cette fonction ne cause en aucun cas d\x27exception, quelle que soit l\x27erreur qui pourrait se produire lors de la v\xE9rification de joignabilit\xE9.</p>',ret:'<tt>true</tt> si l\x27alimentation est joignable, <tt>false</tt> sinon'};
+doc['PowerOutput']['load']={syn:'Met en cache les valeurs courantes de l\x27alimentation, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e.',lib:'poweroutput.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Met en cache les valeurs courantes de l\x27alimentation, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e. Par d\xE9faut, lorsqu\x27on acc\xE8de \xE0 un module, tous les attributs des fonctions du module sont automatiquement mises en cache pour la dur\xE9e standard (5 ms). Cette m\xE9thode peut \xEAtre utilis\xE9e pour marquer occasionellement les donn\xE9es cach\xE9es comme valides pour une plus longue p\xE9riode, par exemple dans le but de r\xE9duire le trafic r\xE9seau.</p>',par:{msValidity:'un entier correspondant \xE0 la dur\xE9e de validit\xE9 attribu\xE9e aux les param\xE8tres charg\xE9s, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['PowerOutput']['loadAttribute']={syn:'Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.',lib:'poweroutput.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un cha\xEEne vide.'};
+doc['PowerOutput']['muteValueCallbacks']={syn:'D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'poweroutput.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Vous pouvez utiliser cette fonction pour \xE9conomiser la bande passante et le CPU sur les machines de faible puissance, ou pour \xE9viter le d\xE9clanchement de callbacks HTTP. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['PowerOutput']['nextPowerOutput']={syn:'Continue l\x27\xE9num\xE9ration des alimentation commenc\xE9e \xE0 l\x27aide de <tt>yFirstPowerOutput()</tt>.',lib:'poweroutput.nextPowerOutput()',pro:'def nextPowerOutput()',cmt:'<p>Continue l\x27\xE9num\xE9ration des alimentation commenc\xE9e \xE0 l\x27aide de <tt>yFirstPowerOutput()</tt>.</p>',ret:'un pointeur sur un objet <tt>YPowerOutput</tt> accessible en ligne, ou <tt>null</tt> lorsque l\x27\xE9num\xE9ration est termin\xE9e.'};
+doc['PowerOutput']['registerValueCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e.',lib:'poweroutput.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callback peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callback ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et la cha\xEEne de caract\xE8re d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['PowerOutput']['set_logicalName']={syn:'Modifie le nom logique de l\x27alimentation.',lib:'poweroutput.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Modifie le nom logique de l\x27alimentation. Vous pouvez utiliser <tt>yCheckLogicalName()</tt> pour v\xE9rifier si votre param\xE8tre est valide. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique de l\x27alimentation.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27appel se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['PowerOutput']['set_userData']={syn:'Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>.',lib:'poweroutput.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',par:{data:'objet quelconque \xE0 m\xE9moriser'}};
+doc['PowerOutput']['set_voltage']={syn:'Modifie le voltage de l\x27alimentation mise \xE0 disposition par le module.',lib:'poweroutput.set_voltage()',pro:'def set_voltage(<span id=pn>newval</span>)',cmt:'<p>Modifie le voltage de l\x27alimentation mise \xE0 disposition par le module. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une valeur parmi <tt>Y_VOLTAGE_OFF</tt>, <tt>Y_VOLTAGE_OUT3V3</tt> et <tt>Y_VOLTAGE_OUT5V</tt> repr&eacute;sentant le voltage de l\x27alimentation mise \xE0 disposition par le module'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['PowerOutput']['unmuteValueCallbacks']={syn:'R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'poweroutput.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Cette fonction annule un pr\xE9c\xE9dent appel \xE0 <tt>muteValueCallbacks()</tt>. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+//--- (end of generated code: PowerOutput)
+//--- (generated code: Cellular)
+doc['Cellular']={'':{syn:'Interface de la fonction Cellular',inc:'from yocto_cellular import *',cmt:'<p>La fonction YCellular permet de configurer et de contr\xF4ler la configuration du r\xE9seau cellulaire sur les modules Yoctopuce qui en sont dot\xE9s.</p>'}};
+doc['Cellular']['FindCellular']={syn:'Permet de retrouver une interface cellulaire d\x27apr\xE8s un identifiant donn\xE9.',lib:'YCellular.FindCellular()',pro:'def FindCellular(<span id=pn>func</span>)',cmt:'<p>Permet de retrouver une interface cellulaire d\x27apr\xE8s un identifiant donn\xE9. L\x27identifiant peut \xEAtre sp\xE9cifi\xE9 sous plusieurs formes:<br> <ul> <li>NomLogiqueFonction</li> <li>NoSerieModule.IdentifiantFonction</li> <li>NoSerieModule.NomLogiqueFonction</li> <li>NomLogiqueModule.IdentifiantMat\xE9riel</li> <li>NomLogiqueModule.NomLogiqueFonction</li> </ul></p><p> Cette fonction n\x27exige pas que l\x27interface cellulaire soit en ligne au moment ou elle est appel\xE9e, l\x27objet retourn\xE9 sera n\xE9anmoins valide. Utiliser la m\xE9thode <tt>YCellular.isOnline()</tt> pour tester si l\x27interface cellulaire est utilisable \xE0 un moment donn\xE9. En cas d\x27ambigu\xEFt\xE9 lorsqu\x27on fait une recherche par nom logique, aucune erreur ne sera notifi\xE9e: la premi\xE8re instance trouv\xE9e sera renvoy\xE9e. La recherche se fait d\x27abord par nom mat\xE9riel, puis par nom logique.</p>',par:{func:'une cha\xEEne de caract\xE8res qui r\xE9f\xE9rence l\x27interface cellulaire sans ambigu\xEFt\xE9'},ret:'un objet de classe <tt>YCellular</tt> qui permet ensuite de contr\xF4ler l\x27interface cellulaire.'};
+doc['Cellular']['FirstCellular']={syn:'Commence l\x27\xE9num\xE9ration des interfaces r\xE9seau cellulaire accessibles par la librairie.',lib:'YCellular.FirstCellular()',pro:'def FirstCellular()',cmt:'<p>Commence l\x27\xE9num\xE9ration des interfaces r\xE9seau cellulaire accessibles par la librairie. Utiliser la fonction <tt>YCellular.nextCellular()</tt> pour it\xE9rer sur les autres interfaces r\xE9seau cellulaire.</p>',ret:'un pointeur sur un objet <tt>YCellular</tt>, correspondant \xE0 la premi\xE8re interface cellulaire accessible en ligne, ou <tt>null</tt> si il n\x27y a pas de interfaces r\xE9seau cellulaire disponibles.'};
+doc['Cellular']['_AT']={syn:'Envoie une commande AT au module GSM, et retourne le r\xE9sultat.',lib:'cellular._AT()',pro:'def _AT(<span id=pn>cmd</span>)',cmt:'<p>Envoie une commande AT au module GSM, et retourne le r\xE9sultat. La commande ne s\x27ex\xE9cute que lorsque le module GSM dans un \xE9tat standard, et doit le laisser exactement dans le m\xEAme \xE9tat. N\x27utilisez cette fonction qu\x27avec la plus grande prudence !</p>',par:{cmd:'la commande AT \xE0 ex\xE9cuter, comme par exemple: \x22+CCLK?\x22'},ret:'une cha\xEEne de caract\xE8res contenant le r\xE9sultat de la commande. Les lignes vides sont automatiquement filtr\xE9es du r\xE9sultat.'};
+doc['Cellular']['clearCache']={syn:'Invalide le cache.',lib:'cellular.clearCache()',pro:'def clearCache()',cmt:'<p>Invalide le cache. Invalide le cache des valeurs courantes de l\x27interface cellulaire. Force le prochain appel \xE0 une m\xE9thode get_xxx() ou loadxxx() pour charger les les donn\xE9es depuis le module.</p>'};
+doc['Cellular']['clearDataCounters']={syn:'R\xE9initialise les compteurs de donn\xE9es transmises et re\xE7ues.',lib:'cellular.clearDataCounters()',pro:'def clearDataCounters()',cmt:'<p>R\xE9initialise les compteurs de donn\xE9es transmises et re\xE7ues.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Cellular']['describe']={syn:'Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance de l\x27interface cellulaire au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'cellular.describe()',pro:'def describe()',cmt:'<p>Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance de l\x27interface cellulaire au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. Plus pr\xE9cis\xE9ment, <tt>TYPE</tt> correspond au type de fonction, <tt>NAME</tt> correspond au nom utils\xE9 lors du premier acc\xE8s a la fonction, <tt>SERIAL</tt> correspond au num\xE9ro de s\xE9rie du module si le module est connect\xE9, ou <tt>\x22unresolved\x22</tt> sinon, et <tt>FUNCTIONID</tt> correspond \xE0 l\x27identifiant mat\xE9riel de la fonction si le module est connect\xE9. Par exemple, La methode va retourner <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> si le module est d\xE9j\xE0 connect\xE9 ou <tt>Relay(BadCustomeName.relay1)=unresolved</tt> si le module n\x27est pas d\xE9j\xE0 connect\xE9. Cette methode ne declenche aucune transaction USB ou TCP et peut donc \xEAtre utilis\xE9 dans un debuggeur.</p>',ret:'une cha\xEEne de caract\xE8res d\xE9crivant l\x27interface cellulaire (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['Cellular']['get_advertisedValue']={syn:'Retourne la valeur courante de l\x27interface cellulaire (pas plus de 6 caract\xE8res).',lib:'cellular.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Retourne la valeur courante de l\x27interface cellulaire (pas plus de 6 caract\xE8res).</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur courante de l\x27interface cellulaire (pas plus de 6 caract\xE8res).',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['Cellular']['get_airplaneMode']={syn:'Retourne vrai si le mode avion est activ\xE9 (radio d\xE9sactiv\xE9e).',lib:'cellular.get_airplaneMode()',pro:'def get_airplaneMode()',cmt:'<p>Retourne vrai si le mode avion est activ\xE9 (radio d\xE9sactiv\xE9e).</p>',ret:'soit <tt>Y_AIRPLANEMODE_OFF</tt>, soit <tt>Y_AIRPLANEMODE_ON</tt>, selon vrai si le mode avion est activ\xE9 (radio d\xE9sactiv\xE9e)',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_AIRPLANEMODE_INVALID</tt>.'};
+doc['Cellular']['get_apn']={syn:'Retourne le nom du point d\x27acc\xE8s (APN) \xE0 utiliser, si n\xE9cessaire.',lib:'cellular.get_apn()',pro:'def get_apn()',cmt:'<p>Retourne le nom du point d\x27acc\xE8s (APN) \xE0 utiliser, si n\xE9cessaire. Lorsque l\x27APN est vide, celui propos\xE9 par l\x27op\xE9rateur cellulaire est utilis\xE9e.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant le nom du point d\x27acc\xE8s (APN) \xE0 utiliser, si n\xE9cessaire',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_APN_INVALID</tt>.'};
+doc['Cellular']['get_apnSecret']={syn:'Retourne une string opaque si des param\xE8tres d\x27identification sur l\x27APN ont \xE9t\xE9 configur\xE9s dans le module, ou une cha\xEEne vide autrement.',lib:'cellular.get_apnSecret()',pro:'def get_apnSecret()',cmt:'<p>Retourne une string opaque si des param\xE8tres d\x27identification sur l\x27APN ont \xE9t\xE9 configur\xE9s dans le module, ou une cha\xEEne vide autrement. Pour configurer ces param\xE8tres, utilisez la m\xE9thode <tt>set_apnAuth()</tt>.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant une string opaque si des param\xE8tres d\x27identification sur l\x27APN ont \xE9t\xE9 configur\xE9s dans le module, ou une cha\xEEne vide autrement',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_APNSECRET_INVALID</tt>.'};
+doc['Cellular']['get_availableOperators']={syn:'Retourne la liste des op\xE9rateurs GSM disponibles \xE0 proximit\xE9.',lib:'cellular.get_availableOperators()',pro:'def get_availableOperators()',cmt:'<p>Retourne la liste des op\xE9rateurs GSM disponibles \xE0 proximit\xE9. Cette fonction peut typiquement prendre 30 secondes \xE0 une minute pour rendre la main. Notez qu\x27en g\xE9n\xE9ral une SIM ne permet de se connecter qu\x27\xE0 certains op\xE9rateur, et donc pas forc\xE9ment \xE0 tous ceux list\xE9s par cette fonction.</p>',ret:'une liste de noms d\x27op\xE9rateur.'};
+doc['Cellular']['get_cellIdentifier']={syn:'Retourne l\x27identifiant unique de la station de base utilis\xE9e: MCC, MNC, LAC et Cell ID.',lib:'cellular.get_cellIdentifier()',pro:'def get_cellIdentifier()',cmt:'<p>Retourne l\x27identifiant unique de la station de base utilis\xE9e: MCC, MNC, LAC et Cell ID.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant l\x27identifiant unique de la station de base utilis\xE9e: MCC, MNC, LAC et Cell ID',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_CELLIDENTIFIER_INVALID</tt>.'};
+doc['Cellular']['get_cellOperator']={syn:'Retourne le nom de l\x27op\xE9rateur de r\xE9seau cellulaire actuellement utilis\xE9.',lib:'cellular.get_cellOperator()',pro:'def get_cellOperator()',cmt:'<p>Retourne le nom de l\x27op\xE9rateur de r\xE9seau cellulaire actuellement utilis\xE9.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant le nom de l\x27op\xE9rateur de r\xE9seau cellulaire actuellement utilis\xE9',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_CELLOPERATOR_INVALID</tt>.'};
+doc['Cellular']['get_cellType']={syn:'Type de connection cellulaire active.',lib:'cellular.get_cellType()',pro:'def get_cellType()',cmt:'<p>Type de connection cellulaire active.</p>',ret:'une valeur parmi <tt>Y_CELLTYPE_GPRS</tt>, <tt>Y_CELLTYPE_EGPRS</tt>, <tt>Y_CELLTYPE_WCDMA</tt>, <tt>Y_CELLTYPE_HSDPA</tt>, <tt>Y_CELLTYPE_NONE</tt> et <tt>Y_CELLTYPE_CDMA</tt>',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_CELLTYPE_INVALID</tt>.'};
+doc['Cellular']['get_dataReceived']={syn:'Retourne le nombre d\x27octets re\xE7us jusqu\x27\xE0 pr\xE9sent.',lib:'cellular.get_dataReceived()',pro:'def get_dataReceived()',cmt:'<p>Retourne le nombre d\x27octets re\xE7us jusqu\x27\xE0 pr\xE9sent.</p>',ret:'un entier repr&eacute;sentant le nombre d\x27octets re\xE7us jusqu\x27\xE0 pr\xE9sent',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_DATARECEIVED_INVALID</tt>.'};
+doc['Cellular']['get_dataSent']={syn:'Retourne le nombre d\x27octets envoy\xE9s jusqu\x27\xE0 pr\xE9sent.',lib:'cellular.get_dataSent()',pro:'def get_dataSent()',cmt:'<p>Retourne le nombre d\x27octets envoy\xE9s jusqu\x27\xE0 pr\xE9sent.</p>',ret:'un entier repr&eacute;sentant le nombre d\x27octets envoy\xE9s jusqu\x27\xE0 pr\xE9sent',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_DATASENT_INVALID</tt>.'};
+doc['Cellular']['get_enableData']={syn:'Retourne la condition dans laquelle le service de donn\xE9es IP (GRPS) doit \xEAtre activ\xE9.',lib:'cellular.get_enableData()',pro:'def get_enableData()',cmt:'<p>Retourne la condition dans laquelle le service de donn\xE9es IP (GRPS) doit \xEAtre activ\xE9. Lorsque le service de donn\xE9e n\x27est pas actif, seules les communications par SMS sont possibles.</p>',ret:'une valeur parmi <tt>Y_ENABLEDATA_HOMENETWORK</tt>, <tt>Y_ENABLEDATA_ROAMING</tt>, <tt>Y_ENABLEDATA_NEVER</tt> et <tt>Y_ENABLEDATA_NEUTRALITY</tt> repr&eacute;sentant la condition dans laquelle le service de donn\xE9es IP (GRPS) doit \xEAtre activ\xE9',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_ENABLEDATA_INVALID</tt>.'};
+doc['Cellular']['get_errorMessage']={syn:'Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de l\x27interface cellulaire.',lib:'cellular.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de l\x27interface cellulaire. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'une cha\xEEne de caract\xE8res correspondant au message de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation de l\x27interface cellulaire.'};
+doc['Cellular']['get_errorType']={syn:'Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de l\x27interface cellulaire.',lib:'cellular.get_errorType()',pro:'def get_errorType()',cmt:'<p>Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de l\x27interface cellulaire. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'un nombre correspondant au code de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation de l\x27interface cellulaire.'};
+doc['Cellular']['get_friendlyName']={syn:'Retourne un identifiant global de l\x27interface cellulaire au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>.',lib:'cellular.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Retourne un identifiant global de l\x27interface cellulaire au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>. Le cha\xEEne retourn\xE9e utilise soit les noms logiques du module et de l\x27interface cellulaire si ils sont d\xE9finis, soit respectivement le num\xE9ro de s\xE9rie du module et l\x27identifant mat\xE9riel de l\x27interface cellulaire (par exemple: <tt>MyCustomName.relay1</tt>)</p>',ret:'une cha\xEEne de caract\xE8res identifiant l\x27interface cellulaire en utilisant les noms logiques (ex: <tt>MyCustomName.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['Cellular']['get_functionDescriptor']={syn:'Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction.',lib:'cellular.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction. Cet identifiant peut \xEAtre utilis\xE9 pour tester si deux instance de <tt>YFunction</tt> r\xE9f\xE9rencent physiquement la m\xEAme fonction sur le m\xEAme module.</p>',ret:'un identifiant de type <tt>YFUN_DESCR</tt>.',ext:'Si la fonction n\x27a jamais \xE9t\xE9 contact\xE9e, la valeur retourn\xE9e sera <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>'};
+doc['Cellular']['get_functionId']={syn:'Retourne l\x27identifiant mat\xE9riel de l\x27interface cellulaire, sans r\xE9f\xE9rence au module.',lib:'cellular.get_functionId()',pro:'def get_functionId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel de l\x27interface cellulaire, sans r\xE9f\xE9rence au module. Par example <tt>relay1</tt>.</p>',ret:'une cha\xEEne de caract\xE8res identifiant l\x27interface cellulaire (ex: <tt>relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['Cellular']['get_hardwareId']={syn:'Retourne l\x27identifiant mat\xE9riel unique de l\x27interface cellulaire au format <tt>SERIAL.FUNCTIONID</tt>.',lib:'cellular.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel unique de l\x27interface cellulaire au format <tt>SERIAL.FUNCTIONID</tt>. L\x27identifiant unique est compos\xE9 du num\xE9ro de s\xE9rie du module et de l\x27identifiant mat\xE9riel de l\x27interface cellulaire (par example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'une cha\xEEne de caract\xE8res identifiant l\x27interface cellulaire (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['Cellular']['get_imsi']={syn:'Retourne une string opaque si un code PIN a \xE9t\xE9 configur\xE9 dans le module pour acc\xE9der \xE0 la carte SIM, ou une cha\xEEne vide il n\x27a pas \xE9t\xE9 configur\xE9 ou si la SIM a rejet\xE9 le code indiqu\xE9.',lib:'cellular.get_imsi()',pro:'def get_imsi()',cmt:'<p>Retourne une string opaque si un code PIN a \xE9t\xE9 configur\xE9 dans le module pour acc\xE9der \xE0 la carte SIM, ou une cha\xEEne vide il n\x27a pas \xE9t\xE9 configur\xE9 ou si la SIM a rejet\xE9 le code indiqu\xE9.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant une string opaque si un code PIN a \xE9t\xE9 configur\xE9 dans le module pour acc\xE9der \xE0 la carte SIM, ou une cha\xEEne vide il n\x27a pas \xE9t\xE9 configur\xE9 ou si la SIM a rejet\xE9 le code indiqu\xE9',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_IMSI_INVALID</tt>.'};
+doc['Cellular']['get_linkQuality']={syn:'Retourne la qualit\xE9 de la connection, exprim\xE9e en pourcents.',lib:'cellular.get_linkQuality()',pro:'def get_linkQuality()',cmt:'<p>Retourne la qualit\xE9 de la connection, exprim\xE9e en pourcents.</p>',ret:'un entier repr&eacute;sentant la qualit\xE9 de la connection, exprim\xE9e en pourcents',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_LINKQUALITY_INVALID</tt>.'};
+doc['Cellular']['get_lockedOperator']={syn:'Retourne le nom de l\x27op\xE9rateur de r\xE9seau cellulaire \xE0 utiliser exclusivement, si le choix automatique est d\xE9sactiv\xE9, ou une cha\xEEne vide si la carte SIM s\xE9lectionne automatiquement l\x27op\xE9rateur selon ceux disponibles.',lib:'cellular.get_lockedOperator()',pro:'def get_lockedOperator()',cmt:'<p>Retourne le nom de l\x27op\xE9rateur de r\xE9seau cellulaire \xE0 utiliser exclusivement, si le choix automatique est d\xE9sactiv\xE9, ou une cha\xEEne vide si la carte SIM s\xE9lectionne automatiquement l\x27op\xE9rateur selon ceux disponibles.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant le nom de l\x27op\xE9rateur de r\xE9seau cellulaire \xE0 utiliser exclusivement, si le choix automatique est d\xE9sactiv\xE9, ou une cha\xEEne vide si la carte SIM s\xE9lectionne automatiquement l\x27op\xE9rateur selon ceux disponibles',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_LOCKEDOPERATOR_INVALID</tt>.'};
+doc['Cellular']['get_logicalName']={syn:'Retourne le nom logique de l\x27interface cellulaire.',lib:'cellular.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Retourne le nom logique de l\x27interface cellulaire.</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique de l\x27interface cellulaire.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['Cellular']['get_message']={syn:'Retourne le dernier message de diagnostique de l\x27interface au r\xE9seau sans fil.',lib:'cellular.get_message()',pro:'def get_message()',cmt:'<p>Retourne le dernier message de diagnostique de l\x27interface au r\xE9seau sans fil.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant le dernier message de diagnostique de l\x27interface au r\xE9seau sans fil',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_MESSAGE_INVALID</tt>.'};
+doc['Cellular']['get_module']={syn:'Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction.',lib:'cellular.get_module()',pro:'def get_module()',cmt:'<p>Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction. Si la fonction ne peut \xEAtre trouv\xE9e sur aucun module, l\x27instance de <tt>YModule</tt> retourn\xE9e ne sera pas joignable.</p>',ret:'une instance de <tt>YModule</tt>'};
+doc['Cellular']['get_pin']={syn:'Retourne une string opaque si un code PIN a \xE9t\xE9 configur\xE9 dans le module pour acc\xE9der \xE0 la carte SIM, ou une cha\xEEne vide il n\x27a pas \xE9t\xE9 configur\xE9 ou si la SIM a rejet\xE9 le code indiqu\xE9.',lib:'cellular.get_pin()',pro:'def get_pin()',cmt:'<p>Retourne une string opaque si un code PIN a \xE9t\xE9 configur\xE9 dans le module pour acc\xE9der \xE0 la carte SIM, ou une cha\xEEne vide il n\x27a pas \xE9t\xE9 configur\xE9 ou si la SIM a rejet\xE9 le code indiqu\xE9.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant une string opaque si un code PIN a \xE9t\xE9 configur\xE9 dans le module pour acc\xE9der \xE0 la carte SIM, ou une cha\xEEne vide il n\x27a pas \xE9t\xE9 configur\xE9 ou si la SIM a rejet\xE9 le code indiqu\xE9',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_PIN_INVALID</tt>.'};
+doc['Cellular']['get_pingInterval']={syn:'Retourne l\x27intervalle entre les tests de connectivit\xE9 spontan\xE9s, en secondes.',lib:'cellular.get_pingInterval()',pro:'def get_pingInterval()',cmt:'<p>Retourne l\x27intervalle entre les tests de connectivit\xE9 spontan\xE9s, en secondes.</p>',ret:'un entier repr&eacute;sentant l\x27intervalle entre les tests de connectivit\xE9 spontan\xE9s, en secondes',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_PINGINTERVAL_INVALID</tt>.'};
+doc['Cellular']['get_userData']={syn:'Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>.',lib:'cellular.get_userData()',pro:'def get_userData()',cmt:'<p>Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',ret:'l\x27objet stock\xE9 pr\xE9c\xE9demment par l\x27appelant.'};
+doc['Cellular']['isOnline']={syn:'V\xE9rifie si le module h\xE9bergeant l\x27interface cellulaire est joignable, sans d\xE9clencher d\x27erreur.',lib:'cellular.isOnline()',pro:'def isOnline()',cmt:'<p>V\xE9rifie si le module h\xE9bergeant l\x27interface cellulaire est joignable, sans d\xE9clencher d\x27erreur. Si les valeurs des attributs en cache de l\x27interface cellulaire sont valides au moment de l\x27appel, le module est consid\xE9r\xE9 joignable. Cette fonction ne cause en aucun cas d\x27exception, quelle que soit l\x27erreur qui pourrait se produire lors de la v\xE9rification de joignabilit\xE9.</p>',ret:'<tt>true</tt> si l\x27interface cellulaire est joignable, <tt>false</tt> sinon'};
+doc['Cellular']['load']={syn:'Met en cache les valeurs courantes de l\x27interface cellulaire, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e.',lib:'cellular.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Met en cache les valeurs courantes de l\x27interface cellulaire, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e. Par d\xE9faut, lorsqu\x27on acc\xE8de \xE0 un module, tous les attributs des fonctions du module sont automatiquement mises en cache pour la dur\xE9e standard (5 ms). Cette m\xE9thode peut \xEAtre utilis\xE9e pour marquer occasionellement les donn\xE9es cach\xE9es comme valides pour une plus longue p\xE9riode, par exemple dans le but de r\xE9duire le trafic r\xE9seau.</p>',par:{msValidity:'un entier correspondant \xE0 la dur\xE9e de validit\xE9 attribu\xE9e aux les param\xE8tres charg\xE9s, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Cellular']['loadAttribute']={syn:'Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.',lib:'cellular.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un cha\xEEne vide.'};
+doc['Cellular']['muteValueCallbacks']={syn:'D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'cellular.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Vous pouvez utiliser cette fonction pour \xE9conomiser la bande passante et le CPU sur les machines de faible puissance, ou pour \xE9viter le d\xE9clanchement de callbacks HTTP. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Cellular']['nextCellular']={syn:'Continue l\x27\xE9num\xE9ration des interfaces r\xE9seau cellulaire commenc\xE9e \xE0 l\x27aide de <tt>yFirstCellular()</tt>.',lib:'cellular.nextCellular()',pro:'def nextCellular()',cmt:'<p>Continue l\x27\xE9num\xE9ration des interfaces r\xE9seau cellulaire commenc\xE9e \xE0 l\x27aide de <tt>yFirstCellular()</tt>.</p>',ret:'un pointeur sur un objet <tt>YCellular</tt> accessible en ligne, ou <tt>null</tt> lorsque l\x27\xE9num\xE9ration est termin\xE9e.'};
+doc['Cellular']['quickCellSurvey']={syn:'Retourne la liste d\x27identifiants pour les antennes GSM \xE0 proximit\xE9, telle que requise pour g\xE9olocaliser rapidement le module.',lib:'cellular.quickCellSurvey()',pro:'def quickCellSurvey()',cmt:'<p>Retourne la liste d\x27identifiants pour les antennes GSM \xE0 proximit\xE9, telle que requise pour g\xE9olocaliser rapidement le module. La premi\xE8re antenne list\xE9e est la cellule active, et les suivantes sont les cellules voisines list\xE9e par la cellule active.</p>',ret:'une liste de YCellRecord.'};
+doc['Cellular']['registerValueCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e.',lib:'cellular.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callback peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callback ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et la cha\xEEne de caract\xE8re d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['Cellular']['sendPUK']={syn:'Envoie le code PUK \xE0 la carte SIM pour la d\xE9bloquer apr\xE8s trois \xE9checs cons\xE9cutifs de code PIN, et \xE9tablit un nouveau code PIN dans la SIM.',lib:'cellular.sendPUK()',pro:'def sendPUK(<span id=pn>puk</span>, <span id=pn>newPin</span>)',cmt:'<p>Envoie le code PUK \xE0 la carte SIM pour la d\xE9bloquer apr\xE8s trois \xE9checs cons\xE9cutifs de code PIN, et \xE9tablit un nouveau code PIN dans la SIM. Seules dix tentatives cons\xE9cutives de d\xE9blocage sont possibles: apr\xE8s dix tentatives infructueuses, la carte SIM sera d\xE9finitivement inutilisable. Apr\xE8s avoir appel\xE9 cette fonction, vous devrez aussi appeler la m\xE9thode <tt>set_pin()</tt> pour indiquer au YoctoHub le nouveau PIN \xE0 utiliser dans le futur.</p>',par:{puk:'code PUK de la carte SIM',newPin:'nouveau code PIN \xE0 configurer dans la carte SIM'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Cellular']['set_airplaneMode']={syn:'Modifie l\x27\xE9tat du mode avion (radio d\xE9sactiv\xE9e).',lib:'cellular.set_airplaneMode()',pro:'def set_airplaneMode(<span id=pn>newval</span>)',cmt:'<p>Modifie l\x27\xE9tat du mode avion (radio d\xE9sactiv\xE9e).</p>',par:{newval:'soit <tt>Y_AIRPLANEMODE_OFF</tt>, soit <tt>Y_AIRPLANEMODE_ON</tt>, selon l\x27\xE9tat du mode avion (radio d\xE9sactiv\xE9e)'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Cellular']['set_apn']={syn:'Retourne le nom du point d\x27acc\xE8s (APN) \xE0 utiliser, si n\xE9cessaire.',lib:'cellular.set_apn()',pro:'def set_apn(<span id=pn>newval</span>)',cmt:'<p>Retourne le nom du point d\x27acc\xE8s (APN) \xE0 utiliser, si n\xE9cessaire. Lorsque l\x27APN est vide, celui propos\xE9 par l\x27op\xE9rateur cellulaire est utilis\xE9e.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Cellular']['set_apnAuth']={syn:'Configure les param\xE8tres d\x27identification pour se connecter \xE0 l\x27APN.',lib:'cellular.set_apnAuth()',pro:'def set_apnAuth(<span id=pn>username</span>, <span id=pn>password</span>)',cmt:'<p>Configure les param\xE8tres d\x27identification pour se connecter \xE0 l\x27APN. Les protocoles PAP et CHAP sont tous deux support\xE9s.</p>',par:{username:'nom d\x27utilisateur',password:'mot de passe'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Cellular']['set_dataReceived']={syn:'Modifie la valeur du compteur d\x27octets re\xE7us.',lib:'cellular.set_dataReceived()',pro:'def set_dataReceived(<span id=pn>newval</span>)',cmt:'<p>Modifie la valeur du compteur d\x27octets re\xE7us.</p>',par:{newval:'un entier repr&eacute;sentant la valeur du compteur d\x27octets re\xE7us'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Cellular']['set_dataSent']={syn:'Modifie la valeur du compteur d\x27octets envoy\xE9s.',lib:'cellular.set_dataSent()',pro:'def set_dataSent(<span id=pn>newval</span>)',cmt:'<p>Modifie la valeur du compteur d\x27octets envoy\xE9s.</p>',par:{newval:'un entier repr&eacute;sentant la valeur du compteur d\x27octets envoy\xE9s'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Cellular']['set_enableData']={syn:'Modifie la condition dans laquelle le service de donn\xE9es IP (GRPS) doit \xEAtre activ\xE9.',lib:'cellular.set_enableData()',pro:'def set_enableData(<span id=pn>newval</span>)',cmt:'<p>Modifie la condition dans laquelle le service de donn\xE9es IP (GRPS) doit \xEAtre activ\xE9. Le service peut \xEAtre soit compl\xE8tement d\xE9sactiv\xE9, soit limit\xE9 au r\xE9seau de de l\x27\xE9metteur de la carte SIM, soit \xEAtre activ\xE9 pour tous les r\xE9seaux en partenariat avec la carte SIM (roaming). Attention, l\x27utilisation de donn\xE9es en roaming peut conduire \xE0 des co\xFBts de t\xE9l\xE9communication exhorbitants !</p><p> Lorsque le service de donn\xE9e n\x27est pas actif, seules les communications par SMS sont possibles.</p>',par:{newval:'une valeur parmi <tt>Y_ENABLEDATA_HOMENETWORK</tt>, <tt>Y_ENABLEDATA_ROAMING</tt>, <tt>Y_ENABLEDATA_NEVER</tt> et <tt>Y_ENABLEDATA_NEUTRALITY</tt> repr&eacute;sentant la condition dans laquelle le service de donn\xE9es IP (GRPS) doit \xEAtre activ\xE9'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Cellular']['set_lockedOperator']={syn:'Modifie le nom de l\x27op\xE9rateur de r\xE9seau cellulaire \xE0 utiliser.',lib:'cellular.set_lockedOperator()',pro:'def set_lockedOperator(<span id=pn>newval</span>)',cmt:'<p>Modifie le nom de l\x27op\xE9rateur de r\xE9seau cellulaire \xE0 utiliser. Si le nom est une cha\xEEne vide, le choix sera fait automatiquement selon la carte SIM. Sinon, seul l\x27op\xE9rateur choisi sera utilis\xE9.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant le nom de l\x27op\xE9rateur de r\xE9seau cellulaire \xE0 utiliser'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Cellular']['set_logicalName']={syn:'Modifie le nom logique de l\x27interface cellulaire.',lib:'cellular.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Modifie le nom logique de l\x27interface cellulaire. Vous pouvez utiliser <tt>yCheckLogicalName()</tt> pour v\xE9rifier si votre param\xE8tre est valide. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique de l\x27interface cellulaire.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27appel se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Cellular']['set_pin']={syn:'Modifie le code PIN utilis\xE9 par le module pour acc\xE9der \xE0 la carte SIM.',lib:'cellular.set_pin()',pro:'def set_pin(<span id=pn>newval</span>)',cmt:'<p>Modifie le code PIN utilis\xE9 par le module pour acc\xE9der \xE0 la carte SIM. Cette fonction ne change pas le code sur la carte SIM elle-m\xEAme, mais uniquement le param\xE8tre utilis\xE9 par le module pour essayer d\x27en obtenir l\x27acc\xE8s. Si le code SIM ne fonctionne pas d\xE8s le premier essai, il sera automatiquement oubli\xE9 et un message \x22Enter SIM PIN\x22 appara\xEEtre dans l\x27attribut \x27message\x27. Il faudra alors appeler \xE0 nouveau cette m\xE9thode avec le bon code PIN. Apr\xE8s trois essais infructueux cons\xE9cutifs le message devient \x22Enter SIM PUK\x22 et il faut alors entrer le code PUK de la carte SIM avec la m\xE9thode <tt>sendPUK</tt>.</p><p> N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module pour que le param\xE8tre soit sauvegard\xE9 dans la flash.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant le code PIN utilis\xE9 par le module pour acc\xE9der \xE0 la carte SIM'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Cellular']['set_pingInterval']={syn:'Modifie l\x27intervalle entre les tests de connectivit\xE9 spontan\xE9s, en secondes.',lib:'cellular.set_pingInterval()',pro:'def set_pingInterval(<span id=pn>newval</span>)',cmt:'<p>Modifie l\x27intervalle entre les tests de connectivit\xE9 spontan\xE9s, en secondes.</p>',par:{newval:'un entier repr&eacute;sentant l\x27intervalle entre les tests de connectivit\xE9 spontan\xE9s, en secondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Cellular']['set_userData']={syn:'Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>.',lib:'cellular.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',par:{data:'objet quelconque \xE0 m\xE9moriser'}};
+doc['Cellular']['unmuteValueCallbacks']={syn:'R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'cellular.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Cette fonction annule un pr\xE9c\xE9dent appel \xE0 <tt>muteValueCallbacks()</tt>. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+//--- (end of generated code: Cellular)
+//--- (generated code: AudioOut)
+doc['AudioOut']={'':{syn:'Interface de la fonction AudioOut',inc:'from yocto_audioout import *',cmt:'<p>La librairie de programmation Yoctopuce permet de configurer le volume de la sortie audio.</p>'}};
+doc['AudioOut']['FindAudioOut']={syn:'Permet de retrouver une sortie audio d\x27apr\xE8s un identifiant donn\xE9.',lib:'YAudioOut.FindAudioOut()',pro:'def FindAudioOut(<span id=pn>func</span>)',cmt:'<p>Permet de retrouver une sortie audio d\x27apr\xE8s un identifiant donn\xE9. L\x27identifiant peut \xEAtre sp\xE9cifi\xE9 sous plusieurs formes:<br> <ul> <li>NomLogiqueFonction</li> <li>NoSerieModule.IdentifiantFonction</li> <li>NoSerieModule.NomLogiqueFonction</li> <li>NomLogiqueModule.IdentifiantMat\xE9riel</li> <li>NomLogiqueModule.NomLogiqueFonction</li> </ul></p><p> Cette fonction n\x27exige pas que la sortie audio soit en ligne au moment ou elle est appel\xE9e, l\x27objet retourn\xE9 sera n\xE9anmoins valide. Utiliser la m\xE9thode <tt>YAudioOut.isOnline()</tt> pour tester si la sortie audio est utilisable \xE0 un moment donn\xE9. En cas d\x27ambigu\xEFt\xE9 lorsqu\x27on fait une recherche par nom logique, aucune erreur ne sera notifi\xE9e: la premi\xE8re instance trouv\xE9e sera renvoy\xE9e. La recherche se fait d\x27abord par nom mat\xE9riel, puis par nom logique.</p>',par:{func:'une cha\xEEne de caract\xE8res qui r\xE9f\xE9rence la sortie audio sans ambigu\xEFt\xE9'},ret:'un objet de classe <tt>YAudioOut</tt> qui permet ensuite de contr\xF4ler la sortie audio.'};
+doc['AudioOut']['FirstAudioOut']={syn:'Commence l\x27\xE9num\xE9ration des sorties audio accessibles par la librairie.',lib:'YAudioOut.FirstAudioOut()',pro:'def FirstAudioOut()',cmt:'<p>Commence l\x27\xE9num\xE9ration des sorties audio accessibles par la librairie. Utiliser la fonction <tt>YAudioOut.nextAudioOut()</tt> pour it\xE9rer sur les autres sorties audio.</p>',ret:'un pointeur sur un objet <tt>YAudioOut</tt>, correspondant \xE0 la premi\xE8re sortie audio accessible en ligne, ou <tt>null</tt> si il n\x27y a pas de sorties audio disponibles.'};
+doc['AudioOut']['clearCache']={syn:'Invalide le cache.',lib:'audioout.clearCache()',pro:'def clearCache()',cmt:'<p>Invalide le cache. Invalide le cache des valeurs courantes de la sortie audio. Force le prochain appel \xE0 une m\xE9thode get_xxx() ou loadxxx() pour charger les les donn\xE9es depuis le module.</p>'};
+doc['AudioOut']['describe']={syn:'Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance de la sortie audio au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'audioout.describe()',pro:'def describe()',cmt:'<p>Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance de la sortie audio au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. Plus pr\xE9cis\xE9ment, <tt>TYPE</tt> correspond au type de fonction, <tt>NAME</tt> correspond au nom utils\xE9 lors du premier acc\xE8s a la fonction, <tt>SERIAL</tt> correspond au num\xE9ro de s\xE9rie du module si le module est connect\xE9, ou <tt>\x22unresolved\x22</tt> sinon, et <tt>FUNCTIONID</tt> correspond \xE0 l\x27identifiant mat\xE9riel de la fonction si le module est connect\xE9. Par exemple, La methode va retourner <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> si le module est d\xE9j\xE0 connect\xE9 ou <tt>Relay(BadCustomeName.relay1)=unresolved</tt> si le module n\x27est pas d\xE9j\xE0 connect\xE9. Cette methode ne declenche aucune transaction USB ou TCP et peut donc \xEAtre utilis\xE9 dans un debuggeur.</p>',ret:'une cha\xEEne de caract\xE8res d\xE9crivant la sortie audio (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['AudioOut']['get_advertisedValue']={syn:'Retourne la valeur courante de la sortie audio (pas plus de 6 caract\xE8res).',lib:'audioout.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Retourne la valeur courante de la sortie audio (pas plus de 6 caract\xE8res).</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur courante de la sortie audio (pas plus de 6 caract\xE8res).',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['AudioOut']['get_errorMessage']={syn:'Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de la sortie audio.',lib:'audioout.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de la sortie audio. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'une cha\xEEne de caract\xE8res correspondant au message de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation de la sortie audio.'};
+doc['AudioOut']['get_errorType']={syn:'Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de la sortie audio.',lib:'audioout.get_errorType()',pro:'def get_errorType()',cmt:'<p>Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de la sortie audio. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'un nombre correspondant au code de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation de la sortie audio.'};
+doc['AudioOut']['get_friendlyName']={syn:'Retourne un identifiant global de la sortie audio au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>.',lib:'audioout.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Retourne un identifiant global de la sortie audio au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>. Le cha\xEEne retourn\xE9e utilise soit les noms logiques du module et de la sortie audio si ils sont d\xE9finis, soit respectivement le num\xE9ro de s\xE9rie du module et l\x27identifant mat\xE9riel de la sortie audio (par exemple: <tt>MyCustomName.relay1</tt>)</p>',ret:'une cha\xEEne de caract\xE8res identifiant la sortie audio en utilisant les noms logiques (ex: <tt>MyCustomName.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['AudioOut']['get_functionDescriptor']={syn:'Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction.',lib:'audioout.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction. Cet identifiant peut \xEAtre utilis\xE9 pour tester si deux instance de <tt>YFunction</tt> r\xE9f\xE9rencent physiquement la m\xEAme fonction sur le m\xEAme module.</p>',ret:'un identifiant de type <tt>YFUN_DESCR</tt>.',ext:'Si la fonction n\x27a jamais \xE9t\xE9 contact\xE9e, la valeur retourn\xE9e sera <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>'};
+doc['AudioOut']['get_functionId']={syn:'Retourne l\x27identifiant mat\xE9riel de la sortie audio, sans r\xE9f\xE9rence au module.',lib:'audioout.get_functionId()',pro:'def get_functionId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel de la sortie audio, sans r\xE9f\xE9rence au module. Par example <tt>relay1</tt>.</p>',ret:'une cha\xEEne de caract\xE8res identifiant la sortie audio (ex: <tt>relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['AudioOut']['get_hardwareId']={syn:'Retourne l\x27identifiant mat\xE9riel unique de la sortie audio au format <tt>SERIAL.FUNCTIONID</tt>.',lib:'audioout.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel unique de la sortie audio au format <tt>SERIAL.FUNCTIONID</tt>. L\x27identifiant unique est compos\xE9 du num\xE9ro de s\xE9rie du module et de l\x27identifiant mat\xE9riel de la sortie audio (par example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'une cha\xEEne de caract\xE8res identifiant la sortie audio (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['AudioOut']['get_logicalName']={syn:'Retourne le nom logique de la sortie audio.',lib:'audioout.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Retourne le nom logique de la sortie audio.</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique de la sortie audio.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['AudioOut']['get_module']={syn:'Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction.',lib:'audioout.get_module()',pro:'def get_module()',cmt:'<p>Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction. Si la fonction ne peut \xEAtre trouv\xE9e sur aucun module, l\x27instance de <tt>YModule</tt> retourn\xE9e ne sera pas joignable.</p>',ret:'une instance de <tt>YModule</tt>'};
+doc['AudioOut']['get_mute']={syn:'Retourne l\x27\xE9tat de la fonction silencieux (mute) de la sortie audio.',lib:'audioout.get_mute()',pro:'def get_mute()',cmt:'<p>Retourne l\x27\xE9tat de la fonction silencieux (mute) de la sortie audio.</p>',ret:'soit <tt>Y_MUTE_FALSE</tt>, soit <tt>Y_MUTE_TRUE</tt>, selon l\x27\xE9tat de la fonction silencieux (mute) de la sortie audio',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_MUTE_INVALID</tt>.'};
+doc['AudioOut']['get_noSignalFor']={syn:'Retourne le nombre de secondes sans signal d\xE9tect\xE9.',lib:'audioout.get_noSignalFor()',pro:'def get_noSignalFor()',cmt:'<p>Retourne le nombre de secondes sans signal d\xE9tect\xE9.</p>',ret:'un entier repr&eacute;sentant le nombre de secondes sans signal d\xE9tect\xE9',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_NOSIGNALFOR_INVALID</tt>.'};
+doc['AudioOut']['get_signal']={syn:'Retourne l\x27amplitude du courant \xE9mis d\xE9tect\xE9.',lib:'audioout.get_signal()',pro:'def get_signal()',cmt:'<p>Retourne l\x27amplitude du courant \xE9mis d\xE9tect\xE9.</p>',ret:'un entier repr&eacute;sentant l\x27amplitude du courant \xE9mis d\xE9tect\xE9',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_SIGNAL_INVALID</tt>.'};
+doc['AudioOut']['get_userData']={syn:'Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>.',lib:'audioout.get_userData()',pro:'def get_userData()',cmt:'<p>Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',ret:'l\x27objet stock\xE9 pr\xE9c\xE9demment par l\x27appelant.'};
+doc['AudioOut']['get_volume']={syn:'Retourne le volume de la sortie audio, en pour cents.',lib:'audioout.get_volume()',pro:'def get_volume()',cmt:'<p>Retourne le volume de la sortie audio, en pour cents.</p>',ret:'un entier repr&eacute;sentant le volume de la sortie audio, en pour cents',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_VOLUME_INVALID</tt>.'};
+doc['AudioOut']['get_volumeRange']={syn:'Retourne la plage de valeurs support\xE9es pour le volume.',lib:'audioout.get_volumeRange()',pro:'def get_volumeRange()',cmt:'<p>Retourne la plage de valeurs support\xE9es pour le volume. La valeur basse de l\x27intervalle correspond au volume minimal audible. Pour couper compl\xE8tement le son, utilisez <tt>set_mute()</tt> et non le <tt>set_volume()</tt>.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la plage de valeurs support\xE9es pour le volume',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_VOLUMERANGE_INVALID</tt>.'};
+doc['AudioOut']['isOnline']={syn:'V\xE9rifie si le module h\xE9bergeant la sortie audio est joignable, sans d\xE9clencher d\x27erreur.',lib:'audioout.isOnline()',pro:'def isOnline()',cmt:'<p>V\xE9rifie si le module h\xE9bergeant la sortie audio est joignable, sans d\xE9clencher d\x27erreur. Si les valeurs des attributs en cache de la sortie audio sont valides au moment de l\x27appel, le module est consid\xE9r\xE9 joignable. Cette fonction ne cause en aucun cas d\x27exception, quelle que soit l\x27erreur qui pourrait se produire lors de la v\xE9rification de joignabilit\xE9.</p>',ret:'<tt>true</tt> si la sortie audio est joignable, <tt>false</tt> sinon'};
+doc['AudioOut']['load']={syn:'Met en cache les valeurs courantes de la sortie audio, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e.',lib:'audioout.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Met en cache les valeurs courantes de la sortie audio, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e. Par d\xE9faut, lorsqu\x27on acc\xE8de \xE0 un module, tous les attributs des fonctions du module sont automatiquement mises en cache pour la dur\xE9e standard (5 ms). Cette m\xE9thode peut \xEAtre utilis\xE9e pour marquer occasionellement les donn\xE9es cach\xE9es comme valides pour une plus longue p\xE9riode, par exemple dans le but de r\xE9duire le trafic r\xE9seau.</p>',par:{msValidity:'un entier correspondant \xE0 la dur\xE9e de validit\xE9 attribu\xE9e aux les param\xE8tres charg\xE9s, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['AudioOut']['loadAttribute']={syn:'Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.',lib:'audioout.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un cha\xEEne vide.'};
+doc['AudioOut']['muteValueCallbacks']={syn:'D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'audioout.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Vous pouvez utiliser cette fonction pour \xE9conomiser la bande passante et le CPU sur les machines de faible puissance, ou pour \xE9viter le d\xE9clanchement de callbacks HTTP. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['AudioOut']['nextAudioOut']={syn:'Continue l\x27\xE9num\xE9ration des sorties audio commenc\xE9e \xE0 l\x27aide de <tt>yFirstAudioOut()</tt>.',lib:'audioout.nextAudioOut()',pro:'def nextAudioOut()',cmt:'<p>Continue l\x27\xE9num\xE9ration des sorties audio commenc\xE9e \xE0 l\x27aide de <tt>yFirstAudioOut()</tt>.</p>',ret:'un pointeur sur un objet <tt>YAudioOut</tt> accessible en ligne, ou <tt>null</tt> lorsque l\x27\xE9num\xE9ration est termin\xE9e.'};
+doc['AudioOut']['registerValueCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e.',lib:'audioout.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callback peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callback ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et la cha\xEEne de caract\xE8re d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['AudioOut']['set_logicalName']={syn:'Modifie le nom logique de la sortie audio.',lib:'audioout.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Modifie le nom logique de la sortie audio. Vous pouvez utiliser <tt>yCheckLogicalName()</tt> pour v\xE9rifier si votre param\xE8tre est valide. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique de la sortie audio.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27appel se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['AudioOut']['set_mute']={syn:'Modifie l\x27\xE9tat de la fonction silencieux (mute) de la sortie audio.',lib:'audioout.set_mute()',pro:'def set_mute(<span id=pn>newval</span>)',cmt:'<p>Modifie l\x27\xE9tat de la fonction silencieux (mute) de la sortie audio. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si vous d\xE9sirez que le r\xE9glage soit pr\xE9serv\xE9 au prochain red\xE9marrage.</p>',par:{newval:'soit <tt>Y_MUTE_FALSE</tt>, soit <tt>Y_MUTE_TRUE</tt>, selon l\x27\xE9tat de la fonction silencieux (mute) de la sortie audio'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['AudioOut']['set_userData']={syn:'Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>.',lib:'audioout.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',par:{data:'objet quelconque \xE0 m\xE9moriser'}};
+doc['AudioOut']['set_volume']={syn:'Modifie le volume de la sortie audio, en pour cents.',lib:'audioout.set_volume()',pro:'def set_volume(<span id=pn>newval</span>)',cmt:'<p>Modifie le volume de la sortie audio, en pour cents.</p>',par:{newval:'un entier repr&eacute;sentant le volume de la sortie audio, en pour cents'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['AudioOut']['unmuteValueCallbacks']={syn:'R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'audioout.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Cette fonction annule un pr\xE9c\xE9dent appel \xE0 <tt>muteValueCallbacks()</tt>. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+//--- (end of generated code: AudioOut)
+//--- (generated code: BluetoothLink)
+doc['BluetoothLink']={'':{syn:'Interface de la fonction BluetoothLink',inc:'from yocto_bluetoothlink import *',cmt:'<p>La fonction BluetoothLink permet de configurer et de contr\xF4ler une liaison bluetooth sur les modules Yoctopuce qui en sont dot\xE9s.</p>'}};
+doc['BluetoothLink']['FindBluetoothLink']={syn:'Permet de retrouver une interface cellulaire d\x27apr\xE8s un identifiant donn\xE9.',lib:'YBluetoothLink.FindBluetoothLink()',pro:'def FindBluetoothLink(<span id=pn>func</span>)',cmt:'<p>Permet de retrouver une interface cellulaire d\x27apr\xE8s un identifiant donn\xE9. L\x27identifiant peut \xEAtre sp\xE9cifi\xE9 sous plusieurs formes:<br> <ul> <li>NomLogiqueFonction</li> <li>NoSerieModule.IdentifiantFonction</li> <li>NoSerieModule.NomLogiqueFonction</li> <li>NomLogiqueModule.IdentifiantMat\xE9riel</li> <li>NomLogiqueModule.NomLogiqueFonction</li> </ul></p><p> Cette fonction n\x27exige pas que l\x27interface cellulaire soit en ligne au moment ou elle est appel\xE9e, l\x27objet retourn\xE9 sera n\xE9anmoins valide. Utiliser la m\xE9thode <tt>YBluetoothLink.isOnline()</tt> pour tester si l\x27interface cellulaire est utilisable \xE0 un moment donn\xE9. En cas d\x27ambigu\xEFt\xE9 lorsqu\x27on fait une recherche par nom logique, aucune erreur ne sera notifi\xE9e: la premi\xE8re instance trouv\xE9e sera renvoy\xE9e. La recherche se fait d\x27abord par nom mat\xE9riel, puis par nom logique.</p>',par:{func:'une cha\xEEne de caract\xE8res qui r\xE9f\xE9rence l\x27interface cellulaire sans ambigu\xEFt\xE9'},ret:'un objet de classe <tt>YBluetoothLink</tt> qui permet ensuite de contr\xF4ler l\x27interface cellulaire.'};
+doc['BluetoothLink']['FirstBluetoothLink']={syn:'Commence l\x27\xE9num\xE9ration des interfaces r\xE9seau cellulaire accessibles par la librairie.',lib:'YBluetoothLink.FirstBluetoothLink()',pro:'def FirstBluetoothLink()',cmt:'<p>Commence l\x27\xE9num\xE9ration des interfaces r\xE9seau cellulaire accessibles par la librairie. Utiliser la fonction <tt>YBluetoothLink.nextBluetoothLink()</tt> pour it\xE9rer sur les autres interfaces r\xE9seau cellulaire.</p>',ret:'un pointeur sur un objet <tt>YBluetoothLink</tt>, correspondant \xE0 la premi\xE8re interface cellulaire accessible en ligne, ou <tt>null</tt> si il n\x27y a pas de interfaces r\xE9seau cellulaire disponibles.'};
+doc['BluetoothLink']['clearCache']={syn:'Invalide le cache.',lib:'bluetoothlink.clearCache()',pro:'def clearCache()',cmt:'<p>Invalide le cache. Invalide le cache des valeurs courantes de l\x27interface cellulaire. Force le prochain appel \xE0 une m\xE9thode get_xxx() ou loadxxx() pour charger les les donn\xE9es depuis le module.</p>'};
+doc['BluetoothLink']['connect']={syn:'Etablit la connection bluetooth avec l\x27appareil distant pr\xE9alablement choisi.',lib:'bluetoothlink.connect()',pro:'def connect()',cmt:'<p>Etablit la connection bluetooth avec l\x27appareil distant pr\xE9alablement choisi.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['BluetoothLink']['describe']={syn:'Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance de l\x27interface cellulaire au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'bluetoothlink.describe()',pro:'def describe()',cmt:'<p>Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance de l\x27interface cellulaire au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. Plus pr\xE9cis\xE9ment, <tt>TYPE</tt> correspond au type de fonction, <tt>NAME</tt> correspond au nom utils\xE9 lors du premier acc\xE8s a la fonction, <tt>SERIAL</tt> correspond au num\xE9ro de s\xE9rie du module si le module est connect\xE9, ou <tt>\x22unresolved\x22</tt> sinon, et <tt>FUNCTIONID</tt> correspond \xE0 l\x27identifiant mat\xE9riel de la fonction si le module est connect\xE9. Par exemple, La methode va retourner <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> si le module est d\xE9j\xE0 connect\xE9 ou <tt>Relay(BadCustomeName.relay1)=unresolved</tt> si le module n\x27est pas d\xE9j\xE0 connect\xE9. Cette methode ne declenche aucune transaction USB ou TCP et peut donc \xEAtre utilis\xE9 dans un debuggeur.</p>',ret:'une cha\xEEne de caract\xE8res d\xE9crivant l\x27interface cellulaire (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['BluetoothLink']['disconnect']={syn:'Interrompt la connection bluetooth avec l\x27appareil distant.',lib:'bluetoothlink.disconnect()',pro:'def disconnect()',cmt:'<p>Interrompt la connection bluetooth avec l\x27appareil distant.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['BluetoothLink']['get_advertisedValue']={syn:'Retourne la valeur courante de l\x27interface cellulaire (pas plus de 6 caract\xE8res).',lib:'bluetoothlink.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Retourne la valeur courante de l\x27interface cellulaire (pas plus de 6 caract\xE8res).</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur courante de l\x27interface cellulaire (pas plus de 6 caract\xE8res).',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['BluetoothLink']['get_errorMessage']={syn:'Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de l\x27interface cellulaire.',lib:'bluetoothlink.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de l\x27interface cellulaire. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'une cha\xEEne de caract\xE8res correspondant au message de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation de l\x27interface cellulaire.'};
+doc['BluetoothLink']['get_errorType']={syn:'Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de l\x27interface cellulaire.',lib:'bluetoothlink.get_errorType()',pro:'def get_errorType()',cmt:'<p>Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de l\x27interface cellulaire. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'un nombre correspondant au code de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation de l\x27interface cellulaire.'};
+doc['BluetoothLink']['get_friendlyName']={syn:'Retourne un identifiant global de l\x27interface cellulaire au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>.',lib:'bluetoothlink.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Retourne un identifiant global de l\x27interface cellulaire au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>. Le cha\xEEne retourn\xE9e utilise soit les noms logiques du module et de l\x27interface cellulaire si ils sont d\xE9finis, soit respectivement le num\xE9ro de s\xE9rie du module et l\x27identifant mat\xE9riel de l\x27interface cellulaire (par exemple: <tt>MyCustomName.relay1</tt>)</p>',ret:'une cha\xEEne de caract\xE8res identifiant l\x27interface cellulaire en utilisant les noms logiques (ex: <tt>MyCustomName.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['BluetoothLink']['get_functionDescriptor']={syn:'Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction.',lib:'bluetoothlink.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction. Cet identifiant peut \xEAtre utilis\xE9 pour tester si deux instance de <tt>YFunction</tt> r\xE9f\xE9rencent physiquement la m\xEAme fonction sur le m\xEAme module.</p>',ret:'un identifiant de type <tt>YFUN_DESCR</tt>.',ext:'Si la fonction n\x27a jamais \xE9t\xE9 contact\xE9e, la valeur retourn\xE9e sera <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>'};
+doc['BluetoothLink']['get_functionId']={syn:'Retourne l\x27identifiant mat\xE9riel de l\x27interface cellulaire, sans r\xE9f\xE9rence au module.',lib:'bluetoothlink.get_functionId()',pro:'def get_functionId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel de l\x27interface cellulaire, sans r\xE9f\xE9rence au module. Par example <tt>relay1</tt>.</p>',ret:'une cha\xEEne de caract\xE8res identifiant l\x27interface cellulaire (ex: <tt>relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['BluetoothLink']['get_hardwareId']={syn:'Retourne l\x27identifiant mat\xE9riel unique de l\x27interface cellulaire au format <tt>SERIAL.FUNCTIONID</tt>.',lib:'bluetoothlink.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel unique de l\x27interface cellulaire au format <tt>SERIAL.FUNCTIONID</tt>. L\x27identifiant unique est compos\xE9 du num\xE9ro de s\xE9rie du module et de l\x27identifiant mat\xE9riel de l\x27interface cellulaire (par example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'une cha\xEEne de caract\xE8res identifiant l\x27interface cellulaire (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['BluetoothLink']['get_linkQuality']={syn:'Retourne la qualit\xE9 du signal bluetooth re\xE7u, en pourcents, ou 0 si aucune connection n\x27est active.',lib:'bluetoothlink.get_linkQuality()',pro:'def get_linkQuality()',cmt:'<p>Retourne la qualit\xE9 du signal bluetooth re\xE7u, en pourcents, ou 0 si aucune connection n\x27est active.</p>',ret:'un entier repr&eacute;sentant la qualit\xE9 du signal bluetooth re\xE7u, en pourcents, ou 0 si aucune connection n\x27est active',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_LINKQUALITY_INVALID</tt>.'};
+doc['BluetoothLink']['get_linkState']={syn:'Retourne l\x27\xE9tat du lien bluetooth re\xE7u.',lib:'bluetoothlink.get_linkState()',pro:'def get_linkState()',cmt:'<p>Retourne l\x27\xE9tat du lien bluetooth re\xE7u.</p>',ret:'une valeur parmi <tt>Y_LINKSTATE_DOWN</tt>, <tt>Y_LINKSTATE_FREE</tt>, <tt>Y_LINKSTATE_SEARCH</tt>, <tt>Y_LINKSTATE_EXISTS</tt>, <tt>Y_LINKSTATE_LINKED</tt> et <tt>Y_LINKSTATE_PLAY</tt> repr&eacute;sentant l\x27\xE9tat du lien bluetooth re\xE7u',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_LINKSTATE_INVALID</tt>.'};
+doc['BluetoothLink']['get_logicalName']={syn:'Retourne le nom logique de l\x27interface cellulaire.',lib:'bluetoothlink.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Retourne le nom logique de l\x27interface cellulaire.</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique de l\x27interface cellulaire.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['BluetoothLink']['get_module']={syn:'Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction.',lib:'bluetoothlink.get_module()',pro:'def get_module()',cmt:'<p>Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction. Si la fonction ne peut \xEAtre trouv\xE9e sur aucun module, l\x27instance de <tt>YModule</tt> retourn\xE9e ne sera pas joignable.</p>',ret:'une instance de <tt>YModule</tt>'};
+doc['BluetoothLink']['get_mute']={syn:'Retourne l\x27\xE9tat de la fonction silencieux (mute) de la sortie audio.',lib:'bluetoothlink.get_mute()',pro:'def get_mute()',cmt:'<p>Retourne l\x27\xE9tat de la fonction silencieux (mute) de la sortie audio.</p>',ret:'soit <tt>Y_MUTE_FALSE</tt>, soit <tt>Y_MUTE_TRUE</tt>, selon l\x27\xE9tat de la fonction silencieux (mute) de la sortie audio',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_MUTE_INVALID</tt>.'};
+doc['BluetoothLink']['get_ownAddress']={syn:'Retourne l\x27adresse MAC-48 de l\x27interface bluetooth, unique sur le r\xE9seau bluetooth.',lib:'bluetoothlink.get_ownAddress()',pro:'def get_ownAddress()',cmt:'<p>Retourne l\x27adresse MAC-48 de l\x27interface bluetooth, unique sur le r\xE9seau bluetooth.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant l\x27adresse MAC-48 de l\x27interface bluetooth, unique sur le r\xE9seau bluetooth',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_OWNADDRESS_INVALID</tt>.'};
+doc['BluetoothLink']['get_pairingPin']={syn:'Retourne une string opaque si un code PIN a \xE9t\xE9 configur\xE9 dans le module pour le pairing, ou une cha\xEEne vide il n\x27a pas \xE9t\xE9 configur\xE9 ou si la SIM a rejet\xE9 le code indiqu\xE9.',lib:'bluetoothlink.get_pairingPin()',pro:'def get_pairingPin()',cmt:'<p>Retourne une string opaque si un code PIN a \xE9t\xE9 configur\xE9 dans le module pour le pairing, ou une cha\xEEne vide il n\x27a pas \xE9t\xE9 configur\xE9 ou si la SIM a rejet\xE9 le code indiqu\xE9.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant une string opaque si un code PIN a \xE9t\xE9 configur\xE9 dans le module pour le pairing, ou une cha\xEEne vide il n\x27a pas \xE9t\xE9 configur\xE9 ou si la SIM a rejet\xE9 le code indiqu\xE9',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_PAIRINGPIN_INVALID</tt>.'};
+doc['BluetoothLink']['get_preAmplifier']={syn:'Retourne le volume du pr\xE9-amplificateur audio, en pour cents.',lib:'bluetoothlink.get_preAmplifier()',pro:'def get_preAmplifier()',cmt:'<p>Retourne le volume du pr\xE9-amplificateur audio, en pour cents.</p>',ret:'un entier repr&eacute;sentant le volume du pr\xE9-amplificateur audio, en pour cents',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_PREAMPLIFIER_INVALID</tt>.'};
+doc['BluetoothLink']['get_remoteAddress']={syn:'Retourne l\x27adresse MAC-48 bluetooth de l\x27appareil distant \xE0 connecter.',lib:'bluetoothlink.get_remoteAddress()',pro:'def get_remoteAddress()',cmt:'<p>Retourne l\x27adresse MAC-48 bluetooth de l\x27appareil distant \xE0 connecter.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant l\x27adresse MAC-48 bluetooth de l\x27appareil distant \xE0 connecter',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_REMOTEADDRESS_INVALID</tt>.'};
+doc['BluetoothLink']['get_remoteName']={syn:'Retourne le nom bluetooth de l\x27appareil distant, si vu sur le r\xE9seau bluetooth.',lib:'bluetoothlink.get_remoteName()',pro:'def get_remoteName()',cmt:'<p>Retourne le nom bluetooth de l\x27appareil distant, si vu sur le r\xE9seau bluetooth.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant le nom bluetooth de l\x27appareil distant, si vu sur le r\xE9seau bluetooth',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_REMOTENAME_INVALID</tt>.'};
+doc['BluetoothLink']['get_userData']={syn:'Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>.',lib:'bluetoothlink.get_userData()',pro:'def get_userData()',cmt:'<p>Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',ret:'l\x27objet stock\xE9 pr\xE9c\xE9demment par l\x27appelant.'};
+doc['BluetoothLink']['get_volume']={syn:'Retourne le volume de l\x27\xE9couteur connect\xE9, en pour cents.',lib:'bluetoothlink.get_volume()',pro:'def get_volume()',cmt:'<p>Retourne le volume de l\x27\xE9couteur connect\xE9, en pour cents.</p>',ret:'un entier repr&eacute;sentant le volume de l\x27\xE9couteur connect\xE9, en pour cents',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_VOLUME_INVALID</tt>.'};
+doc['BluetoothLink']['isOnline']={syn:'V\xE9rifie si le module h\xE9bergeant l\x27interface cellulaire est joignable, sans d\xE9clencher d\x27erreur.',lib:'bluetoothlink.isOnline()',pro:'def isOnline()',cmt:'<p>V\xE9rifie si le module h\xE9bergeant l\x27interface cellulaire est joignable, sans d\xE9clencher d\x27erreur. Si les valeurs des attributs en cache de l\x27interface cellulaire sont valides au moment de l\x27appel, le module est consid\xE9r\xE9 joignable. Cette fonction ne cause en aucun cas d\x27exception, quelle que soit l\x27erreur qui pourrait se produire lors de la v\xE9rification de joignabilit\xE9.</p>',ret:'<tt>true</tt> si l\x27interface cellulaire est joignable, <tt>false</tt> sinon'};
+doc['BluetoothLink']['load']={syn:'Met en cache les valeurs courantes de l\x27interface cellulaire, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e.',lib:'bluetoothlink.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Met en cache les valeurs courantes de l\x27interface cellulaire, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e. Par d\xE9faut, lorsqu\x27on acc\xE8de \xE0 un module, tous les attributs des fonctions du module sont automatiquement mises en cache pour la dur\xE9e standard (5 ms). Cette m\xE9thode peut \xEAtre utilis\xE9e pour marquer occasionellement les donn\xE9es cach\xE9es comme valides pour une plus longue p\xE9riode, par exemple dans le but de r\xE9duire le trafic r\xE9seau.</p>',par:{msValidity:'un entier correspondant \xE0 la dur\xE9e de validit\xE9 attribu\xE9e aux les param\xE8tres charg\xE9s, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['BluetoothLink']['loadAttribute']={syn:'Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.',lib:'bluetoothlink.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un cha\xEEne vide.'};
+doc['BluetoothLink']['muteValueCallbacks']={syn:'D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'bluetoothlink.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Vous pouvez utiliser cette fonction pour \xE9conomiser la bande passante et le CPU sur les machines de faible puissance, ou pour \xE9viter le d\xE9clanchement de callbacks HTTP. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['BluetoothLink']['nextBluetoothLink']={syn:'Continue l\x27\xE9num\xE9ration des interfaces r\xE9seau cellulaire commenc\xE9e \xE0 l\x27aide de <tt>yFirstBluetoothLink()</tt>.',lib:'bluetoothlink.nextBluetoothLink()',pro:'def nextBluetoothLink()',cmt:'<p>Continue l\x27\xE9num\xE9ration des interfaces r\xE9seau cellulaire commenc\xE9e \xE0 l\x27aide de <tt>yFirstBluetoothLink()</tt>.</p>',ret:'un pointeur sur un objet <tt>YBluetoothLink</tt> accessible en ligne, ou <tt>null</tt> lorsque l\x27\xE9num\xE9ration est termin\xE9e.'};
+doc['BluetoothLink']['registerValueCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e.',lib:'bluetoothlink.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callback peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callback ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et la cha\xEEne de caract\xE8re d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['BluetoothLink']['set_logicalName']={syn:'Modifie le nom logique de l\x27interface cellulaire.',lib:'bluetoothlink.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Modifie le nom logique de l\x27interface cellulaire. Vous pouvez utiliser <tt>yCheckLogicalName()</tt> pour v\xE9rifier si votre param\xE8tre est valide. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique de l\x27interface cellulaire.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27appel se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['BluetoothLink']['set_mute']={syn:'Modifie l\x27\xE9tat de la fonction silencieux (mute) de la sortie audio.',lib:'bluetoothlink.set_mute()',pro:'def set_mute(<span id=pn>newval</span>)',cmt:'<p>Modifie l\x27\xE9tat de la fonction silencieux (mute) de la sortie audio. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si vous d\xE9sirez que le r\xE9glage soit pr\xE9serv\xE9 au prochain red\xE9marrage.</p>',par:{newval:'soit <tt>Y_MUTE_FALSE</tt>, soit <tt>Y_MUTE_TRUE</tt>, selon l\x27\xE9tat de la fonction silencieux (mute) de la sortie audio'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['BluetoothLink']['set_pairingPin']={syn:'Modifie le code PIN utilis\xE9 par le module pour le pairing bluetooth.',lib:'bluetoothlink.set_pairingPin()',pro:'def set_pairingPin(<span id=pn>newval</span>)',cmt:'<p>Modifie le code PIN utilis\xE9 par le module pour le pairing bluetooth. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module pour que le param\xE8tre soit sauvegard\xE9 dans la flash.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant le code PIN utilis\xE9 par le module pour le pairing bluetooth'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['BluetoothLink']['set_preAmplifier']={syn:'Modifie le volume du pr\xE9-amplificateur audio, en pour cents.',lib:'bluetoothlink.set_preAmplifier()',pro:'def set_preAmplifier(<span id=pn>newval</span>)',cmt:'<p>Modifie le volume du pr\xE9-amplificateur audio, en pour cents.</p>',par:{newval:'un entier repr&eacute;sentant le volume du pr\xE9-amplificateur audio, en pour cents'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['BluetoothLink']['set_remoteAddress']={syn:'Modifie l\x27adresse MAC-48 bluetooth d\xE9finissant l\x27appareil distant \xE0 connecter.',lib:'bluetoothlink.set_remoteAddress()',pro:'def set_remoteAddress(<span id=pn>newval</span>)',cmt:'<p>Modifie l\x27adresse MAC-48 bluetooth d\xE9finissant l\x27appareil distant \xE0 connecter.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant l\x27adresse MAC-48 bluetooth d\xE9finissant l\x27appareil distant \xE0 connecter'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['BluetoothLink']['set_userData']={syn:'Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>.',lib:'bluetoothlink.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',par:{data:'objet quelconque \xE0 m\xE9moriser'}};
+doc['BluetoothLink']['set_volume']={syn:'Modifie le volume de l\x27\xE9couteur connect\xE9, en pour cents.',lib:'bluetoothlink.set_volume()',pro:'def set_volume(<span id=pn>newval</span>)',cmt:'<p>Modifie le volume de l\x27\xE9couteur connect\xE9, en pour cents.</p>',par:{newval:'un entier repr&eacute;sentant le volume de l\x27\xE9couteur connect\xE9, en pour cents'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['BluetoothLink']['unmuteValueCallbacks']={syn:'R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'bluetoothlink.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Cette fonction annule un pr\xE9c\xE9dent appel \xE0 <tt>muteValueCallbacks()</tt>. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+//--- (end of generated code: BluetoothLink)
+//--- (generated code: AudioIn)
+doc['AudioIn']={'':{syn:'Interface de la fonction AudioIn',inc:'from yocto_audioin import *',cmt:'<p>La librairie de programmation Yoctopuce permet de configurer le gain de l\x27entr\xE9e audio.</p>'}};
+doc['AudioIn']['FindAudioIn']={syn:'Permet de retrouver une entr\xE9e audio d\x27apr\xE8s un identifiant donn\xE9.',lib:'YAudioIn.FindAudioIn()',pro:'def FindAudioIn(<span id=pn>func</span>)',cmt:'<p>Permet de retrouver une entr\xE9e audio d\x27apr\xE8s un identifiant donn\xE9. L\x27identifiant peut \xEAtre sp\xE9cifi\xE9 sous plusieurs formes:<br> <ul> <li>NomLogiqueFonction</li> <li>NoSerieModule.IdentifiantFonction</li> <li>NoSerieModule.NomLogiqueFonction</li> <li>NomLogiqueModule.IdentifiantMat\xE9riel</li> <li>NomLogiqueModule.NomLogiqueFonction</li> </ul></p><p> Cette fonction n\x27exige pas que la entr\xE9e audio soit en ligne au moment ou elle est appel\xE9e, l\x27objet retourn\xE9 sera n\xE9anmoins valide. Utiliser la m\xE9thode <tt>YAudioIn.isOnline()</tt> pour tester si la entr\xE9e audio est utilisable \xE0 un moment donn\xE9. En cas d\x27ambigu\xEFt\xE9 lorsqu\x27on fait une recherche par nom logique, aucune erreur ne sera notifi\xE9e: la premi\xE8re instance trouv\xE9e sera renvoy\xE9e. La recherche se fait d\x27abord par nom mat\xE9riel, puis par nom logique.</p>',par:{func:'une cha\xEEne de caract\xE8res qui r\xE9f\xE9rence la entr\xE9e audio sans ambigu\xEFt\xE9'},ret:'un objet de classe <tt>YAudioIn</tt> qui permet ensuite de contr\xF4ler la entr\xE9e audio.'};
+doc['AudioIn']['FirstAudioIn']={syn:'Commence l\x27\xE9num\xE9ration des entr\xE9es audio accessibles par la librairie.',lib:'YAudioIn.FirstAudioIn()',pro:'def FirstAudioIn()',cmt:'<p>Commence l\x27\xE9num\xE9ration des entr\xE9es audio accessibles par la librairie. Utiliser la fonction <tt>YAudioIn.nextAudioIn()</tt> pour it\xE9rer sur les autres entr\xE9es audio.</p>',ret:'un pointeur sur un objet <tt>YAudioIn</tt>, correspondant \xE0 la premi\xE8re entr\xE9e audio accessible en ligne, ou <tt>null</tt> si il n\x27y a pas de entr\xE9es audio disponibles.'};
+doc['AudioIn']['clearCache']={syn:'Invalide le cache.',lib:'audioin.clearCache()',pro:'def clearCache()',cmt:'<p>Invalide le cache. Invalide le cache des valeurs courantes de la entr\xE9e audio. Force le prochain appel \xE0 une m\xE9thode get_xxx() ou loadxxx() pour charger les les donn\xE9es depuis le module.</p>'};
+doc['AudioIn']['describe']={syn:'Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance de la entr\xE9e audio au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'audioin.describe()',pro:'def describe()',cmt:'<p>Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance de la entr\xE9e audio au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. Plus pr\xE9cis\xE9ment, <tt>TYPE</tt> correspond au type de fonction, <tt>NAME</tt> correspond au nom utils\xE9 lors du premier acc\xE8s a la fonction, <tt>SERIAL</tt> correspond au num\xE9ro de s\xE9rie du module si le module est connect\xE9, ou <tt>\x22unresolved\x22</tt> sinon, et <tt>FUNCTIONID</tt> correspond \xE0 l\x27identifiant mat\xE9riel de la fonction si le module est connect\xE9. Par exemple, La methode va retourner <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> si le module est d\xE9j\xE0 connect\xE9 ou <tt>Relay(BadCustomeName.relay1)=unresolved</tt> si le module n\x27est pas d\xE9j\xE0 connect\xE9. Cette methode ne declenche aucune transaction USB ou TCP et peut donc \xEAtre utilis\xE9 dans un debuggeur.</p>',ret:'une cha\xEEne de caract\xE8res d\xE9crivant la entr\xE9e audio (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['AudioIn']['get_advertisedValue']={syn:'Retourne la valeur courante de la entr\xE9e audio (pas plus de 6 caract\xE8res).',lib:'audioin.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Retourne la valeur courante de la entr\xE9e audio (pas plus de 6 caract\xE8res).</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur courante de la entr\xE9e audio (pas plus de 6 caract\xE8res).',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['AudioIn']['get_errorMessage']={syn:'Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de la entr\xE9e audio.',lib:'audioin.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de la entr\xE9e audio. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'une cha\xEEne de caract\xE8res correspondant au message de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation de la entr\xE9e audio.'};
+doc['AudioIn']['get_errorType']={syn:'Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de la entr\xE9e audio.',lib:'audioin.get_errorType()',pro:'def get_errorType()',cmt:'<p>Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de la entr\xE9e audio. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'un nombre correspondant au code de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation de la entr\xE9e audio.'};
+doc['AudioIn']['get_friendlyName']={syn:'Retourne un identifiant global de la entr\xE9e audio au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>.',lib:'audioin.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Retourne un identifiant global de la entr\xE9e audio au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>. Le cha\xEEne retourn\xE9e utilise soit les noms logiques du module et de la entr\xE9e audio si ils sont d\xE9finis, soit respectivement le num\xE9ro de s\xE9rie du module et l\x27identifant mat\xE9riel de la entr\xE9e audio (par exemple: <tt>MyCustomName.relay1</tt>)</p>',ret:'une cha\xEEne de caract\xE8res identifiant la entr\xE9e audio en utilisant les noms logiques (ex: <tt>MyCustomName.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['AudioIn']['get_functionDescriptor']={syn:'Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction.',lib:'audioin.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction. Cet identifiant peut \xEAtre utilis\xE9 pour tester si deux instance de <tt>YFunction</tt> r\xE9f\xE9rencent physiquement la m\xEAme fonction sur le m\xEAme module.</p>',ret:'un identifiant de type <tt>YFUN_DESCR</tt>.',ext:'Si la fonction n\x27a jamais \xE9t\xE9 contact\xE9e, la valeur retourn\xE9e sera <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>'};
+doc['AudioIn']['get_functionId']={syn:'Retourne l\x27identifiant mat\xE9riel de la entr\xE9e audio, sans r\xE9f\xE9rence au module.',lib:'audioin.get_functionId()',pro:'def get_functionId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel de la entr\xE9e audio, sans r\xE9f\xE9rence au module. Par example <tt>relay1</tt>.</p>',ret:'une cha\xEEne de caract\xE8res identifiant la entr\xE9e audio (ex: <tt>relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['AudioIn']['get_hardwareId']={syn:'Retourne l\x27identifiant mat\xE9riel unique de la entr\xE9e audio au format <tt>SERIAL.FUNCTIONID</tt>.',lib:'audioin.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel unique de la entr\xE9e audio au format <tt>SERIAL.FUNCTIONID</tt>. L\x27identifiant unique est compos\xE9 du num\xE9ro de s\xE9rie du module et de l\x27identifiant mat\xE9riel de la entr\xE9e audio (par example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'une cha\xEEne de caract\xE8res identifiant la entr\xE9e audio (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['AudioIn']['get_logicalName']={syn:'Retourne le nom logique de la entr\xE9e audio.',lib:'audioin.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Retourne le nom logique de la entr\xE9e audio.</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique de la entr\xE9e audio.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['AudioIn']['get_module']={syn:'Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction.',lib:'audioin.get_module()',pro:'def get_module()',cmt:'<p>Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction. Si la fonction ne peut \xEAtre trouv\xE9e sur aucun module, l\x27instance de <tt>YModule</tt> retourn\xE9e ne sera pas joignable.</p>',ret:'une instance de <tt>YModule</tt>'};
+doc['AudioIn']['get_mute']={syn:'Retourne l\x27\xE9tat de la fonction silencieux (mute) de l\x27entr\xE9e audio.',lib:'audioin.get_mute()',pro:'def get_mute()',cmt:'<p>Retourne l\x27\xE9tat de la fonction silencieux (mute) de l\x27entr\xE9e audio.</p>',ret:'soit <tt>Y_MUTE_FALSE</tt>, soit <tt>Y_MUTE_TRUE</tt>, selon l\x27\xE9tat de la fonction silencieux (mute) de l\x27entr\xE9e audio',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_MUTE_INVALID</tt>.'};
+doc['AudioIn']['get_noSignalFor']={syn:'Retourne le nombre de secondes sans signal d\xE9tect\xE9.',lib:'audioin.get_noSignalFor()',pro:'def get_noSignalFor()',cmt:'<p>Retourne le nombre de secondes sans signal d\xE9tect\xE9.</p>',ret:'un entier repr&eacute;sentant le nombre de secondes sans signal d\xE9tect\xE9',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_NOSIGNALFOR_INVALID</tt>.'};
+doc['AudioIn']['get_signal']={syn:'Retourne l\x27amplitude du signal d\x27entr\xE9e d\xE9tect\xE9.',lib:'audioin.get_signal()',pro:'def get_signal()',cmt:'<p>Retourne l\x27amplitude du signal d\x27entr\xE9e d\xE9tect\xE9.</p>',ret:'un entier repr&eacute;sentant l\x27amplitude du signal d\x27entr\xE9e d\xE9tect\xE9',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_SIGNAL_INVALID</tt>.'};
+doc['AudioIn']['get_userData']={syn:'Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>.',lib:'audioin.get_userData()',pro:'def get_userData()',cmt:'<p>Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',ret:'l\x27objet stock\xE9 pr\xE9c\xE9demment par l\x27appelant.'};
+doc['AudioIn']['get_volume']={syn:'Retourne le gain de l\x27entr\xE9e audio, en pour cents.',lib:'audioin.get_volume()',pro:'def get_volume()',cmt:'<p>Retourne le gain de l\x27entr\xE9e audio, en pour cents.</p>',ret:'un entier repr&eacute;sentant le gain de l\x27entr\xE9e audio, en pour cents',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_VOLUME_INVALID</tt>.'};
+doc['AudioIn']['get_volumeRange']={syn:'Retourne la plage de valeurs support\xE9es pour le volume.',lib:'audioin.get_volumeRange()',pro:'def get_volumeRange()',cmt:'<p>Retourne la plage de valeurs support\xE9es pour le volume. La valeur basse de l\x27intervalle correspond au volume minimal audible. Pour couper compl\xE8tement le son, utilisez <tt>set_mute()</tt> et non le <tt>set_volume()</tt>.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la plage de valeurs support\xE9es pour le volume',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_VOLUMERANGE_INVALID</tt>.'};
+doc['AudioIn']['isOnline']={syn:'V\xE9rifie si le module h\xE9bergeant la entr\xE9e audio est joignable, sans d\xE9clencher d\x27erreur.',lib:'audioin.isOnline()',pro:'def isOnline()',cmt:'<p>V\xE9rifie si le module h\xE9bergeant la entr\xE9e audio est joignable, sans d\xE9clencher d\x27erreur. Si les valeurs des attributs en cache de la entr\xE9e audio sont valides au moment de l\x27appel, le module est consid\xE9r\xE9 joignable. Cette fonction ne cause en aucun cas d\x27exception, quelle que soit l\x27erreur qui pourrait se produire lors de la v\xE9rification de joignabilit\xE9.</p>',ret:'<tt>true</tt> si la entr\xE9e audio est joignable, <tt>false</tt> sinon'};
+doc['AudioIn']['load']={syn:'Met en cache les valeurs courantes de la entr\xE9e audio, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e.',lib:'audioin.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Met en cache les valeurs courantes de la entr\xE9e audio, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e. Par d\xE9faut, lorsqu\x27on acc\xE8de \xE0 un module, tous les attributs des fonctions du module sont automatiquement mises en cache pour la dur\xE9e standard (5 ms). Cette m\xE9thode peut \xEAtre utilis\xE9e pour marquer occasionellement les donn\xE9es cach\xE9es comme valides pour une plus longue p\xE9riode, par exemple dans le but de r\xE9duire le trafic r\xE9seau.</p>',par:{msValidity:'un entier correspondant \xE0 la dur\xE9e de validit\xE9 attribu\xE9e aux les param\xE8tres charg\xE9s, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['AudioIn']['loadAttribute']={syn:'Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.',lib:'audioin.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un cha\xEEne vide.'};
+doc['AudioIn']['muteValueCallbacks']={syn:'D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'audioin.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Vous pouvez utiliser cette fonction pour \xE9conomiser la bande passante et le CPU sur les machines de faible puissance, ou pour \xE9viter le d\xE9clanchement de callbacks HTTP. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['AudioIn']['nextAudioIn']={syn:'Continue l\x27\xE9num\xE9ration des entr\xE9es audio commenc\xE9e \xE0 l\x27aide de <tt>yFirstAudioIn()</tt>.',lib:'audioin.nextAudioIn()',pro:'def nextAudioIn()',cmt:'<p>Continue l\x27\xE9num\xE9ration des entr\xE9es audio commenc\xE9e \xE0 l\x27aide de <tt>yFirstAudioIn()</tt>.</p>',ret:'un pointeur sur un objet <tt>YAudioIn</tt> accessible en ligne, ou <tt>null</tt> lorsque l\x27\xE9num\xE9ration est termin\xE9e.'};
+doc['AudioIn']['registerValueCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e.',lib:'audioin.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callback peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callback ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et la cha\xEEne de caract\xE8re d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['AudioIn']['set_logicalName']={syn:'Modifie le nom logique de la entr\xE9e audio.',lib:'audioin.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Modifie le nom logique de la entr\xE9e audio. Vous pouvez utiliser <tt>yCheckLogicalName()</tt> pour v\xE9rifier si votre param\xE8tre est valide. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique de la entr\xE9e audio.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27appel se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['AudioIn']['set_mute']={syn:'Modifie l\x27\xE9tat de la fonction silencieux (mute) de l\x27entr\xE9e audio.',lib:'audioin.set_mute()',pro:'def set_mute(<span id=pn>newval</span>)',cmt:'<p>Modifie l\x27\xE9tat de la fonction silencieux (mute) de l\x27entr\xE9e audio. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si vous d\xE9sirez que le r\xE9glage soit pr\xE9serv\xE9 au prochain red\xE9marrage.</p>',par:{newval:'soit <tt>Y_MUTE_FALSE</tt>, soit <tt>Y_MUTE_TRUE</tt>, selon l\x27\xE9tat de la fonction silencieux (mute) de l\x27entr\xE9e audio'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['AudioIn']['set_userData']={syn:'Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>.',lib:'audioin.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',par:{data:'objet quelconque \xE0 m\xE9moriser'}};
+doc['AudioIn']['set_volume']={syn:'Modifie le gain de la l\x27entr\xE9e audio, en pour cents.',lib:'audioin.set_volume()',pro:'def set_volume(<span id=pn>newval</span>)',cmt:'<p>Modifie le gain de la l\x27entr\xE9e audio, en pour cents.</p>',par:{newval:'un entier repr&eacute;sentant le gain de la l\x27entr\xE9e audio, en pour cents'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['AudioIn']['unmuteValueCallbacks']={syn:'R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'audioin.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Cette fonction annule un pr\xE9c\xE9dent appel \xE0 <tt>muteValueCallbacks()</tt>. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+//--- (end of generated code: AudioIn)
+//--- (generated code: QuadratureDecoder)
+doc['QuadratureDecoder']={'':{syn:'Interface de la fonction QuadratureDecoder',inc:'from yocto_quadraturedecoder import *',cmt:'<p>La classe YQuadratureDecoder permet de d\xE9coder un signal produit par un encodeur en quadrature. Elle h\xE9rite de la class YSensor toutes les fonctions de base des capteurs Yoctopuce: lecture de mesures, callbacks, enregistreur de donn\xE9es.</p>'}};
+doc['QuadratureDecoder']['FindQuadratureDecoder']={syn:'Permet de retrouver un d\xE9codeut de quadrature d\x27apr\xE8s un identifiant donn\xE9.',lib:'YQuadratureDecoder.FindQuadratureDecoder()',pro:'def FindQuadratureDecoder(<span id=pn>func</span>)',cmt:'<p>Permet de retrouver un d\xE9codeut de quadrature d\x27apr\xE8s un identifiant donn\xE9. L\x27identifiant peut \xEAtre sp\xE9cifi\xE9 sous plusieurs formes:<br> <ul> <li>NomLogiqueFonction</li> <li>NoSerieModule.IdentifiantFonction</li> <li>NoSerieModule.NomLogiqueFonction</li> <li>NomLogiqueModule.IdentifiantMat\xE9riel</li> <li>NomLogiqueModule.NomLogiqueFonction</li> </ul></p><p> Cette fonction n\x27exige pas que le d\xE9codeur de quadrature soit en ligne au moment ou elle est appel\xE9e, l\x27objet retourn\xE9 sera n\xE9anmoins valide. Utiliser la m\xE9thode <tt>YQuadratureDecoder.isOnline()</tt> pour tester si le d\xE9codeur de quadrature est utilisable \xE0 un moment donn\xE9. En cas d\x27ambigu\xEFt\xE9 lorsqu\x27on fait une recherche par nom logique, aucune erreur ne sera notifi\xE9e: la premi\xE8re instance trouv\xE9e sera renvoy\xE9e. La recherche se fait d\x27abord par nom mat\xE9riel, puis par nom logique.</p>',par:{func:'une cha\xEEne de caract\xE8res qui r\xE9f\xE9rence le d\xE9codeur de quadrature sans ambigu\xEFt\xE9'},ret:'un objet de classe <tt>YQuadratureDecoder</tt> qui permet ensuite de contr\xF4ler le d\xE9codeur de quadrature.'};
+doc['QuadratureDecoder']['FirstQuadratureDecoder']={syn:'Commence l\x27\xE9num\xE9ration des D\xE9codeur de quadrature accessibles par la librairie.',lib:'YQuadratureDecoder.FirstQuadratureDecoder()',pro:'def FirstQuadratureDecoder()',cmt:'<p>Commence l\x27\xE9num\xE9ration des D\xE9codeur de quadrature accessibles par la librairie. Utiliser la fonction <tt>YQuadratureDecoder.nextQuadratureDecoder()</tt> pour it\xE9rer sur les autres D\xE9codeur de quadrature.</p>',ret:'un pointeur sur un objet <tt>YQuadratureDecoder</tt>, correspondant au premier d\xE9codeur de quadrature PWM accessible en ligne, ou <tt>null</tt> si il n\x27y a pas de D\xE9codeur de quadrature disponibles.'};
+doc['QuadratureDecoder']['calibrateFromPoints']={syn:'Enregistre des points de correction de mesure, typiquement pour compenser l\x27effet d\x27un bo\xEEtier sur les mesures rendues par le capteur.',lib:'quadraturedecoder.calibrateFromPoints()',pro:'def calibrateFromPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Enregistre des points de correction de mesure, typiquement pour compenser l\x27effet d\x27un bo\xEEtier sur les mesures rendues par le capteur. Il est possible d\x27enregistrer jusqu\x27\xE0 cinq points de correction. Les points de correction doivent \xEAtre fournis en ordre croissant, et dans la plage valide du capteur. Le module effectue automatiquement une interpolation lin\xE9aire de l\x27erreur entre les points sp\xE9cifi\xE9s. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p><p> Pour plus de plus amples possibilit\xE9s d\x27appliquer une surcalibration aux capteurs, veuillez contacter support@yoctopuce.com.</p>',par:{rawValues:'tableau de nombres flottants, correspondant aux valeurs brutes rendues par le capteur pour les points de correction.',refValues:'tableau de nombres flottants, correspondant aux valeurs corrig\xE9es d\xE9sir\xE9es pour les points de correction.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['QuadratureDecoder']['clearCache']={syn:'Invalide le cache.',lib:'quadraturedecoder.clearCache()',pro:'def clearCache()',cmt:'<p>Invalide le cache. Invalide le cache des valeurs courantes du d\xE9codeur de quadrature. Force le prochain appel \xE0 une m\xE9thode get_xxx() ou loadxxx() pour charger les les donn\xE9es depuis le module.</p>'};
+doc['QuadratureDecoder']['describe']={syn:'Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du d\xE9codeur de quadrature au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'quadraturedecoder.describe()',pro:'def describe()',cmt:'<p>Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du d\xE9codeur de quadrature au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. Plus pr\xE9cis\xE9ment, <tt>TYPE</tt> correspond au type de fonction, <tt>NAME</tt> correspond au nom utils\xE9 lors du premier acc\xE8s a la fonction, <tt>SERIAL</tt> correspond au num\xE9ro de s\xE9rie du module si le module est connect\xE9, ou <tt>\x22unresolved\x22</tt> sinon, et <tt>FUNCTIONID</tt> correspond \xE0 l\x27identifiant mat\xE9riel de la fonction si le module est connect\xE9. Par exemple, La methode va retourner <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> si le module est d\xE9j\xE0 connect\xE9 ou <tt>Relay(BadCustomeName.relay1)=unresolved</tt> si le module n\x27est pas d\xE9j\xE0 connect\xE9. Cette methode ne declenche aucune transaction USB ou TCP et peut donc \xEAtre utilis\xE9 dans un debuggeur.</p>',ret:'une cha\xEEne de caract\xE8res d\xE9crivant le d\xE9codeur de quadrature (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['QuadratureDecoder']['get_advertisedValue']={syn:'Retourne la valeur courante du d\xE9codeur de quadrature (pas plus de 6 caract\xE8res).',lib:'quadraturedecoder.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Retourne la valeur courante du d\xE9codeur de quadrature (pas plus de 6 caract\xE8res).</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur courante du d\xE9codeur de quadrature (pas plus de 6 caract\xE8res).',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['QuadratureDecoder']['get_currentRawValue']={syn:'Retourne la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en pas, sous forme de nombre \xE0 virgule.',lib:'quadraturedecoder.get_currentRawValue()',pro:'def get_currentRawValue()',cmt:'<p>Retourne la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en pas, sous forme de nombre \xE0 virgule.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en pas, sous forme de nombre \xE0 virgule',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_CURRENTRAWVALUE_INVALID</tt>.'};
+doc['QuadratureDecoder']['get_currentValue']={syn:'Retourne la valeur actuelle de la position, en pas, sous forme de nombre \xE0 virgule.',lib:'quadraturedecoder.get_currentValue()',pro:'def get_currentValue()',cmt:'<p>Retourne la valeur actuelle de la position, en pas, sous forme de nombre \xE0 virgule.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur actuelle de la position, en pas, sous forme de nombre \xE0 virgule',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_CURRENTVALUE_INVALID</tt>.'};
+doc['QuadratureDecoder']['get_decoding']={syn:'Retourne l\x27\xE9tat d\x27activation du d\xE9codeur de quadrature.',lib:'quadraturedecoder.get_decoding()',pro:'def get_decoding()',cmt:'<p>Retourne l\x27\xE9tat d\x27activation du d\xE9codeur de quadrature.</p>',ret:'soit <tt>Y_DECODING_OFF</tt>, soit <tt>Y_DECODING_ON</tt>, selon l\x27\xE9tat d\x27activation du d\xE9codeur de quadrature',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_DECODING_INVALID</tt>.'};
+doc['QuadratureDecoder']['get_errorMessage']={syn:'Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du d\xE9codeur de quadrature.',lib:'quadraturedecoder.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du d\xE9codeur de quadrature. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'une cha\xEEne de caract\xE8res correspondant au message de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du d\xE9codeur de quadrature.'};
+doc['QuadratureDecoder']['get_errorType']={syn:'Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du d\xE9codeur de quadrature.',lib:'quadraturedecoder.get_errorType()',pro:'def get_errorType()',cmt:'<p>Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du d\xE9codeur de quadrature. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'un nombre correspondant au code de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du d\xE9codeur de quadrature.'};
+doc['QuadratureDecoder']['get_friendlyName']={syn:'Retourne un identifiant global du d\xE9codeur de quadrature au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>.',lib:'quadraturedecoder.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Retourne un identifiant global du d\xE9codeur de quadrature au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>. Le cha\xEEne retourn\xE9e utilise soit les noms logiques du module et du d\xE9codeur de quadrature si ils sont d\xE9finis, soit respectivement le num\xE9ro de s\xE9rie du module et l\x27identifant mat\xE9riel du d\xE9codeur de quadrature (par exemple: <tt>MyCustomName.relay1</tt>)</p>',ret:'une cha\xEEne de caract\xE8res identifiant le d\xE9codeur de quadrature en utilisant les noms logiques (ex: <tt>MyCustomName.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['QuadratureDecoder']['get_functionDescriptor']={syn:'Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction.',lib:'quadraturedecoder.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction. Cet identifiant peut \xEAtre utilis\xE9 pour tester si deux instance de <tt>YFunction</tt> r\xE9f\xE9rencent physiquement la m\xEAme fonction sur le m\xEAme module.</p>',ret:'un identifiant de type <tt>YFUN_DESCR</tt>.',ext:'Si la fonction n\x27a jamais \xE9t\xE9 contact\xE9e, la valeur retourn\xE9e sera <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>'};
+doc['QuadratureDecoder']['get_functionId']={syn:'Retourne l\x27identifiant mat\xE9riel du d\xE9codeur de quadrature, sans r\xE9f\xE9rence au module.',lib:'quadraturedecoder.get_functionId()',pro:'def get_functionId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel du d\xE9codeur de quadrature, sans r\xE9f\xE9rence au module. Par example <tt>relay1</tt>.</p>',ret:'une cha\xEEne de caract\xE8res identifiant le d\xE9codeur de quadrature (ex: <tt>relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['QuadratureDecoder']['get_hardwareId']={syn:'Retourne l\x27identifiant mat\xE9riel unique du d\xE9codeur de quadrature au format <tt>SERIAL.FUNCTIONID</tt>.',lib:'quadraturedecoder.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel unique du d\xE9codeur de quadrature au format <tt>SERIAL.FUNCTIONID</tt>. L\x27identifiant unique est compos\xE9 du num\xE9ro de s\xE9rie du module et de l\x27identifiant mat\xE9riel du d\xE9codeur de quadrature (par example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'une cha\xEEne de caract\xE8res identifiant le d\xE9codeur de quadrature (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['QuadratureDecoder']['get_highestValue']={syn:'Retourne la valeur maximale observ\xE9e pour la position depuis le d\xE9marrage du module.',lib:'quadraturedecoder.get_highestValue()',pro:'def get_highestValue()',cmt:'<p>Retourne la valeur maximale observ\xE9e pour la position depuis le d\xE9marrage du module.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur maximale observ\xE9e pour la position depuis le d\xE9marrage du module',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_HIGHESTVALUE_INVALID</tt>.'};
+doc['QuadratureDecoder']['get_logFrequency']={syn:'Retourne la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es.',lib:'quadraturedecoder.get_logFrequency()',pro:'def get_logFrequency()',cmt:'<p>Retourne la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_LOGFREQUENCY_INVALID</tt>.'};
+doc['QuadratureDecoder']['get_logicalName']={syn:'Retourne le nom logique du d\xE9codeur de quadrature.',lib:'quadraturedecoder.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Retourne le nom logique du d\xE9codeur de quadrature.</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du d\xE9codeur de quadrature.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['QuadratureDecoder']['get_lowestValue']={syn:'Retourne la valeur minimale observ\xE9e pour la position depuis le d\xE9marrage du module.',lib:'quadraturedecoder.get_lowestValue()',pro:'def get_lowestValue()',cmt:'<p>Retourne la valeur minimale observ\xE9e pour la position depuis le d\xE9marrage du module.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur minimale observ\xE9e pour la position depuis le d\xE9marrage du module',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_LOWESTVALUE_INVALID</tt>.'};
+doc['QuadratureDecoder']['get_module']={syn:'Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction.',lib:'quadraturedecoder.get_module()',pro:'def get_module()',cmt:'<p>Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction. Si la fonction ne peut \xEAtre trouv\xE9e sur aucun module, l\x27instance de <tt>YModule</tt> retourn\xE9e ne sera pas joignable.</p>',ret:'une instance de <tt>YModule</tt>'};
+doc['QuadratureDecoder']['get_recordedData']={syn:'Retourne un objet DataSet repr\xE9sentant des mesures de ce capteur pr\xE9c\xE9demment enregistr\xE9es \xE0 l\x27aide du DataLogger, pour l\x27intervalle de temps sp\xE9cifi\xE9.',lib:'quadraturedecoder.get_recordedData()',pro:'def get_recordedData(<span id=pn>startTime</span>, <span id=pn>endTime</span>)',cmt:'<p>Retourne un objet DataSet repr\xE9sentant des mesures de ce capteur pr\xE9c\xE9demment enregistr\xE9es \xE0 l\x27aide du DataLogger, pour l\x27intervalle de temps sp\xE9cifi\xE9. Veuillez vous r\xE9f\xE9rer \xE0 la documentation de la classe DataSet pour plus plus d\x27informations sur la mani\xE8re d\x27obtenir un aper\xE7u des mesures pour la p\xE9riode, et comment charger progressivement une grande quantit\xE9 de mesures depuis le dataLogger.</p><p> Cette m\xE9thode ne fonctionne que si le module utilise un firmware r\xE9cent, car les objets DataSet ne sont pas support\xE9s par les firmwares ant\xE9rieurs \xE0 la r\xE9vision 13000.</p>',par:{startTime:'le d\xE9but de l\x27intervalle de mesure d\xE9sir\xE9, c\x27est \xE0 dire en nombre de secondes depuis le 1er janvier 1970 UTC. La valeur 0 peut \xEAtre utilis\xE9e pour ne poser aucune limite sur le d\xE9but des mesures.',endTime:'la find de l\x27intercalle de mesure d\xE9sir\xE9, c\x27est \xE0 dire en nombre de secondes depuis le 1er janvier 1970 UTC. La valeur 0 peut \xEAtre utilis\xE9e pour ne poser aucune limite de fin.'},ret:'une instance de YDataSet, dont les m\xE9thodes permettent de d\x27acc\xE9der aux donn\xE9es historiques souhait\xE9es.'};
+doc['QuadratureDecoder']['get_reportFrequency']={syn:'Retourne la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction.',lib:'quadraturedecoder.get_reportFrequency()',pro:'def get_reportFrequency()',cmt:'<p>Retourne la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_REPORTFREQUENCY_INVALID</tt>.'};
+doc['QuadratureDecoder']['get_resolution']={syn:'Retourne la r\xE9solution des valeurs mesur\xE9es.',lib:'quadraturedecoder.get_resolution()',pro:'def get_resolution()',cmt:'<p>Retourne la r\xE9solution des valeurs mesur\xE9es. La r\xE9solution correspond \xE0 la pr\xE9cision num\xE9rique de la repr\xE9sentation des mesures. Elle n\x27est pas forc\xE9ment identique \xE0 la pr\xE9cision r\xE9elle du capteur.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la r\xE9solution des valeurs mesur\xE9es',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_RESOLUTION_INVALID</tt>.'};
+doc['QuadratureDecoder']['get_sensorState']={syn:'Retourne le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment.',lib:'quadraturedecoder.get_sensorState()',pro:'def get_sensorState()',cmt:'<p>Retourne le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment.</p>',ret:'un entier repr&eacute;sentant le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_SENSORSTATE_INVALID</tt>.'};
+doc['QuadratureDecoder']['get_speed']={syn:'Retourne la fr\xE9quence du PWM en Hz.',lib:'quadraturedecoder.get_speed()',pro:'def get_speed()',cmt:'<p>Retourne la fr\xE9quence du PWM en Hz.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la fr\xE9quence du PWM en Hz',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_SPEED_INVALID</tt>.'};
+doc['QuadratureDecoder']['get_unit']={syn:'Retourne l\x27unit\xE9 dans laquelle la position est exprim\xE9e.',lib:'quadraturedecoder.get_unit()',pro:'def get_unit()',cmt:'<p>Retourne l\x27unit\xE9 dans laquelle la position est exprim\xE9e.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant l\x27unit\xE9 dans laquelle la position est exprim\xE9e',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_UNIT_INVALID</tt>.'};
+doc['QuadratureDecoder']['get_userData']={syn:'Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>.',lib:'quadraturedecoder.get_userData()',pro:'def get_userData()',cmt:'<p>Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',ret:'l\x27objet stock\xE9 pr\xE9c\xE9demment par l\x27appelant.'};
+doc['QuadratureDecoder']['isOnline']={syn:'V\xE9rifie si le module h\xE9bergeant le d\xE9codeur de quadrature est joignable, sans d\xE9clencher d\x27erreur.',lib:'quadraturedecoder.isOnline()',pro:'def isOnline()',cmt:'<p>V\xE9rifie si le module h\xE9bergeant le d\xE9codeur de quadrature est joignable, sans d\xE9clencher d\x27erreur. Si les valeurs des attributs en cache du d\xE9codeur de quadrature sont valides au moment de l\x27appel, le module est consid\xE9r\xE9 joignable. Cette fonction ne cause en aucun cas d\x27exception, quelle que soit l\x27erreur qui pourrait se produire lors de la v\xE9rification de joignabilit\xE9.</p>',ret:'<tt>true</tt> si le d\xE9codeur de quadrature est joignable, <tt>false</tt> sinon'};
+doc['QuadratureDecoder']['load']={syn:'Met en cache les valeurs courantes du d\xE9codeur de quadrature, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e.',lib:'quadraturedecoder.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Met en cache les valeurs courantes du d\xE9codeur de quadrature, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e. Par d\xE9faut, lorsqu\x27on acc\xE8de \xE0 un module, tous les attributs des fonctions du module sont automatiquement mises en cache pour la dur\xE9e standard (5 ms). Cette m\xE9thode peut \xEAtre utilis\xE9e pour marquer occasionellement les donn\xE9es cach\xE9es comme valides pour une plus longue p\xE9riode, par exemple dans le but de r\xE9duire le trafic r\xE9seau.</p>',par:{msValidity:'un entier correspondant \xE0 la dur\xE9e de validit\xE9 attribu\xE9e aux les param\xE8tres charg\xE9s, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['QuadratureDecoder']['loadAttribute']={syn:'Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.',lib:'quadraturedecoder.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un cha\xEEne vide.'};
+doc['QuadratureDecoder']['loadCalibrationPoints']={syn:'R\xE9cup\xE8re les points de correction de mesure pr\xE9c\xE9demment enregistr\xE9s \xE0 l\x27aide de la m\xE9thode <tt>calibrateFromPoints</tt>.',lib:'quadraturedecoder.loadCalibrationPoints()',pro:'def loadCalibrationPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>R\xE9cup\xE8re les points de correction de mesure pr\xE9c\xE9demment enregistr\xE9s \xE0 l\x27aide de la m\xE9thode <tt>calibrateFromPoints</tt>.</p>',par:{rawValues:'tableau de nombres flottants, qui sera rempli par la fonction avec les valeurs brutes des points de correction.',refValues:'tableau de nombres flottants, qui sera rempli par la fonction avec les valeurs d\xE9sir\xE9es des points de correction.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['QuadratureDecoder']['muteValueCallbacks']={syn:'D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'quadraturedecoder.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Vous pouvez utiliser cette fonction pour \xE9conomiser la bande passante et le CPU sur les machines de faible puissance, ou pour \xE9viter le d\xE9clanchement de callbacks HTTP. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['QuadratureDecoder']['nextQuadratureDecoder']={syn:'Continue l\x27\xE9num\xE9ration des D\xE9codeur de quadrature commenc\xE9e \xE0 l\x27aide de <tt>yFirstQuadratureDecoder()</tt>.',lib:'quadraturedecoder.nextQuadratureDecoder()',pro:'def nextQuadratureDecoder()',cmt:'<p>Continue l\x27\xE9num\xE9ration des D\xE9codeur de quadrature commenc\xE9e \xE0 l\x27aide de <tt>yFirstQuadratureDecoder()</tt>.</p>',ret:'un pointeur sur un objet <tt>YQuadratureDecoder</tt> accessible en ligne, ou <tt>null</tt> lorsque l\x27\xE9num\xE9ration est termin\xE9e.'};
+doc['QuadratureDecoder']['registerTimedReportCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque notification p\xE9riodique.',lib:'quadraturedecoder.registerTimedReportCallback()',pro:'def registerTimedReportCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque notification p\xE9riodique. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callbacks peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callbacks ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et un objet YMeasure d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['QuadratureDecoder']['registerValueCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e.',lib:'quadraturedecoder.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callback peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callback ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et la cha\xEEne de caract\xE8re d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['QuadratureDecoder']['set_currentValue']={syn:'Modifie la position actuelle suppos\xE9e par le d\xE9codeur de quadrature.',lib:'quadraturedecoder.set_currentValue()',pro:'def set_currentValue(<span id=pn>newval</span>)',cmt:'<p>Modifie la position actuelle suppos\xE9e par le d\xE9codeur de quadrature. L\x27appel \xE0 cette fonction active implitement le d\xE9codeur de quadrature.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la position actuelle suppos\xE9e par le d\xE9codeur de quadrature'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['QuadratureDecoder']['set_decoding']={syn:'Modifie l\x27\xE9tat d\x27activation du d\xE9codeur de quadrature.',lib:'quadraturedecoder.set_decoding()',pro:'def set_decoding(<span id=pn>newval</span>)',cmt:'<p>Modifie l\x27\xE9tat d\x27activation du d\xE9codeur de quadrature.</p>',par:{newval:'soit <tt>Y_DECODING_OFF</tt>, soit <tt>Y_DECODING_ON</tt>, selon l\x27\xE9tat d\x27activation du d\xE9codeur de quadrature'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['QuadratureDecoder']['set_highestValue']={syn:'Modifie la m\xE9moire de valeur maximale observ\xE9e.',lib:'quadraturedecoder.set_highestValue()',pro:'def set_highestValue(<span id=pn>newval</span>)',cmt:'<p>Modifie la m\xE9moire de valeur maximale observ\xE9e.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la m\xE9moire de valeur maximale observ\xE9e'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['QuadratureDecoder']['set_logFrequency']={syn:'Modifie la fr\xE9quence d\x27enregistrement des mesures dans le datalogger.',lib:'quadraturedecoder.set_logFrequency()',pro:'def set_logFrequency(<span id=pn>newval</span>)',cmt:'<p>Modifie la fr\xE9quence d\x27enregistrement des mesures dans le datalogger. La fr\xE9quence peut \xEAtre sp\xE9cifi\xE9e en mesures par secondes, en mesures par minutes (par exemple \x2215/m\x22) ou en mesures par heure (par exemple \x224/h\x22). Pour d\xE9sactiver l\x27enregistrement des mesures de cette fonction, utilisez la valeur \x22OFF\x22.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence d\x27enregistrement des mesures dans le datalogger'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['QuadratureDecoder']['set_logicalName']={syn:'Modifie le nom logique du d\xE9codeur de quadrature.',lib:'quadraturedecoder.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Modifie le nom logique du d\xE9codeur de quadrature. Vous pouvez utiliser <tt>yCheckLogicalName()</tt> pour v\xE9rifier si votre param\xE8tre est valide. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du d\xE9codeur de quadrature.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27appel se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['QuadratureDecoder']['set_lowestValue']={syn:'Modifie la m\xE9moire de valeur minimale observ\xE9e.',lib:'quadraturedecoder.set_lowestValue()',pro:'def set_lowestValue(<span id=pn>newval</span>)',cmt:'<p>Modifie la m\xE9moire de valeur minimale observ\xE9e.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la m\xE9moire de valeur minimale observ\xE9e'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['QuadratureDecoder']['set_reportFrequency']={syn:'Modifie la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es.',lib:'quadraturedecoder.set_reportFrequency()',pro:'def set_reportFrequency(<span id=pn>newval</span>)',cmt:'<p>Modifie la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es. La fr\xE9quence peut \xEAtre sp\xE9cifi\xE9e en mesures par secondes, en mesures par minutes (par exemple \x2215/m\x22) ou en mesures par heure (par exemple \x224/h\x22). Pour d\xE9sactiver les notifications p\xE9riodiques pour cette fonction, utilisez la valeur \x22OFF\x22.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['QuadratureDecoder']['set_resolution']={syn:'Modifie la r\xE9solution des valeurs physique mesur\xE9es.',lib:'quadraturedecoder.set_resolution()',pro:'def set_resolution(<span id=pn>newval</span>)',cmt:'<p>Modifie la r\xE9solution des valeurs physique mesur\xE9es. La r\xE9solution correspond \xE0 la pr\xE9cision de l\x27affichage des mesures. Elle ne change pas la pr\xE9cision de la mesure elle-m\xEAme.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la r\xE9solution des valeurs physique mesur\xE9es'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['QuadratureDecoder']['set_userData']={syn:'Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>.',lib:'quadraturedecoder.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',par:{data:'objet quelconque \xE0 m\xE9moriser'}};
+doc['QuadratureDecoder']['startDataLogger']={syn:'D\xE9marre l\x27enregistreur de donn\xE9es du module.',lib:'quadraturedecoder.startDataLogger()',pro:'def startDataLogger()',cmt:'<p>D\xE9marre l\x27enregistreur de donn\xE9es du module. Attention, l\x27enregistreur ne sauvera les mesures de ce capteur que si la fr\xE9quence d\x27enregistrement (logFrequency) n\x27est pas sur \x22OFF\x22.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.'};
+doc['QuadratureDecoder']['stopDataLogger']={syn:'Arr\xEAte l\x27enregistreur de donn\xE9es du module.',lib:'quadraturedecoder.stopDataLogger()',pro:'def stopDataLogger()',cmt:'<p>Arr\xEAte l\x27enregistreur de donn\xE9es du module.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.'};
+doc['QuadratureDecoder']['unmuteValueCallbacks']={syn:'R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'quadraturedecoder.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Cette fonction annule un pr\xE9c\xE9dent appel \xE0 <tt>muteValueCallbacks()</tt>. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+//--- (end of generated code: QuadratureDecoder)
+//--- (generated code: CurrentLoopOutput)
+doc['CurrentLoopOutput']={'':{syn:'Interface de la fonction CurrentLoopOutput',inc:'from yocto_currentloopoutput import *',cmt:'<p>La librairie de programmation Yoctopuce permet de changer la valeur de la sortie 4-20mA et \x09 de connaitre l\x27\xE9tat de la boucle de courant.</p>'}};
+doc['CurrentLoopOutput']['FindCurrentLoopOutput']={syn:'Permet de retrouver une sortie 4-20mA d\x27apr\xE8s un identifiant donn\xE9.',lib:'YCurrentLoopOutput.FindCurrentLoopOutput()',pro:'def FindCurrentLoopOutput(<span id=pn>func</span>)',cmt:'<p>Permet de retrouver une sortie 4-20mA d\x27apr\xE8s un identifiant donn\xE9. L\x27identifiant peut \xEAtre sp\xE9cifi\xE9 sous plusieurs formes:<br> <ul> <li>NomLogiqueFonction</li> <li>NoSerieModule.IdentifiantFonction</li> <li>NoSerieModule.NomLogiqueFonction</li> <li>NomLogiqueModule.IdentifiantMat\xE9riel</li> <li>NomLogiqueModule.NomLogiqueFonction</li> </ul></p><p> Cette fonction n\x27exige pas que la sortie sortie 4-20mA soit en ligne au moment ou elle est appel\xE9e, l\x27objet retourn\xE9 sera n\xE9anmoins valide. Utiliser la m\xE9thode <tt>YCurrentLoopOutput.isOnline()</tt> pour tester si la sortie sortie 4-20mA est utilisable \xE0 un moment donn\xE9. En cas d\x27ambigu\xEFt\xE9 lorsqu\x27on fait une recherche par nom logique, aucune erreur ne sera notifi\xE9e: la premi\xE8re instance trouv\xE9e sera renvoy\xE9e. La recherche se fait d\x27abord par nom mat\xE9riel, puis par nom logique.</p>',par:{func:'une cha\xEEne de caract\xE8res qui r\xE9f\xE9rence la sortie sortie 4-20mA sans ambigu\xEFt\xE9'},ret:'un objet de classe <tt>YCurrentLoopOutput</tt> qui permet ensuite de contr\xF4ler la sortie sortie 4-20mA.'};
+doc['CurrentLoopOutput']['FirstCurrentLoopOutput']={syn:'Commence l\x27\xE9num\xE9ration des sortie 4-20mA accessibles par la librairie.',lib:'YCurrentLoopOutput.FirstCurrentLoopOutput()',pro:'def FirstCurrentLoopOutput()',cmt:'<p>Commence l\x27\xE9num\xE9ration des sortie 4-20mA accessibles par la librairie. Utiliser la fonction <tt>YCurrentLoopOutput.nextCurrentLoopOutput()</tt> pour it\xE9rer sur les autres sortie 4-20mA.</p>',ret:'un pointeur sur un objet <tt>YCurrentLoopOutput</tt>, correspondant \xE0 la premi\xE8re sortie 4-20mA accessible en ligne, ou <tt>null</tt> si il n\x27y a pas de sortie 4-20mA disponibles.'};
+doc['CurrentLoopOutput']['clearCache']={syn:'Invalide le cache.',lib:'currentloopoutput.clearCache()',pro:'def clearCache()',cmt:'<p>Invalide le cache. Invalide le cache des valeurs courantes de la sortie sortie 4-20mA. Force le prochain appel \xE0 une m\xE9thode get_xxx() ou loadxxx() pour charger les les donn\xE9es depuis le module.</p>'};
+doc['CurrentLoopOutput']['currentMove']={syn:'D\xE9clenche une transition progressive du courant dans la boucle.',lib:'currentloopoutput.currentMove()',pro:'def currentMove(<span id=pn>mA_target</span>, <span id=pn>ms_duration</span>)',cmt:'<p>D\xE9clenche une transition progressive du courant dans la boucle. N\x27importe quel changement explicite de courant annulera tout processus de transition en cours.</p>',par:{mA_target:'nouvelle valeur du courant \xE0 la fin de la transition (nombre flottant, repr\xE9sentant le courant en mA)',ms_duration:'dur\xE9e totale de la transition, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['CurrentLoopOutput']['describe']={syn:'Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance de la sortie sortie 4-20mA au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'currentloopoutput.describe()',pro:'def describe()',cmt:'<p>Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance de la sortie sortie 4-20mA au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. Plus pr\xE9cis\xE9ment, <tt>TYPE</tt> correspond au type de fonction, <tt>NAME</tt> correspond au nom utils\xE9 lors du premier acc\xE8s a la fonction, <tt>SERIAL</tt> correspond au num\xE9ro de s\xE9rie du module si le module est connect\xE9, ou <tt>\x22unresolved\x22</tt> sinon, et <tt>FUNCTIONID</tt> correspond \xE0 l\x27identifiant mat\xE9riel de la fonction si le module est connect\xE9. Par exemple, La methode va retourner <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> si le module est d\xE9j\xE0 connect\xE9 ou <tt>Relay(BadCustomeName.relay1)=unresolved</tt> si le module n\x27est pas d\xE9j\xE0 connect\xE9. Cette methode ne declenche aucune transaction USB ou TCP et peut donc \xEAtre utilis\xE9 dans un debuggeur.</p>',ret:'une cha\xEEne de caract\xE8res d\xE9crivant la sortie sortie 4-20mA (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['CurrentLoopOutput']['get_advertisedValue']={syn:'Retourne la valeur courante de la sortie sortie 4-20mA (pas plus de 6 caract\xE8res).',lib:'currentloopoutput.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Retourne la valeur courante de la sortie sortie 4-20mA (pas plus de 6 caract\xE8res).</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur courante de la sortie sortie 4-20mA (pas plus de 6 caract\xE8res).',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['CurrentLoopOutput']['get_current']={syn:'Retourne la valeur de consigne pour le courant de la boucle, en mA.',lib:'currentloopoutput.get_current()',pro:'def get_current()',cmt:'<p>Retourne la valeur de consigne pour le courant de la boucle, en mA.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur de consigne pour le courant de la boucle, en mA',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_CURRENT_INVALID</tt>.'};
+doc['CurrentLoopOutput']['get_currentAtStartUp']={syn:'Retourne le courant dans le boucle au d\xE9marrage du module, en mA.',lib:'currentloopoutput.get_currentAtStartUp()',pro:'def get_currentAtStartUp()',cmt:'<p>Retourne le courant dans le boucle au d\xE9marrage du module, en mA.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant le courant dans le boucle au d\xE9marrage du module, en mA',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_CURRENTATSTARTUP_INVALID</tt>.'};
+doc['CurrentLoopOutput']['get_errorMessage']={syn:'Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de la sortie sortie 4-20mA.',lib:'currentloopoutput.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de la sortie sortie 4-20mA. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'une cha\xEEne de caract\xE8res correspondant au message de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation de la sortie sortie 4-20mA.'};
+doc['CurrentLoopOutput']['get_errorType']={syn:'Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de la sortie sortie 4-20mA.',lib:'currentloopoutput.get_errorType()',pro:'def get_errorType()',cmt:'<p>Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de la sortie sortie 4-20mA. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'un nombre correspondant au code de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation de la sortie sortie 4-20mA.'};
+doc['CurrentLoopOutput']['get_friendlyName']={syn:'Retourne un identifiant global de la sortie sortie 4-20mA au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>.',lib:'currentloopoutput.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Retourne un identifiant global de la sortie sortie 4-20mA au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>. Le cha\xEEne retourn\xE9e utilise soit les noms logiques du module et de la sortie sortie 4-20mA si ils sont d\xE9finis, soit respectivement le num\xE9ro de s\xE9rie du module et l\x27identifant mat\xE9riel de la sortie sortie 4-20mA (par exemple: <tt>MyCustomName.relay1</tt>)</p>',ret:'une cha\xEEne de caract\xE8res identifiant la sortie sortie 4-20mA en utilisant les noms logiques (ex: <tt>MyCustomName.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['CurrentLoopOutput']['get_functionDescriptor']={syn:'Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction.',lib:'currentloopoutput.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction. Cet identifiant peut \xEAtre utilis\xE9 pour tester si deux instance de <tt>YFunction</tt> r\xE9f\xE9rencent physiquement la m\xEAme fonction sur le m\xEAme module.</p>',ret:'un identifiant de type <tt>YFUN_DESCR</tt>.',ext:'Si la fonction n\x27a jamais \xE9t\xE9 contact\xE9e, la valeur retourn\xE9e sera <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>'};
+doc['CurrentLoopOutput']['get_functionId']={syn:'Retourne l\x27identifiant mat\xE9riel de la sortie sortie 4-20mA, sans r\xE9f\xE9rence au module.',lib:'currentloopoutput.get_functionId()',pro:'def get_functionId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel de la sortie sortie 4-20mA, sans r\xE9f\xE9rence au module. Par example <tt>relay1</tt>.</p>',ret:'une cha\xEEne de caract\xE8res identifiant la sortie sortie 4-20mA (ex: <tt>relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['CurrentLoopOutput']['get_hardwareId']={syn:'Retourne l\x27identifiant mat\xE9riel unique de la sortie sortie 4-20mA au format <tt>SERIAL.FUNCTIONID</tt>.',lib:'currentloopoutput.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel unique de la sortie sortie 4-20mA au format <tt>SERIAL.FUNCTIONID</tt>. L\x27identifiant unique est compos\xE9 du num\xE9ro de s\xE9rie du module et de l\x27identifiant mat\xE9riel de la sortie sortie 4-20mA (par example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'une cha\xEEne de caract\xE8res identifiant la sortie sortie 4-20mA (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['CurrentLoopOutput']['get_logicalName']={syn:'Retourne le nom logique de la sortie sortie 4-20mA.',lib:'currentloopoutput.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Retourne le nom logique de la sortie sortie 4-20mA.</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique de la sortie sortie 4-20mA.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['CurrentLoopOutput']['get_loopPower']={syn:'Retourne l\x27\xE9tat de l\x27alimentation de la boucle.',lib:'currentloopoutput.get_loopPower()',pro:'def get_loopPower()',cmt:'<p>Retourne l\x27\xE9tat de l\x27alimentation de la boucle. POWEROK: la boucle est aliment\xE9e. NOPWR: la boucle n\x27est pas aliment\xE9. \x09\x09 LOWPWR: la boucle n\x27est pas aliment\xE9 suffisamment pour pouvoir \x09\x09 maintenir le courant demand\xE9 (tension insuffisante)</p>',ret:'une valeur parmi <tt>Y_LOOPPOWER_NOPWR</tt>, <tt>Y_LOOPPOWER_LOWPWR</tt> et <tt>Y_LOOPPOWER_POWEROK</tt> repr&eacute;sentant l\x27\xE9tat de l\x27alimentation de la boucle',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_LOOPPOWER_INVALID</tt>.'};
+doc['CurrentLoopOutput']['get_module']={syn:'Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction.',lib:'currentloopoutput.get_module()',pro:'def get_module()',cmt:'<p>Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction. Si la fonction ne peut \xEAtre trouv\xE9e sur aucun module, l\x27instance de <tt>YModule</tt> retourn\xE9e ne sera pas joignable.</p>',ret:'une instance de <tt>YModule</tt>'};
+doc['CurrentLoopOutput']['get_userData']={syn:'Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>.',lib:'currentloopoutput.get_userData()',pro:'def get_userData()',cmt:'<p>Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',ret:'l\x27objet stock\xE9 pr\xE9c\xE9demment par l\x27appelant.'};
+doc['CurrentLoopOutput']['isOnline']={syn:'V\xE9rifie si le module h\xE9bergeant la sortie sortie 4-20mA est joignable, sans d\xE9clencher d\x27erreur.',lib:'currentloopoutput.isOnline()',pro:'def isOnline()',cmt:'<p>V\xE9rifie si le module h\xE9bergeant la sortie sortie 4-20mA est joignable, sans d\xE9clencher d\x27erreur. Si les valeurs des attributs en cache de la sortie sortie 4-20mA sont valides au moment de l\x27appel, le module est consid\xE9r\xE9 joignable. Cette fonction ne cause en aucun cas d\x27exception, quelle que soit l\x27erreur qui pourrait se produire lors de la v\xE9rification de joignabilit\xE9.</p>',ret:'<tt>true</tt> si la sortie sortie 4-20mA est joignable, <tt>false</tt> sinon'};
+doc['CurrentLoopOutput']['load']={syn:'Met en cache les valeurs courantes de la sortie sortie 4-20mA, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e.',lib:'currentloopoutput.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Met en cache les valeurs courantes de la sortie sortie 4-20mA, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e. Par d\xE9faut, lorsqu\x27on acc\xE8de \xE0 un module, tous les attributs des fonctions du module sont automatiquement mises en cache pour la dur\xE9e standard (5 ms). Cette m\xE9thode peut \xEAtre utilis\xE9e pour marquer occasionellement les donn\xE9es cach\xE9es comme valides pour une plus longue p\xE9riode, par exemple dans le but de r\xE9duire le trafic r\xE9seau.</p>',par:{msValidity:'un entier correspondant \xE0 la dur\xE9e de validit\xE9 attribu\xE9e aux les param\xE8tres charg\xE9s, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['CurrentLoopOutput']['loadAttribute']={syn:'Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.',lib:'currentloopoutput.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un cha\xEEne vide.'};
+doc['CurrentLoopOutput']['muteValueCallbacks']={syn:'D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'currentloopoutput.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Vous pouvez utiliser cette fonction pour \xE9conomiser la bande passante et le CPU sur les machines de faible puissance, ou pour \xE9viter le d\xE9clanchement de callbacks HTTP. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['CurrentLoopOutput']['nextCurrentLoopOutput']={syn:'Continue l\x27\xE9num\xE9ration des sortie 4-20mA commenc\xE9e \xE0 l\x27aide de <tt>yFirstCurrentLoopOutput()</tt>.',lib:'currentloopoutput.nextCurrentLoopOutput()',pro:'def nextCurrentLoopOutput()',cmt:'<p>Continue l\x27\xE9num\xE9ration des sortie 4-20mA commenc\xE9e \xE0 l\x27aide de <tt>yFirstCurrentLoopOutput()</tt>.</p>',ret:'un pointeur sur un objet <tt>YCurrentLoopOutput</tt> accessible en ligne, ou <tt>null</tt> lorsque l\x27\xE9num\xE9ration est termin\xE9e.'};
+doc['CurrentLoopOutput']['registerValueCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e.',lib:'currentloopoutput.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callback peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callback ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et la cha\xEEne de caract\xE8re d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['CurrentLoopOutput']['set_current']={syn:'Modifie le courant dans la boucle, les valeurs admises sont de 3 \xE0 21mA.',lib:'currentloopoutput.set_current()',pro:'def set_current(<span id=pn>newval</span>)',cmt:'<p>Modifie le courant dans la boucle, les valeurs admises sont de 3 \xE0 21mA. \x09 Attention, si la boucle n\x27est pas suffisamment aliment\xE9e, le courant \x09\x09\x09ne pourra pas \xEAtre maintenu et loopPower passera a LOWPWR.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant le courant dans la boucle, les valeurs admises sont de 3 \xE0 21mA'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['CurrentLoopOutput']['set_currentAtStartUp']={syn:'Modifie la valeur de courant dans la boucle au d\xE9marrage du module.',lib:'currentloopoutput.set_currentAtStartUp()',pro:'def set_currentAtStartUp(<span id=pn>newval</span>)',cmt:'<p>Modifie la valeur de courant dans la boucle au d\xE9marrage du module. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module sinon la modification n\x27aura aucun effet.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la valeur de courant dans la boucle au d\xE9marrage du module'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['CurrentLoopOutput']['set_logicalName']={syn:'Modifie le nom logique de la sortie sortie 4-20mA.',lib:'currentloopoutput.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Modifie le nom logique de la sortie sortie 4-20mA. Vous pouvez utiliser <tt>yCheckLogicalName()</tt> pour v\xE9rifier si votre param\xE8tre est valide. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique de la sortie sortie 4-20mA.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27appel se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['CurrentLoopOutput']['set_userData']={syn:'Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>.',lib:'currentloopoutput.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',par:{data:'objet quelconque \xE0 m\xE9moriser'}};
+doc['CurrentLoopOutput']['unmuteValueCallbacks']={syn:'R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'currentloopoutput.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Cette fonction annule un pr\xE9c\xE9dent appel \xE0 <tt>muteValueCallbacks()</tt>. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+//--- (end of generated code: CurrentLoopOutput)
+//--- (generated code: ColorLedCluster)
+doc['ColorLedCluster']={'':{syn:'Interface de la fonction ColorLedCluster',inc:'from yocto_colorledcluster import *',cmt:'<p>La librairie de programmation Yoctopuce permet de piloter un cluster de LED. Contrairement a la classe ColorLed, la classe ColorLedCluster permet de changer modifier plusieurs LEDs \xE0 la fois. Les changements de couleur peuvent \xEAtre fait aussi bien en coordonn\xE9es RGB qu\x27en coordonn\xE9es HSL, les conversions RGB vers HSL \xE9tant faites automatiquement par le module. Ceci permet ais\xE9ment d\x27allumer les LEDs avec une certaine teinte et d\x27en faire progressivement varier la saturation ou la luminosit\xE9.</p>'}};
+doc['ColorLedCluster']['FindColorLedCluster']={syn:'Permet de retrouver un cluster de LEDs RGB d\x27apr\xE8s un identifiant donn\xE9.',lib:'YColorLedCluster.FindColorLedCluster()',pro:'def FindColorLedCluster(<span id=pn>func</span>)',cmt:'<p>Permet de retrouver un cluster de LEDs RGB d\x27apr\xE8s un identifiant donn\xE9. L\x27identifiant peut \xEAtre sp\xE9cifi\xE9 sous plusieurs formes:<br> <ul> <li>NomLogiqueFonction</li> <li>NoSerieModule.IdentifiantFonction</li> <li>NoSerieModule.NomLogiqueFonction</li> <li>NomLogiqueModule.IdentifiantMat\xE9riel</li> <li>NomLogiqueModule.NomLogiqueFonction</li> </ul></p><p> Cette fonction n\x27exige pas que le cluster de LEDs RGB soit en ligne au moment ou elle est appel\xE9e, l\x27objet retourn\xE9 sera n\xE9anmoins valide. Utiliser la m\xE9thode <tt>YColorLedCluster.isOnline()</tt> pour tester si le cluster de LEDs RGB est utilisable \xE0 un moment donn\xE9. En cas d\x27ambigu\xEFt\xE9 lorsqu\x27on fait une recherche par nom logique, aucune erreur ne sera notifi\xE9e: la premi\xE8re instance trouv\xE9e sera renvoy\xE9e. La recherche se fait d\x27abord par nom mat\xE9riel, puis par nom logique.</p>',par:{func:'une cha\xEEne de caract\xE8res qui r\xE9f\xE9rence le cluster de LEDs RGB sans ambigu\xEFt\xE9'},ret:'un objet de classe <tt>YColorLedCluster</tt> qui permet ensuite de contr\xF4ler le cluster de LEDs RGB.'};
+doc['ColorLedCluster']['FirstColorLedCluster']={syn:'Commence l\x27\xE9num\xE9ration des clusters de LEDs RGB accessibles par la librairie.',lib:'YColorLedCluster.FirstColorLedCluster()',pro:'def FirstColorLedCluster()',cmt:'<p>Commence l\x27\xE9num\xE9ration des clusters de LEDs RGB accessibles par la librairie. Utiliser la fonction <tt>YColorLedCluster.nextColorLedCluster()</tt> pour it\xE9rer sur les autres clusters de LEDs RGB.</p>',ret:'un pointeur sur un objet <tt>YColorLedCluster</tt>, correspondant au premier cluster de LEDs RGB accessible en ligne, ou <tt>null</tt> si il n\x27y a pas de clusters de LEDs RGB disponibles.'};
+doc['ColorLedCluster']['addHslMoveToBlinkSeq']={syn:'Ajoute \xE0 une s\xE9quence une transition dans l\x27espace HSL.',lib:'colorledcluster.addHslMoveToBlinkSeq()',pro:'def addHslMoveToBlinkSeq(<span id=pn>seqIndex</span>, <span id=pn>hslValue</span>, <span id=pn>delay</span>)',cmt:'<p>Ajoute \xE0 une s\xE9quence une transition dans l\x27espace HSL. Une s\xE9quence est une liste de transitions qui pourra \xEAtre ex\xE9cut\xE9e en boucle par un groupe arbitraire de LEDs. Les s\xE9quences sont persistenteset sont sauv\xE9es dans le m\xE9moire flash du module quand la m\xE9thode <tt>saveBlinkSeq()</tt> est appel\xE9e.</p>',par:{seqIndex:'index de la s\xE9quence.',hslValue:'couleur vis\xE9e (0xHHSSLL)',delay:'dur\xE9e de la transistion en ms.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['ColorLedCluster']['addMirrorToBlinkSeq']={syn:'Ajoute \xE0 une s\xE9quence une fin en mirroir.',lib:'colorledcluster.addMirrorToBlinkSeq()',pro:'def addMirrorToBlinkSeq(<span id=pn>seqIndex</span>)',cmt:'<p>Ajoute \xE0 une s\xE9quence une fin en mirroir. Lorsque la s\xE9quence arrivera \xE0 la fin de la derni\xE8re transition, sa vitesse d\x27ex\xE9cution sera automatiquement invers\xE9e de sorte \xE0 ce que la s\xE9quence se rejoue \xE0 l\x27envers, en mirroir. Lorsque la premi\xE8re transition sera compl\xE9t\xE9e \xE0 la fin de l\x27ex\xE9cution \xE0 l\x27envers, la s\xE9quence repartira \xE0 nouveau dans le sens initial.</p>',par:{seqIndex:'index de la s\xE9quence.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['ColorLedCluster']['addRgbMoveToBlinkSeq']={syn:'Ajoute \xE0 une s\xE9quence une transition dans l\x27espace RGB.',lib:'colorledcluster.addRgbMoveToBlinkSeq()',pro:'def addRgbMoveToBlinkSeq(<span id=pn>seqIndex</span>, <span id=pn>rgbValue</span>, <span id=pn>delay</span>)',cmt:'<p>Ajoute \xE0 une s\xE9quence une transition dans l\x27espace RGB. Une s\xE9quence est une liste de transitions qui pourra \xEAtre ex\xE9cut\xE9e en boucle par un groupe arbitraire de LEDs. Les s\xE9quences sont persistantes et sont sauv\xE9es dans le m\xE9moire flash du module quand la m\xE9thode <tt>saveBlinkSeq()</tt> est appl\xE9e.</p>',par:{seqIndex:'index de la s\xE9quence.',rgbValue:'couleur vis\xE9e (0xRRGGBB)',delay:'dur\xE9e de la transistion en ms.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['ColorLedCluster']['clearCache']={syn:'Invalide le cache.',lib:'colorledcluster.clearCache()',pro:'def clearCache()',cmt:'<p>Invalide le cache. Invalide le cache des valeurs courantes du cluster de LEDs RGB. Force le prochain appel \xE0 une m\xE9thode get_xxx() ou loadxxx() pour charger les les donn\xE9es depuis le module.</p>'};
+doc['ColorLedCluster']['describe']={syn:'Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du cluster de LEDs RGB au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'colorledcluster.describe()',pro:'def describe()',cmt:'<p>Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du cluster de LEDs RGB au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. Plus pr\xE9cis\xE9ment, <tt>TYPE</tt> correspond au type de fonction, <tt>NAME</tt> correspond au nom utils\xE9 lors du premier acc\xE8s a la fonction, <tt>SERIAL</tt> correspond au num\xE9ro de s\xE9rie du module si le module est connect\xE9, ou <tt>\x22unresolved\x22</tt> sinon, et <tt>FUNCTIONID</tt> correspond \xE0 l\x27identifiant mat\xE9riel de la fonction si le module est connect\xE9. Par exemple, La methode va retourner <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> si le module est d\xE9j\xE0 connect\xE9 ou <tt>Relay(BadCustomeName.relay1)=unresolved</tt> si le module n\x27est pas d\xE9j\xE0 connect\xE9. Cette methode ne declenche aucune transaction USB ou TCP et peut donc \xEAtre utilis\xE9 dans un debuggeur.</p>',ret:'une cha\xEEne de caract\xE8res d\xE9crivant le cluster de LEDs RGB (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['ColorLedCluster']['get_activeLedCount']={syn:'Retourne le nombre de LED actuellement g\xE9r\xE9es par le module.',lib:'colorledcluster.get_activeLedCount()',pro:'def get_activeLedCount()',cmt:'<p>Retourne le nombre de LED actuellement g\xE9r\xE9es par le module.</p>',ret:'un entier repr&eacute;sentant le nombre de LED actuellement g\xE9r\xE9es par le module',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_ACTIVELEDCOUNT_INVALID</tt>.'};
+doc['ColorLedCluster']['get_advertisedValue']={syn:'Retourne la valeur courante du cluster de LEDs RGB (pas plus de 6 caract\xE8res).',lib:'colorledcluster.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Retourne la valeur courante du cluster de LEDs RGB (pas plus de 6 caract\xE8res).</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur courante du cluster de LEDs RGB (pas plus de 6 caract\xE8res).',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['ColorLedCluster']['get_blinkSeqMaxCount']={syn:'Retourne le nombre maximum de s\xE9quences mis \xE0 disposition par le module.',lib:'colorledcluster.get_blinkSeqMaxCount()',pro:'def get_blinkSeqMaxCount()',cmt:'<p>Retourne le nombre maximum de s\xE9quences mis \xE0 disposition par le module.</p>',ret:'un entier repr&eacute;sentant le nombre maximum de s\xE9quences mis \xE0 disposition par le module',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_BLINKSEQMAXCOUNT_INVALID</tt>.'};
+doc['ColorLedCluster']['get_blinkSeqMaxSize']={syn:'Retourne la longueur maximum d\x27une sequence.',lib:'colorledcluster.get_blinkSeqMaxSize()',pro:'def get_blinkSeqMaxSize()',cmt:'<p>Retourne la longueur maximum d\x27une sequence.</p>',ret:'un entier repr&eacute;sentant la longueur maximum d\x27une sequence',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_BLINKSEQMAXSIZE_INVALID</tt>.'};
+doc['ColorLedCluster']['get_blinkSeqSignatures']={syn:'Retourne une liste de signatures 32 bits pour les s\xE9quences de clignotement.',lib:'colorledcluster.get_blinkSeqSignatures()',pro:'def get_blinkSeqSignatures(<span id=pn>seqIndex</span>, <span id=pn>count</span>)',cmt:'<p>Retourne une liste de signatures 32 bits pour les s\xE9quences de clignotement. Les s\xE9quences de clignotement ne pouvant pas \xEAtre relues du module, ce m\xE9canisme peut \xEAtre utilis\xE9 pour d\xE9tecter si une s\xE9quence sp\xE9cifique est d\xE9j\xE0 programm\xE9e.</p>',par:{seqIndex:'index de la premi\xE8re s\xE9quence qui doit \xEAtre retourn\xE9e',count:'nombre de s\xE9quences qui doivent \xEAtre retourn\xE9es'},ret:'une liste d\x27entiers 32 bits',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un tableau vide.'};
+doc['ColorLedCluster']['get_blinkSeqState']={syn:'Retourne une liste d\x27entiers indiquant si les s\xE9quences sont d\xE9marr\xE9es ou pas.',lib:'colorledcluster.get_blinkSeqState()',pro:'def get_blinkSeqState(<span id=pn>seqIndex</span>, <span id=pn>count</span>)',cmt:'<p>Retourne une liste d\x27entiers indiquant si les s\xE9quences sont d\xE9marr\xE9es ou pas.</p>',par:{seqIndex:'index de la premi\xE8re s\xE9quence qui doit \xEAtre retourn\xE9e',count:'nombre de s\xE9quences qui doivent \xEAtre retourn\xE9es'},ret:'une liste d\x27entiers, 0 pour les s\xE9quences arr\xEAt\xE9es et 1 pour les s\xE9quences d\xE9marr\xE9es.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un tableau vide.'};
+doc['ColorLedCluster']['get_blinkSeqStateAtPowerOn']={syn:'Retourne une liste d\x27entiers indiquant l\x27\xE9tat du flag pilotant le d\xE9marrage de la s\xE9quence \xE0 la mise sous tension du module.',lib:'colorledcluster.get_blinkSeqStateAtPowerOn()',pro:'def get_blinkSeqStateAtPowerOn(<span id=pn>seqIndex</span>, <span id=pn>count</span>)',cmt:'<p>Retourne une liste d\x27entiers indiquant l\x27\xE9tat du flag pilotant le d\xE9marrage de la s\xE9quence \xE0 la mise sous tension du module.</p>',par:{seqIndex:'index de la premi\xE8re s\xE9quence qui doit \xEAtre retourn\xE9e',count:'nombre de s\xE9quences qui doivent \xEAtre retourn\xE9es'},ret:'une liste d\x27entiers, 0 pour les s\xE9quences arr\xEAt\xE9es et 1 pour les s\xE9quences d\xE9marr\xE9es.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un tableau vide.'};
+doc['ColorLedCluster']['get_blinkSeqStateSpeed']={syn:'Retourne une liste d\x27entiers donnant la vitesse de chaque s\xE9quence.',lib:'colorledcluster.get_blinkSeqStateSpeed()',pro:'def get_blinkSeqStateSpeed(<span id=pn>seqIndex</span>, <span id=pn>count</span>)',cmt:'<p>Retourne une liste d\x27entiers donnant la vitesse de chaque s\xE9quence.</p>',par:{seqIndex:'index de la premi\xE8re s\xE9quence dont le vitesse doit \xEAtre retourn\xE9e',count:'nombre de s\xE9quences \xE0 traiter'},ret:'une liste d\x27entiers, 0 pour les s\xE9quences arr\xEAt\xE9es et 1 pour les s\xE9quences d\xE9marr\xE9es.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un tableau vide.'};
+doc['ColorLedCluster']['get_errorMessage']={syn:'Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du cluster de LEDs RGB.',lib:'colorledcluster.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du cluster de LEDs RGB. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'une cha\xEEne de caract\xE8res correspondant au message de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du cluster de LEDs RGB.'};
+doc['ColorLedCluster']['get_errorType']={syn:'Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du cluster de LEDs RGB.',lib:'colorledcluster.get_errorType()',pro:'def get_errorType()',cmt:'<p>Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du cluster de LEDs RGB. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'un nombre correspondant au code de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du cluster de LEDs RGB.'};
+doc['ColorLedCluster']['get_friendlyName']={syn:'Retourne un identifiant global du cluster de LEDs RGB au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>.',lib:'colorledcluster.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Retourne un identifiant global du cluster de LEDs RGB au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>. Le cha\xEEne retourn\xE9e utilise soit les noms logiques du module et du cluster de LEDs RGB si ils sont d\xE9finis, soit respectivement le num\xE9ro de s\xE9rie du module et l\x27identifant mat\xE9riel du cluster de LEDs RGB (par exemple: <tt>MyCustomName.relay1</tt>)</p>',ret:'une cha\xEEne de caract\xE8res identifiant le cluster de LEDs RGB en utilisant les noms logiques (ex: <tt>MyCustomName.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['ColorLedCluster']['get_functionDescriptor']={syn:'Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction.',lib:'colorledcluster.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction. Cet identifiant peut \xEAtre utilis\xE9 pour tester si deux instance de <tt>YFunction</tt> r\xE9f\xE9rencent physiquement la m\xEAme fonction sur le m\xEAme module.</p>',ret:'un identifiant de type <tt>YFUN_DESCR</tt>.',ext:'Si la fonction n\x27a jamais \xE9t\xE9 contact\xE9e, la valeur retourn\xE9e sera <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>'};
+doc['ColorLedCluster']['get_functionId']={syn:'Retourne l\x27identifiant mat\xE9riel du cluster de LEDs RGB, sans r\xE9f\xE9rence au module.',lib:'colorledcluster.get_functionId()',pro:'def get_functionId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel du cluster de LEDs RGB, sans r\xE9f\xE9rence au module. Par example <tt>relay1</tt>.</p>',ret:'une cha\xEEne de caract\xE8res identifiant le cluster de LEDs RGB (ex: <tt>relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['ColorLedCluster']['get_hardwareId']={syn:'Retourne l\x27identifiant mat\xE9riel unique du cluster de LEDs RGB au format <tt>SERIAL.FUNCTIONID</tt>.',lib:'colorledcluster.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel unique du cluster de LEDs RGB au format <tt>SERIAL.FUNCTIONID</tt>. L\x27identifiant unique est compos\xE9 du num\xE9ro de s\xE9rie du module et de l\x27identifiant mat\xE9riel du cluster de LEDs RGB (par example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'une cha\xEEne de caract\xE8res identifiant le cluster de LEDs RGB (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['ColorLedCluster']['get_linkedSeqArray']={syn:'Retourne une liste d\x27index de s\xE9quence for chaque LED RGB.',lib:'colorledcluster.get_linkedSeqArray()',pro:'def get_linkedSeqArray(<span id=pn>ledIndex</span>, <span id=pn>count</span>)',cmt:'<p>Retourne une liste d\x27index de s\xE9quence for chaque LED RGB. Le premier entier correspond \xE0 l\x27index de la premi\xE8re LED, l\x27entier suivant \xE0 la LED suivante, etc.</p>',par:{ledIndex:'index de la premi\xE8re LED qui doit \xEAtre retourn\xE9e',count:'nombre de LEDs qui doivent \xEAtre retourn\xE9es'},ret:'une liste d\x27entiers correspondant \xE0 des index de s\xE9quence.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un tableau vide.'};
+doc['ColorLedCluster']['get_logicalName']={syn:'Retourne le nom logique du cluster de LEDs RGB.',lib:'colorledcluster.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Retourne le nom logique du cluster de LEDs RGB.</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du cluster de LEDs RGB.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['ColorLedCluster']['get_maxLedCount']={syn:'Retourne le nombre maximum de LEDs g\xE9rables par le module.',lib:'colorledcluster.get_maxLedCount()',pro:'def get_maxLedCount()',cmt:'<p>Retourne le nombre maximum de LEDs g\xE9rables par le module.</p>',ret:'un entier repr&eacute;sentant le nombre maximum de LEDs g\xE9rables par le module',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_MAXLEDCOUNT_INVALID</tt>.'};
+doc['ColorLedCluster']['get_module']={syn:'Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction.',lib:'colorledcluster.get_module()',pro:'def get_module()',cmt:'<p>Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction. Si la fonction ne peut \xEAtre trouv\xE9e sur aucun module, l\x27instance de <tt>YModule</tt> retourn\xE9e ne sera pas joignable.</p>',ret:'une instance de <tt>YModule</tt>'};
+doc['ColorLedCluster']['get_rgbColorArray']={syn:'Retourne une liste de couleurs RGB 24 bits contenant l\x27\xE9tat des LEDs RGB, tel quel.',lib:'colorledcluster.get_rgbColorArray()',pro:'def get_rgbColorArray(<span id=pn>ledIndex</span>, <span id=pn>count</span>)',cmt:'<p>Retourne une liste de couleurs RGB 24 bits contenant l\x27\xE9tat des LEDs RGB, tel quel. Le premier entier correspond \xE0 la couleur RGB de la premi\xE8re LED, l\x27entier suivant \xE0 la LED suivante, etc.</p>',par:{ledIndex:'index de la premi\xE8re LED qui doit \xEAtre retourn\xE9e',count:'nombre de LEDs qui doivent \xEAtre retourn\xE9es'},ret:'une liste de couleurs 24bit avec les composantes RGB des LEDs choisies, au format 0xRRGGBB.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un tableau vide.'};
+doc['ColorLedCluster']['get_rgbColorArrayAtPowerOn']={syn:'Retourne une liste de couleurs RGB 24 bits contenant la couleur des LEDs RGB au d\xE9marrage.',lib:'colorledcluster.get_rgbColorArrayAtPowerOn()',pro:'def get_rgbColorArrayAtPowerOn(<span id=pn>ledIndex</span>, <span id=pn>count</span>)',cmt:'<p>Retourne une liste de couleurs RGB 24 bits contenant la couleur des LEDs RGB au d\xE9marrage. Le premier entier correspond \xE0 la couleur RGB de d\xE9marrage de la premi\xE8re LED, l\x27entier suivant \xE0 la LED suivante, etc.</p>',par:{ledIndex:'index de la premi\xE8re LED qui doit \xEAtre retourn\xE9e',count:'nombre de LEDs qui doivent \xEAtre retourn\xE9es'},ret:'une liste de couleurs 24bit avec les composantes RGB des LEDs choisies, au format 0xRRGGBB.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un tableau vide.'};
+doc['ColorLedCluster']['get_rgbColorBuffer']={syn:'Retourne un objet binaire contenant l\x27\xE9tat des LEDs RGB, tel quel.',lib:'colorledcluster.get_rgbColorBuffer()',pro:'def get_rgbColorBuffer(<span id=pn>ledIndex</span>, <span id=pn>count</span>)',cmt:'<p>Retourne un objet binaire contenant l\x27\xE9tat des LEDs RGB, tel quel. Les trois premiers octets correspondent aux composantes RGB de la premi\xE8re LED choisie, les trois octets suivants \xE0 la LED suivante, etc.</p>',par:{ledIndex:'index de la premi\xE8re LED qui doit \xEAtre retourn\xE9e',count:'nombre de LEDs qui doivent \xEAtre retourn\xE9es'},ret:'un objet binaire avec les composantes RGB des LEDs choisies.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un objet binaire vide.'};
+doc['ColorLedCluster']['get_userData']={syn:'Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>.',lib:'colorledcluster.get_userData()',pro:'def get_userData()',cmt:'<p>Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',ret:'l\x27objet stock\xE9 pr\xE9c\xE9demment par l\x27appelant.'};
+doc['ColorLedCluster']['hslArray_move']={syn:'Configure une transition HSL vers une liste de couleurs HSL, pixel par pixel.',lib:'colorledcluster.hslArray_move()',pro:'def hslArray_move(<span id=pn>hslList</span>, <span id=pn>delay</span>)',cmt:'<p>Configure une transition HSL vers une liste de couleurs HSL, pixel par pixel. Le premier entier correspond \xE0 la couleur RGB finale pour la premi\xE8re LED, l\x27entier suivant \xE0 la LED suivante, etc.</p>',par:{hslList:'la liste de valeurs HSL (24 bits) finales d\xE9sir\xE9es, au format 0xHHSSLL',delay:'dur\xE9e de la transition en ms.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['ColorLedCluster']['hsl_move']={syn:'Permet de faire passer un groupe de LED adjacentes de la couleur courante \xE0 une autre, de mani\xE8re continue et ind\xE9pendante.',lib:'colorledcluster.hsl_move()',pro:'def hsl_move(<span id=pn>ledIndex</span>, <span id=pn>count</span>, <span id=pn>hslValue</span>, <span id=pn>delay</span>)',cmt:'<p>Permet de faire passer un groupe de LED adjacentes de la couleur courante \xE0 une autre, de mani\xE8re continue et ind\xE9pendante. La transition se fait dans l\x27espace HSL. En HSL, la teinte \xE9tant une valeur circulaire (0..360\xB0) il y a toujours deux mani\xE8res d\x27op\xE9rer la transition: en augmentant ou en diminuant le teinte. Le module optera pour la transition passant par le chemin le plus court. dans le cas d\x27une diff\xE9rence d\x27exactement 180\xB0, il optera pour la transition qui augmente la valeur de la teinte.</p>',par:{ledIndex:'index de la premi\xE8re LED affect\xE9e.',count:'nombre de LED cons\xE9cutives affect\xE9s.',hslValue:'nouvelle couleur (0xHHSSLL)',delay:'dur\xE9e de la transistion enms.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['ColorLedCluster']['isOnline']={syn:'V\xE9rifie si le module h\xE9bergeant le cluster de LEDs RGB est joignable, sans d\xE9clencher d\x27erreur.',lib:'colorledcluster.isOnline()',pro:'def isOnline()',cmt:'<p>V\xE9rifie si le module h\xE9bergeant le cluster de LEDs RGB est joignable, sans d\xE9clencher d\x27erreur. Si les valeurs des attributs en cache du cluster de LEDs RGB sont valides au moment de l\x27appel, le module est consid\xE9r\xE9 joignable. Cette fonction ne cause en aucun cas d\x27exception, quelle que soit l\x27erreur qui pourrait se produire lors de la v\xE9rification de joignabilit\xE9.</p>',ret:'<tt>true</tt> si le cluster de LEDs RGB est joignable, <tt>false</tt> sinon'};
+doc['ColorLedCluster']['linkLedToBlinkSeq']={syn:'Lie un groupe de LEDs adjacentes \xE0 une s\xE9quence.',lib:'colorledcluster.linkLedToBlinkSeq()',pro:'def linkLedToBlinkSeq(<span id=pn>ledIndex</span>, <span id=pn>count</span>, <span id=pn>seqIndex</span>, <span id=pn>offset</span>)',cmt:'<p>Lie un groupe de LEDs adjacentes \xE0 une s\xE9quence. Ces LEDs commenceront \xE0 ex\xE9cuter la s\xE9quence d\xE8s que son ex\xE9cution sera lanc\xE9 \xE0 l\x27aide de startBlinkSeq. Il est possible d\x27induire un d\xE9calage dans l\x27ex\xE9cution \xE0 l\x27aide du param\xE8tre offset. On peut ainsi cr\xE9er plusieurs groupes de LEDs qui ex\xE9cutent la m\xEAme s\xE9quence mais de mani\xE8re d\xE9cal\xE9e. Une LED ne peut \xEAtre affect\xE9e qu\x27\xE0 une seule s\xE9quence \xE0 la fois.</p>',par:{ledIndex:'index de la premi\xE8re LED affect\xE9e.',count:'nombre de LED cons\xE9cutives affect\xE9s.',seqIndex:'index de la s\xE9quence.',offset:'d\xE9calage dans l\x27ex\xE9cution de la s\xE9quence en ms'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['ColorLedCluster']['linkLedToBlinkSeqAtPowerOn']={syn:'Lie un groupe de LEDs adjacentes \xE0 une s\xE9quence, au d\xE9marrage du module.',lib:'colorledcluster.linkLedToBlinkSeqAtPowerOn()',pro:'def linkLedToBlinkSeqAtPowerOn(<span id=pn>ledIndex</span>, <span id=pn>count</span>, <span id=pn>seqIndex</span>, <span id=pn>offset</span>)',cmt:'<p>Lie un groupe de LEDs adjacentes \xE0 une s\xE9quence, au d\xE9marrage du module. Ne pas oublier de configurer le d\xE9marrage automatique de la s\xE9quence et d\x27appeler <tt>saveLedsConfigAtPowerOn()</tt>. Il est possible d\x27induire un d\xE9calage dans l\x27ex\xE9cution \xE0 l\x27aide du param\xE8tre offset. On peut ainsi cr\xE9er plusieurs groupes de LEDs qui ex\xE9cutent la m\xEAme s\xE9quence mais de mani\xE8re d\xE9cal\xE9e. Une LED ne peut \xEAtre affect\xE9e qu\x27\xE0 une seule s\xE9quence \xE0 la fois.</p>',par:{ledIndex:'index de la premi\xE8re LED affect\xE9e.',count:'nombre de LED cons\xE9cutives affect\xE9s.',seqIndex:'index de la s\xE9quence.',offset:'d\xE9calage dans l\x27ex\xE9cution de la s\xE9quence en ms'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['ColorLedCluster']['linkLedToPeriodicBlinkSeq']={syn:'Lie un groupe de LEDs adjacentes \xE0 une s\xE9quence.',lib:'colorledcluster.linkLedToPeriodicBlinkSeq()',pro:'def linkLedToPeriodicBlinkSeq(<span id=pn>ledIndex</span>, <span id=pn>count</span>, <span id=pn>seqIndex</span>, <span id=pn>periods</span>)',cmt:'<p>Lie un groupe de LEDs adjacentes \xE0 une s\xE9quence. Ces LEDs commenceront \xE0 ex\xE9cuter la s\xE9quence d\xE8s que son ex\xE9cution sera lanc\xE9 \xE0 l\x27aide de startBlinkSeq. Cette fonction pr\xE9calcule un d\xE9calage entre les LEDs de sorte \xE0 ce que le nombre choisi de p\xE9riodes de la s\xE9quence soit visible sur le groupe de LEDs (effet d\x27onde).</p>',par:{ledIndex:'index de la premi\xE8re LED affect\xE9e.',count:'nombre de LED cons\xE9cutives affect\xE9s.',seqIndex:'index de la s\xE9quence.',periods:'nombre de p\xE9riodes \xE0 r\xE9partir entre les LEDs.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['ColorLedCluster']['load']={syn:'Met en cache les valeurs courantes du cluster de LEDs RGB, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e.',lib:'colorledcluster.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Met en cache les valeurs courantes du cluster de LEDs RGB, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e. Par d\xE9faut, lorsqu\x27on acc\xE8de \xE0 un module, tous les attributs des fonctions du module sont automatiquement mises en cache pour la dur\xE9e standard (5 ms). Cette m\xE9thode peut \xEAtre utilis\xE9e pour marquer occasionellement les donn\xE9es cach\xE9es comme valides pour une plus longue p\xE9riode, par exemple dans le but de r\xE9duire le trafic r\xE9seau.</p>',par:{msValidity:'un entier correspondant \xE0 la dur\xE9e de validit\xE9 attribu\xE9e aux les param\xE8tres charg\xE9s, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['ColorLedCluster']['loadAttribute']={syn:'Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.',lib:'colorledcluster.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un cha\xEEne vide.'};
+doc['ColorLedCluster']['muteValueCallbacks']={syn:'D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'colorledcluster.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Vous pouvez utiliser cette fonction pour \xE9conomiser la bande passante et le CPU sur les machines de faible puissance, ou pour \xE9viter le d\xE9clanchement de callbacks HTTP. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['ColorLedCluster']['nextColorLedCluster']={syn:'Continue l\x27\xE9num\xE9ration des clusters de LEDs RGB commenc\xE9e \xE0 l\x27aide de <tt>yFirstColorLedCluster()</tt>.',lib:'colorledcluster.nextColorLedCluster()',pro:'def nextColorLedCluster()',cmt:'<p>Continue l\x27\xE9num\xE9ration des clusters de LEDs RGB commenc\xE9e \xE0 l\x27aide de <tt>yFirstColorLedCluster()</tt>.</p>',ret:'un pointeur sur un objet <tt>YColorLedCluster</tt> accessible en ligne, ou <tt>null</tt> lorsque l\x27\xE9num\xE9ration est termin\xE9e.'};
+doc['ColorLedCluster']['registerValueCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e.',lib:'colorledcluster.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callback peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callback ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et la cha\xEEne de caract\xE8re d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['ColorLedCluster']['resetBlinkSeq']={syn:'Stoppe l\x27ex\xE9cution et efface le contenu d\x27une s\xE9quence.',lib:'colorledcluster.resetBlinkSeq()',pro:'def resetBlinkSeq(<span id=pn>seqIndex</span>)',cmt:'<p>Stoppe l\x27ex\xE9cution et efface le contenu d\x27une s\xE9quence. Les LEDs li\xE9es \xE0 cette s\xE9quence ne seront plus mises \xE0 jour.</p>',par:{seqIndex:'index de la s\xE9quence \xE0 r\xE9initialiser.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['ColorLedCluster']['rgbArray_move']={syn:'Configure une transition RGB vers une liste de couleurs RGB, pixel par pixel.',lib:'colorledcluster.rgbArray_move()',pro:'def rgbArray_move(<span id=pn>rgbList</span>, <span id=pn>delay</span>)',cmt:'<p>Configure une transition RGB vers une liste de couleurs RGB, pixel par pixel. Le premier entier correspond \xE0 la couleur RGB finale pour la premi\xE8re LED, l\x27entier suivant \xE0 la LED suivante, etc.</p>',par:{rgbList:'la liste de valeurs RGB (24 bits) finales d\xE9sir\xE9es, au format 0xRRGGBB',delay:'dur\xE9e de la transition en ms.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['ColorLedCluster']['rgb_move']={syn:'Permet de faire passer un groupe de LED adjacentes de la couleur courante \xE0 une autre, de mani\xE8re continue et ind\xE9pendante.',lib:'colorledcluster.rgb_move()',pro:'def rgb_move(<span id=pn>ledIndex</span>, <span id=pn>count</span>, <span id=pn>rgbValue</span>, <span id=pn>delay</span>)',cmt:'<p>Permet de faire passer un groupe de LED adjacentes de la couleur courante \xE0 une autre, de mani\xE8re continue et ind\xE9pendante. La transition se fait dans l\x27espace RGB.</p>',par:{ledIndex:'index de la premi\xE8re LED affect\xE9e.',count:'nombre de LED cons\xE9cutives affect\xE9s.',rgbValue:'nouvelle couleur (0xRRGGBB)',delay:'dur\xE9e de la transistion enms.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['ColorLedCluster']['saveBlinkSeq']={syn:'Sauve la configuration d\x27une s\xE9quence.',lib:'colorledcluster.saveBlinkSeq()',pro:'def saveBlinkSeq(<span id=pn>seqIndex</span>)',cmt:'<p>Sauve la configuration d\x27une s\xE9quence. Attention, seul les param\xE8tres de la s\xE9quence sont sauv\xE9s. Pour sauver le choix de s\xE9quence des LEDs il faut appeler la m\xE9thode <tt>saveLedsConfigAtPowerOn()</tt>.</p>',par:{seqIndex:'index de la s\xE9quence \xE0 lancer.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['ColorLedCluster']['saveLedsConfigAtPowerOn']={syn:'Sauve la configuration de d\xE9marrage des LEDs.',lib:'colorledcluster.saveLedsConfigAtPowerOn()',pro:'def saveLedsConfigAtPowerOn()',cmt:'<p>Sauve la configuration de d\xE9marrage des LEDs. Cela inclut la couleur de d\xE9marrage ou le choix de s\xE9quence de d\xE9marrage pour toutes les LEDs. Attention, si des LEDs sont li\xE9es \xE0 une s\xE9quence il faut appeler la m\xE9thode <tt>saveBlinkSeq()</tt> en plus pour sauver la d\xE9finition de la s\xE9quence.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['ColorLedCluster']['set_activeLedCount']={syn:'Modifie le nombre de LED actuellement g\xE9r\xE9es par le module.',lib:'colorledcluster.set_activeLedCount()',pro:'def set_activeLedCount(<span id=pn>newval</span>)',cmt:'<p>Modifie le nombre de LED actuellement g\xE9r\xE9es par le module.</p>',par:{newval:'un entier repr&eacute;sentant le nombre de LED actuellement g\xE9r\xE9es par le module'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['ColorLedCluster']['set_blinkSeqSpeed']={syn:'Change la vitesse d\x27ex\xE9cution d\x27une s\xE9quence, en pour mille.',lib:'colorledcluster.set_blinkSeqSpeed()',pro:'def set_blinkSeqSpeed(<span id=pn>seqIndex</span>, <span id=pn>speed</span>)',cmt:'<p>Change la vitesse d\x27ex\xE9cution d\x27une s\xE9quence, en pour mille. La vitesse d\x27ex\xE9cution naturelle est de 1000 pour mille. En configurant une vitesse inf\xE9rieure, on peut jouer la s\xE9quence au ralenti. Une vitesse n\xE9gative permet m\xEAme de jouer la s\xE9quence \xE0 l\x27envers.</p>',par:{seqIndex:'index de la s\xE9quence \xE0 lancer.',speed:'vitesse d\x27ex\xE9cution de la s\xE9quence (-1000...1000).'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['ColorLedCluster']['set_blinkSeqStateAtPowerOn']={syn:'Configure une s\xE9quence pour qu\x27elle d\xE9marre automatiquement au d\xE9marrage du module.',lib:'colorledcluster.set_blinkSeqStateAtPowerOn()',pro:'def set_blinkSeqStateAtPowerOn(<span id=pn>seqIndex</span>, <span id=pn>autostart</span>)',cmt:'<p>Configure une s\xE9quence pour qu\x27elle d\xE9marre automatiquement au d\xE9marrage du module. N\x27oubliez pas d\x27appeler <tt>saveBlinkSeq()</tt> pour sauvegarder la modification dans la m\xE9moire flash du module.</p>',par:{seqIndex:'index de la s\xE9quence concern\xE9e.',autostart:'0 pour que la s\xE9quence soit arr\xEAt\xE9e et 1 pour qu\x27elle d\xE9marre.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['ColorLedCluster']['set_hslColor']={syn:'Modifie la couleur courante d\x27un groupe de LED cons\xE9cutives en utilisant une couleur HSL .',lib:'colorledcluster.set_hslColor()',pro:'def set_hslColor(<span id=pn>ledIndex</span>, <span id=pn>count</span>, <span id=pn>hslValue</span>)',cmt:'<p>Modifie la couleur courante d\x27un groupe de LED cons\xE9cutives en utilisant une couleur HSL . L\x27encodage est r\xE9alis\xE9 de la mani\xE8re suivante: 0xHHSSLL.</p>',par:{ledIndex:'index de la premi\xE8re LED affect\xE9e.',count:'nombre de LED cons\xE9cutives affect\xE9s.',hslValue:'nouvelle couleur.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['ColorLedCluster']['set_hslColorArray']={syn:'Envoie des couleurs HSL 24 bits (fournie sous forme d\x27une liste d\x27entiers) sur l\x27affichage LED HSL.',lib:'colorledcluster.set_hslColorArray()',pro:'def set_hslColorArray(<span id=pn>ledIndex</span>, <span id=pn>hslList</span>)',cmt:'<p>Envoie des couleurs HSL 24 bits (fournie sous forme d\x27une liste d\x27entiers) sur l\x27affichage LED HSL. Le premier entier correspond \xE0 la couleur HSL de la LED indiqu\xE9e en argument, l\x27entier suivant \xE0 la LED suivante, etc.</p>',par:{ledIndex:'index de la premi\xE8re LED qui doit \xEAtre modifi\xE9e',hslList:'la liste de valeurs HSL (24 bits) \xE0 envoyer, au format 0xHHSSLL'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['ColorLedCluster']['set_hslColorBuffer']={syn:'Envoie un objet binaire tel quel sur l\x27affichage LED HSL.',lib:'colorledcluster.set_hslColorBuffer()',pro:'def set_hslColorBuffer(<span id=pn>ledIndex</span>, <span id=pn>buff</span>)',cmt:'<p>Envoie un objet binaire tel quel sur l\x27affichage LED HSL. Les trois premiers octets correspondent aux composantes HSL de la LED indiqu\xE9e en argument, les trois octets suivants \xE0 la LED suivante, etc.</p>',par:{ledIndex:'index de la premi\xE8re LED qui doit \xEAtre modifi\xE9e',buff:'l\x27objet binaire \xE0 envoyer'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['ColorLedCluster']['set_logicalName']={syn:'Modifie le nom logique du cluster de LEDs RGB.',lib:'colorledcluster.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Modifie le nom logique du cluster de LEDs RGB. Vous pouvez utiliser <tt>yCheckLogicalName()</tt> pour v\xE9rifier si votre param\xE8tre est valide. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du cluster de LEDs RGB.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27appel se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['ColorLedCluster']['set_rgbColor']={syn:'Modifie la couleur courante d\x27un groupe de LED cons\xE9cutives en utilisant une couleur RGB (Rouge Vert Bleu).',lib:'colorledcluster.set_rgbColor()',pro:'def set_rgbColor(<span id=pn>ledIndex</span>, <span id=pn>count</span>, <span id=pn>rgbValue</span>)',cmt:'<p>Modifie la couleur courante d\x27un groupe de LED cons\xE9cutives en utilisant une couleur RGB (Rouge Vert Bleu). L\x27encodage est r\xE9alis\xE9 de la mani\xE8re suivante: 0xRRGGBB.</p>',par:{ledIndex:'index de la premi\xE8re LED affect\xE9e.',count:'nombre de LED cons\xE9cutives affect\xE9s.',rgbValue:'nouvelle couleur.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['ColorLedCluster']['set_rgbColorArray']={syn:'Envoie des couleurs RGB 24 bits (fournie sous forme d\x27une liste d\x27entiers) sur l\x27affichage LED RGB.',lib:'colorledcluster.set_rgbColorArray()',pro:'def set_rgbColorArray(<span id=pn>ledIndex</span>, <span id=pn>rgbList</span>)',cmt:'<p>Envoie des couleurs RGB 24 bits (fournie sous forme d\x27une liste d\x27entiers) sur l\x27affichage LED RGB. Le premier entier correspond \xE0 la couleur RGB de la LED indiqu\xE9e en argument, l\x27entier suivant \xE0 la LED suivante, etc.</p>',par:{ledIndex:'index de la premi\xE8re LED qui doit \xEAtre modifi\xE9e',rgbList:'la liste de valeurs RGB (24 bits) \xE0 envoyer, au format 0xRRGGBB'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['ColorLedCluster']['set_rgbColorAtPowerOn']={syn:'Modifie la couleur au d\xE9marrage d\x27un groupe de LED cons\xE9cutives en utilisant une couleur RGB (Rouge Vert Bleu).',lib:'colorledcluster.set_rgbColorAtPowerOn()',pro:'def set_rgbColorAtPowerOn(<span id=pn>ledIndex</span>, <span id=pn>count</span>, <span id=pn>rgbValue</span>)',cmt:'<p>Modifie la couleur au d\xE9marrage d\x27un groupe de LED cons\xE9cutives en utilisant une couleur RGB (Rouge Vert Bleu). L\x27encodage est r\xE9alis\xE9 de la mani\xE8re suivante: 0xRRGGBB. N\x27oubliez pas d\x27appeler <tt>saveLedsConfigAtPowerOn()</tt> pour sauvegarder la modification dans la m\xE9moire flash du module.</p>',par:{ledIndex:'index de la premi\xE8re LED affect\xE9e.',count:'nombre de LED cons\xE9cutives affect\xE9s.',rgbValue:'nouvelle couleur.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['ColorLedCluster']['set_rgbColorBuffer']={syn:'Envoie un objet binaire tel quel sur l\x27affichage LED RGB.',lib:'colorledcluster.set_rgbColorBuffer()',pro:'def set_rgbColorBuffer(<span id=pn>ledIndex</span>, <span id=pn>buff</span>)',cmt:'<p>Envoie un objet binaire tel quel sur l\x27affichage LED RGB. Les trois premiers octets correspondent aux composantes RGB de la LED indiqu\xE9e en argument, les trois octets suivants \xE0 la LED suivante, etc.</p>',par:{ledIndex:'index de la premi\xE8re LED qui doit \xEAtre modifi\xE9e',buff:'l\x27objet binaire \xE0 envoyer'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['ColorLedCluster']['set_userData']={syn:'Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>.',lib:'colorledcluster.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',par:{data:'objet quelconque \xE0 m\xE9moriser'}};
+doc['ColorLedCluster']['startBlinkSeq']={syn:'D\xE9marre l\x27ex\xE9cution d\x27une s\xE9quence : toutes les LED li\xE9es \xE0 cette s\xE9quence vont commencer \xE0 l\x27ex\xE9cuter en boucle.',lib:'colorledcluster.startBlinkSeq()',pro:'def startBlinkSeq(<span id=pn>seqIndex</span>)',cmt:'<p>D\xE9marre l\x27ex\xE9cution d\x27une s\xE9quence : toutes les LED li\xE9es \xE0 cette s\xE9quence vont commencer \xE0 l\x27ex\xE9cuter en boucle.</p>',par:{seqIndex:'index de la s\xE9quence \xE0 lancer.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['ColorLedCluster']['stopBlinkSeq']={syn:'Stoppe l\x27ex\xE9cution d\x27une s\xE9quence.',lib:'colorledcluster.stopBlinkSeq()',pro:'def stopBlinkSeq(<span id=pn>seqIndex</span>)',cmt:'<p>Stoppe l\x27ex\xE9cution d\x27une s\xE9quence. Si la s\xE9quence est red\xE9marr\xE9e l\x27ex\xE9cution repartira du d\xE9but.</p>',par:{seqIndex:'index de la s\xE9quence \xE0 stopper.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['ColorLedCluster']['unlinkLedFromBlinkSeq']={syn:'D\xE9lie un groupe de LEDs adjacentes d\x27une s\xE9quence.',lib:'colorledcluster.unlinkLedFromBlinkSeq()',pro:'def unlinkLedFromBlinkSeq(<span id=pn>ledIndex</span>, <span id=pn>count</span>)',cmt:'<p>D\xE9lie un groupe de LEDs adjacentes d\x27une s\xE9quence.</p>',par:{ledIndex:'index de la premi\xE8re LED affect\xE9e.',count:'nombre de LEDs cons\xE9cutives affect\xE9es.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['ColorLedCluster']['unmuteValueCallbacks']={syn:'R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'colorledcluster.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Cette fonction annule un pr\xE9c\xE9dent appel \xE0 <tt>muteValueCallbacks()</tt>. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+//--- (end of generated code: ColorLedCluster)
+//--- (generated code: SpiPort)
+doc['SpiPort']={'':{syn:'Interface de la fonction SpiPort',inc:'from yocto_spiport import *',cmt:'<p>La fonction SpiPort permet de piloter enti\xE8rement un module d\x27interface SPI Yoctopuce, pour envoyer et recevoir des donn\xE9es et configurer les param\xE8tres de transmission (vitesse, nombre de bits, parit\xE9, contr\xF4le de flux et protocole). Notez que les interfaces SPI Yoctopuce ne sont pas des visibles comme des ports COM virtuels. Ils sont faits pour \xEAtre utilis\xE9s comme tous les autres modules Yoctopuce.</p>'}};
+doc['SpiPort']['FindSpiPort']={syn:'Permet de retrouver une port SPI d\x27apr\xE8s un identifiant donn\xE9.',lib:'YSpiPort.FindSpiPort()',pro:'def FindSpiPort(<span id=pn>func</span>)',cmt:'<p>Permet de retrouver une port SPI d\x27apr\xE8s un identifiant donn\xE9. L\x27identifiant peut \xEAtre sp\xE9cifi\xE9 sous plusieurs formes:<br> <ul> <li>NomLogiqueFonction</li> <li>NoSerieModule.IdentifiantFonction</li> <li>NoSerieModule.NomLogiqueFonction</li> <li>NomLogiqueModule.IdentifiantMat\xE9riel</li> <li>NomLogiqueModule.NomLogiqueFonction</li> </ul></p><p> Cette fonction n\x27exige pas que le port SPI soit en ligne au moment ou elle est appel\xE9e, l\x27objet retourn\xE9 sera n\xE9anmoins valide. Utiliser la m\xE9thode <tt>YSpiPort.isOnline()</tt> pour tester si le port SPI est utilisable \xE0 un moment donn\xE9. En cas d\x27ambigu\xEFt\xE9 lorsqu\x27on fait une recherche par nom logique, aucune erreur ne sera notifi\xE9e: la premi\xE8re instance trouv\xE9e sera renvoy\xE9e. La recherche se fait d\x27abord par nom mat\xE9riel, puis par nom logique.</p>',par:{func:'une cha\xEEne de caract\xE8res qui r\xE9f\xE9rence le port SPI sans ambigu\xEFt\xE9'},ret:'un objet de classe <tt>YSpiPort</tt> qui permet ensuite de contr\xF4ler le port SPI.'};
+doc['SpiPort']['FirstSpiPort']={syn:'Commence l\x27\xE9num\xE9ration des le port SPI accessibles par la librairie.',lib:'YSpiPort.FirstSpiPort()',pro:'def FirstSpiPort()',cmt:'<p>Commence l\x27\xE9num\xE9ration des le port SPI accessibles par la librairie. Utiliser la fonction <tt>YSpiPort.nextSpiPort()</tt> pour it\xE9rer sur les autres le port SPI.</p>',ret:'un pointeur sur un objet <tt>YSpiPort</tt>, correspondant au premier port SPI accessible en ligne, ou <tt>null</tt> si il n\x27y a pas du port SPI disponibles.'};
+doc['SpiPort']['clearCache']={syn:'Invalide le cache.',lib:'spiport.clearCache()',pro:'def clearCache()',cmt:'<p>Invalide le cache. Invalide le cache des valeurs courantes du port SPI. Force le prochain appel \xE0 une m\xE9thode get_xxx() ou loadxxx() pour charger les les donn\xE9es depuis le module.</p>'};
+doc['SpiPort']['describe']={syn:'Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du port SPI au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'spiport.describe()',pro:'def describe()',cmt:'<p>Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du port SPI au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. Plus pr\xE9cis\xE9ment, <tt>TYPE</tt> correspond au type de fonction, <tt>NAME</tt> correspond au nom utils\xE9 lors du premier acc\xE8s a la fonction, <tt>SERIAL</tt> correspond au num\xE9ro de s\xE9rie du module si le module est connect\xE9, ou <tt>\x22unresolved\x22</tt> sinon, et <tt>FUNCTIONID</tt> correspond \xE0 l\x27identifiant mat\xE9riel de la fonction si le module est connect\xE9. Par exemple, La methode va retourner <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> si le module est d\xE9j\xE0 connect\xE9 ou <tt>Relay(BadCustomeName.relay1)=unresolved</tt> si le module n\x27est pas d\xE9j\xE0 connect\xE9. Cette methode ne declenche aucune transaction USB ou TCP et peut donc \xEAtre utilis\xE9 dans un debuggeur.</p>',ret:'une cha\xEEne de caract\xE8res d\xE9crivant le port SPI (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['SpiPort']['get_advertisedValue']={syn:'Retourne la valeur courante du port SPI (pas plus de 6 caract\xE8res).',lib:'spiport.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Retourne la valeur courante du port SPI (pas plus de 6 caract\xE8res).</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur courante du port SPI (pas plus de 6 caract\xE8res).',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['SpiPort']['get_currentJob']={syn:'Retourne le nom du fichier de t\xE2ches actif en ce moment.',lib:'spiport.get_currentJob()',pro:'def get_currentJob()',cmt:'<p>Retourne le nom du fichier de t\xE2ches actif en ce moment.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant le nom du fichier de t\xE2ches actif en ce moment',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_CURRENTJOB_INVALID</tt>.'};
+doc['SpiPort']['get_errCount']={syn:'Retourne le nombre d\x27erreurs de communication d\xE9tect\xE9es depuis la derni\xE8re mise \xE0 z\xE9ro.',lib:'spiport.get_errCount()',pro:'def get_errCount()',cmt:'<p>Retourne le nombre d\x27erreurs de communication d\xE9tect\xE9es depuis la derni\xE8re mise \xE0 z\xE9ro.</p>',ret:'un entier repr&eacute;sentant le nombre d\x27erreurs de communication d\xE9tect\xE9es depuis la derni\xE8re mise \xE0 z\xE9ro',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_ERRCOUNT_INVALID</tt>.'};
+doc['SpiPort']['get_errorMessage']={syn:'Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du port SPI.',lib:'spiport.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du port SPI. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'une cha\xEEne de caract\xE8res correspondant au message de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du port SPI.'};
+doc['SpiPort']['get_errorType']={syn:'Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du port SPI.',lib:'spiport.get_errorType()',pro:'def get_errorType()',cmt:'<p>Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du port SPI. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'un nombre correspondant au code de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du port SPI.'};
+doc['SpiPort']['get_friendlyName']={syn:'Retourne un identifiant global du port SPI au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>.',lib:'spiport.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Retourne un identifiant global du port SPI au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>. Le cha\xEEne retourn\xE9e utilise soit les noms logiques du module et du port SPI si ils sont d\xE9finis, soit respectivement le num\xE9ro de s\xE9rie du module et l\x27identifant mat\xE9riel du port SPI (par exemple: <tt>MyCustomName.relay1</tt>)</p>',ret:'une cha\xEEne de caract\xE8res identifiant le port SPI en utilisant les noms logiques (ex: <tt>MyCustomName.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['SpiPort']['get_functionDescriptor']={syn:'Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction.',lib:'spiport.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction. Cet identifiant peut \xEAtre utilis\xE9 pour tester si deux instance de <tt>YFunction</tt> r\xE9f\xE9rencent physiquement la m\xEAme fonction sur le m\xEAme module.</p>',ret:'un identifiant de type <tt>YFUN_DESCR</tt>.',ext:'Si la fonction n\x27a jamais \xE9t\xE9 contact\xE9e, la valeur retourn\xE9e sera <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>'};
+doc['SpiPort']['get_functionId']={syn:'Retourne l\x27identifiant mat\xE9riel du port SPI, sans r\xE9f\xE9rence au module.',lib:'spiport.get_functionId()',pro:'def get_functionId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel du port SPI, sans r\xE9f\xE9rence au module. Par example <tt>relay1</tt>.</p>',ret:'une cha\xEEne de caract\xE8res identifiant le port SPI (ex: <tt>relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['SpiPort']['get_hardwareId']={syn:'Retourne l\x27identifiant mat\xE9riel unique du port SPI au format <tt>SERIAL.FUNCTIONID</tt>.',lib:'spiport.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel unique du port SPI au format <tt>SERIAL.FUNCTIONID</tt>. L\x27identifiant unique est compos\xE9 du num\xE9ro de s\xE9rie du module et de l\x27identifiant mat\xE9riel du port SPI (par example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'une cha\xEEne de caract\xE8res identifiant le port SPI (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['SpiPort']['get_lastMsg']={syn:'Retourne le dernier message re\xE7u (pour les protocoles de type Line, Frame).',lib:'spiport.get_lastMsg()',pro:'def get_lastMsg()',cmt:'<p>Retourne le dernier message re\xE7u (pour les protocoles de type Line, Frame).</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant le dernier message re\xE7u (pour les protocoles de type Line, Frame)',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_LASTMSG_INVALID</tt>.'};
+doc['SpiPort']['get_logicalName']={syn:'Retourne le nom logique du port SPI.',lib:'spiport.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Retourne le nom logique du port SPI.</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du port SPI.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['SpiPort']['get_module']={syn:'Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction.',lib:'spiport.get_module()',pro:'def get_module()',cmt:'<p>Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction. Si la fonction ne peut \xEAtre trouv\xE9e sur aucun module, l\x27instance de <tt>YModule</tt> retourn\xE9e ne sera pas joignable.</p>',ret:'une instance de <tt>YModule</tt>'};
+doc['SpiPort']['get_protocol']={syn:'Retourne le type de protocole utilis\xE9 sur la communication s\xE9rie, sous forme d\x27une cha\xEEne de caract\xE8res.',lib:'spiport.get_protocol()',pro:'def get_protocol()',cmt:'<p>Retourne le type de protocole utilis\xE9 sur la communication s\xE9rie, sous forme d\x27une cha\xEEne de caract\xE8res. Les valeurs possibles sont \x22Line\x22 pour des messages ASCII s\xE9par\xE9s par des retours de ligne, \x22Frame:[timeout]ms\x22 pour des messages binaires s\xE9par\xE9s par une temporisation, \x22Char\x22 pour un flux ASCII continu ou \x22Byte\x22 pour un flux binaire continue.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant le type de protocole utilis\xE9 sur la communication s\xE9rie, sous forme d\x27une cha\xEEne de caract\xE8res',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_PROTOCOL_INVALID</tt>.'};
+doc['SpiPort']['get_rxCount']={syn:'Retourne le nombre d\x27octets re\xE7us depuis la derni\xE8re mise \xE0 z\xE9ro.',lib:'spiport.get_rxCount()',pro:'def get_rxCount()',cmt:'<p>Retourne le nombre d\x27octets re\xE7us depuis la derni\xE8re mise \xE0 z\xE9ro.</p>',ret:'un entier repr&eacute;sentant le nombre d\x27octets re\xE7us depuis la derni\xE8re mise \xE0 z\xE9ro',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_RXCOUNT_INVALID</tt>.'};
+doc['SpiPort']['get_rxMsgCount']={syn:'Retourne le nombre de messages re\xE7us depuis la derni\xE8re mise \xE0 z\xE9ro.',lib:'spiport.get_rxMsgCount()',pro:'def get_rxMsgCount()',cmt:'<p>Retourne le nombre de messages re\xE7us depuis la derni\xE8re mise \xE0 z\xE9ro.</p>',ret:'un entier repr&eacute;sentant le nombre de messages re\xE7us depuis la derni\xE8re mise \xE0 z\xE9ro',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_RXMSGCOUNT_INVALID</tt>.'};
+doc['SpiPort']['get_shitftSampling']={syn:'Retourne vrai si la ligne SDI est d\xE9phas\xE9e par rapport \xE0 la ligne SDO.',lib:'spiport.get_shitftSampling()',pro:'def get_shitftSampling()',cmt:'<p>Retourne vrai si la ligne SDI est d\xE9phas\xE9e par rapport \xE0 la ligne SDO.</p>',ret:'soit <tt>Y_SHITFTSAMPLING_OFF</tt>, soit <tt>Y_SHITFTSAMPLING_ON</tt>, selon vrai si la ligne SDI est d\xE9phas\xE9e par rapport \xE0 la ligne SDO',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_SHITFTSAMPLING_INVALID</tt>.'};
+doc['SpiPort']['get_spiMode']={syn:'Retourne les param\xE8tres de communication du port, sous forme d\x27une cha\xEEne de caract\xE8res du type \x22125000,0,msb\x22.',lib:'spiport.get_spiMode()',pro:'def get_spiMode()',cmt:'<p>Retourne les param\xE8tres de communication du port, sous forme d\x27une cha\xEEne de caract\xE8res du type \x22125000,0,msb\x22. La cha\xEEne contient le taux de transfert d\xE9sir\xE9, le mode SPI (entre 0 et 3) et l\x27ordre des bits.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant les param\xE8tres de communication du port, sous forme d\x27une cha\xEEne de caract\xE8res du type \x22125000,0,msb\x22',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_SPIMODE_INVALID</tt>.'};
+doc['SpiPort']['get_ssPolarity']={syn:'Retourne la polarit\xE9 de la ligne Slave Select (SS).',lib:'spiport.get_ssPolarity()',pro:'def get_ssPolarity()',cmt:'<p>Retourne la polarit\xE9 de la ligne Slave Select (SS).</p>',ret:'soit <tt>Y_SSPOLARITY_ACTIVE_LOW</tt>, soit <tt>Y_SSPOLARITY_ACTIVE_HIGH</tt>, selon la polarit\xE9 de la ligne Slave Select (SS)',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_SSPOLARITY_INVALID</tt>.'};
+doc['SpiPort']['get_startupJob']={syn:'Retourne le nom du fichier de t\xE2ches \xE0 ex\xE9cuter au d\xE9marrage du module.',lib:'spiport.get_startupJob()',pro:'def get_startupJob()',cmt:'<p>Retourne le nom du fichier de t\xE2ches \xE0 ex\xE9cuter au d\xE9marrage du module.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant le nom du fichier de t\xE2ches \xE0 ex\xE9cuter au d\xE9marrage du module',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_STARTUPJOB_INVALID</tt>.'};
+doc['SpiPort']['get_txCount']={syn:'Retourne le nombre d\x27octets transmis depuis la derni\xE8re mise \xE0 z\xE9ro.',lib:'spiport.get_txCount()',pro:'def get_txCount()',cmt:'<p>Retourne le nombre d\x27octets transmis depuis la derni\xE8re mise \xE0 z\xE9ro.</p>',ret:'un entier repr&eacute;sentant le nombre d\x27octets transmis depuis la derni\xE8re mise \xE0 z\xE9ro',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_TXCOUNT_INVALID</tt>.'};
+doc['SpiPort']['get_txMsgCount']={syn:'Retourne le nombre de messages envoy\xE9s depuis la derni\xE8re mise \xE0 z\xE9ro.',lib:'spiport.get_txMsgCount()',pro:'def get_txMsgCount()',cmt:'<p>Retourne le nombre de messages envoy\xE9s depuis la derni\xE8re mise \xE0 z\xE9ro.</p>',ret:'un entier repr&eacute;sentant le nombre de messages envoy\xE9s depuis la derni\xE8re mise \xE0 z\xE9ro',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_TXMSGCOUNT_INVALID</tt>.'};
+doc['SpiPort']['get_userData']={syn:'Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>.',lib:'spiport.get_userData()',pro:'def get_userData()',cmt:'<p>Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',ret:'l\x27objet stock\xE9 pr\xE9c\xE9demment par l\x27appelant.'};
+doc['SpiPort']['get_voltageLevel']={syn:'Retourne le niveau de tension utilis\xE9 par le module sur le port s\xE9rie.',lib:'spiport.get_voltageLevel()',pro:'def get_voltageLevel()',cmt:'<p>Retourne le niveau de tension utilis\xE9 par le module sur le port s\xE9rie.</p>',ret:'une valeur parmi <tt>Y_VOLTAGELEVEL_OFF</tt>, <tt>Y_VOLTAGELEVEL_TTL3V</tt>, <tt>Y_VOLTAGELEVEL_TTL3VR</tt>, <tt>Y_VOLTAGELEVEL_TTL5V</tt>, <tt>Y_VOLTAGELEVEL_TTL5VR</tt>, <tt>Y_VOLTAGELEVEL_RS232</tt> et <tt>Y_VOLTAGELEVEL_RS485</tt> repr&eacute;sentant le niveau de tension utilis\xE9 par le module sur le port s\xE9rie',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_VOLTAGELEVEL_INVALID</tt>.'};
+doc['SpiPort']['isOnline']={syn:'V\xE9rifie si le module h\xE9bergeant le port SPI est joignable, sans d\xE9clencher d\x27erreur.',lib:'spiport.isOnline()',pro:'def isOnline()',cmt:'<p>V\xE9rifie si le module h\xE9bergeant le port SPI est joignable, sans d\xE9clencher d\x27erreur. Si les valeurs des attributs en cache du port SPI sont valides au moment de l\x27appel, le module est consid\xE9r\xE9 joignable. Cette fonction ne cause en aucun cas d\x27exception, quelle que soit l\x27erreur qui pourrait se produire lors de la v\xE9rification de joignabilit\xE9.</p>',ret:'<tt>true</tt> si le port SPI est joignable, <tt>false</tt> sinon'};
+doc['SpiPort']['load']={syn:'Met en cache les valeurs courantes du port SPI, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e.',lib:'spiport.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Met en cache les valeurs courantes du port SPI, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e. Par d\xE9faut, lorsqu\x27on acc\xE8de \xE0 un module, tous les attributs des fonctions du module sont automatiquement mises en cache pour la dur\xE9e standard (5 ms). Cette m\xE9thode peut \xEAtre utilis\xE9e pour marquer occasionellement les donn\xE9es cach\xE9es comme valides pour une plus longue p\xE9riode, par exemple dans le but de r\xE9duire le trafic r\xE9seau.</p>',par:{msValidity:'un entier correspondant \xE0 la dur\xE9e de validit\xE9 attribu\xE9e aux les param\xE8tres charg\xE9s, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['SpiPort']['loadAttribute']={syn:'Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.',lib:'spiport.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un cha\xEEne vide.'};
+doc['SpiPort']['muteValueCallbacks']={syn:'D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'spiport.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Vous pouvez utiliser cette fonction pour \xE9conomiser la bande passante et le CPU sur les machines de faible puissance, ou pour \xE9viter le d\xE9clanchement de callbacks HTTP. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['SpiPort']['nextSpiPort']={syn:'Continue l\x27\xE9num\xE9ration des le port SPI commenc\xE9e \xE0 l\x27aide de <tt>yFirstSpiPort()</tt>.',lib:'spiport.nextSpiPort()',pro:'def nextSpiPort()',cmt:'<p>Continue l\x27\xE9num\xE9ration des le port SPI commenc\xE9e \xE0 l\x27aide de <tt>yFirstSpiPort()</tt>.</p>',ret:'un pointeur sur un objet <tt>YSpiPort</tt> accessible en ligne, ou <tt>null</tt> lorsque l\x27\xE9num\xE9ration est termin\xE9e.'};
+doc['SpiPort']['queryLine']={syn:'Envoie un message sous forme de ligne de texte sur le port s\xE9rie, et lit la r\xE9ponse re\xE7ue.',lib:'spiport.queryLine()',pro:'def queryLine(<span id=pn>query</span>, <span id=pn>maxWait</span>)',cmt:'<p>Envoie un message sous forme de ligne de texte sur le port s\xE9rie, et lit la r\xE9ponse re\xE7ue. Cette fonction est pr\xE9vue pour \xEAtre utilis\xE9e lorsque le module est configur\xE9 en protocole \x27Line\x27.</p>',par:{query:'le message \xE0 envoyer (sans le retour de chariot)',maxWait:'le temps maximum d\x27attente pour obtenir une r\xE9ponse (en millisecondes).'},ret:'la premi\xE8re ligne de texte re\xE7ue apr\xE8s l\x27envoi du message. Les lignes suivantes peuvent \xEAtre obtenues avec des appels \xE0 readLine ou readMessages.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['SpiPort']['readArray']={syn:'Lit le contenu du tampon de r\xE9ception sous forme de liste d\x27octets, \xE0 partir de la position courante dans le flux de donn\xE9e.',lib:'spiport.readArray()',pro:'def readArray(<span id=pn>nChars</span>)',cmt:'<p>Lit le contenu du tampon de r\xE9ception sous forme de liste d\x27octets, \xE0 partir de la position courante dans le flux de donn\xE9e. Si le contenu \xE0 la position n\x27est plus disponible dans le tampon de r\xE9ception, la fonction ne retournera que les donn\xE9es disponibles.</p>',par:{nChars:'le nombre maximum de bytes \xE0 lire'},ret:'une liste de bytes avec le contenu du tampon de r\xE9ception.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['SpiPort']['readBin']={syn:'Lit le contenu du tampon de r\xE9ception sous forme d\x27objet binaire, \xE0 partir de la position courante dans le flux de donn\xE9e.',lib:'spiport.readBin()',pro:'def readBin(<span id=pn>nChars</span>)',cmt:'<p>Lit le contenu du tampon de r\xE9ception sous forme d\x27objet binaire, \xE0 partir de la position courante dans le flux de donn\xE9e. Si le contenu \xE0 la position n\x27est plus disponible dans le tampon de r\xE9ception, la fonction ne retournera que les donn\xE9es disponibles.</p>',par:{nChars:'le nombre maximum de bytes \xE0 lire'},ret:'un objet binaire avec le contenu du tampon de r\xE9ception.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['SpiPort']['readByte']={syn:'Lit le prochain byte dans le tampon de r\xE9ception, \xE0 partir de la position courante dans le flux de donn\xE9e.',lib:'spiport.readByte()',pro:'def readByte()',cmt:'<p>Lit le prochain byte dans le tampon de r\xE9ception, \xE0 partir de la position courante dans le flux de donn\xE9e. Si le contenu \xE0 la position n\x27est plus disponible dans le tampon de r\xE9ception, ou si aucun octet n\x27est disponible pour l\x27instant, la fonction retourne YAPI_NO_MORE_DATA.</p>',ret:'le prochain byte',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['SpiPort']['readHex']={syn:'Lit le contenu du tampon de r\xE9ception sous forme hexad\xE9cimale, \xE0 partir de la position courante dans le flux de donn\xE9e.',lib:'spiport.readHex()',pro:'def readHex(<span id=pn>nBytes</span>)',cmt:'<p>Lit le contenu du tampon de r\xE9ception sous forme hexad\xE9cimale, \xE0 partir de la position courante dans le flux de donn\xE9e. Si le contenu \xE0 la position n\x27est plus disponible dans le tampon de r\xE9ception, la fonction ne retournera que les donn\xE9es disponibles.</p>',par:{nBytes:'le nombre maximal d\x27octets \xE0 lire'},ret:'une cha\xEEne de caract\xE8re avec le contenu du tampon de r\xE9ception, encod\xE9 en hexad\xE9cimal',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['SpiPort']['readLine']={syn:'Lit la prochaine ligne (ou le prochain message) du tampon de r\xE9ception, \xE0 partir de la position courante dans le flux de donn\xE9e.',lib:'spiport.readLine()',pro:'def readLine()',cmt:'<p>Lit la prochaine ligne (ou le prochain message) du tampon de r\xE9ception, \xE0 partir de la position courante dans le flux de donn\xE9e. Cette fonction est destin\xE9e \xE0 \xEAtre utilis\xE9e lorsque le module est configur\xE9 pour un protocole bas\xE9 message, comme en mode \x27Line\x27 ou en protocole \x27Frame\x27.</p><p> Si le contenu \xE0 la position n\x27est plus disponible dans le tampon de r\xE9ception, la fonction retournera la plus ancienne ligne disponible et d\xE9placera le pointeur de position juste apr\xE8s. Si aucune nouvelle ligne enti\xE8re n\x27est disponible, la fonction retourne un cha\xEEne vide.</p>',ret:'une cha\xEEne de caract\xE8re avec une ligne de texte',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['SpiPort']['readMessages']={syn:'Cherche les messages entrants dans le tampon de r\xE9ception correspondant \xE0 un format donn\xE9, \xE0 partir de la position courante.',lib:'spiport.readMessages()',pro:'def readMessages(<span id=pn>pattern</span>, <span id=pn>maxWait</span>)',cmt:'<p>Cherche les messages entrants dans le tampon de r\xE9ception correspondant \xE0 un format donn\xE9, \xE0 partir de la position courante. Cette fonction ne compare et ne retourne que les caract\xE8res imprimables. Les protocoles binaires sont g\xE9r\xE9s sous forme de repr\xE9sentation hexad\xE9cimale.</p><p> La recherche retourne tous les messages trouv\xE9s qui correspondent au format. Tant qu\x27aucun message ad\xE9quat n\x27est trouv\xE9, la fonction attendra, au maximum pour le temps sp\xE9cifi\xE9 en argument (en millisecondes).</p>',par:{pattern:'une expression r\xE9guli\xE8re limit\xE9e d\xE9crivant le format de message d\xE9sir\xE9, ou une cha\xEEne vide si aucun filtrage des messages n\x27est d\xE9sir\xE9. Pour les protocoles binaires, le format est appliqu\xE9 \xE0 la repr\xE9sentation hexad\xE9cimale du message.',maxWait:'le temps maximum d\x27attente pour obtenir un message, tant qu\x27aucun n\x27est trouv\xE9 dans le tampon de r\xE9ception (en millisecondes).'},ret:'un tableau de cha\xEEnes de caract\xE8res contenant les messages trouv\xE9s. Les messages binaires sont convertis automatiquement en repr\xE9sentation hexad\xE9cimale.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un tableau vide.'};
+doc['SpiPort']['readStr']={syn:'Lit le contenu du tampon de r\xE9ception sous forme de string, \xE0 partir de la position courante dans le flux de donn\xE9e.',lib:'spiport.readStr()',pro:'def readStr(<span id=pn>nChars</span>)',cmt:'<p>Lit le contenu du tampon de r\xE9ception sous forme de string, \xE0 partir de la position courante dans le flux de donn\xE9e. Si le contenu \xE0 la position n\x27est plus disponible dans le tampon de r\xE9ception, la fonction ne retournera que les donn\xE9es disponibles.</p>',par:{nChars:'le nombre maximum de caract\xE8res \xE0 lire'},ret:'une cha\xEEne de caract\xE8re avec le contenu du tampon de r\xE9ception.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['SpiPort']['read_avail']={syn:'Retourne le nombre de bytes pr\xEAts \xE0 \xEAtre lus dans le tampon de r\xE9ception, depuis la position courante dans le flux de donn\xE9e utilis\xE9 par l\x27objet d\x27API.',lib:'spiport.read_avail()',pro:'def read_avail()',cmt:'<p>Retourne le nombre de bytes pr\xEAts \xE0 \xEAtre lus dans le tampon de r\xE9ception, depuis la position courante dans le flux de donn\xE9e utilis\xE9 par l\x27objet d\x27API.</p>',ret:'le nombre d\x27octets pr\xEAts \xE0 \xEAtre lus'};
+doc['SpiPort']['read_seek']={syn:'Change le pointeur de position courante dans le flux de donn\xE9e \xE0 la valeur sp\xE9cifi\xE9e.',lib:'spiport.read_seek()',pro:'def read_seek(<span id=pn>absPos</span>)',cmt:'<p>Change le pointeur de position courante dans le flux de donn\xE9e \xE0 la valeur sp\xE9cifi\xE9e. Cette fonction n\x27a pas d\x27effet sur le module, elle ne fait que changer la valeur stock\xE9e dans l\x27objet d\x27API qui sera utilis\xE9e pour les prochaines operations de lecture.</p>',par:{absPos:'index de position absolue pour les op\xE9rations de lecture suivantes.'},ret:'rien du tout.'};
+doc['SpiPort']['read_tell']={syn:'Retourne la valeur actuelle du pointeur de position courante dans le flux de donn\xE9e utilis\xE9 par l\x27objet d\x27API.',lib:'spiport.read_tell()',pro:'def read_tell()',cmt:'<p>Retourne la valeur actuelle du pointeur de position courante dans le flux de donn\xE9e utilis\xE9 par l\x27objet d\x27API.</p>',ret:'l\x27index de position absolue pour les prochaines op\xE9rations de lecture.'};
+doc['SpiPort']['registerValueCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e.',lib:'spiport.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callback peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callback ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et la cha\xEEne de caract\xE8re d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['SpiPort']['reset']={syn:'Remet \xE0 z\xE9ro tous les compteurs et efface les tampons.',lib:'spiport.reset()',pro:'def reset()',cmt:'<p>Remet \xE0 z\xE9ro tous les compteurs et efface les tampons.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['SpiPort']['selectJob']={syn:'Charge et execute le fichier de t\xE2che sp\xE9cifi\xE9.',lib:'spiport.selectJob()',pro:'def selectJob(<span id=pn>jobfile</span>)',cmt:'<p>Charge et execute le fichier de t\xE2che sp\xE9cifi\xE9. Le fichier doit avoir \xE9t\xE9 pr\xE9alablement cr\xE9\xE9 en utilisant l\x27interface graphique, ou t\xE9l\xE9charg\xE9 sur le module \xE0 l\x27aide de la fonction <tt>uploadJob()</tt>.</p>',par:{jobfile:'nom du fichier de t\xE2che (fichier sur le module)'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['SpiPort']['set_SS']={syn:'Change manuellement l\x27\xE9tat de la ligne SS.',lib:'spiport.set_SS()',pro:'def set_SS(<span id=pn>val</span>)',cmt:'<p>Change manuellement l\x27\xE9tat de la ligne SS. Cette fonction n\x27a pas d\x27effet lorsque la gestion automatique de la ligne SS est activ\xE9e.</p>',par:{val:'1 pour activer la ligne SS, 0 pour la d\xE9sactiver.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['SpiPort']['set_currentJob']={syn:'Modifie le nom du job \xE0 ex\xE9cuter au d\xE9marrage du module.',lib:'spiport.set_currentJob()',pro:'def set_currentJob(<span id=pn>newval</span>)',cmt:'<p>Modifie le nom du job \xE0 ex\xE9cuter au d\xE9marrage du module. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant le nom du job \xE0 ex\xE9cuter au d\xE9marrage du module'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['SpiPort']['set_logicalName']={syn:'Modifie le nom logique du port SPI.',lib:'spiport.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Modifie le nom logique du port SPI. Vous pouvez utiliser <tt>yCheckLogicalName()</tt> pour v\xE9rifier si votre param\xE8tre est valide. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du port SPI.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27appel se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['SpiPort']['set_protocol']={syn:'Modifie le type de protocol utilis\xE9 sur la communication s\xE9rie.',lib:'spiport.set_protocol()',pro:'def set_protocol(<span id=pn>newval</span>)',cmt:'<p>Modifie le type de protocol utilis\xE9 sur la communication s\xE9rie. Les valeurs possibles sont \x22Line\x22 pour des messages ASCII s\xE9par\xE9s par des retours de ligne, \x22Frame:[timeout]ms\x22 pour des messages binaires s\xE9par\xE9s par une temporisation, \x22Char\x22 pour un flux ASCII continu ou \x22Byte\x22 pour un flux binaire continue. Le suffixe \x22/[wait]ms\x22 peut \xEAtre ajout\xE9 pour r\xE9duire la cadence d\x27\xE9mission de sorte \xE0 ce qu\x27il y ait au minimum le nombre sp\xE9cifi\xE9 de millisecondes d\x27intervalle entre l\x27envoi de chaque byte.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant le type de protocol utilis\xE9 sur la communication s\xE9rie'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['SpiPort']['set_shitftSampling']={syn:'Modifie le d\xE9phasage de l\x27\xE9chanillonage de SDI par rapport \xE0 SDO.',lib:'spiport.set_shitftSampling()',pro:'def set_shitftSampling(<span id=pn>newval</span>)',cmt:'<p>Modifie le d\xE9phasage de l\x27\xE9chanillonage de SDI par rapport \xE0 SDO. Lorsque le d\xE9phasage est d\xE9sactiv\xE9, SDI est lu au milieu de la phase du cycle de sortie de la ligne SDO. Lorsqu\x27il est activ\xE9, SDI est lu \xE0 la fin du cycle de sortie de SDO.</p>',par:{newval:'soit <tt>Y_SHITFTSAMPLING_OFF</tt>, soit <tt>Y_SHITFTSAMPLING_ON</tt>, selon le d\xE9phasage de l\x27\xE9chanillonage de SDI par rapport \xE0 SDO'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['SpiPort']['set_spiMode']={syn:'Modifie les param\xE8tres de communication du port, sous forme d\x27une cha\xEEne de caract\xE8res du type \x22125000,0,msb\x22.',lib:'spiport.set_spiMode()',pro:'def set_spiMode(<span id=pn>newval</span>)',cmt:'<p>Modifie les param\xE8tres de communication du port, sous forme d\x27une cha\xEEne de caract\xE8res du type \x22125000,0,msb\x22. La cha\xEEne contient le taux de transfert d\xE9sir\xE9, le mode SPI (entre 0 et 3) et l\x27ordre des bits.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant les param\xE8tres de communication du port, sous forme d\x27une cha\xEEne de caract\xE8res du type \x22125000,0,msb\x22'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['SpiPort']['set_ssPolarity']={syn:'Modifie la polarit\xE9 de la ligne Slave Select (SS).',lib:'spiport.set_ssPolarity()',pro:'def set_ssPolarity(<span id=pn>newval</span>)',cmt:'<p>Modifie la polarit\xE9 de la ligne Slave Select (SS).</p>',par:{newval:'soit <tt>Y_SSPOLARITY_ACTIVE_LOW</tt>, soit <tt>Y_SSPOLARITY_ACTIVE_HIGH</tt>, selon la polarit\xE9 de la ligne Slave Select (SS)'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['SpiPort']['set_startupJob']={syn:'Modifie le nom du job \xE0 ex\xE9cuter au d\xE9marrage du module.',lib:'spiport.set_startupJob()',pro:'def set_startupJob(<span id=pn>newval</span>)',cmt:'<p>Modifie le nom du job \xE0 ex\xE9cuter au d\xE9marrage du module. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant le nom du job \xE0 ex\xE9cuter au d\xE9marrage du module'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['SpiPort']['set_userData']={syn:'Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>.',lib:'spiport.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',par:{data:'objet quelconque \xE0 m\xE9moriser'}};
+doc['SpiPort']['set_voltageLevel']={syn:'Modifie le niveau de tension utilis\xE9 par le module sur le port s\xE9rie.',lib:'spiport.set_voltageLevel()',pro:'def set_voltageLevel(<span id=pn>newval</span>)',cmt:'<p>Modifie le niveau de tension utilis\xE9 par le module sur le port s\xE9rie. Les valeurs valides d\xE9pendent du mod\xE8le de module Yoctopuce h\xE9bergeant le port s\xE9rie. Consultez la documentation de votre module pour savoir quelles valeurs sont support\xE9es. Affecter une valeur invalide n\x27aura aucun effet.</p>',par:{newval:'une valeur parmi <tt>Y_VOLTAGELEVEL_OFF</tt>, <tt>Y_VOLTAGELEVEL_TTL3V</tt>, <tt>Y_VOLTAGELEVEL_TTL3VR</tt>, <tt>Y_VOLTAGELEVEL_TTL5V</tt>, <tt>Y_VOLTAGELEVEL_TTL5VR</tt>, <tt>Y_VOLTAGELEVEL_RS232</tt> et <tt>Y_VOLTAGELEVEL_RS485</tt> repr&eacute;sentant le niveau de tension utilis\xE9 par le module sur le port s\xE9rie'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['SpiPort']['unmuteValueCallbacks']={syn:'R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'spiport.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Cette fonction annule un pr\xE9c\xE9dent appel \xE0 <tt>muteValueCallbacks()</tt>. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['SpiPort']['uploadJob']={syn:'Sauvegarde une d\xE9finition de t\xE2che (au format JSON) dans un fichier.',lib:'spiport.uploadJob()',pro:'def uploadJob(<span id=pn>jobfile</span>, <span id=pn>jsonDef</span>)',cmt:'<p>Sauvegarde une d\xE9finition de t\xE2che (au format JSON) dans un fichier. Le fichier peut ensuite \xEAtre activ\xE9 \xE0 l\x27aide de la m\xE9thode <tt>selectJob()</tt>.</p>',par:{jobfile:'nom du fichier de t\xE2che sur le module',jsonDef:'une cha\xEEne de caract\xE8res contenant la d\xE9finition du job en JSON'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['SpiPort']['writeArray']={syn:'Envoie une s\xE9quence d\x27octets (fournie sous forme d\x27une liste) sur le port s\xE9rie.',lib:'spiport.writeArray()',pro:'def writeArray(<span id=pn>byteList</span>)',cmt:'<p>Envoie une s\xE9quence d\x27octets (fournie sous forme d\x27une liste) sur le port s\xE9rie.</p>',par:{byteList:'la liste d\x27octets \xE0 envoyer'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['SpiPort']['writeBin']={syn:'Envoie un objet binaire tel quel sur le port s\xE9rie.',lib:'spiport.writeBin()',pro:'def writeBin(<span id=pn>buff</span>)',cmt:'<p>Envoie un objet binaire tel quel sur le port s\xE9rie.</p>',par:{buff:'l\x27objet binaire \xE0 envoyer'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['SpiPort']['writeByte']={syn:'Envoie un unique byte sur le port s\xE9rie.',lib:'spiport.writeByte()',pro:'def writeByte(<span id=pn>code</span>)',cmt:'<p>Envoie un unique byte sur le port s\xE9rie.</p>',par:{code:'le byte \xE0 envoyer'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['SpiPort']['writeHex']={syn:'Envoie une s\xE9quence d\x27octets (fournie sous forme de cha\xEEne hexad\xE9cimale) sur le port s\xE9rie.',lib:'spiport.writeHex()',pro:'def writeHex(<span id=pn>hexString</span>)',cmt:'<p>Envoie une s\xE9quence d\x27octets (fournie sous forme de cha\xEEne hexad\xE9cimale) sur le port s\xE9rie.</p>',par:{hexString:'la cha\xEEne hexad\xE9cimale \xE0 envoyer'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['SpiPort']['writeLine']={syn:'Envoie une cha\xEEne de caract\xE8res sur le port s\xE9rie, suivie d\x27un saut de ligne (CR LF).',lib:'spiport.writeLine()',pro:'def writeLine(<span id=pn>text</span>)',cmt:'<p>Envoie une cha\xEEne de caract\xE8res sur le port s\xE9rie, suivie d\x27un saut de ligne (CR LF).</p>',par:{text:'la cha\xEEne de caract\xE8res \xE0 envoyer'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['SpiPort']['writeStr']={syn:'Envoie une cha\xEEne de caract\xE8res telle quelle sur le port s\xE9rie.',lib:'spiport.writeStr()',pro:'def writeStr(<span id=pn>text</span>)',cmt:'<p>Envoie une cha\xEEne de caract\xE8res telle quelle sur le port s\xE9rie.</p>',par:{text:'la cha\xEEne de caract\xE8res \xE0 envoyer'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+//--- (end of generated code: SpiPort)
+//--- (generated code: MessageBox)
+doc['MessageBox']={'':{syn:'Interface de la fonction MessageBox',inc:'from yocto_messagebox import *',cmt:'<p>La fonction YMessageBox permet de recevoir et d\x27envoyer des messages SMS \xE0 l\x27aide des modules Yoctopuce dot\xE9s de connectivit\xE9 cellulaire.</p>'}};
+doc['MessageBox']['FindMessageBox']={syn:'Permet de retrouver une interface de messagerie d\x27apr\xE8s un identifiant donn\xE9.',lib:'YMessageBox.FindMessageBox()',pro:'def FindMessageBox(<span id=pn>func</span>)',cmt:'<p>Permet de retrouver une interface de messagerie d\x27apr\xE8s un identifiant donn\xE9. L\x27identifiant peut \xEAtre sp\xE9cifi\xE9 sous plusieurs formes:<br> <ul> <li>NomLogiqueFonction</li> <li>NoSerieModule.IdentifiantFonction</li> <li>NoSerieModule.NomLogiqueFonction</li> <li>NomLogiqueModule.IdentifiantMat\xE9riel</li> <li>NomLogiqueModule.NomLogiqueFonction</li> </ul></p><p> Cette fonction n\x27exige pas que l\x27interface de messagerie soit en ligne au moment ou elle est appel\xE9e, l\x27objet retourn\xE9 sera n\xE9anmoins valide. Utiliser la m\xE9thode <tt>YMessageBox.isOnline()</tt> pour tester si l\x27interface de messagerie est utilisable \xE0 un moment donn\xE9. En cas d\x27ambigu\xEFt\xE9 lorsqu\x27on fait une recherche par nom logique, aucune erreur ne sera notifi\xE9e: la premi\xE8re instance trouv\xE9e sera renvoy\xE9e. La recherche se fait d\x27abord par nom mat\xE9riel, puis par nom logique.</p>',par:{func:'une cha\xEEne de caract\xE8res qui r\xE9f\xE9rence l\x27interface de messagerie sans ambigu\xEFt\xE9'},ret:'un objet de classe <tt>YMessageBox</tt> qui permet ensuite de contr\xF4ler l\x27interface de messagerie.'};
+doc['MessageBox']['FirstMessageBox']={syn:'Commence l\x27\xE9num\xE9ration des interfaces de messagerie accessibles par la librairie.',lib:'YMessageBox.FirstMessageBox()',pro:'def FirstMessageBox()',cmt:'<p>Commence l\x27\xE9num\xE9ration des interfaces de messagerie accessibles par la librairie. Utiliser la fonction <tt>YMessageBox.nextMessageBox()</tt> pour it\xE9rer sur les autres interfaces de messagerie.</p>',ret:'un pointeur sur un objet <tt>YMessageBox</tt>, correspondant \xE0 la premi\xE8re interface de messagerie accessible en ligne, ou <tt>null</tt> si il n\x27y a pas de interfaces de messagerie disponibles.'};
+doc['MessageBox']['clearCache']={syn:'Invalide le cache.',lib:'messagebox.clearCache()',pro:'def clearCache()',cmt:'<p>Invalide le cache. Invalide le cache des valeurs courantes de l\x27interface de messagerie. Force le prochain appel \xE0 une m\xE9thode get_xxx() ou loadxxx() pour charger les les donn\xE9es depuis le module.</p>'};
+doc['MessageBox']['clearPduCounters']={syn:'R\xE9initialise les compteurs d\x27unit\xE9s SMS transmises et re\xE7ues.',lib:'messagebox.clearPduCounters()',pro:'def clearPduCounters()',cmt:'<p>R\xE9initialise les compteurs d\x27unit\xE9s SMS transmises et re\xE7ues.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['MessageBox']['describe']={syn:'Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance de l\x27interface de messagerie au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'messagebox.describe()',pro:'def describe()',cmt:'<p>Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance de l\x27interface de messagerie au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. Plus pr\xE9cis\xE9ment, <tt>TYPE</tt> correspond au type de fonction, <tt>NAME</tt> correspond au nom utils\xE9 lors du premier acc\xE8s a la fonction, <tt>SERIAL</tt> correspond au num\xE9ro de s\xE9rie du module si le module est connect\xE9, ou <tt>\x22unresolved\x22</tt> sinon, et <tt>FUNCTIONID</tt> correspond \xE0 l\x27identifiant mat\xE9riel de la fonction si le module est connect\xE9. Par exemple, La methode va retourner <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> si le module est d\xE9j\xE0 connect\xE9 ou <tt>Relay(BadCustomeName.relay1)=unresolved</tt> si le module n\x27est pas d\xE9j\xE0 connect\xE9. Cette methode ne declenche aucune transaction USB ou TCP et peut donc \xEAtre utilis\xE9 dans un debuggeur.</p>',ret:'une cha\xEEne de caract\xE8res d\xE9crivant l\x27interface de messagerie (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['MessageBox']['get_advertisedValue']={syn:'Retourne la valeur courante de l\x27interface de messagerie (pas plus de 6 caract\xE8res).',lib:'messagebox.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Retourne la valeur courante de l\x27interface de messagerie (pas plus de 6 caract\xE8res).</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur courante de l\x27interface de messagerie (pas plus de 6 caract\xE8res).',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['MessageBox']['get_errorMessage']={syn:'Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de l\x27interface de messagerie.',lib:'messagebox.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de l\x27interface de messagerie. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'une cha\xEEne de caract\xE8res correspondant au message de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation de l\x27interface de messagerie.'};
+doc['MessageBox']['get_errorType']={syn:'Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de l\x27interface de messagerie.',lib:'messagebox.get_errorType()',pro:'def get_errorType()',cmt:'<p>Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation de l\x27interface de messagerie. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'un nombre correspondant au code de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation de l\x27interface de messagerie.'};
+doc['MessageBox']['get_friendlyName']={syn:'Retourne un identifiant global de l\x27interface de messagerie au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>.',lib:'messagebox.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Retourne un identifiant global de l\x27interface de messagerie au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>. Le cha\xEEne retourn\xE9e utilise soit les noms logiques du module et de l\x27interface de messagerie si ils sont d\xE9finis, soit respectivement le num\xE9ro de s\xE9rie du module et l\x27identifant mat\xE9riel de l\x27interface de messagerie (par exemple: <tt>MyCustomName.relay1</tt>)</p>',ret:'une cha\xEEne de caract\xE8res identifiant l\x27interface de messagerie en utilisant les noms logiques (ex: <tt>MyCustomName.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['MessageBox']['get_functionDescriptor']={syn:'Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction.',lib:'messagebox.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction. Cet identifiant peut \xEAtre utilis\xE9 pour tester si deux instance de <tt>YFunction</tt> r\xE9f\xE9rencent physiquement la m\xEAme fonction sur le m\xEAme module.</p>',ret:'un identifiant de type <tt>YFUN_DESCR</tt>.',ext:'Si la fonction n\x27a jamais \xE9t\xE9 contact\xE9e, la valeur retourn\xE9e sera <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>'};
+doc['MessageBox']['get_functionId']={syn:'Retourne l\x27identifiant mat\xE9riel de l\x27interface de messagerie, sans r\xE9f\xE9rence au module.',lib:'messagebox.get_functionId()',pro:'def get_functionId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel de l\x27interface de messagerie, sans r\xE9f\xE9rence au module. Par example <tt>relay1</tt>.</p>',ret:'une cha\xEEne de caract\xE8res identifiant l\x27interface de messagerie (ex: <tt>relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['MessageBox']['get_hardwareId']={syn:'Retourne l\x27identifiant mat\xE9riel unique de l\x27interface de messagerie au format <tt>SERIAL.FUNCTIONID</tt>.',lib:'messagebox.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel unique de l\x27interface de messagerie au format <tt>SERIAL.FUNCTIONID</tt>. L\x27identifiant unique est compos\xE9 du num\xE9ro de s\xE9rie du module et de l\x27identifiant mat\xE9riel de l\x27interface de messagerie (par example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'une cha\xEEne de caract\xE8res identifiant l\x27interface de messagerie (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['MessageBox']['get_logicalName']={syn:'Retourne le nom logique de l\x27interface de messagerie.',lib:'messagebox.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Retourne le nom logique de l\x27interface de messagerie.</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique de l\x27interface de messagerie.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['MessageBox']['get_messages']={syn:'Retourne la liste des messages re\xE7us et non effac\xE9s.',lib:'messagebox.get_messages()',pro:'def get_messages()',cmt:'<p>Retourne la liste des messages re\xE7us et non effac\xE9s. Cette fonction d\xE9code automatiquement les SMS concat\xE9n\xE9s.</p>',ret:'une liste d\x27objets YSms.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne une liste vide.'};
+doc['MessageBox']['get_module']={syn:'Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction.',lib:'messagebox.get_module()',pro:'def get_module()',cmt:'<p>Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction. Si la fonction ne peut \xEAtre trouv\xE9e sur aucun module, l\x27instance de <tt>YModule</tt> retourn\xE9e ne sera pas joignable.</p>',ret:'une instance de <tt>YModule</tt>'};
+doc['MessageBox']['get_pduReceived']={syn:'Retourne le nombre d\x27unit\xE9s SMS re\xE7ues jusqu\x27\xE0 pr\xE9sent.',lib:'messagebox.get_pduReceived()',pro:'def get_pduReceived()',cmt:'<p>Retourne le nombre d\x27unit\xE9s SMS re\xE7ues jusqu\x27\xE0 pr\xE9sent.</p>',ret:'un entier repr&eacute;sentant le nombre d\x27unit\xE9s SMS re\xE7ues jusqu\x27\xE0 pr\xE9sent',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_PDURECEIVED_INVALID</tt>.'};
+doc['MessageBox']['get_pduSent']={syn:'Retourne le nombre d\x27unit\xE9s SMS envoy\xE9es jusqu\x27\xE0 pr\xE9sent.',lib:'messagebox.get_pduSent()',pro:'def get_pduSent()',cmt:'<p>Retourne le nombre d\x27unit\xE9s SMS envoy\xE9es jusqu\x27\xE0 pr\xE9sent.</p>',ret:'un entier repr&eacute;sentant le nombre d\x27unit\xE9s SMS envoy\xE9es jusqu\x27\xE0 pr\xE9sent',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_PDUSENT_INVALID</tt>.'};
+doc['MessageBox']['get_slotsCount']={syn:'Retourne le nombre total de positions de stockage dans la carte SIM.',lib:'messagebox.get_slotsCount()',pro:'def get_slotsCount()',cmt:'<p>Retourne le nombre total de positions de stockage dans la carte SIM.</p>',ret:'un entier repr&eacute;sentant le nombre total de positions de stockage dans la carte SIM',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_SLOTSCOUNT_INVALID</tt>.'};
+doc['MessageBox']['get_slotsInUse']={syn:'Retourne le nombre de positions de stockage utilis\xE9es.',lib:'messagebox.get_slotsInUse()',pro:'def get_slotsInUse()',cmt:'<p>Retourne le nombre de positions de stockage utilis\xE9es.</p>',ret:'un entier repr&eacute;sentant le nombre de positions de stockage utilis\xE9es',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_SLOTSINUSE_INVALID</tt>.'};
+doc['MessageBox']['get_userData']={syn:'Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>.',lib:'messagebox.get_userData()',pro:'def get_userData()',cmt:'<p>Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',ret:'l\x27objet stock\xE9 pr\xE9c\xE9demment par l\x27appelant.'};
+doc['MessageBox']['isOnline']={syn:'V\xE9rifie si le module h\xE9bergeant l\x27interface de messagerie est joignable, sans d\xE9clencher d\x27erreur.',lib:'messagebox.isOnline()',pro:'def isOnline()',cmt:'<p>V\xE9rifie si le module h\xE9bergeant l\x27interface de messagerie est joignable, sans d\xE9clencher d\x27erreur. Si les valeurs des attributs en cache de l\x27interface de messagerie sont valides au moment de l\x27appel, le module est consid\xE9r\xE9 joignable. Cette fonction ne cause en aucun cas d\x27exception, quelle que soit l\x27erreur qui pourrait se produire lors de la v\xE9rification de joignabilit\xE9.</p>',ret:'<tt>true</tt> si l\x27interface de messagerie est joignable, <tt>false</tt> sinon'};
+doc['MessageBox']['load']={syn:'Met en cache les valeurs courantes de l\x27interface de messagerie, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e.',lib:'messagebox.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Met en cache les valeurs courantes de l\x27interface de messagerie, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e. Par d\xE9faut, lorsqu\x27on acc\xE8de \xE0 un module, tous les attributs des fonctions du module sont automatiquement mises en cache pour la dur\xE9e standard (5 ms). Cette m\xE9thode peut \xEAtre utilis\xE9e pour marquer occasionellement les donn\xE9es cach\xE9es comme valides pour une plus longue p\xE9riode, par exemple dans le but de r\xE9duire le trafic r\xE9seau.</p>',par:{msValidity:'un entier correspondant \xE0 la dur\xE9e de validit\xE9 attribu\xE9e aux les param\xE8tres charg\xE9s, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['MessageBox']['loadAttribute']={syn:'Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.',lib:'messagebox.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un cha\xEEne vide.'};
+doc['MessageBox']['muteValueCallbacks']={syn:'D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'messagebox.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Vous pouvez utiliser cette fonction pour \xE9conomiser la bande passante et le CPU sur les machines de faible puissance, ou pour \xE9viter le d\xE9clanchement de callbacks HTTP. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['MessageBox']['newMessage']={syn:'Cr\xE9e un nouveau message SMS vide, qui pourra ensuite \xEAtre librement param\xE9tr\xE9 puis envoy\xE9.',lib:'messagebox.newMessage()',pro:'def newMessage(<span id=pn>recipient</span>)',cmt:'<p>Cr\xE9e un nouveau message SMS vide, qui pourra ensuite \xEAtre librement param\xE9tr\xE9 puis envoy\xE9.</p>',par:{recipient:'une cha\xEEne de caract\xE8res contenant le num\xE9ro de t\xE9l\xE9phone, du destinataire, soit au format national, soit au format international commen\xE7ant par un signe plus'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['MessageBox']['nextMessageBox']={syn:'Continue l\x27\xE9num\xE9ration des interfaces de messagerie commenc\xE9e \xE0 l\x27aide de <tt>yFirstMessageBox()</tt>.',lib:'messagebox.nextMessageBox()',pro:'def nextMessageBox()',cmt:'<p>Continue l\x27\xE9num\xE9ration des interfaces de messagerie commenc\xE9e \xE0 l\x27aide de <tt>yFirstMessageBox()</tt>.</p>',ret:'un pointeur sur un objet <tt>YMessageBox</tt> accessible en ligne, ou <tt>null</tt> lorsque l\x27\xE9num\xE9ration est termin\xE9e.'};
+doc['MessageBox']['registerValueCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e.',lib:'messagebox.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callback peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callback ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et la cha\xEEne de caract\xE8re d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['MessageBox']['sendFlashMessage']={syn:'Envoie un SMS \x22Flash\x22, aussi appel\xE9 message de classe 0.',lib:'messagebox.sendFlashMessage()',pro:'def sendFlashMessage(<span id=pn>recipient</span>, <span id=pn>message</span>)',cmt:'<p>Envoie un SMS \x22Flash\x22, aussi appel\xE9 message de classe 0. Les messages flash s\x27affichent directement sur l\x27\xE9cran du t\xE9l\xE9phone du destinataire, et ne sont en principe pas sauv\xE9s sur la carte SIM. Cette fonction est capable d\x27envoyer des messages de plus de 160 caract\xE8res, \xE0 l\x27aide de la technique de concat\xE9nation de SMS. Les caract\xE8res accentu\xE9s de l\x27alphabet ISO-latin sont support\xE9s. Pour envoyer des messages avec des caract\xE8res unicodes plus sp\xE9ciaux tels que des caract\xE8res asiatiques et des \xE9motic\xF4nes, cr\xE9ez un message avec la m\xE9thode <tt>newMessage</tt> et d\xE9finissez son contenu avec la m\xE9thode <tt>addText</tt> et <tt>addUnicodeData</tt>.</p>',par:{recipient:'une cha\xEEne de caract\xE8res contenant le num\xE9ro de t\xE9l\xE9phone, du destinataire, soit au format national, soit au format international commen\xE7ant par un signe plus',message:'le texte du message \xE0 envoyer'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['MessageBox']['sendTextMessage']={syn:'Envoie un SMS textuel, avec les param\xE8tres standards.',lib:'messagebox.sendTextMessage()',pro:'def sendTextMessage(<span id=pn>recipient</span>, <span id=pn>message</span>)',cmt:'<p>Envoie un SMS textuel, avec les param\xE8tres standards. Cette fonction est capable d\x27envoyer des messages de plus de 160 caract\xE8res, \xE0 l\x27aide de la technique de concat\xE9nation de SMS. Les caract\xE8res accentu\xE9s de l\x27alphabet ISO-latin sont support\xE9s. Pour envoyer des messages avec des caract\xE8res unicodes plus sp\xE9ciaux tels que des caract\xE8res asiatiques et des \xE9motic\xF4nes, cr\xE9ez un message avec la m\xE9thode <tt>newMessage</tt> et d\xE9finissez son contenu avec les m\xE9thodes <tt>addText</tt> et <tt>addUnicodeData</tt>.</p>',par:{recipient:'une cha\xEEne de caract\xE8res contenant le num\xE9ro de t\xE9l\xE9phone, du destinataire, soit au format national, soit au format international commen\xE7ant par un signe plus',message:'le texte du message \xE0 envoyer'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['MessageBox']['set_logicalName']={syn:'Modifie le nom logique de l\x27interface de messagerie.',lib:'messagebox.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Modifie le nom logique de l\x27interface de messagerie. Vous pouvez utiliser <tt>yCheckLogicalName()</tt> pour v\xE9rifier si votre param\xE8tre est valide. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique de l\x27interface de messagerie.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27appel se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['MessageBox']['set_pduReceived']={syn:'Modifie la valeur du compteur d\x27unit\xE9s SMS re\xE7ues.',lib:'messagebox.set_pduReceived()',pro:'def set_pduReceived(<span id=pn>newval</span>)',cmt:'<p>Modifie la valeur du compteur d\x27unit\xE9s SMS re\xE7ues.</p>',par:{newval:'un entier repr&eacute;sentant la valeur du compteur d\x27unit\xE9s SMS re\xE7ues'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['MessageBox']['set_pduSent']={syn:'Modifie la valeur du compteur d\x27unit\xE9s SMS envoy\xE9es.',lib:'messagebox.set_pduSent()',pro:'def set_pduSent(<span id=pn>newval</span>)',cmt:'<p>Modifie la valeur du compteur d\x27unit\xE9s SMS envoy\xE9es.</p>',par:{newval:'un entier repr&eacute;sentant la valeur du compteur d\x27unit\xE9s SMS envoy\xE9es'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['MessageBox']['set_userData']={syn:'Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>.',lib:'messagebox.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',par:{data:'objet quelconque \xE0 m\xE9moriser'}};
+doc['MessageBox']['unmuteValueCallbacks']={syn:'R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'messagebox.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Cette fonction annule un pr\xE9c\xE9dent appel \xE0 <tt>muteValueCallbacks()</tt>. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+//--- (end of generated code: MessageBox)
+//--- (generated code: StepperMotor)
+doc['StepperMotor']={'':{syn:'Interface de la fonction StepperMotor',inc:'from yocto_steppermotor import *',cmt:'<p>La librairie de programmation Yoctopuce permet de piloter un moteur pas \xE0 pas.</p>'}};
+doc['StepperMotor']['FindStepperMotor']={syn:'Permet de retrouver un moteur pas \xE0 pas d\x27apr\xE8s un identifiant donn\xE9.',lib:'YStepperMotor.FindStepperMotor()',pro:'def FindStepperMotor(<span id=pn>func</span>)',cmt:'<p>Permet de retrouver un moteur pas \xE0 pas d\x27apr\xE8s un identifiant donn\xE9. L\x27identifiant peut \xEAtre sp\xE9cifi\xE9 sous plusieurs formes:<br> <ul> <li>NomLogiqueFonction</li> <li>NoSerieModule.IdentifiantFonction</li> <li>NoSerieModule.NomLogiqueFonction</li> <li>NomLogiqueModule.IdentifiantMat\xE9riel</li> <li>NomLogiqueModule.NomLogiqueFonction</li> </ul></p><p> Cette fonction n\x27exige pas que le moteur pas \xE0 pas soit en ligne au moment ou elle est appel\xE9e, l\x27objet retourn\xE9 sera n\xE9anmoins valide. Utiliser la m\xE9thode <tt>YStepperMotor.isOnline()</tt> pour tester si le moteur pas \xE0 pas est utilisable \xE0 un moment donn\xE9. En cas d\x27ambigu\xEFt\xE9 lorsqu\x27on fait une recherche par nom logique, aucune erreur ne sera notifi\xE9e: la premi\xE8re instance trouv\xE9e sera renvoy\xE9e. La recherche se fait d\x27abord par nom mat\xE9riel, puis par nom logique.</p>',par:{func:'une cha\xEEne de caract\xE8res qui r\xE9f\xE9rence le moteur pas \xE0 pas sans ambigu\xEFt\xE9'},ret:'un objet de classe <tt>YStepperMotor</tt> qui permet ensuite de contr\xF4ler le moteur pas \xE0 pas.'};
+doc['StepperMotor']['FirstStepperMotor']={syn:'Commence l\x27\xE9num\xE9ration des moteur pas \xE0 pas accessibles par la librairie.',lib:'YStepperMotor.FirstStepperMotor()',pro:'def FirstStepperMotor()',cmt:'<p>Commence l\x27\xE9num\xE9ration des moteur pas \xE0 pas accessibles par la librairie. Utiliser la fonction <tt>YStepperMotor.nextStepperMotor()</tt> pour it\xE9rer sur les autres moteur pas \xE0 pas.</p>',ret:'un pointeur sur un objet <tt>YStepperMotor</tt>, correspondant au premier moteur pas \xE0 pas accessible en ligne, ou <tt>null</tt> si il n\x27y a pas de moteur pas \xE0 pas disponibles.'};
+doc['StepperMotor']['abortAndBrake']={syn:'Stoppe le moteur en douceur d\xE8s que possible, sans attendre la fin de la commande actuelle.',lib:'steppermotor.abortAndBrake()',pro:'def abortAndBrake()',cmt:'<p>Stoppe le moteur en douceur d\xE8s que possible, sans attendre la fin de la commande actuelle.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur. En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['StepperMotor']['abortAndHiZ']={syn:'Rel\xE2che le contr\xF4le du moteur imm\xE9diatement, sans attendre la fin de la commande actuelle.',lib:'steppermotor.abortAndHiZ()',pro:'def abortAndHiZ()',cmt:'<p>Rel\xE2che le contr\xF4le du moteur imm\xE9diatement, sans attendre la fin de la commande actuelle.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur. En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['StepperMotor']['alertStepOut']={syn:'Avance le moteur d\x27un pas dans le sens inverse du mouvement en cours lors de la derni\xE8re alerte.',lib:'steppermotor.alertStepOut()',pro:'def alertStepOut()',cmt:'<p>Avance le moteur d\x27un pas dans le sens inverse du mouvement en cours lors de la derni\xE8re alerte. L\x27avance est possible m\xEAme si le syst\xE8me est encore en alerte (interrupteur de fin de course enclanch\xE9). Attention, utilisez cette fonction avec prudence car elle peut entra\xEEner des d\xE9gats m\xE9caniques !</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur. En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['StepperMotor']['changeSpeed']={syn:'Lance a moteur \xE0 une vitesse sp\xE9cifique.',lib:'steppermotor.changeSpeed()',pro:'def changeSpeed(<span id=pn>speed</span>)',cmt:'<p>Lance a moteur \xE0 une vitesse sp\xE9cifique. Le temps apr\xE8s lequel la vitesse sera atteinte d\xE9pend des param\xE8tres d\x27acc\xE9l\xE9ration configur\xE9s pour le moteur.</p>',par:{speed:'vitesse d\xE9sir\xE9e, en pas par seconde. La vitesse minimale non-nulle est de 0.001 impulsion par seconde.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur. En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['StepperMotor']['clearCache']={syn:'Invalide le cache.',lib:'steppermotor.clearCache()',pro:'def clearCache()',cmt:'<p>Invalide le cache. Invalide le cache des valeurs courantes du moteur pas \xE0 pas. Force le prochain appel \xE0 une m\xE9thode get_xxx() ou loadxxx() pour charger les les donn\xE9es depuis le module.</p>'};
+doc['StepperMotor']['describe']={syn:'Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du moteur pas \xE0 pas au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'steppermotor.describe()',pro:'def describe()',cmt:'<p>Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du moteur pas \xE0 pas au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. Plus pr\xE9cis\xE9ment, <tt>TYPE</tt> correspond au type de fonction, <tt>NAME</tt> correspond au nom utils\xE9 lors du premier acc\xE8s a la fonction, <tt>SERIAL</tt> correspond au num\xE9ro de s\xE9rie du module si le module est connect\xE9, ou <tt>\x22unresolved\x22</tt> sinon, et <tt>FUNCTIONID</tt> correspond \xE0 l\x27identifiant mat\xE9riel de la fonction si le module est connect\xE9. Par exemple, La methode va retourner <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> si le module est d\xE9j\xE0 connect\xE9 ou <tt>Relay(BadCustomeName.relay1)=unresolved</tt> si le module n\x27est pas d\xE9j\xE0 connect\xE9. Cette methode ne declenche aucune transaction USB ou TCP et peut donc \xEAtre utilis\xE9 dans un debuggeur.</p>',ret:'une cha\xEEne de caract\xE8res d\xE9crivant le moteur pas \xE0 pas (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['StepperMotor']['emergencyStop']={syn:'Stoppe le moteur en urgence, sans autre pr\xE9caution.',lib:'steppermotor.emergencyStop()',pro:'def emergencyStop()',cmt:'<p>Stoppe le moteur en urgence, sans autre pr\xE9caution.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur. En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['StepperMotor']['findHomePosition']={syn:'Lance le moteur en arri\xE8re \xE0 la vitesse sp\xE9cifi\xE9e, pour chercher l\x27origine de l\x27axe.',lib:'steppermotor.findHomePosition()',pro:'def findHomePosition(<span id=pn>speed</span>)',cmt:'<p>Lance le moteur en arri\xE8re \xE0 la vitesse sp\xE9cifi\xE9e, pour chercher l\x27origine de l\x27axe.</p>',par:{speed:'vitesse d\xE9sir\xE9e, en pas par seconde.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur. En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['StepperMotor']['get_advertisedValue']={syn:'Retourne la valeur courante du moteur pas \xE0 pas (pas plus de 6 caract\xE8res).',lib:'steppermotor.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Retourne la valeur courante du moteur pas \xE0 pas (pas plus de 6 caract\xE8res).</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur courante du moteur pas \xE0 pas (pas plus de 6 caract\xE8res).',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['StepperMotor']['get_auxSignal']={syn:'Retourne la valeur actuelle du signal g\xE9n\xE9r\xE9 sur la sortie auxiliaire.',lib:'steppermotor.get_auxSignal()',pro:'def get_auxSignal()',cmt:'<p>Retourne la valeur actuelle du signal g\xE9n\xE9r\xE9 sur la sortie auxiliaire.</p>',ret:'un entier repr&eacute;sentant la valeur actuelle du signal g\xE9n\xE9r\xE9 sur la sortie auxiliaire',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_AUXSIGNAL_INVALID</tt>.'};
+doc['StepperMotor']['get_diags']={syn:'Retourne l\x27\xE9tat d\xE9atill\xE9 du contr\xF4leur de moteur pas-\xE0-pas (bitmap).',lib:'steppermotor.get_diags()',pro:'def get_diags()',cmt:'<p>Retourne l\x27\xE9tat d\xE9atill\xE9 du contr\xF4leur de moteur pas-\xE0-pas (bitmap).</p>',ret:'un entier repr&eacute;sentant l\x27\xE9tat d\xE9atill\xE9 du contr\xF4leur de moteur pas-\xE0-pas (bitmap)',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_DIAGS_INVALID</tt>.'};
+doc['StepperMotor']['get_errorMessage']={syn:'Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du moteur pas \xE0 pas.',lib:'steppermotor.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du moteur pas \xE0 pas. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'une cha\xEEne de caract\xE8res correspondant au message de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du moteur pas \xE0 pas.'};
+doc['StepperMotor']['get_errorType']={syn:'Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du moteur pas \xE0 pas.',lib:'steppermotor.get_errorType()',pro:'def get_errorType()',cmt:'<p>Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du moteur pas \xE0 pas. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'un nombre correspondant au code de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du moteur pas \xE0 pas.'};
+doc['StepperMotor']['get_friendlyName']={syn:'Retourne un identifiant global du moteur pas \xE0 pas au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>.',lib:'steppermotor.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Retourne un identifiant global du moteur pas \xE0 pas au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>. Le cha\xEEne retourn\xE9e utilise soit les noms logiques du module et du moteur pas \xE0 pas si ils sont d\xE9finis, soit respectivement le num\xE9ro de s\xE9rie du module et l\x27identifant mat\xE9riel du moteur pas \xE0 pas (par exemple: <tt>MyCustomName.relay1</tt>)</p>',ret:'une cha\xEEne de caract\xE8res identifiant le moteur pas \xE0 pas en utilisant les noms logiques (ex: <tt>MyCustomName.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['StepperMotor']['get_functionDescriptor']={syn:'Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction.',lib:'steppermotor.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction. Cet identifiant peut \xEAtre utilis\xE9 pour tester si deux instance de <tt>YFunction</tt> r\xE9f\xE9rencent physiquement la m\xEAme fonction sur le m\xEAme module.</p>',ret:'un identifiant de type <tt>YFUN_DESCR</tt>.',ext:'Si la fonction n\x27a jamais \xE9t\xE9 contact\xE9e, la valeur retourn\xE9e sera <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>'};
+doc['StepperMotor']['get_functionId']={syn:'Retourne l\x27identifiant mat\xE9riel du moteur pas \xE0 pas, sans r\xE9f\xE9rence au module.',lib:'steppermotor.get_functionId()',pro:'def get_functionId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel du moteur pas \xE0 pas, sans r\xE9f\xE9rence au module. Par example <tt>relay1</tt>.</p>',ret:'une cha\xEEne de caract\xE8res identifiant le moteur pas \xE0 pas (ex: <tt>relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['StepperMotor']['get_hardwareId']={syn:'Retourne l\x27identifiant mat\xE9riel unique du moteur pas \xE0 pas au format <tt>SERIAL.FUNCTIONID</tt>.',lib:'steppermotor.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel unique du moteur pas \xE0 pas au format <tt>SERIAL.FUNCTIONID</tt>. L\x27identifiant unique est compos\xE9 du num\xE9ro de s\xE9rie du module et de l\x27identifiant mat\xE9riel du moteur pas \xE0 pas (par example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'une cha\xEEne de caract\xE8res identifiant le moteur pas \xE0 pas (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['StepperMotor']['get_logicalName']={syn:'Retourne le nom logique du moteur pas \xE0 pas.',lib:'steppermotor.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Retourne le nom logique du moteur pas \xE0 pas.</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du moteur pas \xE0 pas.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['StepperMotor']['get_maxAccel']={syn:'Retourne l\x27acc\xE9l\xE9ration maximale du moteur, mesur\xE9e en pas par seconde^2.',lib:'steppermotor.get_maxAccel()',pro:'def get_maxAccel()',cmt:'<p>Retourne l\x27acc\xE9l\xE9ration maximale du moteur, mesur\xE9e en pas par seconde^2.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant l\x27acc\xE9l\xE9ration maximale du moteur, mesur\xE9e en pas par seconde^2',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_MAXACCEL_INVALID</tt>.'};
+doc['StepperMotor']['get_maxSpeed']={syn:'Retourne la vitesse maximale du moteur, mesur\xE9e en pas par seconde.',lib:'steppermotor.get_maxSpeed()',pro:'def get_maxSpeed()',cmt:'<p>Retourne la vitesse maximale du moteur, mesur\xE9e en pas par seconde.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la vitesse maximale du moteur, mesur\xE9e en pas par seconde',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_MAXSPEED_INVALID</tt>.'};
+doc['StepperMotor']['get_module']={syn:'Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction.',lib:'steppermotor.get_module()',pro:'def get_module()',cmt:'<p>Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction. Si la fonction ne peut \xEAtre trouv\xE9e sur aucun module, l\x27instance de <tt>YModule</tt> retourn\xE9e ne sera pas joignable.</p>',ret:'une instance de <tt>YModule</tt>'};
+doc['StepperMotor']['get_motorState']={syn:'Retourne l\x27\xE9tat de fonctionnement du moteur.',lib:'steppermotor.get_motorState()',pro:'def get_motorState()',cmt:'<p>Retourne l\x27\xE9tat de fonctionnement du moteur.</p>',ret:'une valeur parmi <tt>Y_MOTORSTATE_ABSENT</tt>, <tt>Y_MOTORSTATE_ALERT</tt>, <tt>Y_MOTORSTATE_HI_Z</tt>, <tt>Y_MOTORSTATE_STOP</tt>, <tt>Y_MOTORSTATE_RUN</tt> et <tt>Y_MOTORSTATE_BATCH</tt> repr&eacute;sentant l\x27\xE9tat de fonctionnement du moteur',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_MOTORSTATE_INVALID</tt>.'};
+doc['StepperMotor']['get_overcurrent']={syn:'Retourne le seuil de d\xE9clenchement de la s\xE9curit\xE9 de d\xE9passement de courant, mesur\xE9 en mA.',lib:'steppermotor.get_overcurrent()',pro:'def get_overcurrent()',cmt:'<p>Retourne le seuil de d\xE9clenchement de la s\xE9curit\xE9 de d\xE9passement de courant, mesur\xE9 en mA.</p>',ret:'un entier repr&eacute;sentant le seuil de d\xE9clenchement de la s\xE9curit\xE9 de d\xE9passement de courant, mesur\xE9 en mA',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_OVERCURRENT_INVALID</tt>.'};
+doc['StepperMotor']['get_pullinSpeed']={syn:'Retourne la vitesse du moteur atteignable directement depuis l\x27arr\xEAt, mesur\xE9e en pas par seconde.',lib:'steppermotor.get_pullinSpeed()',pro:'def get_pullinSpeed()',cmt:'<p>Retourne la vitesse du moteur atteignable directement depuis l\x27arr\xEAt, mesur\xE9e en pas par seconde.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la vitesse du moteur atteignable directement depuis l\x27arr\xEAt, mesur\xE9e en pas par seconde',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_PULLINSPEED_INVALID</tt>.'};
+doc['StepperMotor']['get_speed']={syn:'Retourne la vitesse actuelle du moteur, mesur\xE9e en pas par seconde.',lib:'steppermotor.get_speed()',pro:'def get_speed()',cmt:'<p>Retourne la vitesse actuelle du moteur, mesur\xE9e en pas par seconde. Pour changer cette vitesse, utilisez la m\xE9thode <tt>changeSpeed()</tt>.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la vitesse actuelle du moteur, mesur\xE9e en pas par seconde',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_SPEED_INVALID</tt>.'};
+doc['StepperMotor']['get_stepPos']={syn:'Retourne la position logique actuelle du moteur, mesur\xE9e en pas.',lib:'steppermotor.get_stepPos()',pro:'def get_stepPos()',cmt:'<p>Retourne la position logique actuelle du moteur, mesur\xE9e en pas. La valeur peut \xEAtre fractionnaire lorsque le micro-stepping est utilis\xE9.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la position logique actuelle du moteur, mesur\xE9e en pas',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_STEPPOS_INVALID</tt>.'};
+doc['StepperMotor']['get_stepping']={syn:'Retourne le type de stepping utilis\xE9 pour piloter le moteur.',lib:'steppermotor.get_stepping()',pro:'def get_stepping()',cmt:'<p>Retourne le type de stepping utilis\xE9 pour piloter le moteur.</p>',ret:'une valeur parmi <tt>Y_STEPPING_MICROSTEP16</tt>, <tt>Y_STEPPING_MICROSTEP8</tt>, <tt>Y_STEPPING_MICROSTEP4</tt>, <tt>Y_STEPPING_HALFSTEP</tt> et <tt>Y_STEPPING_FULLSTEP</tt> repr&eacute;sentant le type de stepping utilis\xE9 pour piloter le moteur',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_STEPPING_INVALID</tt>.'};
+doc['StepperMotor']['get_tCurrRun']={syn:'Retourne la limite de courant pour la r\xE9gulation de torque en mouvement, mesur\xE9e en mA.',lib:'steppermotor.get_tCurrRun()',pro:'def get_tCurrRun()',cmt:'<p>Retourne la limite de courant pour la r\xE9gulation de torque en mouvement, mesur\xE9e en mA.</p>',ret:'un entier repr&eacute;sentant la limite de courant pour la r\xE9gulation de torque en mouvement, mesur\xE9e en mA',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_TCURRRUN_INVALID</tt>.'};
+doc['StepperMotor']['get_tCurrStop']={syn:'Retourne la limite de courant pour la r\xE9gulation de torque \xE0 l\x27arr\xEAt, mesur\xE9e en mA.',lib:'steppermotor.get_tCurrStop()',pro:'def get_tCurrStop()',cmt:'<p>Retourne la limite de courant pour la r\xE9gulation de torque \xE0 l\x27arr\xEAt, mesur\xE9e en mA.</p>',ret:'un entier repr&eacute;sentant la limite de courant pour la r\xE9gulation de torque \xE0 l\x27arr\xEAt, mesur\xE9e en mA',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_TCURRSTOP_INVALID</tt>.'};
+doc['StepperMotor']['get_userData']={syn:'Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>.',lib:'steppermotor.get_userData()',pro:'def get_userData()',cmt:'<p>Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',ret:'l\x27objet stock\xE9 pr\xE9c\xE9demment par l\x27appelant.'};
+doc['StepperMotor']['isOnline']={syn:'V\xE9rifie si le module h\xE9bergeant le moteur pas \xE0 pas est joignable, sans d\xE9clencher d\x27erreur.',lib:'steppermotor.isOnline()',pro:'def isOnline()',cmt:'<p>V\xE9rifie si le module h\xE9bergeant le moteur pas \xE0 pas est joignable, sans d\xE9clencher d\x27erreur. Si les valeurs des attributs en cache du moteur pas \xE0 pas sont valides au moment de l\x27appel, le module est consid\xE9r\xE9 joignable. Cette fonction ne cause en aucun cas d\x27exception, quelle que soit l\x27erreur qui pourrait se produire lors de la v\xE9rification de joignabilit\xE9.</p>',ret:'<tt>true</tt> si le moteur pas \xE0 pas est joignable, <tt>false</tt> sinon'};
+doc['StepperMotor']['load']={syn:'Met en cache les valeurs courantes du moteur pas \xE0 pas, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e.',lib:'steppermotor.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Met en cache les valeurs courantes du moteur pas \xE0 pas, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e. Par d\xE9faut, lorsqu\x27on acc\xE8de \xE0 un module, tous les attributs des fonctions du module sont automatiquement mises en cache pour la dur\xE9e standard (5 ms). Cette m\xE9thode peut \xEAtre utilis\xE9e pour marquer occasionellement les donn\xE9es cach\xE9es comme valides pour une plus longue p\xE9riode, par exemple dans le but de r\xE9duire le trafic r\xE9seau.</p>',par:{msValidity:'un entier correspondant \xE0 la dur\xE9e de validit\xE9 attribu\xE9e aux les param\xE8tres charg\xE9s, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['StepperMotor']['loadAttribute']={syn:'Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.',lib:'steppermotor.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un cha\xEEne vide.'};
+doc['StepperMotor']['moveRel']={syn:'Contr\xF4le le moteur pour atteindre une position relative donn\xE9e.',lib:'steppermotor.moveRel()',pro:'def moveRel(<span id=pn>relPos</span>)',cmt:'<p>Contr\xF4le le moteur pour atteindre une position relative donn\xE9e. Le temps n\xE9cessaire pour atteindre la position d\xE9pend des param\xE8tres d\x27acc\xE9l\xE9ration et de vitesse maximale configur\xE9s pour le moteur.</p>',par:{relPos:'position relative d\xE9sir\xE9e, en pas depuis la position actuelle.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur. En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['StepperMotor']['moveTo']={syn:'Contr\xF4le le moteur pour atteindre une position absolue donn\xE9e.',lib:'steppermotor.moveTo()',pro:'def moveTo(<span id=pn>absPos</span>)',cmt:'<p>Contr\xF4le le moteur pour atteindre une position absolue donn\xE9e. Le temps n\xE9cessaire pour atteindre la position d\xE9pend des param\xE8tres d\x27acc\xE9l\xE9ration et de vitesse maximale configur\xE9s pour le moteur.</p>',par:{absPos:'position absolue d\xE9sir\xE9e, en pas depuis l\x27origine.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur. En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['StepperMotor']['muteValueCallbacks']={syn:'D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'steppermotor.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Vous pouvez utiliser cette fonction pour \xE9conomiser la bande passante et le CPU sur les machines de faible puissance, ou pour \xE9viter le d\xE9clanchement de callbacks HTTP. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['StepperMotor']['nextStepperMotor']={syn:'Continue l\x27\xE9num\xE9ration des moteur pas \xE0 pas commenc\xE9e \xE0 l\x27aide de <tt>yFirstStepperMotor()</tt>.',lib:'steppermotor.nextStepperMotor()',pro:'def nextStepperMotor()',cmt:'<p>Continue l\x27\xE9num\xE9ration des moteur pas \xE0 pas commenc\xE9e \xE0 l\x27aide de <tt>yFirstStepperMotor()</tt>.</p>',ret:'un pointeur sur un objet <tt>YStepperMotor</tt> accessible en ligne, ou <tt>null</tt> lorsque l\x27\xE9num\xE9ration est termin\xE9e.'};
+doc['StepperMotor']['pause']={syn:'Garde le moteur dans le m\xEAme \xE9tat pour la dur\xE9e sp\xE9cifi\xE9e, avant d\x27ex\xE9cuter la commande suivante.',lib:'steppermotor.pause()',pro:'def pause(<span id=pn>waitMs</span>)',cmt:'<p>Garde le moteur dans le m\xEAme \xE9tat pour la dur\xE9e sp\xE9cifi\xE9e, avant d\x27ex\xE9cuter la commande suivante.</p>',par:{waitMs:'temps d\x27attente, en milliseconde.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur. En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['StepperMotor']['registerValueCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e.',lib:'steppermotor.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callback peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callback ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et la cha\xEEne de caract\xE8re d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['StepperMotor']['reset']={syn:'R\xE9initialise le controlleur et quittance toutes les alertes.',lib:'steppermotor.reset()',pro:'def reset()',cmt:'<p>R\xE9initialise le controlleur et quittance toutes les alertes.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur. En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['StepperMotor']['set_auxSignal']={syn:'Modifie la valeur du signal g\xE9n\xE9r\xE9 sur la sortie auxiliaire.',lib:'steppermotor.set_auxSignal()',pro:'def set_auxSignal(<span id=pn>newval</span>)',cmt:'<p>Modifie la valeur du signal g\xE9n\xE9r\xE9 sur la sortie auxiliaire. Les valeurs valides d\xE9pendent de la configuration du type de signal utilis\xE9 sur la sortie auxiliaire.</p>',par:{newval:'un entier repr&eacute;sentant la valeur du signal g\xE9n\xE9r\xE9 sur la sortie auxiliaire'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['StepperMotor']['set_logicalName']={syn:'Modifie le nom logique du moteur pas \xE0 pas.',lib:'steppermotor.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Modifie le nom logique du moteur pas \xE0 pas. Vous pouvez utiliser <tt>yCheckLogicalName()</tt> pour v\xE9rifier si votre param\xE8tre est valide. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du moteur pas \xE0 pas.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27appel se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['StepperMotor']['set_maxAccel']={syn:'Modifie l\x27acc\xE9l\xE9ration maximale du moteur, mesur\xE9e en pas par seconde^2.',lib:'steppermotor.set_maxAccel()',pro:'def set_maxAccel(<span id=pn>newval</span>)',cmt:'<p>Modifie l\x27acc\xE9l\xE9ration maximale du moteur, mesur\xE9e en pas par seconde^2.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant l\x27acc\xE9l\xE9ration maximale du moteur, mesur\xE9e en pas par seconde^2'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['StepperMotor']['set_maxSpeed']={syn:'Modifie la vitesse maximale du moteur, mesur\xE9e en pas par seconde.',lib:'steppermotor.set_maxSpeed()',pro:'def set_maxSpeed(<span id=pn>newval</span>)',cmt:'<p>Modifie la vitesse maximale du moteur, mesur\xE9e en pas par seconde.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la vitesse maximale du moteur, mesur\xE9e en pas par seconde'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['StepperMotor']['set_overcurrent']={syn:'Modifie le seuil de d\xE9clenchement de la s\xE9curit\xE9 de d\xE9passement de courant, mesur\xE9 en mA.',lib:'steppermotor.set_overcurrent()',pro:'def set_overcurrent(<span id=pn>newval</span>)',cmt:'<p>Modifie le seuil de d\xE9clenchement de la s\xE9curit\xE9 de d\xE9passement de courant, mesur\xE9 en mA.</p>',par:{newval:'un entier repr&eacute;sentant le seuil de d\xE9clenchement de la s\xE9curit\xE9 de d\xE9passement de courant, mesur\xE9 en mA'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['StepperMotor']['set_pullinSpeed']={syn:'Modifie la vitesse du moteur atteignable directement depuis l\x27arr\xEAt, mesur\xE9e en pas par seconde.',lib:'steppermotor.set_pullinSpeed()',pro:'def set_pullinSpeed(<span id=pn>newval</span>)',cmt:'<p>Modifie la vitesse du moteur atteignable directement depuis l\x27arr\xEAt, mesur\xE9e en pas par seconde.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la vitesse du moteur atteignable directement depuis l\x27arr\xEAt, mesur\xE9e en pas par seconde'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['StepperMotor']['set_stepPos']={syn:'Modifie la position logique actuelle du moteur, mesur\xE9e en pas.',lib:'steppermotor.set_stepPos()',pro:'def set_stepPos(<span id=pn>newval</span>)',cmt:'<p>Modifie la position logique actuelle du moteur, mesur\xE9e en pas. Cette commande ne d\xE9clanche pas de mouvement du moteur, elle sert uniquement \xE0 configurer l\x27origine du compteur de position. La partie fractionnaire, d\xE9pendant de la position physique du rotor, n\x27est pas modifi\xE9e. Pour d\xE9clancher un mouvement, utilisez la m\xE9thode <tt>moveTo()</tt> ou la m\xE9thode <tt>moveRel()</tt>.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la position logique actuelle du moteur, mesur\xE9e en pas'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['StepperMotor']['set_stepping']={syn:'Modifie le type de stepping utilis\xE9 pour piloter le moteur.',lib:'steppermotor.set_stepping()',pro:'def set_stepping(<span id=pn>newval</span>)',cmt:'<p>Modifie le type de stepping utilis\xE9 pour piloter le moteur.</p>',par:{newval:'une valeur parmi <tt>Y_STEPPING_MICROSTEP16</tt>, <tt>Y_STEPPING_MICROSTEP8</tt>, <tt>Y_STEPPING_MICROSTEP4</tt>, <tt>Y_STEPPING_HALFSTEP</tt> et <tt>Y_STEPPING_FULLSTEP</tt> repr&eacute;sentant le type de stepping utilis\xE9 pour piloter le moteur'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['StepperMotor']['set_tCurrRun']={syn:'Modifie la limite de courant pour la r\xE9gulation de torque en mouvement, mesur\xE9e en mA.',lib:'steppermotor.set_tCurrRun()',pro:'def set_tCurrRun(<span id=pn>newval</span>)',cmt:'<p>Modifie la limite de courant pour la r\xE9gulation de torque en mouvement, mesur\xE9e en mA.</p>',par:{newval:'un entier repr&eacute;sentant la limite de courant pour la r\xE9gulation de torque en mouvement, mesur\xE9e en mA'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['StepperMotor']['set_tCurrStop']={syn:'Modifie la limite de courant pour la r\xE9gulation de torque \xE0 l\x27arr\xEAt, mesur\xE9e en mA.',lib:'steppermotor.set_tCurrStop()',pro:'def set_tCurrStop(<span id=pn>newval</span>)',cmt:'<p>Modifie la limite de courant pour la r\xE9gulation de torque \xE0 l\x27arr\xEAt, mesur\xE9e en mA.</p>',par:{newval:'un entier repr&eacute;sentant la limite de courant pour la r\xE9gulation de torque \xE0 l\x27arr\xEAt, mesur\xE9e en mA'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['StepperMotor']['set_userData']={syn:'Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>.',lib:'steppermotor.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',par:{data:'objet quelconque \xE0 m\xE9moriser'}};
+doc['StepperMotor']['unmuteValueCallbacks']={syn:'R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'steppermotor.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Cette fonction annule un pr\xE9c\xE9dent appel \xE0 <tt>muteValueCallbacks()</tt>. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+//--- (end of generated code: StepperMotor)
+//--- (generated code: Proximity)
+doc['Proximity']={'':{syn:'Interface de la fonction Proximity',inc:'from yocto_proximity import *',cmt:'<p>La classe YProximity permet d\x27utiliser et de configurer les capteurs de proximit\xE9 Yoctopuce. Elle h\xE9rite de la class YSensor toutes les fonctions de base des capteurs Yoctopuce: lecture de mesures, callbacks, enregistreur de donn\xE9es. De plus, elle permet d\x27effectuer facilement une calibration lin\xE9aire \xE0 un point pour compenser l\x27effet d\x27une vitre ou d\x27un filtre plac\xE9 devant le capteur.</p>'}};
+doc['Proximity']['FindProximity']={syn:'Permet de retrouver un capteur de proximit\xE9 d\x27apr\xE8s un identifiant donn\xE9.',lib:'YProximity.FindProximity()',pro:'def FindProximity(<span id=pn>func</span>)',cmt:'<p>Permet de retrouver un capteur de proximit\xE9 d\x27apr\xE8s un identifiant donn\xE9. L\x27identifiant peut \xEAtre sp\xE9cifi\xE9 sous plusieurs formes:<br> <ul> <li>NomLogiqueFonction</li> <li>NoSerieModule.IdentifiantFonction</li> <li>NoSerieModule.NomLogiqueFonction</li> <li>NomLogiqueModule.IdentifiantMat\xE9riel</li> <li>NomLogiqueModule.NomLogiqueFonction</li> </ul></p><p> Cette fonction n\x27exige pas que le capteur de proximit\xE9 soit en ligne au moment ou elle est appel\xE9e, l\x27objet retourn\xE9 sera n\xE9anmoins valide. Utiliser la m\xE9thode <tt>YProximity.isOnline()</tt> pour tester si le capteur de proximit\xE9 est utilisable \xE0 un moment donn\xE9. En cas d\x27ambigu\xEFt\xE9 lorsqu\x27on fait une recherche par nom logique, aucune erreur ne sera notifi\xE9e: la premi\xE8re instance trouv\xE9e sera renvoy\xE9e. La recherche se fait d\x27abord par nom mat\xE9riel, puis par nom logique.</p>',par:{func:'une cha\xEEne de caract\xE8res qui r\xE9f\xE9rence le capteur de proximit\xE9 sans ambigu\xEFt\xE9'},ret:'un objet de classe <tt>YProximity</tt> qui permet ensuite de contr\xF4ler le capteur de proximit\xE9.'};
+doc['Proximity']['FirstProximity']={syn:'Commence l\x27\xE9num\xE9ration des capteurs de proximit\xE9 accessibles par la librairie.',lib:'YProximity.FirstProximity()',pro:'def FirstProximity()',cmt:'<p>Commence l\x27\xE9num\xE9ration des capteurs de proximit\xE9 accessibles par la librairie. Utiliser la fonction <tt>YProximity.nextProximity()</tt> pour it\xE9rer sur les autres capteurs de proximit\xE9.</p>',ret:'un pointeur sur un objet <tt>YProximity</tt>, correspondant au premier capteur de proximit\xE9 accessible en ligne, ou <tt>null</tt> si il n\x27y a pas de capteurs de proximit\xE9 disponibles.'};
+doc['Proximity']['calibrateFromPoints']={syn:'Enregistre des points de correction de mesure, typiquement pour compenser l\x27effet d\x27un bo\xEEtier sur les mesures rendues par le capteur.',lib:'proximity.calibrateFromPoints()',pro:'def calibrateFromPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Enregistre des points de correction de mesure, typiquement pour compenser l\x27effet d\x27un bo\xEEtier sur les mesures rendues par le capteur. Il est possible d\x27enregistrer jusqu\x27\xE0 cinq points de correction. Les points de correction doivent \xEAtre fournis en ordre croissant, et dans la plage valide du capteur. Le module effectue automatiquement une interpolation lin\xE9aire de l\x27erreur entre les points sp\xE9cifi\xE9s. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p><p> Pour plus de plus amples possibilit\xE9s d\x27appliquer une surcalibration aux capteurs, veuillez contacter support@yoctopuce.com.</p>',par:{rawValues:'tableau de nombres flottants, correspondant aux valeurs brutes rendues par le capteur pour les points de correction.',refValues:'tableau de nombres flottants, correspondant aux valeurs corrig\xE9es d\xE9sir\xE9es pour les points de correction.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Proximity']['clearCache']={syn:'Invalide le cache.',lib:'proximity.clearCache()',pro:'def clearCache()',cmt:'<p>Invalide le cache. Invalide le cache des valeurs courantes du capteur de proximit\xE9. Force le prochain appel \xE0 une m\xE9thode get_xxx() ou loadxxx() pour charger les les donn\xE9es depuis le module.</p>'};
+doc['Proximity']['describe']={syn:'Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du capteur de proximit\xE9 au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'proximity.describe()',pro:'def describe()',cmt:'<p>Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du capteur de proximit\xE9 au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. Plus pr\xE9cis\xE9ment, <tt>TYPE</tt> correspond au type de fonction, <tt>NAME</tt> correspond au nom utils\xE9 lors du premier acc\xE8s a la fonction, <tt>SERIAL</tt> correspond au num\xE9ro de s\xE9rie du module si le module est connect\xE9, ou <tt>\x22unresolved\x22</tt> sinon, et <tt>FUNCTIONID</tt> correspond \xE0 l\x27identifiant mat\xE9riel de la fonction si le module est connect\xE9. Par exemple, La methode va retourner <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> si le module est d\xE9j\xE0 connect\xE9 ou <tt>Relay(BadCustomeName.relay1)=unresolved</tt> si le module n\x27est pas d\xE9j\xE0 connect\xE9. Cette methode ne declenche aucune transaction USB ou TCP et peut donc \xEAtre utilis\xE9 dans un debuggeur.</p>',ret:'une cha\xEEne de caract\xE8res d\xE9crivant le capteur de proximit\xE9 (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['Proximity']['get_advertisedValue']={syn:'Retourne la valeur courante du capteur de proximit\xE9 (pas plus de 6 caract\xE8res).',lib:'proximity.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Retourne la valeur courante du capteur de proximit\xE9 (pas plus de 6 caract\xE8res).</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur courante du capteur de proximit\xE9 (pas plus de 6 caract\xE8res).',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['Proximity']['get_currentRawValue']={syn:'Retourne la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en l\x27unit\xE9 sp\xE9cifi\xE9e, sous forme de nombre \xE0 virgule.',lib:'proximity.get_currentRawValue()',pro:'def get_currentRawValue()',cmt:'<p>Retourne la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en l\x27unit\xE9 sp\xE9cifi\xE9e, sous forme de nombre \xE0 virgule.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en l\x27unit\xE9 sp\xE9cifi\xE9e, sous forme de nombre \xE0 virgule',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_CURRENTRAWVALUE_INVALID</tt>.'};
+doc['Proximity']['get_currentValue']={syn:'Retourne la valeur actuelle de la d\xE9tection de proximit\xE9, en l\x27unit\xE9 sp\xE9cifi\xE9e, sous forme de nombre \xE0 virgule.',lib:'proximity.get_currentValue()',pro:'def get_currentValue()',cmt:'<p>Retourne la valeur actuelle de la d\xE9tection de proximit\xE9, en l\x27unit\xE9 sp\xE9cifi\xE9e, sous forme de nombre \xE0 virgule.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur actuelle de la d\xE9tection de proximit\xE9, en l\x27unit\xE9 sp\xE9cifi\xE9e, sous forme de nombre \xE0 virgule',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_CURRENTVALUE_INVALID</tt>.'};
+doc['Proximity']['get_detectionThreshold']={syn:'Retourne le seuil utilis\xE9 pour d\xE9termin\xE9 l\x27\xE9tat logique de la d\xE9tection de proximit\xE9, lorsqu\x27on la traite comme une entr\xE9e binaire (on/off).',lib:'proximity.get_detectionThreshold()',pro:'def get_detectionThreshold()',cmt:'<p>Retourne le seuil utilis\xE9 pour d\xE9termin\xE9 l\x27\xE9tat logique de la d\xE9tection de proximit\xE9, lorsqu\x27on la traite comme une entr\xE9e binaire (on/off).</p>',ret:'un entier repr&eacute;sentant le seuil utilis\xE9 pour d\xE9termin\xE9 l\x27\xE9tat logique de la d\xE9tection de proximit\xE9, lorsqu\x27on la traite comme une entr\xE9e binaire (on/off)',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_DETECTIONTHRESHOLD_INVALID</tt>.'};
+doc['Proximity']['get_errorMessage']={syn:'Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du capteur de proximit\xE9.',lib:'proximity.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du capteur de proximit\xE9. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'une cha\xEEne de caract\xE8res correspondant au message de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du capteur de proximit\xE9.'};
+doc['Proximity']['get_errorType']={syn:'Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du capteur de proximit\xE9.',lib:'proximity.get_errorType()',pro:'def get_errorType()',cmt:'<p>Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du capteur de proximit\xE9. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'un nombre correspondant au code de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du capteur de proximit\xE9.'};
+doc['Proximity']['get_friendlyName']={syn:'Retourne un identifiant global du capteur de proximit\xE9 au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>.',lib:'proximity.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Retourne un identifiant global du capteur de proximit\xE9 au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>. Le cha\xEEne retourn\xE9e utilise soit les noms logiques du module et du capteur de proximit\xE9 si ils sont d\xE9finis, soit respectivement le num\xE9ro de s\xE9rie du module et l\x27identifant mat\xE9riel du capteur de proximit\xE9 (par exemple: <tt>MyCustomName.relay1</tt>)</p>',ret:'une cha\xEEne de caract\xE8res identifiant le capteur de proximit\xE9 en utilisant les noms logiques (ex: <tt>MyCustomName.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['Proximity']['get_functionDescriptor']={syn:'Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction.',lib:'proximity.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction. Cet identifiant peut \xEAtre utilis\xE9 pour tester si deux instance de <tt>YFunction</tt> r\xE9f\xE9rencent physiquement la m\xEAme fonction sur le m\xEAme module.</p>',ret:'un identifiant de type <tt>YFUN_DESCR</tt>.',ext:'Si la fonction n\x27a jamais \xE9t\xE9 contact\xE9e, la valeur retourn\xE9e sera <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>'};
+doc['Proximity']['get_functionId']={syn:'Retourne l\x27identifiant mat\xE9riel du capteur de proximit\xE9, sans r\xE9f\xE9rence au module.',lib:'proximity.get_functionId()',pro:'def get_functionId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel du capteur de proximit\xE9, sans r\xE9f\xE9rence au module. Par example <tt>relay1</tt>.</p>',ret:'une cha\xEEne de caract\xE8res identifiant le capteur de proximit\xE9 (ex: <tt>relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['Proximity']['get_hardwareId']={syn:'Retourne l\x27identifiant mat\xE9riel unique du capteur de proximit\xE9 au format <tt>SERIAL.FUNCTIONID</tt>.',lib:'proximity.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel unique du capteur de proximit\xE9 au format <tt>SERIAL.FUNCTIONID</tt>. L\x27identifiant unique est compos\xE9 du num\xE9ro de s\xE9rie du module et de l\x27identifiant mat\xE9riel du capteur de proximit\xE9 (par example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'une cha\xEEne de caract\xE8res identifiant le capteur de proximit\xE9 (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['Proximity']['get_highestValue']={syn:'Retourne la valeur maximale observ\xE9e pour la d\xE9tection de proximit\xE9 depuis le d\xE9marrage du module.',lib:'proximity.get_highestValue()',pro:'def get_highestValue()',cmt:'<p>Retourne la valeur maximale observ\xE9e pour la d\xE9tection de proximit\xE9 depuis le d\xE9marrage du module.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur maximale observ\xE9e pour la d\xE9tection de proximit\xE9 depuis le d\xE9marrage du module',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_HIGHESTVALUE_INVALID</tt>.'};
+doc['Proximity']['get_isPresent']={syn:'Retourne vrai si l\x27entr\xE9e (consid\xE9r\xE9e comme binaire) est active (valeur de d\xE9tection inf\xE9rieure au seuil <tt>threshold</tt>), et faux sinon.',lib:'proximity.get_isPresent()',pro:'def get_isPresent()',cmt:'<p>Retourne vrai si l\x27entr\xE9e (consid\xE9r\xE9e comme binaire) est active (valeur de d\xE9tection inf\xE9rieure au seuil <tt>threshold</tt>), et faux sinon.</p>',ret:'soit <tt>Y_ISPRESENT_FALSE</tt>, soit <tt>Y_ISPRESENT_TRUE</tt>, selon vrai si l\x27entr\xE9e (consid\xE9r\xE9e comme binaire) est active (valeur de d\xE9tection inf\xE9rieure au seuil <tt>threshold</tt>), et faux sinon',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_ISPRESENT_INVALID</tt>.'};
+doc['Proximity']['get_lastTimeApproached']={syn:'Retourne le temps absolu (nombre de millisecondes) entre la mise sous tension du module et la derni\xE8re d\xE9tection observ\xE9e (transition de absent \xE0 pr\xE9sent).',lib:'proximity.get_lastTimeApproached()',pro:'def get_lastTimeApproached()',cmt:'<p>Retourne le temps absolu (nombre de millisecondes) entre la mise sous tension du module et la derni\xE8re d\xE9tection observ\xE9e (transition de absent \xE0 pr\xE9sent).</p>',ret:'un entier repr&eacute;sentant le temps absolu (nombre de millisecondes) entre la mise sous tension du module et la derni\xE8re d\xE9tection observ\xE9e (transition de absent \xE0 pr\xE9sent)',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_LASTTIMEAPPROACHED_INVALID</tt>.'};
+doc['Proximity']['get_lastTimeRemoved']={syn:'Retourne le temps absolu (nombre de millisecondes) entre la mise sous tension du module et la derni\xE8re d\xE9tection observ\xE9e (transition de pr\xE9sent \xE0 absent).',lib:'proximity.get_lastTimeRemoved()',pro:'def get_lastTimeRemoved()',cmt:'<p>Retourne le temps absolu (nombre de millisecondes) entre la mise sous tension du module et la derni\xE8re d\xE9tection observ\xE9e (transition de pr\xE9sent \xE0 absent).</p>',ret:'un entier repr&eacute;sentant le temps absolu (nombre de millisecondes) entre la mise sous tension du module et la derni\xE8re d\xE9tection observ\xE9e (transition de pr\xE9sent \xE0 absent)',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_LASTTIMEREMOVED_INVALID</tt>.'};
+doc['Proximity']['get_logFrequency']={syn:'Retourne la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es.',lib:'proximity.get_logFrequency()',pro:'def get_logFrequency()',cmt:'<p>Retourne la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_LOGFREQUENCY_INVALID</tt>.'};
+doc['Proximity']['get_logicalName']={syn:'Retourne le nom logique du capteur de proximit\xE9.',lib:'proximity.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Retourne le nom logique du capteur de proximit\xE9.</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du capteur de proximit\xE9.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['Proximity']['get_lowestValue']={syn:'Retourne la valeur minimale observ\xE9e pour la d\xE9tection de proximit\xE9 depuis le d\xE9marrage du module.',lib:'proximity.get_lowestValue()',pro:'def get_lowestValue()',cmt:'<p>Retourne la valeur minimale observ\xE9e pour la d\xE9tection de proximit\xE9 depuis le d\xE9marrage du module.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur minimale observ\xE9e pour la d\xE9tection de proximit\xE9 depuis le d\xE9marrage du module',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_LOWESTVALUE_INVALID</tt>.'};
+doc['Proximity']['get_module']={syn:'Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction.',lib:'proximity.get_module()',pro:'def get_module()',cmt:'<p>Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction. Si la fonction ne peut \xEAtre trouv\xE9e sur aucun module, l\x27instance de <tt>YModule</tt> retourn\xE9e ne sera pas joignable.</p>',ret:'une instance de <tt>YModule</tt>'};
+doc['Proximity']['get_pulseCounter']={syn:'Retourne la valeur du compteur d\x27impulsions.',lib:'proximity.get_pulseCounter()',pro:'def get_pulseCounter()',cmt:'<p>Retourne la valeur du compteur d\x27impulsions. La valeur est cod\xE9e sur 32 bits. En cas de d\xE9passement de capacite (>=2^32), le compteur repart \xE0 z\xE9ro. Le compteur peut \xEAtre r\xE9initialis\xE9 en appelant la m\xE9thode resetCounter().</p>',ret:'un entier repr&eacute;sentant la valeur du compteur d\x27impulsions',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_PULSECOUNTER_INVALID</tt>.'};
+doc['Proximity']['get_pulseTimer']={syn:'Retourne le timer du compteur d\x27impulsions (ms).',lib:'proximity.get_pulseTimer()',pro:'def get_pulseTimer()',cmt:'<p>Retourne le timer du compteur d\x27impulsions (ms).</p>',ret:'un entier repr&eacute;sentant le timer du compteur d\x27impulsions (ms)',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_PULSETIMER_INVALID</tt>.'};
+doc['Proximity']['get_recordedData']={syn:'Retourne un objet DataSet repr\xE9sentant des mesures de ce capteur pr\xE9c\xE9demment enregistr\xE9es \xE0 l\x27aide du DataLogger, pour l\x27intervalle de temps sp\xE9cifi\xE9.',lib:'proximity.get_recordedData()',pro:'def get_recordedData(<span id=pn>startTime</span>, <span id=pn>endTime</span>)',cmt:'<p>Retourne un objet DataSet repr\xE9sentant des mesures de ce capteur pr\xE9c\xE9demment enregistr\xE9es \xE0 l\x27aide du DataLogger, pour l\x27intervalle de temps sp\xE9cifi\xE9. Veuillez vous r\xE9f\xE9rer \xE0 la documentation de la classe DataSet pour plus plus d\x27informations sur la mani\xE8re d\x27obtenir un aper\xE7u des mesures pour la p\xE9riode, et comment charger progressivement une grande quantit\xE9 de mesures depuis le dataLogger.</p><p> Cette m\xE9thode ne fonctionne que si le module utilise un firmware r\xE9cent, car les objets DataSet ne sont pas support\xE9s par les firmwares ant\xE9rieurs \xE0 la r\xE9vision 13000.</p>',par:{startTime:'le d\xE9but de l\x27intervalle de mesure d\xE9sir\xE9, c\x27est \xE0 dire en nombre de secondes depuis le 1er janvier 1970 UTC. La valeur 0 peut \xEAtre utilis\xE9e pour ne poser aucune limite sur le d\xE9but des mesures.',endTime:'la find de l\x27intercalle de mesure d\xE9sir\xE9, c\x27est \xE0 dire en nombre de secondes depuis le 1er janvier 1970 UTC. La valeur 0 peut \xEAtre utilis\xE9e pour ne poser aucune limite de fin.'},ret:'une instance de YDataSet, dont les m\xE9thodes permettent de d\x27acc\xE9der aux donn\xE9es historiques souhait\xE9es.'};
+doc['Proximity']['get_reportFrequency']={syn:'Retourne la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction.',lib:'proximity.get_reportFrequency()',pro:'def get_reportFrequency()',cmt:'<p>Retourne la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_REPORTFREQUENCY_INVALID</tt>.'};
+doc['Proximity']['get_resolution']={syn:'Retourne la r\xE9solution des valeurs mesur\xE9es.',lib:'proximity.get_resolution()',pro:'def get_resolution()',cmt:'<p>Retourne la r\xE9solution des valeurs mesur\xE9es. La r\xE9solution correspond \xE0 la pr\xE9cision num\xE9rique de la repr\xE9sentation des mesures. Elle n\x27est pas forc\xE9ment identique \xE0 la pr\xE9cision r\xE9elle du capteur.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la r\xE9solution des valeurs mesur\xE9es',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_RESOLUTION_INVALID</tt>.'};
+doc['Proximity']['get_sensorState']={syn:'Retourne le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment.',lib:'proximity.get_sensorState()',pro:'def get_sensorState()',cmt:'<p>Retourne le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment.</p>',ret:'un entier repr&eacute;sentant le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_SENSORSTATE_INVALID</tt>.'};
+doc['Proximity']['get_unit']={syn:'Retourne l\x27unit\xE9 dans laquelle la d\xE9tection de proximit\xE9 est exprim\xE9e.',lib:'proximity.get_unit()',pro:'def get_unit()',cmt:'<p>Retourne l\x27unit\xE9 dans laquelle la d\xE9tection de proximit\xE9 est exprim\xE9e.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant l\x27unit\xE9 dans laquelle la d\xE9tection de proximit\xE9 est exprim\xE9e',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_UNIT_INVALID</tt>.'};
+doc['Proximity']['get_userData']={syn:'Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>.',lib:'proximity.get_userData()',pro:'def get_userData()',cmt:'<p>Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',ret:'l\x27objet stock\xE9 pr\xE9c\xE9demment par l\x27appelant.'};
+doc['Proximity']['isOnline']={syn:'V\xE9rifie si le module h\xE9bergeant le capteur de proximit\xE9 est joignable, sans d\xE9clencher d\x27erreur.',lib:'proximity.isOnline()',pro:'def isOnline()',cmt:'<p>V\xE9rifie si le module h\xE9bergeant le capteur de proximit\xE9 est joignable, sans d\xE9clencher d\x27erreur. Si les valeurs des attributs en cache du capteur de proximit\xE9 sont valides au moment de l\x27appel, le module est consid\xE9r\xE9 joignable. Cette fonction ne cause en aucun cas d\x27exception, quelle que soit l\x27erreur qui pourrait se produire lors de la v\xE9rification de joignabilit\xE9.</p>',ret:'<tt>true</tt> si le capteur de proximit\xE9 est joignable, <tt>false</tt> sinon'};
+doc['Proximity']['load']={syn:'Met en cache les valeurs courantes du capteur de proximit\xE9, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e.',lib:'proximity.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Met en cache les valeurs courantes du capteur de proximit\xE9, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e. Par d\xE9faut, lorsqu\x27on acc\xE8de \xE0 un module, tous les attributs des fonctions du module sont automatiquement mises en cache pour la dur\xE9e standard (5 ms). Cette m\xE9thode peut \xEAtre utilis\xE9e pour marquer occasionellement les donn\xE9es cach\xE9es comme valides pour une plus longue p\xE9riode, par exemple dans le but de r\xE9duire le trafic r\xE9seau.</p>',par:{msValidity:'un entier correspondant \xE0 la dur\xE9e de validit\xE9 attribu\xE9e aux les param\xE8tres charg\xE9s, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Proximity']['loadAttribute']={syn:'Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.',lib:'proximity.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un cha\xEEne vide.'};
+doc['Proximity']['loadCalibrationPoints']={syn:'R\xE9cup\xE8re les points de correction de mesure pr\xE9c\xE9demment enregistr\xE9s \xE0 l\x27aide de la m\xE9thode <tt>calibrateFromPoints</tt>.',lib:'proximity.loadCalibrationPoints()',pro:'def loadCalibrationPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>R\xE9cup\xE8re les points de correction de mesure pr\xE9c\xE9demment enregistr\xE9s \xE0 l\x27aide de la m\xE9thode <tt>calibrateFromPoints</tt>.</p>',par:{rawValues:'tableau de nombres flottants, qui sera rempli par la fonction avec les valeurs brutes des points de correction.',refValues:'tableau de nombres flottants, qui sera rempli par la fonction avec les valeurs d\xE9sir\xE9es des points de correction.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Proximity']['muteValueCallbacks']={syn:'D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'proximity.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Vous pouvez utiliser cette fonction pour \xE9conomiser la bande passante et le CPU sur les machines de faible puissance, ou pour \xE9viter le d\xE9clanchement de callbacks HTTP. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Proximity']['nextProximity']={syn:'Continue l\x27\xE9num\xE9ration des capteurs de proximit\xE9 commenc\xE9e \xE0 l\x27aide de <tt>yFirstProximity()</tt>.',lib:'proximity.nextProximity()',pro:'def nextProximity()',cmt:'<p>Continue l\x27\xE9num\xE9ration des capteurs de proximit\xE9 commenc\xE9e \xE0 l\x27aide de <tt>yFirstProximity()</tt>.</p>',ret:'un pointeur sur un objet <tt>YProximity</tt> accessible en ligne, ou <tt>null</tt> lorsque l\x27\xE9num\xE9ration est termin\xE9e.'};
+doc['Proximity']['registerTimedReportCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque notification p\xE9riodique.',lib:'proximity.registerTimedReportCallback()',pro:'def registerTimedReportCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque notification p\xE9riodique. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callbacks peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callbacks ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et un objet YMeasure d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['Proximity']['registerValueCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e.',lib:'proximity.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callback peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callback ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et la cha\xEEne de caract\xE8re d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['Proximity']['resetCounter']={syn:'R\xE9initialise le compteur d\x27impulsions et son timer.',lib:'proximity.resetCounter()',pro:'def resetCounter()',cmt:'<p>R\xE9initialise le compteur d\x27impulsions et son timer.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Proximity']['set_detectionThreshold']={syn:'Modifie le seuil utilis\xE9 pour d\xE9termin\xE9 l\x27\xE9tat logique de la d\xE9tection de proximit\xE9, lorsqu\x27on la traite comme une entr\xE9e binaire (on/off).',lib:'proximity.set_detectionThreshold()',pro:'def set_detectionThreshold(<span id=pn>newval</span>)',cmt:'<p>Modifie le seuil utilis\xE9 pour d\xE9termin\xE9 l\x27\xE9tat logique de la d\xE9tection de proximit\xE9, lorsqu\x27on la traite comme une entr\xE9e binaire (on/off).</p>',par:{newval:'un entier repr&eacute;sentant le seuil utilis\xE9 pour d\xE9termin\xE9 l\x27\xE9tat logique de la d\xE9tection de proximit\xE9, lorsqu\x27on la traite comme une entr\xE9e binaire (on/off)'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Proximity']['set_highestValue']={syn:'Modifie la m\xE9moire de valeur maximale observ\xE9e.',lib:'proximity.set_highestValue()',pro:'def set_highestValue(<span id=pn>newval</span>)',cmt:'<p>Modifie la m\xE9moire de valeur maximale observ\xE9e.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la m\xE9moire de valeur maximale observ\xE9e'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Proximity']['set_logFrequency']={syn:'Modifie la fr\xE9quence d\x27enregistrement des mesures dans le datalogger.',lib:'proximity.set_logFrequency()',pro:'def set_logFrequency(<span id=pn>newval</span>)',cmt:'<p>Modifie la fr\xE9quence d\x27enregistrement des mesures dans le datalogger. La fr\xE9quence peut \xEAtre sp\xE9cifi\xE9e en mesures par secondes, en mesures par minutes (par exemple \x2215/m\x22) ou en mesures par heure (par exemple \x224/h\x22). Pour d\xE9sactiver l\x27enregistrement des mesures de cette fonction, utilisez la valeur \x22OFF\x22.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence d\x27enregistrement des mesures dans le datalogger'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Proximity']['set_logicalName']={syn:'Modifie le nom logique du capteur de proximit\xE9.',lib:'proximity.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Modifie le nom logique du capteur de proximit\xE9. Vous pouvez utiliser <tt>yCheckLogicalName()</tt> pour v\xE9rifier si votre param\xE8tre est valide. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du capteur de proximit\xE9.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27appel se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['Proximity']['set_lowestValue']={syn:'Modifie la m\xE9moire de valeur minimale observ\xE9e.',lib:'proximity.set_lowestValue()',pro:'def set_lowestValue(<span id=pn>newval</span>)',cmt:'<p>Modifie la m\xE9moire de valeur minimale observ\xE9e.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la m\xE9moire de valeur minimale observ\xE9e'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Proximity']['set_reportFrequency']={syn:'Modifie la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es.',lib:'proximity.set_reportFrequency()',pro:'def set_reportFrequency(<span id=pn>newval</span>)',cmt:'<p>Modifie la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es. La fr\xE9quence peut \xEAtre sp\xE9cifi\xE9e en mesures par secondes, en mesures par minutes (par exemple \x2215/m\x22) ou en mesures par heure (par exemple \x224/h\x22). Pour d\xE9sactiver les notifications p\xE9riodiques pour cette fonction, utilisez la valeur \x22OFF\x22.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Proximity']['set_resolution']={syn:'Modifie la r\xE9solution des valeurs physique mesur\xE9es.',lib:'proximity.set_resolution()',pro:'def set_resolution(<span id=pn>newval</span>)',cmt:'<p>Modifie la r\xE9solution des valeurs physique mesur\xE9es. La r\xE9solution correspond \xE0 la pr\xE9cision de l\x27affichage des mesures. Elle ne change pas la pr\xE9cision de la mesure elle-m\xEAme.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la r\xE9solution des valeurs physique mesur\xE9es'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['Proximity']['set_userData']={syn:'Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>.',lib:'proximity.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',par:{data:'objet quelconque \xE0 m\xE9moriser'}};
+doc['Proximity']['startDataLogger']={syn:'D\xE9marre l\x27enregistreur de donn\xE9es du module.',lib:'proximity.startDataLogger()',pro:'def startDataLogger()',cmt:'<p>D\xE9marre l\x27enregistreur de donn\xE9es du module. Attention, l\x27enregistreur ne sauvera les mesures de ce capteur que si la fr\xE9quence d\x27enregistrement (logFrequency) n\x27est pas sur \x22OFF\x22.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.'};
+doc['Proximity']['stopDataLogger']={syn:'Arr\xEAte l\x27enregistreur de donn\xE9es du module.',lib:'proximity.stopDataLogger()',pro:'def stopDataLogger()',cmt:'<p>Arr\xEAte l\x27enregistreur de donn\xE9es du module.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.'};
+doc['Proximity']['unmuteValueCallbacks']={syn:'R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'proximity.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Cette fonction annule un pr\xE9c\xE9dent appel \xE0 <tt>muteValueCallbacks()</tt>. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+//--- (end of generated code: Proximity)
+//--- (generated code: MultiAxisController)
+doc['MultiAxisController']={'':{syn:'Interface de la fonction MultiAxisController',inc:'from yocto_multiaxiscontroller import *',cmt:'<p>La librairie de programmation Yoctopuce permet de piloter un moteur pas \xE0 pas.</p>'}};
+doc['MultiAxisController']['FindMultiAxisController']={syn:'Permet de retrouver un contr\xF4leur multi-axe d\x27apr\xE8s un identifiant donn\xE9.',lib:'YMultiAxisController.FindMultiAxisController()',pro:'def FindMultiAxisController(<span id=pn>func</span>)',cmt:'<p>Permet de retrouver un contr\xF4leur multi-axe d\x27apr\xE8s un identifiant donn\xE9. L\x27identifiant peut \xEAtre sp\xE9cifi\xE9 sous plusieurs formes:<br> <ul> <li>NomLogiqueFonction</li> <li>NoSerieModule.IdentifiantFonction</li> <li>NoSerieModule.NomLogiqueFonction</li> <li>NomLogiqueModule.IdentifiantMat\xE9riel</li> <li>NomLogiqueModule.NomLogiqueFonction</li> </ul></p><p> Cette fonction n\x27exige pas que le contr\xF4leur multi-axe soit en ligne au moment ou elle est appel\xE9e, l\x27objet retourn\xE9 sera n\xE9anmoins valide. Utiliser la m\xE9thode <tt>YMultiAxisController.isOnline()</tt> pour tester si le contr\xF4leur multi-axe est utilisable \xE0 un moment donn\xE9. En cas d\x27ambigu\xEFt\xE9 lorsqu\x27on fait une recherche par nom logique, aucune erreur ne sera notifi\xE9e: la premi\xE8re instance trouv\xE9e sera renvoy\xE9e. La recherche se fait d\x27abord par nom mat\xE9riel, puis par nom logique.</p>',par:{func:'une cha\xEEne de caract\xE8res qui r\xE9f\xE9rence le contr\xF4leur multi-axe sans ambigu\xEFt\xE9'},ret:'un objet de classe <tt>YMultiAxisController</tt> qui permet ensuite de contr\xF4ler le contr\xF4leur multi-axe.'};
+doc['MultiAxisController']['FirstMultiAxisController']={syn:'Commence l\x27\xE9num\xE9ration des contr\xF4leur multi-axe accessibles par la librairie.',lib:'YMultiAxisController.FirstMultiAxisController()',pro:'def FirstMultiAxisController()',cmt:'<p>Commence l\x27\xE9num\xE9ration des contr\xF4leur multi-axe accessibles par la librairie. Utiliser la fonction <tt>YMultiAxisController.nextMultiAxisController()</tt> pour it\xE9rer sur les autres contr\xF4leur multi-axe.</p>',ret:'un pointeur sur un objet <tt>YMultiAxisController</tt>, correspondant au premier contr\xF4leur multi-axe accessible en ligne, ou <tt>null</tt> si il n\x27y a pas de contr\xF4leur multi-axe disponibles.'};
+doc['MultiAxisController']['abortAndBrake']={syn:'Stoppe le moteur en douceur d\xE8s que possible, sans attendre la fin de la commande actuelle.',lib:'multiaxiscontroller.abortAndBrake()',pro:'def abortAndBrake()',cmt:'<p>Stoppe le moteur en douceur d\xE8s que possible, sans attendre la fin de la commande actuelle.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur. En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['MultiAxisController']['abortAndHiZ']={syn:'Rel\xE2che le contr\xF4le du moteur imm\xE9diatement, sans attendre la fin de la commande actuelle.',lib:'multiaxiscontroller.abortAndHiZ()',pro:'def abortAndHiZ()',cmt:'<p>Rel\xE2che le contr\xF4le du moteur imm\xE9diatement, sans attendre la fin de la commande actuelle.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur. En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['MultiAxisController']['clearCache']={syn:'Invalide le cache.',lib:'multiaxiscontroller.clearCache()',pro:'def clearCache()',cmt:'<p>Invalide le cache. Invalide le cache des valeurs courantes du contr\xF4leur multi-axe. Force le prochain appel \xE0 une m\xE9thode get_xxx() ou loadxxx() pour charger les les donn\xE9es depuis le module.</p>'};
+doc['MultiAxisController']['describe']={syn:'Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du contr\xF4leur multi-axe au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'multiaxiscontroller.describe()',pro:'def describe()',cmt:'<p>Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du contr\xF4leur multi-axe au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. Plus pr\xE9cis\xE9ment, <tt>TYPE</tt> correspond au type de fonction, <tt>NAME</tt> correspond au nom utils\xE9 lors du premier acc\xE8s a la fonction, <tt>SERIAL</tt> correspond au num\xE9ro de s\xE9rie du module si le module est connect\xE9, ou <tt>\x22unresolved\x22</tt> sinon, et <tt>FUNCTIONID</tt> correspond \xE0 l\x27identifiant mat\xE9riel de la fonction si le module est connect\xE9. Par exemple, La methode va retourner <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> si le module est d\xE9j\xE0 connect\xE9 ou <tt>Relay(BadCustomeName.relay1)=unresolved</tt> si le module n\x27est pas d\xE9j\xE0 connect\xE9. Cette methode ne declenche aucune transaction USB ou TCP et peut donc \xEAtre utilis\xE9 dans un debuggeur.</p>',ret:'une cha\xEEne de caract\xE8res d\xE9crivant le contr\xF4leur multi-axe (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['MultiAxisController']['emergencyStop']={syn:'Stoppe le moteur en urgence, sans autre pr\xE9caution.',lib:'multiaxiscontroller.emergencyStop()',pro:'def emergencyStop()',cmt:'<p>Stoppe le moteur en urgence, sans autre pr\xE9caution.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur. En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['MultiAxisController']['findHomePosition']={syn:'Lance tous les moteur en arri\xE8re aux vitesses sp\xE9cifi\xE9es, pour chercher les origines des axes.',lib:'multiaxiscontroller.findHomePosition()',pro:'def findHomePosition(<span id=pn>speed</span>)',cmt:'<p>Lance tous les moteur en arri\xE8re aux vitesses sp\xE9cifi\xE9es, pour chercher les origines des axes.</p>',par:{speed:'vitesse d\xE9sir\xE9e pour chaque axe, en pas par seconde.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur. En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['MultiAxisController']['get_advertisedValue']={syn:'Retourne la valeur courante du contr\xF4leur multi-axe (pas plus de 6 caract\xE8res).',lib:'multiaxiscontroller.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Retourne la valeur courante du contr\xF4leur multi-axe (pas plus de 6 caract\xE8res).</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur courante du contr\xF4leur multi-axe (pas plus de 6 caract\xE8res).',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['MultiAxisController']['get_errorMessage']={syn:'Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du contr\xF4leur multi-axe.',lib:'multiaxiscontroller.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du contr\xF4leur multi-axe. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'une cha\xEEne de caract\xE8res correspondant au message de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du contr\xF4leur multi-axe.'};
+doc['MultiAxisController']['get_errorType']={syn:'Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du contr\xF4leur multi-axe.',lib:'multiaxiscontroller.get_errorType()',pro:'def get_errorType()',cmt:'<p>Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du contr\xF4leur multi-axe. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'un nombre correspondant au code de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du contr\xF4leur multi-axe.'};
+doc['MultiAxisController']['get_friendlyName']={syn:'Retourne un identifiant global du contr\xF4leur multi-axe au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>.',lib:'multiaxiscontroller.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Retourne un identifiant global du contr\xF4leur multi-axe au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>. Le cha\xEEne retourn\xE9e utilise soit les noms logiques du module et du contr\xF4leur multi-axe si ils sont d\xE9finis, soit respectivement le num\xE9ro de s\xE9rie du module et l\x27identifant mat\xE9riel du contr\xF4leur multi-axe (par exemple: <tt>MyCustomName.relay1</tt>)</p>',ret:'une cha\xEEne de caract\xE8res identifiant le contr\xF4leur multi-axe en utilisant les noms logiques (ex: <tt>MyCustomName.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['MultiAxisController']['get_functionDescriptor']={syn:'Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction.',lib:'multiaxiscontroller.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction. Cet identifiant peut \xEAtre utilis\xE9 pour tester si deux instance de <tt>YFunction</tt> r\xE9f\xE9rencent physiquement la m\xEAme fonction sur le m\xEAme module.</p>',ret:'un identifiant de type <tt>YFUN_DESCR</tt>.',ext:'Si la fonction n\x27a jamais \xE9t\xE9 contact\xE9e, la valeur retourn\xE9e sera <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>'};
+doc['MultiAxisController']['get_functionId']={syn:'Retourne l\x27identifiant mat\xE9riel du contr\xF4leur multi-axe, sans r\xE9f\xE9rence au module.',lib:'multiaxiscontroller.get_functionId()',pro:'def get_functionId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel du contr\xF4leur multi-axe, sans r\xE9f\xE9rence au module. Par example <tt>relay1</tt>.</p>',ret:'une cha\xEEne de caract\xE8res identifiant le contr\xF4leur multi-axe (ex: <tt>relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['MultiAxisController']['get_globalState']={syn:'Retourne l\x27\xE9tat de fonctionnement global de l\x27ensemble des moteurs.',lib:'multiaxiscontroller.get_globalState()',pro:'def get_globalState()',cmt:'<p>Retourne l\x27\xE9tat de fonctionnement global de l\x27ensemble des moteurs.</p>',ret:'une valeur parmi <tt>Y_GLOBALSTATE_ABSENT</tt>, <tt>Y_GLOBALSTATE_ALERT</tt>, <tt>Y_GLOBALSTATE_HI_Z</tt>, <tt>Y_GLOBALSTATE_STOP</tt>, <tt>Y_GLOBALSTATE_RUN</tt> et <tt>Y_GLOBALSTATE_BATCH</tt> repr&eacute;sentant l\x27\xE9tat de fonctionnement global de l\x27ensemble des moteurs',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_GLOBALSTATE_INVALID</tt>.'};
+doc['MultiAxisController']['get_hardwareId']={syn:'Retourne l\x27identifiant mat\xE9riel unique du contr\xF4leur multi-axe au format <tt>SERIAL.FUNCTIONID</tt>.',lib:'multiaxiscontroller.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel unique du contr\xF4leur multi-axe au format <tt>SERIAL.FUNCTIONID</tt>. L\x27identifiant unique est compos\xE9 du num\xE9ro de s\xE9rie du module et de l\x27identifiant mat\xE9riel du contr\xF4leur multi-axe (par example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'une cha\xEEne de caract\xE8res identifiant le contr\xF4leur multi-axe (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['MultiAxisController']['get_logicalName']={syn:'Retourne le nom logique du contr\xF4leur multi-axe.',lib:'multiaxiscontroller.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Retourne le nom logique du contr\xF4leur multi-axe.</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du contr\xF4leur multi-axe.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['MultiAxisController']['get_module']={syn:'Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction.',lib:'multiaxiscontroller.get_module()',pro:'def get_module()',cmt:'<p>Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction. Si la fonction ne peut \xEAtre trouv\xE9e sur aucun module, l\x27instance de <tt>YModule</tt> retourn\xE9e ne sera pas joignable.</p>',ret:'une instance de <tt>YModule</tt>'};
+doc['MultiAxisController']['get_nAxis']={syn:'Retourne le nombre de contr\xF4leurs \xE0 synchroniser.',lib:'multiaxiscontroller.get_nAxis()',pro:'def get_nAxis()',cmt:'<p>Retourne le nombre de contr\xF4leurs \xE0 synchroniser.</p>',ret:'un entier repr&eacute;sentant le nombre de contr\xF4leurs \xE0 synchroniser',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_NAXIS_INVALID</tt>.'};
+doc['MultiAxisController']['get_userData']={syn:'Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>.',lib:'multiaxiscontroller.get_userData()',pro:'def get_userData()',cmt:'<p>Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',ret:'l\x27objet stock\xE9 pr\xE9c\xE9demment par l\x27appelant.'};
+doc['MultiAxisController']['isOnline']={syn:'V\xE9rifie si le module h\xE9bergeant le contr\xF4leur multi-axe est joignable, sans d\xE9clencher d\x27erreur.',lib:'multiaxiscontroller.isOnline()',pro:'def isOnline()',cmt:'<p>V\xE9rifie si le module h\xE9bergeant le contr\xF4leur multi-axe est joignable, sans d\xE9clencher d\x27erreur. Si les valeurs des attributs en cache du contr\xF4leur multi-axe sont valides au moment de l\x27appel, le module est consid\xE9r\xE9 joignable. Cette fonction ne cause en aucun cas d\x27exception, quelle que soit l\x27erreur qui pourrait se produire lors de la v\xE9rification de joignabilit\xE9.</p>',ret:'<tt>true</tt> si le contr\xF4leur multi-axe est joignable, <tt>false</tt> sinon'};
+doc['MultiAxisController']['load']={syn:'Met en cache les valeurs courantes du contr\xF4leur multi-axe, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e.',lib:'multiaxiscontroller.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Met en cache les valeurs courantes du contr\xF4leur multi-axe, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e. Par d\xE9faut, lorsqu\x27on acc\xE8de \xE0 un module, tous les attributs des fonctions du module sont automatiquement mises en cache pour la dur\xE9e standard (5 ms). Cette m\xE9thode peut \xEAtre utilis\xE9e pour marquer occasionellement les donn\xE9es cach\xE9es comme valides pour une plus longue p\xE9riode, par exemple dans le but de r\xE9duire le trafic r\xE9seau.</p>',par:{msValidity:'un entier correspondant \xE0 la dur\xE9e de validit\xE9 attribu\xE9e aux les param\xE8tres charg\xE9s, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['MultiAxisController']['loadAttribute']={syn:'Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.',lib:'multiaxiscontroller.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un cha\xEEne vide.'};
+doc['MultiAxisController']['moveRel']={syn:'Contr\xF4le les moteurs de mani\xE8re synchrone pour atteindre une position relative donn\xE9e.',lib:'multiaxiscontroller.moveRel()',pro:'def moveRel(<span id=pn>relPos</span>)',cmt:'<p>Contr\xF4le les moteurs de mani\xE8re synchrone pour atteindre une position relative donn\xE9e. Le temps n\xE9cessaire pour atteindre la position d\xE9pend des param\xE8tres d\x27acc\xE9l\xE9ration et de vitesse maximale les plus faibles pour l\x27ensemble des moteurs. La position finale est atteinte pour tous les axes au m\xEAme moment.</p>',par:{relPos:'position relative d\xE9sir\xE9e, en pas depuis la position actuelle.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur. En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['MultiAxisController']['moveTo']={syn:'Contr\xF4le les moteurs de mani\xE8re synchrone pour atteindre une position absolue donn\xE9e.',lib:'multiaxiscontroller.moveTo()',pro:'def moveTo(<span id=pn>absPos</span>)',cmt:'<p>Contr\xF4le les moteurs de mani\xE8re synchrone pour atteindre une position absolue donn\xE9e. Le temps n\xE9cessaire pour atteindre la position d\xE9pend des param\xE8tres d\x27acc\xE9l\xE9ration et de vitesse maximale les plus faibles pour l\x27ensemble des moteurs. La position finale est atteinte pour tous les axes au m\xEAme moment.</p>',par:{absPos:'position absolue d\xE9sir\xE9e, en pas depuis chaque origine.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur. En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['MultiAxisController']['muteValueCallbacks']={syn:'D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'multiaxiscontroller.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Vous pouvez utiliser cette fonction pour \xE9conomiser la bande passante et le CPU sur les machines de faible puissance, ou pour \xE9viter le d\xE9clanchement de callbacks HTTP. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['MultiAxisController']['nextMultiAxisController']={syn:'Continue l\x27\xE9num\xE9ration des contr\xF4leur multi-axe commenc\xE9e \xE0 l\x27aide de <tt>yFirstMultiAxisController()</tt>.',lib:'multiaxiscontroller.nextMultiAxisController()',pro:'def nextMultiAxisController()',cmt:'<p>Continue l\x27\xE9num\xE9ration des contr\xF4leur multi-axe commenc\xE9e \xE0 l\x27aide de <tt>yFirstMultiAxisController()</tt>.</p>',ret:'un pointeur sur un objet <tt>YMultiAxisController</tt> accessible en ligne, ou <tt>null</tt> lorsque l\x27\xE9num\xE9ration est termin\xE9e.'};
+doc['MultiAxisController']['pause']={syn:'Garde le moteur dans le m\xEAme \xE9tat pour la dur\xE9e sp\xE9cifi\xE9e, avant d\x27ex\xE9cuter la commande suivante.',lib:'multiaxiscontroller.pause()',pro:'def pause(<span id=pn>waitMs</span>)',cmt:'<p>Garde le moteur dans le m\xEAme \xE9tat pour la dur\xE9e sp\xE9cifi\xE9e, avant d\x27ex\xE9cuter la commande suivante.</p>',par:{waitMs:'temps d\x27attente, en milliseconde.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur. En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['MultiAxisController']['registerValueCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e.',lib:'multiaxiscontroller.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callback peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callback ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et la cha\xEEne de caract\xE8re d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['MultiAxisController']['reset']={syn:'R\xE9initialise tous les controlleurs et quittance toutes les alertes.',lib:'multiaxiscontroller.reset()',pro:'def reset()',cmt:'<p>R\xE9initialise tous les controlleurs et quittance toutes les alertes.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur. En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['MultiAxisController']['set_logicalName']={syn:'Modifie le nom logique du contr\xF4leur multi-axe.',lib:'multiaxiscontroller.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Modifie le nom logique du contr\xF4leur multi-axe. Vous pouvez utiliser <tt>yCheckLogicalName()</tt> pour v\xE9rifier si votre param\xE8tre est valide. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du contr\xF4leur multi-axe.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27appel se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['MultiAxisController']['set_nAxis']={syn:'Modifie le nombre de contr\xF4leurs \xE0 synchroniser.',lib:'multiaxiscontroller.set_nAxis()',pro:'def set_nAxis(<span id=pn>newval</span>)',cmt:'<p>Modifie le nombre de contr\xF4leurs \xE0 synchroniser.</p>',par:{newval:'un entier repr&eacute;sentant le nombre de contr\xF4leurs \xE0 synchroniser'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['MultiAxisController']['set_userData']={syn:'Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>.',lib:'multiaxiscontroller.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',par:{data:'objet quelconque \xE0 m\xE9moriser'}};
+doc['MultiAxisController']['unmuteValueCallbacks']={syn:'R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'multiaxiscontroller.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Cette fonction annule un pr\xE9c\xE9dent appel \xE0 <tt>muteValueCallbacks()</tt>. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+//--- (end of generated code: MultiAxisController)
+//--- (generated code: RangeFinder)
+doc['RangeFinder']={'':{syn:'Interface de la fonction RangeFinder',inc:'from yocto_rangefinder import *',cmt:'<p>La classe YRangeFinder permet d\x27utiliser et de configurer les capteurs de distance Yoctopuce. Elle h\xE9rite de la class YSensor toutes les fonctions de base des capteurs Yoctopuce: lecture de mesures, callbacks, enregistreur de donn\xE9es. De plus, elle permet d\x27effectuer facilement une calibration lin\xE9aire \xE0 un point pour compenser l\x27effet d\x27une vitre ou d\x27un filtre plac\xE9 devant le capteur.</p>'}};
+doc['RangeFinder']['FindRangeFinder']={syn:'Permet de retrouver un capteur de distance d\x27apr\xE8s un identifiant donn\xE9.',lib:'YRangeFinder.FindRangeFinder()',pro:'def FindRangeFinder(<span id=pn>func</span>)',cmt:'<p>Permet de retrouver un capteur de distance d\x27apr\xE8s un identifiant donn\xE9. L\x27identifiant peut \xEAtre sp\xE9cifi\xE9 sous plusieurs formes:<br> <ul> <li>NomLogiqueFonction</li> <li>NoSerieModule.IdentifiantFonction</li> <li>NoSerieModule.NomLogiqueFonction</li> <li>NomLogiqueModule.IdentifiantMat\xE9riel</li> <li>NomLogiqueModule.NomLogiqueFonction</li> </ul></p><p> Cette fonction n\x27exige pas que le capteur de distance soit en ligne au moment ou elle est appel\xE9e, l\x27objet retourn\xE9 sera n\xE9anmoins valide. Utiliser la m\xE9thode <tt>YRangeFinder.isOnline()</tt> pour tester si le capteur de distance est utilisable \xE0 un moment donn\xE9. En cas d\x27ambigu\xEFt\xE9 lorsqu\x27on fait une recherche par nom logique, aucune erreur ne sera notifi\xE9e: la premi\xE8re instance trouv\xE9e sera renvoy\xE9e. La recherche se fait d\x27abord par nom mat\xE9riel, puis par nom logique.</p>',par:{func:'une cha\xEEne de caract\xE8res qui r\xE9f\xE9rence le capteur de distance sans ambigu\xEFt\xE9'},ret:'un objet de classe <tt>YRangeFinder</tt> qui permet ensuite de contr\xF4ler le capteur de distance.'};
+doc['RangeFinder']['FirstRangeFinder']={syn:'Commence l\x27\xE9num\xE9ration des capteurs de distance accessibles par la librairie.',lib:'YRangeFinder.FirstRangeFinder()',pro:'def FirstRangeFinder()',cmt:'<p>Commence l\x27\xE9num\xE9ration des capteurs de distance accessibles par la librairie. Utiliser la fonction <tt>YRangeFinder.nextRangeFinder()</tt> pour it\xE9rer sur les autres capteurs de distance.</p>',ret:'un pointeur sur un objet <tt>YRangeFinder</tt>, correspondant au premier capteur de distance accessible en ligne, ou <tt>null</tt> si il n\x27y a pas de capteurs de distance disponibles.'};
+doc['RangeFinder']['calibrateFromPoints']={syn:'Enregistre des points de correction de mesure, typiquement pour compenser l\x27effet d\x27un bo\xEEtier sur les mesures rendues par le capteur.',lib:'rangefinder.calibrateFromPoints()',pro:'def calibrateFromPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>Enregistre des points de correction de mesure, typiquement pour compenser l\x27effet d\x27un bo\xEEtier sur les mesures rendues par le capteur. Il est possible d\x27enregistrer jusqu\x27\xE0 cinq points de correction. Les points de correction doivent \xEAtre fournis en ordre croissant, et dans la plage valide du capteur. Le module effectue automatiquement une interpolation lin\xE9aire de l\x27erreur entre les points sp\xE9cifi\xE9s. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p><p> Pour plus de plus amples possibilit\xE9s d\x27appliquer une surcalibration aux capteurs, veuillez contacter support@yoctopuce.com.</p>',par:{rawValues:'tableau de nombres flottants, correspondant aux valeurs brutes rendues par le capteur pour les points de correction.',refValues:'tableau de nombres flottants, correspondant aux valeurs corrig\xE9es d\xE9sir\xE9es pour les points de correction.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['RangeFinder']['clearCache']={syn:'Invalide le cache.',lib:'rangefinder.clearCache()',pro:'def clearCache()',cmt:'<p>Invalide le cache. Invalide le cache des valeurs courantes du capteur de distance. Force le prochain appel \xE0 une m\xE9thode get_xxx() ou loadxxx() pour charger les les donn\xE9es depuis le module.</p>'};
+doc['RangeFinder']['describe']={syn:'Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du capteur de distance au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>.',lib:'rangefinder.describe()',pro:'def describe()',cmt:'<p>Retourne un court texte d\xE9crivant de mani\xE8re non-ambig\xFCe l\x27instance du capteur de distance au format <tt>TYPE(NAME)=SERIAL&#46;FUNCTIONID</tt>. Plus pr\xE9cis\xE9ment, <tt>TYPE</tt> correspond au type de fonction, <tt>NAME</tt> correspond au nom utils\xE9 lors du premier acc\xE8s a la fonction, <tt>SERIAL</tt> correspond au num\xE9ro de s\xE9rie du module si le module est connect\xE9, ou <tt>\x22unresolved\x22</tt> sinon, et <tt>FUNCTIONID</tt> correspond \xE0 l\x27identifiant mat\xE9riel de la fonction si le module est connect\xE9. Par exemple, La methode va retourner <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt> si le module est d\xE9j\xE0 connect\xE9 ou <tt>Relay(BadCustomeName.relay1)=unresolved</tt> si le module n\x27est pas d\xE9j\xE0 connect\xE9. Cette methode ne declenche aucune transaction USB ou TCP et peut donc \xEAtre utilis\xE9 dans un debuggeur.</p>',ret:'une cha\xEEne de caract\xE8res d\xE9crivant le capteur de distance (ex: <tt>Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1</tt>)'};
+doc['RangeFinder']['get_advertisedValue']={syn:'Retourne la valeur courante du capteur de distance (pas plus de 6 caract\xE8res).',lib:'rangefinder.get_advertisedValue()',pro:'def get_advertisedValue()',cmt:'<p>Retourne la valeur courante du capteur de distance (pas plus de 6 caract\xE8res).</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur courante du capteur de distance (pas plus de 6 caract\xE8res).',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_ADVERTISEDVALUE_INVALID</tt>.'};
+doc['RangeFinder']['get_currentRawValue']={syn:'Retourne la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en mm, sous forme de nombre \xE0 virgule.',lib:'rangefinder.get_currentRawValue()',pro:'def get_currentRawValue()',cmt:'<p>Retourne la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en mm, sous forme de nombre \xE0 virgule.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur brute retourn\xE9e par le capteur (sans arrondi ni calibration), en mm, sous forme de nombre \xE0 virgule',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_CURRENTRAWVALUE_INVALID</tt>.'};
+doc['RangeFinder']['get_currentValue']={syn:'Retourne la valeur actuelle de la distance, en mm, sous forme de nombre \xE0 virgule.',lib:'rangefinder.get_currentValue()',pro:'def get_currentValue()',cmt:'<p>Retourne la valeur actuelle de la distance, en mm, sous forme de nombre \xE0 virgule.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur actuelle de la distance, en mm, sous forme de nombre \xE0 virgule',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_CURRENTVALUE_INVALID</tt>.'};
+doc['RangeFinder']['get_errorMessage']={syn:'Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du capteur de distance.',lib:'rangefinder.get_errorMessage()',pro:'def get_errorMessage()',cmt:'<p>Retourne le message correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du capteur de distance. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'une cha\xEEne de caract\xE8res correspondant au message de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du capteur de distance.'};
+doc['RangeFinder']['get_errorType']={syn:'Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du capteur de distance.',lib:'rangefinder.get_errorType()',pro:'def get_errorType()',cmt:'<p>Retourne le code d\x27erreur correspondant \xE0 la derni\xE8re erreur survenue lors de l\x27utilisation du capteur de distance. Cette m\xE9thode est principalement utile lorsque la librairie Yoctopuce est utilis\xE9e en d\xE9sactivant la gestion des exceptions.</p>',ret:'un nombre correspondant au code de la derni\xE8re erreur qui s\x27est produit lors de l\x27utilisation du capteur de distance.'};
+doc['RangeFinder']['get_friendlyName']={syn:'Retourne un identifiant global du capteur de distance au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>.',lib:'rangefinder.get_friendlyName()',pro:'def get_friendlyName()',cmt:'<p>Retourne un identifiant global du capteur de distance au format <tt>NOM_MODULE&#46;NOM_FONCTION</tt>. Le cha\xEEne retourn\xE9e utilise soit les noms logiques du module et du capteur de distance si ils sont d\xE9finis, soit respectivement le num\xE9ro de s\xE9rie du module et l\x27identifant mat\xE9riel du capteur de distance (par exemple: <tt>MyCustomName.relay1</tt>)</p>',ret:'une cha\xEEne de caract\xE8res identifiant le capteur de distance en utilisant les noms logiques (ex: <tt>MyCustomName.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FRIENDLYNAME_INVALID</tt>.'};
+doc['RangeFinder']['get_functionDescriptor']={syn:'Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction.',lib:'rangefinder.get_functionDescriptor()',pro:'def get_functionDescriptor()',cmt:'<p>Retourne un identifiant unique de type <tt>YFUN_DESCR</tt> correspondant \xE0 la fonction. Cet identifiant peut \xEAtre utilis\xE9 pour tester si deux instance de <tt>YFunction</tt> r\xE9f\xE9rencent physiquement la m\xEAme fonction sur le m\xEAme module.</p>',ret:'un identifiant de type <tt>YFUN_DESCR</tt>.',ext:'Si la fonction n\x27a jamais \xE9t\xE9 contact\xE9e, la valeur retourn\xE9e sera <tt>Y_FUNCTIONDESCRIPTOR_INVALID</tt>'};
+doc['RangeFinder']['get_functionId']={syn:'Retourne l\x27identifiant mat\xE9riel du capteur de distance, sans r\xE9f\xE9rence au module.',lib:'rangefinder.get_functionId()',pro:'def get_functionId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel du capteur de distance, sans r\xE9f\xE9rence au module. Par example <tt>relay1</tt>.</p>',ret:'une cha\xEEne de caract\xE8res identifiant le capteur de distance (ex: <tt>relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_FUNCTIONID_INVALID</tt>.'};
+doc['RangeFinder']['get_hardwareId']={syn:'Retourne l\x27identifiant mat\xE9riel unique du capteur de distance au format <tt>SERIAL.FUNCTIONID</tt>.',lib:'rangefinder.get_hardwareId()',pro:'def get_hardwareId()',cmt:'<p>Retourne l\x27identifiant mat\xE9riel unique du capteur de distance au format <tt>SERIAL.FUNCTIONID</tt>. L\x27identifiant unique est compos\xE9 du num\xE9ro de s\xE9rie du module et de l\x27identifiant mat\xE9riel du capteur de distance (par example <tt>RELAYLO1-123456.relay1</tt>).</p>',ret:'une cha\xEEne de caract\xE8res identifiant le capteur de distance (ex: <tt>RELAYLO1-123456.relay1</tt>)',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_HARDWAREID_INVALID</tt>.'};
+doc['RangeFinder']['get_highestValue']={syn:'Retourne la valeur maximale observ\xE9e pour la distance depuis le d\xE9marrage du module.',lib:'rangefinder.get_highestValue()',pro:'def get_highestValue()',cmt:'<p>Retourne la valeur maximale observ\xE9e pour la distance depuis le d\xE9marrage du module.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur maximale observ\xE9e pour la distance depuis le d\xE9marrage du module',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_HIGHESTVALUE_INVALID</tt>.'};
+doc['RangeFinder']['get_logFrequency']={syn:'Retourne la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es.',lib:'rangefinder.get_logFrequency()',pro:'def get_logFrequency()',cmt:'<p>Retourne la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence d\x27enregistrement des mesures dans le datalogger, ou \x22OFF\x22 si les mesures ne sont pas stock\xE9es dans la m\xE9moire de l\x27enregistreur de donn\xE9es',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_LOGFREQUENCY_INVALID</tt>.'};
+doc['RangeFinder']['get_logicalName']={syn:'Retourne le nom logique du capteur de distance.',lib:'rangefinder.get_logicalName()',pro:'def get_logicalName()',cmt:'<p>Retourne le nom logique du capteur de distance.</p>',ret:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du capteur de distance.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne <tt>Y_LOGICALNAME_INVALID</tt>.'};
+doc['RangeFinder']['get_lowestValue']={syn:'Retourne la valeur minimale observ\xE9e pour la distance depuis le d\xE9marrage du module.',lib:'rangefinder.get_lowestValue()',pro:'def get_lowestValue()',cmt:'<p>Retourne la valeur minimale observ\xE9e pour la distance depuis le d\xE9marrage du module.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la valeur minimale observ\xE9e pour la distance depuis le d\xE9marrage du module',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_LOWESTVALUE_INVALID</tt>.'};
+doc['RangeFinder']['get_module']={syn:'Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction.',lib:'rangefinder.get_module()',pro:'def get_module()',cmt:'<p>Retourne l\x27objet <tt>YModule</tt> correspondant au module Yoctopuce qui h\xE9berge la fonction. Si la fonction ne peut \xEAtre trouv\xE9e sur aucun module, l\x27instance de <tt>YModule</tt> retourn\xE9e ne sera pas joignable.</p>',ret:'une instance de <tt>YModule</tt>'};
+doc['RangeFinder']['get_rangeFinderMode']={syn:'Retourne le mode de fonctionnement du capteur de distance.',lib:'rangefinder.get_rangeFinderMode()',pro:'def get_rangeFinderMode()',cmt:'<p>Retourne le mode de fonctionnement du capteur de distance. Le choix du mode permet de favoriser la pr\xE9cision, la vitesse, ou la distance maximale d\xE9tectable.</p>',ret:'une valeur parmi <tt>Y_RANGEFINDERMODE_DEFAULT</tt>, <tt>Y_RANGEFINDERMODE_LONG_RANGE</tt>, <tt>Y_RANGEFINDERMODE_HIGH_ACCURACY</tt> et <tt>Y_RANGEFINDERMODE_HIGH_SPEED</tt> repr&eacute;sentant le mode de fonctionnement du capteur de distance',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_RANGEFINDERMODE_INVALID</tt>.'};
+doc['RangeFinder']['get_recordedData']={syn:'Retourne un objet DataSet repr\xE9sentant des mesures de ce capteur pr\xE9c\xE9demment enregistr\xE9es \xE0 l\x27aide du DataLogger, pour l\x27intervalle de temps sp\xE9cifi\xE9.',lib:'rangefinder.get_recordedData()',pro:'def get_recordedData(<span id=pn>startTime</span>, <span id=pn>endTime</span>)',cmt:'<p>Retourne un objet DataSet repr\xE9sentant des mesures de ce capteur pr\xE9c\xE9demment enregistr\xE9es \xE0 l\x27aide du DataLogger, pour l\x27intervalle de temps sp\xE9cifi\xE9. Veuillez vous r\xE9f\xE9rer \xE0 la documentation de la classe DataSet pour plus plus d\x27informations sur la mani\xE8re d\x27obtenir un aper\xE7u des mesures pour la p\xE9riode, et comment charger progressivement une grande quantit\xE9 de mesures depuis le dataLogger.</p><p> Cette m\xE9thode ne fonctionne que si le module utilise un firmware r\xE9cent, car les objets DataSet ne sont pas support\xE9s par les firmwares ant\xE9rieurs \xE0 la r\xE9vision 13000.</p>',par:{startTime:'le d\xE9but de l\x27intervalle de mesure d\xE9sir\xE9, c\x27est \xE0 dire en nombre de secondes depuis le 1er janvier 1970 UTC. La valeur 0 peut \xEAtre utilis\xE9e pour ne poser aucune limite sur le d\xE9but des mesures.',endTime:'la find de l\x27intercalle de mesure d\xE9sir\xE9, c\x27est \xE0 dire en nombre de secondes depuis le 1er janvier 1970 UTC. La valeur 0 peut \xEAtre utilis\xE9e pour ne poser aucune limite de fin.'},ret:'une instance de YDataSet, dont les m\xE9thodes permettent de d\x27acc\xE9der aux donn\xE9es historiques souhait\xE9es.'};
+doc['RangeFinder']['get_reportFrequency']={syn:'Retourne la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction.',lib:'rangefinder.get_reportFrequency()',pro:'def get_reportFrequency()',cmt:'<p>Retourne la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es, ou \x22OFF\x22 si les notifications p\xE9riodiques sont d\xE9sactiv\xE9es pour cette fonction',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_REPORTFREQUENCY_INVALID</tt>.'};
+doc['RangeFinder']['get_resolution']={syn:'Retourne la r\xE9solution des valeurs mesur\xE9es.',lib:'rangefinder.get_resolution()',pro:'def get_resolution()',cmt:'<p>Retourne la r\xE9solution des valeurs mesur\xE9es. La r\xE9solution correspond \xE0 la pr\xE9cision num\xE9rique de la repr\xE9sentation des mesures. Elle n\x27est pas forc\xE9ment identique \xE0 la pr\xE9cision r\xE9elle du capteur.</p>',ret:'une valeur num&eacute;rique repr&eacute;sentant la r\xE9solution des valeurs mesur\xE9es',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_RESOLUTION_INVALID</tt>.'};
+doc['RangeFinder']['get_sensorState']={syn:'Retourne le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment.',lib:'rangefinder.get_sensorState()',pro:'def get_sensorState()',cmt:'<p>Retourne le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment.</p>',ret:'un entier repr&eacute;sentant le code d\x27\xE9tat du capteur, qui vaut z\xE9ro lorsqu\x27une mesure actuelle est disponible, ou un code positif si le capteur n\x27est pas en mesure de fournir une valeur en ce moment',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_SENSORSTATE_INVALID</tt>.'};
+doc['RangeFinder']['get_unit']={syn:'Retourne l\x27unit\xE9 dans laquelle la distance est exprim\xE9e.',lib:'rangefinder.get_unit()',pro:'def get_unit()',cmt:'<p>Retourne l\x27unit\xE9 dans laquelle la distance est exprim\xE9e.</p>',ret:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant l\x27unit\xE9 dans laquelle la distance est exprim\xE9e',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne <tt>Y_UNIT_INVALID</tt>.'};
+doc['RangeFinder']['get_userData']={syn:'Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>.',lib:'rangefinder.get_userData()',pro:'def get_userData()',cmt:'<p>Retourne le contenu de l\x27attribut userData, pr\xE9c\xE9demment stock\xE9 \xE0 l\x27aide de la m\xE9thode <tt>set_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',ret:'l\x27objet stock\xE9 pr\xE9c\xE9demment par l\x27appelant.'};
+doc['RangeFinder']['isOnline']={syn:'V\xE9rifie si le module h\xE9bergeant le capteur de distance est joignable, sans d\xE9clencher d\x27erreur.',lib:'rangefinder.isOnline()',pro:'def isOnline()',cmt:'<p>V\xE9rifie si le module h\xE9bergeant le capteur de distance est joignable, sans d\xE9clencher d\x27erreur. Si les valeurs des attributs en cache du capteur de distance sont valides au moment de l\x27appel, le module est consid\xE9r\xE9 joignable. Cette fonction ne cause en aucun cas d\x27exception, quelle que soit l\x27erreur qui pourrait se produire lors de la v\xE9rification de joignabilit\xE9.</p>',ret:'<tt>true</tt> si le capteur de distance est joignable, <tt>false</tt> sinon'};
+doc['RangeFinder']['load']={syn:'Met en cache les valeurs courantes du capteur de distance, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e.',lib:'rangefinder.load()',pro:'def load(<span id=pn>msValidity</span>)',cmt:'<p>Met en cache les valeurs courantes du capteur de distance, avec une dur\xE9e de validit\xE9 sp\xE9cifi\xE9e. Par d\xE9faut, lorsqu\x27on acc\xE8de \xE0 un module, tous les attributs des fonctions du module sont automatiquement mises en cache pour la dur\xE9e standard (5 ms). Cette m\xE9thode peut \xEAtre utilis\xE9e pour marquer occasionellement les donn\xE9es cach\xE9es comme valides pour une plus longue p\xE9riode, par exemple dans le but de r\xE9duire le trafic r\xE9seau.</p>',par:{msValidity:'un entier correspondant \xE0 la dur\xE9e de validit\xE9 attribu\xE9e aux les param\xE8tres charg\xE9s, en millisecondes'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['RangeFinder']['loadAttribute']={syn:'Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.',lib:'rangefinder.loadAttribute()',pro:'def loadAttribute(<span id=pn>attrName</span>)',cmt:'<p>Retourne la valeur actuelle d\x27un attribut sp\xE9cifique de la fonction, sous forme de texte, le plus rapidement possible mais sans passer par le cache.</p>',par:{attrName:'le nom de l\x27attribut d\xE9sir\xE9'},ret:'une cha\xEEne de caract\xE8res repr\xE9sentant la valeur actuelle de l\x27attribut.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un cha\xEEne vide.'};
+doc['RangeFinder']['loadCalibrationPoints']={syn:'R\xE9cup\xE8re les points de correction de mesure pr\xE9c\xE9demment enregistr\xE9s \xE0 l\x27aide de la m\xE9thode <tt>calibrateFromPoints</tt>.',lib:'rangefinder.loadCalibrationPoints()',pro:'def loadCalibrationPoints(<span id=pn>rawValues</span>, <span id=pn>refValues</span>)',cmt:'<p>R\xE9cup\xE8re les points de correction de mesure pr\xE9c\xE9demment enregistr\xE9s \xE0 l\x27aide de la m\xE9thode <tt>calibrateFromPoints</tt>.</p>',par:{rawValues:'tableau de nombres flottants, qui sera rempli par la fonction avec les valeurs brutes des points de correction.',refValues:'tableau de nombres flottants, qui sera rempli par la fonction avec les valeurs d\xE9sir\xE9es des points de correction.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['RangeFinder']['muteValueCallbacks']={syn:'D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'rangefinder.muteValueCallbacks()',pro:'def muteValueCallbacks()',cmt:'<p>D\xE9sactive l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Vous pouvez utiliser cette fonction pour \xE9conomiser la bande passante et le CPU sur les machines de faible puissance, ou pour \xE9viter le d\xE9clanchement de callbacks HTTP. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['RangeFinder']['nextRangeFinder']={syn:'Continue l\x27\xE9num\xE9ration des capteurs de distance commenc\xE9e \xE0 l\x27aide de <tt>yFirstRangeFinder()</tt>.',lib:'rangefinder.nextRangeFinder()',pro:'def nextRangeFinder()',cmt:'<p>Continue l\x27\xE9num\xE9ration des capteurs de distance commenc\xE9e \xE0 l\x27aide de <tt>yFirstRangeFinder()</tt>.</p>',ret:'un pointeur sur un objet <tt>YRangeFinder</tt> accessible en ligne, ou <tt>null</tt> lorsque l\x27\xE9num\xE9ration est termin\xE9e.'};
+doc['RangeFinder']['registerTimedReportCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque notification p\xE9riodique.',lib:'rangefinder.registerTimedReportCallback()',pro:'def registerTimedReportCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque notification p\xE9riodique. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callbacks peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callbacks ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et un objet YMeasure d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['RangeFinder']['registerValueCallback']={syn:'Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e.',lib:'rangefinder.registerValueCallback()',pro:'def registerValueCallback(<span id=pn>callback</span>)',cmt:'<p>Enregistre la fonction de callback qui est appel\xE9e \xE0 chaque changement de la valeur publi\xE9e. Ce callback n\x27est appel\xE9 que durant l\x27ex\xE9cution de <tt>ySleep</tt> ou <tt>yHandleEvents</tt>. Cela permet \xE0 l\x27appelant de contr\xF4ler quand les callback peuvent se produire. Il est important d\x27appeler l\x27une de ces deux fonctions p\xE9riodiquement pour garantir que les callback ne soient pas appel\xE9s trop tard. Pour d\xE9sactiver un callback, il suffit d\x27appeler cette m\xE9thode en lui passant un pointeur nul.</p>',par:{callback:'la fonction de callback \xE0 rappeler, ou un pointeur nul. La fonction de callback doit accepter deux arguments: l\x27object fonction dont la valeur a chang\xE9, et la cha\xEEne de caract\xE8re d\xE9crivant la nouvelle valeur publi\xE9e.'}};
+doc['RangeFinder']['set_highestValue']={syn:'Modifie la m\xE9moire de valeur maximale observ\xE9e.',lib:'rangefinder.set_highestValue()',pro:'def set_highestValue(<span id=pn>newval</span>)',cmt:'<p>Modifie la m\xE9moire de valeur maximale observ\xE9e.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la m\xE9moire de valeur maximale observ\xE9e'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['RangeFinder']['set_logFrequency']={syn:'Modifie la fr\xE9quence d\x27enregistrement des mesures dans le datalogger.',lib:'rangefinder.set_logFrequency()',pro:'def set_logFrequency(<span id=pn>newval</span>)',cmt:'<p>Modifie la fr\xE9quence d\x27enregistrement des mesures dans le datalogger. La fr\xE9quence peut \xEAtre sp\xE9cifi\xE9e en mesures par secondes, en mesures par minutes (par exemple \x2215/m\x22) ou en mesures par heure (par exemple \x224/h\x22). Pour d\xE9sactiver l\x27enregistrement des mesures de cette fonction, utilisez la valeur \x22OFF\x22.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence d\x27enregistrement des mesures dans le datalogger'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['RangeFinder']['set_logicalName']={syn:'Modifie le nom logique du capteur de distance.',lib:'rangefinder.set_logicalName()',pro:'def set_logicalName(<span id=pn>newval</span>)',cmt:'<p>Modifie le nom logique du capteur de distance. Vous pouvez utiliser <tt>yCheckLogicalName()</tt> pour v\xE9rifier si votre param\xE8tre est valide. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',par:{newval:'une cha\xEEne de caract\xE8res repr\xE9sentant le nom logique du capteur de distance.'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27appel se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['RangeFinder']['set_lowestValue']={syn:'Modifie la m\xE9moire de valeur minimale observ\xE9e.',lib:'rangefinder.set_lowestValue()',pro:'def set_lowestValue(<span id=pn>newval</span>)',cmt:'<p>Modifie la m\xE9moire de valeur minimale observ\xE9e.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la m\xE9moire de valeur minimale observ\xE9e'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['RangeFinder']['set_rangeFinderMode']={syn:'Modifie le mode de fonctionnement du capteur de distance, permettant ainsi de mettre la priorit\xE9 sur la pr\xE9cision, la vitesse ou la distance maximale d\xE9tectable.',lib:'rangefinder.set_rangeFinderMode()',pro:'def set_rangeFinderMode(<span id=pn>newval</span>)',cmt:'<p>Modifie le mode de fonctionnement du capteur de distance, permettant ainsi de mettre la priorit\xE9 sur la pr\xE9cision, la vitesse ou la distance maximale d\xE9tectable.</p>',par:{newval:'une valeur parmi <tt>Y_RANGEFINDERMODE_DEFAULT</tt>, <tt>Y_RANGEFINDERMODE_LONG_RANGE</tt>, <tt>Y_RANGEFINDERMODE_HIGH_ACCURACY</tt> et <tt>Y_RANGEFINDERMODE_HIGH_SPEED</tt> repr&eacute;sentant le mode de fonctionnement du capteur de distance, permettant ainsi de mettre la priorit\xE9 sur la pr\xE9cision, la vitesse ou la distance maximale d\xE9tectable'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['RangeFinder']['set_reportFrequency']={syn:'Modifie la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es.',lib:'rangefinder.set_reportFrequency()',pro:'def set_reportFrequency(<span id=pn>newval</span>)',cmt:'<p>Modifie la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es. La fr\xE9quence peut \xEAtre sp\xE9cifi\xE9e en mesures par secondes, en mesures par minutes (par exemple \x2215/m\x22) ou en mesures par heure (par exemple \x224/h\x22). Pour d\xE9sactiver les notifications p\xE9riodiques pour cette fonction, utilisez la valeur \x22OFF\x22.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res repr&eacute;sentant la fr\xE9quence de notification p\xE9riodique des valeurs mesur\xE9es'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['RangeFinder']['set_resolution']={syn:'Modifie la r\xE9solution des valeurs physique mesur\xE9es.',lib:'rangefinder.set_resolution()',pro:'def set_resolution(<span id=pn>newval</span>)',cmt:'<p>Modifie la r\xE9solution des valeurs physique mesur\xE9es. La r\xE9solution correspond \xE0 la pr\xE9cision de l\x27affichage des mesures. Elle ne change pas la pr\xE9cision de la mesure elle-m\xEAme.</p>',par:{newval:'une valeur num&eacute;rique repr&eacute;sentant la r\xE9solution des valeurs physique mesur\xE9es'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['RangeFinder']['set_unit']={syn:'Change l\x27unit\xE9 dans laquelle la distance mesur\xE9e est exprim\xE9e.',lib:'rangefinder.set_unit()',pro:'def set_unit(<span id=pn>newval</span>)',cmt:'<p>Change l\x27unit\xE9 dans laquelle la distance mesur\xE9e est exprim\xE9e. Cette unit\xE9 est une cha\xEEne de charact\xE8re qui peut \xEAtre <tt>\x22</tt> ou <tt>mm</tt>. Toute autre valeur sera ignor\xE9e. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9. Attention: si une calibration sp\xE9cifique est d\xE9finie pour la fonction rangeFinder un changement d\x27unit\xE9 a toutes les chances de la fausser.</p>',par:{newval:'une cha&icirc;ne de caract&egrave;res'},ret:'<tt>YAPI_SUCCESS</tt> si l\x27op&eacute;ration se d&eacute;roule sans erreur.',ext:'En cas d\x27erreur, d&eacute;clenche une exception ou retourne un code d\x27erreur n&eacute;gatif.'};
+doc['RangeFinder']['set_userData']={syn:'Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>.',lib:'rangefinder.set_userData()',pro:'def set_userData(<span id=pn>data</span>)',cmt:'<p>Enregistre un contexte libre dans l\x27attribut userData de la fonction, afin de le retrouver plus tard \xE0 l\x27aide de la m\xE9thode <tt>get_userData</tt>. Cet attribut n\x27es pas utilis\xE9 directement par l\x27API. Il est \xE0 la disposition de l\x27appelant pour stocker un contexte.</p>',par:{data:'objet quelconque \xE0 m\xE9moriser'}};
+doc['RangeFinder']['startDataLogger']={syn:'D\xE9marre l\x27enregistreur de donn\xE9es du module.',lib:'rangefinder.startDataLogger()',pro:'def startDataLogger()',cmt:'<p>D\xE9marre l\x27enregistreur de donn\xE9es du module. Attention, l\x27enregistreur ne sauvera les mesures de ce capteur que si la fr\xE9quence d\x27enregistrement (logFrequency) n\x27est pas sur \x22OFF\x22.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.'};
+doc['RangeFinder']['stopDataLogger']={syn:'Arr\xEAte l\x27enregistreur de donn\xE9es du module.',lib:'rangefinder.stopDataLogger()',pro:'def stopDataLogger()',cmt:'<p>Arr\xEAte l\x27enregistreur de donn\xE9es du module.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.'};
+doc['RangeFinder']['triggerTempCalibration']={syn:'Lance une calibration par rapport \xE0 la temp\xE9rature ambiante.',lib:'rangefinder.triggerTempCalibration()',pro:'def triggerTempCalibration()',cmt:'<p>Lance une calibration par rapport \xE0 la temp\xE9rature ambiante. Cette calibration ne n\xE9cessite aucune interaction physique avec le capteur. Elle est effectu\xE9e automatiquement au d\xE9marrage du module, mais il est recommand\xE9 de la relancer si la variation de temp\xE9rature depuis la derni\xE8re calibration d\xE9passe 8\xB0C.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur. En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+doc['RangeFinder']['unmuteValueCallbacks']={syn:'R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent.',lib:'rangefinder.unmuteValueCallbacks()',pro:'def unmuteValueCallbacks()',cmt:'<p>R\xE9active l\x27envoi de chaque changement de la valeur publi\xE9e au hub parent. Cette fonction annule un pr\xE9c\xE9dent appel \xE0 <tt>muteValueCallbacks()</tt>. N\x27oubliez pas d\x27appeler la m\xE9thode <tt>saveToFlash()</tt> du module si le r\xE9glage doit \xEAtre pr\xE9serv\xE9.</p>',ret:'<tt>YAPI_SUCCESS</tt> si l\x27op\xE9ration se d\xE9roule sans erreur.',ext:'En cas d\x27erreur, d\xE9clenche une exception ou retourne un code d\x27erreur n\xE9gatif.'};
+//--- (end of generated code: RangeFinder)
+//--- (end of generated code)
+
+ function isClassMethod(str_method)
+ { return str_method.charAt(0) == str_method.charAt(0).toUpperCase();
+ }
+
+ // add function aliases to the substitution list
+ for(classname in doc)
+ { for(funcname in doc[classname])
+ { if(isClassMethod(funcname))
+ { // class method, generate shortcut
+ sub['y'+funcname] = doc[classname][funcname].lib;
+ }
+ }
+ }
+
+ function ApplySub(text,classname)
+ { var pos, endpos = 0, key, rep;
+ if(sub['null'] != 'null') text = text.replace('<tt>null</tt>','<tt>'+sub['null']+'</tt>');
+ if(UseShortcuts) return text;
+ if(classname.substr(0,1)!='Y') classname = 'Y'+classname;
+ while((pos = text.toLowerCase().indexOf('<tt>',endpos)) >= endpos) {
+ pos += 4;
+ endpos = text.indexOf('</', pos);
+ key = text.substr(pos,endpos-pos).match(/[\w_]+/);
+ if(key)
+ { key = key[0];
+ rep = sub[key];
+ if(!rep && key.substr(0,2)=='Y_' && sub['YAPI_SUCCESS']) {
+ rep = sub['YAPI_SUCCESS'].replace('YAPI',classname).replace('SUCCESS',key.substr(2,key.length));
+ }
+ if(rep) text = text.substr(0, pos)+rep+text.substr(endpos);
+ }
+ }
+ return text;
+ }
+
+ function SetPosition(o,x,y)
+ { var it=document.getElementById(o);
+ if (!it) throw "SetPosition: "+o+" element does not exist."
+ it.style.top = y;
+ it.style.left = x;
+ }
+
+function GetPositionX(o)
+ { var it=document.getElementById(o);
+ if (!it) throw "GetPositionX: "+o+" element does not exist."
+ return parseInt(it.style.left);
+ }
+
+function GetPositionY(o)
+ { var it=document.getElementById(o);
+ if (!it) throw "GetPositionY: "+o+" element does not exist."
+ return parseInt(it.style.top);
+ }
+
+function GetWidth(o)
+ { var it=document.getElementById(o);
+ if (!it) throw "GetWidth: "+o+" element does not exist."
+ return parseInt(it.style.width);
+ }
+
+function GetHeight(o)
+ { var it=document.getElementById(o);
+ if (!it) throw "GetHeight: "+o+" element does not exist."
+ return parseInt(it.style.height);
+ }
+
+function SetHeight(o,h)
+ { var it=document.getElementById(o);
+ if (!it) throw "SetHeight: "+o+" element does not exist."
+ h=parseInt(h);
+ if (h<0) h=0;
+ it.style.height = h+ "px";
+ }
+
+function SetWidth(o,w)
+ { var it=document.getElementById(o);
+ if (!it) throw "SetWidth: "+o+" element does not exist."
+ w = parseInt(w);
+ if (w<0) w=0;
+ it.style.width = parseInt(w) + "px";
+ }
+
+function SetLeft(o,l)
+ { var it=document.getElementById(o);
+ if (!it) throw "SetLeft: "+o+" element does not exist."
+ it.style.left = parseInt(l) + "px";
+ }
+
+function SetTop(o,t)
+ { var it=document.getElementById(o);
+ if (!it) throw "SetTop: "+o+" element does not exist."
+ it.style.top = parseInt(t) + "px";
+ }
+
+function SetSize(o,w,h)
+ { var it=document.getElementById(o);
+ if (!it) throw "SetSize: "+o+" element does not exist."
+ w= parseInt(w);
+ if (w<0) w=0;
+ h=parseInt(h);
+ if (h<0) h=0;
+ it.style.width = w;
+ it.style.height = h;
+ }
+
+function GetWindowWidth()
+ { return parseInt(document.body.clientWidth);
+ }
+
+function GetWindowHeight()
+ { return parseInt(document.body.clientHeight);
+ }
+
+function computeWinWH()
+ { WinW = GetWindowWidth() ;
+ if (WinW<600) WinW=600;
+ WinH = GetWindowHeight();
+ if (WinH<400) WinH=400;
+}
+
+
+ function getInnerHeight()
+ { var D = document;
+ return Math.max(
+ Math.max(D.body.scrollHeight, D.documentElement.scrollHeight),
+ Math.max(D.body.offsetHeight, D.documentElement.offsetHeight),
+ Math.max(D.body.clientHeight, D.documentElement.clientHeight)
+ );
+ }
+
+ function getInnerWidth()
+ { var D = document;
+ return Math.max(
+ Math.max(D.body.scrollWidth, D.documentElement.scrollWidth),
+ Math.max(D.body.offsetWidth, D.documentElement.offsetWidth),
+ Math.max(D.body.clientWidth, D.documentElement.clientWidth)
+ );
+
+ }
+
+function onResize(fct)
+ { fct();
+ resizeCallBacks[resizeCallBacks.length]=fct;
+ }
+
+function windowResized()
+ { computeWinWH()
+ for (var i=0;i<resizeCallBacks.length;i++)
+ resizeCallBacks[i]();
+ }
+
+function jsQuote(str_in)
+{ str_in = str_in+'';
+ var str_out = '';
+ for (i=0;i<str_in.length;i++)
+ {
+ var ascii = str_in.charCodeAt(i);
+ if ((ascii>=32)&&(ascii<=127)&&(ascii!=34)&&(ascii!=39)) str_out =str_out+str_in.charAt(i);
+ else
+ { var hex = ascii.toString(16).toUpperCase();
+ if (hex.length==1) hex = '0'+hex;
+ str_out = str_out + String.fromCharCode(92) + 'x'+ hex;
+ }
+ }
+ return str_out;
+ }
+
+
+function resizeMargin()
+ {
+ SetSize("MarginLayer",marginSize,WinH-110);
+ SetLeft("FunctionsLayer",marginSize);
+ SetSize("FunctionsLayer",WinW-marginSize,WinH-110);
+ }
+
+function resizeSeparator()
+ { SetHeight("separatorLayer",WinH-110);
+ }
+
+function positionObject(int_x,int_y)
+ { this.x = int_x;
+ this.y = int_y;
+ }
+
+function GetEventPosition(event)
+ { var x,y;
+ if (event.changedTouches)
+ { x = event.changedTouches[0].pageX;
+ y = event.changedTouches[0].pageY;
+ }
+ else
+ { x = event.PageX;
+ y = event.PageY;
+ if (!x)
+ { x= event.clientX + document.body.scrollLeft;
+ y= event.clientY + document.body.scrollTop;
+ }
+ }
+ return new positionObject(x,y);
+ }
+
+
+function EnableDrag(var_element,onDragMove,onDragEnd)
+ {
+ //onDragMove & onDragMove are optinnals callbacks fct(DomElement,position) where position is an associtative array "x","y
+ if (document.addEventListener)
+ { var_element.addEventListener("mousedown",Drag_start,false);
+ var_element.addEventListener("touchstart",Drag_start,false);
+ }
+ else
+ if (document.attachEvent)
+ var_element.attachEvent("onmousedown",Drag_start);
+
+ if (onDragMove) var_element.onDragMove = onDragMove;
+ if (onDragEnd) var_element.onDragEnd = onDragEnd;
+ }
+
+ var LastDraggedObject = null;
+
+ function DraggedObject(obj_element,obj_elmtInitialPos,obj_mouseInitalPos)
+ {this.element = obj_element;
+ this.elmtInitialPos = obj_elmtInitialPos;
+ this.elmtCurrentPos = new positionObject(obj_elmtInitialPos.x,obj_elmtInitialPos.y);
+ this.mouseInitialPos = obj_mouseInitalPos;
+ }
+
+function Drag_start(event)
+ {
+ if (!event) event = window.event;
+ var source = event.srcElement;
+
+ if (event.button!=undefined)
+ { if ((event.button!=1) && (document.attachEvent)) return; // ie;
+ if ((event.button!=0) && (document.addEventListener)) return; // other;
+ }
+
+ if (!source) source= this;
+ if (!source) return;
+ var originalsource=source;
+ while (source.tagName!="DIV")
+ { if (source.tagName=="A") return false; // there is a link (a probably a button) on the way: cancel drag
+ source=source.parentNode;
+ }
+
+ if (event.preventDefault) event.preventDefault();
+ source.style.cursor="col-resize";
+ lastDraggedObject = new DraggedObject( source,
+ new positionObject(parseInt(source.style.left),parseInt(source.style.top)),
+ GetEventPosition(event)
+ );
+ if (document.addEventListener)
+ { document.addEventListener("mousemove",Drag_mouseCapture,false);
+ document.addEventListener("mouseup", Drag_stopMouseCapture,false);
+ document.addEventListener("touchmove",Drag_mouseCapture,false);
+ document.addEventListener("touchend", Drag_stopMouseCapture,false);
+ }
+ else
+ if (document.attachEvent)
+ { document.attachEvent("onmousemove",Drag_mouseCapture);
+ document.attachEvent("onmouseup",Drag_stopMouseCapture);
+ }
+ document.onmouseup = Drag_stopMouseCapture;
+ }
+
+
+function Drag_mouseCapture(event)
+ {
+ if (!event) event = window.event;
+ var position = GetEventPosition(event);
+ if (event.preventDefault) event.preventDefault();
+
+
+ var x = (lastDraggedObject.elmtInitialPos.x + position.x - lastDraggedObject.mouseInitialPos.x);
+ var y = (lastDraggedObject.elmtInitialPos.y + position.y - lastDraggedObject.mouseInitialPos.y);
+
+ var iw = getInnerWidth()
+ var ih = getInnerHeight();
+ var w = lastDraggedObject.element.offsetWidth;
+ var h = lastDraggedObject.element.offsetHeight;
+
+ if (x>iw-w) x=iw-w;
+ if (y>ih-h) y=ih-h;
+ if (x<0) x=0;
+ if (y<0) y=0;
+
+ var p = {x:x,y:y};
+
+ if (lastDraggedObject.element.onDragMove)
+ lastDraggedObject.element.onDragMove(lastDraggedObject.element,p);
+
+ lastDraggedObject.elmtCurrentPos.x = p.x;
+ lastDraggedObject.elmtCurrentPos.y = p.y;
+
+ lastDraggedObject.element.style.left = p.x+"px";
+ lastDraggedObject.element.style.top = p.y+"px";
+ }
+
+function Drag_stopMouseCapture()
+ {
+ if (document.removeEventListener)
+ { document.removeEventListener("mousemove",Drag_mouseCapture,false);
+ document.removeEventListener("mouseup", Drag_stopMouseCapture,false);
+ document.removeEventListener("touchmove",Drag_mouseCapture,false);
+ document.removeEventListener("touchend", Drag_stopMouseCapture,false);
+ }
+ else
+ if (document.detachEvent)
+ { document.detachEvent("onmousemove",Drag_mouseCapture);
+ document.detachEvent("onmouseup",Drag_stopMouseCapture);
+ }
+
+ if (lastDraggedObject)
+ { lastDraggedObject.element.style.cursor='col-resize';
+ if (lastDraggedObject.element.onDragEnd)
+ lastDraggedObject.element.onDragEnd(lastDraggedObject.element,{x:lastDraggedObject.elmtCurrentPos.x,y:lastDraggedObject.elmtCurrentPos.y});
+ }
+ lastDraggedObject = null;
+ }
+
+ function marginMove(el,pos)
+ {pos.y = 80;
+ if (pos.x<100) pos.x=100;
+ if (pos.x>WinW-100) pos.x=WinW-100;
+ marginSize=pos.x;
+ resizeMargin()
+ }
+
+ function proto(str_classindex, m)
+ {
+ var funcproto = doc[str_classindex][m].pro;
+ if(isClassMethod(m)) {
+ if(UseShortcuts) {
+ funcproto = funcproto.replace(m, 'y'+m);
+ } else if(doc[str_classindex][m].lib.substr(0,1) == '[' && funcproto.substr(0,1) != '+') {
+ var params = doc[str_classindex][m].par;
+ var methodpos = funcproto.search(m);
+ var endrettype = methodpos;
+ while(endrettype > 0 && funcproto.substr(endrettype-1,1)==' ') endrettype--;
+ var newproto = "+("+funcproto.substr(0,endrettype)+") "+m;
+ var pos = methodpos+m.length;
+ for(var p in params) {
+ pos += funcproto.slice(pos).search(/[A-Za-z]/);
+ var argpos = pos + funcproto.slice(pos).search('<span');
+ var endargtype = argpos;
+ while(endargtype > pos && funcproto.substr(endargtype-1,1)==' ') endargtype--;
+ var endarg = argpos + funcproto.slice(argpos).search(/[,)]/);
+ newproto += ": ("+funcproto.slice(pos, endargtype)+") "+funcproto.slice(argpos,endarg)+" ";
+ pos = endarg;
+ }
+ funcproto = newproto;
+ }
+ }
+ return funcproto
+ }
+
+ var lastindex_shown = "";
+ var lastname_shown = null;
+ function Show(str_classindex,str_name)
+ {
+ if ((str_classindex=='')&&(str_name==''))
+ { document.getElementById("FunctionsLayerInner").innerHTML =NotFound;
+ return;
+ }
+
+ var fcthtml='';
+ fcthtml = "";
+ lastindex_shown =str_classindex;
+ if (str_name)
+ { lastname_shown = str_name;
+ var fct = doc[str_classindex][str_name];
+ var funcname = fct.lib;
+ var funcproto = proto(str_classindex, str_name);
+ if(UseShortcuts && isClassMethod(str_name)) {
+ funcname = 'y'+str_name+'()';
+ }
+ fcthtml = "<span class='funcHeader'>"+funcname+'</span>'
+ +"<br><br><span class='prototype'>"+funcproto+'</span>'
+ +'<br><br>'+ApplySub(fct.cmt,str_classindex);
+ if (fct.par)
+ { fcthtml += "<span class='paramAndRet'>"+ParamLabel+'</span><br>\n';
+ fcthtml +='<table class="paramtable">'
+ for (var p in fct.par)
+ fcthtml +='<tr><td class="pn">'+p+'</td><td> : '+ApplySub(fct.par[p],str_classindex)+'</td></tr>\n';
+ fcthtml +='</table><br>'
+ }
+
+ if (fct.ret)
+ { fcthtml += "<span class='paramAndRet'>"+ReturnLabel+'</span><br>\n';
+ fcthtml +='<p class="paramtable">'+ApplySub(fct.ret,str_classindex)+'</p>\n';
+ }
+
+ if (fct.ext) fcthtml+=ApplySub(fct.ext,str_classindex);
+ }
+ else
+ if (str_classindex!='')
+ { fcthtml = "<span class='funcHeader'>"+str_classindex+'</span><br>'
+ + "<p>"+ApplySub(doc[str_classindex][''].syn,str_classindex)+"</p>"
+ + "<p>"+IncludeLabel+"</p>"
+ + "<p class='include'>"+doc[str_classindex][''].inc+"</p>"
+ + "<p>"+ApplySub(doc[str_classindex][''].cmt,str_classindex)+"</p>";
+ for (m in doc[str_classindex]) {
+ if (m!='') {
+ var funcproto = proto(str_classindex, m);
+ fcthtml +="<p class='methodlist'><a class='protoindex' href='javascript:Show(\""+str_classindex+"\",\""+m+"\")'>"+funcproto+'</a><br>'
+ +"<span class='synlist'>"+ApplySub(doc[str_classindex][m].syn,str_classindex)+'</span></p>';
+ }
+ }
+ }
+ document.getElementById("FunctionsLayerInner").innerHTML = fcthtml;
+ }
+
+ function expand(source,openonly)
+ { if (document.getElementById(source.id+"List").style.display=='' && !openonly)
+ { document.getElementById(source.id+"List").style.display='none';
+ document.getElementById(source.id).src=plusimage;
+ }
+ else
+ { document.getElementById(source.id+"List").style.display='';
+ document.getElementById(source.id).src=minusimage;
+ }
+ }
+
+ function ShowFunctions(str_currentClassName)
+ { var marginhtml = "";
+ for (var classname in doc)
+ { var icon = plusimage;
+ var fct = "expand";
+ var display = "none"
+ if (str_currentClassName==classname)
+ { icon = minusimage;
+ fct = "expand";
+ display = ""
+ }
+ marginhtml = marginhtml+"<span class='classheader'> <img class='expandColapse' id='"+classname+"' onclick='"+fct+"(this)' src='"+icon+"'/> ";
+ marginhtml = marginhtml+"<a href='javascript:Show(\""+classname+"\",\"\");' id='"+classname+"' onclick='"+fct+"(this,true)'>"+classname+'</a></span><br>';
+ marginhtml = marginhtml+ "<div id='"+classname+"List' class='methodsList' style='display:"+display+"'>";
+
+ for (var method in doc[classname])
+ { if (method!='')
+ { var funcname = doc[classname][method].lib;
+ if(UseShortcuts && isClassMethod(method)) funcname = 'y'+method+'()';
+ marginhtml = marginhtml+"<a id="+classname+'.'+method+" style='display:block' href='javascript:Show(\""+classname+"\",\""+method+"\");'>"+funcname+'</a>';
+ }
+ }
+ marginhtml = marginhtml+'</div>'
+ }
+
+ document.getElementById("MarginLayer").innerHTML = marginhtml;
+ }
+
+ function fctMatch(classname,method,values)
+ { var found = new Array()
+ var tosearch = new Array()
+
+ for (var i=0;i<values.length;i++)
+ if (values[i]!='' && values[i]!='y')
+ { if(values[i].substr(0,3) == '[y]')
+ tosearch[tosearch.length] = values[i].substr(3,values[i].length);
+ else
+ tosearch[tosearch.length] = values[i];
+ }
+
+ for (var i=0;i<tosearch.length;i++)
+ { var expr = new RegExp(tosearch[i], "i");
+ var fct = doc[classname][method]
+ var found = classname.search(expr)>=0;
+ if (!found) found=method.search(expr)>=0;
+
+ if (!found && fct.inc)
+ {if (!found && fct.syn) found=fct.syn.search(expr)>=0;
+ if (!found) found=fct.inc.search(expr)>=0;
+ }
+
+ if (!found && fct.pro) found=fct.pro.search(expr)>=0;
+ if (fct.par)
+ for (var p in fct.par)
+ { if (!found) found=p.search(expr)>=0;
+ if (!found) found=fct.par[p].search(expr)>=0;
+ }
+ if (fct.ret)
+ { if (!found) found=fct.ret.search(expr)>=0;
+ }
+ if (!found && fct.cmt)found=fct.cmt.search(expr)>=0;
+ if (!found && fct.ext)found=fct.ext.search(expr)>=0;
+
+ if (!found) return false;
+ }
+
+
+ return true;
+
+ }
+
+ var searchTimer = null;
+
+ function doSearch()
+ { searchTimer = null;
+ var value= document.forms['yoctoForm'].elements['search'].value;
+
+ if (value=='')
+ { for (var classname in doc)
+ { var container = document.getElementById(classname+"List");
+ for (var method in doc[classname])
+ if (method!='')
+ { var it = document.getElementById(classname+'.'+method);
+ if (it) it.style.display="block";
+ }
+ document.getElementById(classname).style.visibility='visible';
+ var container = document.getElementById(classname+"List");
+ if (container["originalDisplay"]!="")
+ { document.getElementById(classname+"List").style.display='none';
+ document.getElementById(classname).src=plusimage;
+ }
+ else
+ { document.getElementById(classname+"List").style.display='';
+ document.getElementById(classname).src=minusimage;
+ }
+ container["originalDisplay"]=null;
+ }
+ Show(lastindex_shown,lastname_shown);
+ return;
+ }
+
+ var firstindex = '';
+ var firstname = '';
+ qvalue = value;
+ value = '';
+ for(var i = 0; i < qvalue.length; i++) {
+ var c = qvalue.charAt(i);
+ if(c == '\\' || c == '[' || c == ']' || c == '(' || c == ')') {
+ value += '.';
+ } else {
+ if (c!=' ') value+='['+qvalue.charAt(i)+']';
+ else value+=' ';
+ }
+ }
+ for (var classname in doc)
+ { var matchfound=false;
+ var container = document.getElementById(classname+"List");
+ if (!container["originalDisplay"]) container["originalDisplay"]=null;
+ if (container["originalDisplay"]==null) container["originalDisplay"] = container.style.display;
+ values = value.split(' ');
+ for (var method in doc[classname])
+
+ { var it = document.getElementById(classname+'.'+method);
+ var match = fctMatch(classname,method,values);
+ if (match)
+ { if (it) it.style.display="block";
+ matchfound=true;
+ if (firstindex=='') {firstindex=classname; firstname = method;}
+ }
+ else
+ { if (it) it.style.display="none";
+ }
+ }
+
+ if (matchfound)
+ { document.getElementById(classname+"List").style.display='';
+ document.getElementById(classname).src=minusimage;
+ document.getElementById(classname).style.visibility='visible';
+ }
+ else
+ { document.getElementById(classname+"List").style.display='none';
+ document.getElementById(classname).style.visibility='hidden';
+ document.getElementById(classname).src=plusimage;
+ }
+ }
+
+ Show(firstindex,firstname);
+
+
+ }
+
+ function initSearch()
+ { if (searchTimer!=null) clearTimeout(searchTimer);
+ searchTimer = setTimeout('doSearch()',500);
+ }
+
+ function sortObject(o) {
+ var sorted = {}, key, a = [];
+ for (key in o) {
+ if (key != 'YAPI' && o.hasOwnProperty(key)) {
+ a.push(key);
+ }
+ }
+
+ a.sort();
+ if (o['YAPI']) sorted['YAPI']=o['YAPI'];
+ for (key = 0; key < a.length; key++) {
+ sorted[a[key]] = o[a[key]];
+ }
+ return sorted;
+}
+
+ function OOcheckboxChange()
+ { UseShortcuts = document.forms["yoctoForm"].elements["OOcheckbox"].checked;
+ ShowFunctions(lastindex_shown);
+ Show(lastindex_shown,lastname_shown);
+
+ }
+
+
+
+
+ -->
+</SCRIPT>
+
+</HEAD>
+
+<BODY>
+
+<div id="BannerLayer">
+<table width=100% >
+<tr><td rowspan=2>
+<img alt="Yocto-Api :-)" style='margin-left:5px;'src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAk4AAABCCAYAAAChBFmnAAAALHRFWHRDcmVhdGlvbiBUaW1lAFR1ZSAxMyBEZWMgMjAxMSAwNzo0OTo1NSArMDEwMFnEsZUAAAAHdElNRQfbDA0HDiVTf5zcAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAABGdBTUEAALGPC/xhBQAAEn5JREFUeNrtnQ2wVVUVxxcRWIr4gaQkxmNkBk1LSygaabzOEKAhGpKioFKDIaX2SGu0KJ8TTozzRCwbFXFk4gF+JuIXok6k4kAiaeGIhPpIbWQUE8dGEYHW/5194Pq49919PvbZ59z7/82sOe/de87Za+9z9rn/sz/WFiGEEEIIIYQQQgghpAgsUFuvdqHDNH6k9rJam1o33xkmhBBCCIlDX7Vn1A5QW+MwnefUDjRp9fWdaUIIIYSQuCxWe1vtB47Of6baNrWNarf5ziwhhBBCSBLGqO1S6+Hg3CUJRNNsYRcdIYQQQuoAl8LpIbWlvjNICCGEkMbjM74diEE/tb/7doIQQgghjcdnPaePAeRD1Qar9TGfbZFgttyzals9+0cIIYQQshsfwgnjks5Qm6p2slrPKvt9rPYXtVvUlkjQ9UcIIYQQ4g1Xwmmb2fZS+2/Z599Uu0ntaxbngKAaZWyt2o/VVvspptqUSqXrddMc8bC31IasWLHizYx9/Z1urohwyBz1cXrMtAboZoLaILXD1A4x26Ys81yFT9TeMPaOBNcD8cfu0PxuztoZLavjdDPac1lVKhPMXl2iZfJKgrzVxYuPlkGiCSmsD/WFXs8LdDPfYtf31Jq0HHPZi5LT+ol7EPfiW2a7Tu2etH8vbfNeXvddzUrrrfaq2nK189R2qF2uhh/suGJtu9ov1c5Ve0DtKke+x0YvAMIwTIh4GB5Mw7KqUOrjT3UzJ8Ih89S3yIFMzQ9Eq9r4LPKVMvgBma92heZ9i+vEtKyO1M0dakN8Z7wGy9Qmx/kRzemDOTJxhRPrQ/2h13Qf3bRLIHxtuFHL7xLfflfJS1HqJ+7FeRLci6n8ZsYRTq4Gh7+vNk7tNLU/qaE15lpJ1sLVw5zjq458ToNJavdEPOYotQdNJXSKpoH4V60RDkFeLoqRDoQA3g6K+CMBcJ9OUXte89In6cm6wpTV85J/0QTQGrbGdZnUG6wPdQta7W1FE7hIy2+wb6cLDu5F/Cat0rLcz5cTLmfVPSlBWAKMZ0IXVhqtWzhHd7VD3RdNdFSRomUNLU4PRjx0uFqb3gjdXfmm5z5RglYNW/EK0TTB5CkqSKeXq7xkSH+1mx2nUbSyyqJM6o2iXeNq8Nob9Hl6uEQb7gDw7I3S2k+qgwaH+b4Sdx2OAM1qPROfZW/w9nOSY99jUSaeno54KN5Go7QGWWPGzqCbxVY0Yd9YosmkVYTWE1vOcPWWrefFmL8ilhXKJJcvL3mD9aFuman2uRjHjdby+65v5+uE8aZ+ZY5L4YQf6VvFzQB0tMzgzcdFgM3EqOD4nwTdGlHFU7PeCJel6YvpJoAQsn3jhc/jY7Y0icl3PYH7d4Sjc7s6r2tQJvV2nV1Rb+Xksj4UAn2mnqCbyQlOMcdl70KD4aX726VwOl/taIfnP8qkkUuMeEI35fqIh7ZqpTo7DR9MqwC6DW374SGaRhvf4zIoDd9zxlGOzlvksiqy71lSj+Xkqj4UhaTdbbgnos7AJpU53keiLoXTpRn4n0UasTEzUEoSXTxhvFOirkgzcA6iyfYhhwHKSUUTiDJYsig0OTpvkcuqybcDBaHI17gaTb4d8IWZYDM8hVPNYJdnKnh5MXEVxwktTVnMfvuK2jFqL2aQViwwdVsrSEkCYWL7EMV1wUw7hCmInDfTDIygobZjKyDs0hBNEiGPTSmklQbtHn3Na1m1O/Ap7TzY+Ogi3ajk9RpXo71AvmaKmfk8y2JXxGw6sMY++B7jpKb5zldEmhyeG8NJUF/QvX2x2I0hc+lPVSoJJwRkeyfheb8j7mJElYM0Rkpy4dRX7W1XTpaJpxVi/yDFTfS4HhYnQGab2I9DgGgqpRjgzip/mt6mlNJLRHBZatLkKPlclpWLMkk7D5Y+5uE+y+U1robn+pB30L1Wq4UDwRoxRGOVxfmmaHnfGOfl2BcZ3Kcoiye0XBDw0qZLNM4A/cR07qpbIEFwSQRyHGNhp6oNrHDeLGeRfD3h8bepLZUg3pQz9IbD+nslCSqWLXjoQjwdYHuAiWBuG4QTN2eaogn0T/FceaHJ0XmL3I1Tj9fZBfVYTk2+Hcga061mE35gpj5PscLFEot9GZ6gOjbl543OwukbaqdI0FrxgIU9pPYvtd90Ok9ThnkYmOBYtFidZPI8zLWjRjxhFsAHEQ6zDpBpZuTZDjqEgBvBpRQIIaQm6Far1f2GpYnCOFctlucdoc/t031nLm/kpQW2Gp2FE+IIPab2Cwmm+teyL0iwrMrVEtxYIdYtJClQ62buitlqX1J7QhzFUOqM3hArJejDjSKeagbI1O8mRsgDRFPJCDlCCCFV0GcrxtFOsdi1JQzjotsXJBgyYUNrFitHkPToLJwQd2mo2u0SBK+sZRgXhKVVHlb7ldpvPeQh7ho7EE0/kWDtO8TlmJuVw0Y8oeXpkwiHVQ2QaQKqzbc8DwQbRRMhhNiB526tiVTP6zN1YafPWsTuGc/wBAUjjXAEH6lhimYonm7KOA/vxjgGogmj9iGaoq4tlwpayR6VYCxSFPG0V4DMiEupQDSNpmgiCUBrJQKqcmwGqXv0+TpK7IKYzuj8gT5nXxH7VqcrGI2/OKQVjgDiCS1P90mMRWETsjHi/teJZ9EUohXrXq0sEyL6gWbdN/TYO82CkTjWJip4KJpW+swzKQztEixMu75suz6tFckJyTtmaITNC4JWixUPVfkOQ1iw+Hut39owPMGFvvNNapNmHKdtat9T+7MEs+2y4tkI++ZGNIUY8YRm2ihv8G1m2jBiitjMzEKr1hiKJmJJr5RiehFSZDCuySaAcEu1L9DqhJADYtcVN9mEJ3jBd8Z9o+UwwLcPXZF2AEyIJ3TbPSLB1PssQFMqHvI7u9inm9nvLDUMos6FaArRinKDEUK24gnX7Q7LfSGasGDvX33nkxQDiibiEn3WxR2XWhG9X1OPGWhCwMy02HWJxbMVL7joiakVcygMT3By2vkpIGf4dqArXEQOR7fdORJEyq7YZ3vEEUdI9+7dZdOmTbJrV+U61K1bNxkwYIDs2LFDXn/99a7SQwEjnEBXY4WQSLvZ9xEHeU6MEU9oPbKJFWJLKJru9Z0/QggpEBizdEiNffB8bal1IhMAGWEKbFqdECv5bAzF8F0AWWNamZokiBF5seVhH/nw1dWSKxhAOl1tUafPd82ePfut5ubmfhBGy5cvl3PPPVe2bNnyqZ369OkjixYtkpEjR3YIq7lz58q0adOqiSw0g/5c7eMu/Nkl8WffZYZWliv15sFbSVozLCZTNBFCiD36DD5S7H642yJ0q6HVCV1/NuNRZ6kPaMna5rssKpRN3n5H230k6nKRX0Qff6b8g549ez48ffr0HhBNAMJo4cKFEv4P8HdbW1vHd+H/U6dOlbFjx1ZKA91Vl0igOnd2YXm72FXRygLBOS+FUzVXmB5LCCGkayByanWrobXJpiuvAxNo2DbOXpPa5b4LoSBEnRyWCi6FE7hKykRL79690RfcI/x/8eLF8tRTT8nAgXuCf+PvlStXdrQ4lTNixF5Lr2G5kKxn8GUF8pVkHBZE0w2+M0EIIUWiVCphJYnxFrveaMINRAHjl96z3JfhCex43keiroXT42r/LPsfUVU7utTWr18vEydOlGuuuUZee+213Tvg75kzZ8qkSZM69gnBmKhOQJHX5dRoE302apiCkBkUTYQQEgubCTro4ZgV9cQmlIftBKBecdJoQLxM9HItnMDuxXO3bt2KBXk7mtYOOugg2X///Ts+33fffXfvHP6N77BPyKpVn1pseq3aXT4KLCuMeEL8j6cjHDZHj7vGt++EEFI0SqXSBbo53mLXWQnW+IRwsl3oHeEJTvBdLjnmHl+hG7IQTg+Hf2zfvn3c0qVLserxrkMPPVTWrVvX0VXXv/+eBcTxNz7Dd9gHbNy4Ue6+++7yc14rBRq3FBczONAmam24/3TfPhNCSNFQgbKf2LXwoKstdtR80+oUpSWJEforg+6oyb4Sz0I4bZAgzhL4/Lhx4y5cu3Ztx8rH/fr1k/vvv19efnnPCiD4G5/hOwABNWbMGPnwww/DXbA+3n2+CixrGFOHEEKcg6EfNsGEW1KIno/QBLatTsMRnsBryeQLDMpH+Q3z+dvoKhxBOWgZ2h2ccseOHYOGDh26a/DgwfLuu+/K5s17t3i2trbKggUL5OCDD5YNGzZ0xHIq40HpOvQAISQB+qDGoMNVxlaorQtXfSckKS4CViZB7/fDxS5+HsTOzSnkf5umiVYn29ak1ryGJ8gAlPlGYxgIju65N307FUc4oUkTa6R1t9gXFQRxBT4Vu2Lnzp3dXnrppS4PhKCqJKqUv3kpKUIahyZjE8z/H+iDe42UiSmuWUfqCJvwAwAtUh+ZVR6yBGNZIOyuzjrhCjRlmNZbeRWLUYUTIm/fLsGChL7IZUESUsfgxackZcso6Y8HFvw92rdjhCTBDL6e5NsPCxCeYJ7v1hZNf5PvgsgDUYQT1qBDUMu5EiyWu93iGLQ4fVGCRXWnqu2Tgs/oi4Zw2xnxOEwhfUzt1RR8IKTRsVn8lJC8U5TB12gRQ8vYeb4dIfbCCaIJESn/oHZZxDSw0NxqCVqq7lf7UgJ/MV6qj9qlMY5FFyMqCW68XC3ySwghJFvMoOvhvv2IwCT1GYE3V/t2pNGxEU6haPqjRBdN5WBg17fVVkrQZxuFDyRQ2xBf/4mZPmYQXid71s+jeCKEkAZEBQh6P6yXTMkRePn/lm8nGp1a4QjC7jkspPuzFNL7twTh7D+JcMz7EgguBHaMK5oAuvYQ5wgCcJHYhdUnhBBSf2Ah9UG+nYjBMBV9E3070eh0JZxC0RSne64r0Mw4t+x/BBS7VYIxULghrlT7R9n3eCtIcz0aiidCCGlQzBpwNuEH8sosE7CTeKJaV12SMU02IBbGNLXn1E6VIKhlOVhFGuOhThE3XWphhG1226UPhLDPWZcusA1WF5V31A7xnbmYuCqTeoP1IX+0SLGvSRie4Ne+HWlUOgunC9UuUjtWko9p6gpEE0dAvdmyt2gC6MrDGneIAeVq+mW5eMJNeIsELV8kGXioFvmhVIl2R+dFWRVVOLX7dqAgsD7kiFKpdIxupljsCsE7TILZ2FnRIvbLiFxuwhMwPIAHOgsnCCXcLM+KO9EEwlACH3axD+I1fSrquAMwbus0tRESdCFSOCUHPxQ1p6prpS/SWoPtjs6Lsjq21k45Lat23w4UBNaHfIHB1TaTomaoKHnZYr/U0HsAoXYQK9FGaIfhCc7J0kcS0HmME6JyP6L2pDTAIromj0+aPDMieTq0+3agQHl6w3fGEtDu24GC0O7bAeYpQIXJKAlekmuBBWQTL60SFRVqWyTa2KsJmqcTs/aT7K28z1frK5W7z+qVHzZgnl1S9PEPlWgv2HmzYKNvBwoC60MOUIGBJcJsg102e1ybcZ4EXYlDLPdHnoZ68rVhqTSrLi8CAl103Yy5Ji95rgce9+2AA5Y5Om+Ry8pVmdQbRb7G1SjitcfYXZto98tUND3qy0kj2JojHDJEReEFvvxtVGrFcfIJBpDjLeFM344Qe7TiPyFBU3e9sMzVAEw9L4LBFrGslvleM6sosD74R4XFARIMvK4FJiVd7ttf81xoi3DILJNHkhF5Fk542FyvNl/tdN/OkEggPtYHvp1IAXSzTHacRtHKKosyqTeKdo2rUdRrP0PsZq9iltqLvp01QMC9Z7nvYVLsuFSFw5dw6mXS/rjGfrh5MNPtTrWxnnwlETEPn+PV1vj2JQHojjhe87LZZSIFK6tMyqTeKNg1rkYhr32pVDpS7Lq+IFJm+PY3xJRzS4RDmk1eSQbYLvKbJuh++73aVrVnauyLWW/hgr53qZ2lttSDzyQiWvFf0c1QrczH6Xa0BOMLmiQI3oatj3uvEojT0i7BDDds0dK5xPjfqGXlvUzqjRxe42rU27XHlH2bsp1pZrXlCSx1hoHiNUOWyJ7wBN/37TRJH4gmBLZEs/XJEY7DAHFEMUelZssTIYQQQuqeuKIphOKJEEIIIQ1BUtEUQvFECCGEkLomLdEUUi6exvjOHCGEEEJIWqQtmkIgnhAS/321Pr4zSQghhBCSFFeiKaS3BLPuRvnOKCGEEEJIUuaKO9EEekggnNhdRwghhJBC82UJ1ppzKWoonAghhBCSKa4ihw+UYBzSct8ZJIQQQghJC1fCaZLaO2oTHfp+XgZpEEIIIYQ4pa8ES6lgtWaXazPh3AeatPr6zjQhhBBC6h8XLU5vq2Fdo9Vqtzj0HedeZdJ622E6hBBCCCEd/B8r9kLFREQWUAAAAABJRU5ErkJggg==" />
+</td><td style='vertical-align:top;text-align:right'>
+<a class='extLink' href='http://www.yoctopuce.com'>www.yoctopuce.com</a>
+</td>
+</tr>
+<tr><td id='langdt'></td></TR>
+</table>
+</div>
+<div id="MarginLayer"></div>
+<div id="FunctionsLayer"><div id="FunctionsLayerInner"></div></div>
+<div id="FooterLayer"><form name='yoctoForm'>
+<table width=100% style='margin-top:3px;'>
+<tr><td>
+<img alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAANwAAADcBYx2BhQAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAGgSURBVCiRjdC9a1NhFAbw8973ed7bewm859KKc4oFwUUwk0uMkICC4gfYIjSDQhaH+ge4BOFCwEUpQsCtEEkHURCHigQjcQo4FFyKHYWsflGaq9elStVr9Yzn4cf5MHmeS1G12+1gNBrdJLkMYIHkNoD+ZDLpDAaDzBRBY4yp1+tPSZ4los0QhzYEH0+RcgLAq3K5fLoQNhqNGwBWY3d85fBM+vxHf8fdPWnc5gOSt4KiNUkukuHb/UhEZGZ35TVs/MZau1gIrbXzLph7UZTBzL4EMF8IAWwZfjrz9duu+T0L3Ic6gK2/rboGmCM77vbF/Rizqw1SjgFY++M5lUqF4/F42mw2HwJYAsJ3sHMb5JcaKEcBPIvj+NwvsFqtni+VSj3vfb/X611vtVrXACxbaxecc9sk+51O536e5/lPWKvVLkRRtJ4kCVX1c5ZlSbfbnRadIiIS7E26FEXRuqpSVafe+6sHIREROxwOL8dx3FdVJkky9d5fSdP0yUFIRCQIw/CeqkJVM+/9Upqmj/+FREQCVb2jqu/30KP/QSIi3wFqcn4o9hAuDAAAAABJRU5ErkJggg==" />
+<input name='search' onkeyup='initSearch()'></form>
+</td><td id ='oosyntax' ></td><td id='version'>
+</td>
+</table>
+
+</div>
+<div id="separatorLayer" style='top:80px;left:250px'></div>
+
+<SCRIPT type="text/JavaScript" >
+<!--
+document.getElementById('langdt').innerHTML = Language;
+document.getElementById('version').innerHTML = Version;
+
+computeWinWH();
+
+onResize(function(){SetWidth("BannerLayer",WinW)});
+onResize(resizeMargin);
+onResize(function(){SetWidth("FooterLayer",WinW);SetTop("FooterLayer",WinH-30);});
+onResize(resizeSeparator);
+EnableDrag(document.getElementById("separatorLayer"),marginMove,marginMove);
+if (UseShortcuts!=null)
+ { var td = document.getElementById("oosyntax");
+ var widget ='<input type="checkbox" id="OOcheckbox" '+ (UseShortcuts?'checked':'') + ' onclick="OOcheckboxChange(this);"> ' + AbbrevLabel;
+ td.innerHTML = widget;
+ td.title =AbbrevHint;
+ td.alt =AbbrevHint;
+
+
+ }
+doc = sortObject(doc);
+ShowFunctions();
+Show(doc["YAPI"]?"YAPI":"Module","");
+
+
+window.onresize = windowResized;
+-->
+</script>
+
+</BODY>
+
+
+</HEAD>
+
diff --git a/yoctoLib.python.26380/Documentation/yoctolib-python-FR.pdf b/yoctoLib.python.26380/Documentation/yoctolib-python-FR.pdf
new file mode 100644
index 0000000..d07636c
Binary files /dev/null and b/yoctoLib.python.26380/Documentation/yoctolib-python-FR.pdf differ
diff --git a/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-0-10V-Rx/helloworld.py b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-0-10V-Rx/helloworld.py
new file mode 100644
index 0000000..4c36541
--- /dev/null
+++ b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-0-10V-Rx/helloworld.py
@@ -0,0 +1,57 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+import os, sys
+
+# add ../../Sources to the PYTHONPATH
+sys.path.append(os.path.join("..", "..", "Sources"))
+from yocto_api import *
+from yocto_genericsensor import *
+
+
+def usage():
+ scriptname = os.path.basename(sys.argv[0])
+ print("Usage:")
+ print(scriptname + ' <serial_number>')
+ print(scriptname + ' <logical_name>')
+ print(scriptname + ' any ')
+ sys.exit()
+
+
+def die(msg):
+ sys.exit(msg + ' (check USB cable)')
+
+
+errmsg = YRefParam()
+
+if len(sys.argv) < 2: usage()
+
+target = sys.argv[1]
+
+# Setup the API to use local USB devices
+if YAPI.RegisterHub("usb", errmsg) != YAPI.SUCCESS:
+ sys.exit("init error" + errmsg.value)
+
+if target == 'any':
+ # retreive any genericSensor sensor
+ sensor = YGenericSensor.FirstGenericSensor()
+ if sensor is None:
+ die('No module connected')
+else:
+ sensor = YGenericSensor.FindGenericSensor(target + '.genericSensor1')
+
+if not (sensor.isOnline()): die('device not connected')
+
+# retreive module serial
+serial = sensor.get_module().get_serialNumber()
+
+# retreive both channels
+channel1 = YGenericSensor.FindGenericSensor(serial + '.genericSensor1')
+channel2 = YGenericSensor.FindGenericSensor(serial + '.genericSensor2')
+
+while channel1.isOnline() and channel2.isOnline():
+ print("channel 1: %f %s" % (channel1.get_currentValue(), channel1.get_unit()))
+ print("channel 2: %f %s" % (channel2.get_currentValue(), channel2.get_unit()))
+ print(" (Ctrl-C to stop)")
+ YAPI.Sleep(1000)
+
+YAPI.FreeAPI()
diff --git a/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-3D/helloworld.py b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-3D/helloworld.py
new file mode 100644
index 0000000..a0018f6
--- /dev/null
+++ b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-3D/helloworld.py
@@ -0,0 +1,74 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+import os, sys
+
+# add ../../Sources to the PYTHONPATH
+sys.path.append(os.path.join("..", "..", "Sources"))
+from yocto_api import *
+from yocto_tilt import *
+from yocto_compass import *
+from yocto_gyro import *
+from yocto_accelerometer import *
+
+
+def usage():
+ scriptname = os.path.basename(sys.argv[0])
+ print("Usage:")
+ print(scriptname + ' <serial_number>')
+ print(scriptname + ' <logical_name>')
+ print(scriptname + ' any ')
+ sys.exit()
+
+
+def die(msg):
+ sys.exit(msg + ' (check USB cable)')
+
+
+errmsg = YRefParam()
+
+if len(sys.argv) < 2:
+ usage()
+
+target = sys.argv[1]
+
+# Setup the API to use local USB devices
+if YAPI.RegisterHub("usb", errmsg) != YAPI.SUCCESS:
+ sys.exit("init error" + errmsg.value)
+
+if target == 'any':
+ # retreive any tilt sensor
+ anytilt = YTilt.FirstTilt()
+ if anytilt is None:
+ die('No module connected (check USB cable)')
+ m = anytilt.get_module()
+ target = m.get_serialNumber()
+else:
+ anytilt = YTilt.FindTilt(target + ".tilt1")
+ if not (anytilt.isOnline()):
+ die('Module not connected (check identification and USB cable)')
+
+serial = anytilt.get_module().get_serialNumber()
+tilt1 = YTilt.FindTilt(serial + ".tilt1")
+tilt2 = YTilt.FindTilt(serial + ".tilt2")
+compass = YCompass.FindCompass(serial + ".compass")
+accelerometer = YAccelerometer.FindAccelerometer(serial + ".accelerometer")
+gyro = YGyro.FindGyro(serial + ".gyro")
+
+count = 0
+
+if not (tilt1.isOnline()):
+ die("Module not connected (check identification and USB cable)")
+
+while tilt1.isOnline():
+
+ if count % 10 == 0:
+ print("tilt1 tilt2 compass acc gyro")
+
+ print("%-7.1f " % tilt1.get_currentValue() + \
+ "%-7.1f " % tilt2.get_currentValue() + \
+ "%-7.1f " % compass.get_currentValue() + \
+ "%-7.1f " % accelerometer.get_currentValue() + \
+ "%-7.1f" % gyro.get_currentValue())
+ count += 1
+ YAPI.Sleep(250, errmsg)
+YAPI.FreeAPI()
diff --git a/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-4-20mA-Rx/helloworld.py b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-4-20mA-Rx/helloworld.py
new file mode 100644
index 0000000..7ea94bf
--- /dev/null
+++ b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-4-20mA-Rx/helloworld.py
@@ -0,0 +1,57 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+import os, sys
+
+# add ../../Sources to the PYTHONPATH
+sys.path.append(os.path.join("..", "..", "Sources"))
+from yocto_api import *
+from yocto_genericsensor import *
+
+
+def usage():
+ scriptname = os.path.basename(sys.argv[0])
+ print("Usage:")
+ print(scriptname + ' <serial_number>')
+ print(scriptname + ' <logical_name>')
+ print(scriptname + ' any ')
+ sys.exit()
+
+
+def die(msg):
+ sys.exit(msg + ' (check USB cable)')
+
+
+errmsg = YRefParam()
+
+if len(sys.argv) < 2:
+ usage()
+
+target = sys.argv[1]
+
+# Setup the API to use local USB devices
+if YAPI.RegisterHub("usb", errmsg) != YAPI.SUCCESS:
+ sys.exit("init error" + errmsg.value)
+
+if target == 'any':
+ # retreive any genericSensor sensor
+ sensor = YGenericSensor.FirstGenericSensor()
+ if sensor is None:
+ die('No module connected')
+else:
+ sensor = YGenericSensor.FindGenericSensor(target + '.genericSensor1')
+
+if not (sensor.isOnline()): die('device not connected')
+
+# retreive module serial
+serial = sensor.get_module().get_serialNumber()
+
+# retreive both channels
+channel1 = YGenericSensor.FindGenericSensor(serial + '.genericSensor1')
+channel2 = YGenericSensor.FindGenericSensor(serial + '.genericSensor2')
+
+while channel1.isOnline() and channel1.isOnline():
+ print("channel 1: %f %s" % (channel1.get_currentValue(), channel1.get_unit()))
+ print("channel 2: %f %s" % (channel2.get_currentValue(), channel2.get_unit()))
+ print(" (Ctrl-C to stop)")
+ YAPI.Sleep(1000)
+YAPI.FreeAPI()
diff --git a/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-4-20mA-Tx/helloworld.py b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-4-20mA-Tx/helloworld.py
new file mode 100644
index 0000000..488749d
--- /dev/null
+++ b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-4-20mA-Tx/helloworld.py
@@ -0,0 +1,57 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+import os, sys
+
+# add ../../Sources to the PYTHONPATH
+sys.path.append(os.path.join("..", "..", "Sources"))
+from yocto_api import *
+from yocto_currentloopoutput import *
+
+
+def usage():
+ scriptname = os.path.basename(sys.argv[0])
+ print("Usage:")
+ print(scriptname + ' <serial_number> value')
+ print(scriptname + ' <logical_name> value')
+ print(scriptname + ' any value ')
+ sys.exit()
+
+
+def die(msg):
+ sys.exit(msg + ' (check USB cable)')
+
+
+errmsg = YRefParam()
+
+if len(sys.argv) < 3:
+ usage()
+
+target = sys.argv[1]
+value = float(sys.argv[2])
+
+# Setup the API to use local USB devices
+if YAPI.RegisterHub("usb", errmsg) != YAPI.SUCCESS:
+ sys.exit("init error" + errmsg.value)
+
+if target == 'any':
+ # retreive any currentLoopOutput
+ loop = YCurrentLoopOutput.FirstCurrentLoopOutput()
+ if loop is None:
+ die('No module connected')
+else:
+ loop = YCurrentLoopOutput.FindCurrentLoopOutput(target + '.currentLoopOutput')
+
+# we need to retreive the second loop from the device
+if not loop.isOnline(): die('device not connected')
+
+loop.set_current(value)
+
+loopPower = loop.get_loopPower()
+
+if loopPower == YCurrentLoopOutput.LOOPPOWER_NOPWR:
+ print("Current loop not powered")
+elif loopPower == YCurrentLoopOutput.LOOPPOWER_NOPWR:
+ print("Insufficient voltage on current loop")
+else:
+ sys.exit("current loop set to " + str(value) + " mA")
+YAPI.FreeAPI()
diff --git a/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-Altimeter/helloworld.py b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-Altimeter/helloworld.py
new file mode 100644
index 0000000..442d999
--- /dev/null
+++ b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-Altimeter/helloworld.py
@@ -0,0 +1,62 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+import os, sys
+
+# add ../../Sources to the PYTHONPATH
+sys.path.append(os.path.join("..", "..", "Sources"))
+from yocto_api import *
+from yocto_altitude import *
+from yocto_temperature import *
+from yocto_pressure import *
+
+
+def usage():
+ scriptname = os.path.basename(sys.argv[0])
+ print("Usage:")
+ print(scriptname + ' <serial_number>')
+ print(scriptname + ' <logical_name>')
+ print(scriptname + ' any ')
+ sys.exit()
+
+
+def die(msg):
+ sys.exit(msg + ' (check USB cable)')
+
+
+errmsg = YRefParam()
+
+if len(sys.argv) < 2:
+ usage()
+
+target = sys.argv[1]
+
+# Setup the API to use local USB devices
+if YAPI.RegisterHub("usb", errmsg) != YAPI.SUCCESS:
+ sys.exit("init error" + errmsg.value)
+
+if target == 'any':
+ # retreive any altitude sensor
+ sensor = YAltitude.FirstAltitude()
+ if sensor is None:
+ die('No module connected')
+ m = sensor.get_module()
+ target = m.get_serialNumber()
+
+else:
+ m = YModule.FindModule(target)
+
+if not m.isOnline():
+ die('device not connected')
+
+altSensor = YAltitude.FindAltitude(target + '.altitude')
+pressSensor = YPressure.FindPressure(target + '.pressure')
+tempSensor = YTemperature.FindTemperature(target + '.temperature')
+
+while altSensor.isOnline():
+ print("%4.1f" % altSensor.get_currentValue() + "m (QNH=" \
+ + "%4.1f" % altSensor.get_qnh() + "hPa) " \
+ + "%4.1f" % pressSensor.get_currentValue() + "hPa " \
+ + "%2.0f" % tempSensor.get_currentValue() + "deg C " \
+ + "(Ctrl-c to stop) ")
+ YAPI.Sleep(1000)
+YAPI.FreeAPI()
\ No newline at end of file
diff --git a/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-Amp/helloworld.py b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-Amp/helloworld.py
new file mode 100644
index 0000000..5be2f8f
--- /dev/null
+++ b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-Amp/helloworld.py
@@ -0,0 +1,56 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+import os, sys
+
+# add ../../Sources to the PYTHONPATH
+sys.path.append(os.path.join("..", "..", "Sources"))
+from yocto_api import *
+from yocto_current import *
+
+
+def usage():
+ scriptname = os.path.basename(sys.argv[0])
+ print("Usage:")
+ print(scriptname + ' <serial_number>')
+ print(scriptname + ' <logical_name>')
+ print(scriptname + ' any ')
+ sys.exit()
+
+
+def die(msg):
+ sys.exit(msg + ' (check USB cable)')
+
+
+errmsg = YRefParam()
+
+if len(sys.argv) < 2:
+ usage()
+
+target = sys.argv[1]
+
+# Setup the API to use local USB devices
+if YAPI.RegisterHub("usb", errmsg) != YAPI.SUCCESS:
+ sys.exit("init error" + errmsg.value)
+
+if target == 'any':
+ # retreive any voltage sensor (can be AC or DC)
+ sensor = YCurrent.FirstCurrent()
+ if sensor is None:
+ die('No module connected')
+else:
+ sensor = YCurrent.FindCurrent(target + '.current1')
+
+# we need to retreive both DC and AC voltage from the device.
+if not sensor.isOnline():
+ die('Module not connected')
+
+m = sensor.get_module()
+sensorDC = YCurrent.FindCurrent(m.get_serialNumber() + '.current1')
+sensorAC = YCurrent.FindCurrent(m.get_serialNumber() + '.current2')
+
+while sensor.isOnline():
+ print('DC: ' + str(sensorDC.get_currentValue()) + ' mA ' + \
+ 'AC: ' + str(sensorAC.get_currentValue()) + ' mA ')
+ print(' (press Ctrl-C to exit)')
+ YAPI.Sleep(1000, errmsg)
+YAPI.FreeAPI()
diff --git a/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-Buzzer/helloworld.py b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-Buzzer/helloworld.py
new file mode 100644
index 0000000..5dc9b1d
--- /dev/null
+++ b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-Buzzer/helloworld.py
@@ -0,0 +1,73 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+import os, sys
+
+# add ../../Sources to the PYTHONPATH
+sys.path.append(os.path.join("..", "..", "Sources"))
+from yocto_api import *
+from yocto_buzzer import *
+from yocto_led import *
+from yocto_anbutton import *
+
+
+def usage():
+ scriptname = os.path.basename(sys.argv[0])
+ print("Usage:")
+ print(scriptname + ' <serial_number> ')
+ print(scriptname + ' <logical_name> ')
+ print(scriptname + ' any ')
+ print('Example:')
+ print(scriptname + ' any ')
+ sys.exit()
+
+
+def die(msg):
+ sys.exit(msg + ' (check USB cable)')
+
+
+if len(sys.argv) < 2:
+ usage()
+
+target = sys.argv[1].upper()
+
+# Setup the API to use local USB devices
+errmsg = YRefParam()
+if YAPI.RegisterHub("usb", errmsg) != YAPI.SUCCESS:
+ sys.exit("init error" + errmsg.value)
+
+if target == 'ANY':
+ # retreive any SegmentedDisplay
+ buz = YBuzzer.FirstBuzzer()
+ if buz is None:
+ die('no device connected')
+else:
+ buz = YBuzzer.FindBuzzer(target)
+
+if not (buz.isOnline()):
+ die('device not connected')
+serial = buz.get_module().get_serialNumber()
+led1 = YLed.FindLed(serial + ".led1")
+led2 = YLed.FindLed(serial + ".led2")
+button1 = YAnButton.FindAnButton(serial + ".anButton1")
+button2 = YAnButton.FindAnButton(serial + ".anButton2")
+print("press any of the test buttons")
+while button1.isOnline():
+ b1 = button1.get_isPressed()
+ b2 = button2.get_isPressed()
+ if b1 or b2:
+ if b1:
+ led = led1
+ freq = 1500
+ else:
+ led = led2
+ freq = 750
+ led.set_power(YLed.POWER_ON)
+ led.set_luminosity(100)
+ led.set_blinking(YLed.BLINKING_PANIC)
+ for i in range(5): # this can be done using sequence as well
+ buz.set_frequency(freq)
+ buz.freqMove(2 * freq, 250)
+ YAPI.Sleep(250, errmsg)
+ buz.set_frequency(0)
+ led.set_power(YLed.POWER_OFF)
+YAPI.FreeAPI()
diff --git a/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-CO2/helloworld.py b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-CO2/helloworld.py
new file mode 100644
index 0000000..21ce5eb
--- /dev/null
+++ b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-CO2/helloworld.py
@@ -0,0 +1,51 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+import os, sys
+
+# add ../../Sources to the PYTHONPATH
+sys.path.append(os.path.join("..", "..", "Sources"))
+from yocto_api import *
+from yocto_carbondioxide import *
+
+
+def usage():
+ scriptname = os.path.basename(sys.argv[0])
+ print("Usage:")
+ print(scriptname + ' <serial_number>')
+ print(scriptname + ' <logical_name>')
+ print(scriptname + ' any ')
+ sys.exit()
+
+
+def die(msg):
+ sys.exit(msg + ' (check USB cable)')
+
+
+errmsg = YRefParam()
+
+if len(sys.argv) < 2:
+ usage()
+
+target = sys.argv[1]
+
+# Setup the API to use local USB devices
+if YAPI.RegisterHub("usb", errmsg) != YAPI.SUCCESS:
+ sys.exit("init error" + errmsg.value)
+
+if target == 'any':
+ # retreive any carbonDioxide sensor
+ sensor = YCarbonDioxide.FirstCarbonDioxide()
+ if sensor is None:
+ die('No module connected')
+ print("Using: " + sensor.get_module().get_serialNumber())
+else:
+ sensor = YCarbonDioxide.FindCarbonDioxide(target + '.carbonDioxide')
+
+if not (sensor.isOnline()):
+ die('device not connected')
+
+while sensor.isOnline():
+ print("CO2 : " + "%2.1f" % sensor.get_currentValue() + "ppm (Ctrl-C to stop)")
+ YAPI.Sleep(1000)
+
+YAPI.FreeAPI()
diff --git a/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-Color/helloworld.py b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-Color/helloworld.py
new file mode 100644
index 0000000..10e48f8
--- /dev/null
+++ b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-Color/helloworld.py
@@ -0,0 +1,79 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+import os, sys
+# add ../../Sources to the PYTHONPATH
+sys.path.append(os.path.join("..", "..", "Sources"))
+
+from yocto_api import *
+from yocto_colorled import *
+
+
+def usage():
+ scriptname = os.path.basename(sys.argv[0])
+ print("Usage:")
+ print(scriptname + ' <serial_number>')
+ print(scriptname + ' <logical_name>')
+ print(scriptname + ' any ')
+ sys.exit()
+
+
+def die(msg):
+ sys.exit(msg + ' (check USB cable)')
+
+
+def setcolor(led1, led2, color):
+ if led1.isOnline():
+ led1.set_rgbColor(color) # immediate switch
+ led2.rgbMove(color, 1000) # smooth transition
+ else:
+ print('Module not connected (check identification and USB cable)')
+
+
+errmsg = YRefParam()
+
+if len(sys.argv) < 2:
+ usage()
+
+target = sys.argv[1]
+
+# Setup the API to use local USB devices
+if YAPI.RegisterHub("usb", errmsg) != YAPI.SUCCESS:
+ sys.exit("init error" + errmsg.value)
+
+if target == 'any':
+ # retreive any RGB led
+ led = YColorLed.FirstColorLed()
+ if led is None:
+ die('No module connected')
+else:
+ led = YColorLed.FindColorLed(target + '.colorLed1')
+
+# we need to retreive the second led from the device
+if led.isOnline():
+ m = led.get_module()
+ led1 = YColorLed.FindColorLed(m.get_serialNumber() + '.colorLed1')
+ led2 = YColorLed.FindColorLed(m.get_serialNumber() + '.colorLed2')
+else:
+ die('device not connected')
+
+print('r: set to red')
+print('g: set to green')
+print('b: set to blue')
+print('x: exit')
+
+try:
+ input = raw_input # python 2.x fix
+except:
+ pass
+
+c = input("command:")
+
+while c != 'x':
+ if c == 'r':
+ setcolor(led1, led2, 0xFF0000)
+ elif c == 'g':
+ setcolor(led1, led2, 0x00FF00)
+ elif c == 'b':
+ setcolor(led1, led2, 0x0000FF)
+ c = input("command:")
+YAPI.FreeAPI()
diff --git a/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-Demo/helloworld.py b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-Demo/helloworld.py
new file mode 100644
index 0000000..18c1d79
--- /dev/null
+++ b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-Demo/helloworld.py
@@ -0,0 +1,73 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+import os, sys
+
+# add ../../Sources to the PYTHONPATH
+sys.path.append(os.path.join("..", "..", "Sources"))
+from yocto_api import *
+from yocto_led import *
+
+
+def usage():
+ scriptname = os.path.basename(sys.argv[0])
+ print("Usage:")
+ print(scriptname + ' <serial_number>')
+ print(scriptname + ' <logical_name>')
+ print(scriptname + ' any ')
+ sys.exit()
+
+
+def die(msg):
+ sys.exit(msg + ' (check USB cable)')
+
+
+def setLedState(led, state):
+ if led.isOnline():
+ if state:
+ led.set_power(YLed.POWER_ON)
+ else:
+ led.set_power(YLed.POWER_OFF)
+ else:
+ print('Module not connected (check identification and USB cable)')
+
+
+errmsg = YRefParam()
+
+if len(sys.argv) < 2:
+ usage()
+
+target = sys.argv[1]
+
+# Setup the API to use local USB devices
+if YAPI.RegisterHub("usb", errmsg) != YAPI.SUCCESS:
+ sys.exit("init error" + errmsg.value)
+
+if target == 'any':
+ # retreive any RGB led
+ led = YLed.FirstLed()
+ if led is None:
+ die('No module connected')
+else:
+ led = YLed.FindLed(target + '.led')
+
+if not (led.isOnline()):
+ die('device not connected')
+
+print('0: turn test led OFF')
+print('1: turn test led ON')
+print('x: exit')
+
+try:
+ input = raw_input # python 2.x fix
+except:
+ pass
+
+c = input("command:")
+
+while c != 'x':
+ if c == '0':
+ setLedState(led, False)
+ elif c == '1':
+ setLedState(led, True)
+ c = input("command:")
+YAPI.FreeAPI()
diff --git a/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-Display/helloworld.py b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-Display/helloworld.py
new file mode 100644
index 0000000..09e471b
--- /dev/null
+++ b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-Display/helloworld.py
@@ -0,0 +1,94 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+import os, sys
+# add ../../Sources to the PYTHONPATH
+sys.path.append(os.path.join("..", "..", "Sources"))
+
+from yocto_api import *
+from yocto_display import *
+
+
+def usage():
+ scriptname = os.path.basename(sys.argv[0])
+ print("Usage:")
+ print(scriptname + ' <serial_number>')
+ print(scriptname + ' <logical_name>')
+ print(scriptname + ' any ')
+ sys.exit()
+
+
+def die(msg):
+ sys.exit(msg + ' (check USB cable)')
+
+
+errmsg = YRefParam()
+
+if len(sys.argv) < 2:
+ usage()
+
+target = sys.argv[1]
+
+# Setup the API to use local USB devices
+if YAPI.RegisterHub("usb", errmsg) != YAPI.SUCCESS:
+ sys.exit("init error" + errmsg.value)
+
+if target == 'any':
+ # retreive any RGB led
+ disp = YDisplay.FirstDisplay()
+ if disp is None:
+ die('No module connected')
+else:
+ disp = YDisplay.FindDisplay(target + ".display")
+
+if not disp.isOnline():
+ die("Module not connected ")
+
+# display clean up
+disp.resetAll()
+
+# retreive the display size
+w = disp.get_displayWidth()
+h = disp.get_displayHeight()
+
+# retreive the first layer
+l0 = disp.get_displayLayer(0)
+l0.clear()
+
+# display a text in the middle of the screen
+l0.drawText(w / 2, h / 2, YDisplayLayer.ALIGN.CENTER, "Hello world!")
+
+# visualize each corner
+l0.moveTo(0, 5)
+l0.lineTo(0, 0)
+l0.lineTo(5, 0)
+l0.moveTo(0, h - 6)
+l0.lineTo(0, h - 1)
+l0.lineTo(5, h - 1)
+l0.moveTo(w - 1, h - 6)
+l0.lineTo(w - 1, h - 1)
+l0.lineTo(w - 6, h - 1)
+l0.moveTo(w - 1, 5)
+l0.lineTo(w - 1, 0)
+l0.lineTo(w - 6, 0)
+
+# draw a circle in the top left corner of layer 1
+l1 = disp.get_displayLayer(1)
+l1.clear()
+l1.drawCircle(h / 8, h / 8, h / 8)
+
+# and animate the layer
+print("Use Ctrl-C to stop")
+x = 0
+y = 0
+vx = 1
+vy = 1
+while disp.isOnline():
+ x += vx
+ y += vy
+ if x < 0 or x > w - (h / 4):
+ vx = -vx
+ if y < 0 or y > h - (h / 4):
+ vy = -vy
+ l1.setLayerPosition(x, y, 0)
+ YAPI.Sleep(5, errmsg)
+YAPI.FreeAPI()
diff --git a/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-GPS/helloworld.py b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-GPS/helloworld.py
new file mode 100644
index 0000000..f40b212
--- /dev/null
+++ b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-GPS/helloworld.py
@@ -0,0 +1,51 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+import os, sys
+
+# add ../../Sources to the PYTHONPATH
+sys.path.append(os.path.join("..", "..", "Sources"))
+sys.path.append(os.path.join("..", "..", "Sources"))
+from yocto_api import *
+from yocto_gps import *
+
+
+def usage():
+ scriptname = os.path.basename(sys.argv[0])
+ print("Usage:")
+ print(scriptname + ' <serial_number>')
+ print(scriptname + ' <logical_name>')
+ print(scriptname + ' any ')
+ sys.exit()
+
+
+def die(msg):
+ sys.exit(msg + ' (check USB cable)')
+
+
+if len(sys.argv) < 2:
+ usage()
+target = sys.argv[1]
+
+# Setup the API to use local USB devices
+errmsg = YRefParam()
+if YAPI.RegisterHub("usb", errmsg) != YAPI.SUCCESS:
+ sys.exit("init error" + errmsg.value)
+
+if target == 'any':
+ # retreive any gps
+ gps = YGps.FirstGps()
+ if gps is None:
+ die('No module connected')
+else:
+ gps = YGps.FindGps(target + '.gps')
+
+if not (gps.isOnline()):
+ die('device not connected')
+
+while gps.isOnline():
+ if gps.get_isFixed() != YGps.ISFIXED_TRUE:
+ print("Fixing...")
+ else:
+ print(gps.get_latitude() + " " + gps.get_longitude())
+ YAPI.Sleep(1000)
+YAPI.FreeAPI()
diff --git a/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-Knob/helloworld.py b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-Knob/helloworld.py
new file mode 100644
index 0000000..61f8a0e
--- /dev/null
+++ b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-Knob/helloworld.py
@@ -0,0 +1,71 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+import os, sys
+
+# add ../../Sources to the PYTHONPATH
+sys.path.append(os.path.join("..", "..", "Sources"))
+from yocto_api import *
+from yocto_anbutton import *
+
+
+def usage():
+ scriptname = os.path.basename(sys.argv[0])
+ print("Usage:")
+ print(scriptname + ' <serial_number>')
+ print(scriptname + ' <logical_name>')
+ print(scriptname + ' any ')
+ sys.exit()
+
+
+def die(msg):
+ sys.exit(msg + ' (check USB cable)')
+
+
+errmsg = YRefParam()
+
+if len(sys.argv) < 2:
+ usage()
+
+target = sys.argv[1]
+
+# Setup the API to use local USB devices
+if YAPI.RegisterHub("usb", errmsg) != YAPI.SUCCESS:
+ sys.exit("init error" + errmsg.value)
+
+if target == 'any':
+ # retreive any button
+ channel = YAnButton.FirstAnButton()
+ if channel is None:
+ die('No module connected')
+else:
+ channel = YAnButton.FindAnButton(target + '.anButton1')
+
+if not (channel.isOnline()):
+ die('device not connected')
+else:
+ m = channel.get_module()
+ channel1 = YAnButton.FindAnButton(m.get_serialNumber() + '.anButton1')
+ channel5 = YAnButton.FindAnButton(m.get_serialNumber() + '.anButton5')
+
+done = False
+while not done:
+ line = ""
+ if channel1.get_isPressed() == YAnButton.ISPRESSED_TRUE:
+ line = "Button 1 pressed "
+ else:
+ line = "Button 1 not pressed "
+ line += ' - analog value: ' + str(channel1.get_calibratedValue())
+ print(line)
+
+ if channel5.get_isPressed() == YAnButton.ISPRESSED_TRUE:
+ line = "Button 5 pressed "
+ else:
+ line = "Button 5 not pressed "
+ line += ' - analog value: ' + str(channel5.get_calibratedValue())
+ print(line)
+
+ print('(press both buttons simultaneously to exit)')
+ done = (channel1.get_isPressed() == YAnButton.ISPRESSED_TRUE) and \
+ (channel5.get_isPressed() == YAnButton.ISPRESSED_TRUE)
+ YAPI.Sleep(1000)
+YAPI.FreeAPI()
\ No newline at end of file
diff --git a/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-LatchedRelay/helloworld.py b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-LatchedRelay/helloworld.py
new file mode 100644
index 0000000..db27b1a
--- /dev/null
+++ b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-LatchedRelay/helloworld.py
@@ -0,0 +1,52 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+import os, sys
+
+# add ../../Sources to the PYTHONPATH
+sys.path.append(os.path.join("..", "..", "Sources"))
+from yocto_api import *
+from yocto_relay import *
+
+
+def usage():
+ scriptname = os.path.basename(sys.argv[0])
+ print("Usage:")
+ print(scriptname + ' <serial_number> [ A | B ]')
+ print(scriptname + ' <logical_name> [ A | B ]')
+ print(scriptname + ' any [ A | B ]')
+ print('Example:')
+ print(scriptname + ' any B')
+ sys.exit()
+
+
+def die(msg):
+ sys.exit(msg + ' (check USB cable)')
+
+
+if len(sys.argv) < 2:
+ usage()
+
+target = sys.argv[1].upper()
+state = sys.argv[2].upper()
+
+# Setup the API to use local USB devices
+errmsg = YRefParam()
+if YAPI.RegisterHub("usb", errmsg) != YAPI.SUCCESS:
+ sys.exit("init error" + errmsg.value)
+
+if target == 'ANY':
+ # retreive any Relay
+ relay = YRelay.FirstRelay()
+ if relay is None:
+ die('no device connected')
+else:
+ relay = YRelay.FindRelay(target + ".relay1")
+
+if not (relay.isOnline()):
+ die('device not connected')
+
+if state == 'A':
+ relay.set_state(YRelay.STATE_A)
+else:
+ relay.set_state(YRelay.STATE_B)
+YAPI.FreeAPI()
diff --git a/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-Light/helloworld.py b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-Light/helloworld.py
new file mode 100644
index 0000000..715cbe0
--- /dev/null
+++ b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-Light/helloworld.py
@@ -0,0 +1,49 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+import os, sys
+
+# add ../../Sources to the PYTHONPATH
+sys.path.append(os.path.join("..", "..", "Sources"))
+from yocto_api import *
+from yocto_lightsensor import *
+
+
+def usage():
+ scriptname = os.path.basename(sys.argv[0])
+ print("Usage:")
+ print(scriptname + ' <serial_number>')
+ print(scriptname + ' <logical_name>')
+ print(scriptname + ' any ')
+ sys.exit()
+
+
+def die(msg):
+ sys.exit(msg + ' (check USB cable)')
+
+
+errmsg = YRefParam()
+
+if len(sys.argv) < 2:
+ usage()
+
+target = sys.argv[1]
+
+# Setup the API to use local USB devices
+if YAPI.RegisterHub("usb", errmsg) != YAPI.SUCCESS:
+ sys.exit("init error" + errmsg.value)
+
+if target == 'any':
+ # retreive any Light sensor
+ sensor = YLightSensor.FirstLightSensor()
+ if sensor is None:
+ die('No module connected')
+else:
+ sensor = YLightSensor.FindLightSensor(target + '.lightSensor')
+
+if not (sensor.isOnline()):
+ die('device not connected')
+
+while sensor.isOnline():
+ print("Light : " + str(int(sensor.get_currentValue())) + " lx (Ctrl-C to stop)")
+ YAPI.Sleep(1000)
+YAPI.FreeAPI()
diff --git a/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-Maxi-IO/helloworld.py b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-Maxi-IO/helloworld.py
new file mode 100644
index 0000000..47d0e9d
--- /dev/null
+++ b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-Maxi-IO/helloworld.py
@@ -0,0 +1,75 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+import os, sys
+
+# add ../../Sources to the PYTHONPATH
+sys.path.append(os.path.join("..", "..", "Sources"))
+from yocto_api import *
+from yocto_digitalio import *
+
+
+def usage():
+ scriptname = os.path.basename(sys.argv[0])
+ print("Usage:")
+ print(scriptname + ' <serial_number>')
+ print(scriptname + ' <logical_name>')
+ print(scriptname + ' any')
+ print('Example:')
+ print(scriptname + ' any')
+ sys.exit()
+
+
+def die(msg):
+ sys.exit(msg + ' (check USB cable)')
+
+
+if len(sys.argv) < 2:
+ usage()
+target = sys.argv[1].upper()
+
+# Setup the API to use local USB devices
+errmsg = YRefParam()
+if YAPI.RegisterHub("usb", errmsg) != YAPI.SUCCESS:
+ sys.exit("init error" + errmsg.value)
+
+if target == 'ANY':
+ # retreive any Relay then find its serial #
+ io = YDigitalIO.FirstDigitalIO()
+ if io is None:
+ die('No module connected')
+ m = io.get_module()
+ target = m.get_serialNumber()
+
+print('using ' + target)
+io = YDigitalIO.FindDigitalIO(target + '.digitalIO')
+
+if not (io.isOnline()):
+ die('device not connected')
+
+# lets configure the channels direction
+# bits 0..3 as output
+# bits 4..7 as input
+io.set_portDirection(0x0F)
+io.set_portPolarity(0) # polarity set to regular
+io.set_portOpenDrain(0) # No open drain
+
+print("Channels 0..3 are configured as outputs and channels 4..7")
+print("are configured as inputs, you can connect some inputs to ")
+print("ouputs and see what happens")
+
+outputdata = 0
+while io.isOnline():
+ inputdata = io.get_portState() # read port values
+ line = "" # display part state value as binary
+ for i in range(0, 8):
+ if (inputdata & (128 >> i)) > 0:
+ line += '1'
+ else:
+ line += '0'
+ print(" port value = " + line)
+ outputdata = (outputdata + 1) % 16 # cycle ouput 0..15
+ io.set_portState(outputdata) # We could have used set_bitState as well
+ YAPI.Sleep(1000, errmsg)
+
+print("Module disconnected")
+YAPI.FreeAPI()
diff --git a/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-MaxiCoupler/helloworld.py b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-MaxiCoupler/helloworld.py
new file mode 100644
index 0000000..66a41fe
--- /dev/null
+++ b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-MaxiCoupler/helloworld.py
@@ -0,0 +1,59 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+import os, sys
+
+# add ../../Sources to the PYTHONPATH
+sys.path.append(os.path.join("..", "..", "Sources"))
+from yocto_api import *
+from yocto_relay import *
+
+
+def usage():
+ scriptname = os.path.basename(sys.argv[0])
+ print("Usage:")
+ print(scriptname + ' <serial_number> <channel> [ ON | OFF ]')
+ print(scriptname + ' <logical_name> <channel> [ ON | OFF ]')
+ print(scriptname + ' any <channel> [ ON | OFF ]')
+ print('Example:')
+ print(scriptname + ' any 2 ON')
+ sys.exit()
+
+
+def die(msg):
+ sys.exit(msg + ' (check USB cable)')
+
+
+if len(sys.argv) < 3:
+ usage()
+
+target = sys.argv[1].upper()
+channel = sys.argv[2]
+state = sys.argv[3].upper()
+
+# Setup the API to use local USB devices
+errmsg = YRefParam()
+if YAPI.RegisterHub("usb", errmsg) != YAPI.SUCCESS:
+ sys.exit("init error" + errmsg.value)
+
+if target == 'ANY':
+ # retreive any Relay then find its serial #
+ relay = YRelay.FirstRelay()
+ if relay is None:
+ die('No module connected')
+ m = relay.get_module()
+ target = m.get_serialNumber()
+
+print('using ' + target)
+relay = YRelay.FindRelay(target + '.relay' + channel)
+
+if not (relay.isOnline()):
+ die('device not connected')
+
+if relay.isOnline():
+ if state == 'ON':
+ relay.set_output(YRelay.OUTPUT_ON)
+ else:
+ relay.set_output(YRelay.OUTPUT_OFF)
+else:
+ die('Module not connected')
+YAPI.FreeAPI()
diff --git a/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-MaxiDisplay/helloworld.py b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-MaxiDisplay/helloworld.py
new file mode 100644
index 0000000..09e471b
--- /dev/null
+++ b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-MaxiDisplay/helloworld.py
@@ -0,0 +1,94 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+import os, sys
+# add ../../Sources to the PYTHONPATH
+sys.path.append(os.path.join("..", "..", "Sources"))
+
+from yocto_api import *
+from yocto_display import *
+
+
+def usage():
+ scriptname = os.path.basename(sys.argv[0])
+ print("Usage:")
+ print(scriptname + ' <serial_number>')
+ print(scriptname + ' <logical_name>')
+ print(scriptname + ' any ')
+ sys.exit()
+
+
+def die(msg):
+ sys.exit(msg + ' (check USB cable)')
+
+
+errmsg = YRefParam()
+
+if len(sys.argv) < 2:
+ usage()
+
+target = sys.argv[1]
+
+# Setup the API to use local USB devices
+if YAPI.RegisterHub("usb", errmsg) != YAPI.SUCCESS:
+ sys.exit("init error" + errmsg.value)
+
+if target == 'any':
+ # retreive any RGB led
+ disp = YDisplay.FirstDisplay()
+ if disp is None:
+ die('No module connected')
+else:
+ disp = YDisplay.FindDisplay(target + ".display")
+
+if not disp.isOnline():
+ die("Module not connected ")
+
+# display clean up
+disp.resetAll()
+
+# retreive the display size
+w = disp.get_displayWidth()
+h = disp.get_displayHeight()
+
+# retreive the first layer
+l0 = disp.get_displayLayer(0)
+l0.clear()
+
+# display a text in the middle of the screen
+l0.drawText(w / 2, h / 2, YDisplayLayer.ALIGN.CENTER, "Hello world!")
+
+# visualize each corner
+l0.moveTo(0, 5)
+l0.lineTo(0, 0)
+l0.lineTo(5, 0)
+l0.moveTo(0, h - 6)
+l0.lineTo(0, h - 1)
+l0.lineTo(5, h - 1)
+l0.moveTo(w - 1, h - 6)
+l0.lineTo(w - 1, h - 1)
+l0.lineTo(w - 6, h - 1)
+l0.moveTo(w - 1, 5)
+l0.lineTo(w - 1, 0)
+l0.lineTo(w - 6, 0)
+
+# draw a circle in the top left corner of layer 1
+l1 = disp.get_displayLayer(1)
+l1.clear()
+l1.drawCircle(h / 8, h / 8, h / 8)
+
+# and animate the layer
+print("Use Ctrl-C to stop")
+x = 0
+y = 0
+vx = 1
+vy = 1
+while disp.isOnline():
+ x += vx
+ y += vy
+ if x < 0 or x > w - (h / 4):
+ vx = -vx
+ if y < 0 or y > h - (h / 4):
+ vy = -vy
+ l1.setLayerPosition(x, y, 0)
+ YAPI.Sleep(5, errmsg)
+YAPI.FreeAPI()
diff --git a/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-MaxiPowerRelay/helloworld.py b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-MaxiPowerRelay/helloworld.py
new file mode 100644
index 0000000..9e2198e
--- /dev/null
+++ b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-MaxiPowerRelay/helloworld.py
@@ -0,0 +1,59 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+import os, sys
+
+# add ../../Sources to the PYTHONPATH
+sys.path.append(os.path.join("..", "..", "Sources"))
+from yocto_api import *
+from yocto_relay import *
+
+
+def usage():
+ scriptname = os.path.basename(sys.argv[0])
+ print("Usage:")
+ print(scriptname + ' <serial_number> <channel> [ ON | OFF ]')
+ print(scriptname + ' <logical_name> <channel> [ ON | OFF ]')
+ print(scriptname + ' any <channel> [ ON | OFF ]')
+ print('Example:')
+ print(scriptname + ' any 2 ON')
+ sys.exit()
+
+
+def die(msg):
+ sys.exit(msg + ' (check USB cable)')
+
+
+if len(sys.argv) < 3:
+ usage()
+
+target = sys.argv[1].upper()
+channel = sys.argv[2]
+state = sys.argv[3].upper()
+
+# Setup the API to use local USB devices
+errmsg = YRefParam()
+if YAPI.RegisterHub("usb", errmsg) != YAPI.SUCCESS:
+ sys.exit("init error" + errmsg.value)
+
+if target == 'ANY':
+ # retreive any Relay then find its serial #
+ relay = YRelay.FirstRelay()
+ if relay is None:
+ die('No module connected')
+ m = relay.get_module()
+ target = m.get_serialNumber()
+
+print('using ' + target)
+relay = YRelay.FindRelay(target + '.relay' + channel)
+
+if not (relay.isOnline()):
+ die('device not connected')
+
+if relay.isOnline():
+ if state == 'ON':
+ relay.set_output(YRelay.OUTPUT_ON)
+ else:
+ relay.set_output(YRelay.OUTPUT_OFF)
+else:
+ die('Module not connected')
+YAPI.FreeAPI()
\ No newline at end of file
diff --git a/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-MaxiThermistor/helloworld.py b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-MaxiThermistor/helloworld.py
new file mode 100644
index 0000000..1124772
--- /dev/null
+++ b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-MaxiThermistor/helloworld.py
@@ -0,0 +1,66 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+import os, sys
+
+# add ../../Sources to the PYTHONPATH
+sys.path.append(os.path.join("..", "..", "Sources"))
+from yocto_api import *
+from yocto_temperature import *
+
+
+def usage():
+ scriptname = os.path.basename(sys.argv[0])
+ print("Usage:")
+ print(scriptname + ' <serial_number>')
+ print(scriptname + ' <logical_name>')
+ print(scriptname + ' any ')
+ sys.exit()
+
+
+def die(msg):
+ sys.exit(msg + ' (check USB cable)')
+
+
+errmsg = YRefParam()
+
+if len(sys.argv) < 2:
+ usage()
+
+target = sys.argv[1]
+
+# Setup the API to use local USB devices
+if YAPI.RegisterHub("usb", errmsg) != YAPI.SUCCESS:
+ sys.exit("init error" + errmsg.value)
+
+if target == 'any':
+ # retreive any temperature sensor
+ sensor = YTemperature.FirstTemperature()
+ if sensor is None:
+ die('No module connected')
+else:
+ sensor = YTemperature.FindTemperature(target + '.temperature1')
+
+if not (sensor.isOnline()):
+ die('device not connected')
+
+# retreive module serial
+serial = sensor.get_module().get_serialNumber()
+
+# retreive all 6 channels
+channel1 = YTemperature.FindTemperature(serial + '.temperature1')
+channel2 = YTemperature.FindTemperature(serial + '.temperature2')
+channel3 = YTemperature.FindTemperature(serial + '.temperature3')
+channel4 = YTemperature.FindTemperature(serial + '.temperature4')
+channel5 = YTemperature.FindTemperature(serial + '.temperature5')
+channel6 = YTemperature.FindTemperature(serial + '.temperature6')
+
+while sensor.isOnline():
+ print("| 1: " + "%2.1f " % channel1.get_currentValue() + \
+ "| 2: " + "%2.1f " % channel2.get_currentValue() + \
+ "| 3: " + "%2.1f " % channel3.get_currentValue() + \
+ "| 4: " + "%2.1f " % channel4.get_currentValue() + \
+ "| 5: " + "%2.1f " % channel5.get_currentValue() + \
+ "| 6: " + "%2.1f " % channel6.get_currentValue() + \
+ "| deg C |")
+ YAPI.Sleep(1000)
+YAPI.FreeAPI()
diff --git a/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-Meteo/helloworld.py b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-Meteo/helloworld.py
new file mode 100644
index 0000000..01aa6af
--- /dev/null
+++ b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-Meteo/helloworld.py
@@ -0,0 +1,60 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+import os, sys
+
+# add ../../Sources to the PYTHONPATH
+sys.path.append(os.path.join("..", "..", "Sources"))
+from yocto_api import *
+from yocto_humidity import *
+from yocto_temperature import *
+from yocto_pressure import *
+
+
+def usage():
+ scriptname = os.path.basename(sys.argv[0])
+ print("Usage:")
+ print(scriptname + ' <serial_number>')
+ print(scriptname + ' <logical_name>')
+ print(scriptname + ' any ')
+ sys.exit()
+
+
+def die(msg):
+ sys.exit(msg + ' (check USB cable)')
+
+
+errmsg = YRefParam()
+
+if len(sys.argv) < 2:
+ usage()
+
+target = sys.argv[1]
+
+# Setup the API to use local USB devices
+if YAPI.RegisterHub("usb", errmsg) != YAPI.SUCCESS:
+ sys.exit("init error" + errmsg.value)
+
+if target == 'any':
+ # retreive any humidity sensor
+ sensor = YHumidity.FirstHumidity()
+ if sensor is None:
+ die('No module connected')
+ m = sensor.get_module()
+ target = m.get_serialNumber()
+
+else:
+ m = YModule.FindModule(target)
+
+if not m.isOnline():
+ die('device not connected')
+
+humSensor = YHumidity.FindHumidity(target + '.humidity')
+pressSensor = YPressure.FindPressure(target + '.pressure')
+tempSensor = YTemperature.FindTemperature(target + '.temperature')
+
+while m.isOnline():
+ print('%2.1f' % tempSensor.get_currentValue() + "°C " +
+ "%4.0f" % pressSensor.get_currentValue() + "mb " +
+ "%4.0f" % humSensor.get_currentValue() + "% (Ctrl-c to stop) ")
+ YAPI.Sleep(1000)
+YAPI.FreeAPI()
\ No newline at end of file
diff --git a/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-MiniDisplay/helloworld.py b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-MiniDisplay/helloworld.py
new file mode 100644
index 0000000..65f81fe
--- /dev/null
+++ b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-MiniDisplay/helloworld.py
@@ -0,0 +1,94 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+import os, sys
+# add ../../Sources to the PYTHONPATH
+sys.path.append(os.path.join("..", "..", "Sources"))
+
+from yocto_api import *
+from yocto_display import *
+
+
+def usage():
+ scriptname = os.path.basename(sys.argv[0])
+ print("Usage:")
+ print(scriptname + ' <serial_number>')
+ print(scriptname + ' <logical_name>')
+ print(scriptname + ' any ')
+ sys.exit()
+
+
+def die(msg):
+ sys.exit(msg + ' (check USB cable)')
+
+
+errmsg = YRefParam()
+
+if len(sys.argv) < 2:
+ usage()
+
+target = sys.argv[1]
+
+# Setup the API to use local USB devices
+if YAPI.RegisterHub("usb", errmsg) != YAPI.SUCCESS:
+ sys.exit("init error" + errmsg.value)
+
+if target == 'any':
+ # retreive any RGB led
+ disp = YDisplay.FirstDisplay()
+ if disp is None:
+ die('No module connected')
+else:
+ disp = YDisplay.FindDisplay(target + ".display")
+
+if not disp.isOnline():
+ die("Module not connected ")
+
+# display clean up
+disp.resetAll()
+
+# retreive the display size
+w = disp.get_displayWidth()
+h = disp.get_displayHeight()
+
+# retreive the first layer
+l0 = disp.get_displayLayer(0)
+l0.clear()
+
+# display a text in the middle of the screen
+l0.drawText(w / 2, h / 2, YDisplayLayer.ALIGN.CENTER, "Hello world!")
+
+# visualize each corner
+l0.moveTo(0, 5)
+l0.lineTo(0, 0)
+l0.lineTo(5, 0)
+l0.moveTo(0, h - 6)
+l0.lineTo(0, h - 1)
+l0.lineTo(5, h - 1)
+l0.moveTo(w - 1, h - 6)
+l0.lineTo(w - 1, h - 1)
+l0.lineTo(w - 6, h - 1)
+l0.moveTo(w - 1, 5)
+l0.lineTo(w - 1, 0)
+l0.lineTo(w - 6, 0)
+
+# draw a circle in the top left corner of layer 1
+l1 = disp.get_displayLayer(1)
+l1.clear()
+l1.drawCircle(h / 8, h / 8, h / 8)
+
+# and animate the layer
+print("Use Ctrl-C to stop")
+x = 0
+y = 0
+vx = 1
+vy = 1
+while disp.isOnline():
+ x += vx
+ y += vy
+ if x < 0 or x > w - (h / 4):
+ vx = -vx
+ if y < 0 or y > h - (h / 4):
+ vy = -vy
+ l1.setLayerPosition(x, y, 0)
+ YAPI.Sleep(5, errmsg)
+YAPI.FreeAPI()
\ No newline at end of file
diff --git a/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-Motor-DC/helloworld.py b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-Motor-DC/helloworld.py
new file mode 100644
index 0000000..0bcfa77
--- /dev/null
+++ b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-Motor-DC/helloworld.py
@@ -0,0 +1,69 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+import os, sys
+
+# add ../../Sources to the PYTHONPATH
+sys.path.append(os.path.join("..", "..", "Sources"))
+from yocto_api import *
+from yocto_motor import *
+from yocto_current import *
+from yocto_voltage import *
+from yocto_temperature import *
+
+
+def usage():
+ scriptname = os.path.basename(sys.argv[0])
+ print("Usage:")
+ print(scriptname + ' <serial_number> power')
+ print(scriptname + ' <logical_name>power')
+ print(scriptname + ' any <channel> power')
+ print('power is an integer between -100 and 100%')
+ print('Example:')
+ print(scriptname + ' any 75')
+ sys.exit()
+
+
+def die(msg):
+ sys.exit(msg + ' (check USB cable)')
+
+
+# parse the command line
+
+
+if len(sys.argv) < 3:
+ usage()
+target = sys.argv[1].upper()
+power = int(sys.argv[2])
+
+# Setup the API to use local USB devices
+errmsg = YRefParam()
+if YAPI.RegisterHub("usb", errmsg) != YAPI.SUCCESS:
+ sys.exit("init error" + errmsg.value)
+
+if target == 'ANY':
+ # find any motor then retreive its serial #
+ motor = YMotor.FirstMotor()
+ if motor is None:
+ die('No module connected')
+ m = motor.get_module()
+ target = m.get_serialNumber()
+ print('using ' + target)
+
+motor = YMotor.FindMotor(target + '.motor')
+current = YCurrent.FindCurrent(target + '.current')
+voltage = YVoltage.FindVoltage(target + '.voltage')
+temperature = YTemperature.FindTemperature(target + '.temperature')
+
+if motor.isOnline():
+ # if the motor is in error state, reset it.
+ if motor.get_motorStatus() >= YMotor.MOTORSTATUS_LOVOLT: motor.resetStatus()
+ motor.drivingForceMove(power, 2000) # ramp up to power in 2 seconds
+ while motor.isOnline():
+ print("Status : " + motor.get_advertisedValue() +
+ " Current : " + "%2.1f" % (current.get_currentValue() / 1000) + "A " + \
+ "Voltage : " + "%2.1f" % (voltage.get_currentValue()) + "V " + \
+ "Temperature : " + "%2.1f" % (temperature.get_currentValue()) + "deg C")
+ YAPI.Sleep(1000, errmsg)
+else:
+ die('device not connected')
+YAPI.FreeAPI()
diff --git a/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-PT100/helloworld.py b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-PT100/helloworld.py
new file mode 100644
index 0000000..0f30751
--- /dev/null
+++ b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-PT100/helloworld.py
@@ -0,0 +1,49 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+import os, sys
+
+# add ../../Sources to the PYTHONPATH
+sys.path.append(os.path.join("..", "..", "Sources"))
+from yocto_api import *
+from yocto_temperature import *
+
+
+def usage():
+ scriptname = os.path.basename(sys.argv[0])
+ print("Usage:")
+ print(scriptname + ' <serial_number>')
+ print(scriptname + ' <logical_name>')
+ print(scriptname + ' any ')
+ sys.exit()
+
+
+def die(msg):
+ sys.exit(msg + ' (check USB cable)')
+
+
+errmsg = YRefParam()
+
+if len(sys.argv) < 2:
+ usage()
+
+target = sys.argv[1]
+
+# Setup the API to use local USB devices
+if YAPI.RegisterHub("usb", errmsg) != YAPI.SUCCESS:
+ sys.exit("init error" + errmsg.value)
+
+if target == 'any':
+ # retreive any temperature sensor
+ sensor = YTemperature.FirstTemperature()
+ if sensor is None:
+ die('No module connected')
+else:
+ sensor = YTemperature.FindTemperature(target + '.temperature')
+
+if not (sensor.isOnline()):
+ die('device not connected')
+
+while sensor.isOnline():
+ print("Temp : " + "%2.1f" % sensor.get_currentValue() + "°C (Ctrl-C to stop)")
+ YAPI.Sleep(1000)
+YAPI.FreeAPI()
diff --git a/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-PWM-Rx/helloworld.py b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-PWM-Rx/helloworld.py
new file mode 100644
index 0000000..4b7f472
--- /dev/null
+++ b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-PWM-Rx/helloworld.py
@@ -0,0 +1,55 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+import os, sys
+
+# add ../../Sources to the PYTHONPATH
+sys.path.append(os.path.join("..", "..", "Sources"))
+from yocto_api import *
+from yocto_pwminput import *
+
+
+def usage():
+ scriptname = os.path.basename(sys.argv[0])
+ print("Usage:")
+ print(scriptname + ' <serial_number>')
+ print(scriptname + ' <logical_name>')
+ print(scriptname + ' any ')
+ sys.exit()
+
+
+def die(msg):
+ sys.exit(msg + ' (check USB cable)')
+
+
+errmsg = YRefParam()
+
+if len(sys.argv) < 2:
+ usage()
+
+target = sys.argv[1]
+
+# Setup the API to use local USB devices
+if YAPI.RegisterHub("usb", errmsg) != YAPI.SUCCESS:
+ sys.exit("init error" + errmsg.value)
+
+if target == 'any':
+ # retreive any pwm input channel
+ anypwm = YPwmInput.FirstPwmInput()
+ if anypwm is None:
+ die('No module connected')
+ m = anypwm.get_module()
+ target = m.get_serialNumber()
+
+pwm1 = YPwmInput.FindPwmInput(target + '.pwmInput1')
+pwm2 = YPwmInput.FindPwmInput(target + '.pwmInput2')
+
+if not (pwm1.isOnline()):
+ die('device not connected')
+
+while pwm1.isOnline():
+ print("PWM1 : %.1fHz %.1f%% %d " % \
+ (pwm1.get_frequency(), pwm1.get_dutyCycle(), pwm1.get_pulseCounter()))
+ print("PWM2 : %.1fHz %.1f%% %d " % \
+ (pwm2.get_frequency(), pwm2.get_dutyCycle(), pwm2.get_pulseCounter()))
+ YAPI.Sleep(1000)
+YAPI.FreeAPI()
\ No newline at end of file
diff --git a/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-PWM-Tx/helloworld.py b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-PWM-Tx/helloworld.py
new file mode 100644
index 0000000..97e9cc3
--- /dev/null
+++ b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-PWM-Tx/helloworld.py
@@ -0,0 +1,63 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+import os, sys
+
+# add ../../Sources to the PYTHONPATH
+sys.path.append(os.path.join("..", "..", "Sources"))
+from yocto_api import *
+from yocto_pwmoutput import *
+
+
+def usage():
+ scriptname = os.path.basename(sys.argv[0])
+ print("Usage:")
+ print(scriptname + " <serial_number> <frequency> <duty_cycle>")
+ print(scriptname + " <logical_name> <frequency> <duty_cycle>")
+ print(scriptname + " any <frequency> <duty_cycle> (use any discovered device)")
+ print(" <frequency>: integer between 1Hz and 1000000Hz")
+ print(" <duty_cycle>: floating point number between 0.0 and 100.0")
+ print('Example:')
+ print(scriptname + ' any 1000 22.5')
+ sys.exit()
+
+
+def die(msg):
+ sys.exit(msg + ' (check USB cable)')
+
+
+if len(sys.argv) < 4:
+ usage()
+
+target = sys.argv[1].upper()
+frequency = int(sys.argv[2])
+duty_cycle = float(sys.argv[3])
+
+# Setup the API to use local USB devices
+errmsg = YRefParam()
+if YAPI.RegisterHub("usb", errmsg) != YAPI.SUCCESS:
+ sys.exit("init error" + errmsg.value)
+
+if target == 'ANY':
+ # retreive any pwmoutput then find its serial #
+ pwmoutput = YPwmOutput.FirstPwmOutput()
+ if pwmoutput is None:
+ die('No module connected')
+ m = pwmoutput.get_module()
+ target = m.get_serialNumber()
+
+print('using ' + target)
+pwmoutput1 = YPwmOutput.FindPwmOutput(target + '.pwmOutput1')
+pwmoutput2 = YPwmOutput.FindPwmOutput(target + '.pwmOutput2')
+
+if not (pwmoutput1.isOnline()):
+ die('device not connected')
+
+# output 2 : smooth change
+pwmoutput2.set_frequency(frequency)
+pwmoutput2.set_enabled(YPwmOutput.ENABLED_TRUE)
+pwmoutput2.dutyCycleMove(duty_cycle, 3000)
+# output 1 : immediate change
+pwmoutput1.set_frequency(frequency)
+pwmoutput1.set_enabled(YPwmOutput.ENABLED_TRUE)
+pwmoutput1.set_dutyCycle(duty_cycle)
+YAPI.FreeAPI()
diff --git a/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-PowerColor/helloworld.py b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-PowerColor/helloworld.py
new file mode 100644
index 0000000..c8d18f4
--- /dev/null
+++ b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-PowerColor/helloworld.py
@@ -0,0 +1,66 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+import os, sys
+
+# add ../../Sources to the PYTHONPATH
+sys.path.append(os.path.join("..", "..", "Sources"))
+from yocto_api import *
+from yocto_colorled import *
+
+
+def usage():
+ scriptname = os.path.basename(sys.argv[0])
+ print("Usage:")
+ print(scriptname + ' <serial_number>')
+ print(scriptname + ' <logical_name>')
+ print(scriptname + ' any ')
+ sys.exit()
+
+
+def die(msg):
+ sys.exit(msg + ' (check USB cable)')
+
+
+errmsg = YRefParam()
+
+if len(sys.argv) < 2:
+ usage()
+
+target = sys.argv[1]
+
+# Setup the API to use local USB devices
+if YAPI.RegisterHub("usb", errmsg) != YAPI.SUCCESS:
+ sys.exit("init error" + errmsg.value)
+
+if target == 'any':
+ # retreive any RGB led
+ led = YColorLed.FirstColorLed()
+ if led is None:
+ die('No module connected')
+else:
+ led = YColorLed.FindColorLed(target + '.colorLed1')
+
+# we need to retreive the second led from the device
+if not led.isOnline(): die('device not connected')
+
+print('r: set to red')
+print('g: set to green')
+print('b: set to blue')
+print('x: exit')
+
+try:
+ input = raw_input # python 2.x fix
+except:
+ pass
+
+c = input("command:")
+
+while c != 'x':
+ if c == 'r':
+ led.set_rgbColor(0xFF0000)
+ elif c == 'g':
+ led.set_rgbColor(0x00FF00)
+ elif c == 'b':
+ led.set_rgbColor(0x0000FF)
+ c = input("command:")
+YAPI.FreeAPI()
diff --git a/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-PowerRelay/helloworld.py b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-PowerRelay/helloworld.py
new file mode 100644
index 0000000..db27b1a
--- /dev/null
+++ b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-PowerRelay/helloworld.py
@@ -0,0 +1,52 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+import os, sys
+
+# add ../../Sources to the PYTHONPATH
+sys.path.append(os.path.join("..", "..", "Sources"))
+from yocto_api import *
+from yocto_relay import *
+
+
+def usage():
+ scriptname = os.path.basename(sys.argv[0])
+ print("Usage:")
+ print(scriptname + ' <serial_number> [ A | B ]')
+ print(scriptname + ' <logical_name> [ A | B ]')
+ print(scriptname + ' any [ A | B ]')
+ print('Example:')
+ print(scriptname + ' any B')
+ sys.exit()
+
+
+def die(msg):
+ sys.exit(msg + ' (check USB cable)')
+
+
+if len(sys.argv) < 2:
+ usage()
+
+target = sys.argv[1].upper()
+state = sys.argv[2].upper()
+
+# Setup the API to use local USB devices
+errmsg = YRefParam()
+if YAPI.RegisterHub("usb", errmsg) != YAPI.SUCCESS:
+ sys.exit("init error" + errmsg.value)
+
+if target == 'ANY':
+ # retreive any Relay
+ relay = YRelay.FirstRelay()
+ if relay is None:
+ die('no device connected')
+else:
+ relay = YRelay.FindRelay(target + ".relay1")
+
+if not (relay.isOnline()):
+ die('device not connected')
+
+if state == 'A':
+ relay.set_state(YRelay.STATE_A)
+else:
+ relay.set_state(YRelay.STATE_B)
+YAPI.FreeAPI()
diff --git a/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-Proximity/helloworld.py b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-Proximity/helloworld.py
new file mode 100644
index 0000000..afd774d
--- /dev/null
+++ b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-Proximity/helloworld.py
@@ -0,0 +1,61 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+import os, sys
+# add ../../Sources to the PYTHONPATH
+sys.path.append(os.path.join("..", "..", "Sources"))
+
+from yocto_api import *
+from yocto_proximity import *
+from yocto_lightsensor import *
+
+
+
+def usage():
+ scriptname = os.path.basename(sys.argv[0])
+ print("Usage:")
+ print(scriptname + ' <serial_number>')
+ print(scriptname + ' <logical_name>')
+ print(scriptname + ' any ')
+ sys.exit()
+
+
+def die(msg):
+ sys.exit(msg + ' (check USB cable)')
+
+
+errmsg = YRefParam()
+
+if len(sys.argv) < 2:
+ usage()
+
+target = sys.argv[1]
+
+# Setup the API to use local USB devices
+if YAPI.RegisterHub("usb", errmsg) != YAPI.SUCCESS:
+ sys.exit("init error" + errmsg.value)
+
+if target == 'any':
+ # retreive any Light sensor
+ p = YProximity.FirstProximity()
+ if p is None:
+ die('No module connected')
+ target = p.get_module().get_serialNumber()
+
+else:
+ p = YProximity.FindProximity(target + '.proximity1')
+
+
+if not (p.isOnline()):
+ die('device not connected')
+
+al = YLightSensor.FindLightSensor(target+'.lightSensor1')
+ir = YLightSensor.FindLightSensor(target+'.lightSensor2')
+
+
+while p.isOnline():
+ print("proximity : " + str(int(p.get_currentValue())) )
+ print("ambient : " + str(int(al.get_currentValue())) )
+ print("IR : " + str(int(ir.get_currentValue())) )
+
+ YAPI.Sleep(1000)
+YAPI.FreeAPI()
diff --git a/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-RS232/helloworld.py b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-RS232/helloworld.py
new file mode 100644
index 0000000..e20cef2
--- /dev/null
+++ b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-RS232/helloworld.py
@@ -0,0 +1,42 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+import os, sys
+
+# add ../../Sources to the PYTHONPATH
+sys.path.append(os.path.join("..", "..", "Sources"))
+sys.path.append(os.path.join("..", "..", "Sources"))
+from yocto_api import *
+from yocto_serialport import *
+
+# Setup the API to use local USB devices. You can
+# use an IP address instead of 'usb' if the device
+# is connected to a network.
+
+errmsg = YRefParam()
+if YAPI.RegisterHub("usb", errmsg) != YAPI.SUCCESS:
+ sys.exit("init error" + errmsg.value)
+
+if len(sys.argv) > 1:
+ serialPort = YSerialPort.FindSerialPort(sys.argv[1] + ".serialPort")
+ if not serialPort.isOnline():
+ sys.exit('Module not connected')
+else:
+ serialPort = YSerialPort.FirstSerialPort()
+ if serialPort is None:
+ sys.exit('No module connected (check cable)')
+
+ serialPort.set_serialMode("9600,8N1")
+ serialPort.set_protocol("Line")
+ serialPort.reset()
+
+while True:
+ print("Type line to send, or Ctrl-C to exit:")
+ line = input(": ") # use raw_input in python 2.x
+ if line == "":
+ break
+ serialPort.writeLine(line)
+ YAPI.Sleep(500)
+ line = serialPort.readLine()
+ if line != "":
+ print("Received: " + line)
+YAPI.FreeAPI()
diff --git a/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-RS485/helloworld.py b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-RS485/helloworld.py
new file mode 100644
index 0000000..253515a
--- /dev/null
+++ b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-RS485/helloworld.py
@@ -0,0 +1,61 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+import os, sys
+
+# add ../../Sources to the PYTHONPATH
+sys.path.append(os.path.join("..", "..", "Sources"))
+from yocto_api import *
+from yocto_serialport import *
+
+# Setup the API to use local USB devices. You can
+# use an IP address instead of 'usb' if the device
+# is connected to a network.
+
+errmsg = YRefParam()
+if YAPI.RegisterHub("usb", errmsg) != YAPI.SUCCESS:
+ sys.exit("init error" + errmsg.value)
+
+if len(sys.argv) > 1:
+ serialPort = YSerialPort.FindSerialPort(sys.argv[1])
+else:
+ serialPort = YSerialPort.FirstSerialPort()
+ if serialPort is None:
+ sys.exit('No module connected (check cable)')
+
+print("Please enter the MODBUS slave address (1...255)")
+slave = 0
+while (slave < 1) or (slave > 255):
+ slave = int(input("slave: ")) # use raw_input in python 2.x
+
+reg = 0
+while (reg < 1) or (reg >= 50000) or (reg % 10000) == 0:
+ print("Please select a Coil No (>=1), Input Bit No (>=10001+),")
+ print("Input Register No (>=30001) or Register No (>=40001)")
+ reg = int(input("No: ")) # use raw_input in python 2.x
+
+while serialPort.isOnline():
+ if reg >= 40001:
+ val = serialPort.modbusReadRegisters(slave, reg - 40001, 1)[0]
+ elif reg >= 30001:
+ val = serialPort.modbusReadInputRegisters(slave, reg - 30001, 1)[0]
+ elif reg >= 10001:
+ val = serialPort.modbusReadInputBits(slave, reg - 10001, 1)[0]
+ else:
+ val = serialPort.modbusReadBits(slave, reg - 1, 1)[0]
+
+ print("Current value: " + str(val))
+ print("Press ENTER to read again, Q to quit")
+ if (reg % 30000) < 10000:
+ print(" or enter a new value")
+
+ cmd = input(": ") # use raw_input in python 2.x
+ if (cmd == "q") or (cmd == "Q"):
+ sys.exit()
+
+ if cmd != "" and ((reg % 30000) < 10000):
+ val = int(cmd)
+ if reg >= 30001:
+ serialPort.modbusWriteRegister(slave, reg - 30001, val)
+ else:
+ serialPort.modbusWriteBit(slave, reg - 1, val)
+YAPI.FreeAPI()
\ No newline at end of file
diff --git a/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-Relay/helloworld.py b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-Relay/helloworld.py
new file mode 100644
index 0000000..657cd87
--- /dev/null
+++ b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-Relay/helloworld.py
@@ -0,0 +1,56 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+import os, sys
+
+# add ../../Sources to the PYTHONPATH
+sys.path.append(os.path.join("..", "..", "Sources"))
+from yocto_api import *
+from yocto_relay import *
+
+
+def usage():
+ scriptname = os.path.basename(sys.argv[0])
+ print("Usage:")
+ print(scriptname + ' <serial_number> <channel> < A | B >')
+ print(scriptname + ' <logical_name> <channel> < A | B >')
+ print(scriptname + ' any <channel> < A | B >')
+ print('Example:')
+ print(scriptname + ' any 2 B')
+ sys.exit()
+
+
+def die(msg):
+ sys.exit(msg + ' (check USB cable)')
+
+
+if len(sys.argv) < 4:
+ usage()
+
+target = sys.argv[1].upper()
+channel = sys.argv[2]
+state = sys.argv[3].upper()
+
+# Setup the API to use local USB devices
+errmsg = YRefParam()
+if YAPI.RegisterHub("usb", errmsg) != YAPI.SUCCESS:
+ sys.exit("init error" + errmsg.value)
+
+if target == 'ANY':
+ # retreive any Relay then find its serial #
+ relay = YRelay.FirstRelay()
+ if relay is None:
+ die('No module connected')
+ m = relay.get_module()
+ target = m.get_serialNumber()
+
+print('using ' + target)
+relay = YRelay.FindRelay(target + '.relay' + channel)
+
+if not (relay.isOnline()):
+ die('device not connected')
+
+if state == 'A':
+ relay.set_state(YRelay.STATE_A)
+else:
+ relay.set_output(YRelay.STATE_B)
+YAPI.FreeAPI()
\ No newline at end of file
diff --git a/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-SPI/helloworld.py b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-SPI/helloworld.py
new file mode 100644
index 0000000..a81d9bf
--- /dev/null
+++ b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-SPI/helloworld.py
@@ -0,0 +1,69 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+import os, sys
+
+# add ../../Sources to the PYTHONPATH
+sys.path.append(os.path.join("..", "..", "Sources"))
+from yocto_api import *
+from yocto_spiport import *
+
+
+def usage():
+ scriptname = os.path.basename(sys.argv[0])
+ print("Usage:")
+ print(scriptname + " <serial_number> <value>")
+ print(scriptname + " <logical_name> <value>")
+ print(scriptname + " any <value> (use any discovered device)")
+ sys.exit()
+
+
+def die(msg):
+ sys.exit(msg + ' (check USB cable)')
+
+
+if len(sys.argv) < 3:
+ usage()
+target = sys.argv[1].upper()
+value = int(sys.argv[2])
+
+# Setup the API to use local USB devices. You can
+# use an IP address instead of 'usb' if the device
+# is connected to a network.
+errmsg = YRefParam()
+if YAPI.RegisterHub("usb", errmsg) != YAPI.SUCCESS:
+ sys.exit("init error" + errmsg.value)
+
+if target == 'ANY':
+ spiPort = YSpiPort.FirstSpiPort()
+ if spiPort is None:
+ sys.exit('No module connected (check cable)')
+else:
+ spiPort = YSpiPort.FindSpiPort(sys.argv[1] + ".spiPort")
+ if not spiPort.isOnline():
+ sys.exit('Module not connected')
+
+# sample code driving MAX7219 7-segment display driver
+# such as SPI7SEGDISP8.56 from www.embedded-lab.com
+spiPort.set_spiMode("250000,3,msb")
+spiPort.set_ssPolarity(YSpiPort.SSPOLARITY_ACTIVE_LOW)
+spiPort.set_protocol("Frame:5ms")
+spiPort.reset()
+
+# do not forget to onfigure the powerOutput of the Yocto - SPI
+# (for SPI7SEGDISP8.56 powerOutput need to be set at 5v)
+print("****************************")
+print("* make sure voltage levels *")
+print("* are properly configured *")
+print("****************************")
+
+# initialize MAX7219
+spiPort.writeHex('0c01') # Exit from shutdown state
+spiPort.writeHex('09ff') # Enable BCD for all digits
+spiPort.writeHex('0b07') # Enable digits 0-7 (=8 in total)
+spiPort.writeHex('0a0a') # Set medium brightness
+for i in range(1, 9):
+ digit = value % 10
+ spiPort.writeArray([i, digit])
+ value = int(value / 10)
+
+YAPI.FreeAPI()
diff --git a/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-Serial/helloworld.py b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-Serial/helloworld.py
new file mode 100644
index 0000000..22fa60c
--- /dev/null
+++ b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-Serial/helloworld.py
@@ -0,0 +1,46 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+import os, sys
+
+# add ../../Sources to the PYTHONPATH
+sys.path.append(os.path.join("..", "..", "Sources"))
+from yocto_api import *
+from yocto_serialport import *
+
+# Setup the API to use local USB devices. You can
+# use an IP address instead of 'usb' if the device
+# is connected to a network.
+
+errmsg = YRefParam()
+if YAPI.RegisterHub("usb", errmsg) != YAPI.SUCCESS:
+ sys.exit("init error" + errmsg.value)
+
+if len(sys.argv) > 1:
+ serialPort = YSerialPort.FindSerialPort(sys.argv[1] + ".serialPort")
+ if not serialPort.isOnline():
+ sys.exit('Module not connected')
+else:
+ serialPort = YSerialPort.FirstSerialPort()
+ if serialPort is None:
+ sys.exit('No module connected (check cable)')
+
+ serialPort.set_serialMode("9600,8N1")
+ serialPort.set_protocol("Line")
+ serialPort.reset()
+
+ print("****************************")
+ print("* make sure voltage levels *")
+ print("* are properly configured *")
+ print("****************************")
+
+while True:
+ print("Type line to send, or Ctrl-C to exit:")
+ line = input(": ") # use raw_input in python 2.x
+ if line == "":
+ break
+ serialPort.writeLine(line)
+ YAPI.Sleep(500)
+ line = serialPort.readLine()
+ if line != "":
+ print("Received: " + line)
+YAPI.FreeAPI()
diff --git a/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-Servo/helloworld.py b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-Servo/helloworld.py
new file mode 100644
index 0000000..229029a
--- /dev/null
+++ b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-Servo/helloworld.py
@@ -0,0 +1,53 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+import os, sys
+# add ../../Sources to the PYTHONPATH
+sys.path.append(os.path.join("..", "..", "Sources"))
+
+from yocto_api import *
+from yocto_servo import *
+
+
+def usage():
+ scriptname = os.path.basename(sys.argv[0])
+ print("Usage:")
+ print(scriptname + ' <serial_number> <channel> position')
+ print(scriptname + ' <logical_name> <channel> position')
+ print(scriptname + ' any <channel> position')
+ print('Example:')
+ print(scriptname + ' any 2 500')
+ sys.exit()
+
+
+def die(msg):
+ sys.exit(msg + ' (check USB cable)')
+
+
+if len(sys.argv) < 3:
+ usage()
+
+target = sys.argv[1].upper()
+channel = sys.argv[2]
+position = int(sys.argv[3])
+
+# Setup the API to use local USB devices
+errmsg = YRefParam()
+if YAPI.RegisterHub("usb", errmsg) != YAPI.SUCCESS:
+ sys.exit("init error" + errmsg.value)
+
+if target == 'ANY':
+ # retreive any servo then find its serial #
+ servo = YServo.FirstServo()
+ if servo is None:
+ die('No module connected')
+ m = servo.get_module()
+ target = m.get_serialNumber()
+
+print('using ' + target)
+servo = YServo.FindServo(target + '.servo' + channel)
+
+if not (servo.isOnline()):
+ die('device not connected')
+
+servo.move(position, 1000)
+YAPI.FreeAPI()
diff --git a/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-Temperature/helloworld.py b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-Temperature/helloworld.py
new file mode 100644
index 0000000..0f30751
--- /dev/null
+++ b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-Temperature/helloworld.py
@@ -0,0 +1,49 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+import os, sys
+
+# add ../../Sources to the PYTHONPATH
+sys.path.append(os.path.join("..", "..", "Sources"))
+from yocto_api import *
+from yocto_temperature import *
+
+
+def usage():
+ scriptname = os.path.basename(sys.argv[0])
+ print("Usage:")
+ print(scriptname + ' <serial_number>')
+ print(scriptname + ' <logical_name>')
+ print(scriptname + ' any ')
+ sys.exit()
+
+
+def die(msg):
+ sys.exit(msg + ' (check USB cable)')
+
+
+errmsg = YRefParam()
+
+if len(sys.argv) < 2:
+ usage()
+
+target = sys.argv[1]
+
+# Setup the API to use local USB devices
+if YAPI.RegisterHub("usb", errmsg) != YAPI.SUCCESS:
+ sys.exit("init error" + errmsg.value)
+
+if target == 'any':
+ # retreive any temperature sensor
+ sensor = YTemperature.FirstTemperature()
+ if sensor is None:
+ die('No module connected')
+else:
+ sensor = YTemperature.FindTemperature(target + '.temperature')
+
+if not (sensor.isOnline()):
+ die('device not connected')
+
+while sensor.isOnline():
+ print("Temp : " + "%2.1f" % sensor.get_currentValue() + "°C (Ctrl-C to stop)")
+ YAPI.Sleep(1000)
+YAPI.FreeAPI()
diff --git a/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-Thermistor-C/helloworld.py b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-Thermistor-C/helloworld.py
new file mode 100644
index 0000000..1124772
--- /dev/null
+++ b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-Thermistor-C/helloworld.py
@@ -0,0 +1,66 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+import os, sys
+
+# add ../../Sources to the PYTHONPATH
+sys.path.append(os.path.join("..", "..", "Sources"))
+from yocto_api import *
+from yocto_temperature import *
+
+
+def usage():
+ scriptname = os.path.basename(sys.argv[0])
+ print("Usage:")
+ print(scriptname + ' <serial_number>')
+ print(scriptname + ' <logical_name>')
+ print(scriptname + ' any ')
+ sys.exit()
+
+
+def die(msg):
+ sys.exit(msg + ' (check USB cable)')
+
+
+errmsg = YRefParam()
+
+if len(sys.argv) < 2:
+ usage()
+
+target = sys.argv[1]
+
+# Setup the API to use local USB devices
+if YAPI.RegisterHub("usb", errmsg) != YAPI.SUCCESS:
+ sys.exit("init error" + errmsg.value)
+
+if target == 'any':
+ # retreive any temperature sensor
+ sensor = YTemperature.FirstTemperature()
+ if sensor is None:
+ die('No module connected')
+else:
+ sensor = YTemperature.FindTemperature(target + '.temperature1')
+
+if not (sensor.isOnline()):
+ die('device not connected')
+
+# retreive module serial
+serial = sensor.get_module().get_serialNumber()
+
+# retreive all 6 channels
+channel1 = YTemperature.FindTemperature(serial + '.temperature1')
+channel2 = YTemperature.FindTemperature(serial + '.temperature2')
+channel3 = YTemperature.FindTemperature(serial + '.temperature3')
+channel4 = YTemperature.FindTemperature(serial + '.temperature4')
+channel5 = YTemperature.FindTemperature(serial + '.temperature5')
+channel6 = YTemperature.FindTemperature(serial + '.temperature6')
+
+while sensor.isOnline():
+ print("| 1: " + "%2.1f " % channel1.get_currentValue() + \
+ "| 2: " + "%2.1f " % channel2.get_currentValue() + \
+ "| 3: " + "%2.1f " % channel3.get_currentValue() + \
+ "| 4: " + "%2.1f " % channel4.get_currentValue() + \
+ "| 5: " + "%2.1f " % channel5.get_currentValue() + \
+ "| 6: " + "%2.1f " % channel6.get_currentValue() + \
+ "| deg C |")
+ YAPI.Sleep(1000)
+YAPI.FreeAPI()
diff --git a/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-Thermocouple/helloworld.py b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-Thermocouple/helloworld.py
new file mode 100644
index 0000000..5fd6b40
--- /dev/null
+++ b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-Thermocouple/helloworld.py
@@ -0,0 +1,58 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+import os, sys
+
+# add ../../Sources to the PYTHONPATH
+sys.path.append(os.path.join("..", "..", "Sources"))
+from yocto_api import *
+from yocto_temperature import *
+
+
+def usage():
+ scriptname = os.path.basename(sys.argv[0])
+ print("Usage:")
+ print(scriptname + ' <serial_number>')
+ print(scriptname + ' <logical_name>')
+ print(scriptname + ' any ')
+ sys.exit()
+
+
+def die(msg):
+ sys.exit(msg + ' (check USB cable)')
+
+
+errmsg = YRefParam()
+
+if len(sys.argv) < 2:
+ usage()
+
+target = sys.argv[1]
+
+# Setup the API to use local USB devices
+if YAPI.RegisterHub("usb", errmsg) != YAPI.SUCCESS:
+ sys.exit("init error" + errmsg.value)
+
+if target == 'any':
+ # retreive any temperature sensor
+ sensor = YTemperature.FirstTemperature()
+ if sensor is None:
+ die('No module connected')
+else:
+ sensor = YTemperature.FindTemperature(target + '.temperature1')
+
+if not (sensor.isOnline()):
+ die('device not connected')
+
+# retreive module serial
+serial = sensor.get_module().get_serialNumber()
+
+# retreive both channels
+channel1 = YTemperature.FindTemperature(serial + '.temperature1')
+channel2 = YTemperature.FindTemperature(serial + '.temperature2')
+
+while channel1.isOnline():
+ print("channel 1/2: " + "%2.1f / " % channel1.get_currentValue() + \
+ "%2.1f" % channel2.get_currentValue() + \
+ " deg C (Ctrl-C to stop)")
+ YAPI.Sleep(1000)
+YAPI.FreeAPI()
diff --git a/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-VOC/helloworld.py b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-VOC/helloworld.py
new file mode 100644
index 0000000..94b7383
--- /dev/null
+++ b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-VOC/helloworld.py
@@ -0,0 +1,50 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+import os, sys
+
+# add ../../Sources to the PYTHONPATH
+sys.path.append(os.path.join("..", "..", "Sources"))
+from yocto_api import *
+from yocto_voc import *
+
+
+def usage():
+ scriptname = os.path.basename(sys.argv[0])
+ print("Usage:")
+ print(scriptname + ' <serial_number>')
+ print(scriptname + ' <logical_name>')
+ print(scriptname + ' any ')
+ sys.exit()
+
+
+def die(msg):
+ sys.exit(msg + ' (check USB cable)')
+
+
+errmsg = YRefParam()
+
+if len(sys.argv) < 2:
+ usage()
+
+target = sys.argv[1]
+
+# Setup the API to use local USB devices
+if YAPI.RegisterHub("usb", errmsg) != YAPI.SUCCESS:
+ sys.exit("init error" + errmsg.value)
+
+if target == 'any':
+ # retreive any voc sensor
+ sensor = YVoc.FirstVoc()
+ if sensor is None:
+ die('No module connected')
+ print("Using: " + sensor.get_module().get_serialNumber())
+else:
+ sensor = YVoc.FindVoc(target + '.voc')
+
+if not (sensor.isOnline()):
+ die('device not connected')
+
+while sensor.isOnline():
+ print("VOC : " + "%2.1f" % sensor.get_currentValue() + "ppm (Ctrl-C to stop)")
+ YAPI.Sleep(1000)
+YAPI.FreeAPI()
diff --git a/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-Volt/helloworld.py b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-Volt/helloworld.py
new file mode 100644
index 0000000..9d76bac
--- /dev/null
+++ b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-Volt/helloworld.py
@@ -0,0 +1,53 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+import os, sys
+
+# add ../../Sources to the PYTHONPATH
+sys.path.append(os.path.join("..", "..", "Sources"))
+from yocto_api import *
+from yocto_voltage import *
+
+
+def usage():
+ scriptname = os.path.basename(sys.argv[0])
+ print("Usage:")
+ print(scriptname + ' <serial_number>')
+ print(scriptname + ' <logical_name>')
+ print(scriptname + ' any ')
+ sys.exit()
+
+
+def die(msg):
+ sys.exit(msg + ' (check USB cable)')
+
+
+errmsg = YRefParam()
+
+if len(sys.argv) < 2:
+ usage()
+
+target = sys.argv[1]
+
+# Setup the API to use local USB devices
+if YAPI.RegisterHub("usb", errmsg) != YAPI.SUCCESS:
+ sys.exit("init error" + errmsg.value)
+
+if target == 'any':
+ # retreive any voltage sensor
+ sensor = YVoltage.FirstVoltage()
+ if sensor is None:
+ die('No module connected')
+ m = sensor.get_module()
+ target = m.get_serialNumber()
+
+sensorDC = YVoltage.FindVoltage(target + '.voltage1')
+sensorAC = YVoltage.FindVoltage(target + '.voltage2')
+
+if not (sensorDC.isOnline()):
+ die('device not connected')
+
+while sensorDC.isOnline():
+ print("Voltage : %3.2fV DC / %3.2fV AC (Ctrl-C to stop) " % \
+ (sensorDC.get_currentValue(), sensorAC.get_currentValue()))
+ YAPI.Sleep(1000)
+YAPI.FreeAPI()
diff --git a/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-WatchdogDC/helloworld.py b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-WatchdogDC/helloworld.py
new file mode 100644
index 0000000..26004df
--- /dev/null
+++ b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-WatchdogDC/helloworld.py
@@ -0,0 +1,53 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+import os, sys
+
+# add ../../Sources to the PYTHONPATH
+sys.path.append(os.path.join("..", "..", "Sources"))
+from yocto_api import *
+from yocto_watchdog import *
+
+
+def usage():
+ scriptname = os.path.basename(sys.argv[0])
+ print("Usage:")
+ print(scriptname + ' <serial_number> [ on | off | reset]')
+ print(scriptname + ' <logical_name> [ on | off | reset]')
+ print(scriptname + ' any [ on | off | reset]')
+ print('Example:')
+ print(scriptname + ' any on')
+ sys.exit()
+
+
+def die(msg):
+ sys.exit(msg + ' (check USB cable)')
+
+
+if len(sys.argv) < 2:
+ usage()
+
+target = sys.argv[1].upper()
+state = sys.argv[2].upper()
+
+# Setup the API to use local USB devices
+errmsg = YRefParam()
+if YAPI.RegisterHub("usb", errmsg) != YAPI.SUCCESS:
+ sys.exit("init error" + errmsg.value)
+
+if target == 'ANY':
+ # retreive any Watchdog
+ watchdog = YWatchdog.FirstWatchdog()
+ if watchdog is None: die('no device connected')
+else:
+ watchdog = YWatchdog.FindWatchdog(target)
+
+if not (watchdog.isOnline()):
+ die('device not connected')
+
+if state == 'RESET':
+ watchdog.resetWatchdog()
+elif state == 'ON':
+ watchdog.set_running(YWatchdog.RUNNING_ON)
+else:
+ watchdog.set_running(YWatchdog.RUNNING_OFF)
+YAPI.FreeAPI()
\ No newline at end of file
diff --git a/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-Watt/helloworld.py b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-Watt/helloworld.py
new file mode 100644
index 0000000..513c230
--- /dev/null
+++ b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-Watt/helloworld.py
@@ -0,0 +1,48 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+import os, sys
+
+# add ../../Sources to the PYTHONPATH
+sys.path.append(os.path.join("..", "..", "Sources"))
+from yocto_api import *
+from yocto_power import *
+
+
+def usage():
+ scriptname = os.path.basename(sys.argv[0])
+ print("Usage:")
+ print(scriptname + ' <serial_number>')
+ print(scriptname + ' <logical_name>')
+ print(scriptname + ' any ')
+ sys.exit()
+
+
+def die(msg):
+ sys.exit(msg + ' (check USB cable)')
+
+
+errmsg = YRefParam()
+
+if len(sys.argv) < 2:
+ usage()
+
+target = sys.argv[1]
+
+# Setup the API to use local USB devices
+if YAPI.RegisterHub("usb", errmsg) != YAPI.SUCCESS:
+ sys.exit("init error" + errmsg.value)
+
+if target == 'any':
+ # retreive any Power sensor
+ sensor = YPower.FirstPower()
+ if sensor is None:
+ die('No module connected')
+else:
+ sensor = YPower.FindPower(target + '.power')
+
+if not (sensor.isOnline()):
+ die('device not connected')
+while sensor.isOnline():
+ print("Power : " + "%2.1f" % sensor.get_currentValue() + "W (Ctrl-C to stop)")
+ YAPI.Sleep(1000)
+YAPI.FreeAPI()
\ No newline at end of file
diff --git a/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-milliVolt-Rx-BNC/helloworld.py b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-milliVolt-Rx-BNC/helloworld.py
new file mode 100644
index 0000000..d77c2d4
--- /dev/null
+++ b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-milliVolt-Rx-BNC/helloworld.py
@@ -0,0 +1,56 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+import os, sys
+
+# add ../../Sources to the PYTHONPATH
+sys.path.append(os.path.join("..", "..", "Sources"))
+from yocto_api import *
+from yocto_genericsensor import *
+
+
+def usage():
+ scriptname = os.path.basename(sys.argv[0])
+ print("Usage:")
+ print(scriptname + ' <serial_number>')
+ print(scriptname + ' <logical_name>')
+ print(scriptname + ' any ')
+ sys.exit()
+
+
+def die(msg):
+ sys.exit(msg + ' (check USB cable)')
+
+
+errmsg = YRefParam()
+
+if len(sys.argv) < 2:
+ usage()
+
+target = sys.argv[1]
+
+# Setup the API to use local USB devices
+if YAPI.RegisterHub("usb", errmsg) != YAPI.SUCCESS:
+ sys.exit("init error" + errmsg.value)
+
+if target == 'any':
+ # retreive any genericSensor sensor
+ sensor = YGenericSensor.FirstGenericSensor()
+ if sensor is None:
+ die('No module connected')
+else:
+ sensor = YGenericSensor.FindGenericSensor(target + '.genericSensor1')
+
+if not (sensor.isOnline()):
+ die('device not connected')
+
+# retreive module serial
+serial = sensor.get_module().get_serialNumber()
+
+# retreive both channels
+channel1 = YGenericSensor.FindGenericSensor(serial + '.genericSensor1')
+
+while channel1.isOnline():
+ print("Voltage: %f %s" % (channel1.get_currentValue(), channel1.get_unit()))
+ print(" (Ctrl-C to stop)")
+ YAPI.Sleep(1000)
+YAPI.FreeAPI()
\ No newline at end of file
diff --git a/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-milliVolt-Rx/helloworld.py b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-milliVolt-Rx/helloworld.py
new file mode 100644
index 0000000..ae29d39
--- /dev/null
+++ b/yoctoLib.python.26380/Examples/Doc-GettingStarted-Yocto-milliVolt-Rx/helloworld.py
@@ -0,0 +1,56 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+import os, sys
+# add ../../Sources to the PYTHONPATH
+sys.path.append(os.path.join("..", "..", "Sources"))
+
+from yocto_api import *
+from yocto_genericsensor import *
+
+
+def usage():
+ scriptname = os.path.basename(sys.argv[0])
+ print("Usage:")
+ print(scriptname + ' <serial_number>')
+ print(scriptname + ' <logical_name>')
+ print(scriptname + ' any ')
+ sys.exit()
+
+
+def die(msg):
+ sys.exit(msg + ' (check USB cable)')
+
+
+errmsg = YRefParam()
+
+if len(sys.argv) < 2:
+ usage()
+
+target = sys.argv[1]
+
+# Setup the API to use local USB devices
+if YAPI.RegisterHub("usb", errmsg) != YAPI.SUCCESS:
+ sys.exit("init error" + errmsg.value)
+
+if target == 'any':
+ # retreive any genericSensor sensor
+ sensor = YGenericSensor.FirstGenericSensor()
+ if sensor is None:
+ die('No module connected')
+else:
+ sensor = YGenericSensor.FindGenericSensor(target + '.genericSensor1')
+
+if not (sensor.isOnline()):
+ die('device not connected')
+
+# retreive module serial
+serial = sensor.get_module().get_serialNumber()
+
+# retreive both channels
+channel1 = YGenericSensor.FindGenericSensor(serial + '.genericSensor1')
+
+while channel1.isOnline():
+ print("Voltage: %f %s" % (channel1.get_currentValue(), channel1.get_unit()))
+ print(" (Ctrl-C to stop)")
+ YAPI.Sleep(1000)
+YAPI.FreeAPI()
\ No newline at end of file
diff --git a/yoctoLib.python.26380/Examples/Doc-Inventory/inventory.py b/yoctoLib.python.26380/Examples/Doc-Inventory/inventory.py
new file mode 100644
index 0000000..91796ae
--- /dev/null
+++ b/yoctoLib.python.26380/Examples/Doc-Inventory/inventory.py
@@ -0,0 +1,22 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+import os, sys
+
+# add ../../Sources to the PYTHONPATH
+sys.path.append(os.path.join("..", "..", "Sources"))
+
+from yocto_api import *
+
+errmsg = YRefParam()
+
+# Setup the API to use local USB devices
+if YAPI.RegisterHub("usb", errmsg) != YAPI.SUCCESS:
+ sys.exit("init error" + str(errmsg))
+
+print('Device list')
+
+module = YModule.FirstModule()
+while module is not None:
+ print(module.get_serialNumber() + ' (' + module.get_productName() + ')')
+ module = module.nextModule()
+YAPI.FreeAPI()
\ No newline at end of file
diff --git a/yoctoLib.python.26380/Examples/Doc-ModuleControl/modulecontrol.py b/yoctoLib.python.26380/Examples/Doc-ModuleControl/modulecontrol.py
new file mode 100644
index 0000000..2f7e244
--- /dev/null
+++ b/yoctoLib.python.26380/Examples/Doc-ModuleControl/modulecontrol.py
@@ -0,0 +1,43 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+import os, sys
+
+# add ../../Sources to the PYTHONPATH
+sys.path.append(os.path.join("..", "..", "Sources"))
+import os, sys
+from yocto_api import *
+
+
+def usage():
+ sys.exit("usage: demo <serial or logical name> [ON/OFF]")
+
+
+errmsg = YRefParam()
+if YAPI.RegisterHub("usb", errmsg) != YAPI.SUCCESS:
+ sys.exit("RegisterHub error: " + str(errmsg))
+
+if len(sys.argv) < 2:
+ usage()
+
+m = YModule.FindModule(sys.argv[1]) # # use serial or logical name
+
+if m.isOnline():
+ if len(sys.argv) > 2:
+ if sys.argv[2].upper() == "ON":
+ m.set_beacon(YModule.BEACON_ON)
+ if sys.argv[2].upper() == "OFF":
+ m.set_beacon(YModule.BEACON_OFF)
+
+ print("serial: " + m.get_serialNumber())
+ print("logical name: " + m.get_logicalName())
+ print("luminosity: " + str(m.get_luminosity()))
+ if m.get_beacon() == YModule.BEACON_ON:
+ print("beacon: ON")
+ else:
+ print("beacon: OFF")
+ print("upTime: " + str(m.get_upTime() / 1000) + " sec")
+ print("USB current: " + str(m.get_usbCurrent()) + " mA")
+ print("logs:\n" + m.get_lastLogs())
+else:
+ print(sys.argv[1] + " not connected (check identification and USB cable)")
+YAPI.FreeAPI()
diff --git a/yoctoLib.python.26380/Examples/Doc-SaveSettings/savesettings.py b/yoctoLib.python.26380/Examples/Doc-SaveSettings/savesettings.py
new file mode 100644
index 0000000..dc51e3a
--- /dev/null
+++ b/yoctoLib.python.26380/Examples/Doc-SaveSettings/savesettings.py
@@ -0,0 +1,31 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+import os, sys
+
+# add ../../Sources to the PYTHONPATH
+sys.path.append(os.path.join("..", "..", "Sources"))
+from yocto_api import *
+
+
+def usage():
+ sys.exit("usage: demo <serial or logical name> <new logical name>")
+
+
+if len(sys.argv) != 3:
+ usage()
+
+errmsg = YRefParam()
+if YAPI.RegisterHub("usb", errmsg) != YAPI.SUCCESS:
+ sys.exit("RegisterHub error: " + str(errmsg))
+
+m = YModule.FindModule(sys.argv[1]) # use serial or logical name
+if m.isOnline():
+ newname = sys.argv[2]
+ if not YAPI.CheckLogicalName(newname):
+ sys.exit("Invalid name (" + newname + ")")
+ m.set_logicalName(newname)
+ m.saveToFlash() # do not forget this
+ print("Module: serial= " + m.get_serialNumber() + " / name= " + m.get_logicalName())
+else:
+ sys.exit("not connected (check identification and USB cable")
+YAPI.FreeAPI()
\ No newline at end of file
diff --git a/yoctoLib.python.26380/Examples/Prog-DataLogger/datalogger.py b/yoctoLib.python.26380/Examples/Prog-DataLogger/datalogger.py
new file mode 100644
index 0000000..7796707
--- /dev/null
+++ b/yoctoLib.python.26380/Examples/Prog-DataLogger/datalogger.py
@@ -0,0 +1,59 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+# add ../../Sources to the PYTHONPATH
+import sys
+import os
+import time
+
+sys.path.append(os.path.join("..", "..", "Sources"))
+from yocto_api import *
+
+
+def dumpSensor(sensor):
+ fmt = "%d %b %Y %H:%M:%S,%f"
+ print("Using DataLogger of " + sensor.get_friendlyName())
+ dataset = sensor.get_recordedData(0, 0)
+ print("loading summary... ")
+ dataset.loadMore()
+ summary = dataset.get_summary()
+ print("from %s to %s : min=%.3f%s avg=%.3f%s max=%.3f%s" % (
+ summary.get_startTimeUTC_asDatetime().strftime(fmt),
+ summary.get_endTimeUTC_asDatetime().strftime(fmt),
+ summary.get_minValue(), sensor.get_unit(),
+ summary.get_averageValue(), sensor.get_unit(),
+ summary.get_maxValue(), sensor.get_unit()))
+ print("loading details : 0%")
+ progress = 0
+ while progress < 100:
+ progress = dataset.loadMore()
+ # print("\b\b\b\b%3d%%" % progress)
+ details = dataset.get_measures()
+ for measure in details:
+ print("from %s to %s : min=%.3f%s avg=%.3f%s max=%.3f%s" % (
+ measure.get_startTimeUTC_asDatetime().strftime(fmt),
+ measure.get_endTimeUTC_asDatetime().strftime(fmt),
+ measure.get_minValue(), sensor.get_unit(),
+ measure.get_averageValue(), sensor.get_unit(),
+ measure.get_maxValue(), sensor.get_unit()))
+
+
+def main():
+ errmsg = YRefParam()
+ # Setup the API to use local USB devices
+ if YAPI.RegisterHub("usb", errmsg) != YAPI.SUCCESS:
+ sys.exit("init error" + errmsg.value)
+
+ if len(sys.argv) == 1 or sys.argv[1] == 'any':
+ sensor = YSensor.FirstSensor()
+ if sensor is None:
+ sys.exit("No module connected (check USB cable)")
+ else:
+ sensor = YSensor.FindSensor(sys.argv[0])
+ if not sensor.isOnline():
+ sys.exit("Sensor " + sensor.get_hardwareId() + " is not connected (check USB cable)")
+ dumpSensor(sensor)
+ YAPI.FreeAPI()
+
+
+if __name__ == '__main__':
+ main()
diff --git a/yoctoLib.python.26380/Examples/Prog-DevicesTree/demo.py b/yoctoLib.python.26380/Examples/Prog-DevicesTree/demo.py
new file mode 100644
index 0000000..34e4821
--- /dev/null
+++ b/yoctoLib.python.26380/Examples/Prog-DevicesTree/demo.py
@@ -0,0 +1,141 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+import os, sys
+
+# add ../../Sources to the PYTHONPATH
+sys.path.append(os.path.join("..", "..", "Sources"))
+from yocto_api import *
+from yocto_hubport import *
+
+
+class YoctoShield(object):
+ def __init__(self, serial):
+ self._serial = serial
+ self._subDevices = []
+
+ def getSerial(self):
+ return self._serial
+
+ def addSubdevice(self, serial):
+ for i in range(1, 5):
+ p = YHubPort.FindHubPort("%s.hubPort%d" % (self._serial, i))
+ if p.get_logicalName() == serial:
+ self._subDevices.append(serial)
+ return True
+ return False
+
+ def removeSubDevice(self, serial):
+ if serial in self._subDevices:
+ self._subDevices.remove(serial)
+
+ def describe(self):
+ print(" " + self._serial)
+ for subdevice in self._subDevices:
+ print(" " + subdevice)
+
+
+class RootDevice(object):
+ def __init__(self, serial, url):
+ self._serial = serial
+ self._url = url
+ self._shields = []
+ self._subDevices = []
+
+ def getSerial(self):
+ return self._serial
+
+ def addSubDevice(self, serial):
+ if serial[:7] == "YHUBSHL":
+ self._shields.append(YoctoShield(serial))
+ else:
+ # Device to plug look if the device is plugged on a shield
+ for shield in self._shields:
+ if shield.addSubdevice(serial):
+ return
+ self._subDevices.append(serial)
+
+ def removeSubDevice(self, serial):
+ if serial in self._subDevices:
+ self._subDevices.remove(serial)
+ for yoctoShield in reversed(list(self._shields)):
+ if yoctoShield.getSerial() == serial:
+ self._shields.remove(yoctoShield)
+ break
+ else:
+ yoctoShield.removeSubDevice(serial)
+
+ def describe(self):
+ print(self._serial + " (" + self._url + ")")
+ for subdevice in self._subDevices:
+ print(" " + subdevice)
+ for shield in self._shields:
+ shield.describe()
+
+
+__rootDevices = []
+
+
+def getYoctoHub(serial):
+ for rootDevice in __rootDevices:
+ if rootDevice.getSerial() == serial:
+ return rootDevice
+ return None
+
+
+def addRootDevice(serial, url):
+ for rootDevice in __rootDevices:
+ if rootDevice.getSerial() == serial:
+ return rootDevice
+ rootDevice = RootDevice(serial, url)
+ __rootDevices.append(rootDevice)
+ return rootDevice
+
+
+def showNetwork():
+ print("**** device inventory *****")
+ for hub in __rootDevices:
+ hub.describe()
+
+
+def deviceArrival(module):
+ serial = module.get_serialNumber()
+ parentHub = module.get_parentHub()
+ if parentHub == "":
+ # root device
+ url = module.get_url()
+ addRootDevice(serial, url)
+ else:
+ hub = getYoctoHub(parentHub)
+ if hub is not None:
+ hub.addSubDevice(serial)
+
+
+def deviceRemoval(module):
+ serial = module.get_serialNumber()
+ for rootDevice in reversed(list(__rootDevices)):
+ rootDevice.removeSubDevice(serial)
+ if rootDevice.getSerial() == serial:
+ __rootDevices.remove(rootDevice)
+
+
+# No exception please
+YAPI.DisableExceptions()
+
+# Setup the API to use local USB devices
+errmsg = YRefParam()
+if YAPI.RegisterHub("usb", errmsg) != YAPI.SUCCESS:
+ sys.exit("RegisterHub error: " + str(errmsg))
+
+if YAPI.RegisterHub("net", errmsg) != YAPI.SUCCESS:
+ sys.exit("RegisterHub error: " + str(errmsg))
+
+YAPI.RegisterDeviceArrivalCallback(deviceArrival)
+YAPI.RegisterDeviceRemovalCallback(deviceRemoval)
+
+print("Waiting for hubs to signal themselves...")
+# wait for 5 seconds, doing nothing.
+# noinspection InfiniteLoopStatement
+while True:
+ YAPI.UpdateDeviceList(errmsg) # traps plug/unplug events
+ YAPI.Sleep(1000, errmsg) # traps others events
+ showNetwork()
diff --git a/yoctoLib.python.26380/Examples/Prog-Display-DoubleBuffering/doubleBuffering.py b/yoctoLib.python.26380/Examples/Prog-Display-DoubleBuffering/doubleBuffering.py
new file mode 100644
index 0000000..5b2f9d5
--- /dev/null
+++ b/yoctoLib.python.26380/Examples/Prog-Display-DoubleBuffering/doubleBuffering.py
@@ -0,0 +1,86 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+import os, sys
+import math
+
+# add ../../Sources to the PYTHONPATH
+sys.path.append(os.path.join("..", "..", "Sources"))
+
+from yocto_api import *
+from yocto_display import *
+
+
+def usage():
+ scriptname = os.path.basename(sys.argv[0])
+ print("Usage:")
+ print(scriptname + ' <serial_number>')
+ print(scriptname + ' <logical_name>')
+ print(scriptname + ' any ')
+ sys.exit()
+
+
+def die(msg):
+ sys.exit(msg + ' (check USB cable)')
+
+
+# this is the recusive function to draw 1/3nd of the Von Koch flake
+def recursiveLine(layer, x0, y0, x1, y1, deep):
+ if deep <= 0:
+ layer.moveTo(int(x0 + 0.5), int(y0 + 0.5))
+ layer.lineTo(int(x1 + 0.5), int(y1 + 0.5))
+ else:
+ dx = (x1 - x0) / 3
+ dy = (y1 - y0) / 3
+ mx = ((x0 + x1) / 2) + (0.87 * (y1 - y0) / 3)
+ my = ((y0 + y1) / 2) - (0.87 * (x1 - x0) / 3)
+ recursiveLine(layer, x0, y0, x0 + dx, y0 + dy, deep - 1)
+ recursiveLine(layer, x0 + dx, y0 + dy, mx, my, deep - 1)
+ recursiveLine(layer, mx, my, x1 - dx, y1 - dy, deep - 1)
+ recursiveLine(layer, x1 - dx, y1 - dy, x1, y1, deep - 1)
+
+
+errmsg = YRefParam()
+
+if len(sys.argv) < 2: usage()
+
+target = sys.argv[1]
+
+# Setup the API to use local USB devices
+if YAPI.RegisterHub("usb", errmsg) != YAPI.SUCCESS:
+ sys.exit("init error" + errmsg.value)
+
+if target == 'any':
+ # retreive any display
+ disp = YDisplay.FirstDisplay()
+ if disp is None:
+ die('No module connected')
+else:
+ disp = YDisplay.FindDisplay(target + ".display")
+
+if not disp.isOnline():
+ die("Module not connected ")
+
+# display clean up
+disp.resetAll()
+
+l1 = disp.get_displayLayer(1)
+l2 = disp.get_displayLayer(2)
+l1.hide() # L1 is hidden, l2 stays visible
+centerX = disp.get_displayWidth() / 2
+centerY = disp.get_displayHeight() / 2
+radius = disp.get_displayHeight() / 2
+a = 0
+
+while True:
+ # we draw in the hidden layer
+ l1.clear()
+ for i in range(0, 3):
+ recursiveLine(l1, centerX + radius * math.cos(a + i * 2.094),
+ centerY + radius * math.sin(a + i * 2.094),
+ centerX + radius * math.cos(a + (i + 1) * 2.094),
+ centerY + radius * math.sin(a + (i + 1) * 2.094), 2)
+ # then we swap contents with the visible layer
+
+ disp.swapLayerContent(1, 2)
+ # change the flake angle
+ a += 0.1257
diff --git a/yoctoLib.python.26380/Examples/Prog-Display-DrawBitmap/drawbitmap.py b/yoctoLib.python.26380/Examples/Prog-Display-DrawBitmap/drawbitmap.py
new file mode 100644
index 0000000..7ce96e3
--- /dev/null
+++ b/yoctoLib.python.26380/Examples/Prog-Display-DrawBitmap/drawbitmap.py
@@ -0,0 +1,97 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+import os, sys
+import math
+
+# add ../../Sources to the PYTHONPATH
+sys.path.append(os.path.join("..", "..", "Sources"))
+
+import array
+from yocto_api import *
+from yocto_display import *
+
+
+def usage():
+ scriptname = os.path.basename(sys.argv[0])
+ print("Usage:")
+ print(scriptname + ' <serial_number>')
+ print(scriptname + ' <logical_name>')
+ print(scriptname + ' any ')
+ sys.exit()
+
+
+def die(msg):
+ sys.exit(msg + ' (check USB cable)')
+
+
+errmsg = YRefParam()
+
+if len(sys.argv) < 2:
+ usage()
+
+target = sys.argv[1]
+
+# Setup the API to use local USB devices
+if YAPI.RegisterHub("usb", errmsg) != YAPI.SUCCESS:
+ sys.exit("init error" + errmsg.value)
+
+if target == 'any':
+ # retreive any display
+ disp = YDisplay.FirstDisplay()
+ if disp is None:
+ die('No module connected')
+else:
+ disp = YDisplay.FindDisplay(target + ".display")
+
+if not disp.isOnline():
+ die("Module not connected ")
+
+disp.resetAll()
+# retreive the display size
+w = disp.get_displayWidth()
+h = disp.get_displayHeight()
+
+# reteive the first layer
+l0 = disp.get_displayLayer(0)
+bytesPerLines = int(w / 8)
+
+data = array.array('B')
+for i in range(0, h * bytesPerLines):
+ data.append(0)
+
+max_iteration = 50
+centerX = 0.0
+centerY = 0.0
+targetX = 0.834555980181972
+targetY = 0.204552998862566
+zoom = 1.0
+distance = 1.0
+
+while True:
+ for i in range(0, len(data)):
+ data[i] = 0
+ distance *= 0.95
+ centerX = targetX * (1 - distance)
+ centerY = targetY * (1 - distance)
+ max_iteration = int(0.5 + max_iteration + math.sqrt(zoom))
+ if max_iteration > 1500:
+ max_iteration = 1500
+ for j in range(0, h):
+ for i in range(0, w):
+ x0 = (((i - w / 2.0) / (w / 8)) / zoom) - centerX
+ y0 = (((j - h / 2.0) / (w / 8)) / zoom) - centerY
+ x = 0
+ y = 0
+ iteration = 0
+
+ while (x * x + y * y < 4) and (iteration < max_iteration):
+ xtemp = x * x - y * y + x0
+ y = 2 * x * y + y0
+ x = xtemp
+ iteration += 1
+
+ if iteration >= max_iteration:
+ data[j * bytesPerLines + (i >> 3)] |= (128 >> (i & 7))
+
+ l0.drawBitmap(0, 0, w, data, 0)
+ zoom /= 0.95
diff --git a/yoctoLib.python.26380/Examples/Prog-Display-Sequence/DisplaySequence.py b/yoctoLib.python.26380/Examples/Prog-Display-Sequence/DisplaySequence.py
new file mode 100644
index 0000000..4d92095
--- /dev/null
+++ b/yoctoLib.python.26380/Examples/Prog-Display-Sequence/DisplaySequence.py
@@ -0,0 +1,90 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+import os, sys
+import math
+
+# add ../../Sources to the PYTHONPATH
+sys.path.append(os.path.join("..", "..", "Sources"))
+from array import *
+
+from yocto_api import *
+from yocto_display import *
+
+
+def usage():
+ scriptname = os.path.basename(sys.argv[0])
+ print("Usage:")
+ print(scriptname + ' <serial_number>')
+ print(scriptname + ' <logical_name>')
+ print(scriptname + ' any ')
+ sys.exit()
+
+
+def die(msg):
+ sys.exit(msg + ' (check USB cable)')
+
+
+errmsg = YRefParam()
+
+if len(sys.argv) < 2: usage()
+
+target = sys.argv[1]
+
+# Setup the API to use local USB devices
+if YAPI.RegisterHub("usb", errmsg) != YAPI.SUCCESS:
+ sys.exit("init error" + errmsg.value)
+
+if target == 'any':
+ # retreive any display
+ disp = YDisplay.FirstDisplay()
+ if disp is None:
+ die('No module connected')
+else:
+ disp = YDisplay.FindDisplay(target + ".display")
+
+if not disp.isOnline():
+ die("Module not connected ")
+
+disp.resetAll()
+
+# retreive the display size
+
+w = disp.get_displayWidth()
+h = disp.get_displayHeight()
+
+# reteive the first layer
+l0 = disp.get_displayLayer(0)
+count = 8
+coord = array.array('b')
+for i in range(1, 2 * count): coord.append(0)
+
+# precompute the "leds" position
+ledwidth = int(w / count)
+
+for i in range(0, count):
+ coord[i] = i * ledwidth
+ coord[2 * count - i - 2] = coord[i]
+
+framesCount = 2 * count - 2
+
+# start recording
+disp.newSequence()
+
+# build one loop for recording
+for i in range(0, framesCount):
+ l0.selectColorPen(0)
+ l0.drawBar(coord[(i+framesCount-1) % framesCount], h-1,coord[(i+framesCount-1) % framesCount]+ledwidth, h-4)
+ l0.selectColorPen(0xffffff)
+ l0.drawBar(coord[i], h - 1, coord[i] + ledwidth, h - 4)
+ disp.pauseSequence(50) # records a 50ms pause.
+
+# self-call : causes an endless looop
+disp.playSequence("K2000.seq")
+# stop recording and save to device filesystem
+disp.saveSequence("K2000.seq")
+
+# play the sequence
+disp.playSequence("K2000.seq")
+
+YAPI.FreeAPI()
+print("This animation is running in background.")
diff --git a/yoctoLib.python.26380/Examples/Prog-EventBased-Programming/demo.py b/yoctoLib.python.26380/Examples/Prog-EventBased-Programming/demo.py
new file mode 100644
index 0000000..7bc6c47
--- /dev/null
+++ b/yoctoLib.python.26380/Examples/Prog-EventBased-Programming/demo.py
@@ -0,0 +1,67 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+import os, sys
+
+# add ../../Sources to the PYTHONPATH
+sys.path.append(os.path.join("..", "..", "Sources"))
+from yocto_api import *
+from yocto_anbutton import *
+
+
+def functionValueChangeCallback(fct, value):
+ info = fct.get_userData()
+ print(info['hwId'] + ": " + value + " " + info['unit'] + " (new value)")
+
+
+def sensorTimedReportCallback(fct, measure):
+ info = fct.get_userData()
+ print(info['hwId'] + ": " + str(measure.get_averageValue()) + " " + info['unit'] + " (timed report)")
+
+
+def deviceArrival(m):
+ serial = m.get_serialNumber()
+ print('Device arrival : ' + serial)
+
+ # First solution: look for a specific type of function (eg. anButton)
+ fctcount = m.functionCount()
+ for i in range(fctcount):
+ hardwareId = serial + '.' + m.functionId(i)
+ if hardwareId.find('.anButton') >= 0:
+ print('- ' + hardwareId)
+ bt = YAnButton.FindAnButton(hardwareId)
+ bt.set_userData({'hwId': hardwareId, 'unit': ''})
+ bt.registerValueCallback(functionValueChangeCallback)
+
+ # Alternate solution: register any kind of sensor on the device
+ sensor = YSensor.FirstSensor()
+ while sensor:
+ if sensor.get_module().get_serialNumber() == serial:
+ hardwareId = sensor.get_hardwareId()
+ print('- ' + hardwareId)
+ sensor.set_userData({'hwId': hardwareId, 'unit': sensor.get_unit()})
+ sensor.registerValueCallback(functionValueChangeCallback)
+ sensor.registerTimedReportCallback(sensorTimedReportCallback)
+ sensor = sensor.nextSensor()
+
+
+def deviceRemoval(m):
+ print('Device removal : ' + m.get_serialNumber())
+
+
+errmsg = YRefParam()
+
+# No exception please
+YAPI.DisableExceptions()
+
+# Setup the API to use local USB devices
+if YAPI.RegisterHub("usb", errmsg) != YAPI.SUCCESS:
+ sys.exit("init error" + errmsg.value)
+
+YAPI.RegisterDeviceArrivalCallback(deviceArrival)
+YAPI.RegisterDeviceRemovalCallback(deviceRemoval)
+
+print('Hit Ctrl-C to Stop ')
+
+while True:
+ YAPI.UpdateDeviceList(errmsg) # traps plug/unplug events
+ YAPI.Sleep(500, errmsg) # traps others events
diff --git a/yoctoLib.python.26380/Examples/Prog-FirmwareUpdate/firmwareupdate.py b/yoctoLib.python.26380/Examples/Prog-FirmwareUpdate/firmwareupdate.py
new file mode 100644
index 0000000..0219dad
--- /dev/null
+++ b/yoctoLib.python.26380/Examples/Prog-FirmwareUpdate/firmwareupdate.py
@@ -0,0 +1,78 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+import os, sys
+
+# add ../../Sources to the PYTHONPATH
+sys.path.append(os.path.join("..", "..", "Sources"))
+
+from yocto_api import *
+
+
+def upgradeSerialList(all_serials):
+ for serial in all_serials:
+ module = YModule.FindModule(serial)
+ product = module.get_productName()
+ serial = module.get_serialNumber()
+ current = module.get_firmwareRelease()
+ # check if a new firmware is available on yoctopuce.com
+ new_firmware = module.checkFirmware("www.yoctopuce.com", True)
+ if new_firmware == "":
+ print(product + " " + serial + "(rev=" + current + ") is up to date")
+ else:
+ print(product + " " + serial + "(rev=" + current + ") need be updated with firmware : ")
+ print(" " + new_firmware)
+ # execute the firmware upgrade
+ update = module.updateFirmware(new_firmware)
+ status = update.startUpdate()
+ while 100 > status >= 0:
+ new_status = update.get_progress()
+ if new_status != status:
+ print(str(new_status) + "% " + update.get_progressMessage())
+ YAPI.Sleep(500, errmsg)
+ status = new_status
+ if status < 0:
+ print("Firmware Update failed: " + update.get_progressMessage())
+ exit(1)
+ else:
+ if module.isOnline():
+ print(str(status) + "% Firmware Updated Successfully!")
+ else:
+ print(str(status) + " Firmware Update failed: module " + serial + "is not online")
+ exit(1)
+
+
+errmsg = YRefParam()
+# Setup the API to use local USB devices
+if YAPI.RegisterHub("usb", errmsg) != YAPI.SUCCESS:
+ sys.exit("init error" + errmsg.value)
+
+i = 1
+for i in range(1, len(sys.argv)):
+ print("Update module connected to hub " + sys.argv[i])
+ # Setup the API to use local USB devices
+ if YAPI.RegisterHub(sys.argv[i], errmsg) != YAPI.SUCCESS:
+ sys.exit("init error" + errmsg.value)
+
+hubs = []
+shield = []
+devices = []
+# fist step construct the list of all hub /shield and devices connected
+module = YModule.FirstModule()
+while module is not None:
+ product = module.get_productName()
+ serial = module.get_serialNumber()
+ if product == "YoctoHub-Shield":
+ shield.append(serial)
+ elif product[0:8] == "YoctoHub":
+ hubs.append(serial)
+ elif product != "VirtualHub":
+ devices.append(serial)
+ module = module.nextModule()
+# fist upgrades all Hubs...
+upgradeSerialList(hubs)
+# ... then all shield..
+upgradeSerialList(shield)
+# ... and finally all devices
+upgradeSerialList(devices)
+print("All devices are now up to date")
+YAPI.FreeAPI()
diff --git a/yoctoLib.python.26380/Examples/Prog-GetDeviceLogs/devicelog.py b/yoctoLib.python.26380/Examples/Prog-GetDeviceLogs/devicelog.py
new file mode 100644
index 0000000..1f2a195
--- /dev/null
+++ b/yoctoLib.python.26380/Examples/Prog-GetDeviceLogs/devicelog.py
@@ -0,0 +1,37 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+import sys
+
+from yocto_api import *
+
+
+def logfun(m, s):
+ print(m.get_serialNumber() + ' : ' + s)
+
+
+def deviceArrival(m):
+ serial = m.get_serialNumber()
+ print('Device arrival : ' + serial)
+ m.registerLogCallback(logfun)
+
+
+def deviceRemoval(m):
+ print('Device removal : ' + m.get_serialNumber())
+
+
+errmsg = YRefParam()
+
+# No exception please
+YAPI.DisableExceptions()
+
+# Setup the API to use local USB devices
+if YAPI.RegisterHub("usb", errmsg) != YAPI.SUCCESS:
+ sys.exit("init error" + errmsg.value)
+
+YAPI.RegisterDeviceArrivalCallback(deviceArrival)
+YAPI.RegisterDeviceRemovalCallback(deviceRemoval)
+
+print('Hit Ctrl-C to Stop ')
+while True:
+ YAPI.UpdateDeviceList(errmsg) # traps plug/unplug events
+ YAPI.Sleep(500, errmsg) # traps others events
diff --git a/yoctoLib.python.26380/Examples/Prog-HubDiscovery-method1/demo.py b/yoctoLib.python.26380/Examples/Prog-HubDiscovery-method1/demo.py
new file mode 100644
index 0000000..db5cbc6
--- /dev/null
+++ b/yoctoLib.python.26380/Examples/Prog-HubDiscovery-method1/demo.py
@@ -0,0 +1,57 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+import sys
+
+from yocto_api import *
+
+KnownHubs = []
+
+
+def HubDiscovered(serial, url):
+ global KnownHubs
+
+ # The call-back can be called several times for the same hub
+ # (the discovery technique is based on a periodic broadcast)
+ # So we use a dictionnary to avoid duplicates
+ if serial in KnownHubs:
+ return
+
+ print("hub found: " + serial + " (" + url + ")")
+
+ # connect to the hub
+ msg = YRefParam()
+ YAPI.RegisterHub(url, msg)
+
+ # find the hub module
+ hub = YModule.FindModule(serial)
+
+ # iterate on all functions on the module and find the ports
+ fctCount = hub.functionCount()
+ for i in range(fctCount):
+ # retreive the hardware name of the ith function
+ fctHwdName = hub.functionId(i)
+ if fctHwdName[:7] == "hubPort":
+ # The port logical name is always the serial#
+ # of the connected device
+ deviceid = hub.functionName(i)
+ print(" " + fctHwdName + " : " + deviceid)
+
+ # add the hub to the dictionnary so we won't have to
+ # process is again.
+ KnownHubs.append(serial)
+
+ # disconnect from the hub
+ YAPI.UnregisterHub(url)
+
+
+errmsg = YRefParam()
+print("Waiting for hubs to signal themselves...")
+
+# register the callback: HubDiscovered will be
+# invoked each time a hub signals its presence
+YAPI.RegisterHubDiscoveryCallback(HubDiscovered)
+
+# wait for 30 seconds, doing nothing.
+for j in range(30):
+ YAPI.UpdateDeviceList(errmsg)
+ YAPI.Sleep(1000, errmsg)
diff --git a/yoctoLib.python.26380/Examples/Prog-HubDiscovery-method2/demo.py b/yoctoLib.python.26380/Examples/Prog-HubDiscovery-method2/demo.py
new file mode 100644
index 0000000..42d1d46
--- /dev/null
+++ b/yoctoLib.python.26380/Examples/Prog-HubDiscovery-method2/demo.py
@@ -0,0 +1,44 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+import sys
+from yocto_api import *
+
+
+# hub discovery, method 2 : this example
+# will register any and all hubs found.
+
+# called each time a new device (networked or not) is detected
+def arrivalCallback(dev):
+ # iterate on all functions on the module and find the ports
+ isAHub = False
+ fctCount = dev.functionCount()
+ for i in range(fctCount):
+ # retreive the hardware name of the ith function
+ fctHwdName = dev.functionId(i)
+ if fctHwdName[:7] == "hubPort":
+ # the device contains a hubPortx function, so it's a hub
+ if not isAHub:
+ print("hub found : " + dev.get_friendlyName())
+ isAHub = True
+ # The port logical name is always the serial#
+ # of the connected device
+ deviceid = dev.functionName(i)
+ print(" " + fctHwdName + " : " + deviceid)
+
+
+errmsg = YRefParam()
+
+print("Waiting for hubs to signal themselves...")
+
+# configure the API to contact any networked device
+if YAPI.RegisterHub("net", errmsg) != YAPI.SUCCESS:
+ sys.exit("init error" + errmsg.value)
+
+# each time a new device is connected/discovered
+# arrivalCallback will be called.
+YAPI.RegisterDeviceArrivalCallback(arrivalCallback)
+
+# wait for 30 seconds, doing nothing.
+for j in range(30):
+ YAPI.UpdateDeviceList(errmsg)
+ YAPI.Sleep(1000, errmsg)
diff --git a/yoctoLib.python.26380/Examples/Prog-Modbus/modbus.py b/yoctoLib.python.26380/Examples/Prog-Modbus/modbus.py
new file mode 100644
index 0000000..9d88916
--- /dev/null
+++ b/yoctoLib.python.26380/Examples/Prog-Modbus/modbus.py
@@ -0,0 +1,59 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+import os, sys
+
+# add ../../Sources to the PYTHONPATH
+sys.path.append(os.path.join("..", "..", "Sources"))
+from yocto_api import *
+from yocto_serialport import *
+
+# Setup the API to use local USB devices. You can
+# use an IP address instead of 'usb' if the device
+# is connected to a network.
+
+errmsg = YRefParam()
+if YAPI.RegisterHub("usb", errmsg) != YAPI.SUCCESS:
+ sys.exit("init error" + errmsg.value)
+
+if len(sys.argv) > 1:
+ serialPort = YSerialPort.FindSerialPort(sys.argv[1])
+else:
+ serialPort = YSerialPort.FirstSerialPort()
+ if serialPort is None:
+ sys.exit('No module connected (check cable)')
+
+print("Please enter the MODBUS slave address (1...255)")
+slave = 0
+while (slave < 1) or (slave > 255):
+ slave = int(input("slave: ")) # use raw_input in python 2.x
+
+reg = 0
+while (reg < 1) or (reg >= 50000) or (reg % 10000) == 0:
+ print("Please select a Coil No (>=1), Input Bit No (>=10001+),")
+ print("Register No (>=30001) or Input Register No (>=40001)")
+ reg = int(input("No: ")) # use raw_input in python 2.x
+
+while True:
+ if reg >= 40001:
+ val = serialPort.modbusReadInputRegisters(slave, reg - 40001, 1)[0]
+ elif reg >= 30001:
+ val = serialPort.modbusReadRegisters(slave, reg - 30001, 1)[0]
+ elif reg >= 10001:
+ val = serialPort.modbusReadInputBits(slave, reg - 10001, 1)[0]
+ else:
+ val = serialPort.modbusReadBits(slave, reg - 1, 1)[0]
+
+ print("Current value: " + str(val))
+ print("Press ENTER to read again, Q to quit")
+ if (reg % 30000) < 10000:
+ print(" or enter a new value")
+
+ cmd = input(": ") # use raw_input in python 2.x
+ if (cmd == "q") or (cmd == "Q"): sys.exit()
+
+ if cmd != "" and ((reg % 30000) < 10000):
+ val = int(cmd)
+ if reg >= 30001:
+ serialPort.modbusWriteRegister(slave, reg - 30001, val)
+ else:
+ serialPort.modbusWriteBit(slave, reg - 1, val)
diff --git a/yoctoLib.python.26380/Examples/Prog-OldDataLogger/datalogger.py b/yoctoLib.python.26380/Examples/Prog-OldDataLogger/datalogger.py
new file mode 100644
index 0000000..c6849c4
--- /dev/null
+++ b/yoctoLib.python.26380/Examples/Prog-OldDataLogger/datalogger.py
@@ -0,0 +1,54 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+import os, sys
+
+# add ../../Sources to the PYTHONPATH
+sys.path.append(os.path.join("..", "..", "Sources"))
+from yocto_api import *
+from yocto_datalogger import *
+from datetime import *
+
+errmsg = YRefParam()
+# Setup the API to use local USB devices
+if YAPI.RegisterHub("usb", errmsg) != YAPI.SUCCESS:
+ sys.exit("init error" + errmsg.value)
+
+logger = YDataLogger.FirstDataLogger()
+if logger is None:
+ sys.stderr.write("No module with data logger found\n")
+ sys.stderr.write("(Device not connected or firmware too old)\n")
+ sys.exit()
+
+sys.stdout.write("Using DataLogger of " + logger.get_module().get_serialNumber() + "\n")
+
+dataStreams = YRefParam()
+if logger.get_dataStreams(dataStreams) != YAPI.SUCCESS:
+ sys.stderr.write("get_dataStreams failed \n")
+ sys.exit()
+sys.stdout.write(str(len(dataStreams.value)) + " stream(s) of data.\n")
+
+for i in range(len(dataStreams.value)):
+ s = dataStreams.value[i]
+ sys.stdout.write("Data stream " + str(i) + ":\n")
+ sys.stdout.write("- Run #" + str(s.get_runIndex()) + "\n")
+ sys.stdout.write(" time = " + datetime.fromtimestamp(s.get_startTime()).strftime('%Y-%m-%d %H:%M:%S'))
+ if s.get_startTimeUTC() > 0:
+ sys.stdout.write(
+ " UTC = " + datetime.fromtimestamp(s.get_startTimeUTC()).strftime('%Y-%m-%d %H:%M:%S') + "\n")
+ else:
+ sys.stdout.write("\n")
+
+ nrows = s.get_rowCount()
+ if nrows > 0:
+ sys.stdout.write("- " + str(nrows) + " samples, taken every ")
+ sys.stdout.write(str(s.get_dataSamplesInterval()) + " [s]\n")
+ names = s.get_columnNames()
+ for name in names:
+ sys.stdout.write(name + " ")
+ sys.stdout.write("\n")
+ table = s.get_dataRows()
+ for row in table:
+ for c in row:
+ sys.stdout.write(str(c) + " ")
+ sys.stdout.write("\n")
+sys.stdout.write("Done. Have a nice day :)\n")
diff --git a/yoctoLib.python.26380/Examples/Prog-YFiles-Example/YFilesExample.py b/yoctoLib.python.26380/Examples/Prog-YFiles-Example/YFilesExample.py
new file mode 100644
index 0000000..2dd8aa7
--- /dev/null
+++ b/yoctoLib.python.26380/Examples/Prog-YFiles-Example/YFilesExample.py
@@ -0,0 +1,71 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+import os, sys
+import math
+
+# add ../../Sources to the PYTHONPATH
+sys.path.append(os.path.join("..", "..", "Sources"))
+from array import *
+from yocto_api import *
+from yocto_files import *
+
+
+def usage():
+ scriptname = os.path.basename(sys.argv[0])
+ print("Usage:")
+ print(scriptname + ' <serial_number>')
+ print(scriptname + ' <logical_name>')
+ print(scriptname + ' any ')
+ sys.exit()
+
+
+def die(msg):
+ sys.exit(msg + ' (check USB cable)')
+
+
+errmsg = YRefParam()
+
+if len(sys.argv) < 2:
+ usage()
+
+target = sys.argv[1]
+
+# Setup the API to use local USB devices
+if YAPI.RegisterHub("usb", errmsg) != YAPI.SUCCESS:
+ sys.exit("init error" + errmsg.value)
+
+if target == 'any':
+ # retrieve any filesystem
+ files = YFiles.FirstFiles()
+ if files is None:
+ die('No module connected')
+else:
+ files = YFiles.FindFiles(target + ".files")
+
+if not files.isOnline():
+ die("Module not connected ")
+
+# create text files and upload them to the device
+for i in range(1, 5):
+ contents = "This is file " + str(i)
+ # convert the string to binary data
+ binaryData = contents.encode("latin-1")
+ # upload the file to the device
+ files.upload("file" + str(i) + ".txt", binaryData)
+
+# list files found on the device
+print("Files on device:")
+filelist = files.get_list("*")
+
+for i in range(len(filelist)):
+ file = filelist[i]
+ print('%-40s%08x %d bytes' % (file.get_name(), file.get_crc() % 0xffffffff, file.get_size()))
+
+# download a file
+binaryData = files.download("file1.txt")
+
+# and display
+print("")
+print("contents of file1.txt:")
+print(binaryData.decode("latin-1"))
+YAPI.FreeAPI()
\ No newline at end of file
diff --git a/yoctoLib.python.26380/Examples/Prog-Yocto-Color-Blink/yocto-color-blink.py b/yoctoLib.python.26380/Examples/Prog-Yocto-Color-Blink/yocto-color-blink.py
new file mode 100644
index 0000000..0b00810
--- /dev/null
+++ b/yoctoLib.python.26380/Examples/Prog-Yocto-Color-Blink/yocto-color-blink.py
@@ -0,0 +1,39 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+# add ../../Sources to the PYTHONPATH
+import sys
+import os
+
+sys.path.append(os.path.join("..", "..", "Sources"))
+from yocto_api import *
+from yocto_colorled import *
+
+
+def main():
+ errmsg = YRefParam()
+ # Setup the API to use local USB devices
+ if YAPI.RegisterHub("usb", errmsg) != YAPI.SUCCESS:
+ sys.exit("init error" + errmsg.value)
+
+ led = YColorLed.FirstColorLed()
+ if led is None:
+ sys.exit("No led connected (check USB cable)")
+
+ led.resetBlinkSeq() # cleans the sequence
+ led.addRgbMoveToBlinkSeq(0x00FF00, 500) # move to green in 500 ms
+ led.addRgbMoveToBlinkSeq(0x000000, 0) # switch to black instantaneously
+ led.addRgbMoveToBlinkSeq(0x000000, 250) # stays black for 250ms
+ led.addRgbMoveToBlinkSeq(0x0000FF, 0) # switch to blue instantaneously
+ led.addRgbMoveToBlinkSeq(0x0000FF, 100) # stays blue for 100ms
+ led.addRgbMoveToBlinkSeq(0x000000, 0) # switch to black instantaneously
+ led.addRgbMoveToBlinkSeq(0x000000, 250) # stays black for 250ms
+ led.addRgbMoveToBlinkSeq(0xFF0000, 0) # switch to red instantaneously
+ led.addRgbMoveToBlinkSeq(0xFF0000, 100) # stays red for 100ms
+ led.addRgbMoveToBlinkSeq(0x000000, 0) # switch to black instantaneously
+ led.addRgbMoveToBlinkSeq(0x000000, 1000) # stays black for 1s
+ led.startBlinkSeq() # starts sequence
+ print("The led is now blinking autonomously")
+ YAPI.FreeAPI()
+
+if __name__ == '__main__':
+ main()
diff --git a/yoctoLib.python.26380/FILES.txt b/yoctoLib.python.26380/FILES.txt
new file mode 100644
index 0000000..79e75db
--- /dev/null
+++ b/yoctoLib.python.26380/FILES.txt
@@ -0,0 +1,137 @@
+/README.txt (modif:Mon Jul 27 19:09:42 2015 size:2458)
+/README.md (modif:Fri Oct 28 15:34:32 2016 size:2108)
+/Documentation/yoctolib-python-EN.pdf (modif:Mon Jul 27 19:09:42 2015 size:5051528)
+/Documentation/yoctolib-python-FR.pdf (modif:Mon Jul 27 19:09:42 2015 size:5153681)
+/Documentation/yoctolib-python-FR.html (modif:Fri Jan 13 09:43:48 2017 size:2029678)
+/Documentation/yoctolib-python-EN.html (modif:Fri Jan 13 09:43:48 2017 size:1721775)
+/Sources/yocto_api.py (modif:Fri Jan 13 12:28:04 2017 size:277771)
+/Sources/yocto_multiaxiscontroller.py (modif:Tue Jan 10 14:55:11 2017 size:13227)
+/Sources/yocto_gps.py (modif:Tue Feb 23 15:55:25 2016 size:16174)
+/Sources/yocto_oscontrol.py (modif:Tue Feb 23 15:55:25 2016 size:7333)
+/Sources/yocto_files.py (modif:Wed Jan 13 12:14:39 2016 size:12388)
+/Sources/yocto_wireless.py (modif:Mon Jul 27 19:09:40 2015 size:15515)
+/Sources/yocto_buzzer.py (modif:Tue Feb 23 15:55:25 2016 size:15050)
+/Sources/yocto_proximity.py (modif:Tue Jan 10 16:28:17 2017 size:12672)
+/Sources/yocto_colorledcluster.py (modif:Fri Jul 1 10:46:10 2016 size:37214)
+/Sources/yocto_serialport.py (modif:Mon Aug 22 18:12:29 2016 size:56456)
+/Sources/yocto_pressure.py (modif:Tue Feb 23 15:55:25 2016 size:5937)
+/Sources/yocto_pwmoutput.py (modif:Tue Feb 23 15:55:25 2016 size:16869)
+/Sources/yocto_gyro.py (modif:Sat Jul 2 00:30:20 2016 size:25812)
+/Sources/yocto_audioout.py (modif:Tue Feb 23 15:55:25 2016 size:10268)
+/Sources/yocto_pwminput.py (modif:Tue Feb 23 15:55:25 2016 size:12842)
+/Sources/yocto_groundspeed.py (modif:Tue Feb 23 15:55:25 2016 size:6125)
+/Sources/yocto_segmenteddisplay.py (modif:Tue Feb 23 15:55:25 2016 size:7983)
+/Sources/yocto_messagebox.py (modif:Tue May 31 16:14:20 2016 size:56495)
+/Sources/yocto_colorled.py (modif:Fri May 13 07:18:05 2016 size:17951)
+/Sources/yocto_audioin.py (modif:Tue Feb 23 15:55:25 2016 size:10189)
+/Sources/yocto_cellular.py (modif:Wed Oct 19 14:40:00 2016 size:33425)
+/Sources/yocto_servo.py (modif:Tue Feb 23 15:55:25 2016 size:15163)
+/Sources/yocto_temperature.py (modif:Fri Mar 18 23:59:30 2016 size:17860)
+/Sources/yocto_anbutton.py (modif:Fri Jun 17 18:46:10 2016 size:18801)
+/Sources/yocto_digitalio.py (modif:Tue Nov 15 16:51:36 2016 size:21855)
+/Sources/yocto_led.py (modif:Fri May 13 07:18:05 2016 size:9135)
+/Sources/yocto_latitude.py (modif:Tue Feb 23 15:55:25 2016 size:5953)
+/Sources/yocto_dualpower.py (modif:Tue Feb 23 15:55:25 2016 size:9446)
+/Sources/yocto_steppermotor.py (modif:Wed Jan 4 11:30:40 2017 size:26672)
+/Sources/yocto_current.py (modif:Thu Dec 15 15:50:41 2016 size:6469)
+/Sources/yocto_voltage.py (modif:Thu Dec 15 15:50:41 2016 size:6469)
+/Sources/yocto_relay.py (modif:Tue Feb 23 15:55:25 2016 size:17077)
+/Sources/yocto_refframe.py (modif:Wed Aug 24 16:34:48 2016 size:33770)
+/Sources/yocto_watchdog.py (modif:Tue Feb 23 15:55:25 2016 size:22704)
+/Sources/yocto_pwmpowersource.py (modif:Tue Feb 23 15:55:25 2016 size:8052)
+/Sources/yocto_voc.py (modif:Tue Feb 23 15:55:25 2016 size:5958)
+/Sources/yocto_realtimeclock.py (modif:Tue Feb 23 15:55:25 2016 size:10192)
+/Sources/yocto_display.py (modif:Wed Aug 24 16:34:48 2016 size:44448)
+/Sources/yocto_accelerometer.py (modif:Fri Jul 1 00:33:14 2016 size:10844)
+/Sources/yocto_motor.py (modif:Tue Feb 23 15:55:25 2016 size:21763)
+/Sources/yocto_bluetoothlink.py (modif:Tue Feb 23 15:55:25 2016 size:16982)
+/Sources/yocto_spiport.py (modif:Tue Jul 26 18:39:12 2016 size:40815)
+/Sources/yocto_humidity.py (modif:Tue Feb 23 15:55:25 2016 size:8160)
+/Sources/cdll/libyapi.dylib (modif:Fri Jan 13 12:29:41 2017 size:328388)
+/Sources/cdll/libyapi-mips.so (modif:Fri Jan 13 12:34:18 2017 size:638550)
+/Sources/cdll/libyapi-mipsel.so (modif:Fri Jan 13 12:34:51 2017 size:636519)
+/Sources/cdll/yapi.dll (modif:Fri Jan 13 12:30:05 2017 size:242176)
+/Sources/cdll/libyapi-armhf.so (modif:Fri Jan 13 12:51:45 2017 size:516536)
+/Sources/cdll/libyapi-armel.so (modif:Fri Jan 13 12:35:00 2017 size:579657)
+/Sources/cdll/libyapi-amd64.so (modif:Fri Jan 13 12:33:11 2017 size:553523)
+/Sources/cdll/yapi64.dll (modif:Fri Jan 13 12:30:47 2017 size:287232)
+/Sources/cdll/libyapi-i386.so (modif:Fri Jan 13 12:33:43 2017 size:504522)
+/Sources/yocto_wakeupschedule.py (modif:Tue Feb 23 15:55:25 2016 size:14614)
+/Sources/yocto_rangefinder.py (modif:Wed Jan 11 16:52:25 2017 size:9939)
+/Sources/yocto_carbondioxide.py (modif:Wed Nov 9 09:21:47 2016 size:10288)
+/Sources/yocto_wakeupmonitor.py (modif:Tue Feb 23 15:55:25 2016 size:15018)
+/Sources/yocto_poweroutput.py (modif:Tue Feb 23 15:55:25 2016 size:7587)
+/Sources/yocto_currentloopoutput.py (modif:Tue Feb 23 15:55:25 2016 size:11420)
+/Sources/yocto_lightsensor.py (modif:Tue Feb 23 15:55:25 2016 size:8937)
+/Sources/yocto_tilt.py (modif:Fri Jul 1 00:33:14 2016 size:7814)
+/Sources/yocto_longitude.py (modif:Tue Feb 23 15:55:25 2016 size:6006)
+/Sources/yocto_altitude.py (modif:Tue Feb 23 15:55:25 2016 size:8780)
+/Sources/yocto_quadraturedecoder.py (modif:Tue Feb 23 15:55:25 2016 size:8946)
+/Sources/yocto_compass.py (modif:Fri Jul 1 00:33:14 2016 size:8726)
+/Sources/yocto_network.py (modif:Fri Apr 15 11:39:03 2016 size:40717)
+/Sources/yocto_datalogger.py (modif:Wed Dec 2 14:00:15 2015 size:24280)
+/Sources/yocto_power.py (modif:Tue Feb 23 15:55:25 2016 size:8869)
+/Sources/yocto_magnetometer.py (modif:Fri Jul 1 00:33:14 2016 size:10082)
+/Sources/yocto_hubport.py (modif:Tue Feb 23 15:55:25 2016 size:9022)
+/Sources/yocto_genericsensor.py (modif:Fri Mar 18 23:59:30 2016 size:15410)
+/Examples/Doc-GettingStarted-Yocto-Thermocouple/helloworld.py (modif:Fri Sep 23 16:59:36 2016 size:1449)
+/Examples/Doc-GettingStarted-Yocto-milliVolt-Rx/helloworld.py (modif:Fri Oct 7 18:57:40 2016 size:1353)
+/Examples/Doc-GettingStarted-Yocto-PowerRelay/helloworld.py (modif:Fri Sep 23 16:59:36 2016 size:1169)
+/Examples/Doc-GettingStarted-Yocto-Thermistor-C/helloworld.py (modif:Fri Sep 23 16:59:36 2016 size:1950)
+/Examples/Doc-GettingStarted-Yocto-Light/helloworld.py (modif:Fri Sep 23 16:59:36 2016 size:1131)
+/Examples/Prog-GetDeviceLogs/devicelog.py (modif:Fri Sep 23 16:59:36 2016 size:852)
+/Examples/Doc-GettingStarted-Yocto-Temperature/helloworld.py (modif:Fri Sep 23 16:59:36 2016 size:1136)
+/Examples/Doc-GettingStarted-Yocto-Meteo/helloworld.py (modif:Fri Sep 23 16:59:36 2016 size:1502)
+/Examples/Prog-Display-DrawBitmap/drawbitmap.py (modif:Fri Sep 23 16:59:36 2016 size:2274)
+/Examples/Doc-GettingStarted-Yocto-RS232/helloworld.py (modif:Fri Sep 23 16:59:36 2016 size:1215)
+/Examples/Doc-GettingStarted-Yocto-Motor-DC/helloworld.py (modif:Fri Oct 7 17:23:08 2016 size:2087)
+/Examples/Doc-GettingStarted-Yocto-VOC/helloworld.py (modif:Fri Oct 7 17:23:08 2016 size:1141)
+/Examples/Prog-Display-Sequence/DisplaySequence.py (modif:Fri Sep 23 16:59:36 2016 size:2051)
+/Examples/Doc-GettingStarted-Yocto-0-10V-Rx/helloworld.py (modif:Fri Sep 23 16:59:36 2016 size:1530)
+/Examples/Doc-GettingStarted-Yocto-3D/helloworld.py (modif:Fri Sep 23 16:59:36 2016 size:1990)
+/Examples/Prog-OldDataLogger/datalogger.py (modif:Fri Sep 23 16:59:36 2016 size:1941)
+/Examples/Doc-Inventory/inventory.py (modif:Fri Sep 23 16:59:36 2016 size:535)
+/Examples/Doc-GettingStarted-Yocto-RS485/helloworld.py (modif:Fri Oct 7 17:23:08 2016 size:2002)
+/Examples/Doc-ModuleControl/modulecontrol.py (modif:Fri Sep 23 16:59:36 2016 size:1255)
+/Examples/Doc-GettingStarted-Yocto-MaxiPowerRelay/helloworld.py (modif:Fri Sep 23 16:59:36 2016 size:1422)
+/Examples/Doc-GettingStarted-Yocto-milliVolt-Rx-BNC/helloworld.py (modif:Fri Oct 7 17:23:08 2016 size:1353)
+/Examples/Prog-FirmwareUpdate/firmwareupdate.py (modif:Fri Sep 23 16:59:36 2016 size:2845)
+/Examples/Prog-YFiles-Example/YFilesExample.py (modif:Fri Sep 23 16:59:36 2016 size:1674)
+/Examples/Doc-GettingStarted-Yocto-PWM-Rx/helloworld.py (modif:Fri Sep 23 16:59:36 2016 size:1382)
+/Examples/Doc-GettingStarted-Yocto-CO2/helloworld.py (modif:Fri Sep 23 16:59:36 2016 size:1212)
+/Examples/Doc-GettingStarted-Yocto-WatchdogDC/helloworld.py (modif:Fri Sep 23 16:59:36 2016 size:1285)
+/Examples/Prog-EventBased-Programming/demo.py (modif:Fri Sep 23 16:59:36 2016 size:2230)
+/Examples/Prog-DevicesTree/demo.py (modif:Fri Sep 23 16:59:36 2016 size:4072)
+/Examples/Doc-GettingStarted-Yocto-MaxiCoupler/helloworld.py (modif:Fri Sep 23 16:59:36 2016 size:1423)
+/Examples/Doc-GettingStarted-Yocto-Color/helloworld.py (modif:Fri Oct 7 18:57:40 2016 size:1827)
+/Examples/Doc-GettingStarted-Yocto-4-20mA-Rx/helloworld.py (modif:Fri Sep 23 16:59:36 2016 size:1532)
+/Examples/Doc-GettingStarted-Yocto-Buzzer/helloworld.py (modif:Fri Oct 7 17:23:08 2016 size:1933)
+/Examples/Doc-GettingStarted-Yocto-MiniDisplay/helloworld.py (modif:Fri Oct 7 18:57:40 2016 size:1943)
+/Examples/Doc-GettingStarted-Yocto-MaxiThermistor/helloworld.py (modif:Fri Sep 23 16:59:36 2016 size:1950)
+/Examples/Doc-GettingStarted-Yocto-Proximity/helloworld.py (modif:Tue Jan 3 18:30:57 2017 size:1386)
+/Examples/Doc-GettingStarted-Yocto-Demo/helloworld.py (modif:Fri Sep 23 16:59:36 2016 size:1492)
+/Examples/Prog-HubDiscovery-method1/demo.py (modif:Fri Sep 23 16:59:36 2016 size:1598)
+/Examples/Doc-GettingStarted-Yocto-Servo/helloworld.py (modif:Fri Oct 7 18:57:40 2016 size:1260)
+/Examples/Prog-Modbus/modbus.py (modif:Fri Sep 23 16:59:36 2016 size:1963)
+/Examples/Doc-GettingStarted-Yocto-Watt/helloworld.py (modif:Fri Sep 23 16:59:36 2016 size:1091)
+/Examples/Doc-GettingStarted-Yocto-LatchedRelay/helloworld.py (modif:Fri Sep 23 16:59:36 2016 size:1169)
+/Examples/Prog-HubDiscovery-method2/demo.py (modif:Fri Sep 23 16:59:36 2016 size:1442)
+/Examples/Doc-GettingStarted-Yocto-PT100/helloworld.py (modif:Fri Sep 23 16:59:36 2016 size:1136)
+/Examples/Doc-GettingStarted-Yocto-Altimeter/helloworld.py (modif:Fri Oct 7 17:23:08 2016 size:1591)
+/Examples/Doc-GettingStarted-Yocto-SPI/helloworld.py (modif:Fri Oct 7 17:23:08 2016 size:2026)
+/Examples/Prog-DataLogger/datalogger.py (modif:Fri Sep 23 16:59:36 2016 size:2025)
+/Examples/Doc-GettingStarted-Yocto-PWM-Tx/helloworld.py (modif:Fri Sep 23 16:59:36 2016 size:1847)
+/Examples/Doc-GettingStarted-Yocto-Maxi-IO/helloworld.py (modif:Fri Oct 7 17:23:08 2016 size:1994)
+/Examples/Prog-Display-DoubleBuffering/doubleBuffering.py (modif:Fri Sep 23 16:59:36 2016 size:2387)
+/Examples/Doc-GettingStarted-Yocto-Amp/helloworld.py (modif:Fri Oct 7 17:23:08 2016 size:1436)
+/Examples/Doc-GettingStarted-Yocto-Serial/helloworld.py (modif:Fri Sep 23 16:59:36 2016 size:1331)
+/Examples/Doc-SaveSettings/savesettings.py (modif:Fri Sep 23 16:59:36 2016 size:873)
+/Examples/Doc-GettingStarted-Yocto-4-20mA-Tx/helloworld.py (modif:Fri Sep 23 16:59:36 2016 size:1441)
+/Examples/Doc-GettingStarted-Yocto-MaxiDisplay/helloworld.py (modif:Fri Oct 7 18:57:40 2016 size:1944)
+/Examples/Doc-GettingStarted-Yocto-Display/helloworld.py (modif:Fri Oct 7 18:57:40 2016 size:1944)
+/Examples/Doc-GettingStarted-Yocto-GPS/helloworld.py (modif:Fri Sep 23 16:59:36 2016 size:1171)
+/Examples/Doc-GettingStarted-Yocto-PowerColor/helloworld.py (modif:Fri Sep 23 16:59:36 2016 size:1390)
+/Examples/Doc-GettingStarted-Yocto-Knob/helloworld.py (modif:Fri Sep 23 16:59:36 2016 size:1896)
+/Examples/Doc-GettingStarted-Yocto-Relay/helloworld.py (modif:Fri Oct 7 17:23:08 2016 size:1330)
+/Examples/Prog-Yocto-Color-Blink/yocto-color-blink.py (modif:Fri Sep 23 16:59:36 2016 size:1498)
+/Examples/Doc-GettingStarted-Yocto-Volt/helloworld.py (modif:Fri Sep 23 16:59:36 2016 size:1273)
diff --git a/yoctoLib.python.26380/README.md b/yoctoLib.python.26380/README.md
new file mode 100644
index 0000000..4a7a891
--- /dev/null
+++ b/yoctoLib.python.26380/README.md
@@ -0,0 +1,70 @@
+Yoctopuce library for Python
+============================
+
+## License information
+
+
+Copyright (C) 2011 and beyond by Yoctopuce Sarl, Switzerland.
+
+Yoctopuce Sarl (hereafter Licensor) grants to you a perpetual
+non-exclusive license to use, modify, copy and integrate this
+file into your software for the sole purpose of interfacing
+with Yoctopuce products.
+
+You may reproduce and distribute copies of this file in
+source or object form, as long as the sole purpose of this
+code is to interface with Yoctopuce products. You must retain
+this notice in the distributed source file.
+
+You should refer to Yoctopuce General Terms and Conditions
+for additional information regarding your rights and
+obligations.
+
+THE SOFTWARE AND DOCUMENTATION ARE PROVIDED "AS IS" WITHOUT
+WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
+WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO
+EVENT SHALL LICENSOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
+INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA,
+COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR
+SERVICES, ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT
+LIMITED TO ANY DEFENSE THEREOF), ANY CLAIMS FOR INDEMNITY OR
+CONTRIBUTION, OR OTHER SIMILAR COSTS, WHETHER ASSERTED ON THE
+BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE), BREACH OF
+WARRANTY, OR OTHERWISE.
+
+
+## Content of this package
+
+* Documentation/
+
+ API Reference, in HTML and PDF format
+
+* Examples/
+
+ Directory with sample programs in Python
+
+* Sources/
+
+ Source code of the high-level library (in Python)
+
+* Sources/cdll/
+
+ Low-level library (C source code with makefile
+ to build this library is available in the C++ library)
+
+* FILES.txt
+
+ List of files contained in this archive
+
+* RELEASE.txt
+
+ Release notes
+
+## Usage
+
+For more details, refer to the documentation specific to each product, which
+includes sample code with explanations, and a programming reference manual.
+In case of trouble, contact support@yoctopuce.com
+
+Have fun !
diff --git a/yoctoLib.python.26380/README.txt b/yoctoLib.python.26380/README.txt
new file mode 100644
index 0000000..957bb15
--- /dev/null
+++ b/yoctoLib.python.26380/README.txt
@@ -0,0 +1,52 @@
+/*********************************************************************/
+ *
+ * Y O C T O P U C E L I B R A R Y f o r P y t h o n
+ *
+ * - - - - - - - - - License information: - - - - - - - - - - - - - -
+ *
+ * Copyright (C) 2011 and beyond by Yoctopuce Sarl, Switzerland.
+ *
+ * Yoctopuce Sarl (hereafter Licensor) grants to you a perpetual
+ * non-exclusive license to use, modify, copy and integrate this
+ * file into your software for the sole purpose of interfacing
+ * with Yoctopuce products.
+ *
+ * You may reproduce and distribute copies of this file in
+ * source or object form, as long as the sole purpose of this
+ * code is to interface with Yoctopuce products. You must retain
+ * this notice in the distributed source file.
+ *
+ * You should refer to Yoctopuce General Terms and Conditions
+ * for additional information regarding your rights and
+ * obligations.
+ *
+ * THE SOFTWARE AND DOCUMENTATION ARE PROVIDED "AS IS" WITHOUT
+ * WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
+ * WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS
+ * FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO
+ * EVENT SHALL LICENSOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
+ * INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA,
+ * COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR
+ * SERVICES, ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT
+ * LIMITED TO ANY DEFENSE THEREOF), ANY CLAIMS FOR INDEMNITY OR
+ * CONTRIBUTION, OR OTHER SIMILAR COSTS, WHETHER ASSERTED ON THE
+ * BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE), BREACH OF
+ * WARRANTY, OR OTHERWISE.
+ *
+ *********************************************************************/
+
+Content of this package:
+------------------------
+Documentation/ API Reference, in HTML and PDF format
+Examples/ Directory with sample programs in Python
+Sources/ Source code of the high-level library (in Python)
+Sources/cdll/ Low-level library (C source code with makefile
+ to build this library is available in the C++ library)
+FILES.txt List of files contained in this archive
+RELEASE.txt Release notes
+
+For more details, refer to the documentation specific to each product, which
+includes sample code with explanations, and a programming reference manual.
+In case of trouble, contact support@yoctopuce.com
+
+Have fun !
diff --git a/yoctoLib.python.26380/RELEASE.txt b/yoctoLib.python.26380/RELEASE.txt
new file mode 100644
index 0000000..6e89d2e
--- /dev/null
+++ b/yoctoLib.python.26380/RELEASE.txt
@@ -0,0 +1,2 @@
+- Add loadAttribute method
+- Add Yocto-Proximity example
diff --git a/yoctoLib.python.26380/Sources/__pycache__/yocto_api.cpython-35.pyc b/yoctoLib.python.26380/Sources/__pycache__/yocto_api.cpython-35.pyc
new file mode 100644
index 0000000..91a1a3d
Binary files /dev/null and b/yoctoLib.python.26380/Sources/__pycache__/yocto_api.cpython-35.pyc differ
diff --git a/yoctoLib.python.26380/Sources/__pycache__/yocto_relay.cpython-35.pyc b/yoctoLib.python.26380/Sources/__pycache__/yocto_relay.cpython-35.pyc
new file mode 100644
index 0000000..4005b11
Binary files /dev/null and b/yoctoLib.python.26380/Sources/__pycache__/yocto_relay.cpython-35.pyc differ
diff --git a/yoctoLib.python.26380/Sources/cdll/libyapi-amd64.so b/yoctoLib.python.26380/Sources/cdll/libyapi-amd64.so
new file mode 100644
index 0000000..a8c29d8
Binary files /dev/null and b/yoctoLib.python.26380/Sources/cdll/libyapi-amd64.so differ
diff --git a/yoctoLib.python.26380/Sources/cdll/libyapi-armel.so b/yoctoLib.python.26380/Sources/cdll/libyapi-armel.so
new file mode 100644
index 0000000..af9bb82
Binary files /dev/null and b/yoctoLib.python.26380/Sources/cdll/libyapi-armel.so differ
diff --git a/yoctoLib.python.26380/Sources/cdll/libyapi-armhf.so b/yoctoLib.python.26380/Sources/cdll/libyapi-armhf.so
new file mode 100644
index 0000000..5413c88
Binary files /dev/null and b/yoctoLib.python.26380/Sources/cdll/libyapi-armhf.so differ
diff --git a/yoctoLib.python.26380/Sources/cdll/libyapi-i386.so b/yoctoLib.python.26380/Sources/cdll/libyapi-i386.so
new file mode 100644
index 0000000..0d4b712
Binary files /dev/null and b/yoctoLib.python.26380/Sources/cdll/libyapi-i386.so differ
diff --git a/yoctoLib.python.26380/Sources/cdll/libyapi-mips.so b/yoctoLib.python.26380/Sources/cdll/libyapi-mips.so
new file mode 100644
index 0000000..161e9de
Binary files /dev/null and b/yoctoLib.python.26380/Sources/cdll/libyapi-mips.so differ
diff --git a/yoctoLib.python.26380/Sources/cdll/libyapi-mipsel.so b/yoctoLib.python.26380/Sources/cdll/libyapi-mipsel.so
new file mode 100644
index 0000000..803d70f
Binary files /dev/null and b/yoctoLib.python.26380/Sources/cdll/libyapi-mipsel.so differ
diff --git a/yoctoLib.python.26380/Sources/cdll/libyapi.dylib b/yoctoLib.python.26380/Sources/cdll/libyapi.dylib
new file mode 100644
index 0000000..be3e763
Binary files /dev/null and b/yoctoLib.python.26380/Sources/cdll/libyapi.dylib differ
diff --git a/yoctoLib.python.26380/Sources/cdll/yapi.dll b/yoctoLib.python.26380/Sources/cdll/yapi.dll
new file mode 100644
index 0000000..3dd9a17
Binary files /dev/null and b/yoctoLib.python.26380/Sources/cdll/yapi.dll differ
diff --git a/yoctoLib.python.26380/Sources/cdll/yapi64.dll b/yoctoLib.python.26380/Sources/cdll/yapi64.dll
new file mode 100644
index 0000000..71bce39
Binary files /dev/null and b/yoctoLib.python.26380/Sources/cdll/yapi64.dll differ
diff --git a/yoctoLib.python.26380/Sources/yocto_accelerometer.py b/yoctoLib.python.26380/Sources/yocto_accelerometer.py
new file mode 100644
index 0000000..73f4dbe
--- /dev/null
+++ b/yoctoLib.python.26380/Sources/yocto_accelerometer.py
@@ -0,0 +1,265 @@
+#*********************************************************************
+#*
+#* $Id: yocto_accelerometer.py 24934 2016-06-30 22:32:01Z mvuilleu $
+#*
+#* Implements yFindAccelerometer(), the high-level API for Accelerometer functions
+#*
+#* - - - - - - - - - License information: - - - - - - - - -
+#*
+#* Copyright (C) 2011 and beyond by Yoctopuce Sarl, Switzerland.
+#*
+#* Yoctopuce Sarl (hereafter Licensor) grants to you a perpetual
+#* non-exclusive license to use, modify, copy and integrate this
+#* file into your software for the sole purpose of interfacing
+#* with Yoctopuce products.
+#*
+#* You may reproduce and distribute copies of this file in
+#* source or object form, as long as the sole purpose of this
+#* code is to interface with Yoctopuce products. You must retain
+#* this notice in the distributed source file.
+#*
+#* You should refer to Yoctopuce General Terms and Conditions
+#* for additional information regarding your rights and
+#* obligations.
+#*
+#* THE SOFTWARE AND DOCUMENTATION ARE PROVIDED 'AS IS' WITHOUT
+#* WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
+#* WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS
+#* FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO
+#* EVENT SHALL LICENSOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
+#* INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA,
+#* COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR
+#* SERVICES, ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT
+#* LIMITED TO ANY DEFENSE THEREOF), ANY CLAIMS FOR INDEMNITY OR
+#* CONTRIBUTION, OR OTHER SIMILAR COSTS, WHETHER ASSERTED ON THE
+#* BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE), BREACH OF
+#* WARRANTY, OR OTHERWISE.
+#*
+#*********************************************************************/
+
+
+__docformat__ = 'restructuredtext en'
+from yocto_api import *
+
+
+#--- (YAccelerometer class start)
+#noinspection PyProtectedMember
+class YAccelerometer(YSensor):
+ """
+ The YSensor class is the parent class for all Yoctopuce sensors. It can be
+ used to read the current value and unit of any sensor, read the min/max
+ value, configure autonomous recording frequency and access recorded data.
+ It also provide a function to register a callback invoked each time the
+ observed value changes, or at a predefined interval. Using this class rather
+ than a specific subclass makes it possible to create generic applications
+ that work with any Yoctopuce sensor, even those that do not yet exist.
+ Note: The YAnButton class is the only analog input which does not inherit
+ from YSensor.
+
+ """
+#--- (end of YAccelerometer class start)
+ #--- (YAccelerometer return codes)
+ #--- (end of YAccelerometer return codes)
+ #--- (YAccelerometer dlldef)
+ #--- (end of YAccelerometer dlldef)
+ #--- (YAccelerometer definitions)
+ BANDWIDTH_INVALID = YAPI.INVALID_INT
+ XVALUE_INVALID = YAPI.INVALID_DOUBLE
+ YVALUE_INVALID = YAPI.INVALID_DOUBLE
+ ZVALUE_INVALID = YAPI.INVALID_DOUBLE
+ GRAVITYCANCELLATION_OFF = 0
+ GRAVITYCANCELLATION_ON = 1
+ GRAVITYCANCELLATION_INVALID = -1
+ #--- (end of YAccelerometer definitions)
+
+ def __init__(self, func):
+ super(YAccelerometer, self).__init__(func)
+ self._className = 'Accelerometer'
+ #--- (YAccelerometer attributes)
+ self._callback = None
+ self._bandwidth = YAccelerometer.BANDWIDTH_INVALID
+ self._xValue = YAccelerometer.XVALUE_INVALID
+ self._yValue = YAccelerometer.YVALUE_INVALID
+ self._zValue = YAccelerometer.ZVALUE_INVALID
+ self._gravityCancellation = YAccelerometer.GRAVITYCANCELLATION_INVALID
+ #--- (end of YAccelerometer attributes)
+
+ #--- (YAccelerometer implementation)
+ def _parseAttr(self, member):
+ if member.name == "bandwidth":
+ self._bandwidth = member.ivalue
+ return 1
+ if member.name == "xValue":
+ self._xValue = round(member.ivalue * 1000.0 / 65536.0) / 1000.0
+ return 1
+ if member.name == "yValue":
+ self._yValue = round(member.ivalue * 1000.0 / 65536.0) / 1000.0
+ return 1
+ if member.name == "zValue":
+ self._zValue = round(member.ivalue * 1000.0 / 65536.0) / 1000.0
+ return 1
+ if member.name == "gravityCancellation":
+ self._gravityCancellation = member.ivalue
+ return 1
+ super(YAccelerometer, self)._parseAttr(member)
+
+ def get_bandwidth(self):
+ """
+ Returns the measure update frequency, measured in Hz (Yocto-3D-V2 only).
+
+ @return an integer corresponding to the measure update frequency, measured in Hz (Yocto-3D-V2 only)
+
+ On failure, throws an exception or returns YAccelerometer.BANDWIDTH_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YAccelerometer.BANDWIDTH_INVALID
+ return self._bandwidth
+
+ def set_bandwidth(self, newval):
+ """
+ Changes the measure update frequency, measured in Hz (Yocto-3D-V2 only). When the
+ frequency is lower, the device performs averaging.
+
+ @param newval : an integer corresponding to the measure update frequency, measured in Hz (Yocto-3D-V2 only)
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("bandwidth", rest_val)
+
+ def get_xValue(self):
+ """
+ Returns the X component of the acceleration, as a floating point number.
+
+ @return a floating point number corresponding to the X component of the acceleration, as a floating point number
+
+ On failure, throws an exception or returns YAccelerometer.XVALUE_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YAccelerometer.XVALUE_INVALID
+ return self._xValue
+
+ def get_yValue(self):
+ """
+ Returns the Y component of the acceleration, as a floating point number.
+
+ @return a floating point number corresponding to the Y component of the acceleration, as a floating point number
+
+ On failure, throws an exception or returns YAccelerometer.YVALUE_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YAccelerometer.YVALUE_INVALID
+ return self._yValue
+
+ def get_zValue(self):
+ """
+ Returns the Z component of the acceleration, as a floating point number.
+
+ @return a floating point number corresponding to the Z component of the acceleration, as a floating point number
+
+ On failure, throws an exception or returns YAccelerometer.ZVALUE_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YAccelerometer.ZVALUE_INVALID
+ return self._zValue
+
+ def get_gravityCancellation(self):
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YAccelerometer.GRAVITYCANCELLATION_INVALID
+ return self._gravityCancellation
+
+ def set_gravityCancellation(self, newval):
+ rest_val = "1" if newval > 0 else "0"
+ return self._setAttr("gravityCancellation", rest_val)
+
+ @staticmethod
+ def FindAccelerometer(func):
+ """
+ Retrieves an accelerometer for a given identifier.
+ The identifier can be specified using several formats:
+ <ul>
+ <li>FunctionLogicalName</li>
+ <li>ModuleSerialNumber.FunctionIdentifier</li>
+ <li>ModuleSerialNumber.FunctionLogicalName</li>
+ <li>ModuleLogicalName.FunctionIdentifier</li>
+ <li>ModuleLogicalName.FunctionLogicalName</li>
+ </ul>
+
+ This function does not require that the accelerometer is online at the time
+ it is invoked. The returned object is nevertheless valid.
+ Use the method YAccelerometer.isOnline() to test if the accelerometer is
+ indeed online at a given time. In case of ambiguity when looking for
+ an accelerometer by logical name, no error is notified: the first instance
+ found is returned. The search is performed first by hardware name,
+ then by logical name.
+
+ @param func : a string that uniquely characterizes the accelerometer
+
+ @return a YAccelerometer object allowing you to drive the accelerometer.
+ """
+ # obj
+ obj = YFunction._FindFromCache("Accelerometer", func)
+ if obj is None:
+ obj = YAccelerometer(func)
+ YFunction._AddToCache("Accelerometer", func, obj)
+ return obj
+
+ def nextAccelerometer(self):
+ """
+ Continues the enumeration of accelerometers started using yFirstAccelerometer().
+
+ @return a pointer to a YAccelerometer object, corresponding to
+ an accelerometer currently online, or a None pointer
+ if there are no more accelerometers to enumerate.
+ """
+ hwidRef = YRefParam()
+ if YAPI.YISERR(self._nextFunction(hwidRef)):
+ return None
+ if hwidRef.value == "":
+ return None
+ return YAccelerometer.FindAccelerometer(hwidRef.value)
+
+#--- (end of YAccelerometer implementation)
+
+#--- (Accelerometer functions)
+
+ @staticmethod
+ def FirstAccelerometer():
+ """
+ Starts the enumeration of accelerometers currently accessible.
+ Use the method YAccelerometer.nextAccelerometer() to iterate on
+ next accelerometers.
+
+ @return a pointer to a YAccelerometer object, corresponding to
+ the first accelerometer currently online, or a None pointer
+ if there are none.
+ """
+ devRef = YRefParam()
+ neededsizeRef = YRefParam()
+ serialRef = YRefParam()
+ funcIdRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+ errmsgRef = YRefParam()
+ size = YAPI.C_INTSIZE
+ #noinspection PyTypeChecker,PyCallingNonCallable
+ p = (ctypes.c_int * 1)()
+ err = YAPI.apiGetFunctionsByClass("Accelerometer", 0, p, size, neededsizeRef, errmsgRef)
+
+ if YAPI.YISERR(err) or not neededsizeRef.value:
+ return None
+
+ if YAPI.YISERR(
+ YAPI.yapiGetFunctionInfo(p[0], devRef, serialRef, funcIdRef, funcNameRef, funcValRef, errmsgRef)):
+ return None
+
+ return YAccelerometer.FindAccelerometer(serialRef.value + "." + funcIdRef.value)
+
+#--- (end of Accelerometer functions)
diff --git a/yoctoLib.python.26380/Sources/yocto_altitude.py b/yoctoLib.python.26380/Sources/yocto_altitude.py
new file mode 100644
index 0000000..6d7e923
--- /dev/null
+++ b/yoctoLib.python.26380/Sources/yocto_altitude.py
@@ -0,0 +1,229 @@
+#*********************************************************************
+#*
+#* $Id: yocto_altitude.py 23243 2016-02-23 14:13:12Z seb $
+#*
+#* Implements yFindAltitude(), the high-level API for Altitude functions
+#*
+#* - - - - - - - - - License information: - - - - - - - - -
+#*
+#* Copyright (C) 2011 and beyond by Yoctopuce Sarl, Switzerland.
+#*
+#* Yoctopuce Sarl (hereafter Licensor) grants to you a perpetual
+#* non-exclusive license to use, modify, copy and integrate this
+#* file into your software for the sole purpose of interfacing
+#* with Yoctopuce products.
+#*
+#* You may reproduce and distribute copies of this file in
+#* source or object form, as long as the sole purpose of this
+#* code is to interface with Yoctopuce products. You must retain
+#* this notice in the distributed source file.
+#*
+#* You should refer to Yoctopuce General Terms and Conditions
+#* for additional information regarding your rights and
+#* obligations.
+#*
+#* THE SOFTWARE AND DOCUMENTATION ARE PROVIDED 'AS IS' WITHOUT
+#* WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
+#* WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS
+#* FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO
+#* EVENT SHALL LICENSOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
+#* INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA,
+#* COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR
+#* SERVICES, ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT
+#* LIMITED TO ANY DEFENSE THEREOF), ANY CLAIMS FOR INDEMNITY OR
+#* CONTRIBUTION, OR OTHER SIMILAR COSTS, WHETHER ASSERTED ON THE
+#* BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE), BREACH OF
+#* WARRANTY, OR OTHERWISE.
+#*
+#*********************************************************************/
+
+
+__docformat__ = 'restructuredtext en'
+from yocto_api import *
+
+
+#--- (YAltitude class start)
+#noinspection PyProtectedMember
+class YAltitude(YSensor):
+ """
+ The Yoctopuce class YAltitude allows you to read and configure Yoctopuce altitude
+ sensors. It inherits from the YSensor class the core functions to read measurements,
+ register callback functions, access to the autonomous datalogger.
+ This class adds the ability to configure the barometric pressure adjusted to
+ sea level (QNH) for barometric sensors.
+
+ """
+#--- (end of YAltitude class start)
+ #--- (YAltitude return codes)
+ #--- (end of YAltitude return codes)
+ #--- (YAltitude dlldef)
+ #--- (end of YAltitude dlldef)
+ #--- (YAltitude definitions)
+ QNH_INVALID = YAPI.INVALID_DOUBLE
+ TECHNOLOGY_INVALID = YAPI.INVALID_STRING
+ #--- (end of YAltitude definitions)
+
+ def __init__(self, func):
+ super(YAltitude, self).__init__(func)
+ self._className = 'Altitude'
+ #--- (YAltitude attributes)
+ self._callback = None
+ self._qnh = YAltitude.QNH_INVALID
+ self._technology = YAltitude.TECHNOLOGY_INVALID
+ #--- (end of YAltitude attributes)
+
+ #--- (YAltitude implementation)
+ def _parseAttr(self, member):
+ if member.name == "qnh":
+ self._qnh = round(member.ivalue * 1000.0 / 65536.0) / 1000.0
+ return 1
+ if member.name == "technology":
+ self._technology = member.svalue
+ return 1
+ super(YAltitude, self)._parseAttr(member)
+
+ def set_currentValue(self, newval):
+ """
+ Changes the current estimated altitude. This allows to compensate for
+ ambient pressure variations and to work in relative mode.
+
+ @param newval : a floating point number corresponding to the current estimated altitude
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(int(round(newval * 65536.0, 1)))
+ return self._setAttr("currentValue", rest_val)
+
+ def set_qnh(self, newval):
+ """
+ Changes the barometric pressure adjusted to sea level used to compute
+ the altitude (QNH). This enables you to compensate for atmospheric pressure
+ changes due to weather conditions.
+
+ @param newval : a floating point number corresponding to the barometric pressure adjusted to sea
+ level used to compute
+ the altitude (QNH)
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(int(round(newval * 65536.0, 1)))
+ return self._setAttr("qnh", rest_val)
+
+ def get_qnh(self):
+ """
+ Returns the barometric pressure adjusted to sea level used to compute
+ the altitude (QNH).
+
+ @return a floating point number corresponding to the barometric pressure adjusted to sea level used to compute
+ the altitude (QNH)
+
+ On failure, throws an exception or returns YAltitude.QNH_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YAltitude.QNH_INVALID
+ return self._qnh
+
+ def get_technology(self):
+ """
+ Returns the technology used by the sesnor to compute
+ altitude. Possibles values are "barometric" and "gps"
+
+ @return a string corresponding to the technology used by the sesnor to compute
+ altitude
+
+ On failure, throws an exception or returns YAltitude.TECHNOLOGY_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YAltitude.TECHNOLOGY_INVALID
+ return self._technology
+
+ @staticmethod
+ def FindAltitude(func):
+ """
+ Retrieves an altimeter for a given identifier.
+ The identifier can be specified using several formats:
+ <ul>
+ <li>FunctionLogicalName</li>
+ <li>ModuleSerialNumber.FunctionIdentifier</li>
+ <li>ModuleSerialNumber.FunctionLogicalName</li>
+ <li>ModuleLogicalName.FunctionIdentifier</li>
+ <li>ModuleLogicalName.FunctionLogicalName</li>
+ </ul>
+
+ This function does not require that the altimeter is online at the time
+ it is invoked. The returned object is nevertheless valid.
+ Use the method YAltitude.isOnline() to test if the altimeter is
+ indeed online at a given time. In case of ambiguity when looking for
+ an altimeter by logical name, no error is notified: the first instance
+ found is returned. The search is performed first by hardware name,
+ then by logical name.
+
+ @param func : a string that uniquely characterizes the altimeter
+
+ @return a YAltitude object allowing you to drive the altimeter.
+ """
+ # obj
+ obj = YFunction._FindFromCache("Altitude", func)
+ if obj is None:
+ obj = YAltitude(func)
+ YFunction._AddToCache("Altitude", func, obj)
+ return obj
+
+ def nextAltitude(self):
+ """
+ Continues the enumeration of altimeters started using yFirstAltitude().
+
+ @return a pointer to a YAltitude object, corresponding to
+ an altimeter currently online, or a None pointer
+ if there are no more altimeters to enumerate.
+ """
+ hwidRef = YRefParam()
+ if YAPI.YISERR(self._nextFunction(hwidRef)):
+ return None
+ if hwidRef.value == "":
+ return None
+ return YAltitude.FindAltitude(hwidRef.value)
+
+#--- (end of YAltitude implementation)
+
+#--- (Altitude functions)
+
+ @staticmethod
+ def FirstAltitude():
+ """
+ Starts the enumeration of altimeters currently accessible.
+ Use the method YAltitude.nextAltitude() to iterate on
+ next altimeters.
+
+ @return a pointer to a YAltitude object, corresponding to
+ the first altimeter currently online, or a None pointer
+ if there are none.
+ """
+ devRef = YRefParam()
+ neededsizeRef = YRefParam()
+ serialRef = YRefParam()
+ funcIdRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+ errmsgRef = YRefParam()
+ size = YAPI.C_INTSIZE
+ #noinspection PyTypeChecker,PyCallingNonCallable
+ p = (ctypes.c_int * 1)()
+ err = YAPI.apiGetFunctionsByClass("Altitude", 0, p, size, neededsizeRef, errmsgRef)
+
+ if YAPI.YISERR(err) or not neededsizeRef.value:
+ return None
+
+ if YAPI.YISERR(
+ YAPI.yapiGetFunctionInfo(p[0], devRef, serialRef, funcIdRef, funcNameRef, funcValRef, errmsgRef)):
+ return None
+
+ return YAltitude.FindAltitude(serialRef.value + "." + funcIdRef.value)
+
+#--- (end of Altitude functions)
diff --git a/yoctoLib.python.26380/Sources/yocto_anbutton.py b/yoctoLib.python.26380/Sources/yocto_anbutton.py
new file mode 100644
index 0000000..ef48c7e
--- /dev/null
+++ b/yoctoLib.python.26380/Sources/yocto_anbutton.py
@@ -0,0 +1,454 @@
+#*********************************************************************
+#*
+#* $Id: yocto_anbutton.py 24849 2016-06-17 15:21:23Z seb $
+#*
+#* Implements yFindAnButton(), the high-level API for AnButton functions
+#*
+#* - - - - - - - - - License information: - - - - - - - - -
+#*
+#* Copyright (C) 2011 and beyond by Yoctopuce Sarl, Switzerland.
+#*
+#* Yoctopuce Sarl (hereafter Licensor) grants to you a perpetual
+#* non-exclusive license to use, modify, copy and integrate this
+#* file into your software for the sole purpose of interfacing
+#* with Yoctopuce products.
+#*
+#* You may reproduce and distribute copies of this file in
+#* source or object form, as long as the sole purpose of this
+#* code is to interface with Yoctopuce products. You must retain
+#* this notice in the distributed source file.
+#*
+#* You should refer to Yoctopuce General Terms and Conditions
+#* for additional information regarding your rights and
+#* obligations.
+#*
+#* THE SOFTWARE AND DOCUMENTATION ARE PROVIDED 'AS IS' WITHOUT
+#* WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
+#* WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS
+#* FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO
+#* EVENT SHALL LICENSOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
+#* INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA,
+#* COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR
+#* SERVICES, ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT
+#* LIMITED TO ANY DEFENSE THEREOF), ANY CLAIMS FOR INDEMNITY OR
+#* CONTRIBUTION, OR OTHER SIMILAR COSTS, WHETHER ASSERTED ON THE
+#* BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE), BREACH OF
+#* WARRANTY, OR OTHERWISE.
+#*
+#*********************************************************************/
+
+
+__docformat__ = 'restructuredtext en'
+from yocto_api import *
+
+
+#--- (YAnButton class start)
+#noinspection PyProtectedMember
+class YAnButton(YFunction):
+ """
+ Yoctopuce application programming interface allows you to measure the state
+ of a simple button as well as to read an analog potentiometer (variable resistance).
+ This can be use for instance with a continuous rotating knob, a throttle grip
+ or a joystick. The module is capable to calibrate itself on min and max values,
+ in order to compute a calibrated value that varies proportionally with the
+ potentiometer position, regardless of its total resistance.
+
+ """
+#--- (end of YAnButton class start)
+ #--- (YAnButton return codes)
+ #--- (end of YAnButton return codes)
+ #--- (YAnButton dlldef)
+ #--- (end of YAnButton dlldef)
+ #--- (YAnButton definitions)
+ CALIBRATEDVALUE_INVALID = YAPI.INVALID_UINT
+ RAWVALUE_INVALID = YAPI.INVALID_UINT
+ CALIBRATIONMAX_INVALID = YAPI.INVALID_UINT
+ CALIBRATIONMIN_INVALID = YAPI.INVALID_UINT
+ SENSITIVITY_INVALID = YAPI.INVALID_UINT
+ LASTTIMEPRESSED_INVALID = YAPI.INVALID_LONG
+ LASTTIMERELEASED_INVALID = YAPI.INVALID_LONG
+ PULSECOUNTER_INVALID = YAPI.INVALID_LONG
+ PULSETIMER_INVALID = YAPI.INVALID_LONG
+ ANALOGCALIBRATION_OFF = 0
+ ANALOGCALIBRATION_ON = 1
+ ANALOGCALIBRATION_INVALID = -1
+ ISPRESSED_FALSE = 0
+ ISPRESSED_TRUE = 1
+ ISPRESSED_INVALID = -1
+ #--- (end of YAnButton definitions)
+
+ def __init__(self, func):
+ super(YAnButton, self).__init__(func)
+ self._className = 'AnButton'
+ #--- (YAnButton attributes)
+ self._callback = None
+ self._calibratedValue = YAnButton.CALIBRATEDVALUE_INVALID
+ self._rawValue = YAnButton.RAWVALUE_INVALID
+ self._analogCalibration = YAnButton.ANALOGCALIBRATION_INVALID
+ self._calibrationMax = YAnButton.CALIBRATIONMAX_INVALID
+ self._calibrationMin = YAnButton.CALIBRATIONMIN_INVALID
+ self._sensitivity = YAnButton.SENSITIVITY_INVALID
+ self._isPressed = YAnButton.ISPRESSED_INVALID
+ self._lastTimePressed = YAnButton.LASTTIMEPRESSED_INVALID
+ self._lastTimeReleased = YAnButton.LASTTIMERELEASED_INVALID
+ self._pulseCounter = YAnButton.PULSECOUNTER_INVALID
+ self._pulseTimer = YAnButton.PULSETIMER_INVALID
+ #--- (end of YAnButton attributes)
+
+ #--- (YAnButton implementation)
+ def _parseAttr(self, member):
+ if member.name == "calibratedValue":
+ self._calibratedValue = member.ivalue
+ return 1
+ if member.name == "rawValue":
+ self._rawValue = member.ivalue
+ return 1
+ if member.name == "analogCalibration":
+ self._analogCalibration = member.ivalue
+ return 1
+ if member.name == "calibrationMax":
+ self._calibrationMax = member.ivalue
+ return 1
+ if member.name == "calibrationMin":
+ self._calibrationMin = member.ivalue
+ return 1
+ if member.name == "sensitivity":
+ self._sensitivity = member.ivalue
+ return 1
+ if member.name == "isPressed":
+ self._isPressed = member.ivalue
+ return 1
+ if member.name == "lastTimePressed":
+ self._lastTimePressed = member.ivalue
+ return 1
+ if member.name == "lastTimeReleased":
+ self._lastTimeReleased = member.ivalue
+ return 1
+ if member.name == "pulseCounter":
+ self._pulseCounter = member.ivalue
+ return 1
+ if member.name == "pulseTimer":
+ self._pulseTimer = member.ivalue
+ return 1
+ super(YAnButton, self)._parseAttr(member)
+
+ def get_calibratedValue(self):
+ """
+ Returns the current calibrated input value (between 0 and 1000, included).
+
+ @return an integer corresponding to the current calibrated input value (between 0 and 1000, included)
+
+ On failure, throws an exception or returns YAnButton.CALIBRATEDVALUE_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YAnButton.CALIBRATEDVALUE_INVALID
+ return self._calibratedValue
+
+ def get_rawValue(self):
+ """
+ Returns the current measured input value as-is (between 0 and 4095, included).
+
+ @return an integer corresponding to the current measured input value as-is (between 0 and 4095, included)
+
+ On failure, throws an exception or returns YAnButton.RAWVALUE_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YAnButton.RAWVALUE_INVALID
+ return self._rawValue
+
+ def get_analogCalibration(self):
+ """
+ Tells if a calibration process is currently ongoing.
+
+ @return either YAnButton.ANALOGCALIBRATION_OFF or YAnButton.ANALOGCALIBRATION_ON
+
+ On failure, throws an exception or returns YAnButton.ANALOGCALIBRATION_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YAnButton.ANALOGCALIBRATION_INVALID
+ return self._analogCalibration
+
+ def set_analogCalibration(self, newval):
+ """
+ Starts or stops the calibration process. Remember to call the saveToFlash()
+ method of the module at the end of the calibration if the modification must be kept.
+
+ @param newval : either YAnButton.ANALOGCALIBRATION_OFF or YAnButton.ANALOGCALIBRATION_ON
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = "1" if newval > 0 else "0"
+ return self._setAttr("analogCalibration", rest_val)
+
+ def get_calibrationMax(self):
+ """
+ Returns the maximal value measured during the calibration (between 0 and 4095, included).
+
+ @return an integer corresponding to the maximal value measured during the calibration (between 0
+ and 4095, included)
+
+ On failure, throws an exception or returns YAnButton.CALIBRATIONMAX_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YAnButton.CALIBRATIONMAX_INVALID
+ return self._calibrationMax
+
+ def set_calibrationMax(self, newval):
+ """
+ Changes the maximal calibration value for the input (between 0 and 4095, included), without actually
+ starting the automated calibration. Remember to call the saveToFlash()
+ method of the module if the modification must be kept.
+
+ @param newval : an integer corresponding to the maximal calibration value for the input (between 0
+ and 4095, included), without actually
+ starting the automated calibration
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("calibrationMax", rest_val)
+
+ def get_calibrationMin(self):
+ """
+ Returns the minimal value measured during the calibration (between 0 and 4095, included).
+
+ @return an integer corresponding to the minimal value measured during the calibration (between 0
+ and 4095, included)
+
+ On failure, throws an exception or returns YAnButton.CALIBRATIONMIN_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YAnButton.CALIBRATIONMIN_INVALID
+ return self._calibrationMin
+
+ def set_calibrationMin(self, newval):
+ """
+ Changes the minimal calibration value for the input (between 0 and 4095, included), without actually
+ starting the automated calibration. Remember to call the saveToFlash()
+ method of the module if the modification must be kept.
+
+ @param newval : an integer corresponding to the minimal calibration value for the input (between 0
+ and 4095, included), without actually
+ starting the automated calibration
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("calibrationMin", rest_val)
+
+ def get_sensitivity(self):
+ """
+ Returns the sensibility for the input (between 1 and 1000) for triggering user callbacks.
+
+ @return an integer corresponding to the sensibility for the input (between 1 and 1000) for
+ triggering user callbacks
+
+ On failure, throws an exception or returns YAnButton.SENSITIVITY_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YAnButton.SENSITIVITY_INVALID
+ return self._sensitivity
+
+ def set_sensitivity(self, newval):
+ """
+ Changes the sensibility for the input (between 1 and 1000) for triggering user callbacks.
+ The sensibility is used to filter variations around a fixed value, but does not preclude the
+ transmission of events when the input value evolves constantly in the same direction.
+ Special case: when the value 1000 is used, the callback will only be thrown when the logical state
+ of the input switches from pressed to released and back.
+ Remember to call the saveToFlash() method of the module if the modification must be kept.
+
+ @param newval : an integer corresponding to the sensibility for the input (between 1 and 1000) for
+ triggering user callbacks
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("sensitivity", rest_val)
+
+ def get_isPressed(self):
+ """
+ Returns true if the input (considered as binary) is active (closed contact), and false otherwise.
+
+ @return either YAnButton.ISPRESSED_FALSE or YAnButton.ISPRESSED_TRUE, according to true if the
+ input (considered as binary) is active (closed contact), and false otherwise
+
+ On failure, throws an exception or returns YAnButton.ISPRESSED_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YAnButton.ISPRESSED_INVALID
+ return self._isPressed
+
+ def get_lastTimePressed(self):
+ """
+ Returns the number of elapsed milliseconds between the module power on and the last time
+ the input button was pressed (the input contact transitioned from open to closed).
+
+ @return an integer corresponding to the number of elapsed milliseconds between the module power on
+ and the last time
+ the input button was pressed (the input contact transitioned from open to closed)
+
+ On failure, throws an exception or returns YAnButton.LASTTIMEPRESSED_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YAnButton.LASTTIMEPRESSED_INVALID
+ return self._lastTimePressed
+
+ def get_lastTimeReleased(self):
+ """
+ Returns the number of elapsed milliseconds between the module power on and the last time
+ the input button was released (the input contact transitioned from closed to open).
+
+ @return an integer corresponding to the number of elapsed milliseconds between the module power on
+ and the last time
+ the input button was released (the input contact transitioned from closed to open)
+
+ On failure, throws an exception or returns YAnButton.LASTTIMERELEASED_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YAnButton.LASTTIMERELEASED_INVALID
+ return self._lastTimeReleased
+
+ def get_pulseCounter(self):
+ """
+ Returns the pulse counter value. The value is a 32 bit integer. In case
+ of overflow (>=2^32), the counter will wrap. To reset the counter, just
+ call the resetCounter() method.
+
+ @return an integer corresponding to the pulse counter value
+
+ On failure, throws an exception or returns YAnButton.PULSECOUNTER_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YAnButton.PULSECOUNTER_INVALID
+ return self._pulseCounter
+
+ def set_pulseCounter(self, newval):
+ rest_val = str(newval)
+ return self._setAttr("pulseCounter", rest_val)
+
+ def get_pulseTimer(self):
+ """
+ Returns the timer of the pulses counter (ms).
+
+ @return an integer corresponding to the timer of the pulses counter (ms)
+
+ On failure, throws an exception or returns YAnButton.PULSETIMER_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YAnButton.PULSETIMER_INVALID
+ return self._pulseTimer
+
+ @staticmethod
+ def FindAnButton(func):
+ """
+ Retrieves an analog input for a given identifier.
+ The identifier can be specified using several formats:
+ <ul>
+ <li>FunctionLogicalName</li>
+ <li>ModuleSerialNumber.FunctionIdentifier</li>
+ <li>ModuleSerialNumber.FunctionLogicalName</li>
+ <li>ModuleLogicalName.FunctionIdentifier</li>
+ <li>ModuleLogicalName.FunctionLogicalName</li>
+ </ul>
+
+ This function does not require that the analog input is online at the time
+ it is invoked. The returned object is nevertheless valid.
+ Use the method YAnButton.isOnline() to test if the analog input is
+ indeed online at a given time. In case of ambiguity when looking for
+ an analog input by logical name, no error is notified: the first instance
+ found is returned. The search is performed first by hardware name,
+ then by logical name.
+
+ @param func : a string that uniquely characterizes the analog input
+
+ @return a YAnButton object allowing you to drive the analog input.
+ """
+ # obj
+ obj = YFunction._FindFromCache("AnButton", func)
+ if obj is None:
+ obj = YAnButton(func)
+ YFunction._AddToCache("AnButton", func, obj)
+ return obj
+
+ def resetCounter(self):
+ """
+ Returns the pulse counter value as well as its timer.
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.set_pulseCounter(0)
+
+ def nextAnButton(self):
+ """
+ Continues the enumeration of analog inputs started using yFirstAnButton().
+
+ @return a pointer to a YAnButton object, corresponding to
+ an analog input currently online, or a None pointer
+ if there are no more analog inputs to enumerate.
+ """
+ hwidRef = YRefParam()
+ if YAPI.YISERR(self._nextFunction(hwidRef)):
+ return None
+ if hwidRef.value == "":
+ return None
+ return YAnButton.FindAnButton(hwidRef.value)
+
+#--- (end of YAnButton implementation)
+
+#--- (AnButton functions)
+
+ @staticmethod
+ def FirstAnButton():
+ """
+ Starts the enumeration of analog inputs currently accessible.
+ Use the method YAnButton.nextAnButton() to iterate on
+ next analog inputs.
+
+ @return a pointer to a YAnButton object, corresponding to
+ the first analog input currently online, or a None pointer
+ if there are none.
+ """
+ devRef = YRefParam()
+ neededsizeRef = YRefParam()
+ serialRef = YRefParam()
+ funcIdRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+ errmsgRef = YRefParam()
+ size = YAPI.C_INTSIZE
+ #noinspection PyTypeChecker,PyCallingNonCallable
+ p = (ctypes.c_int * 1)()
+ err = YAPI.apiGetFunctionsByClass("AnButton", 0, p, size, neededsizeRef, errmsgRef)
+
+ if YAPI.YISERR(err) or not neededsizeRef.value:
+ return None
+
+ if YAPI.YISERR(
+ YAPI.yapiGetFunctionInfo(p[0], devRef, serialRef, funcIdRef, funcNameRef, funcValRef, errmsgRef)):
+ return None
+
+ return YAnButton.FindAnButton(serialRef.value + "." + funcIdRef.value)
+
+#--- (end of AnButton functions)
diff --git a/yoctoLib.python.26380/Sources/yocto_api.py b/yoctoLib.python.26380/Sources/yocto_api.py
new file mode 100644
index 0000000..b9dc6a4
--- /dev/null
+++ b/yoctoLib.python.26380/Sources/yocto_api.py
@@ -0,0 +1,6940 @@
+# *********************************************************************
+# *
+# * $Id: yocto_api.py 26329 2017-01-11 14:04:39Z mvuilleu $
+# *
+#* High-level programming interface, common to all modules
+#*
+#* - - - - - - - - - License information: - - - - - - - - -
+#*
+#* Copyright (C) 2011 and beyond by Yoctopuce Sarl, Switzerland.
+#*
+#* Yoctopuce Sarl (hereafter Licensor) grants to you a perpetual
+#* non-exclusive license to use, modify, copy and integrate this
+#* file into your software for the sole purpose of interfacing
+#* with Yoctopuce products.
+#*
+#* You may reproduce and distribute copies of this file in
+#* source or object form, as long as the sole purpose of this
+#* code is to interface with Yoctopuce products. You must retain
+#* this notice in the distributed source file.
+#*
+#* You should refer to Yoctopuce General Terms and Conditions
+#* for additional information regarding your rights and
+#* obligations.
+#*
+#* THE SOFTWARE AND DOCUMENTATION ARE PROVIDED 'AS IS' WITHOUT
+#* WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
+#* WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS
+#* FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO
+#* EVENT SHALL LICENSOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
+#* INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA,
+#* COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR
+#* SERVICES, ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT
+#* LIMITED TO ANY DEFENSE THEREOF), ANY CLAIMS FOR INDEMNITY OR
+#* CONTRIBUTION, OR OTHER SIMILAR COSTS, WHETHER ASSERTED ON THE
+#* BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE), BREACH OF
+#* WARRANTY, OR OTHERWISE.
+#*
+#*********************************************************************/
+
+from __future__ import division
+
+__docformat__ = 'restructuredtext en'
+
+import datetime
+import ctypes
+import platform
+#import abc (not supported in 2.5.x)
+import random
+import sys
+import os
+import time
+import array
+import binascii
+from ctypes import *
+
+#
+# PYTHON 2.x VS PYTHON 3.x compatibility check
+#
+def YByte2StringPython2x(binBuffer):
+ return binBuffer.decode("latin-1")
+
+
+def YString2BytePython2x(strBuffer):
+ return strBuffer.encode("latin-1")
+
+
+def YGetBytePython2x(binBuffer, idx):
+ item = binBuffer[idx]
+ if type(item) is int:
+ return item
+ return ord(item)
+
+def YAddBytePython2x(binBuffer, b):
+ return binBuffer + chr(b)
+
+
+def YRelTickCountPython2x(dt):
+ td = dt - datetime.datetime(1970, 1, 1)
+ return int(round((td.seconds + td.days * 24 * 3600 * 1000) + td.microseconds / 1000))
+
+
+def YByte2StringPython3x(binBuffer):
+ return binBuffer.decode("latin-1")
+
+
+def YString2BytePython3x(strBuffer):
+ return strBuffer.encode("latin-1")
+
+
+def YGetBytePython3x(binBuffer, l):
+ return binBuffer[l]
+
+
+def YAddBytePython3x(binBuffer, b):
+ return binBuffer + bytes([b])
+
+
+def YRelTickCountPython3x(dt):
+ td = dt - datetime.datetime(1970, 1, 1)
+ return int(round(td.total_seconds() * 1000.0))
+
+
+YByte2String = None
+YString2Byte = None
+YGetByte = None
+YAddByte = None
+if sys.version_info < (3, 0):
+ YByte2String = YByte2StringPython2x
+ YString2Byte = YString2BytePython2x
+ YGetByte = YGetBytePython2x
+ YAddByte = YAddBytePython2x
+ YRelTickCount = YRelTickCountPython2x
+else:
+ YByte2String = YByte2StringPython3x
+ YString2Byte = YString2BytePython3x
+ YGetByte = YGetBytePython3x
+ YAddByte = YAddBytePython3x
+ YRelTickCount = YRelTickCountPython3x
+
+# Ugly global var for Python 2 compatibility
+yLogFct = None
+yDeviceLogFct = None
+yArrivalFct = None
+yRemovalFct = None
+yChangeFct = None
+yHubDiscoveryCallback = None
+
+
+# This class is used to mimic "ByReference" parameter in function calls
+class YRefParam:
+ def __init__(self, initialValue=None):
+ self.value = initialValue
+
+ def __str__(self):
+ return str(self.value)
+
+
+class YAPI_Exception(Exception):
+ def __init__(self, errType, errMsg):
+ super(YAPI_Exception, self).__init__(errMsg)
+ self.errorType = errType
+
+
+#noinspection PyClassHasNoInit,PyProtectedMember
+# noinspection PyUnresolvedReferences
+class YAPI:
+ #noinspection PyUnresolvedReferences
+ class YPCHAR(ctypes.Structure):
+ _fields_ = [("buffer", ctypes.c_char_p)]
+
+ class JsonError(Exception):
+ def __init__(self, msg):
+ self.msg = msg
+ Exception.__init__(self)
+
+ #noinspection PyClassHasNoInit
+ class TJSONRECORDTYPE:
+ JSON_NONE, JSON_STRING, JSON_INTEGER, JSON_BOOLEAN, JSON_STRUCT, JSON_ARRAY = range(6)
+
+ class TJSONRECORD:
+ def __init__(self, name, datatype):
+ self.name = name
+ self.recordtype = datatype
+ self.svalue = ""
+ self.ivalue = 0
+ self.bvalue = False
+ self.members = []
+ self.items = []
+
+ def memberscount(self):
+ return len(self.members)
+
+ def itemscount(self):
+ return len(self.items)
+
+ class TJsonParser:
+
+ #noinspection PyClassHasNoInit
+ class Tjstate:
+ JSTART, JWAITFORNAME, JWAITFORENDOFNAME, JWAITFORCOLON, JWAITFORDATA, JWAITFORNEXTSTRUCTMEMBER, \
+ JWAITFORNEXTARRAYITEM, JSCOMPLETED, JWAITFORSTRINGVALUE, JWAITFORINTVALUE, JWAITFORBOOLVALUE = range(11)
+
+ def __init__(self, jsonData, withHttpHeader=True):
+ self.httpcode = 0
+ self.data = None
+ if withHttpHeader:
+ httpheader = "HTTP/1.1 "
+ okHeader = "OK\r\n"
+ CR = "\r\n"
+ if jsonData[0: len(okHeader)] == okHeader:
+ self.httpcode = 200
+ else:
+ if jsonData[0: len(httpheader)] != httpheader:
+ errmsgRef = ("data should start with " + httpheader)
+ raise YAPI.JsonError(errmsgRef)
+
+ p1 = jsonData.find(" ", len(httpheader) - 1)
+ p2 = jsonData.find(" ", p1 + 1)
+
+ self.httpcode = int(jsonData[p1: p2])
+
+ if self.httpcode != 200:
+ return
+ #json data is a structure
+ p1 = jsonData.find(CR + CR + "{")
+ if p1 < 0:
+ p1 = jsonData.find(CR + CR + "[") # json data is an array
+ if p1 < 0:
+ errmsgRef = "data does not contain JSON data"
+ raise YAPI.JsonError(errmsgRef)
+ p1 += 4
+ jsonData = jsonData[p1: len(jsonData)]
+ else:
+ start_struct = jsonData.find("{") # json data is a structure
+ start_array = jsonData.find("[") # json data is an array
+ if start_array < 0 and start_struct < 0:
+ errmsgRef = "data does not contain JSON data"
+ raise YAPI.JsonError(errmsgRef)
+ self.data = self._Parse(jsonData)
+
+ def convertToString(self, p, showNamePrefix):
+ if p is None:
+ p = self.data
+ if p.name != "" and showNamePrefix:
+ outbuffer = '"' + p.name + "\":"
+ else:
+ outbuffer = ""
+ if p.recordtype == YAPI.TJSONRECORDTYPE.JSON_STRING:
+ outbuffer = outbuffer + '"' + p.svalue + '"'
+ elif p.recordtype == YAPI.TJSONRECORDTYPE.JSON_INTEGER:
+ outbuffer += str(p.ivalue)
+ elif p.recordtype == YAPI.TJSONRECORDTYPE.JSON_BOOLEAN:
+ if p.bvalue:
+ outbuffer += "TRUE"
+ else:
+ outbuffer += "FALSE"
+ elif p.recordtype == YAPI.TJSONRECORDTYPE.JSON_STRUCT:
+ outbuffer += '{'
+ for i in range(len(p.members)):
+ if i > 0:
+ outbuffer += ','
+ outbuffer += self.convertToString(p.members[i], True)
+ outbuffer += '}'
+ elif p.recordtype == YAPI.TJSONRECORDTYPE.JSON_ARRAY:
+ outbuffer += '['
+ for i in range(len(p.items)):
+ if i > 0:
+ outbuffer += ','
+ outbuffer += self.convertToString(p.items[i], False)
+ outbuffer += ']'
+ return outbuffer
+
+ def __del__(self):
+ self._freestructure()
+
+ def GetRootNode(self):
+ return self.data
+
+ class refidx:
+ def __init__(self):
+ self.i = 0
+
+ def _Parse(self, st):
+ idx = self.refidx()
+ st = "\"root\" : " + st + " "
+ return self._ParseEx(self.Tjstate.JWAITFORNAME, "", st, idx)
+
+ @staticmethod
+ def _ParseError(st, i, errmsgRef):
+ ststart = i - 10
+ stend = i + 10
+ if ststart < 0:
+ ststart = 0
+ if stend > len(st):
+ stend = len(st) - 1
+ errmsgRef = errmsgRef + " near " + st[ststart:i] + "*" + st[i: stend]
+ raise YAPI.JsonError(errmsgRef)
+
+ @staticmethod
+ def _createStructRecord(name):
+ return YAPI.TJSONRECORD(name, YAPI.TJSONRECORDTYPE.JSON_STRUCT)
+
+ @staticmethod
+ def _createArrayRecord(name):
+ return YAPI.TJSONRECORD(name, YAPI.TJSONRECORDTYPE.JSON_ARRAY)
+
+ @staticmethod
+ def _createStrRecord(name, value):
+ res = YAPI.TJSONRECORD(name, YAPI.TJSONRECORDTYPE.JSON_STRING)
+ res.svalue = value
+ return res
+
+ @staticmethod
+ def _createIntRecord(name, value):
+ res = YAPI.TJSONRECORD(name, YAPI.TJSONRECORDTYPE.JSON_INTEGER)
+ res.ivalue = value
+ return res
+
+ @staticmethod
+ def _createBoolRecord(name, value):
+ res = YAPI.TJSONRECORD(name, YAPI.TJSONRECORDTYPE.JSON_BOOLEAN)
+ res.bvalue = value
+ return res
+
+ @staticmethod
+ def _add2StructRecord(container, element):
+ if container.recordtype != YAPI.TJSONRECORDTYPE.JSON_STRUCT:
+ raise YAPI.JsonError("container is not a struct type")
+ container.members.append(element)
+
+ @staticmethod
+ def _add2ArrayRecord(container, element):
+ if container.recordtype != YAPI.TJSONRECORDTYPE.JSON_ARRAY:
+ raise YAPI.JsonError("container is not a struct type")
+ container.items.append(element)
+
+ @staticmethod
+ def _Skipgarbage(st, idx):
+ sti = st[idx.i]
+ while idx.i < len(st) and (sti == '\n' or sti == '\r' or sti == ' '):
+ idx.i += 1
+ if idx.i < len(st):
+ sti = st[idx.i]
+ return sti
+
+ def _ParseEx(self, initialstate, defaultname, st, idx):
+
+ res = YAPI.TJSONRECORD("", YAPI.TJSONRECORDTYPE.JSON_NONE)
+ svalue = ""
+ name = defaultname
+ state = initialstate
+ isign = 1
+ ivalue = 0
+
+ while idx.i < len(st):
+ sti = st[idx.i]
+ if state == self.Tjstate.JWAITFORNAME:
+ if sti == "\"":
+ state = self.Tjstate.JWAITFORENDOFNAME
+ elif sti != " " and sti != "\n":
+ self._ParseError(st, idx.i, "invalid char: was expecting \"")
+
+ elif state == self.Tjstate.JWAITFORENDOFNAME:
+ if sti == "\"":
+ state = self.Tjstate.JWAITFORCOLON
+ elif ord(sti) >= 32:
+ name = name + sti
+ else:
+ self._ParseError(st, idx.i, "invalid char: was expecting an identifier compliant char")
+
+ elif state == self.Tjstate.JWAITFORCOLON:
+ if sti == ":":
+ state = self.Tjstate.JWAITFORDATA
+ elif sti != " " and sti != "\n":
+ self._ParseError(st, idx.i, "invalid char: was expecting \"")
+
+ elif state == self.Tjstate.JWAITFORDATA:
+ if sti == "{":
+ res = self._createStructRecord(name)
+ state = self.Tjstate.JWAITFORNEXTSTRUCTMEMBER
+ elif sti == "[":
+ res = self._createArrayRecord(name)
+ state = self.Tjstate.JWAITFORNEXTARRAYITEM
+ elif sti == "\"":
+ svalue = ""
+ state = self.Tjstate.JWAITFORSTRINGVALUE
+ elif "0" <= sti <= "9":
+ state = self.Tjstate.JWAITFORINTVALUE
+ ivalue = ord(sti) - 48
+ isign = 1
+ elif sti == "-":
+ state = self.Tjstate.JWAITFORINTVALUE
+ ivalue = 0
+ isign = -1
+ elif sti == "t" or sti == "f" or sti == "T" or sti == "F":
+ svalue = sti.upper()
+ state = self.Tjstate.JWAITFORBOOLVALUE
+ elif sti != " " and sti != "\n":
+ self._ParseError(st, idx.i, "invalid char: was expecting \",0..9,t or f")
+
+ elif state == self.Tjstate.JWAITFORSTRINGVALUE:
+ if sti == "\\" and idx.i + 1 < len(st):
+ idx.i += 1
+ svalue = svalue + st[idx.i]
+
+ elif sti == "\"":
+ state = self.Tjstate.JSCOMPLETED
+ res = self._createStrRecord(name, svalue)
+ elif ord(sti) < 32:
+ self._ParseError(st, idx.i, "invalid char: was expecting string value")
+ else:
+ svalue = svalue + sti
+
+ elif state == self.Tjstate.JWAITFORINTVALUE:
+ if "0" <= sti <= "9":
+ ivalue = (ivalue * 10) + ord(sti) - 48
+ else:
+ res = self._createIntRecord(name, isign * ivalue)
+ state = self.Tjstate.JSCOMPLETED
+ idx.i -= 1
+
+ elif state == self.Tjstate.JWAITFORBOOLVALUE:
+ if sti < "A" or sti > "Z":
+ if svalue != "TRUE" and svalue != "FALSE":
+ self._ParseError(st, idx.i, "unexpected value, was expecting \"true\" or \"false\"")
+ if svalue == "TRUE":
+ res = self._createBoolRecord(name, True)
+ else:
+ res = self._createBoolRecord(name, False)
+ state = self.Tjstate.JSCOMPLETED
+ idx.i -= 1
+ else:
+ svalue = svalue + sti.upper()
+
+ elif state == self.Tjstate.JWAITFORNEXTSTRUCTMEMBER:
+ sti = self._Skipgarbage(st, idx)
+ if idx.i < len(st):
+ if sti == "}":
+ idx.i += 1
+ return res
+ else:
+ value = self._ParseEx(self.Tjstate.JWAITFORNAME, "", st, idx)
+ self._add2StructRecord(res, value)
+ sti = self._Skipgarbage(st, idx)
+ if idx.i < len(st):
+ if sti == "}" and idx.i < len(st):
+ idx.i -= 1
+ elif sti != " " and sti != "\n" and sti != ",":
+ self._ParseError(st, idx.i, "invalid char: vas expecting , or }")
+
+ elif state == self.Tjstate.JWAITFORNEXTARRAYITEM:
+ sti = self._Skipgarbage(st, idx)
+ if idx.i < len(st):
+ if sti == "]":
+ idx.i += 1
+ return res
+ else:
+ value = self._ParseEx(self.Tjstate.JWAITFORDATA, str(len(res.items)), st, idx)
+ self._add2ArrayRecord(res, value)
+ sti = self._Skipgarbage(st, idx)
+ if idx.i < len(st):
+ if sti == "]" and idx.i < len(st):
+ idx.i -= 1
+ elif sti != " " and sti != "\n" and sti != ",":
+ self._ParseError(st, idx.i, "invalid char: vas expecting , or ]")
+
+ elif state == self.Tjstate.JSCOMPLETED:
+ return res
+
+ idx.i += 1
+
+ self._ParseError(st, idx.i, "unexpected end of data")
+ return None
+
+ def _DumpStructureRec(self, p, deep):
+ indent = ""
+ for i in range(0, deep * 2):
+ indent += " "
+ line = indent + p.name + ":"
+ if p.recordtype == YAPI.TJSONRECORDTYPE.JSON_STRING:
+ line = line + " str = " + p.svalue
+ print(line)
+ elif p.recordtype == YAPI.TJSONRECORDTYPE.JSON_INTEGER:
+ line = line + " int = " + str(p.ivalue)
+ print(line)
+ elif p.recordtype == YAPI.TJSONRECORDTYPE.JSON_BOOLEAN:
+ if p.bvalue:
+ line += " bool = TRUE"
+ else:
+ line += " bool = FALSE"
+ print(line)
+ elif p.recordtype == YAPI.TJSONRECORDTYPE.JSON_STRUCT:
+ print (line + " struct")
+ for i in range(0, len(p.members)):
+ self._DumpStructureRec(p.members[i], deep + 1)
+ elif p.recordtype == YAPI.TJSONRECORDTYPE.JSON_ARRAY:
+ print(line + " array")
+ for i in range(0, len(p.items)):
+ self._DumpStructureRec(p.items[i], deep + 1)
+
+ def _freestructure(self):
+ pass
+
+ def DumpStructure(self):
+ self._DumpStructureRec(self.data, 0)
+
+ @staticmethod
+ def GetNbChild(parent):
+ return len(parent.items)
+
+ def GetAllChilds(self, parent):
+ res = []
+ p = parent
+ if p is None:
+ p = self.data
+ if p.recordtype == YAPI.TJSONRECORDTYPE.JSON_STRUCT:
+ for i in range(0, len(p.members)):
+ res.append(self.convertToString(p.members[i], False))
+ elif p.recordtype == YAPI.TJSONRECORDTYPE.JSON_ARRAY:
+ for i in range(0, len(p.items)):
+ res.append(self.convertToString(p.items[i], False))
+ return res
+
+ def GetChildNode(self, parent, nodename):
+ p = parent
+ if p is None:
+ p = self.data
+
+ if p.recordtype == YAPI.TJSONRECORDTYPE.JSON_STRUCT:
+ for i in range(0, len(p.members)):
+ if p.members[i].name == nodename:
+ return p.members[i]
+ elif p.recordtype == YAPI.TJSONRECORDTYPE.JSON_ARRAY:
+ index = int(nodename)
+ if index >= len(p.items):
+ raise YAPI.JsonError("index out of bounds " + nodename + ">=" + str(p.Value.itemcount))
+ return p.items[index]
+
+ return None
+
+ # Switch to turn off exceptions and use return codes instead, for source-code compatibility
+ # with languages without exception support like C
+ ExceptionsDisabled = False
+ _apiInitialized = False
+ _ydllLoaded = False
+
+ # Default cache validity (in [ms]) before reloading data from device. This saves a lots of traffic.
+ # Note that a value under 2 ms makes little sense since a USB bus itself has a 2ms round-trip period
+
+ DefaultCacheValidity = datetime.timedelta(milliseconds=5)
+ INVALID_STRING = "!INVALID!"
+ INVALID_DOUBLE = -1.79769313486231E+308
+ INVALID_INT = -2147483648
+ INVALID_UINT = -1
+ INVALID_LONG = -9223372036854775807
+
+ # yInitAPI argument
+ Y_DETECT_NONE = 0
+ Y_DETECT_USB = 1
+ Y_DETECT_NET = 2
+ Y_RESEND_MISSING_PKT = 4
+
+ Y_DETECT_ALL = Y_DETECT_USB | Y_DETECT_NET
+
+ YOCTO_API_VERSION_STR = "1.10"
+ YOCTO_API_VERSION_BCD = 0x0110
+
+ YOCTO_API_BUILD_NO = "26380"
+ YOCTO_DEFAULT_PORT = 4444
+ YOCTO_VENDORID = 0x24e0
+ YOCTO_DEVID_FACTORYBOOT = 1
+
+ YOCTO_DEVID_BOOTLOADER = 2
+ YOCTO_ERRMSG_LEN = 256
+ YOCTO_MANUFACTURER_LEN = 20
+ YOCTO_SERIAL_LEN = 20
+ YOCTO_BASE_SERIAL_LEN = 8
+ YOCTO_PRODUCTNAME_LEN = 28
+ YOCTO_FIRMWARE_LEN = 22
+ YOCTO_LOGICAL_LEN = 20
+ YOCTO_FUNCTION_LEN = 20
+ # Size of the data (can be non null terminated)
+ YOCTO_PUBVAL_SIZE = 6
+ #Temporary storage, > YOCTO_PUBVAL_SIZE
+ YOCTO_PUBVAL_LEN = 16
+ YOCTO_PASS_LEN = 20
+ YOCTO_REALM_LEN = 20
+ YIOHDL_SIZE = 8
+ INVALID_YHANDLE = 0
+
+ YOCTO_CALIB_TYPE_OFS = 30
+
+ yUnknowSize = 1024
+
+ C_INTSIZE = 4 # we assume an int size is 4 byte
+
+ _PlugEvents = []
+ _DataEvents = []
+ _CalibHandlers = {}
+
+ # private extern static void DllCallTest(ref yDeviceSt data);
+ #_DllCallTest = yApiCLib.DllCallTest
+ #_DllCallTest.restypes = ctypes.c_int
+ #_DllCallTest.argtypes = [ctypes.c_void_p]
+
+ _yApiCLibFile = ""
+ _yApiCLibFileFallback = ""
+ _yApiCLib = None
+
+ @staticmethod
+ def SelectArchitecture(arch):
+ """
+ Select the architecture or the library to be loaded to access to USB.
+ By default, the Python library automatically detects the appropriate
+ library to use. However, for Linux ARM, it not possible to reliably
+ distinguish between a Hard Float (armhf) and a Soft Float (armel)
+ install. For in this case, it is therefore recommended to manually
+ select the proper architecture by calling SelectArchitecture()
+ before any other call to the library.
+
+ @param arch : A string containing the architecture to use.
+ Possibles value are: "armhf","armel",
+ "i386","x86_64","32bit", "64bit"
+
+ @return nothing.
+
+ On failure, throws an exception.
+ """
+
+ libpath = os.path.dirname(__file__)
+ system = platform.system()
+ if libpath == '':
+ libpath = '.'
+ if system == 'Windows':
+ if arch == '32bit':
+ YAPI._yApiCLibFile = libpath + "\\cdll\\yapi.dll"
+ elif arch == '64bit':
+ YAPI._yApiCLibFile = libpath + "\\cdll\\yapi64.dll"
+ else:
+ raise NotImplementedError(
+ "unsupported windows architecture (" + arch + "), contact support@yoctopuce.com.")
+ #
+ # LINUX (INTEL + ARM)
+ #
+ elif system == 'Linux':
+ if arch == "armhf":
+ YAPI._yApiCLibFile = libpath + "/cdll/libyapi-armhf.so"
+ elif arch == "armel":
+ YAPI._yApiCLibFile = libpath + "/cdll/libyapi-armel.so"
+ elif arch == 'i386':
+ YAPI._yApiCLibFile = libpath + "/cdll/libyapi-i386.so"
+ elif arch == 'x86_64':
+ YAPI._yApiCLibFile = libpath + "/cdll/libyapi-amd64.so"
+ else:
+ raise NotImplementedError(
+ "unsupported linux architecture (" + arch + "), contact support@yoctopuce.com.")
+ #
+ # Mac OS X
+ #
+ elif system == 'Darwin':
+ if arch == 'x86_64':
+ YAPI._yApiCLibFile = libpath + "/cdll/libyapi.dylib"
+ else:
+ raise NotImplementedError(
+ "unsupported Mac OS architecture (" + arch + "), contact support@yoctopuce.com.")
+ #
+ # UNKNOWN, contact Yoctopuce support :-)
+ #
+ else:
+ raise NotImplementedError("unsupported platform " + system + ", contact support@yoctopuce.com.")
+
+ @staticmethod
+ def yloadYapiCDLL():
+ if YAPI._yApiCLibFile == "":
+ libpath = os.path.dirname(__file__)
+ system = platform.system()
+ arch = platform.architecture()[0]
+ machine = platform.machine()
+ if libpath == '':
+ libpath = '.'
+ #
+ # WINDOWS
+ #
+ if system == 'Windows':
+ if arch == '32bit':
+ YAPI._yApiCLibFile = libpath + "\\cdll\\yapi.dll"
+ elif arch == '64bit':
+ YAPI._yApiCLibFile = libpath + "\\cdll\\yapi64.dll"
+ else:
+ raise NotImplementedError(
+ "unsupported windows architecture (" + arch + "), contact support@yoctopuce.com.")
+ #
+ # LINUX (INTEL + ARM)
+ #
+ elif platform.system() == 'Linux':
+ if machine.find("arm") >= 0:
+ YAPI._yApiCLibFile = libpath + "/cdll/libyapi-armhf.so"
+ YAPI._yApiCLibFileFallback = libpath + "/cdll/libyapi-armel.so"
+ elif machine.find("mips") >= 0:
+ byteorder_str = sys.byteorder
+ if byteorder_str.lower() == 'little':
+ YAPI._yApiCLibFile = libpath + "/cdll/libyapi-mipsel.so"
+ else:
+ YAPI._yApiCLibFile = libpath + "/cdll/libyapi-mips.so"
+ YAPI._yApiCLibFileFallback = ""
+ elif machine == 'x86_32' or (machine[0] == 'i' and machine[-2:] == '86'):
+ YAPI._yApiCLibFile = libpath + "/cdll/libyapi-i386.so"
+ YAPI._yApiCLibFileFallback = libpath + "/cdll/libyapi-amd64.so" # just in case
+ elif machine == 'x86_64':
+ YAPI._yApiCLibFile = libpath + "/cdll/libyapi-amd64.so"
+ YAPI._yApiCLibFileFallback = libpath + "/cdll/libyapi-i386.so" # just in case
+ else:
+ raise NotImplementedError(
+ "unsupported linux machine (" + machine + "), contact support@yoctopuce.com.")
+ #
+ # Mac OS X
+ #
+ elif platform.system() == 'Darwin':
+ if sys.maxsize > 2 ** 32:
+ YAPI._yApiCLibFile = libpath + "/cdll/libyapi.dylib"
+ else:
+ raise NotImplementedError("Only Intel 64 bits installation are supported for Mac OS X.")
+ #
+ # UNKNOWN, contact Yoctopuce support :-)
+ #
+ else:
+ raise NotImplementedError("unsupported platform " + system +
+ ", contact support@yoctopuce.com.")
+
+ if not os.path.exists(YAPI._yApiCLibFile):
+ raise ImportError(
+ "YAPI shared library is missing (" + YAPI._yApiCLibFile +
+ "), make sure it is available and accessible.")
+
+ # try to load main librray
+ libloaded = False
+ #noinspection PyBroadException
+ try:
+ YAPI._yApiCLib = ctypes.CDLL(YAPI._yApiCLibFile)
+ libloaded = True
+ except Exception as ex:
+ raise ImportError(
+ "Unable to import YAPI shared library (" + YAPI._yApiCLibFile +
+ "): " + str(ex))
+
+ # try to load fallback library
+ if not libloaded and YAPI._yApiCLibFileFallback != '':
+ #noinspection PyBroadException
+ try:
+ YAPI._yApiCLib = ctypes.CDLL(YAPI._yApiCLibFileFallback)
+ libloaded = True
+ except Exception as ex:
+ raise ImportError(
+ "Cannot load " + YAPI._yApiCLibFileFallback + " nor " + YAPI._yApiCLibFile + " : " + str(ex))
+
+ if not libloaded:
+ raise ImportError(
+ "Unable to import YAPI shared library (" + YAPI._yApiCLibFile +
+ "), make sure it is available and accessible.")
+
+ # private extern static int _yapiInitAPI(int mode, StringBuilder errmsgRef);
+ YAPI._yapiInitAPI = YAPI._yApiCLib.yapiInitAPI
+ YAPI._yapiInitAPI.restypes = ctypes.c_int
+ YAPI._yapiInitAPI.argtypes = [ctypes.c_int, ctypes.c_char_p]
+
+ # private extern static void _yapiFreeAPI();
+ YAPI._yapiFreeAPI = YAPI._yApiCLib.yapiFreeAPI
+ YAPI._yapiFreeAPI.restypes = ctypes.c_int
+ YAPI._yapiFreeAPI.argtypes = []
+
+ YAPI._yapiSetTraceFile = YAPI._yApiCLib.yapiSetTraceFile
+ YAPI._yapiSetTraceFile.restypes = ctypes.c_int
+ YAPI._yapiSetTraceFile.argtypes = [ctypes.c_char_p]
+
+ # private extern static void _yapiRegisterLogFunction(IntPtr fct);
+ YAPI._yapiRegisterLogFunction = YAPI._yApiCLib.yapiRegisterLogFunction
+ YAPI._yapiRegisterLogFunction.restypes = ctypes.c_int
+ YAPI._yapiRegisterLogFunction.argtypes = [ctypes.c_void_p]
+
+ # private extern static void _yapiRegisterDeviceArrivalCallback(IntPtr fct);
+ YAPI._yapiRegisterDeviceArrivalCallback = YAPI._yApiCLib.yapiRegisterDeviceArrivalCallback
+ YAPI._yapiRegisterDeviceArrivalCallback.restypes = ctypes.c_int
+ YAPI._yapiRegisterDeviceArrivalCallback.argtypes = [ctypes.c_void_p]
+
+ # private extern static void _yapiRegisterDeviceRemovalCallback(IntPtr fct);
+ YAPI._yapiRegisterDeviceRemovalCallback = YAPI._yApiCLib.yapiRegisterDeviceRemovalCallback
+ YAPI._yapiRegisterDeviceRemovalCallback.restypes = ctypes.c_int
+ YAPI._yapiRegisterDeviceRemovalCallback.argtypes = [ctypes.c_void_p]
+
+ # private extern static void _yapiRegisterDeviceChangeCallback(IntPtr fct);
+ YAPI._yapiRegisterDeviceChangeCallback = YAPI._yApiCLib.yapiRegisterDeviceChangeCallback
+ YAPI._yapiRegisterDeviceChangeCallback.restypes = ctypes.c_int
+ YAPI._yapiRegisterDeviceChangeCallback.argtypes = [ctypes.c_void_p]
+
+ # private extern static void _yapiRegisterFunctionUpdateCallback(IntPtr fct);
+ YAPI._yapiRegisterFunctionUpdateCallback = YAPI._yApiCLib.yapiRegisterFunctionUpdateCallback
+ YAPI._yapiRegisterFunctionUpdateCallback.restypes = ctypes.c_int
+ YAPI._yapiRegisterFunctionUpdateCallback.argtypes = [ctypes.c_void_p]
+
+ # private extern static void _yapiRegisterTimedReportCallback(IntPtr fct);
+ YAPI._yapiRegisterTimedReportCallback = YAPI._yApiCLib.yapiRegisterTimedReportCallback
+ YAPI._yapiRegisterTimedReportCallback.restypes = ctypes.c_int
+ YAPI._yapiRegisterTimedReportCallback.argtypes = [ctypes.c_void_p]
+
+ # private extern static int _yapiLockDeviceCallBack(StringBuilder errmsgRef);
+ YAPI._yapiLockDeviceCallBack = YAPI._yApiCLib.yapiLockDeviceCallBack
+ YAPI._yapiLockDeviceCallBack.restypes = ctypes.c_int
+ YAPI._yapiLockDeviceCallBack.argtypes = [ctypes.c_char_p]
+
+ # private extern static int _yapiUnlockDeviceCallBack(StringBuilder errmsgRef);
+ YAPI._yapiUnlockDeviceCallBack = YAPI._yApiCLib.yapiUnlockDeviceCallBack
+ YAPI._yapiUnlockDeviceCallBack.restypes = ctypes.c_int
+ YAPI._yapiUnlockDeviceCallBack.argtypes = [ctypes.c_char_p]
+
+ # private extern static int _yapiLockFunctionCallBack(StringBuilder errmsgRef);
+ YAPI._yapiLockFunctionCallBack = YAPI._yApiCLib.yapiLockFunctionCallBack
+ YAPI._yapiLockFunctionCallBack.restypes = ctypes.c_int
+ YAPI._yapiLockFunctionCallBack.argtypes = [ctypes.c_char_p]
+
+ # private extern static int _yapiUnlockFunctionCallBack(StringBuilder errmsgRef);
+ YAPI._yapiUnlockFunctionCallBack = YAPI._yApiCLib.yapiUnlockFunctionCallBack
+ YAPI._yapiUnlockFunctionCallBack.restypes = ctypes.c_int
+ YAPI._yapiUnlockFunctionCallBack.argtypes = [ctypes.c_char_p]
+
+ # private extern static int _yapiRegisterHub(StringBuilder rootUrl, StringBuilder errmsgRef);
+ YAPI._yapiRegisterHub = YAPI._yApiCLib.yapiRegisterHub
+ YAPI._yapiRegisterHub.restypes = ctypes.c_int
+ YAPI._yapiRegisterHub.argtypes = [ctypes.c_char_p, ctypes.c_char_p]
+
+ # private extern static int _yapiPreregisterHub(StringBuilder rootUrl, StringBuilder errmsgRef);
+ YAPI._yapiPreregisterHub = YAPI._yApiCLib.yapiPreregisterHub
+ YAPI._yapiPreregisterHub.restypes = ctypes.c_int
+ YAPI._yapiPreregisterHub.argtypes = [ctypes.c_char_p, ctypes.c_char_p]
+
+ # private extern static void _yapiUnregisterHub(StringBuilder rootUrl);
+ YAPI._yapiUnregisterHub = YAPI._yApiCLib.yapiUnregisterHub
+ YAPI._yapiUnregisterHub.restypes = ctypes.c_int
+ YAPI._yapiUnregisterHub.argtypes = [ctypes.c_char_p]
+
+ # private extern static int _yapiUpdateDeviceList(uint force, StringBuilder errmsgRef);
+ YAPI._yapiUpdateDeviceList = YAPI._yApiCLib.yapiUpdateDeviceList
+ YAPI._yapiUpdateDeviceList.restypes = ctypes.c_int
+ YAPI._yapiUpdateDeviceList.argtypes = [ctypes.c_uint, ctypes.c_char_p]
+
+ # private extern static int _yapiHandleEvents(StringBuilder errmsgRef);
+ YAPI._yapiHandleEvents = YAPI._yApiCLib.yapiHandleEvents
+ YAPI._yapiHandleEvents.restypes = ctypes.c_int
+ YAPI._yapiHandleEvents.argtypes = [ctypes.c_char_p]
+
+ # private extern static u64 _yapiGetTickCount();
+ YAPI._yapiGetTickCount = YAPI._yApiCLib.yapiGetTickCount
+ YAPI._yapiGetTickCount.restypes = ctypes.c_ulonglong
+ YAPI._yapiGetTickCount.argtypes = []
+
+ # private extern static int _yapiCheckLogicalName(StringBuilder name);
+ YAPI._yapiCheckLogicalName = YAPI._yApiCLib.yapiCheckLogicalName
+ YAPI._yapiCheckLogicalName.restypes = ctypes.c_int
+ YAPI._yapiCheckLogicalName.argtypes = [ctypes.c_char_p]
+
+ # private extern static u16 _yapiGetAPIVersion(ref IntPtr version, ref IntPtr date);
+ YAPI._yapiGetAPIVersion = YAPI._yApiCLib.yapiGetAPIVersion
+ YAPI._yapiGetAPIVersion.restypes = ctypes.c_ushort
+ YAPI._yapiGetAPIVersion.argtypes = [ctypes.c_void_p, ctypes.c_void_p]
+
+ # private extern static YDEV_DESCR _yapiGetDevice(StringBuilder device_str, StringBuilder errmsgRef);
+ YAPI._yapiGetDevice = YAPI._yApiCLib.yapiGetDevice
+ YAPI._yapiGetDevice.restypes = ctypes.c_int
+ YAPI._yapiGetDevice.argtypes = [ctypes.c_char_p, ctypes.c_char_p]
+
+ # private extern static int _yapiGetAllDevices(IntPtr buffer,
+ # int maxsize, ref int neededsize,
+ # StringBuilder errmsgRef);
+ YAPI._yapiGetAllDevices = YAPI._yApiCLib.yapiGetAllDevices
+ YAPI._yapiGetAllDevices.restypes = ctypes.c_int
+ YAPI._yapiGetAllDevices.argtypes = [ctypes.c_void_p, ctypes.c_int, ctypes.c_void_p, ctypes.c_char_p]
+
+ # private extern static int _yapiGetDeviceInfo(YDEV_DESCR d, ref yDeviceSt infos, StringBuilder errmsgRef);
+ YAPI._yapiGetDeviceInfo = YAPI._yApiCLib.yapiGetDeviceInfo
+ YAPI._yapiGetDeviceInfo.restypes = ctypes.c_int
+ YAPI._yapiGetDeviceInfo.argtypes = [ctypes.c_int, ctypes.c_void_p, ctypes.c_char_p]
+
+ # private extern static YFUN_DESCR _yapiGetFunction(StringBuilder class_str,
+ # StringBuilder function_str,
+ # StringBuilder errmsgRef);
+ YAPI._yapiGetFunction = YAPI._yApiCLib.yapiGetFunction
+ YAPI._yapiGetFunction.restypes = ctypes.c_int
+ YAPI._yapiGetFunction.argtypes = [ctypes.c_char_p, ctypes.c_char_p, ctypes.c_char_p]
+
+ # private extern static int _yapiGetFunctionsByClass(StringBuilder class_str,
+ # YFUN_DESCR precFuncDesc,
+ # IntPtr buffer,
+ # int maxsize,
+ # ref int neededsize, StringBuilder errmsgRef);
+ YAPI._yapiGetFunctionsByClass = YAPI._yApiCLib.yapiGetFunctionsByClass
+ YAPI._yapiGetFunctionsByClass.restypes = ctypes.c_int
+ YAPI._yapiGetFunctionsByClass.argtypes = [ctypes.c_char_p, ctypes.c_int, ctypes.c_void_p, ctypes.c_int,
+ ctypes.c_void_p, ctypes.c_char_p]
+
+ # private extern static int _yapiGetFunctionsByDevice(YDEV_DESCR device, YFUN_DESCR precFuncDesc,
+ # IntPtr buffer, int maxsize, ref int neededsize, StringBuilder errmsgRef);
+ YAPI._yapiGetFunctionsByDevice = YAPI._yApiCLib.yapiGetFunctionsByDevice
+ YAPI._yapiGetFunctionsByDevice.restypes = ctypes.c_int
+ YAPI._yapiGetFunctionsByDevice.argtypes = [ctypes.c_int, ctypes.c_int, ctypes.c_void_p, ctypes.c_int,
+ ctypes.c_void_p, ctypes.c_char_p]
+
+ # internal extern static int _yapiGetFunctionInfoEx(YFUN_DESCR fundesc, ref YDEV_DESCR devdesc,
+ # StringBuilder serial, StringBuilder funcId, StringBuilder baseType, StringBuilder funcName, StringBuilder funcVal,
+ # StringBuilder errmsgRef);
+ YAPI._yapiGetFunctionInfoEx = YAPI._yApiCLib.yapiGetFunctionInfoEx
+ YAPI._yapiGetFunctionInfoEx.restypes = ctypes.c_int
+ YAPI._yapiGetFunctionInfoEx.argtypes = [ctypes.c_int, ctypes.c_void_p, ctypes.c_char_p, ctypes.c_char_p,
+ ctypes.c_char_p, ctypes.c_char_p, ctypes.c_char_p, ctypes.c_char_p]
+
+ # private extern static int _yapiGetErrorString(int errorcode, StringBuilder buffer,
+ # int maxsize, StringBuilder errmsgRef);
+ #YAPI._yapiGetErrorString = YAPI._yApiCLib.yapiGetErrorString
+ #YAPI._yapiGetErrorString.restypes = ctypes.c_int
+ #YAPI._yapiGetErrorString.argtypes = [ctypes.c_int , ctypes.c_char_p , ctypes.c_int , ctypes.c_char_p]
+
+ #YRETCODE YAPI_FUNCTION_EXPORT yapiHTTPRequestSyncStart(YIOHDL *iohdl, const char *device,
+ # const char *request, char **reply, int *replysize, char *errmsg);
+ YAPI._yapiHTTPRequestSyncStart = YAPI._yApiCLib.yapiHTTPRequestSyncStart
+ YAPI._yapiHTTPRequestSyncStart.restypes = ctypes.c_int
+ YAPI._yapiHTTPRequestSyncStart.argtypes = [ctypes.c_void_p, ctypes.c_char_p, ctypes.c_char_p,
+ POINTER(POINTER(ctypes.c_ubyte)), ctypes.c_void_p, ctypes.c_char_p]
+
+ #YRETCODE YAPI_FUNCTION_EXPORT yapiHTTPRequestSyncStartEx(YIOHDL *iohdl, const char *device,
+ # const char *request, int requestsize, char **reply, int *replysize, char *errmsg);
+ YAPI._yapiHTTPRequestSyncStartEx = YAPI._yApiCLib.yapiHTTPRequestSyncStartEx
+ YAPI._yapiHTTPRequestSyncStartEx.restypes = ctypes.c_int
+ YAPI._yapiHTTPRequestSyncStartEx.argtypes = [ctypes.c_void_p, ctypes.c_char_p, ctypes.c_char_p, ctypes.c_int,
+ POINTER(POINTER(ctypes.c_ubyte)), ctypes.c_void_p, ctypes.c_char_p]
+
+ #YRETCODE YAPI_FUNCTION_EXPORT yapiHTTPRequestSyncDone(YIOHDL *iohdl, char *errmsg);
+ YAPI._yapiHTTPRequestSyncDone = YAPI._yApiCLib.yapiHTTPRequestSyncDone
+ YAPI._yapiHTTPRequestSyncDone.restypes = ctypes.c_int
+ YAPI._yapiHTTPRequestSyncDone.argtypes = [ctypes.c_void_p, ctypes.c_char_p]
+
+ #YRETCODE YAPI_FUNCTION_EXPORT yapiHTTPRequestAsync(const char *device, const char *request,
+ # yapiRequestAsyncCallback callback, void *context, char *errmsg);
+ YAPI._yapiHTTPRequestAsync = YAPI._yApiCLib.yapiHTTPRequestAsync
+ YAPI._yapiHTTPRequestAsync.restypes = ctypes.c_int
+ YAPI._yapiHTTPRequestAsync.argtypes = [ctypes.c_char_p, ctypes.c_char_p, ctypes.c_void_p, ctypes.c_void_p,
+ ctypes.c_char_p]
+
+ # private extern static int _yapiHTTPRequest(StringBuilder device, StringBuilder url,
+ # StringBuilder buffer, int buffsize, ref int fullsize, StringBuilder errmsgRef);
+ YAPI._yapiHTTPRequest = YAPI._yApiCLib.yapiHTTPRequest
+ YAPI._yapiHTTPRequest.restypes = ctypes.c_int
+ YAPI._yapiHTTPRequest.argtypes = [ctypes.c_char_p, ctypes.c_char_p, ctypes.c_char_p, ctypes.c_int,
+ ctypes.c_void_p, ctypes.c_char_p]
+
+ # private extern static int _yapiGetDevicePath(int devdesc, StringBuilder rootdevice, StringBuilder path,
+ # int pathsize, ref int neededsize, StringBuilder errmsgRef);
+ YAPI._yapiGetDevicePath = YAPI._yApiCLib.yapiGetDevicePath
+ YAPI._yapiGetDevicePath.restypes = ctypes.c_int
+ YAPI._yapiGetDevicePath.argtypes = [ctypes.c_int, ctypes.c_char_p, ctypes.c_char_p, ctypes.c_int,
+ ctypes.c_void_p, ctypes.c_char_p]
+
+ # private extern static int _yapiSleep(int duration_ms, StringBuilder errmsgRef);
+ YAPI._yapiSleep = YAPI._yApiCLib.yapiSleep
+ YAPI._yapiSleep.restypes = ctypes.c_int
+ YAPI._yapiSleep.argtypes = [ctypes.c_int, ctypes.c_char_p]
+
+ YAPI._yapiRegisterHubDiscoveryCallback = YAPI._yApiCLib.yapiRegisterHubDiscoveryCallback
+ YAPI._yapiRegisterHubDiscoveryCallback.restypes = ctypes.c_int
+ YAPI._yapiRegisterHubDiscoveryCallback.argtypes = [ctypes.c_void_p]
+
+ YAPI._yapiTriggerHubDiscovery = YAPI._yApiCLib.yapiTriggerHubDiscovery
+ YAPI._yapiTriggerHubDiscovery.restypes = ctypes.c_int
+ YAPI._yapiTriggerHubDiscovery.argtypes = [ctypes.c_char_p]
+
+ YAPI._yapiRegisterDeviceLogCallback = YAPI._yApiCLib.yapiRegisterDeviceLogCallback
+ YAPI._yapiRegisterDeviceLogCallback.restypes = ctypes.c_int
+ YAPI._yapiRegisterDeviceLogCallback.argtypes = [ctypes.c_void_p]
+
+ YAPI._yapiStartStopDeviceLogCallback = YAPI._yApiCLib.yapiStartStopDeviceLogCallback
+ YAPI._yapiStartStopDeviceLogCallback.restypes = ctypes.c_int
+ YAPI._yapiStartStopDeviceLogCallback.argtypes = [ctypes.c_char_p, ctypes.c_int]
+
+ ##--- (generated code: YFunction dlldef)
+ YAPI._yapiGetAllJsonKeys = YAPI._yApiCLib.yapiGetAllJsonKeys
+ YAPI._yapiGetAllJsonKeys.restypes = ctypes.c_int
+ YAPI._yapiGetAllJsonKeys.argtypes = [ctypes.c_char_p, ctypes.c_char_p, ctypes.c_int, ctypes.c_void_p, ctypes.c_char_p]
+ YAPI._yapiCheckFirmware = YAPI._yApiCLib.yapiCheckFirmware
+ YAPI._yapiCheckFirmware.restypes = ctypes.c_int
+ YAPI._yapiCheckFirmware.argtypes = [ctypes.c_char_p, ctypes.c_char_p, ctypes.c_char_p, ctypes.c_char_p, ctypes.c_int, ctypes.c_void_p, ctypes.c_char_p]
+ YAPI._yapiGetBootloaders = YAPI._yApiCLib.yapiGetBootloaders
+ YAPI._yapiGetBootloaders.restypes = ctypes.c_int
+ YAPI._yapiGetBootloaders.argtypes = [ctypes.c_char_p, ctypes.c_int, ctypes.c_void_p, ctypes.c_char_p]
+ YAPI._yapiUpdateFirmwareEx = YAPI._yApiCLib.yapiUpdateFirmwareEx
+ YAPI._yapiUpdateFirmwareEx.restypes = ctypes.c_int
+ YAPI._yapiUpdateFirmwareEx.argtypes = [ctypes.c_char_p, ctypes.c_char_p, ctypes.c_char_p, ctypes.c_int, ctypes.c_int, ctypes.c_char_p]
+ YAPI._yapiHTTPRequestSyncStartOutOfBand = YAPI._yApiCLib.yapiHTTPRequestSyncStartOutOfBand
+ YAPI._yapiHTTPRequestSyncStartOutOfBand.restypes = ctypes.c_int
+ YAPI._yapiHTTPRequestSyncStartOutOfBand.argtypes = [ctypes.c_void_p, ctypes.c_int, ctypes.c_char_p, ctypes.c_char_p, ctypes.c_int, POINTER(POINTER(ctypes.c_ubyte)), ctypes.c_void_p, ctypes.c_void_p, ctypes.c_void_p, ctypes.c_char_p]
+ YAPI._yapiHTTPRequestAsyncOutOfBand = YAPI._yApiCLib.yapiHTTPRequestAsyncOutOfBand
+ YAPI._yapiHTTPRequestAsyncOutOfBand.restypes = ctypes.c_int
+ YAPI._yapiHTTPRequestAsyncOutOfBand.argtypes = [ctypes.c_int, ctypes.c_char_p, ctypes.c_char_p, ctypes.c_int, ctypes.c_void_p, ctypes.c_void_p, ctypes.c_char_p]
+ YAPI._yapiTestHub = YAPI._yApiCLib.yapiTestHub
+ YAPI._yapiTestHub.restypes = ctypes.c_int
+ YAPI._yapiTestHub.argtypes = [ctypes.c_char_p, ctypes.c_int, ctypes.c_char_p]
+ YAPI._yapiJsonGetPath = YAPI._yApiCLib.yapiJsonGetPath
+ YAPI._yapiJsonGetPath.restypes = ctypes.c_int
+ YAPI._yapiJsonGetPath.argtypes = [ctypes.c_char_p, ctypes.c_char_p, ctypes.c_int, POINTER(POINTER(ctypes.c_ubyte)), ctypes.c_char_p]
+ YAPI._yapiJsonDecodeString = YAPI._yApiCLib.yapiJsonDecodeString
+ YAPI._yapiJsonDecodeString.restypes = ctypes.c_int
+ YAPI._yapiJsonDecodeString.argtypes = [ctypes.c_char_p, ctypes.c_char_p]
+ YAPI._yapiGetSubdevices = YAPI._yApiCLib.yapiGetSubdevices
+ YAPI._yapiGetSubdevices.restypes = ctypes.c_int
+ YAPI._yapiGetSubdevices.argtypes = [ctypes.c_char_p, ctypes.c_char_p, ctypes.c_int, ctypes.c_void_p, ctypes.c_char_p]
+ YAPI._yapiFreeMem = YAPI._yApiCLib.yapiFreeMem
+ YAPI._yapiFreeMem.restypes = ctypes.c_int
+ YAPI._yapiFreeMem.argtypes = [ctypes.c_void_p]
+ YAPI._yapiGetDevicePathEx = YAPI._yApiCLib.yapiGetDevicePathEx
+ YAPI._yapiGetDevicePathEx.restypes = ctypes.c_int
+ YAPI._yapiGetDevicePathEx.argtypes = [ctypes.c_char_p, ctypes.c_char_p, ctypes.c_char_p, ctypes.c_int, ctypes.c_void_p, ctypes.c_char_p]
+ #--- (end of generated code: YFunction dlldef)
+
+ YAPI._ydllLoaded = True
+
+ #noinspection PyUnresolvedReferences
+ class yDeviceSt(ctypes.Structure):
+ _pack_ = 1
+ #noinspection PyTypeChecker,PyTypeChecker,PyTypeChecker,PyTypeChecker,PyTypeChecker,
+ # PyTypeChecker,PyTypeChecker,PyTypeChecker,PyTypeChecker,PyTypeChecker
+ _fields_ = [("vendorid", ctypes.c_uint16),
+ ("deviceid", ctypes.c_uint16),
+ ("devrelease", ctypes.c_uint16),
+ ("nbinbterfaces", ctypes.c_uint16),
+ ("manufacturer", ctypes.c_char * 20), # YAPI.YOCTO_MANUFACTURER_LEN),
+ ("productname", ctypes.c_char * 28), # YAPI.YOCTO_PRODUCTNAME_LEN),
+ ("serial", ctypes.c_char * 20), # YAPI.YAPI.YOCTO_SERIAL_LEN),
+ ("logicalname", ctypes.c_char * 20), # YAPI.YOCTO_LOGICAL_LEN),
+ ("firmware", ctypes.c_char * 22), # YAPI.YOCTO_FIRMWARE_LEN),
+ ("beacon", ctypes.c_int8)]
+
+ #noinspection PyUnresolvedReferences
+ class YIOHDL(ctypes.Structure):
+ _pack_ = 1
+ _fields_ = [("raw", ctypes.c_byte)]
+
+ #noinspection PyClassHasNoInit
+ class yDEVICE_PROP:
+ PROP_VENDORID, PROP_DEVICEID, PROP_DEVRELEASE, PROP_FIRMWARELEVEL, PROP_MANUFACTURER, PROP_PRODUCTNAME, \
+ PROP_SERIAL, PROP_LOGICALNAME, PROP_URL = range(9)
+
+ #noinspection PyClassHasNoInit
+ class yFACE_STATUS:
+ YFACE_EMPTY, YFACE_RUNNING, YFACE_ERROR = range(3)
+
+ class _Event:
+ ARRIVAL, REMOVAL, CHANGE, FUN_VALUE, FUN_TIMEDREPORT, \
+ HUB_DISCOVERY, YAPI_NOP = range(7)
+
+ def __init__(self):
+ self.ev = self.YAPI_NOP
+ self.module = None
+ self.fun_descr = 0
+ self.value = ""
+ self.timestamp = 0.0
+ self.report = None
+ self.serial = None
+ self.url = None
+
+ def setArrival(self, module):
+ self.ev = self.ARRIVAL
+ self.module = module
+
+ def setRemoval(self, module):
+ self.ev = self.REMOVAL
+ self.module = module
+
+ def setChange(self, module):
+ self.ev = self.CHANGE
+ self.module = module
+
+ def setFunVal(self, fun_descr, value):
+ self.ev = self.FUN_VALUE
+ self.fun_descr = fun_descr
+ self.value = value
+
+ def setTimedReport(self, fun_descr, timestamp, report):
+ self.ev = self.FUN_TIMEDREPORT
+ self.fun_descr = fun_descr
+ self.timestamp = timestamp
+ self.report = report
+
+ def setHubDiscovery(self, serial, url):
+ self.ev = self.HUB_DISCOVERY
+ self.serial = serial
+ self.url = url
+
+ def invokePlug(self):
+ global yArrivalFct
+ global yRemovalFct
+ global yChangeFct
+ global yHubDiscoveryCallback
+ if self.ev == self.ARRIVAL:
+ if yArrivalFct is not None:
+ #noinspection PyCallingNonCallable
+ yArrivalFct(self.module)
+ elif self.ev == self.REMOVAL:
+ if yRemovalFct is not None:
+ #noinspection PyCallingNonCallable
+ yRemovalFct(self.module)
+ elif self.ev == self.CHANGE:
+ if yChangeFct is not None:
+ #noinspection PyCallingNonCallable
+ yChangeFct(self.module)
+ elif self.ev == self.HUB_DISCOVERY:
+ if yHubDiscoveryCallback is not None:
+ yHubDiscoveryCallback(self.serial, self.url)
+
+ # noinspection PyProtectedMember
+ def invokeData(self):
+ if self.ev == self.FUN_VALUE:
+ for i in range(len(YFunction._FunctionCallbacks)):
+ if YFunction._FunctionCallbacks[i].get_functionDescriptor() == self.fun_descr:
+ YFunction._FunctionCallbacks[i]._invokeValueCallback(self.value)
+ elif self.ev == self.FUN_TIMEDREPORT:
+ if self.report[0] <= 2:
+ for i in range(len(YFunction._TimedReportCallbackList)):
+ if YFunction._TimedReportCallbackList[i].get_functionDescriptor() == self.fun_descr:
+ sensor = YFunction._TimedReportCallbackList[i]
+ sensor._invokeTimedReportCallback(sensor._decodeTimedReport(self.timestamp, self.report))
+
+ ##--- (generated code: YFunction return codes)
+ # Yoctopuce error codes, used by default as function return value
+ SUCCESS = 0 # everything worked all right
+ NOT_INITIALIZED = -1 # call yInitAPI() first !
+ INVALID_ARGUMENT = -2 # one of the arguments passed to the function is invalid
+ NOT_SUPPORTED = -3 # the operation attempted is (currently) not supported
+ DEVICE_NOT_FOUND = -4 # the requested device is not reachable
+ VERSION_MISMATCH = -5 # the device firmware is incompatible with this API version
+ DEVICE_BUSY = -6 # the device is busy with another task and cannot answer
+ TIMEOUT = -7 # the device took too long to provide an answer
+ IO_ERROR = -8 # there was an I/O problem while talking to the device
+ NO_MORE_DATA = -9 # there is no more data to read from
+ EXHAUSTED = -10 # you have run out of a limited resource, check the documentation
+ DOUBLE_ACCES = -11 # you have two process that try to access to the same device
+ UNAUTHORIZED = -12 # unauthorized access to password-protected device
+ RTC_NOT_READY = -13 # real-time clock has not been initialized (or time was lost)
+ FILE_NOT_FOUND = -14 # the file is not found
+
+ #--- (end of generated code: YFunction return codes)
+
+ class YAPI_Exception(YAPI_Exception):
+ pass
+
+ YDevice_devCache = []
+
+ # - Types used for internal yapi callbacks
+ _yapiLogFunc = ctypes.CFUNCTYPE(None, ctypes.c_char_p, ctypes.c_int)
+
+ _yapiDeviceUpdateFunc = ctypes.CFUNCTYPE(None, ctypes.c_int)
+
+ _yapiFunctionUpdateFunc = ctypes.CFUNCTYPE(None, ctypes.c_int, ctypes.c_char_p)
+
+ _yapiTimedReportFunc = ctypes.CFUNCTYPE(None, ctypes.c_int, ctypes.c_double, POINTER(c_ubyte), ctypes.c_int)
+
+ _yapiHubDiscoveryCallback = ctypes.CFUNCTYPE(None, ctypes.c_char_p, ctypes.c_char_p)
+
+ _yapiDeviceLogCallback = ctypes.CFUNCTYPE(None, ctypes.c_int, ctypes.c_char_p)
+
+ @staticmethod
+ def YISERR(retcode):
+ if retcode < 0:
+ return True
+ return False
+
+ #noinspection PyClassHasNoInit
+ class blockingCallbackCtx:
+ res = 0
+ response = ""
+ errmsgRef = ""
+
+ #noinspection PyUnusedLocal
+ @staticmethod
+ def YblockingCallback(device, context, returnval, result, errmsgRef):
+ context.res = returnval
+ context.response = result
+ context.errmsgRef = errmsgRef
+
+ @staticmethod
+ def GetTickCount():
+ """
+ Returns the current value of a monotone millisecond-based time counter.
+ This counter can be used to compute delays in relation with
+ Yoctopuce devices, which also uses the millisecond as timebase.
+
+ @return a long integer corresponding to the millisecond counter.
+ """
+ #### for python, since some implementations don't support 64bits integers
+ #### GetTickCount returns a datetime object instead of a u64
+ #noinspection PyUnresolvedReferences
+ return datetime.datetime.today()
+
+ @staticmethod
+ def SetTraceFile(filename):
+ fname = ctypes.create_string_buffer(filename.encode("ASCII"))
+ #noinspection PyUnresolvedReferences
+ YAPI._yapiSetTraceFile(fname)
+
+ #noinspection PyUnresolvedReferences
+ @staticmethod
+ def Sleep(ms_duration, errmsgRef=None):
+ """
+ Pauses the execution flow for a specified duration.
+ This function implements a passive waiting loop, meaning that it does not
+ consume CPU cycles significantly. The processor is left available for
+ other threads and processes. During the pause, the library nevertheless
+ reads from time to time information from the Yoctopuce modules by
+ calling yHandleEvents(), in order to stay up-to-date.
+
+ This function may signal an error in case there is a communication problem
+ while contacting a module.
+
+ @param ms_duration : an integer corresponding to the duration of the pause,
+ in milliseconds.
+ @param errmsg : a string passed by reference to receive any error message.
+
+ @return YAPI.SUCCESS when the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ errBuffer = ctypes.create_string_buffer(YAPI.YOCTO_ERRMSG_LEN)
+ if type(ms_duration) == type(int()):
+ ms_duration = datetime.timedelta(milliseconds=ms_duration)
+ timeout = YAPI.GetTickCount() + ms_duration
+ res = YAPI.SUCCESS
+
+ ok = True
+ while ok:
+ res = YAPI.HandleEvents(errmsgRef)
+ if YAPI.YISERR(res):
+ return res
+
+ if YAPI.GetTickCount() < timeout:
+ #noinspection PyUnresolvedReferences
+ res = YAPI._yapiSleep(2, errBuffer)
+ if YAPI.YISERR(res):
+ if not errmsgRef is None:
+ errmsgRef.value = YByte2String(errBuffer.value)
+ return res
+ ok = YAPI.GetTickCount() < timeout
+ if errmsgRef is not None:
+ errmsgRef.value = YByte2String(errBuffer.value)
+ return res
+
+ @staticmethod
+ def CheckLogicalName(name):
+ """
+ Checks if a given string is valid as logical name for a module or a function.
+ A valid logical name has a maximum of 19 characters, all among
+ A..Z, a..z, 0..9, _, and -.
+ If you try to configure a logical name with an incorrect string,
+ the invalid characters are ignored.
+
+ @param name : a string containing the name to check.
+
+ @return true if the name is valid, false otherwise.
+ """
+ #noinspection PyUnresolvedReferences
+ if not YAPI._yapiCheckLogicalName(name.encode("ASCII")):
+ return False
+ return True
+
+ @staticmethod
+ def yapiLockFunctionCallBack(errmsgRef=None):
+ errBuffer = ctypes.create_string_buffer(YAPI.YOCTO_ERRMSG_LEN)
+ #noinspection PyUnresolvedReferences
+ res = YAPI._yapiLockFunctionCallBack(errBuffer)
+ if errmsgRef is not None:
+ #noinspection PyAttributeOutsideInit
+ errmsgRef.value = YByte2String(errBuffer.value)
+ return res
+
+ @staticmethod
+ def yapiUnlockFunctionCallBack(errmsgRef=None):
+ errBuffer = ctypes.create_string_buffer(YAPI.YOCTO_ERRMSG_LEN)
+ #noinspection PyUnresolvedReferences
+ res = YAPI._yapiUnlockFunctionCallBack(errBuffer)
+ if not errmsgRef is None:
+ #noinspection PyAttributeOutsideInit
+ errmsgRef.value = YByte2String(errBuffer.value)
+ return res
+
+ @staticmethod
+ def _getCalibrationHandler(calType):
+ key = str(calType)
+ if key in YAPI._CalibHandlers:
+ return YAPI._CalibHandlers[key]
+ return None
+
+ @staticmethod
+ def _setArrayLength(a, length):
+ if len(a) > length:
+ del a[length:]
+ while len(a) < length:
+ a.append(0)
+
+ decExp = [1.0e-6, 1.0e-5, 1.0e-4, 1.0e-3, 1.0e-2, 1.0e-1, 1.0, 1.0e1, 1.0e2, 1.0e3, 1.0e4, 1.0e5, 1.0e6, 1.0e7,
+ 1.0e8, 1.0e9]
+
+ # Convert Yoctopuce 16-bit decimal floats to standard double-precision floats
+
+ @staticmethod
+ def _decimalToDouble(val):
+ negate = False
+ mantis = val & 2047
+ if mantis == 0:
+ return 0.0
+ if val > 32767:
+ negate = True
+ val = 65536 - val
+ if val < 0:
+ negate = True
+ val = -val
+ exp = val >> 11
+ res = (mantis) * YAPI.decExp[exp]
+ if negate:
+ return -res
+ else:
+ return res
+
+ # Convert standard double-precision floats to Yoctopuce 16-bit decimal floats
+ @staticmethod
+ def _doubleToDecimal(val):
+ negate = False
+
+ if val == 0.0:
+ return 0
+ if val < 0:
+ negate = True
+ val = -val
+ comp = val / 1999.0
+ decpow = 0
+ while comp > YAPI.decExp[decpow] and decpow < 15:
+ decpow += 1
+ mant = val / YAPI.decExp[decpow]
+ if decpow == 15 and mant > 2047.0:
+ res = (15 << 11) + 2047 # overflow
+ else:
+ res = (decpow << 11) + round(mant)
+ if negate:
+ return -res
+ else:
+ return res
+
+ @staticmethod
+ def _decodeWords(sdat):
+ p = 0
+ udat = []
+ while p < len(sdat):
+ c = sdat[p]
+ p += 1
+ if c == '*':
+ val = 0
+ elif c == 'X':
+ val = 0xffff
+ elif c == 'Y':
+ val = 0x7fff
+ elif c >= 'a':
+ srcpos = int(len(udat) - 1 - (ord(c) - ord('a')))
+ if srcpos < 0:
+ val = 0
+ else:
+ val = udat[srcpos]
+ else:
+ if p + 2 > len(sdat):
+ return udat
+ val = (ord(c) - ord('0'))
+ c = sdat[p]
+ p += 1
+ val += (ord(c) - ord('0')) << 5
+ c = sdat[p]
+ p += 1
+ if c == 'z':
+ c = "\\"
+ val += (ord(c) - ord('0')) << 10
+ udat.append(val)
+ return udat
+
+ @staticmethod
+ def _decodeFloats(sdat):
+ p = 0
+ idat = []
+ while p < len(sdat):
+ val = 0
+ sign = 1
+ dec = 0
+ decInc = 0
+ c = sdat[p]
+ p += 1
+ while c != '-' and (c < '0' or c > '9'):
+ if p >= len(sdat):
+ return idat
+ c = sdat[p]
+ p += 1
+ if c == '-':
+ if p >= len(sdat):
+ return idat
+ sign = -sign
+ c = sdat[p]
+ p += 1
+ while ('0' <= c <= '9') or c == '.':
+ if c == '.':
+ decInc = 1
+ elif dec < 3:
+ val = val * 10 + ord(c) - ord('0')
+ dec += decInc
+ if p < len(sdat):
+ c = sdat[p]
+ p += 1
+ else:
+ c = 0
+ if dec < 3:
+ if dec == 0:
+ val *= 1000
+ elif dec == 1:
+ val *= 100
+ elif dec == 2:
+ val *= 10
+ idat.append(sign * val)
+ return idat
+
+ @staticmethod
+ def _atoi(val):
+ val = val.strip()
+ p = 0
+ if p < len(val) and (val[p] == '-' or val[p] == '+'):
+ p += 1
+ while p < len(val) and val[p].isdigit():
+ p += 1
+ if p == 0:
+ return 0
+ return int(val[: p])
+
+ @staticmethod
+ def _bytesToHexStr(bindata):
+ return binascii.hexlify(bindata).upper()
+
+ @staticmethod
+ def _hexStrToBin(hex_str):
+ return binascii.unhexlify(YString2Byte(hex_str))
+
+ #noinspection PyUnresolvedReferences
+ @staticmethod
+ def HandleEvents(errmsgRef=None):
+ """
+ Maintains the device-to-library communication channel.
+ If your program includes significant loops, you may want to include
+ a call to this function to make sure that the library takes care of
+ the information pushed by the modules on the communication channels.
+ This is not strictly necessary, but it may improve the reactivity
+ of the library for the following commands.
+
+ This function may signal an error in case there is a communication problem
+ while contacting a module.
+
+ @param errmsg : a string passed by reference to receive any error message.
+
+ @return YAPI.SUCCESS when the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ errBuffer = ctypes.create_string_buffer(YAPI.YOCTO_ERRMSG_LEN)
+
+ #noinspection PyUnresolvedReferences
+ res = YAPI._yapiHandleEvents(errBuffer)
+ if YAPI.YISERR(res):
+ if errmsgRef is not None:
+ #noinspection PyAttributeOutsideInit
+ errmsgRef.value = YByte2String(errBuffer.value)
+ return res
+
+ while len(YAPI._DataEvents) > 0:
+ YAPI.yapiLockFunctionCallBack(errmsgRef)
+ if not (len(YAPI._DataEvents)):
+ YAPI.yapiUnlockFunctionCallBack(errmsgRef)
+ break
+
+ ev = YAPI._DataEvents.pop(0)
+ YAPI.yapiUnlockFunctionCallBack(errmsgRef)
+ ev.invokeData()
+ return YAPI.SUCCESS
+
+ @staticmethod
+ def yapiUpdateDeviceList(force, errmsgRef=None):
+ errmsg_buffer = ctypes.create_string_buffer(YAPI.YOCTO_ERRMSG_LEN)
+ #noinspection PyUnresolvedReferences
+ res = YAPI._yapiUpdateDeviceList(force, errmsg_buffer)
+ if YAPI.YISERR(res):
+ if not errmsgRef is None:
+ errmsgRef.value = YByte2String(errmsg_buffer.value)
+ return res
+
+ @staticmethod
+ def apiGetFunctionsByDevice(devdesc, precFuncDesc, dbuffer, maxsize, neededsizeRef, errmsgRef):
+ errmsg_buffer = ctypes.create_string_buffer(YAPI.YOCTO_ERRMSG_LEN)
+ neededsize = ctypes.c_int()
+ #noinspection PyUnresolvedReferences
+ res = YAPI._yapiGetFunctionsByDevice(devdesc, precFuncDesc, dbuffer,
+ maxsize, ctypes.byref(neededsize), errmsg_buffer)
+ neededsizeRef.value = neededsize.value
+ if not errmsgRef is None:
+ errmsgRef.value = YByte2String(errmsg_buffer.value)
+ return res
+
+ @staticmethod
+ def DisableExceptions():
+ """
+ Disables the use of exceptions to report runtime errors.
+ When exceptions are disabled, every function returns a specific
+ error value which depends on its type and which is documented in
+ this reference manual.
+ """
+ YAPI.ExceptionsDisabled = True
+
+ @staticmethod
+ def EnableExceptions():
+ """
+ Re-enables the use of exceptions for runtime error handling.
+ Be aware than when exceptions are enabled, every function that fails
+ triggers an exception. If the exception is not caught by the user code,
+ it either fires the debugger or aborts (i.e. crash) the program.
+ On failure, throws an exception or returns a negative error code.
+ """
+ YAPI.ExceptionsDisabled = False
+
+ # - Internal callback registered into YAPI
+ #noinspection PyUnusedLocal
+ @staticmethod
+ def native_yLogFunction(log, loglen):
+
+ global yLogFct
+ if yLogFct is not None:
+ #noinspection PyCallingNonCallable
+ yLogFct(YByte2String(log))
+ return 0
+
+ @staticmethod
+ def RegisterLogFunction(logfun):
+ """
+ Registers a log callback function. This callback will be called each time
+ the API have something to say. Quite useful to debug the API.
+
+ @param logfun : a procedure taking a string parameter, or None
+ to unregister a previously registered callback.
+ """
+ global yLogFct
+ yLogFct = logfun
+
+ @staticmethod
+ def emptyDeviceSt():
+ infos = YAPI.yDeviceSt()
+ infos.vendorid = 0
+ infos.deviceid = 0
+ infos.devrelease = 0
+ infos.nbinbterfaces = 0
+ infos.manufacturer = "".encode("ASCII")
+ infos.productname = "".encode("ASCII")
+ infos.serial = "".encode("ASCII")
+ infos.logicalname = "".encode("ASCII")
+ infos.firmware = "".encode("ASCII")
+ infos.beacon = 0
+ return infos
+
+ @staticmethod
+ def yapiGetDeviceInfo(d, infos, errmsgRef=None):
+ errmsg_buffer = ctypes.create_string_buffer(YAPI.YOCTO_ERRMSG_LEN)
+ #noinspection PyUnresolvedReferences
+ res = YAPI._yapiGetDeviceInfo(d, ctypes.byref(infos), errmsg_buffer)
+ if errmsgRef is not None:
+ errmsgRef.value = YByte2String(errmsg_buffer.value)
+ return res
+
+ @staticmethod
+ def native_yDeviceArrivalCallback(d):
+ YDevice.PlugDevice(d)
+ infos = YAPI.emptyDeviceSt()
+ errmsgRef = YRefParam()
+ if YAPI.yapiGetDeviceInfo(d, infos, errmsgRef) != YAPI.SUCCESS:
+ return
+ modul = YModule.FindModule(YByte2String(infos.serial) + ".module")
+ modul.setImmutableAttributes(infos)
+ ev = YAPI._Event()
+ ev.setArrival(modul)
+ if yArrivalFct is not None:
+ YAPI._PlugEvents.append(ev)
+
+ @staticmethod
+ def native_HubDiscoveryCallback(serial_ptr, url_ptr):
+ serial = YByte2String(serial_ptr)
+ url = YByte2String(url_ptr)
+ ev = YAPI._Event()
+ ev.setHubDiscovery(serial, url)
+ YAPI._PlugEvents.append(ev)
+
+ @staticmethod
+ def native_DeviceLogCallback(d, line):
+ infos = YAPI.emptyDeviceSt()
+ errmsgRef = YRefParam()
+ if YAPI.yapiGetDeviceInfo(d, infos, errmsgRef) != YAPI.SUCCESS:
+ return
+ modul = YModule.FindModule(YByte2String(infos.serial) + ".module")
+ callback = modul.get_logCallback()
+ if callback is not None:
+ callback(modul, YByte2String(line))
+ return 0
+
+ @staticmethod
+ def yapiLockDeviceCallBack(errmsgRef=None):
+ errmsg_buffer = ctypes.create_string_buffer(YAPI.YOCTO_ERRMSG_LEN)
+ #noinspection PyUnresolvedReferences
+ res = YAPI._yapiLockDeviceCallBack(errmsg_buffer)
+ if errmsgRef is not None:
+ #noinspection PyAttributeOutsideInit
+ errmsgRef.value = YByte2String(errmsg_buffer.value)
+ return res
+
+ @staticmethod
+ def yapiUnlockDeviceCallBack(errmsgRef=None):
+ errmsg_buffer = ctypes.create_string_buffer(YAPI.YOCTO_ERRMSG_LEN)
+ #noinspection PyUnresolvedReferences
+ res = YAPI._yapiUnlockDeviceCallBack(errmsg_buffer)
+ if errmsgRef is not None:
+ #noinspection PyAttributeOutsideInit
+ errmsgRef.value = YByte2String(errmsg_buffer.value)
+ return res
+
+ @staticmethod
+ def RegisterDeviceArrivalCallback(arrivalCallback):
+ """
+ Register a callback function, to be called each time
+ a device is plugged. This callback will be invoked while yUpdateDeviceList
+ is running. You will have to call this function on a regular basis.
+
+ @param arrivalCallback : a procedure taking a YModule parameter, or None
+ to unregister a previously registered callback.
+ """
+ global yArrivalFct
+ yArrivalFct = arrivalCallback
+ if arrivalCallback is not None:
+ error = YRefParam()
+ mod = YModule.FirstModule()
+ while mod is not None:
+ if mod.isOnline():
+ YAPI.yapiLockDeviceCallBack(error)
+ YAPI.native_yDeviceArrivalCallback(mod.functionDescriptor())
+ YAPI.yapiUnlockDeviceCallBack(error)
+ mod = mod.nextModule()
+ return 0
+
+ @staticmethod
+ def RegisterDeviceRemovalCallback(removalCallback):
+ """
+ Register a callback function, to be called each time
+ a device is unplugged. This callback will be invoked while yUpdateDeviceList
+ is running. You will have to call this function on a regular basis.
+
+ @param removalCallback : a procedure taking a YModule parameter, or None
+ to unregister a previously registered callback.
+ """
+ global yRemovalFct
+ yRemovalFct = removalCallback
+
+ @staticmethod
+ def RegisterHubDiscoveryCallback(hubDiscoveryCallback):
+ """
+ Register a callback function, to be called each time an Network Hub send
+ an SSDP message. The callback has two string parameter, the first one
+ contain the serial number of the hub and the second contain the URL of the
+ network hub (this URL can be passed to RegisterHub). This callback will be invoked
+ while yUpdateDeviceList is running. You will have to call this function on a regular basis.
+
+ @param hubDiscoveryCallback : a procedure taking two string parameter, or None
+ to unregister a previously registered callback.
+ """
+ global yHubDiscoveryCallback
+ yHubDiscoveryCallback = hubDiscoveryCallback
+ errmsgRef = YRefParam()
+ YAPI.TriggerHubDiscovery(errmsgRef)
+ return 0
+
+ #noinspection PyUnresolvedReferences
+ @staticmethod
+ def native_yDeviceChangeCallback(d):
+ global yChangeFct
+ infos = YAPI.emptyDeviceSt()
+ errmsgRef = YRefParam()
+ if yChangeFct is None:
+ return
+ if YAPI.yapiGetDeviceInfo(d, infos, errmsgRef) != YAPI.SUCCESS:
+ return
+ modul = YModule.FindModule(YByte2String(infos.serial) + ".module")
+ ev = YAPI._Event()
+ ev.setChange(modul)
+ YAPI._PlugEvents.append(ev)
+ return 0
+
+ @staticmethod
+ def RegisterDeviceChangeCallback(callback):
+ global yChangeFct
+ yChangeFct = callback
+
+ @staticmethod
+ def queuesCleanUp():
+ del YAPI._PlugEvents[:]
+ del YAPI._DataEvents[:]
+
+ @staticmethod
+ def native_yFunctionUpdateCallback(f, data):
+ if data is None:
+ return
+ ev = YAPI._Event()
+ ev.setFunVal(f, YByte2String(data))
+ YAPI._DataEvents.append(ev)
+ return 0
+
+ @staticmethod
+ def native_yTimedReportCallback(f, timestamp, data, dataLen):
+ report = []
+ for i in range(dataLen):
+ report.append(int(data[i]))
+ ev = YAPI._Event()
+ ev.setTimedReport(f, timestamp, report)
+ YAPI._DataEvents.append(ev)
+ return 0
+
+ @staticmethod
+ def RegisterCalibrationHandler(calibType, callback):
+ key = str(calibType)
+ YAPI._CalibHandlers[key] = callback
+
+ #noinspection PyUnusedLocal
+ @staticmethod
+ def LinearCalibrationHandler(rawValue, calibType, params, rawValues, refValues):
+ x = rawValues[0]
+ adj = refValues[0] - x
+ i = 0
+
+ if calibType < YAPI.YOCTO_CALIB_TYPE_OFS:
+ npt = calibType % 10
+ if npt > len(rawValues):
+ npt = len(rawValues)
+ if npt > len(refValues):
+ npt = len(refValues)
+ else:
+ npt = len(refValues)
+ while rawValue > rawValues[i] and i + 1 < npt:
+ i += 1
+ x2 = x
+ adj2 = adj
+ x = rawValues[i]
+ adj = refValues[i] - x
+ if rawValue < x and x > x2:
+ adj = adj2 + (adj - adj2) * (rawValue - x2) / (x - x2)
+ return rawValue + adj
+
+ #noinspection PyUnresolvedReferences
+ @staticmethod
+ def native_yDeviceRemovalCallback(d):
+ global yRemovalFct
+ infos = YAPI.emptyDeviceSt()
+ errmsgRef = YRefParam()
+ if yRemovalFct is None:
+ return
+ infos.deviceid = 0
+ if YAPI.yapiGetDeviceInfo(d, infos, errmsgRef) != YAPI.SUCCESS:
+ return
+ modul = YModule.FindModule(YByte2String(infos.serial) + ".module")
+ ev = YAPI._Event()
+ ev.setRemoval(modul)
+ YAPI._PlugEvents.append(ev)
+ return 0
+
+ @staticmethod
+ def apiGetAPIVersion(versionRef, dateRef):
+ pversion = YAPI.YPCHAR()
+ pdate = YAPI.YPCHAR()
+ #noinspection PyUnresolvedReferences
+ res = YAPI._yapiGetAPIVersion(ctypes.byref(pversion), ctypes.byref(pdate))
+ #noinspection PyAttributeOutsideInit
+ versionRef.value = YByte2String(pversion.buffer)
+ dateRef.value = YByte2String(pdate.buffer)
+ return res
+
+ @staticmethod
+ def GetAPIVersion():
+ """
+ Returns the version identifier for the Yoctopuce library in use.
+ The version is a string in the form "Major.Minor.Build",
+ for instance "1.01.5535". For languages using an external
+ DLL (for instance C#, VisualBasic or Delphi), the character string
+ includes as well the DLL version, for instance
+ "1.01.5535 (1.01.5439)".
+
+ If you want to verify in your code that the library version is
+ compatible with the version that you have used during development,
+ verify that the major number is strictly equal and that the minor
+ number is greater or equal. The build number is not relevant
+ with respect to the library compatibility.
+
+ @return a character string describing the library version.
+ """
+ version = YRefParam()
+ date = YRefParam()
+ #load yapi functions form dynamic library
+ if not YAPI._ydllLoaded:
+ YAPI.yloadYapiCDLL()
+ YAPI.apiGetAPIVersion(version, date)
+ #noinspection PyTypeChecker
+ return YAPI.YOCTO_API_VERSION_STR + "." + YAPI.YOCTO_API_BUILD_NO + " (" + version.value + ")"
+
+ @staticmethod
+ def InitAPI(mode, errmsg=None):
+ """
+ Initializes the Yoctopuce programming library explicitly.
+ It is not strictly needed to call yInitAPI(), as the library is
+ automatically initialized when calling yRegisterHub() for the
+ first time.
+
+ When YAPI.DETECT_NONE is used as detection mode,
+ you must explicitly use yRegisterHub() to point the API to the
+ VirtualHub on which your devices are connected before trying to access them.
+
+ @param mode : an integer corresponding to the type of automatic
+ device detection to use. Possible values are
+ YAPI.DETECT_NONE, YAPI.DETECT_USB, YAPI.DETECT_NET,
+ and YAPI.DETECT_ALL.
+ @param errmsg : a string passed by reference to receive any error message.
+
+ @return YAPI.SUCCESS when the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ errmsg_buffer = ctypes.create_string_buffer(YAPI.YOCTO_ERRMSG_LEN)
+ if YAPI._apiInitialized:
+ return YAPI.SUCCESS
+ #load yapi functions form dynamic library
+ if not YAPI._ydllLoaded:
+ YAPI.yloadYapiCDLL()
+ version = YRefParam()
+ date = YRefParam()
+ if YAPI.apiGetAPIVersion(version, date) != YAPI.YOCTO_API_VERSION_BCD:
+ if errmsg is not None:
+ errmsg.value \
+ = YAPI._yApiCLibFile + " does does not match the version of the Libary (Libary=" + \
+ YAPI.YOCTO_API_VERSION_STR + "." + YAPI.YOCTO_API_BUILD_NO
+ #noinspection PyTypeChecker
+ errmsg.value += " yapi.dll=" + version.value + ")"
+ return YAPI.VERSION_MISMATCH
+
+ YAPI.pymodule_initialization()
+
+ #noinspection PyUnresolvedReferences
+ res = YAPI._yapiInitAPI(mode, errmsg_buffer)
+ if errmsg is not None:
+ errmsg.value = YByte2String(errmsg_buffer.value)
+ if YAPI.YISERR(res):
+ return res
+
+ #noinspection PyUnresolvedReferences
+ YAPI._yapiRegisterDeviceArrivalCallback(native_yDeviceArrivalAnchor)
+ #noinspection PyUnresolvedReferences
+ YAPI._yapiRegisterDeviceRemovalCallback(native_yDeviceRemovalAnchor)
+ #noinspection PyUnresolvedReferences
+ YAPI._yapiRegisterDeviceChangeCallback(native_yDeviceChangeAnchor)
+ #noinspection PyUnresolvedReferences
+ YAPI._yapiRegisterFunctionUpdateCallback(native_yFunctionUpdateAnchor)
+ #noinspection PyUnresolvedReferences
+ YAPI._yapiRegisterTimedReportCallback(native_yTimedReportAnchor)
+ #noinspection PyUnresolvedReferences
+ YAPI._yapiRegisterLogFunction(native_yLogFunctionAnchor)
+ #noinspection PyUnresolvedReferences
+ YAPI._yapiRegisterHubDiscoveryCallback(native_yHubDiscoveryAnchor)
+ #noinspection PyUnresolvedReferences
+ YAPI._yapiRegisterDeviceLogCallback(native_yDeviceLogAnchor)
+
+ for i in range(21):
+ YAPI.RegisterCalibrationHandler(i, YAPI.LinearCalibrationHandler)
+ YAPI.RegisterCalibrationHandler(YAPI.YOCTO_CALIB_TYPE_OFS, YAPI.LinearCalibrationHandler)
+ YAPI._apiInitialized = True
+ return res
+
+ @staticmethod
+ def FreeAPI():
+ """
+ Frees dynamically allocated memory blocks used by the Yoctopuce library.
+ It is generally not required to call this function, unless you
+ want to free all dynamically allocated memory blocks in order to
+ track a memory leak for instance.
+ You should not call any other library function after calling
+ yFreeAPI(), or your program will crash.
+ """
+ if YAPI._apiInitialized:
+ #noinspection PyUnresolvedReferences
+ YAPI._yapiFreeAPI()
+ YAPI.pymodule_cleanup()
+ YFunction._ClearCache()
+ YAPI._apiInitialized = False
+
+ @staticmethod
+ def RegisterHub(url, errmsg=None):
+ """
+ Setup the Yoctopuce library to use modules connected on a given machine. The
+ parameter will determine how the API will work. Use the following values:
+
+ <b>usb</b>: When the usb keyword is used, the API will work with
+ devices connected directly to the USB bus. Some programming languages such a Javascript,
+ PHP, and Java don't provide direct access to USB hardware, so usb will
+ not work with these. In this case, use a VirtualHub or a networked YoctoHub (see below).
+
+ <b><i>x.x.x.x</i></b> or <b><i>hostname</i></b>: The API will use the devices connected to the
+ host with the given IP address or hostname. That host can be a regular computer
+ running a VirtualHub, or a networked YoctoHub such as YoctoHub-Ethernet or
+ YoctoHub-Wireless. If you want to use the VirtualHub running on you local
+ computer, use the IP address 127.0.0.1.
+
+ <b>callback</b>: that keyword make the API run in "<i>HTTP Callback</i>" mode.
+ This a special mode allowing to take control of Yoctopuce devices
+ through a NAT filter when using a VirtualHub or a networked YoctoHub. You only
+ need to configure your hub to call your server script on a regular basis.
+ This mode is currently available for PHP and Node.JS only.
+
+ Be aware that only one application can use direct USB access at a
+ given time on a machine. Multiple access would cause conflicts
+ while trying to access the USB modules. In particular, this means
+ that you must stop the VirtualHub software before starting
+ an application that uses direct USB access. The workaround
+ for this limitation is to setup the library to use the VirtualHub
+ rather than direct USB access.
+
+ If access control has been activated on the hub, virtual or not, you want to
+ reach, the URL parameter should look like:
+
+ http://username:password@address:port
+
+ You can call <i>RegisterHub</i> several times to connect to several machines.
+
+ @param url : a string containing either "usb","callback" or the
+ root URL of the hub to monitor
+ @param errmsg : a string passed by reference to receive any error message.
+
+ @return YAPI.SUCCESS when the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ errmsg_buffer = ctypes.create_string_buffer(YAPI.YOCTO_ERRMSG_LEN + 1)
+ if not YAPI._apiInitialized:
+ res = YAPI.InitAPI(0, errmsg)
+ if YAPI.YISERR(res):
+ return res
+ p = ctypes.create_string_buffer(url.encode("ASCII"))
+ #noinspection PyUnresolvedReferences
+ res = YAPI._yapiRegisterHub(p, errmsg_buffer)
+ if YAPI.YISERR(res):
+ if errmsg is not None:
+ errmsg.value = YByte2String(errmsg_buffer.value)
+ return res
+
+ @staticmethod
+ def PreregisterHub(url, errmsgRef=None):
+ """
+ Fault-tolerant alternative to RegisterHub(). This function has the same
+ purpose and same arguments as RegisterHub(), but does not trigger
+ an error when the selected hub is not available at the time of the function call.
+ This makes it possible to register a network hub independently of the current
+ connectivity, and to try to contact it only when a device is actively needed.
+
+ @param url : a string containing either "usb","callback" or the
+ root URL of the hub to monitor
+ @param errmsg : a string passed by reference to receive any error message.
+
+ @return YAPI.SUCCESS when the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ errmsg_buffer = ctypes.create_string_buffer(YAPI.YOCTO_ERRMSG_LEN)
+
+ if not YAPI._apiInitialized:
+ res = YAPI.InitAPI(0, errmsgRef)
+ if YAPI.YISERR(res):
+ return res
+ #noinspection PyUnresolvedReferences
+ res = YAPI._yapiPreregisterHub(ctypes.create_string_buffer(url.encode("ASCII")), errmsg_buffer)
+ if YAPI.YISERR(res):
+ if errmsgRef is not None:
+ errmsgRef.value = YByte2String(errmsg_buffer.value)
+ return res
+
+ @staticmethod
+ def UnregisterHub(url):
+ """
+ Setup the Yoctopuce library to no more use modules connected on a previously
+ registered machine with RegisterHub.
+
+ @param url : a string containing either "usb" or the
+ root URL of the hub to monitor
+ """
+ if not YAPI._apiInitialized:
+ return
+
+ #noinspection PyUnresolvedReferences
+ YAPI._yapiUnregisterHub(ctypes.create_string_buffer(url.encode("ASCII")))
+
+ @staticmethod
+ def TestHub(url, mstimeout, errmsgRef=None):
+ """
+ Test if the hub is reachable. This method do not register the hub, it only test if the
+ hub is usable. The url parameter follow the same convention as the RegisterHub
+ method. This method is useful to verify the authentication parameters for a hub. It
+ is possible to force this method to return after mstimeout milliseconds.
+
+ @param url : a string containing either "usb","callback" or the
+ root URL of the hub to monitor
+ @param mstimeout : the number of millisecond available to test the connection.
+ @param errmsg : a string passed by reference to receive any error message.
+
+ @return YAPI.SUCCESS when the call succeeds.
+
+ On failure returns a negative error code.
+ """
+ errmsg_buffer = ctypes.create_string_buffer(YAPI.YOCTO_ERRMSG_LEN)
+ if not YAPI._ydllLoaded:
+ YAPI.yloadYapiCDLL()
+
+ #noinspection PyUnresolvedReferences
+ res = YAPI._yapiTestHub(ctypes.create_string_buffer(url.encode("ASCII")), mstimeout, errmsg_buffer)
+ if YAPI.YISERR(res):
+ if errmsgRef is not None:
+ errmsgRef.value = YByte2String(errmsg_buffer.value)
+ return res
+
+ @staticmethod
+ def UpdateDeviceList(errmsg=None):
+ """
+ Triggers a (re)detection of connected Yoctopuce modules.
+ The library searches the machines or USB ports previously registered using
+ yRegisterHub(), and invokes any user-defined callback function
+ in case a change in the list of connected devices is detected.
+
+ This function can be called as frequently as desired to refresh the device list
+ and to make the application aware of hot-plug events.
+
+ @param errmsg : a string passed by reference to receive any error message.
+
+ @return YAPI.SUCCESS when the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ errmsg_buffer = ctypes.create_string_buffer(YAPI.YOCTO_ERRMSG_LEN)
+ if not YAPI._apiInitialized:
+ res = YAPI.InitAPI(0, errmsg)
+ if YAPI.YISERR(res):
+ return res
+ res = YAPI.yapiUpdateDeviceList(0, errmsg)
+ if YAPI.YISERR(res):
+ return res
+ #noinspection PyUnresolvedReferences
+ res = YAPI._yapiHandleEvents(errmsg_buffer)
+ if YAPI.YISERR(res):
+ if errmsg is not None:
+ #noinspection PyAttributeOutsideInit
+ errmsg.value = YByte2String(errmsg_buffer.value)
+ return res
+ while len(YAPI._PlugEvents) > 0:
+ YAPI.yapiLockDeviceCallBack(errmsg)
+ p = YAPI._PlugEvents.pop(0)
+ YAPI.yapiUnlockDeviceCallBack(errmsg)
+ p.invokePlug()
+ return YAPI.SUCCESS
+
+ @staticmethod
+ def TriggerHubDiscovery(errmsg=None):
+ """
+ Force a hub discovery, if a callback as been registered with yRegisterDeviceRemovalCallback it
+ will be called for each net work hub that will respond to the discovery.
+
+ @param errmsg : a string passed by reference to receive any error message.
+
+ @return YAPI.SUCCESS when the call succeeds.
+ On failure, throws an exception or returns a negative error code.
+ """
+ errmsg_buffer = ctypes.create_string_buffer(YAPI.YOCTO_ERRMSG_LEN + 1)
+ if not YAPI._apiInitialized:
+ res = YAPI.InitAPI(0, errmsg)
+ if YAPI.YISERR(res):
+ return res
+ res = YAPI._yapiTriggerHubDiscovery(errmsg_buffer)
+ if YAPI.YISERR(res):
+ if errmsg is not None:
+ errmsg.value = YByte2String(errmsg_buffer.value)
+ return res
+
+ @staticmethod
+ def yapiGetFunctionInfo(fundesc, devdescRef, serialRef, funcIdRef, funcNameRef, funcValRef, errmsgRef=None):
+ serialBuffer = ctypes.create_string_buffer(YAPI.YOCTO_SERIAL_LEN)
+ funcIdBuffer = ctypes.create_string_buffer(YAPI.YOCTO_FUNCTION_LEN)
+ funcNameBuffer = ctypes.create_string_buffer(YAPI.YOCTO_LOGICAL_LEN)
+ funcValBuffer = ctypes.create_string_buffer(YAPI.YOCTO_PUBVAL_LEN)
+ errBuffer = ctypes.create_string_buffer(YAPI.YOCTO_ERRMSG_LEN)
+ p = ctypes.c_int()
+ #noinspection PyUnresolvedReferences
+ res = YAPI._yapiGetFunctionInfoEx(fundesc, ctypes.byref(p), serialBuffer, funcIdBuffer, None,
+ funcNameBuffer, funcValBuffer, errBuffer)
+ devdescRef.value = p.value
+ serialRef.value = YByte2String(serialBuffer.value)
+ funcIdRef.value = YByte2String(funcIdBuffer.value)
+ funcNameRef.value = YByte2String(funcNameBuffer.value)
+ funcValRef.value = YByte2String(funcValBuffer.value)
+ if errmsgRef is not None:
+ errmsgRef.value = YByte2String(errBuffer.value)
+ return res
+
+ @staticmethod
+ def yapiGetFunctionInfoEx(fundesc, devdescRef, serialRef, funcIdRef, baseTypeRef, funcNameRef, funcValRef, errmsgRef=None):
+ serialBuffer = ctypes.create_string_buffer(YAPI.YOCTO_SERIAL_LEN)
+ funcIdBuffer = ctypes.create_string_buffer(YAPI.YOCTO_FUNCTION_LEN)
+ baseTypeBuffer = ctypes.create_string_buffer(YAPI.YOCTO_FUNCTION_LEN)
+ funcNameBuffer = ctypes.create_string_buffer(YAPI.YOCTO_LOGICAL_LEN)
+ funcValBuffer = ctypes.create_string_buffer(YAPI.YOCTO_PUBVAL_LEN)
+ errBuffer = ctypes.create_string_buffer(YAPI.YOCTO_ERRMSG_LEN)
+ p = ctypes.c_int()
+ #noinspection PyUnresolvedReferences
+ res = YAPI._yapiGetFunctionInfoEx(fundesc, ctypes.byref(p), serialBuffer, funcIdBuffer, baseTypeBuffer,
+ funcNameBuffer, funcValBuffer, errBuffer)
+ devdescRef.value = p.value
+ serialRef.value = YByte2String(serialBuffer.value)
+ funcIdRef.value = YByte2String(funcIdBuffer.value)
+ baseTypeRef.value = YByte2String(baseTypeBuffer.value)
+ funcNameRef.value = YByte2String(funcNameBuffer.value)
+ funcValRef.value = YByte2String(funcValBuffer.value)
+ if errmsgRef is not None:
+ errmsgRef.value = YByte2String(errBuffer.value)
+ return res
+
+ @staticmethod
+ def yapiGetDeviceByFunction(fundesc, errmsgRef=None):
+ errBuffer = ctypes.create_string_buffer(YAPI.YOCTO_ERRMSG_LEN)
+ devdesc = ctypes.c_int()
+ if not YAPI._ydllLoaded:
+ YAPI.yloadYapiCDLL()
+ #noinspection PyUnresolvedReferences
+ res = YAPI._yapiGetFunctionInfoEx(fundesc, ctypes.byref(devdesc), None, None, None, None, None, errBuffer)
+ if errmsgRef is not None:
+ errmsgRef.value = YByte2String(errBuffer.value)
+ if res < 0:
+ return res
+ return devdesc.value
+
+ @staticmethod
+ def yapiUpdateDeviceList(force, errmsgRef=None):
+ errmsg_buffer = ctypes.create_string_buffer(YAPI.YOCTO_ERRMSG_LEN)
+ #noinspection PyUnresolvedReferences
+ res = YAPI._yapiUpdateDeviceList(force, errmsg_buffer)
+ if YAPI.YISERR(res):
+ if errmsgRef is not None:
+ errmsgRef.value = YByte2String(errmsg_buffer.value)
+ return res
+
+ @staticmethod
+ def yapiGetDevice(device_str, errmsgRef=None):
+ errmsg_buffer = ctypes.create_string_buffer(YAPI.YOCTO_ERRMSG_LEN)
+ p = ctypes.create_string_buffer(device_str.encode("ASCII"))
+ if not YAPI._ydllLoaded:
+ YAPI.yloadYapiCDLL()
+ #noinspection PyUnresolvedReferences
+ res = YAPI._yapiGetDevice(p, errmsg_buffer)
+ if errmsgRef is not None:
+ errmsgRef.value = YByte2String(errmsg_buffer.value)
+ return res
+
+ @staticmethod
+ def yapiGetFunction(class_str, function_str, errmsgRef=None):
+ errmsg_buffer = ctypes.create_string_buffer(YAPI.YOCTO_ERRMSG_LEN)
+ if not YAPI._ydllLoaded:
+ YAPI.yloadYapiCDLL()
+ #noinspection PyUnresolvedReferences
+ res = YAPI._yapiGetFunction(ctypes.create_string_buffer(class_str.encode("ASCII")),
+ ctypes.create_string_buffer(function_str.encode("ASCII")), errmsg_buffer)
+ if errmsgRef is not None:
+ errmsgRef.value = YByte2String(errmsg_buffer.value)
+ return res
+
+ @staticmethod
+ def apiGetFunctionsByClass(class_str, precFuncDesc, dbuffer, maxsize, neededsizeRef, errmsgRef=None):
+ errmsg_buffer = ctypes.create_string_buffer(YAPI.YOCTO_ERRMSG_LEN)
+ cneededsize = ctypes.c_int()
+ if not YAPI._ydllLoaded:
+ YAPI.yloadYapiCDLL()
+ #noinspection PyUnresolvedReferences
+ res = YAPI._yapiGetFunctionsByClass(ctypes.create_string_buffer(class_str.encode("ASCII")), precFuncDesc,
+ dbuffer, maxsize, ctypes.byref(cneededsize), errmsg_buffer)
+ #noinspection PyUnresolvedReferences
+ neededsizeRef.value = cneededsize.value
+ if errmsgRef is not None:
+ errmsgRef.value = YByte2String(errmsg_buffer.value)
+ return res
+
+ @staticmethod
+ def apiGetFunctionsByDevice(devdesc, precFuncDesc, dbuffer, maxsize, neededsizeRef, errmsgRef=None):
+ errmsg_buffer = ctypes.create_string_buffer(YAPI.YOCTO_ERRMSG_LEN)
+ cneededsize = ctypes.c_int()
+ if not YAPI._ydllLoaded:
+ YAPI.yloadYapiCDLL()
+ #noinspection PyUnresolvedReferences
+ res = YAPI._yapiGetFunctionsByDevice(devdesc, precFuncDesc, dbuffer, maxsize, ctypes.byref(cneededsize),
+ errmsg_buffer)
+ #noinspection PyUnresolvedReferences
+ neededsizeRef.value = cneededsize.value
+ if errmsgRef is not None:
+ errmsgRef.value = YByte2String(errmsg_buffer.value)
+ return res
+
+ @staticmethod
+ def pymodule_initialization():
+ pass
+
+ @staticmethod
+ def pymodule_cleanup():
+ del YAPI.YDevice_devCache[:]
+ del YAPI._PlugEvents[:]
+ del YAPI._DataEvents[:]
+ YFunction._CalibHandlers.clear()
+
+
+#--- (generated code: YFirmwareUpdate class start)
+#noinspection PyProtectedMember
+class YFirmwareUpdate(object):
+ """
+ The YFirmwareUpdate class let you control the firmware update of a Yoctopuce
+ module. This class should not be instantiate directly, instead the method
+ updateFirmware should be called to get an instance of YFirmwareUpdate.
+
+ """
+#--- (end of generated code: YFirmwareUpdate class start)
+ #--- (generated code: YFirmwareUpdate definitions)
+ #--- (end of generated code: YFirmwareUpdate definitions)
+
+ def __init__(self, serial, path, settings):
+ #--- (generated code: YFirmwareUpdate attributes)
+ self._serial = ''
+ self._settings = ''
+ self._firmwarepath = ''
+ self._progress_msg = ''
+ self._progress_c = 0
+ self._progress = 0
+ self._restore_step = 0
+ self._force = 0
+ #--- (end of generated code: YFirmwareUpdate attributes)
+ self._serial = serial
+ self._settings = settings
+ self._firmwarepath = path
+
+ #--- (generated code: YFirmwareUpdate implementation)
+ def _processMore(self, newupdate):
+ errmsg = ctypes.create_string_buffer(YAPI.YOCTO_ERRMSG_LEN)
+ # m
+ # res
+ # serial
+ # firmwarepath
+ # settings
+ # prod_prefix
+ # force
+ if self._progress_c < 100:
+ serial = self._serial
+ firmwarepath = self._firmwarepath
+ settings = YByte2String(self._settings)
+ if self._force:
+ force = 1
+ else:
+ force = 0
+ res = YAPI._yapiUpdateFirmwareEx(ctypes.create_string_buffer(YString2Byte(serial)), ctypes.create_string_buffer(YString2Byte(firmwarepath)), ctypes.create_string_buffer(YString2Byte(settings)), force, newupdate, errmsg)
+ if res < 0:
+ self._progress = res
+ self._progress_msg = YByte2String(errmsg.value)
+ return res
+ self._progress_c = res
+ self._progress = int((self._progress_c * 9) / (10))
+ self._progress_msg = YByte2String(errmsg.value)
+ else:
+ if (len(self._settings) != 0):
+ self._progress_msg = "restoring settings"
+ m = YModule.FindModule(self._serial + ".module")
+ if not (m.isOnline()):
+ return self._progress
+ if self._progress < 95:
+ prod_prefix = (m.get_productName())[0: 0 + 8]
+ if prod_prefix == "YoctoHub":
+ YAPI.Sleep(1000)
+ self._progress = self._progress + 1
+ return self._progress
+ else:
+ self._progress = 95
+ if self._progress < 100:
+ #
+ m.set_allSettingsAndFiles(self._settings)
+ m.saveToFlash()
+ self._settings = bytearray(0)
+ self._progress = 100
+ self._progress_msg = "success"
+ else:
+ self._progress = 100
+ self._progress_msg = "success"
+ return self._progress
+
+ @staticmethod
+ def GetAllBootLoaders():
+ """
+ Returns a list of all the modules in "firmware update" mode. Only devices
+ connected over USB are listed. For devices connected to a YoctoHub, you
+ must connect yourself to the YoctoHub web interface.
+
+ @return an array of strings containing the serial numbers of devices in "firmware update" mode.
+ """
+ errmsg = ctypes.create_string_buffer(YAPI.YOCTO_ERRMSG_LEN)
+ smallbuff = ctypes.create_string_buffer(1024)
+ # bigbuff
+ # buffsize
+ fullsize = ctypes.c_int()
+ # yapi_res
+ # bootloader_list
+ bootladers = []
+ fullsize.value = 0
+ yapi_res = YAPI._yapiGetBootloaders(smallbuff, 1024, ctypes.byref(fullsize), errmsg)
+ if yapi_res < 0:
+ return bootladers
+ if fullsize.value <= 1024:
+ bootloader_list = YByte2String(smallbuff.value)
+ else:
+ buffsize = fullsize.value
+ bigbuff = ctypes.create_string_buffer(buffsize)
+ yapi_res = YAPI._yapiGetBootloaders(bigbuff, buffsize, ctypes.byref(fullsize), errmsg)
+ if yapi_res < 0:
+ bigbuff = None
+ return bootladers
+ else:
+ bootloader_list = YByte2String(bigbuff.value)
+ bigbuff = None
+ if not (bootloader_list == ""):
+ bootladers = (bootloader_list).split(',')
+ return bootladers
+
+ @staticmethod
+ def CheckFirmware(serial, path, minrelease):
+ """
+ Test if the byn file is valid for this module. It is possible to pass a directory instead of a file.
+ In that case, this method returns the path of the most recent appropriate byn file. This method will
+ ignore any firmware older than minrelease.
+
+ @param serial : the serial number of the module to update
+ @param path : the path of a byn file or a directory that contains byn files
+ @param minrelease : a positive integer
+
+ @return : the path of the byn file to use, or an empty string if no byn files matches the requirement
+
+ On failure, returns a string that starts with "error:".
+ """
+ errmsg = ctypes.create_string_buffer(YAPI.YOCTO_ERRMSG_LEN)
+ smallbuff = ctypes.create_string_buffer(1024)
+ # bigbuff
+ # buffsize
+ fullsize = ctypes.c_int()
+ # res
+ # firmware_path
+ # release
+ fullsize.value = 0
+ release = str(minrelease)
+ res = YAPI._yapiCheckFirmware(ctypes.create_string_buffer(YString2Byte(serial)), ctypes.create_string_buffer(YString2Byte(release)), ctypes.create_string_buffer(YString2Byte(path)), smallbuff, 1024, ctypes.byref(fullsize), errmsg)
+ if res < 0:
+ firmware_path = "error:" + YByte2String(errmsg.value)
+ return "error:" + YByte2String(errmsg.value)
+ if fullsize.value <= 1024:
+ firmware_path = YByte2String(smallbuff.value)
+ else:
+ buffsize = fullsize.value
+ bigbuff = ctypes.create_string_buffer(buffsize)
+ res = YAPI._yapiCheckFirmware(ctypes.create_string_buffer(YString2Byte(serial)), ctypes.create_string_buffer(YString2Byte(release)), ctypes.create_string_buffer(YString2Byte(path)), bigbuff, buffsize, ctypes.byref(fullsize), errmsg)
+ if res < 0:
+ firmware_path = "error:" + YByte2String(errmsg.value)
+ else:
+ firmware_path = YByte2String(bigbuff.value)
+ bigbuff = None
+ return firmware_path
+
+ def get_progress(self):
+ """
+ Returns the progress of the firmware update, on a scale from 0 to 100. When the object is
+ instantiated, the progress is zero. The value is updated during the firmware update process until
+ the value of 100 is reached. The 100 value means that the firmware update was completed
+ successfully. If an error occurs during the firmware update, a negative value is returned, and the
+ error message can be retrieved with get_progressMessage.
+
+ @return an integer in the range 0 to 100 (percentage of completion)
+ or a negative error code in case of failure.
+ """
+ if self._progress >= 0:
+ self._processMore(0)
+ return self._progress
+
+ def get_progressMessage(self):
+ """
+ Returns the last progress message of the firmware update process. If an error occurs during the
+ firmware update process, the error message is returned
+
+ @return a string with the latest progress message, or the error message.
+ """
+ return self._progress_msg
+
+ def startUpdate(self):
+ """
+ Starts the firmware update process. This method starts the firmware update process in background. This method
+ returns immediately. You can monitor the progress of the firmware update with the get_progress()
+ and get_progressMessage() methods.
+
+ @return an integer in the range 0 to 100 (percentage of completion),
+ or a negative error code in case of failure.
+
+ On failure returns a negative error code.
+ """
+ # err
+ # leng
+ err = YByte2String(self._settings)
+ leng = len(err)
+ if ( leng >= 6) and ("error:" == (err)[0: 0 + 6]):
+ self._progress = -1
+ self._progress_msg = (err)[6: 6 + leng - 6]
+ else:
+ self._progress = 0
+ self._progress_c = 0
+ self._processMore(1)
+ return self._progress
+
+#--- (end of generated code: YFirmwareUpdate implementation)
+#--- (generated code: FirmwareUpdate functions)
+#--- (end of generated code: FirmwareUpdate functions)
+
+
+#--- (generated code: YDataStream class start)
+#noinspection PyProtectedMember
+class YDataStream(object):
+ """
+ YDataStream objects represent bare recorded measure sequences,
+ exactly as found within the data logger present on Yoctopuce
+ sensors.
+
+ In most cases, it is not necessary to use YDataStream objects
+ directly, as the YDataSet objects (returned by the
+ get_recordedData() method from sensors and the
+ get_dataSets() method from the data logger) provide
+ a more convenient interface.
+
+ """
+#--- (end of generated code: YDataStream class start)
+ #--- (generated code: YDataStream definitions)
+ #--- (end of generated code: YDataStream definitions)
+
+ DATA_INVALID = YAPI.INVALID_DOUBLE
+ DURATION_INVALID = -1
+
+ def __init__(self, parent, dataset=None, encoded=None):
+ #--- (generated code: YDataStream attributes)
+ self._parent = None
+ self._runNo = 0
+ self._utcStamp = 0
+ self._nCols = 0
+ self._nRows = 0
+ self._duration = 0
+ self._columnNames = []
+ self._functionId = ''
+ self._isClosed = 0
+ self._isAvg = 0
+ self._isScal = 0
+ self._isScal32 = 0
+ self._decimals = 0
+ self._offset = 0
+ self._scale = 0
+ self._samplesPerHour = 0
+ self._minVal = 0
+ self._avgVal = 0
+ self._maxVal = 0
+ self._decexp = 0
+ self._caltyp = 0
+ self._calpar = []
+ self._calraw = []
+ self._calref = []
+ self._values = []
+ #--- (end of generated code: YDataStream attributes)
+ self._calhdl = None
+ self._parent = parent
+ if dataset is not None:
+ self._initFromDataSet(dataset, encoded)
+
+ #--- (generated code: YDataStream implementation)
+ def _initFromDataSet(self, dataset, encoded):
+ # val
+ # i
+ # maxpos
+ # iRaw
+ # iRef
+ # fRaw
+ # fRef
+ # duration_float
+ iCalib = []
+ # // decode sequence header to extract data
+ self._runNo = encoded[0] + (((encoded[1]) << (16)))
+ self._utcStamp = encoded[2] + (((encoded[3]) << (16)))
+ val = encoded[4]
+ self._isAvg = (((val) & (0x100)) == 0)
+ self._samplesPerHour = ((val) & (0xff))
+ if ((val) & (0x100)) != 0:
+ self._samplesPerHour = self._samplesPerHour * 3600
+ else:
+ if ((val) & (0x200)) != 0:
+ self._samplesPerHour = self._samplesPerHour * 60
+ val = encoded[5]
+ if val > 32767:
+ val = val - 65536
+ self._decimals = val
+ self._offset = val
+ self._scale = encoded[6]
+ self._isScal = (self._scale != 0)
+ self._isScal32 = (len(encoded) >= 14)
+ val = encoded[7]
+ self._isClosed = (val != 0xffff)
+ if val == 0xffff:
+ val = 0
+ self._nRows = val
+ duration_float = self._nRows * 3600 / self._samplesPerHour
+ self._duration = round(duration_float)
+ # // precompute decoding parameters
+ self._decexp = 1.0
+ if self._scale == 0:
+ i = 0
+ while i < self._decimals:
+ self._decexp = self._decexp * 10.0
+ i = i + 1
+ iCalib = dataset._get_calibration()
+ self._caltyp = iCalib[0]
+ if self._caltyp != 0:
+ self._calhdl = YAPI._getCalibrationHandler(self._caltyp)
+ maxpos = len(iCalib)
+ del self._calpar[:]
+ del self._calraw[:]
+ del self._calref[:]
+ if self._isScal32:
+ i = 1
+ while i < maxpos:
+ self._calpar.append(iCalib[i])
+ i = i + 1
+ i = 1
+ while i + 1 < maxpos:
+ fRaw = iCalib[i]
+ fRaw = fRaw / 1000.0
+ fRef = iCalib[i + 1]
+ fRef = fRef / 1000.0
+ self._calraw.append(fRaw)
+ self._calref.append(fRef)
+ i = i + 2
+ else:
+ i = 1
+ while i + 1 < maxpos:
+ iRaw = iCalib[i]
+ iRef = iCalib[i + 1]
+ self._calpar.append(iRaw)
+ self._calpar.append(iRef)
+ if self._isScal:
+ fRaw = iRaw
+ fRaw = (fRaw - self._offset) / self._scale
+ fRef = iRef
+ fRef = (fRef - self._offset) / self._scale
+ self._calraw.append(fRaw)
+ self._calref.append(fRef)
+ else:
+ self._calraw.append(YAPI._decimalToDouble(iRaw))
+ self._calref.append(YAPI._decimalToDouble(iRef))
+ i = i + 2
+ # // preload column names for backward-compatibility
+ self._functionId = dataset.get_functionId()
+ if self._isAvg:
+ del self._columnNames[:]
+ self._columnNames.append("" + self._functionId + "_min")
+ self._columnNames.append("" + self._functionId + "_avg")
+ self._columnNames.append("" + self._functionId + "_max")
+ self._nCols = 3
+ else:
+ del self._columnNames[:]
+ self._columnNames.append(self._functionId)
+ self._nCols = 1
+ # // decode min/avg/max values for the sequence
+ if self._nRows > 0:
+ if self._isScal32:
+ self._avgVal = self._decodeAvg(encoded[8] + (((((encoded[9]) ^ (0x8000))) << (16))), 1)
+ self._minVal = self._decodeVal(encoded[10] + (((encoded[11]) << (16))))
+ self._maxVal = self._decodeVal(encoded[12] + (((encoded[13]) << (16))))
+ else:
+ self._minVal = self._decodeVal(encoded[8])
+ self._maxVal = self._decodeVal(encoded[9])
+ self._avgVal = self._decodeAvg(encoded[10] + (((encoded[11]) << (16))), self._nRows)
+ return 0
+
+ def _parseStream(self, sdata):
+ # idx
+ udat = []
+ dat = []
+ if len(sdata) == 0:
+ self._nRows = 0
+ return YAPI.SUCCESS
+ # // may throw an exception
+ udat = YAPI._decodeWords(self._parent._json_get_string(sdata))
+ del self._values[:]
+ idx = 0
+ if self._isAvg:
+ while idx + 3 < len(udat):
+ del dat[:]
+ if self._isScal32:
+ dat.append(self._decodeVal(udat[idx + 2] + (((udat[idx + 3]) << (16)))))
+ dat.append(self._decodeAvg(udat[idx] + (((((udat[idx + 1]) ^ (0x8000))) << (16))), 1))
+ dat.append(self._decodeVal(udat[idx + 4] + (((udat[idx + 5]) << (16)))))
+ idx = idx + 6
+ else:
+ dat.append(self._decodeVal(udat[idx]))
+ dat.append(self._decodeAvg(udat[idx + 2] + (((udat[idx + 3]) << (16))), 1))
+ dat.append(self._decodeVal(udat[idx + 1]))
+ idx = idx + 4
+ self._values.append(dat[:])
+ else:
+ if self._isScal and not (self._isScal32):
+ while idx < len(udat):
+ del dat[:]
+ dat.append(self._decodeVal(udat[idx]))
+ self._values.append(dat[:])
+ idx = idx + 1
+ else:
+ while idx + 1 < len(udat):
+ del dat[:]
+ dat.append(self._decodeAvg(udat[idx] + (((((udat[idx + 1]) ^ (0x8000))) << (16))), 1))
+ self._values.append(dat[:])
+ idx = idx + 2
+
+ self._nRows = len(self._values)
+ return YAPI.SUCCESS
+
+ def _get_url(self):
+ # url
+ url = "logger.json?id=" + self._functionId + "&run=" + str(int(self._runNo)) + "&utc=" + str(int(self._utcStamp))
+ return url
+
+ def loadStream(self):
+ # // may throw an exception
+ return self._parseStream(self._parent._download(self._get_url()))
+
+ def _decodeVal(self, w):
+ # val
+ val = w
+ if self._isScal32:
+ val = val / 1000.0
+ else:
+ if self._isScal:
+ val = (val - self._offset) / self._scale
+ else:
+ val = YAPI._decimalToDouble(w)
+ if self._caltyp != 0:
+ if self._calhdl is not None:
+ val = self._calhdl(val, self._caltyp, self._calpar, self._calraw, self._calref)
+ return val
+
+ def _decodeAvg(self, dw, count):
+ # val
+ val = dw
+ if self._isScal32:
+ val = val / 1000.0
+ else:
+ if self._isScal:
+ val = (val / (100 * count) - self._offset) / self._scale
+ else:
+ val = val / (count * self._decexp)
+ if self._caltyp != 0:
+ if self._calhdl is not None:
+ val = self._calhdl(val, self._caltyp, self._calpar, self._calraw, self._calref)
+ return val
+
+ def isClosed(self):
+ return self._isClosed
+
+ def get_runIndex(self):
+ """
+ Returns the run index of the data stream. A run can be made of
+ multiple datastreams, for different time intervals.
+
+ @return an unsigned number corresponding to the run index.
+ """
+ return self._runNo
+
+ def get_startTime(self):
+ """
+ Returns the relative start time of the data stream, measured in seconds.
+ For recent firmwares, the value is relative to the present time,
+ which means the value is always negative.
+ If the device uses a firmware older than version 13000, value is
+ relative to the start of the time the device was powered on, and
+ is always positive.
+ If you need an absolute UTC timestamp, use get_startTimeUTC().
+
+ @return an unsigned number corresponding to the number of seconds
+ between the start of the run and the beginning of this data
+ stream.
+ """
+ return self._utcStamp - int(time.time())
+
+ def get_startTimeUTC(self):
+ """
+ Returns the start time of the data stream, relative to the Jan 1, 1970.
+ If the UTC time was not set in the datalogger at the time of the recording
+ of this data stream, this method returns 0.
+
+ @return an unsigned number corresponding to the number of seconds
+ between the Jan 1, 1970 and the beginning of this data
+ stream (i.e. Unix time representation of the absolute time).
+ """
+ return self._utcStamp
+
+ def get_dataSamplesIntervalMs(self):
+ """
+ Returns the number of milliseconds between two consecutive
+ rows of this data stream. By default, the data logger records one row
+ per second, but the recording frequency can be changed for
+ each device function
+
+ @return an unsigned number corresponding to a number of milliseconds.
+ """
+ return int((3600000) / (self._samplesPerHour))
+
+ def get_dataSamplesInterval(self):
+ return 3600.0 / self._samplesPerHour
+
+ def get_rowCount(self):
+ """
+ Returns the number of data rows present in this stream.
+
+ If the device uses a firmware older than version 13000,
+ this method fetches the whole data stream from the device
+ if not yet done, which can cause a little delay.
+
+ @return an unsigned number corresponding to the number of rows.
+
+ On failure, throws an exception or returns zero.
+ """
+ if (self._nRows != 0) and self._isClosed:
+ return self._nRows
+ self.loadStream()
+ return self._nRows
+
+ def get_columnCount(self):
+ """
+ Returns the number of data columns present in this stream.
+ The meaning of the values present in each column can be obtained
+ using the method get_columnNames().
+
+ If the device uses a firmware older than version 13000,
+ this method fetches the whole data stream from the device
+ if not yet done, which can cause a little delay.
+
+ @return an unsigned number corresponding to the number of columns.
+
+ On failure, throws an exception or returns zero.
+ """
+ if self._nCols != 0:
+ return self._nCols
+ self.loadStream()
+ return self._nCols
+
+ def get_columnNames(self):
+ """
+ Returns the title (or meaning) of each data column present in this stream.
+ In most case, the title of the data column is the hardware identifier
+ of the sensor that produced the data. For streams recorded at a lower
+ recording rate, the dataLogger stores the min, average and max value
+ during each measure interval into three columns with suffixes _min,
+ _avg and _max respectively.
+
+ If the device uses a firmware older than version 13000,
+ this method fetches the whole data stream from the device
+ if not yet done, which can cause a little delay.
+
+ @return a list containing as many strings as there are columns in the
+ data stream.
+
+ On failure, throws an exception or returns an empty array.
+ """
+ if len(self._columnNames) != 0:
+ return self._columnNames
+ self.loadStream()
+ return self._columnNames
+
+ def get_minValue(self):
+ """
+ Returns the smallest measure observed within this stream.
+ If the device uses a firmware older than version 13000,
+ this method will always return YDataStream.DATA_INVALID.
+
+ @return a floating-point number corresponding to the smallest value,
+ or YDataStream.DATA_INVALID if the stream is not yet complete (still recording).
+
+ On failure, throws an exception or returns YDataStream.DATA_INVALID.
+ """
+ return self._minVal
+
+ def get_averageValue(self):
+ """
+ Returns the average of all measures observed within this stream.
+ If the device uses a firmware older than version 13000,
+ this method will always return YDataStream.DATA_INVALID.
+
+ @return a floating-point number corresponding to the average value,
+ or YDataStream.DATA_INVALID if the stream is not yet complete (still recording).
+
+ On failure, throws an exception or returns YDataStream.DATA_INVALID.
+ """
+ return self._avgVal
+
+ def get_maxValue(self):
+ """
+ Returns the largest measure observed within this stream.
+ If the device uses a firmware older than version 13000,
+ this method will always return YDataStream.DATA_INVALID.
+
+ @return a floating-point number corresponding to the largest value,
+ or YDataStream.DATA_INVALID if the stream is not yet complete (still recording).
+
+ On failure, throws an exception or returns YDataStream.DATA_INVALID.
+ """
+ return self._maxVal
+
+ def get_duration(self):
+ """
+ Returns the approximate duration of this stream, in seconds.
+
+ @return the number of seconds covered by this stream.
+
+ On failure, throws an exception or returns YDataStream.DURATION_INVALID.
+ """
+ if self._isClosed:
+ return self._duration
+ return int(time.time()) - self._utcStamp
+
+ def get_dataRows(self):
+ """
+ Returns the whole data set contained in the stream, as a bidimensional
+ table of numbers.
+ The meaning of the values present in each column can be obtained
+ using the method get_columnNames().
+
+ This method fetches the whole data stream from the device,
+ if not yet done.
+
+ @return a list containing as many elements as there are rows in the
+ data stream. Each row itself is a list of floating-point
+ numbers.
+
+ On failure, throws an exception or returns an empty array.
+ """
+ if (len(self._values) == 0) or not (self._isClosed):
+ self.loadStream()
+ return self._values
+
+ def get_data(self, row, col):
+ """
+ Returns a single measure from the data stream, specified by its
+ row and column index.
+ The meaning of the values present in each column can be obtained
+ using the method get_columnNames().
+
+ This method fetches the whole data stream from the device,
+ if not yet done.
+
+ @param row : row index
+ @param col : column index
+
+ @return a floating-point number
+
+ On failure, throws an exception or returns YDataStream.DATA_INVALID.
+ """
+ if (len(self._values) == 0) or not (self._isClosed):
+ self.loadStream()
+ if row >= len(self._values):
+ return YDataStream.DATA_INVALID
+ if col >= len(self._values[row]):
+ return YDataStream.DATA_INVALID
+ return self._values[row][col]
+
+#--- (end of generated code: YDataStream implementation)
+#--- (generated code: DataStream functions)
+#--- (end of generated code: DataStream functions)
+
+
+#--- (generated code: YMeasure class start)
+#noinspection PyProtectedMember
+class YMeasure(object):
+ """
+ YMeasure objects are used within the API to represent
+ a value measured at a specified time. These objects are
+ used in particular in conjunction with the YDataSet class.
+
+ """
+#--- (end of generated code: YMeasure class start)
+ #--- (generated code: YMeasure definitions)
+ #--- (end of generated code: YMeasure definitions)
+
+ def __init__(self, start, end, minVal, avgVal, maxVal):
+ #--- (generated code: YMeasure attributes)
+ self._start = 0
+ self._end = 0
+ self._minVal = 0
+ self._avgVal = 0
+ self._maxVal = 0
+ #--- (end of generated code: YMeasure attributes)
+ self._start = start
+ self._end = end
+ self._minVal = minVal
+ self._avgVal = avgVal
+ self._maxVal = maxVal
+ rounded = int(start * 10 + 0.5)
+ self._start_datetime = datetime.datetime.fromtimestamp(rounded / 10.0)
+ rounded = int(end * 10 + 0.5)
+ self._end_datetime = datetime.datetime.fromtimestamp(rounded / 10.0)
+
+ def get_startTimeUTC_asDatetime(self):
+ """
+ """
+ return self._start_datetime
+
+ def get_endTimeUTC_asDatetime(self):
+ """
+ """
+ return self._end_datetime
+
+ #--- (generated code: YMeasure implementation)
+ def get_startTimeUTC(self):
+ """
+ Returns the start time of the measure, relative to the Jan 1, 1970 UTC
+ (Unix timestamp). When the recording rate is higher then 1 sample
+ per second, the timestamp may have a fractional part.
+
+ @return an floating point number corresponding to the number of seconds
+ between the Jan 1, 1970 UTC and the beginning of this measure.
+ """
+ return self._start
+
+ def get_endTimeUTC(self):
+ """
+ Returns the end time of the measure, relative to the Jan 1, 1970 UTC
+ (Unix timestamp). When the recording rate is higher than 1 sample
+ per second, the timestamp may have a fractional part.
+
+ @return an floating point number corresponding to the number of seconds
+ between the Jan 1, 1970 UTC and the end of this measure.
+ """
+ return self._end
+
+ def get_minValue(self):
+ """
+ Returns the smallest value observed during the time interval
+ covered by this measure.
+
+ @return a floating-point number corresponding to the smallest value observed.
+ """
+ return self._minVal
+
+ def get_averageValue(self):
+ """
+ Returns the average value observed during the time interval
+ covered by this measure.
+
+ @return a floating-point number corresponding to the average value observed.
+ """
+ return self._avgVal
+
+ def get_maxValue(self):
+ """
+ Returns the largest value observed during the time interval
+ covered by this measure.
+
+ @return a floating-point number corresponding to the largest value observed.
+ """
+ return self._maxVal
+
+#--- (end of generated code: YMeasure implementation)
+
+#--- (generated code: Measure functions)
+#--- (end of generated code: Measure functions)
+
+
+#--- (generated code: YDataSet class start)
+#noinspection PyProtectedMember
+class YDataSet(object):
+ """
+ YDataSet objects make it possible to retrieve a set of recorded measures
+ for a given sensor and a specified time interval. They can be used
+ to load data points with a progress report. When the YDataSet object is
+ instantiated by the get_recordedData() function, no data is
+ yet loaded from the module. It is only when the loadMore()
+ method is called over and over than data will be effectively loaded
+ from the dataLogger.
+
+ A preview of available measures is available using the function
+ get_preview() as soon as loadMore() has been called
+ once. Measures themselves are available using function get_measures()
+ when loaded by subsequent calls to loadMore().
+
+ This class can only be used on devices that use a recent firmware,
+ as YDataSet objects are not supported by firmwares older than version 13000.
+
+ """
+#--- (end of generated code: YDataSet class start)
+ #--- (generated code: YDataSet definitions)
+ #--- (end of generated code: YDataSet definitions)
+
+ def __init__(self, parent, functionId=None, unit=None, starttime=None, endTime=None):
+ #--- (generated code: YDataSet attributes)
+ self._parent = None
+ self._hardwareId = ''
+ self._functionId = ''
+ self._unit = ''
+ self._startTime = 0
+ self._endTime = 0
+ self._progress = 0
+ self._calib = []
+ self._streams = []
+ self._summary = None
+ self._preview = []
+ self._measures = []
+ #--- (end of generated code: YDataSet attributes)
+ self._summary = YMeasure(0, 0, 0, 0, 0)
+ if unit is None:
+ self._initFromJson(parent)
+ else:
+ self._initFromParams(parent, functionId, unit, starttime, endTime)
+
+ def _initFromParams(self, parent, functionId, unit, startTime, endTime):
+ self._parent = parent
+ self._functionId = functionId
+ self._unit = unit
+ self._startTime = startTime
+ self._endTime = endTime
+ self._progress = -1
+
+ def _initFromJson(self, parent):
+ self._parent = parent
+ self._startTime = 0
+ self._endTime = 0
+
+ def _parse(self, json):
+ try:
+ j = YAPI.TJsonParser(json, False)
+ except YAPI.JsonError:
+ #( exception handling working in both in 2.x and 3.x)
+ return
+
+ summaryMinVal = float('inf')
+ summaryMaxVal = float('-inf')
+ summaryTotalTime = 0
+ summaryTotalAvg = 0
+ streamStartTime = 0x7fffffff
+ streamEndTime = 0
+ startTime = 0x7fffffff
+ endTime = 0
+ node = j.GetRootNode()
+
+ if node.recordtype != YAPI.TJSONRECORDTYPE.JSON_STRUCT:
+ return
+ for member in node.members:
+ if member.name == "id":
+ self._functionId = member.svalue
+ elif member.name == "unit":
+ self._unit = member.svalue
+ elif member.name == "calib":
+ self._calib = YAPI._decodeFloats(member.svalue)
+ self._calib[0] = round(self._calib[0] / 1000)
+ elif member.name == "cal":
+ if len(self._calib) == 0:
+ self._calib = YAPI._decodeWords(member.svalue)
+ elif member.name == "streams":
+ self._streams = []
+ self._preview = []
+ self._measures = []
+ streams_node = j.GetChildNode(node, "streams")
+ for streams_json in streams_node.items:
+ stream = self._parent._findDataStream(self, streams_json.svalue)
+ streamStartTime = stream.get_startTimeUTC() - stream.get_dataSamplesIntervalMs() / 1000
+ streamEndTime = stream.get_startTimeUTC() + stream.get_duration()
+ if self._startTime > 0 and streamEndTime <= self._startTime:
+ # this stream is too early, drop it
+ pass
+ elif 0 < self._endTime < stream.get_startTimeUTC():
+ # this stream is too late, drop it
+ pass
+ else:
+ self._streams.append(stream)
+ if startTime > streamStartTime:
+ startTime = streamStartTime
+ if endTime < streamEndTime:
+ endtime = streamEndTime
+ if (stream.isClosed() and stream.get_startTimeUTC() >= self._startTime and
+ (self._endTime == 0 or streamEndTime <= self._endTime)):
+ if summaryMinVal > stream.get_minValue():
+ summaryMinVal = stream.get_minValue()
+ if summaryMaxVal < stream.get_maxValue():
+ summaryMaxVal = stream.get_maxValue()
+ summaryTotalAvg += stream.get_averageValue() * stream.get_duration()
+ summaryTotalTime += stream.get_duration()
+
+ rec = YMeasure(stream.get_startTimeUTC(),
+ streamEndTime,
+ stream.get_minValue(),
+ stream.get_averageValue(),
+ stream.get_maxValue())
+ self._preview.append(rec)
+ if (len(self._streams) > 0) and (summaryTotalTime > 0):
+ # update time boundaries with actual data
+ if self._startTime < startTime:
+ self._startTime = startTime
+ if self._endTime == 0 or self._endTime > endTime:
+ self._endTime = endTime
+ self._summary = YMeasure(self._startTime, self._endTime,
+ summaryMinVal, summaryTotalAvg / summaryTotalTime, summaryMaxVal)
+ self._progress = 0
+ return self.get_progress()
+
+ #--- (generated code: YDataSet implementation)
+ def _get_calibration(self):
+ return self._calib
+
+ def processMore(self, progress, data):
+ # stream
+ dataRows = []
+ # strdata
+ # tim
+ # itv
+ # nCols
+ # minCol
+ # avgCol
+ # maxCol
+ # // may throw an exception
+ if progress != self._progress:
+ return self._progress
+ if self._progress < 0:
+ strdata = YByte2String(data)
+ if strdata == "{}":
+ self._parent._throw(YAPI.VERSION_MISMATCH, "device firmware is too old")
+ return YAPI.VERSION_MISMATCH
+ return self._parse(strdata)
+ stream = self._streams[self._progress]
+ stream._parseStream(data)
+ dataRows = stream.get_dataRows()
+ self._progress = self._progress + 1
+ if len(dataRows) == 0:
+ return self.get_progress()
+ tim = stream.get_startTimeUTC()
+ itv = stream.get_dataSamplesInterval()
+ if tim < itv:
+ tim = itv
+ nCols = len(dataRows[0])
+ minCol = 0
+ if nCols > 2:
+ avgCol = 1
+ else:
+ avgCol = 0
+ if nCols > 2:
+ maxCol = 2
+ else:
+ maxCol = 0
+
+ for y in dataRows:
+ if (tim >= self._startTime) and ((self._endTime == 0) or (tim <= self._endTime)):
+ self._measures.append(YMeasure(tim - itv, tim, y[minCol], y[avgCol], y[maxCol]))
+ tim = tim + itv
+ tim = round(tim * 1000) / 1000.0
+
+ return self.get_progress()
+
+ def get_privateDataStreams(self):
+ return self._streams
+
+ def get_hardwareId(self):
+ """
+ Returns the unique hardware identifier of the function who performed the measures,
+ in the form SERIAL.FUNCTIONID. The unique hardware identifier is composed of the
+ device serial number and of the hardware identifier of the function
+ (for example THRMCPL1-123456.temperature1)
+
+ @return a string that uniquely identifies the function (ex: THRMCPL1-123456.temperature1)
+
+ On failure, throws an exception or returns YDataSet.HARDWAREID_INVALID.
+ """
+ # mo
+ if not (self._hardwareId == ""):
+ return self._hardwareId
+ mo = self._parent.get_module()
+ self._hardwareId = "" + mo.get_serialNumber() + "." + self.get_functionId()
+ return self._hardwareId
+
+ def get_functionId(self):
+ """
+ Returns the hardware identifier of the function that performed the measure,
+ without reference to the module. For example temperature1.
+
+ @return a string that identifies the function (ex: temperature1)
+ """
+ return self._functionId
+
+ def get_unit(self):
+ """
+ Returns the measuring unit for the measured value.
+
+ @return a string that represents a physical unit.
+
+ On failure, throws an exception or returns YDataSet.UNIT_INVALID.
+ """
+ return self._unit
+
+ def get_startTimeUTC(self):
+ """
+ Returns the start time of the dataset, relative to the Jan 1, 1970.
+ When the YDataSet is created, the start time is the value passed
+ in parameter to the get_dataSet() function. After the
+ very first call to loadMore(), the start time is updated
+ to reflect the timestamp of the first measure actually found in the
+ dataLogger within the specified range.
+
+ @return an unsigned number corresponding to the number of seconds
+ between the Jan 1, 1970 and the beginning of this data
+ set (i.e. Unix time representation of the absolute time).
+ """
+ return self._startTime
+
+ def get_endTimeUTC(self):
+ """
+ Returns the end time of the dataset, relative to the Jan 1, 1970.
+ When the YDataSet is created, the end time is the value passed
+ in parameter to the get_dataSet() function. After the
+ very first call to loadMore(), the end time is updated
+ to reflect the timestamp of the last measure actually found in the
+ dataLogger within the specified range.
+
+ @return an unsigned number corresponding to the number of seconds
+ between the Jan 1, 1970 and the end of this data
+ set (i.e. Unix time representation of the absolute time).
+ """
+ return self._endTime
+
+ def get_progress(self):
+ """
+ Returns the progress of the downloads of the measures from the data logger,
+ on a scale from 0 to 100. When the object is instantiated by get_dataSet,
+ the progress is zero. Each time loadMore() is invoked, the progress
+ is updated, to reach the value 100 only once all measures have been loaded.
+
+ @return an integer in the range 0 to 100 (percentage of completion).
+ """
+ if self._progress < 0:
+ return 0
+ # // index not yet loaded
+ if self._progress >= len(self._streams):
+ return 100
+ return int((1 + (1 + self._progress) * 98) / ((1 + len(self._streams))))
+
+ def loadMore(self):
+ """
+ Loads the the next block of measures from the dataLogger, and updates
+ the progress indicator.
+
+ @return an integer in the range 0 to 100 (percentage of completion),
+ or a negative error code in case of failure.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ # url
+ # stream
+ if self._progress < 0:
+ url = "logger.json?id=" + self._functionId
+ else:
+ if self._progress >= len(self._streams):
+ return 100
+ else:
+ stream = self._streams[self._progress]
+ url = stream._get_url()
+ return self.processMore(self._progress, self._parent._download(url))
+
+ def get_summary(self):
+ """
+ Returns an YMeasure object which summarizes the whole
+ DataSet. In includes the following information:
+ - the start of a time interval
+ - the end of a time interval
+ - the minimal value observed during the time interval
+ - the average value observed during the time interval
+ - the maximal value observed during the time interval
+
+ This summary is available as soon as loadMore() has
+ been called for the first time.
+
+ @return an YMeasure object
+ """
+ return self._summary
+
+ def get_preview(self):
+ """
+ Returns a condensed version of the measures that can
+ retrieved in this YDataSet, as a list of YMeasure
+ objects. Each item includes:
+ - the start of a time interval
+ - the end of a time interval
+ - the minimal value observed during the time interval
+ - the average value observed during the time interval
+ - the maximal value observed during the time interval
+
+ This preview is available as soon as loadMore() has
+ been called for the first time.
+
+ @return a table of records, where each record depicts the
+ measured values during a time interval
+
+ On failure, throws an exception or returns an empty array.
+ """
+ return self._preview
+
+ def get_measuresAt(self, measure):
+ """
+ Returns the detailed set of measures for the time interval corresponding
+ to a given condensed measures previously returned by get_preview().
+ The result is provided as a list of YMeasure objects.
+
+ @param measure : condensed measure from the list previously returned by
+ get_preview().
+
+ @return a table of records, where each record depicts the
+ measured values during a time interval
+
+ On failure, throws an exception or returns an empty array.
+ """
+ # startUtc
+ # stream
+ dataRows = []
+ measures = []
+ # tim
+ # itv
+ # nCols
+ # minCol
+ # avgCol
+ # maxCol
+ # // may throw an exception
+ startUtc = round(measure.get_startTimeUTC())
+ stream = None
+ for y in self._streams:
+ if y.get_startTimeUTC() == startUtc:
+ stream = y
+ if stream is None:
+ return measures
+ dataRows = stream.get_dataRows()
+ if len(dataRows) == 0:
+ return measures
+ tim = stream.get_startTimeUTC()
+ itv = stream.get_dataSamplesInterval()
+ if tim < itv:
+ tim = itv
+ nCols = len(dataRows[0])
+ minCol = 0
+ if nCols > 2:
+ avgCol = 1
+ else:
+ avgCol = 0
+ if nCols > 2:
+ maxCol = 2
+ else:
+ maxCol = 0
+
+ for y in dataRows:
+ if (tim >= self._startTime) and ((self._endTime == 0) or (tim <= self._endTime)):
+ measures.append(YMeasure(tim - itv, tim, y[minCol], y[avgCol], y[maxCol]))
+ tim = tim + itv
+
+ return measures
+
+ def get_measures(self):
+ """
+ Returns all measured values currently available for this DataSet,
+ as a list of YMeasure objects. Each item includes:
+ - the start of the measure time interval
+ - the end of the measure time interval
+ - the minimal value observed during the time interval
+ - the average value observed during the time interval
+ - the maximal value observed during the time interval
+
+ Before calling this method, you should call loadMore()
+ to load data from the device. You may have to call loadMore()
+ several time until all rows are loaded, but you can start
+ looking at available data rows before the load is complete.
+
+ The oldest measures are always loaded first, and the most
+ recent measures will be loaded last. As a result, timestamps
+ are normally sorted in ascending order within the measure table,
+ unless there was an unexpected adjustment of the datalogger UTC
+ clock.
+
+ @return a table of records, where each record depicts the
+ measured value for a given time interval
+
+ On failure, throws an exception or returns an empty array.
+ """
+ return self._measures
+
+#--- (end of generated code: YDataSet implementation)
+
+ #--- (generated code: DataSet functions)
+#--- (end of generated code: DataSet functions)
+
+
+## ------------------------------------------------------------------------------------
+##
+## YDevice
+##
+## ------------------------------------------------------------------------------------
+
+#noinspection PyProtectedMember
+class YDevice:
+ def __init__(self, devdesc):
+ self._devdescr = devdesc
+ self._cacheStamp = datetime.datetime(year=1970, month=1, day=1)
+ self._cacheJson = None
+ self._functions = []
+ self._rootdevice = ""
+ self._subpath = ""
+ self._subpathinit = False
+
+ def __del__(self):
+ if self._cacheJson is not None:
+ del self._cacheJson
+ self._cacheJson = None
+
+ @staticmethod
+ def getDevice(devdescr):
+ for idx in range(len(YAPI.YDevice_devCache)):
+ if YAPI.YDevice_devCache[idx]._devdescr == devdescr:
+ return YAPI.YDevice_devCache[idx]
+
+ dev = YDevice(devdescr)
+ YAPI.YDevice_devCache.append(dev)
+ return dev
+
+ @staticmethod
+ def PlugDevice(devdescr):
+ for idx in range(len(YAPI.YDevice_devCache)):
+ if YAPI.YDevice_devCache[idx]._devdescr == devdescr:
+ YAPI.YDevice_devCache[idx]._cacheStamp = datetime.datetime(year=1970, month=1, day=1)
+ YAPI.YDevice_devCache[idx]._subpathinit = False
+
+ def _HTTPRequestPrepare(self, request):
+ errbuf = ctypes.create_string_buffer(YAPI.YOCTO_ERRMSG_LEN)
+ root = ctypes.create_string_buffer(YAPI.YOCTO_SERIAL_LEN)
+
+ if not self._subpathinit:
+ neededsize = ctypes.c_int()
+ #noinspection PyUnresolvedReferences
+ res = YAPI._yapiGetDevicePath(self._devdescr, root, None, 0, ctypes.byref(neededsize), errbuf)
+ if YAPI.YISERR(res):
+ return res, YByte2String(errbuf.value)
+ #noinspection PyUnresolvedReferences
+ b = ctypes.create_string_buffer(neededsize.value)
+ tmp = ctypes.c_int()
+ #noinspection PyUnresolvedReferences
+ res = YAPI._yapiGetDevicePath(self._devdescr, root, b, neededsize.value, ctypes.byref(tmp), errbuf)
+ if YAPI.YISERR(res):
+ return res, YByte2String(errbuf.value)
+ self._rootdevice = YByte2String(root.value)
+ self._subpath = YByte2String(b.value)
+ self._subpathinit = True
+
+ # request can be a purely binary buffer or a text string
+ if isinstance(request, bytearray):
+ request = bytes(request)
+ elif not isinstance(request, bytes):
+ request = YString2Byte(request)
+ # first / is expected within very first characters of the query
+ p = 0
+ while p < 10 and YGetByte(request, p) != 47: # chr(47) = '/'
+ p += 1
+ newrequest = request[0:p] + self._subpath.encode("ASCII") + request[p + 1:]
+ return YAPI.SUCCESS, newrequest
+
+ #noinspection PyUnresolvedReferences,PyUnusedLocal
+ def HTTPRequestAsync(self, request, callback, context, errmsgRef=None):
+ errbuf = ctypes.create_string_buffer(YAPI.YOCTO_ERRMSG_LEN)
+ #invalidate cache
+ self._cacheStamp = YAPI.GetTickCount()
+ (res, newrequest) = self._HTTPRequestPrepare(request)
+ if YAPI.YISERR(res):
+ if not errmsgRef is None:
+ errmsgRef.value = newrequest
+ return res
+ res = YAPI._yapiHTTPRequestAsync(ctypes.create_string_buffer(self._rootdevice.encode("ASCII")),
+ ctypes.create_string_buffer(newrequest), None, None, errbuf)
+ if YAPI.YISERR(res):
+ if not errmsgRef is None:
+ errmsgRef.value = YByte2String(errbuf.value)
+ return res
+ return YAPI.SUCCESS
+
+ #noinspection PyUnresolvedReferences,PyUnresolvedReferences
+ def HTTPRequest(self, request, bufferRef, errmsgRef=None):
+ (res, newrequest) = self._HTTPRequestPrepare(request)
+ if YAPI.YISERR(res):
+ if not errmsgRef is None:
+ errmsgRef.value = newrequest
+ return res
+ iohdl = ctypes.create_string_buffer(YAPI.YIOHDL_SIZE)
+ errbuf = ctypes.create_string_buffer(YAPI.YOCTO_ERRMSG_LEN)
+ root_c = ctypes.create_string_buffer(self._rootdevice.encode("ASCII"))
+ newrequest_c = ctypes.create_string_buffer(newrequest)
+ reply_c = POINTER(ctypes.c_ubyte)()
+ neededsize_c = ctypes.c_int(0)
+ res = YAPI._yapiHTTPRequestSyncStartEx(iohdl, root_c, newrequest_c, len(newrequest), ctypes.byref(reply_c),
+ ctypes.byref(neededsize_c), errbuf)
+ if YAPI.YISERR(res):
+ if not errmsgRef is None:
+ errmsgRef.value = YByte2String(errbuf.value)
+ return res
+ reply_size = neededsize_c.value
+ bb = YString2Byte("")
+ #(xrange not supported in 2.5.x)
+ for i in range(reply_size):
+ bb = YAddByte(bb, reply_c[i])
+ bufferRef.value = bb
+ res = YAPI._yapiHTTPRequestSyncDone(iohdl, errbuf)
+ if YAPI.YISERR(res):
+ if not errmsgRef is None:
+ errmsgRef.value = YByte2String(errbuf.value)
+ return res
+ return YAPI.SUCCESS
+
+ def requestAPI(self, apiresRef, errmsgRef=None):
+
+ suberrmsg = YRefParam()
+
+ #Check if we have a valid cache value
+ if self._cacheStamp > YAPI.GetTickCount():
+ apiresRef.value = self._cacheJson
+ return YAPI.SUCCESS
+
+ res = self.HTTPRequest("GET /api.json \r\n\r\n", suberrmsg, errmsgRef)
+ if YAPI.YISERR(res):
+ # make sure a device scan does not solve the issue
+ res = YAPI.yapiUpdateDeviceList(1, errmsgRef)
+ if YAPI.YISERR(res):
+ return res
+
+ res = self.HTTPRequest("GET /api.json \r\n\r\n", suberrmsg, errmsgRef)
+ if YAPI.YISERR(res):
+ return res
+
+ try:
+ j = YAPI.TJsonParser(YByte2String(suberrmsg.value))
+ except YAPI.JsonError:
+ #( exception handling working in both in 2.x and 3.x)
+ e = sys.exc_info()[1]
+ if not errmsgRef is None:
+ errmsgRef.value = "unexpected JSON structure: " + e.msg
+ return YAPI.IO_ERROR
+
+ if j.httpcode != 200:
+ errmsg = "Unexpected HTTP return code:%s" % j.httpcode
+ return YAPI.IO_ERROR
+
+ # store result in cache
+ self._cacheJson = j
+ apiresRef.value = j
+ self._cacheStamp = YAPI.GetTickCount() + YAPI.DefaultCacheValidity
+
+ return YAPI.SUCCESS
+
+ def clearCache(self):
+ self._cacheJson = None
+ self._cacheStamp = datetime.datetime(year=1970, month=1, day=1)
+
+ #noinspection PyTypeChecker,PyTypeChecker,PyTypeChecker
+ def getFunctions(self, functionsRef, errmsgRef=None):
+
+ neededsize = YRefParam()
+ if not len(self._functions):
+ res = YAPI.apiGetFunctionsByDevice(self._devdescr, 0, None, 64, neededsize, errmsgRef)
+ if YAPI.YISERR(res):
+ return res
+
+ count = int(neededsize.value / YAPI.C_INTSIZE)
+ #noinspection PyCallingNonCallable
+ p = (ctypes.c_int * count)()
+
+ res = YAPI.apiGetFunctionsByDevice(self._devdescr, 0, p, 64, neededsize, errmsgRef)
+ if YAPI.YISERR(res):
+ return res
+
+ for i in range(count):
+ self._functions.append(p[i])
+
+ functionsRef.value = self._functions
+ return YAPI.SUCCESS
+
+## - keeps a reference to our callbacks, to protect them from GC
+## (may
+#noinspection PyProtectedMember
+native_yLogFunctionAnchor = YAPI._yapiLogFunc(YAPI.native_yLogFunction)
+#noinspection PyProtectedMember
+native_yFunctionUpdateAnchor = YAPI._yapiFunctionUpdateFunc(YAPI.native_yFunctionUpdateCallback)
+#noinspection PyProtectedMember
+native_yTimedReportAnchor = YAPI._yapiTimedReportFunc(YAPI.native_yTimedReportCallback)
+#noinspection PyProtectedMember
+native_yDeviceArrivalAnchor = YAPI._yapiDeviceUpdateFunc(YAPI.native_yDeviceArrivalCallback)
+#noinspection PyProtectedMember
+native_yDeviceRemovalAnchor = YAPI._yapiDeviceUpdateFunc(YAPI.native_yDeviceRemovalCallback)
+#noinspection PyProtectedMember
+native_yDeviceChangeAnchor = YAPI._yapiDeviceUpdateFunc(YAPI.native_yDeviceChangeCallback)
+#noinspection PyProtectedMember
+native_yHubDiscoveryAnchor = YAPI._yapiHubDiscoveryCallback(YAPI.native_HubDiscoveryCallback)
+#noinspection PyProtectedMember
+native_yDeviceLogAnchor = YAPI._yapiDeviceLogCallback(YAPI.native_DeviceLogCallback)
+
+
+#--- (generated code: YFunction class start)
+#noinspection PyProtectedMember
+class YFunction(object):
+ """
+ This is the parent class for all public objects representing device functions documented in
+ the high-level programming API. This abstract class does all the real job, but without
+ knowledge of the specific function attributes.
+
+ Instantiating a child class of YFunction does not cause any communication.
+ The instance simply keeps track of its function identifier, and will dynamically bind
+ to a matching device at the time it is really being used to read or set an attribute.
+ In order to allow true hot-plug replacement of one device by another, the binding stay
+ dynamic through the life of the object.
+
+ The YFunction class implements a generic high-level cache for the attribute values of
+ the specified function, pre-parsed from the REST API string.
+
+ """
+#--- (end of generated code: YFunction class start)
+ _cache = {}
+ _FunctionCallbacks = []
+ _TimedReportCallbackList = []
+ _CalibHandlers = {}
+
+ FUNCTIONDESCRIPTOR_INVALID = -1
+ HARDWAREID_INVALID = YAPI.INVALID_STRING
+ FUNCTIONID_INVALID = YAPI.INVALID_STRING
+ FRIENDLYNAME_INVALID = YAPI.INVALID_STRING
+ #--- (generated code: YFunction definitions)
+ LOGICALNAME_INVALID = YAPI.INVALID_STRING
+ ADVERTISEDVALUE_INVALID = YAPI.INVALID_STRING
+ #--- (end of generated code: YFunction definitions)
+
+ def __init__(self, func):
+ self._className = 'Function'
+ self._func = func
+ self._lastErrorType = YAPI.SUCCESS
+ self._lastErrorMsg = ""
+ self._fundescr = YFunction.FUNCTIONDESCRIPTOR_INVALID
+ self._userData = None
+ self._genCallback = None
+ self._dataStreams = dict()
+ #--- (generated code: YFunction attributes)
+ self._callback = None
+ self._logicalName = YFunction.LOGICALNAME_INVALID
+ self._advertisedValue = YFunction.ADVERTISEDVALUE_INVALID
+ self._valueCallbackFunction = None
+ self._cacheExpiration = datetime.datetime.fromtimestamp(0)
+ self._serial = ''
+ self._funId = ''
+ self._hwId = ''
+ #--- (end of generated code: YFunction attributes)
+
+ @staticmethod
+ def _FindFromCache(class_name, func):
+ key = class_name + "_" + func
+ if key in YFunction._cache:
+ return YFunction._cache[key]
+ return None
+
+ @staticmethod
+ def _AddToCache(class_name, func, obj):
+ YFunction._cache[class_name + "_" + func] = obj
+
+ @staticmethod
+ def _ClearCache():
+ YFunction._cache.clear()
+
+ @staticmethod
+ def _UpdateValueCallbackList(func, add):
+ if add:
+ func.isOnline()
+ if func not in YFunction._FunctionCallbacks:
+ YFunction._FunctionCallbacks.append(func)
+ else:
+ if func in YFunction._FunctionCallbacks:
+ index = YFunction._FunctionCallbacks.index(func)
+ del YFunction._FunctionCallbacks[index]
+
+ @staticmethod
+ def _UpdateTimedReportCallbackList(func, add):
+ if add:
+ func.isOnline()
+ if func not in YFunction._TimedReportCallbackList:
+ YFunction._TimedReportCallbackList.append(func)
+ else:
+ if func in YFunction._TimedReportCallbackList:
+ index = YFunction._TimedReportCallbackList.index(func)
+ del YFunction._TimedReportCallbackList[index]
+
+ def _throw(self, errType, errorMessage):
+ self._lastErrorType = errType
+ self._lastErrorMsg = errorMessage
+ if not YAPI.ExceptionsDisabled:
+ raise YAPI.YAPI_Exception(errType, "YoctoApi error : " + errorMessage)
+
+ # Method used to resolve our name to our unique function descriptor (may trigger a hub scan)
+ def _getDescriptor(self, fundescrRef, errmsgRef=None):
+ tmp_fundescr = YAPI.yapiGetFunction(self._className, self._func, errmsgRef)
+ if YAPI.YISERR(tmp_fundescr):
+ res = YAPI.yapiUpdateDeviceList(1, errmsgRef)
+ if YAPI.YISERR(res):
+ return res
+ tmp_fundescr = YAPI.yapiGetFunction(self._className, self._func, errmsgRef)
+ if YAPI.YISERR(tmp_fundescr):
+ return tmp_fundescr
+
+ self._fundescr = tmp_fundescr
+ fundescrRef.value = tmp_fundescr
+ return YAPI.SUCCESS
+
+ # Return a pointer to our device caching object (may trigger a hub scan)
+
+ def _getDevice(self, devRef, errmsgRef=None):
+ fundescrRef = YRefParam()
+ # Resolve function name
+ res = self._getDescriptor(fundescrRef, errmsgRef)
+ if YAPI.YISERR(res):
+ return res
+
+ # Get device descriptor
+ devdescr = YAPI.yapiGetDeviceByFunction(fundescrRef.value, errmsgRef)
+ if YAPI.YISERR(devdescr):
+ return devdescr
+
+ # Get device object
+ devRef.value = YDevice.getDevice(devdescr)
+ return YAPI.SUCCESS
+
+ # Return the next known function of current class listed in the yellow pages
+ def _nextFunction(self, hwidRef):
+ fundescrRef = YRefParam()
+ devdescrRef = YRefParam()
+ serialRef = YRefParam()
+ funcIdRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+ neededsizeRef = YRefParam()
+ errmsgRef = YRefParam()
+ n_element = 1
+
+ res = self._getDescriptor(fundescrRef, errmsgRef)
+ if YAPI.YISERR(res):
+ self._throw(res, errmsgRef.value)
+ return res
+
+ maxsize = n_element * YAPI.C_INTSIZE
+ #noinspection PyCallingNonCallable,PyTypeChecker
+ p = (ctypes.c_int * n_element)()
+
+ res = YAPI.apiGetFunctionsByClass(self._className, fundescrRef.value, p, maxsize, neededsizeRef, errmsgRef)
+
+ if YAPI.YISERR(res):
+ self._throw(res, errmsgRef.value)
+ return res
+
+ #noinspection PyTypeChecker
+ count = neededsizeRef.value / YAPI.C_INTSIZE
+ if not count:
+ hwidRef.value = ""
+ return YAPI.SUCCESS
+
+ res = YAPI.yapiGetFunctionInfo(p[0], devdescrRef, serialRef, funcIdRef, funcNameRef, funcValRef, errmsgRef)
+ if YAPI.YISERR(res):
+ self._throw(res, errmsgRef.value)
+ return YAPI.SUCCESS
+
+ hwidRef.value = serialRef.value + "." + funcIdRef.value
+ return YAPI.SUCCESS
+
+ @staticmethod
+ def _escapeAttr(changeval):
+ uchangeval = ""
+ ofs = 0
+ nb_bytes = len(changeval)
+ while ofs < nb_bytes:
+ c = changeval[ofs]
+ if c <= ' ' or \
+ (c > 'z' and c != '~') or c == '"' or c == '%' or c == '&' or c == '+' or \
+ c == '<' or c == '=' or c == '>' or c == '\\' or c == '^' or c == '`':
+ c_ord = ord(c)
+ if ((c_ord == 0xc2 or c_ord == 0xc3) and (ofs + 1 < nb_bytes) and (
+ ord(changeval[ofs + 1]) & 0xc0) == 0x80):
+ # UTF8-encoded ISO-8859-1 character: translate to plain ISO-8859-1
+ c_ord = (c_ord & 1) * 0x40
+ ofs += 1
+ c_ord += ord(changeval[ofs])
+ uchangeval += "%" + ('%02X' % c_ord)
+ else:
+ uchangeval += c
+ ofs += 1
+ return uchangeval
+
+ def _buildSetRequest(self, changeattr, changeval, requestRef, errmsgRef=None):
+ fundescRef = YRefParam()
+ funcid = ctypes.create_string_buffer(YAPI.YOCTO_FUNCTION_LEN)
+ errbuff = ctypes.create_string_buffer(YAPI.YOCTO_ERRMSG_LEN)
+ # Resolve the function name
+ res = self._getDescriptor(fundescRef, errmsgRef)
+ if YAPI.YISERR(res):
+ return res
+ devdesc = ctypes.c_int()
+ #noinspection PyUnresolvedReferences
+ res = YAPI._yapiGetFunctionInfoEx(fundescRef.value, ctypes.byref(devdesc), None, funcid, None, None, None, errbuff)
+ if YAPI.YISERR(res):
+ if not errmsgRef is None:
+ errmsgRef.value = YByte2String(errbuff.value)
+ self._throw(res, errmsgRef.value)
+ return res
+ requestRef.value = "GET /api/" + YByte2String(funcid.value) + "/"
+ if changeattr != "":
+ requestRef.value += changeattr + "?" + changeattr + "=" + self._escapeAttr(changeval)
+ requestRef.value += "&. \r\n\r\n"
+ return YAPI.SUCCESS
+
+ def _parse(self, j):
+ if j.recordtype != YAPI.TJSONRECORDTYPE.JSON_STRUCT:
+ return -1
+ for member in j.members:
+ self._parseAttr(member)
+ self._parserHelper()
+ return 0
+
+ # Set an attribute in the function, and parse the resulting new function state
+ def _setAttr(self, attrname, newvalue):
+ errmsgRef = YRefParam()
+ requestRef = YRefParam()
+ devRef = YRefParam()
+
+ # Execute http request
+ res = self._buildSetRequest(attrname, newvalue, requestRef, errmsgRef)
+ if YAPI.YISERR(res):
+ self._throw(res, errmsgRef.value)
+ return res
+
+ # Get device Object
+ res = self._getDevice(devRef, errmsgRef)
+ if YAPI.YISERR(res):
+ self._throw(res, errmsgRef.value)
+ return res
+
+ res = devRef.value.HTTPRequestAsync(requestRef.value, None, None, errmsgRef)
+ if YAPI.YISERR(res):
+ # make sure a device scan does not solve the issue
+ res = YAPI.yapiUpdateDeviceList(1, errmsgRef)
+ if YAPI.YISERR(res):
+ self._throw(res, errmsgRef.value)
+ return res
+
+ res = devRef.value.HTTPRequestAsync(requestRef.value, None, None, errmsgRef)
+ if YAPI.YISERR(res):
+ self._throw(res, errmsgRef.value)
+ return res
+
+ if self._cacheExpiration != datetime.datetime.fromtimestamp(0):
+ self._cacheExpiration = YAPI.GetTickCount()
+
+ return YAPI.SUCCESS
+
+ def _request(self, request):
+ errmsgRef = YRefParam()
+ httpbuffer = YRefParam()
+ devRef = YRefParam()
+ # Get device Object
+ res = self._getDevice(devRef, errmsgRef)
+ if YAPI.YISERR(res):
+ self._throw(res, request)
+ return b""
+ res = devRef.value.HTTPRequest(request, httpbuffer, errmsgRef)
+ if YAPI.YISERR(res):
+ # make sure a device scan does not solve the issue
+ res = YAPI.yapiUpdateDeviceList(1, errmsgRef)
+ if YAPI.YISERR(res):
+ self._throw(res, errmsgRef.value)
+ return b""
+ res = devRef.value.HTTPRequest(request, httpbuffer, errmsgRef)
+ if YAPI.YISERR(res):
+ self._throw(res, errmsgRef.value)
+ return b""
+ if len(httpbuffer.value) >= 4:
+ check = httpbuffer.value[0:4].decode("latin1")
+ if check == "OK\r\n":
+ return httpbuffer.value
+ if len(httpbuffer.value) >= 17:
+ check = httpbuffer.value[0:17].decode("latin1")
+ if check == "HTTP/1.1 200 OK\r\n":
+ return httpbuffer.value
+ self._throw(YAPI.IO_ERROR, "http request failed")
+ return b""
+
+ def _upload(self, path, content):
+ body = "Content-Disposition: form-data; name=\"" + path + "\"; filename=\"api\"\r\n"
+ body += "Content-Type: application/octet-stream\r\n"
+ body += "Content-Transfer-Encoding: binary\r\n\r\n"
+ if isinstance(content, bytearray):
+ content = bytes(content)
+ elif not isinstance(content, bytes):
+ if isinstance(content, array.array):
+ content = content.tostring()
+ else:
+ content = content.encode("latin1")
+ body = body.encode("ASCII") + content
+ boundary = "Zz%06xzZ" % (random.randint(0, 0xffffff))
+ request = "POST /upload.html HTTP/1.1\r\n"
+ request += "Content-Type: multipart/form-data, boundary=" + boundary + "\r\n"
+ request += "\r\n--" + boundary + "\r\n"
+ request = request.encode("ASCII") + body + str("\r\n--" + boundary + "--\r\n").encode("ASCII")
+ tmpbuffer = self._request(request)
+ if len(tmpbuffer) == 0:
+ self._throw(YAPI.IO_ERROR, "http request failed")
+ return YAPI.IO_ERROR
+ return YAPI.SUCCESS
+
+ def _download(self, url):
+ request = "GET /" + url + " HTTP/1.1\r\n\r\n"
+ result_buffer = self._request(request)
+ found = 0
+ while found <= len(result_buffer) - 4:
+ if YGetByte(result_buffer, found) == 13 \
+ and YGetByte(result_buffer, found + 1) == 10 \
+ and YGetByte(result_buffer, found + 2) == 13 \
+ and YGetByte(result_buffer, found + 3) == 10:
+ break
+ found += 1
+ if found > len(result_buffer) - 4:
+ self._throw(YAPI.IO_ERROR, "http request failed")
+ return ''
+ return result_buffer[found + 4:]
+
+ def _json_get_key(self, json, key):
+ try:
+ json_str = YByte2String(json)
+ j = YAPI.TJsonParser(json_str, False)
+ except YAPI.JsonError:
+ #( exception handling working in both in 2.x and 3.x
+ e = sys.exc_info()[1]
+ self._throw(YAPI.IO_ERROR, "unexpected JSON structure: " + e.msg)
+ return YAPI.IO_ERROR
+ node = j.GetChildNode(None, key)
+ return node.svalue
+
+ def _json_get_array(self, json):
+ try:
+ json_str = YByte2String(json)
+ j = YAPI.TJsonParser(json_str, False)
+ except YAPI.JsonError:
+ #( exception handling working in both in 2.x and 3.x
+ e = sys.exc_info()[1]
+ self._throw(YAPI.IO_ERROR, "unexpected JSON structure: " + e.msg)
+ return []
+ return j.GetAllChilds(None)
+
+ def _json_get_string(self, json):
+ try:
+ json_str = YByte2String(json)
+ j = YAPI.TJsonParser('[' + json_str + ']', False)
+ except YAPI.JsonError:
+ #( exception handling working in both in 2.x and 3.x
+ e = sys.exc_info()[1]
+ self._throw(YAPI.IO_ERROR, "unexpected JSON structure: " + e.msg)
+ return ''
+ node = j.GetRootNode()
+ return node.items[0].svalue
+
+ def _get_json_path(self, json, path):
+ errbuf = ctypes.create_string_buffer(YAPI.YOCTO_ERRMSG_LEN)
+ path_data = ctypes.create_string_buffer(path)
+ json_data = ctypes.create_string_buffer(json)
+ reply_c = POINTER(ctypes.c_ubyte)()
+ res = YAPI._yapiJsonGetPath(path_data, json_data, len(json), ctypes.byref(reply_c), errbuf)
+ if res > 0:
+ bb = YString2Byte("")
+ #(xrange not supported in 2.5.x)
+ for i in range(res):
+ bb = YAddByte(bb, reply_c[i])
+ YAPI._yapiFreeMem(reply_c)
+ return YByte2String(bb)
+ return ""
+
+ def _decode_json_string(self, json):
+ if isinstance(json, str):
+ json = YString2Byte(json)
+ json_data = ctypes.create_string_buffer(json)
+ buffer = ctypes.create_string_buffer(len(json))
+ res = YAPI._yapiJsonDecodeString(json_data, buffer)
+ return YByte2String(buffer.value)
+
+ # Method used to cache DataStream objects (new DataLogger)
+ def _findDataStream(self, dataset, definition):
+ key = dataset.get_functionId() + ":" + definition
+ if key in self._dataStreams:
+ return self._dataStreams[definition]
+ newDataStream = YDataStream(self, dataset, YAPI._decodeWords(definition))
+ self._dataStreams[key] = newDataStream
+ return newDataStream
+
+ # Method used to clear cache of DataStream object (undocumented)
+ def _clearDataStreamCache(self):
+ self._dataStreams.clear()
+
+ #--- (generated code: YFunction implementation)
+ def _parseAttr(self, member):
+ if member.name == "logicalName":
+ self._logicalName = member.svalue
+ return 1
+ if member.name == "advertisedValue":
+ self._advertisedValue = member.svalue
+ return 1
+ return 0
+
+ def get_logicalName(self):
+ """
+ Returns the logical name of the function.
+
+ @return a string corresponding to the logical name of the function
+
+ On failure, throws an exception or returns YFunction.LOGICALNAME_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YFunction.LOGICALNAME_INVALID
+ return self._logicalName
+
+ def set_logicalName(self, newval):
+ """
+ Changes the logical name of the function. You can use yCheckLogicalName()
+ prior to this call to make sure that your parameter is valid.
+ Remember to call the saveToFlash() method of the module if the
+ modification must be kept.
+
+ @param newval : a string corresponding to the logical name of the function
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ if not YAPI.CheckLogicalName(newval):
+ self._throw(YAPI.INVALID_ARGUMENT, "Invalid name :" + newval)
+ return YAPI.INVALID_ARGUMENT
+ rest_val = newval
+ return self._setAttr("logicalName", rest_val)
+
+ def get_advertisedValue(self):
+ """
+ Returns a short string representing the current state of the function.
+
+ @return a string corresponding to a short string representing the current state of the function
+
+ On failure, throws an exception or returns YFunction.ADVERTISEDVALUE_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YFunction.ADVERTISEDVALUE_INVALID
+ return self._advertisedValue
+
+ def set_advertisedValue(self, newval):
+ rest_val = newval
+ return self._setAttr("advertisedValue", rest_val)
+
+ @staticmethod
+ def FindFunction(func):
+ """
+ Retrieves a function for a given identifier.
+ The identifier can be specified using several formats:
+ <ul>
+ <li>FunctionLogicalName</li>
+ <li>ModuleSerialNumber.FunctionIdentifier</li>
+ <li>ModuleSerialNumber.FunctionLogicalName</li>
+ <li>ModuleLogicalName.FunctionIdentifier</li>
+ <li>ModuleLogicalName.FunctionLogicalName</li>
+ </ul>
+
+ This function does not require that the function is online at the time
+ it is invoked. The returned object is nevertheless valid.
+ Use the method YFunction.isOnline() to test if the function is
+ indeed online at a given time. In case of ambiguity when looking for
+ a function by logical name, no error is notified: the first instance
+ found is returned. The search is performed first by hardware name,
+ then by logical name.
+
+ @param func : a string that uniquely characterizes the function
+
+ @return a YFunction object allowing you to drive the function.
+ """
+ # obj
+ obj = YFunction._FindFromCache("Function", func)
+ if obj is None:
+ obj = YFunction(func)
+ YFunction._AddToCache("Function", func, obj)
+ return obj
+
+ def registerValueCallback(self, callback):
+ """
+ Registers the callback function that is invoked on every change of advertised value.
+ The callback is invoked only during the execution of ySleep or yHandleEvents.
+ This provides control over the time when the callback is triggered. For good responsiveness, remember to call
+ one of these two functions periodically. To unregister a callback, pass a None pointer as argument.
+
+ @param callback : the callback function to call, or a None pointer. The callback function should take two
+ arguments: the function object of which the value has changed, and the character string describing
+ the new advertised value.
+ @noreturn
+ """
+ # val
+ if callback is not None:
+ YFunction._UpdateValueCallbackList(self, True)
+ else:
+ YFunction._UpdateValueCallbackList(self, False)
+ self._valueCallbackFunction = callback
+ # // Immediately invoke value callback with current value
+ if callback is not None and self.isOnline():
+ val = self._advertisedValue
+ if not (val == ""):
+ self._invokeValueCallback(val)
+ return 0
+
+ def _invokeValueCallback(self, value):
+ if self._valueCallbackFunction is not None:
+ self._valueCallbackFunction(self, value)
+ return 0
+
+ def muteValueCallbacks(self):
+ """
+ Disable the propagation of every new advertised value to the parent hub.
+ You can use this function to save bandwidth and CPU on computers with limited
+ resources, or to prevent unwanted invocations of the HTTP callback.
+ Remember to call the saveToFlash() method of the module if the
+ modification must be kept.
+
+ @return YAPI.SUCCESS when the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.set_advertisedValue("SILENT")
+
+ def unmuteValueCallbacks(self):
+ """
+ Re-enable the propagation of every new advertised value to the parent hub.
+ This function reverts the effect of a previous call to muteValueCallbacks().
+ Remember to call the saveToFlash() method of the module if the
+ modification must be kept.
+
+ @return YAPI.SUCCESS when the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.set_advertisedValue("")
+
+ def loadAttribute(self, attrName):
+ """
+ Returns the current value of a single function attribute, as a text string, as quickly as
+ possible but without using the cached value.
+
+ @param attrName : le nom de l'attribut désiré
+
+ @return une chaîne de caractères représentant la valeur actuelle de l'attribut.
+
+ On failure, throws an exception or returns an empty string.
+ """
+ # url
+ # attrVal
+ url = "api/" + self.get_functionId() + "/" + attrName
+ attrVal = self._download(url)
+ return YByte2String(attrVal)
+
+ def _parserHelper(self):
+ # // By default, nothing to do
+ return 0
+
+ def nextFunction(self):
+ """
+ comment from .yc definition
+ """
+ hwidRef = YRefParam()
+ if YAPI.YISERR(self._nextFunction(hwidRef)):
+ return None
+ if hwidRef.value == "":
+ return None
+ return YFunction.FindFunction(hwidRef.value)
+
+#--- (end of generated code: YFunction implementation)
+
+ def get_hardwareId(self):
+ """
+ Returns the unique hardware identifier of the function in the form SERIAL.FUNCTIONID.
+ The unique hardware identifier is composed of the device serial
+ number and of the hardware identifier of the function (for example RELAYLO1-123456.relay1).
+
+ @return a string that uniquely identifies the function (ex: RELAYLO1-123456.relay1)
+
+ On failure, throws an exception or returns YFunction.HARDWAREID_INVALID.
+ """
+ errmsgRef = YRefParam()
+ fundescRef = YRefParam()
+ snum = ctypes.create_string_buffer(YAPI.YOCTO_FUNCTION_LEN)
+ funcid = ctypes.create_string_buffer(YAPI.YOCTO_FUNCTION_LEN)
+ errbuff = ctypes.create_string_buffer(YAPI.YOCTO_ERRMSG_LEN)
+ # Resolve the function name
+ res = self._getDescriptor(fundescRef, errmsgRef)
+ if YAPI.YISERR(res):
+ self._throw(res, errmsgRef.value)
+ return self.HARDWAREID_INVALID
+ devdesc = ctypes.c_int()
+ #noinspection PyUnresolvedReferences
+ res = YAPI._yapiGetFunctionInfoEx(fundescRef.value, ctypes.byref(devdesc), snum, funcid, None, None, None, errbuff)
+ if YAPI.YISERR(res):
+ self._throw(res, errmsgRef.value)
+ return self.HARDWAREID_INVALID
+ return YByte2String(snum.value) + "." + YByte2String(funcid.value)
+
+ def get_functionId(self):
+ """
+ Returns the hardware identifier of the function, without reference to the module. For example
+ relay1
+
+ @return a string that identifies the function (ex: relay1)
+
+ On failure, throws an exception or returns YFunction.FUNCTIONID_INVALID.
+ """
+ errmsgRef = YRefParam()
+ fundescRef = YRefParam()
+ funcid = ctypes.create_string_buffer(YAPI.YOCTO_FUNCTION_LEN)
+ errbuff = ctypes.create_string_buffer(YAPI.YOCTO_ERRMSG_LEN)
+ # Resolve the function name
+ res = self._getDescriptor(fundescRef, errmsgRef)
+ if YAPI.YISERR(res):
+ self._throw(res, errmsgRef.value)
+ return self.FUNCTIONID_INVALID
+ devdesc = ctypes.c_int()
+ #noinspection PyUnresolvedReferences
+ res = YAPI._yapiGetFunctionInfoEx(fundescRef.value, ctypes.byref(devdesc), None, funcid, None, None, None, errbuff)
+ if YAPI.YISERR(res):
+ self._throw(res, errmsgRef.value)
+ return self.FUNCTIONID_INVALID
+ return YByte2String(funcid.value)
+
+ #noinspection PyUnresolvedReferences,PyUnresolvedReferences
+ def get_friendlyName(self):
+ """
+ Returns a global identifier of the function in the format MODULE_NAME&#46;FUNCTION_NAME.
+ The returned string uses the logical names of the module and of the function if they are defined,
+ otherwise the serial number of the module and the hardware identifier of the function
+ (for example: MyCustomName.relay1)
+
+ @return a string that uniquely identifies the function using logical names
+ (ex: MyCustomName.relay1)
+
+ On failure, throws an exception or returns YFunction.FRIENDLYNAME_INVALID.
+ """
+ errmsgRef = YRefParam()
+ fundescRef = YRefParam()
+ fname = ctypes.create_string_buffer(YAPI.YOCTO_FUNCTION_LEN)
+ snum = ctypes.create_string_buffer(YAPI.YOCTO_FUNCTION_LEN)
+ funcid = ctypes.create_string_buffer(YAPI.YOCTO_FUNCTION_LEN)
+ errbuff = ctypes.create_string_buffer(YAPI.YOCTO_ERRMSG_LEN)
+ devdesc = ctypes.c_int()
+ # Resolve the function name
+ res = self._getDescriptor(fundescRef, errmsgRef)
+ if not YAPI.YISERR(res) and not YAPI.YISERR(
+ YAPI._yapiGetFunctionInfoEx(fundescRef.value, ctypes.byref(devdesc), snum, funcid, None, fname, None, errbuff)):
+ if YByte2String(fname.value) != "":
+ funcid = fname
+ dname = ctypes.create_string_buffer(YAPI.YOCTO_FUNCTION_LEN)
+ moddescr = YAPI.yapiGetFunction("Module", YByte2String(snum.value), errmsgRef)
+ if not YAPI.YISERR(moddescr) and not YAPI.YISERR(
+ YAPI._yapiGetFunctionInfoEx(moddescr, ctypes.byref(devdesc), None, None, None, dname, None, errbuff)):
+ if YByte2String(dname.value) != "":
+ return "%s.%s" % (YByte2String(dname.value), YByte2String(funcid.value))
+ return "%s.%s" % (YByte2String(snum.value), YByte2String(funcid.value))
+ self._throw(YAPI.DEVICE_NOT_FOUND, errmsgRef.value)
+ return self.FRIENDLYNAME_INVALID
+
+ def describe(self):
+ """
+ Returns a short text that describes unambiguously the instance of the function in the form
+ TYPE(NAME)=SERIAL&#46;FUNCTIONID.
+ More precisely,
+ TYPE is the type of the function,
+ NAME it the name used for the first access to the function,
+ SERIAL is the serial number of the module if the module is connected or "unresolved", and
+ FUNCTIONID is the hardware identifier of the function if the module is connected.
+ For example, this method returns Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1 if the
+ module is already connected or Relay(BadCustomeName.relay1)=unresolved if the module has
+ not yet been connected. This method does not trigger any USB or TCP transaction and can therefore be used in
+ a debugger.
+
+ @return a string that describes the function
+ (ex: Relay(MyCustomName.relay1)=RELAYLO1-123456.relay1)
+ """
+ errmsgRef = YRefParam()
+ fundescRef = YRefParam()
+ snum = ctypes.create_string_buffer(YAPI.YOCTO_FUNCTION_LEN)
+ funcid = ctypes.create_string_buffer(YAPI.YOCTO_FUNCTION_LEN)
+ errbuff = ctypes.create_string_buffer(YAPI.YOCTO_ERRMSG_LEN)
+ devdesc = ctypes.c_int()
+ # Resolve the function name
+ res = self._getDescriptor(fundescRef, errmsgRef)
+ #noinspection PyUnresolvedReferences
+ if not YAPI.YISERR(res) and not YAPI.YISERR(
+ YAPI._yapiGetFunctionInfoEx(fundescRef.value, ctypes.byref(devdesc), snum, funcid, None, None, None, errbuff)):
+ return self._className + "(" + self._func + ")=" + YByte2String(snum.value) + "." + YByte2String(
+ funcid.value)
+ return self._className + "(" + self._func + ")=unresolved"
+
+ def __str__(self):
+ return self.describe()
+
+ def get_errorType(self):
+ """
+ Returns the numerical error code of the latest error with the function.
+ This method is mostly useful when using the Yoctopuce library with
+ exceptions disabled.
+
+ @return a number corresponding to the code of the latest error that occurred while
+ using the function object
+ """
+ return self._lastErrorType
+
+ def errorType(self):
+ return self._lastErrorType
+
+ def errType(self):
+ return self._lastErrorType
+
+ def get_errorMessage(self):
+ """
+ Returns the error message of the latest error with the function.
+ This method is mostly useful when using the Yoctopuce library with
+ exceptions disabled.
+
+ @return a string corresponding to the latest error message that occured while
+ using the function object
+ """
+ return self._lastErrorMsg
+
+ def errorMessage(self):
+ return self._lastErrorMsg
+
+ def errMessage(self):
+ return self._lastErrorMsg
+
+ def isOnline(self):
+ """
+ Checks if the function is currently reachable, without raising any error.
+ If there is a cached value for the function in cache, that has not yet
+ expired, the device is considered reachable.
+ No exception is raised if there is an error while trying to contact the
+ device hosting the function.
+
+ @return true if the function can be reached, and false otherwise
+ """
+
+ devRef = YRefParam()
+ errmsgRef = YRefParam()
+ apiresRef = YRefParam()
+
+ # A valid value in cache means that the device is online
+ if self._cacheExpiration > YAPI.GetTickCount():
+ return True
+
+ #Check that the function is available, without throwing exceptions
+ if YAPI.YISERR(self._getDevice(devRef, errmsgRef)):
+ return False
+
+ # Try to execute a function request to be positively sure that the device is ready
+ if YAPI.YISERR(devRef.value.requestAPI(apiresRef, errmsgRef)):
+ return False
+
+ self.load(YAPI.DefaultCacheValidity)
+ return True
+
+ def load(self, msValidity):
+ """
+ Preloads the function cache with a specified validity duration.
+ By default, whenever accessing a device, all function attributes
+ are kept in cache for the standard duration (5 ms). This method can be
+ used to temporarily mark the cache as valid for a longer period, in order
+ to reduce network traffic for instance.
+
+ @param msValidity : an integer corresponding to the validity attributed to the
+ loaded function parameters, in milliseconds
+
+ @return YAPI.SUCCESS when the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ devRef = YRefParam()
+ errmsgRef = YRefParam()
+ apiresRef = YRefParam()
+ funcIdRef = YRefParam()
+ devdescRef = YRefParam()
+ serialRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+
+ # Resolve our reference to our device, load REST API
+ res = self._getDevice(devRef, errmsgRef)
+ if YAPI.YISERR(res):
+ self._throw(res, errmsgRef.value)
+ return res
+
+ res = devRef.value.requestAPI(apiresRef, errmsgRef)
+ if YAPI.YISERR(res):
+ self._throw(res, errmsgRef.value)
+ return res
+
+ # Get our function Id
+ fundescr = YAPI.yapiGetFunction(self._className, self._func, errmsgRef)
+ if YAPI.YISERR(fundescr):
+ self._throw(res, errmsgRef.value)
+ return fundescr
+
+ res = YAPI.yapiGetFunctionInfo(fundescr, devdescRef, serialRef, funcIdRef, funcNameRef, funcValRef, errmsgRef)
+ if YAPI.YISERR(res):
+ self._throw(res, errmsgRef.value)
+ return res
+ if type(msValidity) == type(int()):
+ msValidity = datetime.timedelta(milliseconds=msValidity)
+ self._cacheExpiration = YAPI.GetTickCount() + msValidity
+ self._serial = str(serialRef.value)
+ self._funId = str(funcIdRef.value)
+ self._hwId = self._serial + '.' + self._funId
+
+ node = apiresRef.value.GetChildNode(None, funcIdRef.value)
+ if node is None:
+ self._throw(YAPI.IO_ERROR, "unexpected JSON structure: missing function " + str(funcIdRef.value))
+ return YAPI.IO_ERROR
+
+ self._parse(node)
+ return YAPI.SUCCESS
+
+ def clearCache(self):
+ """
+ Invalidates the cache. Invalidates the cache of the function attributes. Forces the
+ next call to get_xxx() or loadxxx() to use values that come from the device.
+
+ @noreturn
+ """
+ devRef = YRefParam()
+ errmsgRef = YRefParam()
+ apiresRef = YRefParam()
+ funcIdRef = YRefParam()
+ devdescRef = YRefParam()
+ serialRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+
+ # Resolve our reference to our device, load REST API
+ res = self._getDevice(devRef, errmsgRef)
+ if YAPI.YISERR(res):
+ return
+ devRef.value.clearCache()
+ self._cacheExpiration = YAPI.GetTickCount()
+
+ def get_module(self):
+ """
+ Gets the YModule object for the device on which the function is located.
+ If the function cannot be located on any module, the returned instance of
+ YModule is not shown as on-line.
+
+ @return an instance of YModule
+ """
+ devdescrRef = YRefParam()
+ errmsgRef = YRefParam()
+ serialRef = YRefParam()
+ funcIdRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValueRef = YRefParam()
+
+ fundescr = YAPI.yapiGetFunction(self._className, self._func, errmsgRef)
+ if not YAPI.YISERR(fundescr):
+ if not YAPI.YISERR(
+ YAPI.yapiGetFunctionInfo(fundescr, devdescrRef, serialRef, funcIdRef, funcNameRef, funcValueRef,
+ errmsgRef)):
+ return YModule.FindModule(serialRef.value + ".module")
+
+ # return a true YModule object even if it is not a module valid for communicating
+ return YModule.FindModule("module_of_" + self._className + "_" + self._func)
+
+ def module(self):
+ return self.get_module()
+
+ def get_functionDescriptor(self):
+ """
+ Returns a unique identifier of type YFUN_DESCR corresponding to the function.
+ This identifier can be used to test if two instances of YFunction reference the same
+ physical function on the same physical device.
+
+ @return an identifier of type YFUN_DESCR.
+
+ If the function has never been contacted, the returned value is YFunction.FUNCTIONDESCRIPTOR_INVALID.
+ """
+ return self._fundescr
+
+ def functionDescriptor(self):
+ return self.get_functionDescriptor()
+
+ def get_userData(self):
+ """
+ Returns the value of the userData attribute, as previously stored using method
+ set_userData.
+ This attribute is never touched directly by the API, and is at disposal of the caller to
+ store a context.
+
+ @return the object stored previously by the caller.
+ """
+ return self._userData
+
+ def userData(self):
+ return self.get_userData()
+
+ def set_userData(self, data):
+ """
+ Stores a user context provided as argument in the userData attribute of the function.
+ This attribute is never touched by the API, and is at disposal of the caller to store a context.
+
+ @param data : any kind of object to be stored
+ @noreturn
+ """
+ self._userData = data
+
+ def setUserData(self, data):
+ self.set_userData(data)
+
+ #--- (generated code: Function functions)
+
+ @staticmethod
+ def FirstFunction():
+ """
+ comment from .yc definition
+ """
+ devRef = YRefParam()
+ neededsizeRef = YRefParam()
+ serialRef = YRefParam()
+ funcIdRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+ errmsgRef = YRefParam()
+ size = YAPI.C_INTSIZE
+ #noinspection PyTypeChecker,PyCallingNonCallable
+ p = (ctypes.c_int * 1)()
+ err = YAPI.apiGetFunctionsByClass("Function", 0, p, size, neededsizeRef, errmsgRef)
+
+ if YAPI.YISERR(err) or not neededsizeRef.value:
+ return None
+
+ if YAPI.YISERR(
+ YAPI.yapiGetFunctionInfo(p[0], devRef, serialRef, funcIdRef, funcNameRef, funcValRef, errmsgRef)):
+ return None
+
+ return YFunction.FindFunction(serialRef.value + "." + funcIdRef.value)
+
+#--- (end of generated code: Function functions)
+
+
+#--- (generated code: YModule class start)
+#noinspection PyProtectedMember
+class YModule(YFunction):
+ """
+ This interface is identical for all Yoctopuce USB modules.
+ It can be used to control the module global parameters, and
+ to enumerate the functions provided by each module.
+
+ """
+#--- (end of generated code: YModule class start)
+ #--- (generated code: YModule definitions)
+ PRODUCTNAME_INVALID = YAPI.INVALID_STRING
+ SERIALNUMBER_INVALID = YAPI.INVALID_STRING
+ PRODUCTID_INVALID = YAPI.INVALID_UINT
+ PRODUCTRELEASE_INVALID = YAPI.INVALID_UINT
+ FIRMWARERELEASE_INVALID = YAPI.INVALID_STRING
+ LUMINOSITY_INVALID = YAPI.INVALID_UINT
+ UPTIME_INVALID = YAPI.INVALID_LONG
+ USBCURRENT_INVALID = YAPI.INVALID_UINT
+ REBOOTCOUNTDOWN_INVALID = YAPI.INVALID_INT
+ USERVAR_INVALID = YAPI.INVALID_INT
+ PERSISTENTSETTINGS_LOADED = 0
+ PERSISTENTSETTINGS_SAVED = 1
+ PERSISTENTSETTINGS_MODIFIED = 2
+ PERSISTENTSETTINGS_INVALID = -1
+ BEACON_OFF = 0
+ BEACON_ON = 1
+ BEACON_INVALID = -1
+ #--- (end of generated code: YModule definitions)
+
+ def __init__(self, func):
+ super(YModule, self).__init__(func)
+ self._className = "Module"
+ #--- (generated code: YModule attributes)
+ self._callback = None
+ self._productName = YModule.PRODUCTNAME_INVALID
+ self._serialNumber = YModule.SERIALNUMBER_INVALID
+ self._productId = YModule.PRODUCTID_INVALID
+ self._productRelease = YModule.PRODUCTRELEASE_INVALID
+ self._firmwareRelease = YModule.FIRMWARERELEASE_INVALID
+ self._persistentSettings = YModule.PERSISTENTSETTINGS_INVALID
+ self._luminosity = YModule.LUMINOSITY_INVALID
+ self._beacon = YModule.BEACON_INVALID
+ self._upTime = YModule.UPTIME_INVALID
+ self._usbCurrent = YModule.USBCURRENT_INVALID
+ self._rebootCountdown = YModule.REBOOTCOUNTDOWN_INVALID
+ self._userVar = YModule.USERVAR_INVALID
+ self._logCallback = None
+ #--- (end of generated code: YModule attributes)
+
+ #--- (generated code: YModule implementation)
+ def _parseAttr(self, member):
+ if member.name == "productName":
+ self._productName = member.svalue
+ return 1
+ if member.name == "serialNumber":
+ self._serialNumber = member.svalue
+ return 1
+ if member.name == "productId":
+ self._productId = member.ivalue
+ return 1
+ if member.name == "productRelease":
+ self._productRelease = member.ivalue
+ return 1
+ if member.name == "firmwareRelease":
+ self._firmwareRelease = member.svalue
+ return 1
+ if member.name == "persistentSettings":
+ self._persistentSettings = member.ivalue
+ return 1
+ if member.name == "luminosity":
+ self._luminosity = member.ivalue
+ return 1
+ if member.name == "beacon":
+ self._beacon = member.ivalue
+ return 1
+ if member.name == "upTime":
+ self._upTime = member.ivalue
+ return 1
+ if member.name == "usbCurrent":
+ self._usbCurrent = member.ivalue
+ return 1
+ if member.name == "rebootCountdown":
+ self._rebootCountdown = member.ivalue
+ return 1
+ if member.name == "userVar":
+ self._userVar = member.ivalue
+ return 1
+ super(YModule, self)._parseAttr(member)
+
+ def get_productName(self):
+ """
+ Returns the commercial name of the module, as set by the factory.
+
+ @return a string corresponding to the commercial name of the module, as set by the factory
+
+ On failure, throws an exception or returns YModule.PRODUCTNAME_INVALID.
+ """
+ if self._cacheExpiration == datetime.datetime.fromtimestamp(0):
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YModule.PRODUCTNAME_INVALID
+ return self._productName
+
+ def get_serialNumber(self):
+ """
+ Returns the serial number of the module, as set by the factory.
+
+ @return a string corresponding to the serial number of the module, as set by the factory
+
+ On failure, throws an exception or returns YModule.SERIALNUMBER_INVALID.
+ """
+ if self._cacheExpiration == datetime.datetime.fromtimestamp(0):
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YModule.SERIALNUMBER_INVALID
+ return self._serialNumber
+
+ def get_productId(self):
+ """
+ Returns the USB device identifier of the module.
+
+ @return an integer corresponding to the USB device identifier of the module
+
+ On failure, throws an exception or returns YModule.PRODUCTID_INVALID.
+ """
+ if self._cacheExpiration == datetime.datetime.fromtimestamp(0):
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YModule.PRODUCTID_INVALID
+ return self._productId
+
+ def get_productRelease(self):
+ """
+ Returns the hardware release version of the module.
+
+ @return an integer corresponding to the hardware release version of the module
+
+ On failure, throws an exception or returns YModule.PRODUCTRELEASE_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YModule.PRODUCTRELEASE_INVALID
+ return self._productRelease
+
+ def get_firmwareRelease(self):
+ """
+ Returns the version of the firmware embedded in the module.
+
+ @return a string corresponding to the version of the firmware embedded in the module
+
+ On failure, throws an exception or returns YModule.FIRMWARERELEASE_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YModule.FIRMWARERELEASE_INVALID
+ return self._firmwareRelease
+
+ def get_persistentSettings(self):
+ """
+ Returns the current state of persistent module settings.
+
+ @return a value among YModule.PERSISTENTSETTINGS_LOADED, YModule.PERSISTENTSETTINGS_SAVED and
+ YModule.PERSISTENTSETTINGS_MODIFIED corresponding to the current state of persistent module settings
+
+ On failure, throws an exception or returns YModule.PERSISTENTSETTINGS_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YModule.PERSISTENTSETTINGS_INVALID
+ return self._persistentSettings
+
+ def set_persistentSettings(self, newval):
+ rest_val = str(newval)
+ return self._setAttr("persistentSettings", rest_val)
+
+ def get_luminosity(self):
+ """
+ Returns the luminosity of the module informative leds (from 0 to 100).
+
+ @return an integer corresponding to the luminosity of the module informative leds (from 0 to 100)
+
+ On failure, throws an exception or returns YModule.LUMINOSITY_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YModule.LUMINOSITY_INVALID
+ return self._luminosity
+
+ def set_luminosity(self, newval):
+ """
+ Changes the luminosity of the module informative leds. The parameter is a
+ value between 0 and 100.
+ Remember to call the saveToFlash() method of the module if the
+ modification must be kept.
+
+ @param newval : an integer corresponding to the luminosity of the module informative leds
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("luminosity", rest_val)
+
+ def get_beacon(self):
+ """
+ Returns the state of the localization beacon.
+
+ @return either YModule.BEACON_OFF or YModule.BEACON_ON, according to the state of the localization beacon
+
+ On failure, throws an exception or returns YModule.BEACON_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YModule.BEACON_INVALID
+ return self._beacon
+
+ def set_beacon(self, newval):
+ """
+ Turns on or off the module localization beacon.
+
+ @param newval : either YModule.BEACON_OFF or YModule.BEACON_ON
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = "1" if newval > 0 else "0"
+ return self._setAttr("beacon", rest_val)
+
+ def get_upTime(self):
+ """
+ Returns the number of milliseconds spent since the module was powered on.
+
+ @return an integer corresponding to the number of milliseconds spent since the module was powered on
+
+ On failure, throws an exception or returns YModule.UPTIME_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YModule.UPTIME_INVALID
+ return self._upTime
+
+ def get_usbCurrent(self):
+ """
+ Returns the current consumed by the module on the USB bus, in milli-amps.
+
+ @return an integer corresponding to the current consumed by the module on the USB bus, in milli-amps
+
+ On failure, throws an exception or returns YModule.USBCURRENT_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YModule.USBCURRENT_INVALID
+ return self._usbCurrent
+
+ def get_rebootCountdown(self):
+ """
+ Returns the remaining number of seconds before the module restarts, or zero when no
+ reboot has been scheduled.
+
+ @return an integer corresponding to the remaining number of seconds before the module restarts, or zero when no
+ reboot has been scheduled
+
+ On failure, throws an exception or returns YModule.REBOOTCOUNTDOWN_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YModule.REBOOTCOUNTDOWN_INVALID
+ return self._rebootCountdown
+
+ def set_rebootCountdown(self, newval):
+ rest_val = str(newval)
+ return self._setAttr("rebootCountdown", rest_val)
+
+ def get_userVar(self):
+ """
+ Returns the value previously stored in this attribute.
+ On startup and after a device reboot, the value is always reset to zero.
+
+ @return an integer corresponding to the value previously stored in this attribute
+
+ On failure, throws an exception or returns YModule.USERVAR_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YModule.USERVAR_INVALID
+ return self._userVar
+
+ def set_userVar(self, newval):
+ """
+ Returns the value previously stored in this attribute.
+ On startup and after a device reboot, the value is always reset to zero.
+
+ @param newval : an integer
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("userVar", rest_val)
+
+ @staticmethod
+ def FindModule(func):
+ """
+ Allows you to find a module from its serial number or from its logical name.
+
+ This function does not require that the module is online at the time
+ it is invoked. The returned object is nevertheless valid.
+ Use the method YModule.isOnline() to test if the module is
+ indeed online at a given time. In case of ambiguity when looking for
+ a module by logical name, no error is notified: the first instance
+ found is returned. The search is performed first by hardware name,
+ then by logical name.
+
+ @param func : a string containing either the serial number or
+ the logical name of the desired module
+
+ @return a YModule object allowing you to drive the module
+ or get additional information on the module.
+ """
+ # obj
+ obj = YFunction._FindFromCache("Module", func)
+ if obj is None:
+ obj = YModule(func)
+ YFunction._AddToCache("Module", func, obj)
+ return obj
+
+ def saveToFlash(self):
+ """
+ Saves current settings in the nonvolatile memory of the module.
+ Warning: the number of allowed save operations during a module life is
+ limited (about 100000 cycles). Do not call this function within a loop.
+
+ @return YAPI.SUCCESS when the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.set_persistentSettings(YModule.PERSISTENTSETTINGS_SAVED)
+
+ def revertFromFlash(self):
+ """
+ Reloads the settings stored in the nonvolatile memory, as
+ when the module is powered on.
+
+ @return YAPI.SUCCESS when the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.set_persistentSettings(YModule.PERSISTENTSETTINGS_LOADED)
+
+ def reboot(self, secBeforeReboot):
+ """
+ Schedules a simple module reboot after the given number of seconds.
+
+ @param secBeforeReboot : number of seconds before rebooting
+
+ @return YAPI.SUCCESS when the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.set_rebootCountdown(secBeforeReboot)
+
+ def triggerFirmwareUpdate(self, secBeforeReboot):
+ """
+ Schedules a module reboot into special firmware update mode.
+
+ @param secBeforeReboot : number of seconds before rebooting
+
+ @return YAPI.SUCCESS when the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.set_rebootCountdown(-secBeforeReboot)
+
+ def checkFirmware(self, path, onlynew):
+ """
+ Tests whether the byn file is valid for this module. This method is useful to test if the module
+ needs to be updated.
+ It is possible to pass a directory as argument instead of a file. In this case, this method returns
+ the path of the most recent
+ appropriate .byn file. If the parameter onlynew is true, the function discards firmwares that are older or
+ equal to the installed firmware.
+
+ @param path : the path of a byn file or a directory that contains byn files
+ @param onlynew : returns only files that are strictly newer
+
+ @return the path of the byn file to use or a empty string if no byn files matches the requirement
+
+ On failure, throws an exception or returns a string that start with "error:".
+ """
+ # serial
+ # release
+ # tmp_res
+ if onlynew:
+ release = YAPI._atoi(self.get_firmwareRelease())
+ else:
+ release = 0
+ # //may throw an exception
+ serial = self.get_serialNumber()
+ tmp_res = YFirmwareUpdate.CheckFirmware(serial,path, release)
+ if tmp_res.find("error:") == 0:
+ self._throw(YAPI.INVALID_ARGUMENT, tmp_res)
+ return tmp_res
+
+ def updateFirmwareEx(self, path, force):
+ """
+ Prepares a firmware update of the module. This method returns a YFirmwareUpdate object which
+ handles the firmware update process.
+
+ @param path : the path of the .byn file to use.
+ @param force : true to force the firmware update even if some prerequisites appear not to be met
+
+ @return a YFirmwareUpdate object or None on error.
+ """
+ # serial
+ # settings
+ # // may throw an exception
+ serial = self.get_serialNumber()
+ settings = self.get_allSettings()
+ if len(settings) == 0:
+ self._throw(YAPI.IO_ERROR, "Unable to get device settings")
+ settings = YString2Byte("error:Unable to get device settings")
+ return YFirmwareUpdate(serial, path, settings, force)
+
+ def updateFirmware(self, path):
+ """
+ Prepares a firmware update of the module. This method returns a YFirmwareUpdate object which
+ handles the firmware update process.
+
+ @param path : the path of the .byn file to use.
+
+ @return a YFirmwareUpdate object or None on error.
+ """
+ # // may throw an exception
+ return self.updateFirmwareEx(path, False)
+
+ def get_allSettings(self):
+ """
+ Returns all the settings and uploaded files of the module. Useful to backup all the
+ logical names, calibrations parameters, and uploaded files of a device.
+
+ @return a binary buffer with all the settings.
+
+ On failure, throws an exception or returns an binary object of size 0.
+ """
+ # settings
+ # json
+ # res
+ # sep
+ # name
+ # item
+ # t_type
+ # id
+ # url
+ # file_data
+ # file_data_bin
+ # temp_data_bin
+ # ext_settings
+ filelist = []
+ templist = []
+ # // may throw an exception
+ settings = self._download("api.json")
+ if len(settings) == 0:
+ return settings
+ ext_settings = ", \"extras\":["
+ templist = self.get_functionIds("Temperature")
+ sep = ""
+ for y in templist:
+ if YAPI._atoi(self.get_firmwareRelease()) > 9000:
+ url = "api/" + y + "/sensorType"
+ t_type = YByte2String(self._download(url))
+ if t_type == "RES_NTC":
+ id = (y)[11: 11 + len(y) - 11]
+ temp_data_bin = self._download("extra.json?page=" + id)
+ if len(temp_data_bin) == 0:
+ return temp_data_bin
+ item = "" + sep + "{\"fid\":\"" + y + "\", \"json\":" + YByte2String(temp_data_bin) + "}\n"
+ ext_settings = ext_settings + item
+ sep = ","
+ ext_settings = ext_settings + "],\n\"files\":["
+ if self.hasFunction("files"):
+ #
+ json = self._download("files.json?a=dir&f=")
+ if len(json) == 0:
+ return json
+ filelist = self._json_get_array(json)
+ sep = ""
+ for y in filelist:
+ name = self._json_get_key(YString2Byte(y), "name")
+ if (len(name) > 0) and not (name == "startupConf.json"):
+ file_data_bin = self._download(self._escapeAttr(name))
+ file_data = YAPI._bytesToHexStr(file_data_bin)
+ item = "" + sep + "{\"name\":\"" + name + "\", \"data\":\"" + file_data + "\"}\n"
+ ext_settings = ext_settings + item
+ sep = ","
+ res = YString2Byte("{ \"api\":" + YByte2String(settings) + ext_settings + "]}")
+ return res
+
+ def loadThermistorExtra(self, funcId, jsonExtra):
+ values = []
+ # url
+ # curr
+ # currTemp
+ # ofs
+ # size
+ url = "api/" + funcId + ".json?command=Z"
+ # // may throw an exception
+ self._download(url)
+ # // add records in growing resistance value
+ values = self._json_get_array(YString2Byte(jsonExtra))
+ ofs = 0
+ size = len(values)
+ while ofs + 1 < size:
+ curr = values[ofs]
+ currTemp = values[ofs + 1]
+ url = "api/" + funcId + "/.json?command=m" + curr + ":" + currTemp
+ self._download(url)
+ ofs = ofs + 2
+ return YAPI.SUCCESS
+
+ def set_extraSettings(self, jsonExtra):
+ extras = []
+ # functionId
+ # data
+ extras = self._json_get_array(YString2Byte(jsonExtra))
+ for y in extras:
+ functionId = self._get_json_path(y, "fid")
+ functionId = self._decode_json_string(functionId)
+ data = self._get_json_path(y, "json")
+ if self.hasFunction(functionId):
+ #
+ self.loadThermistorExtra(functionId, data)
+ return YAPI.SUCCESS
+
+ def set_allSettingsAndFiles(self, settings):
+ """
+ Restores all the settings and uploaded files to the module.
+ This method is useful to restore all the logical names and calibrations parameters,
+ uploaded files etc. of a device from a backup.
+ Remember to call the saveToFlash() method of the module if the
+ modifications must be kept.
+
+ @param settings : a binary buffer with all the settings.
+
+ @return YAPI.SUCCESS when the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ # down
+ # json
+ # json_api
+ # json_files
+ # json_extra
+ json = YByte2String(settings)
+ json_api = self._get_json_path(json, "api")
+ if json_api == "":
+ return self.set_allSettings(settings)
+ json_extra = self._get_json_path(json, "extras")
+ if not (json_extra == ""):
+ self.set_extraSettings(json_extra)
+ self.set_allSettings(YString2Byte(json_api))
+ if self.hasFunction("files"):
+ files = []
+ # res
+ # name
+ # data
+ #
+ down = self._download("files.json?a=format")
+ res = self._get_json_path(YByte2String(down), "res")
+ res = self._decode_json_string(res)
+ if not (res == "ok"):
+ self._throw(YAPI.IO_ERROR, "format failed")
+ json_files = self._get_json_path(json, "files")
+ files = self._json_get_array(YString2Byte(json_files))
+ for y in files:
+ name = self._get_json_path(y, "name")
+ name = self._decode_json_string(name)
+ data = self._get_json_path(y, "data")
+ data = self._decode_json_string(data)
+ self._upload(name, YAPI._hexStrToBin(data))
+ return YAPI.SUCCESS
+
+ def hasFunction(self, funcId):
+ """
+ Tests if the device includes a specific function. This method takes a function identifier
+ and returns a boolean.
+
+ @param funcId : the requested function identifier
+
+ @return true if the device has the function identifier
+ """
+ # count
+ # i
+ # fid
+ # // may throw an exception
+ count = self.functionCount()
+ i = 0
+ while i < count:
+ fid = self.functionId(i)
+ if fid == funcId:
+ return True
+ i = i + 1
+ return False
+
+ def get_functionIds(self, funType):
+ """
+ Retrieve all hardware identifier that match the type passed in argument.
+
+ @param funType : The type of function (Relay, LightSensor, Voltage,...)
+
+ @return an array of strings.
+ """
+ # count
+ # i
+ # ftype
+ res = []
+ # // may throw an exception
+ count = self.functionCount()
+ i = 0
+
+ while i < count:
+ ftype = self.functionType(i)
+ if ftype == funType:
+ res.append(self.functionId(i))
+ else:
+ ftype = self.functionBaseType(i)
+ if ftype == funType:
+ res.append(self.functionId(i))
+ i = i + 1
+
+ return res
+
+ def _flattenJsonStruct(self, jsoncomplex):
+ errmsg = ctypes.create_string_buffer(YAPI.YOCTO_ERRMSG_LEN)
+ smallbuff = ctypes.create_string_buffer(1024)
+ # bigbuff
+ # buffsize
+ fullsize = ctypes.c_int()
+ # res
+ # jsonflat
+ # jsoncomplexstr
+ fullsize.value = 0
+ jsoncomplexstr = YByte2String(jsoncomplex)
+ res = YAPI._yapiGetAllJsonKeys(ctypes.create_string_buffer(YString2Byte(jsoncomplexstr)), smallbuff, 1024, ctypes.byref(fullsize), errmsg)
+ if res < 0:
+ self._throw(YAPI.INVALID_ARGUMENT, YByte2String(errmsg.value))
+ jsonflat = "error:" + YByte2String(errmsg.value)
+ return YString2Byte(jsonflat)
+ if fullsize.value <= 1024:
+ jsonflat = YByte2String(smallbuff.value)
+ else:
+ fullsize.value = fullsize.value * 2
+ buffsize = fullsize.value
+ bigbuff = ctypes.create_string_buffer(buffsize)
+ res = YAPI._yapiGetAllJsonKeys(ctypes.create_string_buffer(YString2Byte(jsoncomplexstr)), bigbuff, buffsize, ctypes.byref(fullsize), errmsg)
+ if res < 0:
+ self._throw(YAPI.INVALID_ARGUMENT, YByte2String(errmsg.value))
+ jsonflat = "error:" + YByte2String(errmsg.value)
+ else:
+ jsonflat = YByte2String(bigbuff.value)
+ bigbuff = None
+ return YString2Byte(jsonflat)
+
+ def calibVersion(self, cparams):
+ if cparams == "0,":
+ return 3
+ if cparams.find(",") >= 0:
+ if cparams.find(" ") > 0:
+ return 3
+ else:
+ return 1
+ if cparams == "" or cparams == "0":
+ return 1
+ if (len(cparams) < 2) or (cparams.find(".") >= 0):
+ return 0
+ else:
+ return 2
+
+ def calibScale(self, unit_name, sensorType):
+ if unit_name == "g" or unit_name == "gauss" or unit_name == "W":
+ return 1000
+ if unit_name == "C":
+ if sensorType == "":
+ return 16
+ if YAPI._atoi(sensorType) < 8:
+ return 16
+ else:
+ return 100
+ if unit_name == "m" or unit_name == "deg":
+ return 10
+ return 1
+
+ def calibOffset(self, unit_name):
+ if unit_name == "% RH" or unit_name == "mbar" or unit_name == "lx":
+ return 0
+ return 32767
+
+ def calibConvert(self, param, currentFuncValue, unit_name, sensorType):
+ # paramVer
+ # funVer
+ # funScale
+ # funOffset
+ # paramScale
+ # paramOffset
+ words = []
+ words_str = []
+ calibData = []
+ iCalib = []
+ # calibType
+ # i
+ # maxSize
+ # ratio
+ # nPoints
+ # wordVal
+ # // Initial guess for parameter encoding
+ paramVer = self.calibVersion(param)
+ funVer = self.calibVersion(currentFuncValue)
+ funScale = self.calibScale(unit_name, sensorType)
+ funOffset = self.calibOffset(unit_name)
+ paramScale = funScale
+ paramOffset = funOffset
+ if funVer < 3:
+ #
+ if funVer == 2:
+ words = YAPI._decodeWords(currentFuncValue)
+ if (words[0] == 1366) and (words[1] == 12500):
+ #
+ funScale = 1
+ funOffset = 0
+ else:
+ funScale = words[1]
+ funOffset = words[0]
+ else:
+ if funVer == 1:
+ if currentFuncValue == "" or (YAPI._atoi(currentFuncValue) > 10):
+ funScale = 0
+ del calibData[:]
+ calibType = 0
+ if paramVer < 3:
+ #
+ if paramVer == 2:
+ words = YAPI._decodeWords(param)
+ if (words[0] == 1366) and (words[1] == 12500):
+ #
+ paramScale = 1
+ paramOffset = 0
+ else:
+ paramScale = words[1]
+ paramOffset = words[0]
+ if (len(words) >= 3) and (words[2] > 0):
+ maxSize = 3 + 2 * ((words[2]) % (10))
+ if maxSize > len(words):
+ maxSize = len(words)
+ i = 3
+ while i < maxSize:
+ calibData.append(words[i])
+ i = i + 1
+ else:
+ if paramVer == 1:
+ words_str = (param).split(',')
+ for y in words_str:
+ words.append(YAPI._atoi(y))
+ if param == "" or (words[0] > 10):
+ paramScale = 0
+ if (len(words) > 0) and (words[0] > 0):
+ maxSize = 1 + 2 * ((words[0]) % (10))
+ if maxSize > len(words):
+ maxSize = len(words)
+ i = 1
+ while i < maxSize:
+ calibData.append(words[i])
+ i = i + 1
+ else:
+ if paramVer == 0:
+ ratio = float(param)
+ if ratio > 0:
+ calibData.append(0.0)
+ calibData.append(0.0)
+ calibData.append(round(65535 / ratio))
+ calibData.append(65535.0)
+ i = 0
+ while i < len(calibData):
+ if paramScale > 0:
+ #
+ calibData[i] = (calibData[i] - paramOffset) / paramScale
+ else:
+ #
+ calibData[i] = YAPI._decimalToDouble(round(calibData[i]))
+ i = i + 1
+ else:
+ #
+ iCalib = YAPI._decodeFloats(param)
+ calibType = round(iCalib[0] / 1000.0)
+ if calibType >= 30:
+ calibType = calibType - 30
+ i = 1
+ while i < len(iCalib):
+ calibData.append(iCalib[i] / 1000.0)
+ i = i + 1
+ if funVer >= 3:
+ #
+ if len(calibData) == 0:
+ param = "0,"
+ else:
+ param = str(30 + calibType)
+ i = 0
+ while i < len(calibData):
+ if ((i) & (1)) > 0:
+ param = param + ":"
+ else:
+ param = param + " "
+ param = param + str(round(calibData[i] * 1000.0 / 1000.0))
+ i = i + 1
+ param = param + ","
+ else:
+ if funVer >= 1:
+ #
+ nPoints = int((len(calibData)) / (2))
+ param = str(nPoints)
+ i = 0
+ while i < 2 * nPoints:
+ if funScale == 0:
+ wordVal = YAPI._doubleToDecimal(round(calibData[i]))
+ else:
+ wordVal = calibData[i] * funScale + funOffset
+ param = param + "," + str(round(wordVal))
+ i = i + 1
+ else:
+ #
+ if len(calibData) == 4:
+ param = str(round(1000 * (calibData[3] - calibData[1]) / calibData[2] - calibData[0]))
+ return param
+
+ def set_allSettings(self, settings):
+ """
+ Restores all the settings of the device. Useful to restore all the logical names and calibrations parameters
+ of a module from a backup.Remember to call the saveToFlash() method of the module if the
+ modifications must be kept.
+
+ @param settings : a binary buffer with all the settings.
+
+ @return YAPI.SUCCESS when the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ restoreLast = []
+ # old_json_flat
+ old_dslist = []
+ old_jpath = []
+ old_jpath_len = []
+ old_val_arr = []
+ # actualSettings
+ new_dslist = []
+ new_jpath = []
+ new_jpath_len = []
+ new_val_arr = []
+ # cpos
+ # eqpos
+ # leng
+ # i
+ # j
+ # njpath
+ # jpath
+ # fun
+ # attr
+ # value
+ # url
+ # tmp
+ # new_calib
+ # sensorType
+ # unit_name
+ # newval
+ # oldval
+ # old_calib
+ # each_str
+ # do_update
+ # found
+ tmp = YByte2String(settings)
+ tmp = self._get_json_path(tmp, "api")
+ if not (tmp == ""):
+ settings = YString2Byte(tmp)
+ oldval = ""
+ newval = ""
+ old_json_flat = self._flattenJsonStruct(settings)
+ old_dslist = self._json_get_array(old_json_flat)
+
+
+
+ for y in old_dslist:
+ each_str = self._json_get_string(YString2Byte(y))
+ #
+ leng = len(each_str)
+ eqpos = each_str.find("=")
+ if (eqpos < 0) or (leng == 0):
+ self._throw(YAPI.INVALID_ARGUMENT, "Invalid settings")
+ return YAPI.INVALID_ARGUMENT
+ jpath = (each_str)[0: 0 + eqpos]
+ eqpos = eqpos + 1
+ value = (each_str)[eqpos: eqpos + leng - eqpos]
+ old_jpath.append(jpath)
+ old_jpath_len.append(len(jpath))
+ old_val_arr.append(value)
+
+
+
+ # // may throw an exception
+ actualSettings = self._download("api.json")
+ actualSettings = self._flattenJsonStruct(actualSettings)
+ new_dslist = self._json_get_array(actualSettings)
+
+
+
+ for y in new_dslist:
+ #
+ each_str = self._json_get_string(YString2Byte(y))
+ #
+ leng = len(each_str)
+ eqpos = each_str.find("=")
+ if (eqpos < 0) or (leng == 0):
+ self._throw(YAPI.INVALID_ARGUMENT, "Invalid settings")
+ return YAPI.INVALID_ARGUMENT
+ jpath = (each_str)[0: 0 + eqpos]
+ eqpos = eqpos + 1
+ value = (each_str)[eqpos: eqpos + leng - eqpos]
+ new_jpath.append(jpath)
+ new_jpath_len.append(len(jpath))
+ new_val_arr.append(value)
+
+
+
+
+ i = 0
+ while i < len(new_jpath):
+ njpath = new_jpath[i]
+ leng = len(njpath)
+ cpos = njpath.find("/")
+ if (cpos < 0) or (leng == 0):
+ continue
+ fun = (njpath)[0: 0 + cpos]
+ cpos = cpos + 1
+ attr = (njpath)[cpos: cpos + leng - cpos]
+ do_update = True
+ if fun == "services":
+ do_update = False
+ if (do_update) and (attr == "firmwareRelease"):
+ do_update = False
+ if (do_update) and (attr == "usbCurrent"):
+ do_update = False
+ if (do_update) and (attr == "upTime"):
+ do_update = False
+ if (do_update) and (attr == "persistentSettings"):
+ do_update = False
+ if (do_update) and (attr == "adminPassword"):
+ do_update = False
+ if (do_update) and (attr == "userPassword"):
+ do_update = False
+ if (do_update) and (attr == "rebootCountdown"):
+ do_update = False
+ if (do_update) and (attr == "advertisedValue"):
+ do_update = False
+ if (do_update) and (attr == "poeCurrent"):
+ do_update = False
+ if (do_update) and (attr == "readiness"):
+ do_update = False
+ if (do_update) and (attr == "ipAddress"):
+ do_update = False
+ if (do_update) and (attr == "subnetMask"):
+ do_update = False
+ if (do_update) and (attr == "router"):
+ do_update = False
+ if (do_update) and (attr == "linkQuality"):
+ do_update = False
+ if (do_update) and (attr == "ssid"):
+ do_update = False
+ if (do_update) and (attr == "channel"):
+ do_update = False
+ if (do_update) and (attr == "security"):
+ do_update = False
+ if (do_update) and (attr == "message"):
+ do_update = False
+ if (do_update) and (attr == "currentValue"):
+ do_update = False
+ if (do_update) and (attr == "currentRawValue"):
+ do_update = False
+ if (do_update) and (attr == "currentRunIndex"):
+ do_update = False
+ if (do_update) and (attr == "pulseTimer"):
+ do_update = False
+ if (do_update) and (attr == "lastTimePressed"):
+ do_update = False
+ if (do_update) and (attr == "lastTimeReleased"):
+ do_update = False
+ if (do_update) and (attr == "filesCount"):
+ do_update = False
+ if (do_update) and (attr == "freeSpace"):
+ do_update = False
+ if (do_update) and (attr == "timeUTC"):
+ do_update = False
+ if (do_update) and (attr == "rtcTime"):
+ do_update = False
+ if (do_update) and (attr == "unixTime"):
+ do_update = False
+ if (do_update) and (attr == "dateTime"):
+ do_update = False
+ if (do_update) and (attr == "rawValue"):
+ do_update = False
+ if (do_update) and (attr == "lastMsg"):
+ do_update = False
+ if (do_update) and (attr == "delayedPulseTimer"):
+ do_update = False
+ if (do_update) and (attr == "rxCount"):
+ do_update = False
+ if (do_update) and (attr == "txCount"):
+ do_update = False
+ if (do_update) and (attr == "msgCount"):
+ do_update = False
+ if do_update:
+ do_update = False
+ newval = new_val_arr[i]
+ j = 0
+ found = False
+ while (j < len(old_jpath)) and not (found):
+ if (new_jpath_len[i] == old_jpath_len[j]) and (new_jpath[i] == old_jpath[j]):
+ found = True
+ oldval = old_val_arr[j]
+ if not (newval == oldval):
+ do_update = True
+ j = j + 1
+ if do_update:
+ if attr == "calibrationParam":
+ old_calib = ""
+ unit_name = ""
+ sensorType = ""
+ new_calib = newval
+ j = 0
+ found = False
+ while (j < len(old_jpath)) and not (found):
+ if (new_jpath_len[i] == old_jpath_len[j]) and (new_jpath[i] == old_jpath[j]):
+ found = True
+ old_calib = old_val_arr[j]
+ j = j + 1
+ tmp = fun + "/unit"
+ j = 0
+ found = False
+ while (j < len(new_jpath)) and not (found):
+ if tmp == new_jpath[j]:
+ found = True
+ unit_name = new_val_arr[j]
+ j = j + 1
+ tmp = fun + "/sensorType"
+ j = 0
+ found = False
+ while (j < len(new_jpath)) and not (found):
+ if tmp == new_jpath[j]:
+ found = True
+ sensorType = new_val_arr[j]
+ j = j + 1
+ newval = self.calibConvert(old_calib, new_val_arr[i], unit_name, sensorType)
+ url = "api/" + fun + ".json?" + attr + "=" + self._escapeAttr(newval)
+ self._download(url)
+ else:
+ url = "api/" + fun + ".json?" + attr + "=" + self._escapeAttr(oldval)
+ if attr == "resolution":
+ restoreLast.append(url)
+ else:
+ self._download(url)
+ i = i + 1
+
+ for y in restoreLast:
+ self._download(y)
+ return YAPI.SUCCESS
+
+ def download(self, pathname):
+ """
+ Downloads the specified built-in file and returns a binary buffer with its content.
+
+ @param pathname : name of the new file to load
+
+ @return a binary buffer with the file content
+
+ On failure, throws an exception or returns YAPI.INVALID_STRING.
+ """
+ return self._download(pathname)
+
+ def get_icon2d(self):
+ """
+ Returns the icon of the module. The icon is a PNG image and does not
+ exceeds 1536 bytes.
+
+ @return a binary buffer with module icon, in png format.
+ On failure, throws an exception or returns YAPI.INVALID_STRING.
+ """
+ # // may throw an exception
+ return self._download("icon2d.png")
+
+ def get_lastLogs(self):
+ """
+ Returns a string with last logs of the module. This method return only
+ logs that are still in the module.
+
+ @return a string with last logs of the module.
+ On failure, throws an exception or returns YAPI.INVALID_STRING.
+ """
+ # content
+ # // may throw an exception
+ content = self._download("logs.txt")
+ return YByte2String(content)
+
+ def log(self, text):
+ """
+ Adds a text message to the device logs. This function is useful in
+ particular to trace the execution of HTTP callbacks. If a newline
+ is desired after the message, it must be included in the string.
+
+ @param text : the string to append to the logs.
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self._upload("logs.txt", YString2Byte(text))
+
+ def get_subDevices(self):
+ """
+ Returns a list of all the modules that are plugged into the current module.
+ This method only makes sense when called for a YoctoHub/VirtualHub.
+ Otherwise, an empty array will be returned.
+
+ @return an array of strings containing the sub modules.
+ """
+ errmsg = ctypes.create_string_buffer(YAPI.YOCTO_ERRMSG_LEN)
+ smallbuff = ctypes.create_string_buffer(1024)
+ # bigbuff
+ # buffsize
+ fullsize = ctypes.c_int()
+ # yapi_res
+ # subdevice_list
+ subdevices = []
+ # serial
+ # // may throw an exception
+ serial = self.get_serialNumber()
+ fullsize.value = 0
+ yapi_res = YAPI._yapiGetSubdevices(ctypes.create_string_buffer(YString2Byte(serial)), smallbuff, 1024, ctypes.byref(fullsize), errmsg)
+ if yapi_res < 0:
+ return subdevices
+ if fullsize.value <= 1024:
+ subdevice_list = YByte2String(smallbuff.value)
+ else:
+ buffsize = fullsize.value
+ bigbuff = ctypes.create_string_buffer(buffsize)
+ yapi_res = YAPI._yapiGetSubdevices(ctypes.create_string_buffer(YString2Byte(serial)), bigbuff, buffsize, ctypes.byref(fullsize), errmsg)
+ if yapi_res < 0:
+ bigbuff = None
+ return subdevices
+ else:
+ subdevice_list = YByte2String(bigbuff.value)
+ bigbuff = None
+ if not (subdevice_list == ""):
+ subdevices = (subdevice_list).split(',')
+ return subdevices
+
+ def get_parentHub(self):
+ """
+ Returns the serial number of the YoctoHub on which this module is connected.
+ If the module is connected by USB, or if the module is the root YoctoHub, an
+ empty string is returned.
+
+ @return a string with the serial number of the YoctoHub or an empty string
+ """
+ errmsg = ctypes.create_string_buffer(YAPI.YOCTO_ERRMSG_LEN)
+ hubserial = ctypes.create_string_buffer(YAPI.YOCTO_SERIAL_LEN)
+ pathsize = ctypes.c_int()
+ # yapi_res
+ # serial
+ # // may throw an exception
+ serial = self.get_serialNumber()
+ # // retrieve device object
+ pathsize.value = 0
+ yapi_res = YAPI._yapiGetDevicePathEx(ctypes.create_string_buffer(YString2Byte(serial)), hubserial, None, 0, ctypes.byref(pathsize), errmsg)
+ if yapi_res < 0:
+ return ""
+ return YByte2String(hubserial.value)
+
+ def get_url(self):
+ """
+ Returns the URL used to access the module. If the module is connected by USB, the
+ string 'usb' is returned.
+
+ @return a string with the URL of the module.
+ """
+ errmsg = ctypes.create_string_buffer(YAPI.YOCTO_ERRMSG_LEN)
+ path = ctypes.create_string_buffer(1024)
+ pathsize = ctypes.c_int()
+ # yapi_res
+ # serial
+ # // may throw an exception
+ serial = self.get_serialNumber()
+ # // retrieve device object
+ pathsize.value = 0
+ yapi_res = YAPI._yapiGetDevicePathEx(ctypes.create_string_buffer(YString2Byte(serial)), None, path, 1024, ctypes.byref(pathsize), errmsg)
+ if yapi_res < 0:
+ return ""
+ return YByte2String(path.value)
+
+ def nextModule(self):
+ """
+ Continues the module enumeration started using yFirstModule().
+
+ @return a pointer to a YModule object, corresponding to
+ the next module found, or a None pointer
+ if there are no more modules to enumerate.
+ """
+ hwidRef = YRefParam()
+ if YAPI.YISERR(self._nextFunction(hwidRef)):
+ return None
+ if hwidRef.value == "":
+ return None
+ return YModule.FindModule(hwidRef.value)
+
+#--- (end of generated code: YModule implementation)
+
+ def get_friendlyName(self):
+ errmsgRef = YRefParam()
+ fundescRef = YRefParam()
+ fname = ctypes.create_string_buffer(YAPI.YOCTO_FUNCTION_LEN)
+ snum = ctypes.create_string_buffer(YAPI.YOCTO_FUNCTION_LEN)
+ funcid = ctypes.create_string_buffer(YAPI.YOCTO_FUNCTION_LEN)
+ errbuff = ctypes.create_string_buffer(YAPI.YOCTO_ERRMSG_LEN)
+ devdesc = ctypes.c_int()
+ # Resolve the function name
+ res = self._getDescriptor(fundescRef, errmsgRef)
+ #noinspection PyUnresolvedReferences
+ if not YAPI.YISERR(res) and not YAPI.YISERR(
+ YAPI._yapiGetFunctionInfoEx(fundescRef.value, ctypes.byref(devdesc), snum, funcid, None, fname, None, errbuff)):
+ dname = ctypes.create_string_buffer(YAPI.YOCTO_FUNCTION_LEN)
+ moddescr = YAPI.yapiGetFunction("Module", YByte2String(snum.value), errmsgRef)
+ #noinspection PyUnresolvedReference,PyUnresolvedReferences
+ if not YAPI.YISERR(moddescr) and not YAPI.YISERR(
+ YAPI._yapiGetFunctionInfoEx(moddescr, ctypes.byref(devdesc), None, None, None, dname, None, errbuff)):
+ if YByte2String(dname.value) != "":
+ return "%s" % (YByte2String(dname.value))
+ return "%s" % (YByte2String(snum.value))
+ self._throw(YAPI.DEVICE_NOT_FOUND, errmsgRef.value)
+ return self.FRIENDLYNAME_INVALID
+
+ def setImmutableAttributes(self, infosRef):
+ self._serialNumber = YByte2String(infosRef.serial)
+ self._productName = YByte2String(infosRef.productname)
+ self._productId = int(infosRef.deviceid)
+ self._cacheExpiration = YAPI.GetTickCount()
+
+ # Return the properties of the nth function of our device
+ def _getFunction(self, idx, serialRef, funcIdRef, baseType, funcNameRef, funcValRef, errmsgRef):
+ functionsRef = YRefParam()
+ devRef = YRefParam()
+ devdescrRef = YRefParam()
+
+ # retrieve device object
+ res = self._getDevice(devRef, errmsgRef)
+ if YAPI.YISERR(res):
+ self._throw(res, errmsgRef.value)
+ return res
+
+ # get reference to all functions from the device
+ res = devRef.value.getFunctions(functionsRef, errmsgRef)
+ if YAPI.YISERR(res):
+ return res
+
+ # get latest function info from yellow pages
+ fundescr = int(functionsRef.value[idx])
+
+ res = YAPI.yapiGetFunctionInfoEx(fundescr, devdescrRef, serialRef, funcIdRef, baseType,
+ funcNameRef, funcValRef, errmsgRef)
+ if YAPI.YISERR(res):
+ return res
+
+ return YAPI.SUCCESS
+
+ def functionCount(self):
+ """
+ Returns the number of functions (beside the "module" interface) available on the module.
+
+ @return the number of functions on the module
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ functionsRef = YRefParam()
+ devRef = YRefParam()
+ errmsgRef = YRefParam()
+
+ res = self._getDevice(devRef, errmsgRef)
+ if YAPI.YISERR(res):
+ self._throw(res, errmsgRef.value)
+ return res
+
+ res = devRef.value.getFunctions(functionsRef, errmsgRef)
+ if YAPI.YISERR(res):
+ self._throw(res, errmsgRef.value)
+ return res
+
+ return len(functionsRef.value)
+
+ def functionId(self, functionIndex):
+ """
+ Retrieves the hardware identifier of the <i>n</i>th function on the module.
+
+ @param functionIndex : the index of the function for which the information is desired, starting at
+ 0 for the first function.
+
+ @return a string corresponding to the unambiguous hardware identifier of the requested module function
+
+ On failure, throws an exception or returns an empty string.
+ """
+ serialRef = YRefParam()
+ funcIdRef = YRefParam()
+ baseTypeRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+ errmsgRef = YRefParam()
+
+ res = self._getFunction(functionIndex, serialRef, funcIdRef, baseTypeRef, funcNameRef, funcValRef, errmsgRef)
+ if YAPI.YISERR(res):
+ self._throw(res, errmsgRef.value)
+ return YAPI.INVALID_STRING
+
+ return funcIdRef.value
+
+ def functionType(self, functionIndex):
+ """
+ Retrieves the type of the <i>n</i>th function on the module.
+
+ @param functionIndex : the index of the function for which the information is desired, starting at
+ 0 for the first function.
+
+ @return a the type of the function
+
+ On failure, throws an exception or returns an empty string.
+ """
+ serialRef = YRefParam()
+ funcIdRef = YRefParam()
+ baseTypeRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+ errmsgRef = YRefParam()
+
+ res = self._getFunction(functionIndex, serialRef, funcIdRef, baseTypeRef, funcNameRef, funcValRef, errmsgRef)
+ if YAPI.YISERR(res):
+ self._throw(res, errmsgRef.value)
+ return YAPI.INVALID_STRING
+
+ funid = funcIdRef.value
+ i = 0
+ for c in funid:
+ if '0' <= c <= '9':
+ break
+ i += 1
+ res = funid[1:i]
+ return funid[0].upper() + res
+
+ def functionBaseType(self, functionIndex):
+ """
+ Retrieves the base type of the <i>n</i>th function on the module.
+
+ @param functionIndex : the index of the function for which the information is desired, starting at
+ 0 for the first function.
+
+ @return a the base type of the function
+
+ On failure, throws an exception or returns an empty string.
+ """
+ serialRef = YRefParam()
+ funcIdRef = YRefParam()
+ baseTypeRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+ errmsgRef = YRefParam()
+
+ res = self._getFunction(functionIndex, serialRef, funcIdRef, baseTypeRef, funcNameRef, funcValRef, errmsgRef)
+
+ return baseTypeRef.value
+
+ def functionName(self, functionIndex):
+ """
+ Retrieves the logical name of the <i>n</i>th function on the module.
+
+ @param functionIndex : the index of the function for which the information is desired, starting at
+ 0 for the first function.
+
+ @return a string corresponding to the logical name of the requested module function
+
+ On failure, throws an exception or returns an empty string.
+ """
+ serialRef = YRefParam()
+ funcIdRef = YRefParam()
+ baseTypeRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+ errmsgRef = YRefParam()
+
+ res = self._getFunction(functionIndex, serialRef, funcIdRef, baseTypeRef, funcNameRef, funcValRef, errmsgRef)
+ if YAPI.YISERR(res):
+ self._throw(res, errmsgRef.value)
+ return YAPI.INVALID_STRING
+
+ return funcNameRef.value
+
+ def functionValue(self, functionIndex):
+ """
+ Retrieves the advertised value of the <i>n</i>th function on the module.
+
+ @param functionIndex : the index of the function for which the information is desired, starting at
+ 0 for the first function.
+
+ @return a short string (up to 6 characters) corresponding to the advertised value of the requested
+ module function
+
+ On failure, throws an exception or returns an empty string.
+ """
+ serialRef = YRefParam()
+ funcIdRef = YRefParam()
+ baseTypeRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+ errmsgRef = YRefParam()
+
+ res = self._getFunction(functionIndex, serialRef, funcIdRef, baseTypeRef, funcNameRef, funcValRef, errmsgRef)
+ if YAPI.YISERR(res):
+ self._throw(res, errmsgRef.value)
+ return YAPI.INVALID_STRING
+
+ return funcValRef.value
+
+ def registerLogCallback(self, callback):
+ """
+ Registers a device log callback function. This callback will be called each time
+ that a module sends a new log message. Mostly useful to debug a Yoctopuce module.
+
+ @param callback : the callback function to call, or a None pointer. The callback function should take two
+ arguments: the module object that emitted the log message, and the character string containing the log.
+ @noreturn
+ """
+ self._logCallback = callback
+ if self._logCallback is None:
+ YAPI._yapiStartStopDeviceLogCallback(ctypes.create_string_buffer(self._serialNumber.encode("ASCII")), 0)
+ else:
+ YAPI._yapiStartStopDeviceLogCallback(ctypes.create_string_buffer(self._serialNumber.encode("ASCII")), 1)
+
+ def get_logCallback(self):
+ return self._logCallback
+
+ #--- (generated code: Module functions)
+
+ @staticmethod
+ def FirstModule():
+ """
+ Starts the enumeration of modules currently accessible.
+ Use the method YModule.nextModule() to iterate on the
+ next modules.
+
+ @return a pointer to a YModule object, corresponding to
+ the first module currently online, or a None pointer
+ if there are none.
+ """
+ devRef = YRefParam()
+ neededsizeRef = YRefParam()
+ serialRef = YRefParam()
+ funcIdRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+ errmsgRef = YRefParam()
+ size = YAPI.C_INTSIZE
+ #noinspection PyTypeChecker,PyCallingNonCallable
+ p = (ctypes.c_int * 1)()
+ err = YAPI.apiGetFunctionsByClass("Module", 0, p, size, neededsizeRef, errmsgRef)
+
+ if YAPI.YISERR(err) or not neededsizeRef.value:
+ return None
+
+ if YAPI.YISERR(
+ YAPI.yapiGetFunctionInfo(p[0], devRef, serialRef, funcIdRef, funcNameRef, funcValRef, errmsgRef)):
+ return None
+
+ return YModule.FindModule(serialRef.value + "." + funcIdRef.value)
+
+#--- (end of generated code: Module functions)
+
+
+#--- (generated code: YSensor class start)
+#noinspection PyProtectedMember
+class YSensor(YFunction):
+ """
+ The YSensor class is the parent class for all Yoctopuce sensors. It can be
+ used to read the current value and unit of any sensor, read the min/max
+ value, configure autonomous recording frequency and access recorded data.
+ It also provide a function to register a callback invoked each time the
+ observed value changes, or at a predefined interval. Using this class rather
+ than a specific subclass makes it possible to create generic applications
+ that work with any Yoctopuce sensor, even those that do not yet exist.
+ Note: The YAnButton class is the only analog input which does not inherit
+ from YSensor.
+
+ """
+#--- (end of generated code: YSensor class start)
+ #--- (generated code: YSensor return codes)
+ #--- (end of generated code: YSensor return codes)
+ #--- (generated code: YSensor definitions)
+ UNIT_INVALID = YAPI.INVALID_STRING
+ CURRENTVALUE_INVALID = YAPI.INVALID_DOUBLE
+ LOWESTVALUE_INVALID = YAPI.INVALID_DOUBLE
+ HIGHESTVALUE_INVALID = YAPI.INVALID_DOUBLE
+ CURRENTRAWVALUE_INVALID = YAPI.INVALID_DOUBLE
+ LOGFREQUENCY_INVALID = YAPI.INVALID_STRING
+ REPORTFREQUENCY_INVALID = YAPI.INVALID_STRING
+ CALIBRATIONPARAM_INVALID = YAPI.INVALID_STRING
+ RESOLUTION_INVALID = YAPI.INVALID_DOUBLE
+ SENSORSTATE_INVALID = YAPI.INVALID_INT
+ #--- (end of generated code: YSensor definitions)
+
+ def __init__(self, func):
+ super(YSensor, self).__init__(func)
+ self._className = "Sensor"
+ #--- (generated code: YSensor attributes)
+ self._callback = None
+ self._unit = YSensor.UNIT_INVALID
+ self._currentValue = YSensor.CURRENTVALUE_INVALID
+ self._lowestValue = YSensor.LOWESTVALUE_INVALID
+ self._highestValue = YSensor.HIGHESTVALUE_INVALID
+ self._currentRawValue = YSensor.CURRENTRAWVALUE_INVALID
+ self._logFrequency = YSensor.LOGFREQUENCY_INVALID
+ self._reportFrequency = YSensor.REPORTFREQUENCY_INVALID
+ self._calibrationParam = YSensor.CALIBRATIONPARAM_INVALID
+ self._resolution = YSensor.RESOLUTION_INVALID
+ self._sensorState = YSensor.SENSORSTATE_INVALID
+ self._timedReportCallbackSensor = None
+ self._prevTimedReport = 0
+ self._iresol = 0
+ self._offset = 0
+ self._scale = 0
+ self._decexp = 0
+ self._isScal = 0
+ self._isScal32 = 0
+ self._caltyp = 0
+ self._calpar = []
+ self._calraw = []
+ self._calref = []
+ self._calhdl = None
+ #--- (end of generated code: YSensor attributes)
+
+ #--- (generated code: YSensor implementation)
+ def _parseAttr(self, member):
+ if member.name == "unit":
+ self._unit = member.svalue
+ return 1
+ if member.name == "currentValue":
+ self._currentValue = round(member.ivalue * 1000.0 / 65536.0) / 1000.0
+ return 1
+ if member.name == "lowestValue":
+ self._lowestValue = round(member.ivalue * 1000.0 / 65536.0) / 1000.0
+ return 1
+ if member.name == "highestValue":
+ self._highestValue = round(member.ivalue * 1000.0 / 65536.0) / 1000.0
+ return 1
+ if member.name == "currentRawValue":
+ self._currentRawValue = round(member.ivalue * 1000.0 / 65536.0) / 1000.0
+ return 1
+ if member.name == "logFrequency":
+ self._logFrequency = member.svalue
+ return 1
+ if member.name == "reportFrequency":
+ self._reportFrequency = member.svalue
+ return 1
+ if member.name == "calibrationParam":
+ self._calibrationParam = member.svalue
+ return 1
+ if member.name == "resolution":
+ self._resolution = round(member.ivalue * 1000.0 / 65536.0) / 1000.0
+ return 1
+ if member.name == "sensorState":
+ self._sensorState = member.ivalue
+ return 1
+ super(YSensor, self)._parseAttr(member)
+
+ def get_unit(self):
+ """
+ Returns the measuring unit for the measure.
+
+ @return a string corresponding to the measuring unit for the measure
+
+ On failure, throws an exception or returns YSensor.UNIT_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YSensor.UNIT_INVALID
+ return self._unit
+
+ def get_currentValue(self):
+ """
+ Returns the current value of the measure, in the specified unit, as a floating point number.
+
+ @return a floating point number corresponding to the current value of the measure, in the specified
+ unit, as a floating point number
+
+ On failure, throws an exception or returns YSensor.CURRENTVALUE_INVALID.
+ """
+ # res
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YSensor.CURRENTVALUE_INVALID
+ res = self._applyCalibration(self._currentRawValue)
+ if res == YSensor.CURRENTVALUE_INVALID:
+ res = self._currentValue
+ res = res * self._iresol
+ return round(res) / self._iresol
+
+ def set_lowestValue(self, newval):
+ """
+ Changes the recorded minimal value observed.
+
+ @param newval : a floating point number corresponding to the recorded minimal value observed
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(int(round(newval * 65536.0, 1)))
+ return self._setAttr("lowestValue", rest_val)
+
+ def get_lowestValue(self):
+ """
+ Returns the minimal value observed for the measure since the device was started.
+
+ @return a floating point number corresponding to the minimal value observed for the measure since
+ the device was started
+
+ On failure, throws an exception or returns YSensor.LOWESTVALUE_INVALID.
+ """
+ # res
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YSensor.LOWESTVALUE_INVALID
+ res = self._lowestValue * self._iresol
+ return round(res) / self._iresol
+
+ def set_highestValue(self, newval):
+ """
+ Changes the recorded maximal value observed.
+
+ @param newval : a floating point number corresponding to the recorded maximal value observed
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(int(round(newval * 65536.0, 1)))
+ return self._setAttr("highestValue", rest_val)
+
+ def get_highestValue(self):
+ """
+ Returns the maximal value observed for the measure since the device was started.
+
+ @return a floating point number corresponding to the maximal value observed for the measure since
+ the device was started
+
+ On failure, throws an exception or returns YSensor.HIGHESTVALUE_INVALID.
+ """
+ # res
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YSensor.HIGHESTVALUE_INVALID
+ res = self._highestValue * self._iresol
+ return round(res) / self._iresol
+
+ def get_currentRawValue(self):
+ """
+ Returns the uncalibrated, unrounded raw value returned by the sensor, in the specified unit, as a
+ floating point number.
+
+ @return a floating point number corresponding to the uncalibrated, unrounded raw value returned by
+ the sensor, in the specified unit, as a floating point number
+
+ On failure, throws an exception or returns YSensor.CURRENTRAWVALUE_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YSensor.CURRENTRAWVALUE_INVALID
+ return self._currentRawValue
+
+ def get_logFrequency(self):
+ """
+ Returns the datalogger recording frequency for this function, or "OFF"
+ when measures are not stored in the data logger flash memory.
+
+ @return a string corresponding to the datalogger recording frequency for this function, or "OFF"
+ when measures are not stored in the data logger flash memory
+
+ On failure, throws an exception or returns YSensor.LOGFREQUENCY_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YSensor.LOGFREQUENCY_INVALID
+ return self._logFrequency
+
+ def set_logFrequency(self, newval):
+ """
+ Changes the datalogger recording frequency for this function.
+ The frequency can be specified as samples per second,
+ as sample per minute (for instance "15/m") or in samples per
+ hour (eg. "4/h"). To disable recording for this function, use
+ the value "OFF".
+
+ @param newval : a string corresponding to the datalogger recording frequency for this function
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = newval
+ return self._setAttr("logFrequency", rest_val)
+
+ def get_reportFrequency(self):
+ """
+ Returns the timed value notification frequency, or "OFF" if timed
+ value notifications are disabled for this function.
+
+ @return a string corresponding to the timed value notification frequency, or "OFF" if timed
+ value notifications are disabled for this function
+
+ On failure, throws an exception or returns YSensor.REPORTFREQUENCY_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YSensor.REPORTFREQUENCY_INVALID
+ return self._reportFrequency
+
+ def set_reportFrequency(self, newval):
+ """
+ Changes the timed value notification frequency for this function.
+ The frequency can be specified as samples per second,
+ as sample per minute (for instance "15/m") or in samples per
+ hour (eg. "4/h"). To disable timed value notifications for this
+ function, use the value "OFF".
+
+ @param newval : a string corresponding to the timed value notification frequency for this function
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = newval
+ return self._setAttr("reportFrequency", rest_val)
+
+ def get_calibrationParam(self):
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YSensor.CALIBRATIONPARAM_INVALID
+ return self._calibrationParam
+
+ def set_calibrationParam(self, newval):
+ rest_val = newval
+ return self._setAttr("calibrationParam", rest_val)
+
+ def set_resolution(self, newval):
+ """
+ Changes the resolution of the measured physical values. The resolution corresponds to the numerical precision
+ when displaying value. It does not change the precision of the measure itself.
+
+ @param newval : a floating point number corresponding to the resolution of the measured physical values
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(int(round(newval * 65536.0, 1)))
+ return self._setAttr("resolution", rest_val)
+
+ def get_resolution(self):
+ """
+ Returns the resolution of the measured values. The resolution corresponds to the numerical precision
+ of the measures, which is not always the same as the actual precision of the sensor.
+
+ @return a floating point number corresponding to the resolution of the measured values
+
+ On failure, throws an exception or returns YSensor.RESOLUTION_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YSensor.RESOLUTION_INVALID
+ return self._resolution
+
+ def get_sensorState(self):
+ """
+ Returns the sensor health state code, which is zero when there is an up-to-date measure
+ available or a positive code if the sensor is not able to provide a measure right now.
+
+ @return an integer corresponding to the sensor health state code, which is zero when there is an
+ up-to-date measure
+ available or a positive code if the sensor is not able to provide a measure right now
+
+ On failure, throws an exception or returns YSensor.SENSORSTATE_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YSensor.SENSORSTATE_INVALID
+ return self._sensorState
+
+ @staticmethod
+ def FindSensor(func):
+ """
+ Retrieves a sensor for a given identifier.
+ The identifier can be specified using several formats:
+ <ul>
+ <li>FunctionLogicalName</li>
+ <li>ModuleSerialNumber.FunctionIdentifier</li>
+ <li>ModuleSerialNumber.FunctionLogicalName</li>
+ <li>ModuleLogicalName.FunctionIdentifier</li>
+ <li>ModuleLogicalName.FunctionLogicalName</li>
+ </ul>
+
+ This function does not require that the sensor is online at the time
+ it is invoked. The returned object is nevertheless valid.
+ Use the method YSensor.isOnline() to test if the sensor is
+ indeed online at a given time. In case of ambiguity when looking for
+ a sensor by logical name, no error is notified: the first instance
+ found is returned. The search is performed first by hardware name,
+ then by logical name.
+
+ @param func : a string that uniquely characterizes the sensor
+
+ @return a YSensor object allowing you to drive the sensor.
+ """
+ # obj
+ obj = YFunction._FindFromCache("Sensor", func)
+ if obj is None:
+ obj = YSensor(func)
+ YFunction._AddToCache("Sensor", func, obj)
+ return obj
+
+ def _parserHelper(self):
+ # position
+ # maxpos
+ iCalib = []
+ # iRaw
+ # iRef
+ # fRaw
+ # fRef
+ self._caltyp = -1
+ self._scale = -1
+ self._isScal32 = False
+ del self._calpar[:]
+ del self._calraw[:]
+ del self._calref[:]
+ # // Store inverted resolution, to provide better rounding
+ if self._resolution > 0:
+ self._iresol = round(1.0 / self._resolution)
+ else:
+ self._iresol = 10000
+ self._resolution = 0.0001
+ # // Old format: supported when there is no calibration
+ if self._calibrationParam == "" or self._calibrationParam == "0":
+ self._caltyp = 0
+ return 0
+ if self._calibrationParam.find(",") >= 0:
+ #
+ iCalib = YAPI._decodeFloats(self._calibrationParam)
+ self._caltyp = int((iCalib[0]) / (1000))
+ if self._caltyp > 0:
+ if self._caltyp < YAPI.YOCTO_CALIB_TYPE_OFS:
+ #
+ self._caltyp = -1
+ return 0
+ self._calhdl = YAPI._getCalibrationHandler(self._caltyp)
+ if not (self._calhdl is not None):
+ #
+ self._caltyp = -1
+ return 0
+ #
+ self._isScal = True
+ self._isScal32 = True
+ self._offset = 0
+ self._scale = 1000
+ maxpos = len(iCalib)
+ del self._calpar[:]
+ position = 1
+ while position < maxpos:
+ self._calpar.append(iCalib[position])
+ position = position + 1
+ del self._calraw[:]
+ del self._calref[:]
+ position = 1
+ while position + 1 < maxpos:
+ fRaw = iCalib[position]
+ fRaw = fRaw / 1000.0
+ fRef = iCalib[position + 1]
+ fRef = fRef / 1000.0
+ self._calraw.append(fRaw)
+ self._calref.append(fRef)
+ position = position + 2
+ else:
+ #
+ iCalib = YAPI._decodeWords(self._calibrationParam)
+ #
+ if len(iCalib) < 2:
+ self._caltyp = -1
+ return 0
+ #
+ self._isScal = (iCalib[1] > 0)
+ if self._isScal:
+ self._offset = iCalib[0]
+ if self._offset > 32767:
+ self._offset = self._offset - 65536
+ self._scale = iCalib[1]
+ self._decexp = 0
+ else:
+ self._offset = 0
+ self._scale = 1
+ self._decexp = 1.0
+ position = iCalib[0]
+ while position > 0:
+ self._decexp = self._decexp * 10
+ position = position - 1
+ #
+ if len(iCalib) == 2:
+ self._caltyp = 0
+ return 0
+ self._caltyp = iCalib[2]
+ self._calhdl = YAPI._getCalibrationHandler(self._caltyp)
+ #
+ if self._caltyp <= 10:
+ maxpos = self._caltyp
+ else:
+ if self._caltyp <= 20:
+ maxpos = self._caltyp - 10
+ else:
+ maxpos = 5
+ maxpos = 3 + 2 * maxpos
+ if maxpos > len(iCalib):
+ maxpos = len(iCalib)
+ del self._calpar[:]
+ del self._calraw[:]
+ del self._calref[:]
+ position = 3
+ while position + 1 < maxpos:
+ iRaw = iCalib[position]
+ iRef = iCalib[position + 1]
+ self._calpar.append(iRaw)
+ self._calpar.append(iRef)
+ if self._isScal:
+ fRaw = iRaw
+ fRaw = (fRaw - self._offset) / self._scale
+ fRef = iRef
+ fRef = (fRef - self._offset) / self._scale
+ self._calraw.append(fRaw)
+ self._calref.append(fRef)
+ else:
+ self._calraw.append(YAPI._decimalToDouble(iRaw))
+ self._calref.append(YAPI._decimalToDouble(iRef))
+ position = position + 2
+ return 0
+
+ def isSensorReady(self):
+ """
+ Checks if the sensor is currently able to provide an up-to-date measure.
+ Returns false if the device is unreachable, or if the sensor does not have
+ a current measure to transmit. No exception is raised if there is an error
+ while trying to contact the device hosting $THEFUNCTION$.
+
+ @return true if the sensor can provide an up-to-date measure, and false otherwise
+ """
+ if not (self.isOnline()):
+ return False
+ if not (self._sensorState == 0):
+ return False
+ return True
+
+ def startDataLogger(self):
+ """
+ Starts the data logger on the device. Note that the data logger
+ will only save the measures on this sensor if the logFrequency
+ is not set to "OFF".
+
+ @return YAPI.SUCCESS if the call succeeds.
+ """
+ # res
+ # // may throw an exception
+ res = self._download("api/dataLogger/recording?recording=1")
+ if not (len(res)>0):
+ self._throw(YAPI.IO_ERROR, "unable to start datalogger")
+ return YAPI.SUCCESS
+
+ def stopDataLogger(self):
+ """
+ Stops the datalogger on the device.
+
+ @return YAPI.SUCCESS if the call succeeds.
+ """
+ # res
+ # // may throw an exception
+ res = self._download("api/dataLogger/recording?recording=0")
+ if not (len(res)>0):
+ self._throw(YAPI.IO_ERROR, "unable to stop datalogger")
+ return YAPI.SUCCESS
+
+ def get_recordedData(self, startTime, endTime):
+ """
+ Retrieves a DataSet object holding historical data for this
+ sensor, for a specified time interval. The measures will be
+ retrieved from the data logger, which must have been turned
+ on at the desired time. See the documentation of the DataSet
+ class for information on how to get an overview of the
+ recorded data, and how to load progressively a large set
+ of measures from the data logger.
+
+ This function only works if the device uses a recent firmware,
+ as DataSet objects are not supported by firmwares older than
+ version 13000.
+
+ @param startTime : the start of the desired measure time interval,
+ as a Unix timestamp, i.e. the number of seconds since
+ January 1, 1970 UTC. The special value 0 can be used
+ to include any meaasure, without initial limit.
+ @param endTime : the end of the desired measure time interval,
+ as a Unix timestamp, i.e. the number of seconds since
+ January 1, 1970 UTC. The special value 0 can be used
+ to include any meaasure, without ending limit.
+
+ @return an instance of YDataSet, providing access to historical
+ data. Past measures can be loaded progressively
+ using methods from the YDataSet object.
+ """
+ # funcid
+ # funit
+ # // may throw an exception
+ funcid = self.get_functionId()
+ funit = self.get_unit()
+ return YDataSet(self, funcid, funit, startTime, endTime)
+
+ def registerTimedReportCallback(self, callback):
+ """
+ Registers the callback function that is invoked on every periodic timed notification.
+ The callback is invoked only during the execution of ySleep or yHandleEvents.
+ This provides control over the time when the callback is triggered. For good responsiveness, remember to call
+ one of these two functions periodically. To unregister a callback, pass a None pointer as argument.
+
+ @param callback : the callback function to call, or a None pointer. The callback function should take two
+ arguments: the function object of which the value has changed, and an YMeasure object describing
+ the new advertised value.
+ @noreturn
+ """
+ # sensor
+ sensor = self
+ if callback is not None:
+ YFunction._UpdateTimedReportCallbackList(sensor, True)
+ else:
+ YFunction._UpdateTimedReportCallbackList(sensor, False)
+ self._timedReportCallbackSensor = callback
+ return 0
+
+ def _invokeTimedReportCallback(self, value):
+ if self._timedReportCallbackSensor is not None:
+ self._timedReportCallbackSensor(self, value)
+ return 0
+
+ def calibrateFromPoints(self, rawValues, refValues):
+ """
+ Configures error correction data points, in particular to compensate for
+ a possible perturbation of the measure caused by an enclosure. It is possible
+ to configure up to five correction points. Correction points must be provided
+ in ascending order, and be in the range of the sensor. The device will automatically
+ perform a linear interpolation of the error correction between specified
+ points. Remember to call the saveToFlash() method of the module if the
+ modification must be kept.
+
+ For more information on advanced capabilities to refine the calibration of
+ sensors, please contact support@yoctopuce.com.
+
+ @param rawValues : array of floating point numbers, corresponding to the raw
+ values returned by the sensor for the correction points.
+ @param refValues : array of floating point numbers, corresponding to the corrected
+ values for the correction points.
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ # rest_val
+ # // may throw an exception
+ rest_val = self._encodeCalibrationPoints(rawValues, refValues)
+ return self._setAttr("calibrationParam", rest_val)
+
+ def loadCalibrationPoints(self, rawValues, refValues):
+ """
+ Retrieves error correction data points previously entered using the method
+ calibrateFromPoints.
+
+ @param rawValues : array of floating point numbers, that will be filled by the
+ function with the raw sensor values for the correction points.
+ @param refValues : array of floating point numbers, that will be filled by the
+ function with the desired values for the correction points.
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ del rawValues[:]
+ del refValues[:]
+ # // Load function parameters if not yet loaded
+ if self._scale == 0:
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YAPI.DEVICE_NOT_FOUND
+ if self._caltyp < 0:
+ self._throw(YAPI.NOT_SUPPORTED, "Calibration parameters format mismatch. Please upgrade your library or firmware.")
+ return YAPI.NOT_SUPPORTED
+ del rawValues[:]
+ del refValues[:]
+ for y in self._calraw:
+ rawValues.append(y)
+ for y in self._calref:
+ refValues.append(y)
+ return YAPI.SUCCESS
+
+ def _encodeCalibrationPoints(self, rawValues, refValues):
+ # res
+ # npt
+ # idx
+ # iRaw
+ # iRef
+ npt = len(rawValues)
+ if npt != len(refValues):
+ self._throw(YAPI.INVALID_ARGUMENT, "Invalid calibration parameters (size mismatch)")
+ return YAPI.INVALID_STRING
+ # // Shortcut when building empty calibration parameters
+ if npt == 0:
+ return "0"
+ # // Load function parameters if not yet loaded
+ if self._scale == 0:
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YAPI.INVALID_STRING
+ # // Detect old firmware
+ if (self._caltyp < 0) or (self._scale < 0):
+ self._throw(YAPI.NOT_SUPPORTED, "Calibration parameters format mismatch. Please upgrade your library or firmware.")
+ return "0"
+ if self._isScal32:
+ #
+ res = "" + str(int(YAPI.YOCTO_CALIB_TYPE_OFS))
+ idx = 0
+ while idx < npt:
+ res = "" + res + "," + str(rawValues[idx]) + "," + str(refValues[idx])
+ idx = idx + 1
+ else:
+ if self._isScal:
+ #
+ res = "" + str(int(npt))
+ idx = 0
+ while idx < npt:
+ iRaw = round(rawValues[idx] * self._scale + self._offset)
+ iRef = round(refValues[idx] * self._scale + self._offset)
+ res = "" + res + "," + str(int(iRaw)) + "," + str(int(iRef))
+ idx = idx + 1
+ else:
+ #
+ res = "" + str(int(10 + npt))
+ idx = 0
+ while idx < npt:
+ iRaw = YAPI._doubleToDecimal(rawValues[idx])
+ iRef = YAPI._doubleToDecimal(refValues[idx])
+ res = "" + res + "," + str(int(iRaw)) + "," + str(int(iRef))
+ idx = idx + 1
+ return res
+
+ def _applyCalibration(self, rawValue):
+ if rawValue == YSensor.CURRENTVALUE_INVALID:
+ return YSensor.CURRENTVALUE_INVALID
+ if self._caltyp == 0:
+ return rawValue
+ if self._caltyp < 0:
+ return YSensor.CURRENTVALUE_INVALID
+ if not (self._calhdl is not None):
+ return YSensor.CURRENTVALUE_INVALID
+ return self._calhdl(rawValue, self._caltyp, self._calpar, self._calraw, self._calref)
+
+ def _decodeTimedReport(self, timestamp, report):
+ # i
+ # byteVal
+ # poww
+ # minRaw
+ # avgRaw
+ # maxRaw
+ # sublen
+ # difRaw
+ # startTime
+ # endTime
+ # minVal
+ # avgVal
+ # maxVal
+ startTime = self._prevTimedReport
+ endTime = timestamp
+ self._prevTimedReport = endTime
+ if startTime == 0:
+ startTime = endTime
+ if report[0] == 2:
+ #
+ if len(report) <= 5:
+ #
+ poww = 1
+ avgRaw = 0
+ byteVal = 0
+ i = 1
+ while i < len(report):
+ byteVal = report[i]
+ avgRaw = avgRaw + poww * byteVal
+ poww = poww * 0x100
+ i = i + 1
+ if ((byteVal) & (0x80)) != 0:
+ avgRaw = avgRaw - poww
+ avgVal = avgRaw / 1000.0
+ if self._caltyp != 0:
+ if self._calhdl is not None:
+ avgVal = self._calhdl(avgVal, self._caltyp, self._calpar, self._calraw, self._calref)
+ minVal = avgVal
+ maxVal = avgVal
+ else:
+ #
+ sublen = 1 + ((report[1]) & (3))
+ poww = 1
+ avgRaw = 0
+ byteVal = 0
+ i = 2
+ while (sublen > 0) and (i < len(report)):
+ byteVal = report[i]
+ avgRaw = avgRaw + poww * byteVal
+ poww = poww * 0x100
+ i = i + 1
+ sublen = sublen - 1
+ if ((byteVal) & (0x80)) != 0:
+ avgRaw = avgRaw - poww
+ sublen = 1 + ((((report[1]) >> (2))) & (3))
+ poww = 1
+ difRaw = 0
+ while (sublen > 0) and (i < len(report)):
+ byteVal = report[i]
+ difRaw = difRaw + poww * byteVal
+ poww = poww * 0x100
+ i = i + 1
+ sublen = sublen - 1
+ minRaw = avgRaw - difRaw
+ sublen = 1 + ((((report[1]) >> (4))) & (3))
+ poww = 1
+ difRaw = 0
+ while (sublen > 0) and (i < len(report)):
+ byteVal = report[i]
+ difRaw = difRaw + poww * byteVal
+ poww = poww * 0x100
+ i = i + 1
+ sublen = sublen - 1
+ maxRaw = avgRaw + difRaw
+ avgVal = avgRaw / 1000.0
+ minVal = minRaw / 1000.0
+ maxVal = maxRaw / 1000.0
+ if self._caltyp != 0:
+ if self._calhdl is not None:
+ avgVal = self._calhdl(avgVal, self._caltyp, self._calpar, self._calraw, self._calref)
+ minVal = self._calhdl(minVal, self._caltyp, self._calpar, self._calraw, self._calref)
+ maxVal = self._calhdl(maxVal, self._caltyp, self._calpar, self._calraw, self._calref)
+ else:
+ #
+ if report[0] == 0:
+ #
+ poww = 1
+ avgRaw = 0
+ byteVal = 0
+ i = 1
+ while i < len(report):
+ byteVal = report[i]
+ avgRaw = avgRaw + poww * byteVal
+ poww = poww * 0x100
+ i = i + 1
+ if self._isScal:
+ avgVal = self._decodeVal(avgRaw)
+ else:
+ if ((byteVal) & (0x80)) != 0:
+ avgRaw = avgRaw - poww
+ avgVal = self._decodeAvg(avgRaw)
+ minVal = avgVal
+ maxVal = avgVal
+ else:
+ #
+ minRaw = report[1] + 0x100 * report[2]
+ maxRaw = report[3] + 0x100 * report[4]
+ avgRaw = report[5] + 0x100 * report[6] + 0x10000 * report[7]
+ byteVal = report[8]
+ if ((byteVal) & (0x80)) == 0:
+ avgRaw = avgRaw + 0x1000000 * byteVal
+ else:
+ avgRaw = avgRaw - 0x1000000 * (0x100 - byteVal)
+ minVal = self._decodeVal(minRaw)
+ avgVal = self._decodeAvg(avgRaw)
+ maxVal = self._decodeVal(maxRaw)
+ return YMeasure(startTime, endTime, minVal, avgVal, maxVal)
+
+ def _decodeVal(self, w):
+ # val
+ val = w
+ if self._isScal:
+ val = (val - self._offset) / self._scale
+ else:
+ val = YAPI._decimalToDouble(w)
+ if self._caltyp != 0:
+ if self._calhdl is not None:
+ val = self._calhdl(val, self._caltyp, self._calpar, self._calraw, self._calref)
+ return val
+
+ def _decodeAvg(self, dw):
+ # val
+ val = dw
+ if self._isScal:
+ val = (val / 100 - self._offset) / self._scale
+ else:
+ val = val / self._decexp
+ if self._caltyp != 0:
+ if self._calhdl is not None:
+ val = self._calhdl(val, self._caltyp, self._calpar, self._calraw, self._calref)
+ return val
+
+ def nextSensor(self):
+ """
+ Continues the enumeration of sensors started using yFirstSensor().
+
+ @return a pointer to a YSensor object, corresponding to
+ a sensor currently online, or a None pointer
+ if there are no more sensors to enumerate.
+ """
+ hwidRef = YRefParam()
+ if YAPI.YISERR(self._nextFunction(hwidRef)):
+ return None
+ if hwidRef.value == "":
+ return None
+ return YSensor.FindSensor(hwidRef.value)
+
+#--- (end of generated code: YSensor implementation)
+
+ #--- (generated code: Sensor functions)
+
+ @staticmethod
+ def FirstSensor():
+ """
+ Starts the enumeration of sensors currently accessible.
+ Use the method YSensor.nextSensor() to iterate on
+ next sensors.
+
+ @return a pointer to a YSensor object, corresponding to
+ the first sensor currently online, or a None pointer
+ if there are none.
+ """
+ devRef = YRefParam()
+ neededsizeRef = YRefParam()
+ serialRef = YRefParam()
+ funcIdRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+ errmsgRef = YRefParam()
+ size = YAPI.C_INTSIZE
+ #noinspection PyTypeChecker,PyCallingNonCallable
+ p = (ctypes.c_int * 1)()
+ err = YAPI.apiGetFunctionsByClass("Sensor", 0, p, size, neededsizeRef, errmsgRef)
+
+ if YAPI.YISERR(err) or not neededsizeRef.value:
+ return None
+
+ if YAPI.YISERR(
+ YAPI.yapiGetFunctionInfo(p[0], devRef, serialRef, funcIdRef, funcNameRef, funcValRef, errmsgRef)):
+ return None
+
+ return YSensor.FindSensor(serialRef.value + "." + funcIdRef.value)
+
+#--- (end of generated code: Sensor functions)
diff --git a/yoctoLib.python.26380/Sources/yocto_audioin.py b/yoctoLib.python.26380/Sources/yocto_audioin.py
new file mode 100644
index 0000000..ed6bd2c
--- /dev/null
+++ b/yoctoLib.python.26380/Sources/yocto_audioin.py
@@ -0,0 +1,276 @@
+#*********************************************************************
+#*
+#* $Id: yocto_audioin.py 23243 2016-02-23 14:13:12Z seb $
+#*
+#* Implements yFindAudioIn(), the high-level API for AudioIn functions
+#*
+#* - - - - - - - - - License information: - - - - - - - - -
+#*
+#* Copyright (C) 2011 and beyond by Yoctopuce Sarl, Switzerland.
+#*
+#* Yoctopuce Sarl (hereafter Licensor) grants to you a perpetual
+#* non-exclusive license to use, modify, copy and integrate this
+#* file into your software for the sole purpose of interfacing
+#* with Yoctopuce products.
+#*
+#* You may reproduce and distribute copies of this file in
+#* source or object form, as long as the sole purpose of this
+#* code is to interface with Yoctopuce products. You must retain
+#* this notice in the distributed source file.
+#*
+#* You should refer to Yoctopuce General Terms and Conditions
+#* for additional information regarding your rights and
+#* obligations.
+#*
+#* THE SOFTWARE AND DOCUMENTATION ARE PROVIDED 'AS IS' WITHOUT
+#* WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
+#* WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS
+#* FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO
+#* EVENT SHALL LICENSOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
+#* INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA,
+#* COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR
+#* SERVICES, ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT
+#* LIMITED TO ANY DEFENSE THEREOF), ANY CLAIMS FOR INDEMNITY OR
+#* CONTRIBUTION, OR OTHER SIMILAR COSTS, WHETHER ASSERTED ON THE
+#* BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE), BREACH OF
+#* WARRANTY, OR OTHERWISE.
+#*
+#*********************************************************************/
+
+
+__docformat__ = 'restructuredtext en'
+from yocto_api import *
+
+
+#--- (YAudioIn class start)
+#noinspection PyProtectedMember
+class YAudioIn(YFunction):
+ """
+ The Yoctopuce application programming interface allows you to configure the volume of the input channel.
+
+ """
+#--- (end of YAudioIn class start)
+ #--- (YAudioIn return codes)
+ #--- (end of YAudioIn return codes)
+ #--- (YAudioIn dlldef)
+ #--- (end of YAudioIn dlldef)
+ #--- (YAudioIn definitions)
+ VOLUME_INVALID = YAPI.INVALID_UINT
+ VOLUMERANGE_INVALID = YAPI.INVALID_STRING
+ SIGNAL_INVALID = YAPI.INVALID_INT
+ NOSIGNALFOR_INVALID = YAPI.INVALID_INT
+ MUTE_FALSE = 0
+ MUTE_TRUE = 1
+ MUTE_INVALID = -1
+ #--- (end of YAudioIn definitions)
+
+ def __init__(self, func):
+ super(YAudioIn, self).__init__(func)
+ self._className = 'AudioIn'
+ #--- (YAudioIn attributes)
+ self._callback = None
+ self._volume = YAudioIn.VOLUME_INVALID
+ self._mute = YAudioIn.MUTE_INVALID
+ self._volumeRange = YAudioIn.VOLUMERANGE_INVALID
+ self._signal = YAudioIn.SIGNAL_INVALID
+ self._noSignalFor = YAudioIn.NOSIGNALFOR_INVALID
+ #--- (end of YAudioIn attributes)
+
+ #--- (YAudioIn implementation)
+ def _parseAttr(self, member):
+ if member.name == "volume":
+ self._volume = member.ivalue
+ return 1
+ if member.name == "mute":
+ self._mute = member.ivalue
+ return 1
+ if member.name == "volumeRange":
+ self._volumeRange = member.svalue
+ return 1
+ if member.name == "signal":
+ self._signal = member.ivalue
+ return 1
+ if member.name == "noSignalFor":
+ self._noSignalFor = member.ivalue
+ return 1
+ super(YAudioIn, self)._parseAttr(member)
+
+ def get_volume(self):
+ """
+ Returns audio input gain, in per cents.
+
+ @return an integer corresponding to audio input gain, in per cents
+
+ On failure, throws an exception or returns YAudioIn.VOLUME_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YAudioIn.VOLUME_INVALID
+ return self._volume
+
+ def set_volume(self, newval):
+ """
+ Changes audio input gain, in per cents.
+
+ @param newval : an integer corresponding to audio input gain, in per cents
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("volume", rest_val)
+
+ def get_mute(self):
+ """
+ Returns the state of the mute function.
+
+ @return either YAudioIn.MUTE_FALSE or YAudioIn.MUTE_TRUE, according to the state of the mute function
+
+ On failure, throws an exception or returns YAudioIn.MUTE_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YAudioIn.MUTE_INVALID
+ return self._mute
+
+ def set_mute(self, newval):
+ """
+ Changes the state of the mute function. Remember to call the matching module
+ saveToFlash() method to save the setting permanently.
+
+ @param newval : either YAudioIn.MUTE_FALSE or YAudioIn.MUTE_TRUE, according to the state of the mute function
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = "1" if newval > 0 else "0"
+ return self._setAttr("mute", rest_val)
+
+ def get_volumeRange(self):
+ """
+ Returns the supported volume range. The low value of the
+ range corresponds to the minimal audible value. To
+ completely mute the sound, use set_mute()
+ instead of the set_volume().
+
+ @return a string corresponding to the supported volume range
+
+ On failure, throws an exception or returns YAudioIn.VOLUMERANGE_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YAudioIn.VOLUMERANGE_INVALID
+ return self._volumeRange
+
+ def get_signal(self):
+ """
+ Returns the detected input signal level.
+
+ @return an integer corresponding to the detected input signal level
+
+ On failure, throws an exception or returns YAudioIn.SIGNAL_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YAudioIn.SIGNAL_INVALID
+ return self._signal
+
+ def get_noSignalFor(self):
+ """
+ Returns the number of seconds elapsed without detecting a signal.
+
+ @return an integer corresponding to the number of seconds elapsed without detecting a signal
+
+ On failure, throws an exception or returns YAudioIn.NOSIGNALFOR_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YAudioIn.NOSIGNALFOR_INVALID
+ return self._noSignalFor
+
+ @staticmethod
+ def FindAudioIn(func):
+ """
+ Retrieves an audio input for a given identifier.
+ The identifier can be specified using several formats:
+ <ul>
+ <li>FunctionLogicalName</li>
+ <li>ModuleSerialNumber.FunctionIdentifier</li>
+ <li>ModuleSerialNumber.FunctionLogicalName</li>
+ <li>ModuleLogicalName.FunctionIdentifier</li>
+ <li>ModuleLogicalName.FunctionLogicalName</li>
+ </ul>
+
+ This function does not require that the audio input is online at the time
+ it is invoked. The returned object is nevertheless valid.
+ Use the method YAudioIn.isOnline() to test if the audio input is
+ indeed online at a given time. In case of ambiguity when looking for
+ an audio input by logical name, no error is notified: the first instance
+ found is returned. The search is performed first by hardware name,
+ then by logical name.
+
+ @param func : a string that uniquely characterizes the audio input
+
+ @return a YAudioIn object allowing you to drive the audio input.
+ """
+ # obj
+ obj = YFunction._FindFromCache("AudioIn", func)
+ if obj is None:
+ obj = YAudioIn(func)
+ YFunction._AddToCache("AudioIn", func, obj)
+ return obj
+
+ def nextAudioIn(self):
+ """
+ Continues the enumeration of audio inputs started using yFirstAudioIn().
+
+ @return a pointer to a YAudioIn object, corresponding to
+ an audio input currently online, or a None pointer
+ if there are no more audio inputs to enumerate.
+ """
+ hwidRef = YRefParam()
+ if YAPI.YISERR(self._nextFunction(hwidRef)):
+ return None
+ if hwidRef.value == "":
+ return None
+ return YAudioIn.FindAudioIn(hwidRef.value)
+
+#--- (end of YAudioIn implementation)
+
+#--- (AudioIn functions)
+
+ @staticmethod
+ def FirstAudioIn():
+ """
+ Starts the enumeration of audio inputs currently accessible.
+ Use the method YAudioIn.nextAudioIn() to iterate on
+ next audio inputs.
+
+ @return a pointer to a YAudioIn object, corresponding to
+ the first audio input currently online, or a None pointer
+ if there are none.
+ """
+ devRef = YRefParam()
+ neededsizeRef = YRefParam()
+ serialRef = YRefParam()
+ funcIdRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+ errmsgRef = YRefParam()
+ size = YAPI.C_INTSIZE
+ #noinspection PyTypeChecker,PyCallingNonCallable
+ p = (ctypes.c_int * 1)()
+ err = YAPI.apiGetFunctionsByClass("AudioIn", 0, p, size, neededsizeRef, errmsgRef)
+
+ if YAPI.YISERR(err) or not neededsizeRef.value:
+ return None
+
+ if YAPI.YISERR(
+ YAPI.yapiGetFunctionInfo(p[0], devRef, serialRef, funcIdRef, funcNameRef, funcValRef, errmsgRef)):
+ return None
+
+ return YAudioIn.FindAudioIn(serialRef.value + "." + funcIdRef.value)
+
+#--- (end of AudioIn functions)
diff --git a/yoctoLib.python.26380/Sources/yocto_audioout.py b/yoctoLib.python.26380/Sources/yocto_audioout.py
new file mode 100644
index 0000000..99eb3ae
--- /dev/null
+++ b/yoctoLib.python.26380/Sources/yocto_audioout.py
@@ -0,0 +1,276 @@
+#*********************************************************************
+#*
+#* $Id: yocto_audioout.py 23243 2016-02-23 14:13:12Z seb $
+#*
+#* Implements yFindAudioOut(), the high-level API for AudioOut functions
+#*
+#* - - - - - - - - - License information: - - - - - - - - -
+#*
+#* Copyright (C) 2011 and beyond by Yoctopuce Sarl, Switzerland.
+#*
+#* Yoctopuce Sarl (hereafter Licensor) grants to you a perpetual
+#* non-exclusive license to use, modify, copy and integrate this
+#* file into your software for the sole purpose of interfacing
+#* with Yoctopuce products.
+#*
+#* You may reproduce and distribute copies of this file in
+#* source or object form, as long as the sole purpose of this
+#* code is to interface with Yoctopuce products. You must retain
+#* this notice in the distributed source file.
+#*
+#* You should refer to Yoctopuce General Terms and Conditions
+#* for additional information regarding your rights and
+#* obligations.
+#*
+#* THE SOFTWARE AND DOCUMENTATION ARE PROVIDED 'AS IS' WITHOUT
+#* WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
+#* WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS
+#* FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO
+#* EVENT SHALL LICENSOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
+#* INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA,
+#* COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR
+#* SERVICES, ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT
+#* LIMITED TO ANY DEFENSE THEREOF), ANY CLAIMS FOR INDEMNITY OR
+#* CONTRIBUTION, OR OTHER SIMILAR COSTS, WHETHER ASSERTED ON THE
+#* BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE), BREACH OF
+#* WARRANTY, OR OTHERWISE.
+#*
+#*********************************************************************/
+
+
+__docformat__ = 'restructuredtext en'
+from yocto_api import *
+
+
+#--- (YAudioOut class start)
+#noinspection PyProtectedMember
+class YAudioOut(YFunction):
+ """
+ The Yoctopuce application programming interface allows you to configure the volume of the outout.
+
+ """
+#--- (end of YAudioOut class start)
+ #--- (YAudioOut return codes)
+ #--- (end of YAudioOut return codes)
+ #--- (YAudioOut dlldef)
+ #--- (end of YAudioOut dlldef)
+ #--- (YAudioOut definitions)
+ VOLUME_INVALID = YAPI.INVALID_UINT
+ VOLUMERANGE_INVALID = YAPI.INVALID_STRING
+ SIGNAL_INVALID = YAPI.INVALID_INT
+ NOSIGNALFOR_INVALID = YAPI.INVALID_INT
+ MUTE_FALSE = 0
+ MUTE_TRUE = 1
+ MUTE_INVALID = -1
+ #--- (end of YAudioOut definitions)
+
+ def __init__(self, func):
+ super(YAudioOut, self).__init__(func)
+ self._className = 'AudioOut'
+ #--- (YAudioOut attributes)
+ self._callback = None
+ self._volume = YAudioOut.VOLUME_INVALID
+ self._mute = YAudioOut.MUTE_INVALID
+ self._volumeRange = YAudioOut.VOLUMERANGE_INVALID
+ self._signal = YAudioOut.SIGNAL_INVALID
+ self._noSignalFor = YAudioOut.NOSIGNALFOR_INVALID
+ #--- (end of YAudioOut attributes)
+
+ #--- (YAudioOut implementation)
+ def _parseAttr(self, member):
+ if member.name == "volume":
+ self._volume = member.ivalue
+ return 1
+ if member.name == "mute":
+ self._mute = member.ivalue
+ return 1
+ if member.name == "volumeRange":
+ self._volumeRange = member.svalue
+ return 1
+ if member.name == "signal":
+ self._signal = member.ivalue
+ return 1
+ if member.name == "noSignalFor":
+ self._noSignalFor = member.ivalue
+ return 1
+ super(YAudioOut, self)._parseAttr(member)
+
+ def get_volume(self):
+ """
+ Returns audio output volume, in per cents.
+
+ @return an integer corresponding to audio output volume, in per cents
+
+ On failure, throws an exception or returns YAudioOut.VOLUME_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YAudioOut.VOLUME_INVALID
+ return self._volume
+
+ def set_volume(self, newval):
+ """
+ Changes audio output volume, in per cents.
+
+ @param newval : an integer corresponding to audio output volume, in per cents
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("volume", rest_val)
+
+ def get_mute(self):
+ """
+ Returns the state of the mute function.
+
+ @return either YAudioOut.MUTE_FALSE or YAudioOut.MUTE_TRUE, according to the state of the mute function
+
+ On failure, throws an exception or returns YAudioOut.MUTE_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YAudioOut.MUTE_INVALID
+ return self._mute
+
+ def set_mute(self, newval):
+ """
+ Changes the state of the mute function. Remember to call the matching module
+ saveToFlash() method to save the setting permanently.
+
+ @param newval : either YAudioOut.MUTE_FALSE or YAudioOut.MUTE_TRUE, according to the state of the mute function
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = "1" if newval > 0 else "0"
+ return self._setAttr("mute", rest_val)
+
+ def get_volumeRange(self):
+ """
+ Returns the supported volume range. The low value of the
+ range corresponds to the minimal audible value. To
+ completely mute the sound, use set_mute()
+ instead of the set_volume().
+
+ @return a string corresponding to the supported volume range
+
+ On failure, throws an exception or returns YAudioOut.VOLUMERANGE_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YAudioOut.VOLUMERANGE_INVALID
+ return self._volumeRange
+
+ def get_signal(self):
+ """
+ Returns the detected output current level.
+
+ @return an integer corresponding to the detected output current level
+
+ On failure, throws an exception or returns YAudioOut.SIGNAL_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YAudioOut.SIGNAL_INVALID
+ return self._signal
+
+ def get_noSignalFor(self):
+ """
+ Returns the number of seconds elapsed without detecting a signal.
+
+ @return an integer corresponding to the number of seconds elapsed without detecting a signal
+
+ On failure, throws an exception or returns YAudioOut.NOSIGNALFOR_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YAudioOut.NOSIGNALFOR_INVALID
+ return self._noSignalFor
+
+ @staticmethod
+ def FindAudioOut(func):
+ """
+ Retrieves an audio output for a given identifier.
+ The identifier can be specified using several formats:
+ <ul>
+ <li>FunctionLogicalName</li>
+ <li>ModuleSerialNumber.FunctionIdentifier</li>
+ <li>ModuleSerialNumber.FunctionLogicalName</li>
+ <li>ModuleLogicalName.FunctionIdentifier</li>
+ <li>ModuleLogicalName.FunctionLogicalName</li>
+ </ul>
+
+ This function does not require that the audio output is online at the time
+ it is invoked. The returned object is nevertheless valid.
+ Use the method YAudioOut.isOnline() to test if the audio output is
+ indeed online at a given time. In case of ambiguity when looking for
+ an audio output by logical name, no error is notified: the first instance
+ found is returned. The search is performed first by hardware name,
+ then by logical name.
+
+ @param func : a string that uniquely characterizes the audio output
+
+ @return a YAudioOut object allowing you to drive the audio output.
+ """
+ # obj
+ obj = YFunction._FindFromCache("AudioOut", func)
+ if obj is None:
+ obj = YAudioOut(func)
+ YFunction._AddToCache("AudioOut", func, obj)
+ return obj
+
+ def nextAudioOut(self):
+ """
+ Continues the enumeration of audio outputs started using yFirstAudioOut().
+
+ @return a pointer to a YAudioOut object, corresponding to
+ an audio output currently online, or a None pointer
+ if there are no more audio outputs to enumerate.
+ """
+ hwidRef = YRefParam()
+ if YAPI.YISERR(self._nextFunction(hwidRef)):
+ return None
+ if hwidRef.value == "":
+ return None
+ return YAudioOut.FindAudioOut(hwidRef.value)
+
+#--- (end of YAudioOut implementation)
+
+#--- (AudioOut functions)
+
+ @staticmethod
+ def FirstAudioOut():
+ """
+ Starts the enumeration of audio outputs currently accessible.
+ Use the method YAudioOut.nextAudioOut() to iterate on
+ next audio outputs.
+
+ @return a pointer to a YAudioOut object, corresponding to
+ the first audio output currently online, or a None pointer
+ if there are none.
+ """
+ devRef = YRefParam()
+ neededsizeRef = YRefParam()
+ serialRef = YRefParam()
+ funcIdRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+ errmsgRef = YRefParam()
+ size = YAPI.C_INTSIZE
+ #noinspection PyTypeChecker,PyCallingNonCallable
+ p = (ctypes.c_int * 1)()
+ err = YAPI.apiGetFunctionsByClass("AudioOut", 0, p, size, neededsizeRef, errmsgRef)
+
+ if YAPI.YISERR(err) or not neededsizeRef.value:
+ return None
+
+ if YAPI.YISERR(
+ YAPI.yapiGetFunctionInfo(p[0], devRef, serialRef, funcIdRef, funcNameRef, funcValRef, errmsgRef)):
+ return None
+
+ return YAudioOut.FindAudioOut(serialRef.value + "." + funcIdRef.value)
+
+#--- (end of AudioOut functions)
diff --git a/yoctoLib.python.26380/Sources/yocto_bluetoothlink.py b/yoctoLib.python.26380/Sources/yocto_bluetoothlink.py
new file mode 100644
index 0000000..d61781a
--- /dev/null
+++ b/yoctoLib.python.26380/Sources/yocto_bluetoothlink.py
@@ -0,0 +1,438 @@
+#*********************************************************************
+#*
+#* $Id: yocto_bluetoothlink.py 23243 2016-02-23 14:13:12Z seb $
+#*
+#* Implements yFindBluetoothLink(), the high-level API for BluetoothLink functions
+#*
+#* - - - - - - - - - License information: - - - - - - - - -
+#*
+#* Copyright (C) 2011 and beyond by Yoctopuce Sarl, Switzerland.
+#*
+#* Yoctopuce Sarl (hereafter Licensor) grants to you a perpetual
+#* non-exclusive license to use, modify, copy and integrate this
+#* file into your software for the sole purpose of interfacing
+#* with Yoctopuce products.
+#*
+#* You may reproduce and distribute copies of this file in
+#* source or object form, as long as the sole purpose of this
+#* code is to interface with Yoctopuce products. You must retain
+#* this notice in the distributed source file.
+#*
+#* You should refer to Yoctopuce General Terms and Conditions
+#* for additional information regarding your rights and
+#* obligations.
+#*
+#* THE SOFTWARE AND DOCUMENTATION ARE PROVIDED 'AS IS' WITHOUT
+#* WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
+#* WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS
+#* FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO
+#* EVENT SHALL LICENSOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
+#* INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA,
+#* COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR
+#* SERVICES, ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT
+#* LIMITED TO ANY DEFENSE THEREOF), ANY CLAIMS FOR INDEMNITY OR
+#* CONTRIBUTION, OR OTHER SIMILAR COSTS, WHETHER ASSERTED ON THE
+#* BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE), BREACH OF
+#* WARRANTY, OR OTHERWISE.
+#*
+#*********************************************************************/
+
+
+__docformat__ = 'restructuredtext en'
+from yocto_api import *
+
+
+#--- (YBluetoothLink class start)
+#noinspection PyProtectedMember
+class YBluetoothLink(YFunction):
+ """
+ BluetoothLink function provides control over bluetooth link
+ and status for devices that are bluetooth-enabled.
+
+ """
+#--- (end of YBluetoothLink class start)
+ #--- (YBluetoothLink return codes)
+ #--- (end of YBluetoothLink return codes)
+ #--- (YBluetoothLink dlldef)
+ #--- (end of YBluetoothLink dlldef)
+ #--- (YBluetoothLink definitions)
+ OWNADDRESS_INVALID = YAPI.INVALID_STRING
+ PAIRINGPIN_INVALID = YAPI.INVALID_STRING
+ REMOTEADDRESS_INVALID = YAPI.INVALID_STRING
+ REMOTENAME_INVALID = YAPI.INVALID_STRING
+ PREAMPLIFIER_INVALID = YAPI.INVALID_UINT
+ VOLUME_INVALID = YAPI.INVALID_UINT
+ LINKQUALITY_INVALID = YAPI.INVALID_UINT
+ COMMAND_INVALID = YAPI.INVALID_STRING
+ MUTE_FALSE = 0
+ MUTE_TRUE = 1
+ MUTE_INVALID = -1
+ LINKSTATE_DOWN = 0
+ LINKSTATE_FREE = 1
+ LINKSTATE_SEARCH = 2
+ LINKSTATE_EXISTS = 3
+ LINKSTATE_LINKED = 4
+ LINKSTATE_PLAY = 5
+ LINKSTATE_INVALID = -1
+ #--- (end of YBluetoothLink definitions)
+
+ def __init__(self, func):
+ super(YBluetoothLink, self).__init__(func)
+ self._className = 'BluetoothLink'
+ #--- (YBluetoothLink attributes)
+ self._callback = None
+ self._ownAddress = YBluetoothLink.OWNADDRESS_INVALID
+ self._pairingPin = YBluetoothLink.PAIRINGPIN_INVALID
+ self._remoteAddress = YBluetoothLink.REMOTEADDRESS_INVALID
+ self._remoteName = YBluetoothLink.REMOTENAME_INVALID
+ self._mute = YBluetoothLink.MUTE_INVALID
+ self._preAmplifier = YBluetoothLink.PREAMPLIFIER_INVALID
+ self._volume = YBluetoothLink.VOLUME_INVALID
+ self._linkState = YBluetoothLink.LINKSTATE_INVALID
+ self._linkQuality = YBluetoothLink.LINKQUALITY_INVALID
+ self._command = YBluetoothLink.COMMAND_INVALID
+ #--- (end of YBluetoothLink attributes)
+
+ #--- (YBluetoothLink implementation)
+ def _parseAttr(self, member):
+ if member.name == "ownAddress":
+ self._ownAddress = member.svalue
+ return 1
+ if member.name == "pairingPin":
+ self._pairingPin = member.svalue
+ return 1
+ if member.name == "remoteAddress":
+ self._remoteAddress = member.svalue
+ return 1
+ if member.name == "remoteName":
+ self._remoteName = member.svalue
+ return 1
+ if member.name == "mute":
+ self._mute = member.ivalue
+ return 1
+ if member.name == "preAmplifier":
+ self._preAmplifier = member.ivalue
+ return 1
+ if member.name == "volume":
+ self._volume = member.ivalue
+ return 1
+ if member.name == "linkState":
+ self._linkState = member.ivalue
+ return 1
+ if member.name == "linkQuality":
+ self._linkQuality = member.ivalue
+ return 1
+ if member.name == "command":
+ self._command = member.svalue
+ return 1
+ super(YBluetoothLink, self)._parseAttr(member)
+
+ def get_ownAddress(self):
+ """
+ Returns the MAC-48 address of the bluetooth interface, which is unique on the bluetooth network.
+
+ @return a string corresponding to the MAC-48 address of the bluetooth interface, which is unique on
+ the bluetooth network
+
+ On failure, throws an exception or returns YBluetoothLink.OWNADDRESS_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YBluetoothLink.OWNADDRESS_INVALID
+ return self._ownAddress
+
+ def get_pairingPin(self):
+ """
+ Returns an opaque string if a PIN code has been configured in the device to access
+ the SIM card, or an empty string if none has been configured or if the code provided
+ was rejected by the SIM card.
+
+ @return a string corresponding to an opaque string if a PIN code has been configured in the device to access
+ the SIM card, or an empty string if none has been configured or if the code provided
+ was rejected by the SIM card
+
+ On failure, throws an exception or returns YBluetoothLink.PAIRINGPIN_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YBluetoothLink.PAIRINGPIN_INVALID
+ return self._pairingPin
+
+ def set_pairingPin(self, newval):
+ """
+ Changes the PIN code used by the module for bluetooth pairing.
+ Remember to call the saveToFlash() method of the module to save the
+ new value in the device flash.
+
+ @param newval : a string corresponding to the PIN code used by the module for bluetooth pairing
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = newval
+ return self._setAttr("pairingPin", rest_val)
+
+ def get_remoteAddress(self):
+ """
+ Returns the MAC-48 address of the remote device to connect to.
+
+ @return a string corresponding to the MAC-48 address of the remote device to connect to
+
+ On failure, throws an exception or returns YBluetoothLink.REMOTEADDRESS_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YBluetoothLink.REMOTEADDRESS_INVALID
+ return self._remoteAddress
+
+ def set_remoteAddress(self, newval):
+ """
+ Changes the MAC-48 address defining which remote device to connect to.
+
+ @param newval : a string corresponding to the MAC-48 address defining which remote device to connect to
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = newval
+ return self._setAttr("remoteAddress", rest_val)
+
+ def get_remoteName(self):
+ """
+ Returns the bluetooth name the remote device, if found on the bluetooth network.
+
+ @return a string corresponding to the bluetooth name the remote device, if found on the bluetooth network
+
+ On failure, throws an exception or returns YBluetoothLink.REMOTENAME_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YBluetoothLink.REMOTENAME_INVALID
+ return self._remoteName
+
+ def get_mute(self):
+ """
+ Returns the state of the mute function.
+
+ @return either YBluetoothLink.MUTE_FALSE or YBluetoothLink.MUTE_TRUE, according to the state of the
+ mute function
+
+ On failure, throws an exception or returns YBluetoothLink.MUTE_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YBluetoothLink.MUTE_INVALID
+ return self._mute
+
+ def set_mute(self, newval):
+ """
+ Changes the state of the mute function. Remember to call the matching module
+ saveToFlash() method to save the setting permanently.
+
+ @param newval : either YBluetoothLink.MUTE_FALSE or YBluetoothLink.MUTE_TRUE, according to the
+ state of the mute function
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = "1" if newval > 0 else "0"
+ return self._setAttr("mute", rest_val)
+
+ def get_preAmplifier(self):
+ """
+ Returns the audio pre-amplifier volume, in per cents.
+
+ @return an integer corresponding to the audio pre-amplifier volume, in per cents
+
+ On failure, throws an exception or returns YBluetoothLink.PREAMPLIFIER_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YBluetoothLink.PREAMPLIFIER_INVALID
+ return self._preAmplifier
+
+ def set_preAmplifier(self, newval):
+ """
+ Changes the audio pre-amplifier volume, in per cents.
+
+ @param newval : an integer corresponding to the audio pre-amplifier volume, in per cents
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("preAmplifier", rest_val)
+
+ def get_volume(self):
+ """
+ Returns the connected headset volume, in per cents.
+
+ @return an integer corresponding to the connected headset volume, in per cents
+
+ On failure, throws an exception or returns YBluetoothLink.VOLUME_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YBluetoothLink.VOLUME_INVALID
+ return self._volume
+
+ def set_volume(self, newval):
+ """
+ Changes the connected headset volume, in per cents.
+
+ @param newval : an integer corresponding to the connected headset volume, in per cents
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("volume", rest_val)
+
+ def get_linkState(self):
+ """
+ Returns the bluetooth link state.
+
+ @return a value among YBluetoothLink.LINKSTATE_DOWN, YBluetoothLink.LINKSTATE_FREE,
+ YBluetoothLink.LINKSTATE_SEARCH, YBluetoothLink.LINKSTATE_EXISTS, YBluetoothLink.LINKSTATE_LINKED
+ and YBluetoothLink.LINKSTATE_PLAY corresponding to the bluetooth link state
+
+ On failure, throws an exception or returns YBluetoothLink.LINKSTATE_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YBluetoothLink.LINKSTATE_INVALID
+ return self._linkState
+
+ def get_linkQuality(self):
+ """
+ Returns the bluetooth receiver signal strength, in pourcents, or 0 if no connection is established.
+
+ @return an integer corresponding to the bluetooth receiver signal strength, in pourcents, or 0 if
+ no connection is established
+
+ On failure, throws an exception or returns YBluetoothLink.LINKQUALITY_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YBluetoothLink.LINKQUALITY_INVALID
+ return self._linkQuality
+
+ def get_command(self):
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YBluetoothLink.COMMAND_INVALID
+ return self._command
+
+ def set_command(self, newval):
+ rest_val = newval
+ return self._setAttr("command", rest_val)
+
+ @staticmethod
+ def FindBluetoothLink(func):
+ """
+ Retrieves a cellular interface for a given identifier.
+ The identifier can be specified using several formats:
+ <ul>
+ <li>FunctionLogicalName</li>
+ <li>ModuleSerialNumber.FunctionIdentifier</li>
+ <li>ModuleSerialNumber.FunctionLogicalName</li>
+ <li>ModuleLogicalName.FunctionIdentifier</li>
+ <li>ModuleLogicalName.FunctionLogicalName</li>
+ </ul>
+
+ This function does not require that the cellular interface is online at the time
+ it is invoked. The returned object is nevertheless valid.
+ Use the method YBluetoothLink.isOnline() to test if the cellular interface is
+ indeed online at a given time. In case of ambiguity when looking for
+ a cellular interface by logical name, no error is notified: the first instance
+ found is returned. The search is performed first by hardware name,
+ then by logical name.
+
+ @param func : a string that uniquely characterizes the cellular interface
+
+ @return a YBluetoothLink object allowing you to drive the cellular interface.
+ """
+ # obj
+ obj = YFunction._FindFromCache("BluetoothLink", func)
+ if obj is None:
+ obj = YBluetoothLink(func)
+ YFunction._AddToCache("BluetoothLink", func, obj)
+ return obj
+
+ def connect(self):
+ """
+ Attempt to connect to the previously selected remote device.
+
+ @return YAPI.SUCCESS when the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.set_command("C")
+
+ def disconnect(self):
+ """
+ Disconnect from the previously selected remote device.
+
+ @return YAPI.SUCCESS when the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.set_command("D")
+
+ def nextBluetoothLink(self):
+ """
+ Continues the enumeration of cellular interfaces started using yFirstBluetoothLink().
+
+ @return a pointer to a YBluetoothLink object, corresponding to
+ a cellular interface currently online, or a None pointer
+ if there are no more cellular interfaces to enumerate.
+ """
+ hwidRef = YRefParam()
+ if YAPI.YISERR(self._nextFunction(hwidRef)):
+ return None
+ if hwidRef.value == "":
+ return None
+ return YBluetoothLink.FindBluetoothLink(hwidRef.value)
+
+#--- (end of YBluetoothLink implementation)
+
+#--- (BluetoothLink functions)
+
+ @staticmethod
+ def FirstBluetoothLink():
+ """
+ Starts the enumeration of cellular interfaces currently accessible.
+ Use the method YBluetoothLink.nextBluetoothLink() to iterate on
+ next cellular interfaces.
+
+ @return a pointer to a YBluetoothLink object, corresponding to
+ the first cellular interface currently online, or a None pointer
+ if there are none.
+ """
+ devRef = YRefParam()
+ neededsizeRef = YRefParam()
+ serialRef = YRefParam()
+ funcIdRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+ errmsgRef = YRefParam()
+ size = YAPI.C_INTSIZE
+ #noinspection PyTypeChecker,PyCallingNonCallable
+ p = (ctypes.c_int * 1)()
+ err = YAPI.apiGetFunctionsByClass("BluetoothLink", 0, p, size, neededsizeRef, errmsgRef)
+
+ if YAPI.YISERR(err) or not neededsizeRef.value:
+ return None
+
+ if YAPI.YISERR(
+ YAPI.yapiGetFunctionInfo(p[0], devRef, serialRef, funcIdRef, funcNameRef, funcValRef, errmsgRef)):
+ return None
+
+ return YBluetoothLink.FindBluetoothLink(serialRef.value + "." + funcIdRef.value)
+
+#--- (end of BluetoothLink functions)
diff --git a/yoctoLib.python.26380/Sources/yocto_buzzer.py b/yoctoLib.python.26380/Sources/yocto_buzzer.py
new file mode 100644
index 0000000..5707324
--- /dev/null
+++ b/yoctoLib.python.26380/Sources/yocto_buzzer.py
@@ -0,0 +1,399 @@
+#*********************************************************************
+#*
+#* $Id: yocto_buzzer.py 23243 2016-02-23 14:13:12Z seb $
+#*
+#* Implements yFindBuzzer(), the high-level API for Buzzer functions
+#*
+#* - - - - - - - - - License information: - - - - - - - - -
+#*
+#* Copyright (C) 2011 and beyond by Yoctopuce Sarl, Switzerland.
+#*
+#* Yoctopuce Sarl (hereafter Licensor) grants to you a perpetual
+#* non-exclusive license to use, modify, copy and integrate this
+#* file into your software for the sole purpose of interfacing
+#* with Yoctopuce products.
+#*
+#* You may reproduce and distribute copies of this file in
+#* source or object form, as long as the sole purpose of this
+#* code is to interface with Yoctopuce products. You must retain
+#* this notice in the distributed source file.
+#*
+#* You should refer to Yoctopuce General Terms and Conditions
+#* for additional information regarding your rights and
+#* obligations.
+#*
+#* THE SOFTWARE AND DOCUMENTATION ARE PROVIDED 'AS IS' WITHOUT
+#* WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
+#* WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS
+#* FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO
+#* EVENT SHALL LICENSOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
+#* INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA,
+#* COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR
+#* SERVICES, ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT
+#* LIMITED TO ANY DEFENSE THEREOF), ANY CLAIMS FOR INDEMNITY OR
+#* CONTRIBUTION, OR OTHER SIMILAR COSTS, WHETHER ASSERTED ON THE
+#* BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE), BREACH OF
+#* WARRANTY, OR OTHERWISE.
+#*
+#*********************************************************************/
+
+
+__docformat__ = 'restructuredtext en'
+from yocto_api import *
+
+
+#--- (YBuzzer class start)
+#noinspection PyProtectedMember
+class YBuzzer(YFunction):
+ """
+ The Yoctopuce application programming interface allows you to
+ choose the frequency and volume at which the buzzer must sound.
+ You can also pre-program a play sequence.
+
+ """
+#--- (end of YBuzzer class start)
+ #--- (YBuzzer return codes)
+ #--- (end of YBuzzer return codes)
+ #--- (YBuzzer dlldef)
+ #--- (end of YBuzzer dlldef)
+ #--- (YBuzzer definitions)
+ FREQUENCY_INVALID = YAPI.INVALID_DOUBLE
+ VOLUME_INVALID = YAPI.INVALID_UINT
+ PLAYSEQSIZE_INVALID = YAPI.INVALID_UINT
+ PLAYSEQMAXSIZE_INVALID = YAPI.INVALID_UINT
+ PLAYSEQSIGNATURE_INVALID = YAPI.INVALID_UINT
+ COMMAND_INVALID = YAPI.INVALID_STRING
+ #--- (end of YBuzzer definitions)
+
+ def __init__(self, func):
+ super(YBuzzer, self).__init__(func)
+ self._className = 'Buzzer'
+ #--- (YBuzzer attributes)
+ self._callback = None
+ self._frequency = YBuzzer.FREQUENCY_INVALID
+ self._volume = YBuzzer.VOLUME_INVALID
+ self._playSeqSize = YBuzzer.PLAYSEQSIZE_INVALID
+ self._playSeqMaxSize = YBuzzer.PLAYSEQMAXSIZE_INVALID
+ self._playSeqSignature = YBuzzer.PLAYSEQSIGNATURE_INVALID
+ self._command = YBuzzer.COMMAND_INVALID
+ #--- (end of YBuzzer attributes)
+
+ #--- (YBuzzer implementation)
+ def _parseAttr(self, member):
+ if member.name == "frequency":
+ self._frequency = round(member.ivalue * 1000.0 / 65536.0) / 1000.0
+ return 1
+ if member.name == "volume":
+ self._volume = member.ivalue
+ return 1
+ if member.name == "playSeqSize":
+ self._playSeqSize = member.ivalue
+ return 1
+ if member.name == "playSeqMaxSize":
+ self._playSeqMaxSize = member.ivalue
+ return 1
+ if member.name == "playSeqSignature":
+ self._playSeqSignature = member.ivalue
+ return 1
+ if member.name == "command":
+ self._command = member.svalue
+ return 1
+ super(YBuzzer, self)._parseAttr(member)
+
+ def set_frequency(self, newval):
+ """
+ Changes the frequency of the signal sent to the buzzer. A zero value stops the buzzer.
+
+ @param newval : a floating point number corresponding to the frequency of the signal sent to the buzzer
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(int(round(newval * 65536.0, 1)))
+ return self._setAttr("frequency", rest_val)
+
+ def get_frequency(self):
+ """
+ Returns the frequency of the signal sent to the buzzer/speaker.
+
+ @return a floating point number corresponding to the frequency of the signal sent to the buzzer/speaker
+
+ On failure, throws an exception or returns YBuzzer.FREQUENCY_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YBuzzer.FREQUENCY_INVALID
+ return self._frequency
+
+ def get_volume(self):
+ """
+ Returns the volume of the signal sent to the buzzer/speaker.
+
+ @return an integer corresponding to the volume of the signal sent to the buzzer/speaker
+
+ On failure, throws an exception or returns YBuzzer.VOLUME_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YBuzzer.VOLUME_INVALID
+ return self._volume
+
+ def set_volume(self, newval):
+ """
+ Changes the volume of the signal sent to the buzzer/speaker.
+
+ @param newval : an integer corresponding to the volume of the signal sent to the buzzer/speaker
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("volume", rest_val)
+
+ def get_playSeqSize(self):
+ """
+ Returns the current length of the playing sequence.
+
+ @return an integer corresponding to the current length of the playing sequence
+
+ On failure, throws an exception or returns YBuzzer.PLAYSEQSIZE_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YBuzzer.PLAYSEQSIZE_INVALID
+ return self._playSeqSize
+
+ def get_playSeqMaxSize(self):
+ """
+ Returns the maximum length of the playing sequence.
+
+ @return an integer corresponding to the maximum length of the playing sequence
+
+ On failure, throws an exception or returns YBuzzer.PLAYSEQMAXSIZE_INVALID.
+ """
+ if self._cacheExpiration == datetime.datetime.fromtimestamp(0):
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YBuzzer.PLAYSEQMAXSIZE_INVALID
+ return self._playSeqMaxSize
+
+ def get_playSeqSignature(self):
+ """
+ Returns the playing sequence signature. As playing
+ sequences cannot be read from the device, this can be used
+ to detect if a specific playing sequence is already
+ programmed.
+
+ @return an integer corresponding to the playing sequence signature
+
+ On failure, throws an exception or returns YBuzzer.PLAYSEQSIGNATURE_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YBuzzer.PLAYSEQSIGNATURE_INVALID
+ return self._playSeqSignature
+
+ def get_command(self):
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YBuzzer.COMMAND_INVALID
+ return self._command
+
+ def set_command(self, newval):
+ rest_val = newval
+ return self._setAttr("command", rest_val)
+
+ @staticmethod
+ def FindBuzzer(func):
+ """
+ Retrieves a buzzer for a given identifier.
+ The identifier can be specified using several formats:
+ <ul>
+ <li>FunctionLogicalName</li>
+ <li>ModuleSerialNumber.FunctionIdentifier</li>
+ <li>ModuleSerialNumber.FunctionLogicalName</li>
+ <li>ModuleLogicalName.FunctionIdentifier</li>
+ <li>ModuleLogicalName.FunctionLogicalName</li>
+ </ul>
+
+ This function does not require that the buzzer is online at the time
+ it is invoked. The returned object is nevertheless valid.
+ Use the method YBuzzer.isOnline() to test if the buzzer is
+ indeed online at a given time. In case of ambiguity when looking for
+ a buzzer by logical name, no error is notified: the first instance
+ found is returned. The search is performed first by hardware name,
+ then by logical name.
+
+ @param func : a string that uniquely characterizes the buzzer
+
+ @return a YBuzzer object allowing you to drive the buzzer.
+ """
+ # obj
+ obj = YFunction._FindFromCache("Buzzer", func)
+ if obj is None:
+ obj = YBuzzer(func)
+ YFunction._AddToCache("Buzzer", func, obj)
+ return obj
+
+ def sendCommand(self, command):
+ # //may throw an exception
+ return self.set_command(command)
+
+ def addFreqMoveToPlaySeq(self, freq, msDelay):
+ """
+ Adds a new frequency transition to the playing sequence.
+
+ @param freq : desired frequency when the transition is completed, in Hz
+ @param msDelay : duration of the frequency transition, in milliseconds.
+
+ @return YAPI.SUCCESS if the call succeeds.
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.sendCommand("A" + str(int(freq)) + "," + str(int(msDelay)))
+
+ def addPulseToPlaySeq(self, freq, msDuration):
+ """
+ Adds a pulse to the playing sequence.
+
+ @param freq : pulse frequency, in Hz
+ @param msDuration : pulse duration, in milliseconds.
+
+ @return YAPI.SUCCESS if the call succeeds.
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.sendCommand("B" + str(int(freq)) + "," + str(int(msDuration)))
+
+ def addVolMoveToPlaySeq(self, volume, msDuration):
+ """
+ Adds a new volume transition to the playing sequence. Frequency stays untouched:
+ if frequency is at zero, the transition has no effect.
+
+ @param volume : desired volume when the transition is completed, as a percentage.
+ @param msDuration : duration of the volume transition, in milliseconds.
+
+ @return YAPI.SUCCESS if the call succeeds.
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.sendCommand("C" + str(int(volume)) + "," + str(int(msDuration)))
+
+ def startPlaySeq(self):
+ """
+ Starts the preprogrammed playing sequence. The sequence
+ runs in loop until it is stopped by stopPlaySeq or an explicit
+ change.
+
+ @return YAPI.SUCCESS if the call succeeds.
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.sendCommand("S")
+
+ def stopPlaySeq(self):
+ """
+ Stops the preprogrammed playing sequence and sets the frequency to zero.
+
+ @return YAPI.SUCCESS if the call succeeds.
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.sendCommand("X")
+
+ def resetPlaySeq(self):
+ """
+ Resets the preprogrammed playing sequence and sets the frequency to zero.
+
+ @return YAPI.SUCCESS if the call succeeds.
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.sendCommand("Z")
+
+ def pulse(self, frequency, duration):
+ """
+ Activates the buzzer for a short duration.
+
+ @param frequency : pulse frequency, in hertz
+ @param duration : pulse duration in millseconds
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.set_command("P" + str(int(frequency)) + "," + str(int(duration)))
+
+ def freqMove(self, frequency, duration):
+ """
+ Makes the buzzer frequency change over a period of time.
+
+ @param frequency : frequency to reach, in hertz. A frequency under 25Hz stops the buzzer.
+ @param duration : pulse duration in millseconds
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.set_command("F" + str(int(frequency)) + "," + str(int(duration)))
+
+ def volumeMove(self, volume, duration):
+ """
+ Makes the buzzer volume change over a period of time, frequency stays untouched.
+
+ @param volume : volume to reach in %
+ @param duration : change duration in millseconds
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.set_command("V" + str(int(volume)) + "," + str(int(duration)))
+
+ def nextBuzzer(self):
+ """
+ Continues the enumeration of buzzers started using yFirstBuzzer().
+
+ @return a pointer to a YBuzzer object, corresponding to
+ a buzzer currently online, or a None pointer
+ if there are no more buzzers to enumerate.
+ """
+ hwidRef = YRefParam()
+ if YAPI.YISERR(self._nextFunction(hwidRef)):
+ return None
+ if hwidRef.value == "":
+ return None
+ return YBuzzer.FindBuzzer(hwidRef.value)
+
+#--- (end of YBuzzer implementation)
+
+#--- (Buzzer functions)
+
+ @staticmethod
+ def FirstBuzzer():
+ """
+ Starts the enumeration of buzzers currently accessible.
+ Use the method YBuzzer.nextBuzzer() to iterate on
+ next buzzers.
+
+ @return a pointer to a YBuzzer object, corresponding to
+ the first buzzer currently online, or a None pointer
+ if there are none.
+ """
+ devRef = YRefParam()
+ neededsizeRef = YRefParam()
+ serialRef = YRefParam()
+ funcIdRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+ errmsgRef = YRefParam()
+ size = YAPI.C_INTSIZE
+ #noinspection PyTypeChecker,PyCallingNonCallable
+ p = (ctypes.c_int * 1)()
+ err = YAPI.apiGetFunctionsByClass("Buzzer", 0, p, size, neededsizeRef, errmsgRef)
+
+ if YAPI.YISERR(err) or not neededsizeRef.value:
+ return None
+
+ if YAPI.YISERR(
+ YAPI.yapiGetFunctionInfo(p[0], devRef, serialRef, funcIdRef, funcNameRef, funcValRef, errmsgRef)):
+ return None
+
+ return YBuzzer.FindBuzzer(serialRef.value + "." + funcIdRef.value)
+
+#--- (end of Buzzer functions)
diff --git a/yoctoLib.python.26380/Sources/yocto_carbondioxide.py b/yoctoLib.python.26380/Sources/yocto_carbondioxide.py
new file mode 100644
index 0000000..c738876
--- /dev/null
+++ b/yoctoLib.python.26380/Sources/yocto_carbondioxide.py
@@ -0,0 +1,252 @@
+#*********************************************************************
+#*
+#* $Id: yocto_carbondioxide.py 25833 2016-11-08 16:55:24Z seb $
+#*
+#* Implements yFindCarbonDioxide(), the high-level API for CarbonDioxide functions
+#*
+#* - - - - - - - - - License information: - - - - - - - - -
+#*
+#* Copyright (C) 2011 and beyond by Yoctopuce Sarl, Switzerland.
+#*
+#* Yoctopuce Sarl (hereafter Licensor) grants to you a perpetual
+#* non-exclusive license to use, modify, copy and integrate this
+#* file into your software for the sole purpose of interfacing
+#* with Yoctopuce products.
+#*
+#* You may reproduce and distribute copies of this file in
+#* source or object form, as long as the sole purpose of this
+#* code is to interface with Yoctopuce products. You must retain
+#* this notice in the distributed source file.
+#*
+#* You should refer to Yoctopuce General Terms and Conditions
+#* for additional information regarding your rights and
+#* obligations.
+#*
+#* THE SOFTWARE AND DOCUMENTATION ARE PROVIDED 'AS IS' WITHOUT
+#* WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
+#* WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS
+#* FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO
+#* EVENT SHALL LICENSOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
+#* INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA,
+#* COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR
+#* SERVICES, ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT
+#* LIMITED TO ANY DEFENSE THEREOF), ANY CLAIMS FOR INDEMNITY OR
+#* CONTRIBUTION, OR OTHER SIMILAR COSTS, WHETHER ASSERTED ON THE
+#* BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE), BREACH OF
+#* WARRANTY, OR OTHERWISE.
+#*
+#*********************************************************************/
+
+
+__docformat__ = 'restructuredtext en'
+from yocto_api import *
+
+
+#--- (YCarbonDioxide class start)
+#noinspection PyProtectedMember
+class YCarbonDioxide(YSensor):
+ """
+ The Yoctopuce class YCarbonDioxide allows you to read and configure Yoctopuce CO2
+ sensors. It inherits from YSensor class the core functions to read measurements,
+ register callback functions, access to the autonomous datalogger.
+ This class adds the ability to perform manual calibration if reuired.
+
+ """
+#--- (end of YCarbonDioxide class start)
+ #--- (YCarbonDioxide return codes)
+ #--- (end of YCarbonDioxide return codes)
+ #--- (YCarbonDioxide dlldef)
+ #--- (end of YCarbonDioxide dlldef)
+ #--- (YCarbonDioxide definitions)
+ ABCPERIOD_INVALID = YAPI.INVALID_INT
+ COMMAND_INVALID = YAPI.INVALID_STRING
+ #--- (end of YCarbonDioxide definitions)
+
+ def __init__(self, func):
+ super(YCarbonDioxide, self).__init__(func)
+ self._className = 'CarbonDioxide'
+ #--- (YCarbonDioxide attributes)
+ self._callback = None
+ self._abcPeriod = YCarbonDioxide.ABCPERIOD_INVALID
+ self._command = YCarbonDioxide.COMMAND_INVALID
+ #--- (end of YCarbonDioxide attributes)
+
+ #--- (YCarbonDioxide implementation)
+ def _parseAttr(self, member):
+ if member.name == "abcPeriod":
+ self._abcPeriod = member.ivalue
+ return 1
+ if member.name == "command":
+ self._command = member.svalue
+ return 1
+ super(YCarbonDioxide, self)._parseAttr(member)
+
+ def get_abcPeriod(self):
+ """
+ Returns the Automatic Baseline Calibration period, in hours. A negative value
+ means that automatic baseline calibration is disabled.
+
+ @return an integer corresponding to the Automatic Baseline Calibration period, in hours
+
+ On failure, throws an exception or returns YCarbonDioxide.ABCPERIOD_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YCarbonDioxide.ABCPERIOD_INVALID
+ return self._abcPeriod
+
+ def set_abcPeriod(self, newval):
+ """
+ Modifies Automatic Baseline Calibration period, in hours. If you need
+ to disable automatic baseline calibration (for instance when using the
+ sensor in an environment that is constantly above 400ppm CO2), set the
+ period to -1. Remember to call the saveToFlash() method of the
+ module if the modification must be kept.
+
+ @param newval : an integer
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("abcPeriod", rest_val)
+
+ def get_command(self):
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YCarbonDioxide.COMMAND_INVALID
+ return self._command
+
+ def set_command(self, newval):
+ rest_val = newval
+ return self._setAttr("command", rest_val)
+
+ @staticmethod
+ def FindCarbonDioxide(func):
+ """
+ Retrieves a CO2 sensor for a given identifier.
+ The identifier can be specified using several formats:
+ <ul>
+ <li>FunctionLogicalName</li>
+ <li>ModuleSerialNumber.FunctionIdentifier</li>
+ <li>ModuleSerialNumber.FunctionLogicalName</li>
+ <li>ModuleLogicalName.FunctionIdentifier</li>
+ <li>ModuleLogicalName.FunctionLogicalName</li>
+ </ul>
+
+ This function does not require that the CO2 sensor is online at the time
+ it is invoked. The returned object is nevertheless valid.
+ Use the method YCarbonDioxide.isOnline() to test if the CO2 sensor is
+ indeed online at a given time. In case of ambiguity when looking for
+ a CO2 sensor by logical name, no error is notified: the first instance
+ found is returned. The search is performed first by hardware name,
+ then by logical name.
+
+ @param func : a string that uniquely characterizes the CO2 sensor
+
+ @return a YCarbonDioxide object allowing you to drive the CO2 sensor.
+ """
+ # obj
+ obj = YFunction._FindFromCache("CarbonDioxide", func)
+ if obj is None:
+ obj = YCarbonDioxide(func)
+ YFunction._AddToCache("CarbonDioxide", func, obj)
+ return obj
+
+ def triggerBaselineCalibration(self):
+ """
+ Triggers a baseline calibration at standard CO2 ambiant level (400ppm).
+ It is normally not necessary to manually calibrate the sensor, because
+ the built-in automatic baseline calibration procedure will automatically
+ fix any long-term drift based on the lowest level of CO2 observed over the
+ automatic calibration period. However, if you disable automatic baseline
+ calibration, you may want to manually trigger a calibration from time to
+ time. Before starting a baseline calibration, make sure to put the sensor
+ in a standard environment (e.g. outside in fresh air) at around 400ppm.
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.set_command("BC")
+
+ def triggetBaselineCalibration(self):
+ # // may throw an exception
+ return self.triggerBaselineCalibration()
+
+ def triggerZeroCalibration(self):
+ """
+ Triggers a zero calibration of the sensor on carbon dioxide-free air.
+ It is normally not necessary to manually calibrate the sensor, because
+ the built-in automatic baseline calibration procedure will automatically
+ fix any long-term drift based on the lowest level of CO2 observed over the
+ automatic calibration period. However, if you disable automatic baseline
+ calibration, you may want to manually trigger a calibration from time to
+ time. Before starting a zero calibration, you should circulate carbon
+ dioxide-free air within the sensor for a minute or two, using a small pipe
+ connected to the sensor. Please contact support@yoctopuce.com for more details
+ on the zero calibration procedure.
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.set_command("ZC")
+
+ def triggetZeroCalibration(self):
+ # // may throw an exception
+ return self.triggerZeroCalibration()
+
+ def nextCarbonDioxide(self):
+ """
+ Continues the enumeration of CO2 sensors started using yFirstCarbonDioxide().
+
+ @return a pointer to a YCarbonDioxide object, corresponding to
+ a CO2 sensor currently online, or a None pointer
+ if there are no more CO2 sensors to enumerate.
+ """
+ hwidRef = YRefParam()
+ if YAPI.YISERR(self._nextFunction(hwidRef)):
+ return None
+ if hwidRef.value == "":
+ return None
+ return YCarbonDioxide.FindCarbonDioxide(hwidRef.value)
+
+#--- (end of YCarbonDioxide implementation)
+
+#--- (CarbonDioxide functions)
+
+ @staticmethod
+ def FirstCarbonDioxide():
+ """
+ Starts the enumeration of CO2 sensors currently accessible.
+ Use the method YCarbonDioxide.nextCarbonDioxide() to iterate on
+ next CO2 sensors.
+
+ @return a pointer to a YCarbonDioxide object, corresponding to
+ the first CO2 sensor currently online, or a None pointer
+ if there are none.
+ """
+ devRef = YRefParam()
+ neededsizeRef = YRefParam()
+ serialRef = YRefParam()
+ funcIdRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+ errmsgRef = YRefParam()
+ size = YAPI.C_INTSIZE
+ #noinspection PyTypeChecker,PyCallingNonCallable
+ p = (ctypes.c_int * 1)()
+ err = YAPI.apiGetFunctionsByClass("CarbonDioxide", 0, p, size, neededsizeRef, errmsgRef)
+
+ if YAPI.YISERR(err) or not neededsizeRef.value:
+ return None
+
+ if YAPI.YISERR(
+ YAPI.yapiGetFunctionInfo(p[0], devRef, serialRef, funcIdRef, funcNameRef, funcValRef, errmsgRef)):
+ return None
+
+ return YCarbonDioxide.FindCarbonDioxide(serialRef.value + "." + funcIdRef.value)
+
+#--- (end of CarbonDioxide functions)
diff --git a/yoctoLib.python.26380/Sources/yocto_cellular.py b/yoctoLib.python.26380/Sources/yocto_cellular.py
new file mode 100644
index 0000000..94a52b9
--- /dev/null
+++ b/yoctoLib.python.26380/Sources/yocto_cellular.py
@@ -0,0 +1,874 @@
+#*********************************************************************
+#*
+#* $Id: yocto_cellular.py 25609 2016-10-19 12:37:17Z seb $
+#*
+#* Implements yFindCellular(), the high-level API for Cellular functions
+#*
+#* - - - - - - - - - License information: - - - - - - - - -
+#*
+#* Copyright (C) 2011 and beyond by Yoctopuce Sarl, Switzerland.
+#*
+#* Yoctopuce Sarl (hereafter Licensor) grants to you a perpetual
+#* non-exclusive license to use, modify, copy and integrate this
+#* file into your software for the sole purpose of interfacing
+#* with Yoctopuce products.
+#*
+#* You may reproduce and distribute copies of this file in
+#* source or object form, as long as the sole purpose of this
+#* code is to interface with Yoctopuce products. You must retain
+#* this notice in the distributed source file.
+#*
+#* You should refer to Yoctopuce General Terms and Conditions
+#* for additional information regarding your rights and
+#* obligations.
+#*
+#* THE SOFTWARE AND DOCUMENTATION ARE PROVIDED 'AS IS' WITHOUT
+#* WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
+#* WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS
+#* FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO
+#* EVENT SHALL LICENSOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
+#* INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA,
+#* COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR
+#* SERVICES, ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT
+#* LIMITED TO ANY DEFENSE THEREOF), ANY CLAIMS FOR INDEMNITY OR
+#* CONTRIBUTION, OR OTHER SIMILAR COSTS, WHETHER ASSERTED ON THE
+#* BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE), BREACH OF
+#* WARRANTY, OR OTHERWISE.
+#*
+#*********************************************************************/
+
+
+__docformat__ = 'restructuredtext en'
+from yocto_api import *
+
+
+#--- (generated code: YCellRecord class start)
+#noinspection PyProtectedMember
+class YCellRecord(object):
+#--- (end of generated code: YCellRecord class start)
+ #--- (generated code: YCellRecord return codes)
+ #--- (end of generated code: YCellRecord return codes)
+ #--- (generated code: YCellRecord dlldef)
+ #--- (end of generated code: YCellRecord dlldef)
+ #--- (generated code: YCellRecord definitions)
+ #--- (end of generated code: YCellRecord definitions)
+
+ def __init__(self, int_mcc, int_mnc, int_lac, int_cellId, int_dbm, int_tad, str_oper):
+ #--- (generated code: YCellRecord attributes)
+ self._oper = ''
+ self._mcc = 0
+ self._mnc = 0
+ self._lac = 0
+ self._cid = 0
+ self._dbm = 0
+ self._tad = 0
+ #--- (end of generated code: YCellRecord attributes)
+ self._oper = str_oper
+ self._mcc = int_mcc
+ self._mnc = int_mnc
+ self._lac = int_lac
+ self._cid = int_cellId
+ self._dbm = int_dbm
+ self._tad = int_tad
+
+#--- (generated code: YCellRecord implementation)
+ def get_cellOperator(self):
+ return self._oper
+
+ def get_mobileCountryCode(self):
+ return self._mcc
+
+ def get_mobileNetworkCode(self):
+ return self._mnc
+
+ def get_locationAreaCode(self):
+ return self._lac
+
+ def get_cellId(self):
+ return self._cid
+
+ def get_signalStrength(self):
+ return self._dbm
+
+ def get_timingAdvance(self):
+ return self._tad
+
+#--- (end of generated code: YCellRecord implementation)
+
+#--- (generated code: CellRecord functions)
+#--- (end of generated code: CellRecord functions)
+
+
+#--- (generated code: YCellular class start)
+#noinspection PyProtectedMember
+class YCellular(YFunction):
+ """
+ YCellular functions provides control over cellular network parameters
+ and status for devices that are GSM-enabled.
+
+ """
+#--- (end of generated code: YCellular class start)
+ #--- (generated code: YCellular return codes)
+ #--- (end of generated code: YCellular return codes)
+ #--- (generated code: YCellular dlldef)
+ #--- (end of generated code: YCellular dlldef)
+ #--- (generated code: YCellular definitions)
+ LINKQUALITY_INVALID = YAPI.INVALID_UINT
+ CELLOPERATOR_INVALID = YAPI.INVALID_STRING
+ CELLIDENTIFIER_INVALID = YAPI.INVALID_STRING
+ IMSI_INVALID = YAPI.INVALID_STRING
+ MESSAGE_INVALID = YAPI.INVALID_STRING
+ PIN_INVALID = YAPI.INVALID_STRING
+ LOCKEDOPERATOR_INVALID = YAPI.INVALID_STRING
+ APN_INVALID = YAPI.INVALID_STRING
+ APNSECRET_INVALID = YAPI.INVALID_STRING
+ PINGINTERVAL_INVALID = YAPI.INVALID_UINT
+ DATASENT_INVALID = YAPI.INVALID_UINT
+ DATARECEIVED_INVALID = YAPI.INVALID_UINT
+ COMMAND_INVALID = YAPI.INVALID_STRING
+ CELLTYPE_GPRS = 0
+ CELLTYPE_EGPRS = 1
+ CELLTYPE_WCDMA = 2
+ CELLTYPE_HSDPA = 3
+ CELLTYPE_NONE = 4
+ CELLTYPE_CDMA = 5
+ CELLTYPE_INVALID = -1
+ AIRPLANEMODE_OFF = 0
+ AIRPLANEMODE_ON = 1
+ AIRPLANEMODE_INVALID = -1
+ ENABLEDATA_HOMENETWORK = 0
+ ENABLEDATA_ROAMING = 1
+ ENABLEDATA_NEVER = 2
+ ENABLEDATA_NEUTRALITY = 3
+ ENABLEDATA_INVALID = -1
+ #--- (end of generated code: YCellular definitions)
+
+ def __init__(self, func):
+ super(YCellular, self).__init__(func)
+ self._className = 'Cellular'
+ #--- (generated code: YCellular attributes)
+ self._callback = None
+ self._linkQuality = YCellular.LINKQUALITY_INVALID
+ self._cellOperator = YCellular.CELLOPERATOR_INVALID
+ self._cellIdentifier = YCellular.CELLIDENTIFIER_INVALID
+ self._cellType = YCellular.CELLTYPE_INVALID
+ self._imsi = YCellular.IMSI_INVALID
+ self._message = YCellular.MESSAGE_INVALID
+ self._pin = YCellular.PIN_INVALID
+ self._lockedOperator = YCellular.LOCKEDOPERATOR_INVALID
+ self._airplaneMode = YCellular.AIRPLANEMODE_INVALID
+ self._enableData = YCellular.ENABLEDATA_INVALID
+ self._apn = YCellular.APN_INVALID
+ self._apnSecret = YCellular.APNSECRET_INVALID
+ self._pingInterval = YCellular.PINGINTERVAL_INVALID
+ self._dataSent = YCellular.DATASENT_INVALID
+ self._dataReceived = YCellular.DATARECEIVED_INVALID
+ self._command = YCellular.COMMAND_INVALID
+ #--- (end of generated code: YCellular attributes)
+
+ #--- (generated code: YCellular implementation)
+ def _parseAttr(self, member):
+ if member.name == "linkQuality":
+ self._linkQuality = member.ivalue
+ return 1
+ if member.name == "cellOperator":
+ self._cellOperator = member.svalue
+ return 1
+ if member.name == "cellIdentifier":
+ self._cellIdentifier = member.svalue
+ return 1
+ if member.name == "cellType":
+ self._cellType = member.ivalue
+ return 1
+ if member.name == "imsi":
+ self._imsi = member.svalue
+ return 1
+ if member.name == "message":
+ self._message = member.svalue
+ return 1
+ if member.name == "pin":
+ self._pin = member.svalue
+ return 1
+ if member.name == "lockedOperator":
+ self._lockedOperator = member.svalue
+ return 1
+ if member.name == "airplaneMode":
+ self._airplaneMode = member.ivalue
+ return 1
+ if member.name == "enableData":
+ self._enableData = member.ivalue
+ return 1
+ if member.name == "apn":
+ self._apn = member.svalue
+ return 1
+ if member.name == "apnSecret":
+ self._apnSecret = member.svalue
+ return 1
+ if member.name == "pingInterval":
+ self._pingInterval = member.ivalue
+ return 1
+ if member.name == "dataSent":
+ self._dataSent = member.ivalue
+ return 1
+ if member.name == "dataReceived":
+ self._dataReceived = member.ivalue
+ return 1
+ if member.name == "command":
+ self._command = member.svalue
+ return 1
+ super(YCellular, self)._parseAttr(member)
+
+ def get_linkQuality(self):
+ """
+ Returns the link quality, expressed in percent.
+
+ @return an integer corresponding to the link quality, expressed in percent
+
+ On failure, throws an exception or returns YCellular.LINKQUALITY_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YCellular.LINKQUALITY_INVALID
+ return self._linkQuality
+
+ def get_cellOperator(self):
+ """
+ Returns the name of the cell operator currently in use.
+
+ @return a string corresponding to the name of the cell operator currently in use
+
+ On failure, throws an exception or returns YCellular.CELLOPERATOR_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YCellular.CELLOPERATOR_INVALID
+ return self._cellOperator
+
+ def get_cellIdentifier(self):
+ """
+ Returns the unique identifier of the cellular antenna in use: MCC, MNC, LAC and Cell ID.
+
+ @return a string corresponding to the unique identifier of the cellular antenna in use: MCC, MNC,
+ LAC and Cell ID
+
+ On failure, throws an exception or returns YCellular.CELLIDENTIFIER_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YCellular.CELLIDENTIFIER_INVALID
+ return self._cellIdentifier
+
+ def get_cellType(self):
+ """
+ Active cellular connection type.
+
+ @return a value among YCellular.CELLTYPE_GPRS, YCellular.CELLTYPE_EGPRS, YCellular.CELLTYPE_WCDMA,
+ YCellular.CELLTYPE_HSDPA, YCellular.CELLTYPE_NONE and YCellular.CELLTYPE_CDMA
+
+ On failure, throws an exception or returns YCellular.CELLTYPE_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YCellular.CELLTYPE_INVALID
+ return self._cellType
+
+ def get_imsi(self):
+ """
+ Returns an opaque string if a PIN code has been configured in the device to access
+ the SIM card, or an empty string if none has been configured or if the code provided
+ was rejected by the SIM card.
+
+ @return a string corresponding to an opaque string if a PIN code has been configured in the device to access
+ the SIM card, or an empty string if none has been configured or if the code provided
+ was rejected by the SIM card
+
+ On failure, throws an exception or returns YCellular.IMSI_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YCellular.IMSI_INVALID
+ return self._imsi
+
+ def get_message(self):
+ """
+ Returns the latest status message from the wireless interface.
+
+ @return a string corresponding to the latest status message from the wireless interface
+
+ On failure, throws an exception or returns YCellular.MESSAGE_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YCellular.MESSAGE_INVALID
+ return self._message
+
+ def get_pin(self):
+ """
+ Returns an opaque string if a PIN code has been configured in the device to access
+ the SIM card, or an empty string if none has been configured or if the code provided
+ was rejected by the SIM card.
+
+ @return a string corresponding to an opaque string if a PIN code has been configured in the device to access
+ the SIM card, or an empty string if none has been configured or if the code provided
+ was rejected by the SIM card
+
+ On failure, throws an exception or returns YCellular.PIN_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YCellular.PIN_INVALID
+ return self._pin
+
+ def set_pin(self, newval):
+ """
+ Changes the PIN code used by the module to access the SIM card.
+ This function does not change the code on the SIM card itself, but only changes
+ the parameter used by the device to try to get access to it. If the SIM code
+ does not work immediately on first try, it will be automatically forgotten
+ and the message will be set to "Enter SIM PIN". The method should then be
+ invoked again with right correct PIN code. After three failed attempts in a row,
+ the message is changed to "Enter SIM PUK" and the SIM card PUK code must be
+ provided using method sendPUK.
+
+ Remember to call the saveToFlash() method of the module to save the
+ new value in the device flash.
+
+ @param newval : a string corresponding to the PIN code used by the module to access the SIM card
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = newval
+ return self._setAttr("pin", rest_val)
+
+ def get_lockedOperator(self):
+ """
+ Returns the name of the only cell operator to use if automatic choice is disabled,
+ or an empty string if the SIM card will automatically choose among available
+ cell operators.
+
+ @return a string corresponding to the name of the only cell operator to use if automatic choice is disabled,
+ or an empty string if the SIM card will automatically choose among available
+ cell operators
+
+ On failure, throws an exception or returns YCellular.LOCKEDOPERATOR_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YCellular.LOCKEDOPERATOR_INVALID
+ return self._lockedOperator
+
+ def set_lockedOperator(self, newval):
+ """
+ Changes the name of the cell operator to be used. If the name is an empty
+ string, the choice will be made automatically based on the SIM card. Otherwise,
+ the selected operator is the only one that will be used.
+
+ @param newval : a string corresponding to the name of the cell operator to be used
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = newval
+ return self._setAttr("lockedOperator", rest_val)
+
+ def get_airplaneMode(self):
+ """
+ Returns true if the airplane mode is active (radio turned off).
+
+ @return either YCellular.AIRPLANEMODE_OFF or YCellular.AIRPLANEMODE_ON, according to true if the
+ airplane mode is active (radio turned off)
+
+ On failure, throws an exception or returns YCellular.AIRPLANEMODE_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YCellular.AIRPLANEMODE_INVALID
+ return self._airplaneMode
+
+ def set_airplaneMode(self, newval):
+ """
+ Changes the activation state of airplane mode (radio turned off).
+
+ @param newval : either YCellular.AIRPLANEMODE_OFF or YCellular.AIRPLANEMODE_ON, according to the
+ activation state of airplane mode (radio turned off)
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = "1" if newval > 0 else "0"
+ return self._setAttr("airplaneMode", rest_val)
+
+ def get_enableData(self):
+ """
+ Returns the condition for enabling IP data services (GPRS).
+ When data services are disabled, SMS are the only mean of communication.
+
+ @return a value among YCellular.ENABLEDATA_HOMENETWORK, YCellular.ENABLEDATA_ROAMING,
+ YCellular.ENABLEDATA_NEVER and YCellular.ENABLEDATA_NEUTRALITY corresponding to the condition for
+ enabling IP data services (GPRS)
+
+ On failure, throws an exception or returns YCellular.ENABLEDATA_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YCellular.ENABLEDATA_INVALID
+ return self._enableData
+
+ def set_enableData(self, newval):
+ """
+ Changes the condition for enabling IP data services (GPRS).
+ The service can be either fully deactivated, or limited to the SIM home network,
+ or enabled for all partner networks (roaming). Caution: enabling data services
+ on roaming networks may cause prohibitive communication costs !
+
+ When data services are disabled, SMS are the only mean of communication.
+
+ @param newval : a value among YCellular.ENABLEDATA_HOMENETWORK, YCellular.ENABLEDATA_ROAMING,
+ YCellular.ENABLEDATA_NEVER and YCellular.ENABLEDATA_NEUTRALITY corresponding to the condition for
+ enabling IP data services (GPRS)
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("enableData", rest_val)
+
+ def get_apn(self):
+ """
+ Returns the Access Point Name (APN) to be used, if needed.
+ When left blank, the APN suggested by the cell operator will be used.
+
+ @return a string corresponding to the Access Point Name (APN) to be used, if needed
+
+ On failure, throws an exception or returns YCellular.APN_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YCellular.APN_INVALID
+ return self._apn
+
+ def set_apn(self, newval):
+ """
+ Returns the Access Point Name (APN) to be used, if needed.
+ When left blank, the APN suggested by the cell operator will be used.
+
+ @param newval : a string
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = newval
+ return self._setAttr("apn", rest_val)
+
+ def get_apnSecret(self):
+ """
+ Returns an opaque string if APN authentication parameters have been configured
+ in the device, or an empty string otherwise.
+ To configure these parameters, use set_apnAuth().
+
+ @return a string corresponding to an opaque string if APN authentication parameters have been configured
+ in the device, or an empty string otherwise
+
+ On failure, throws an exception or returns YCellular.APNSECRET_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YCellular.APNSECRET_INVALID
+ return self._apnSecret
+
+ def set_apnSecret(self, newval):
+ rest_val = newval
+ return self._setAttr("apnSecret", rest_val)
+
+ def get_pingInterval(self):
+ """
+ Returns the automated connectivity check interval, in seconds.
+
+ @return an integer corresponding to the automated connectivity check interval, in seconds
+
+ On failure, throws an exception or returns YCellular.PINGINTERVAL_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YCellular.PINGINTERVAL_INVALID
+ return self._pingInterval
+
+ def set_pingInterval(self, newval):
+ """
+ Changes the automated connectivity check interval, in seconds.
+
+ @param newval : an integer corresponding to the automated connectivity check interval, in seconds
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("pingInterval", rest_val)
+
+ def get_dataSent(self):
+ """
+ Returns the number of bytes sent so far.
+
+ @return an integer corresponding to the number of bytes sent so far
+
+ On failure, throws an exception or returns YCellular.DATASENT_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YCellular.DATASENT_INVALID
+ return self._dataSent
+
+ def set_dataSent(self, newval):
+ """
+ Changes the value of the outgoing data counter.
+
+ @param newval : an integer corresponding to the value of the outgoing data counter
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("dataSent", rest_val)
+
+ def get_dataReceived(self):
+ """
+ Returns the number of bytes received so far.
+
+ @return an integer corresponding to the number of bytes received so far
+
+ On failure, throws an exception or returns YCellular.DATARECEIVED_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YCellular.DATARECEIVED_INVALID
+ return self._dataReceived
+
+ def set_dataReceived(self, newval):
+ """
+ Changes the value of the incoming data counter.
+
+ @param newval : an integer corresponding to the value of the incoming data counter
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("dataReceived", rest_val)
+
+ def get_command(self):
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YCellular.COMMAND_INVALID
+ return self._command
+
+ def set_command(self, newval):
+ rest_val = newval
+ return self._setAttr("command", rest_val)
+
+ @staticmethod
+ def FindCellular(func):
+ """
+ Retrieves a cellular interface for a given identifier.
+ The identifier can be specified using several formats:
+ <ul>
+ <li>FunctionLogicalName</li>
+ <li>ModuleSerialNumber.FunctionIdentifier</li>
+ <li>ModuleSerialNumber.FunctionLogicalName</li>
+ <li>ModuleLogicalName.FunctionIdentifier</li>
+ <li>ModuleLogicalName.FunctionLogicalName</li>
+ </ul>
+
+ This function does not require that the cellular interface is online at the time
+ it is invoked. The returned object is nevertheless valid.
+ Use the method YCellular.isOnline() to test if the cellular interface is
+ indeed online at a given time. In case of ambiguity when looking for
+ a cellular interface by logical name, no error is notified: the first instance
+ found is returned. The search is performed first by hardware name,
+ then by logical name.
+
+ @param func : a string that uniquely characterizes the cellular interface
+
+ @return a YCellular object allowing you to drive the cellular interface.
+ """
+ # obj
+ obj = YFunction._FindFromCache("Cellular", func)
+ if obj is None:
+ obj = YCellular(func)
+ YFunction._AddToCache("Cellular", func, obj)
+ return obj
+
+ def sendPUK(self, puk, newPin):
+ """
+ Sends a PUK code to unlock the SIM card after three failed PIN code attempts, and
+ setup a new PIN into the SIM card. Only ten consecutives tentatives are permitted:
+ after that, the SIM card will be blocked permanently without any mean of recovery
+ to use it again. Note that after calling this method, you have usually to invoke
+ method set_pin() to tell the YoctoHub which PIN to use in the future.
+
+ @param puk : the SIM PUK code
+ @param newPin : new PIN code to configure into the SIM card
+
+ @return YAPI.SUCCESS when the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ # gsmMsg
+ gsmMsg = self.get_message()
+ if not ((gsmMsg)[0: 0 + 13] == "Enter SIM PUK"):
+ self._throw(YAPI.INVALID_ARGUMENT, "PUK not expected at this time")
+ if newPin == "":
+ return self.set_command("AT+CPIN=" + puk + ",0000;+CLCK=SC,0,0000")
+ return self.set_command("AT+CPIN=" + puk + "," + newPin)
+
+ def set_apnAuth(self, username, password):
+ """
+ Configure authentication parameters to connect to the APN. Both
+ PAP and CHAP authentication are supported.
+
+ @param username : APN username
+ @param password : APN password
+
+ @return YAPI.SUCCESS when the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.set_apnSecret("" + username + "," + password)
+
+ def clearDataCounters(self):
+ """
+ Clear the transmitted data counters.
+
+ @return YAPI.SUCCESS when the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ # retcode
+ # // may throw an exception
+ retcode = self.set_dataReceived(0)
+ if retcode != YAPI.SUCCESS:
+ return retcode
+ retcode = self.set_dataSent(0)
+ return retcode
+
+ def _AT(self, cmd):
+ """
+ Sends an AT command to the GSM module and returns the command output.
+ The command will only execute when the GSM module is in standard
+ command state, and should leave it in the exact same state.
+ Use this function with great care !
+
+ @param cmd : the AT command to execute, like for instance: "+CCLK?".
+
+ @return a string with the result of the commands. Empty lines are
+ automatically removed from the output.
+ """
+ # chrPos
+ # cmdLen
+ # waitMore
+ # res
+ # buff
+ # bufflen
+ # buffstr
+ # buffstrlen
+ # idx
+ # suffixlen
+ # // quote dangerous characters used in AT commands
+ cmdLen = len(cmd)
+ chrPos = cmd.find("#")
+ while chrPos >= 0:
+ cmd = "" + (cmd)[0: 0 + chrPos] + "" + str(chr(37)) + "23" + (cmd)[chrPos+1: chrPos+1 + cmdLen-chrPos-1]
+ cmdLen = cmdLen + 2
+ chrPos = cmd.find("#")
+ chrPos = cmd.find("+")
+ while chrPos >= 0:
+ cmd = "" + (cmd)[0: 0 + chrPos] + "" + str(chr(37)) + "2B" + (cmd)[chrPos+1: chrPos+1 + cmdLen-chrPos-1]
+ cmdLen = cmdLen + 2
+ chrPos = cmd.find("+")
+ chrPos = cmd.find("=")
+ while chrPos >= 0:
+ cmd = "" + (cmd)[0: 0 + chrPos] + "" + str(chr(37)) + "3D" + (cmd)[chrPos+1: chrPos+1 + cmdLen-chrPos-1]
+ cmdLen = cmdLen + 2
+ chrPos = cmd.find("=")
+ cmd = "at.txt?cmd=" + cmd
+ res = ""
+ # // max 2 minutes (each iteration may take up to 5 seconds if waiting)
+ waitMore = 24
+ while waitMore > 0:
+ #
+ buff = self._download(cmd)
+ bufflen = len(buff)
+ buffstr = YByte2String(buff)
+ buffstrlen = len(buffstr)
+ idx = bufflen - 1
+ while (idx > 0) and (YGetByte(buff, idx) != 64) and (YGetByte(buff, idx) != 10) and (YGetByte(buff, idx) != 13):
+ idx = idx - 1
+ if YGetByte(buff, idx) == 64:
+ #
+ suffixlen = bufflen - idx
+ cmd = "at.txt?cmd=" + (buffstr)[buffstrlen - suffixlen: buffstrlen - suffixlen + suffixlen]
+ buffstr = (buffstr)[0: 0 + buffstrlen - suffixlen]
+ waitMore = waitMore - 1
+ else:
+ #
+ waitMore = 0
+ res = "" + res + "" + buffstr
+ return res
+
+ def get_availableOperators(self):
+ """
+ Returns the list detected cell operators in the neighborhood.
+ This function will typically take between 30 seconds to 1 minute to
+ return. Note that any SIM card can usually only connect to specific
+ operators. All networks returned by this function might therefore
+ not be available for connection.
+
+ @return a list of string (cell operator names).
+ """
+ # cops
+ # idx
+ # slen
+ res = []
+ # // may throw an exception
+ cops = self._AT("+COPS=?")
+ slen = len(cops)
+ del res[:]
+ idx = cops.find("(")
+ while idx >= 0:
+ slen = slen - (idx+1)
+ cops = (cops)[idx+1: idx+1 + slen]
+ idx = cops.find("\"")
+ if idx > 0:
+ slen = slen - (idx+1)
+ cops = (cops)[idx+1: idx+1 + slen]
+ idx = cops.find("\"")
+ if idx > 0:
+ res.append((cops)[0: 0 + idx])
+ idx = cops.find("(")
+
+ return res
+
+ def quickCellSurvey(self):
+ """
+ Returns a list of nearby cellular antennas, as required for quick
+ geolocation of the device. The first cell listed is the serving
+ cell, and the next ones are the neighboor cells reported by the
+ serving cell.
+
+ @return a list of YCellRecords.
+ """
+ # moni
+ recs = []
+ # llen
+ # mccs
+ # mcc
+ # mncs
+ # mnc
+ # lac
+ # cellId
+ # dbms
+ # dbm
+ # tads
+ # tad
+ # oper
+ res = []
+ # // may throw an exception
+ moni = self._AT("+CCED=0;#MONI=7;#MONI")
+ mccs = (moni)[7: 7 + 3]
+ if (mccs)[0: 0 + 1] == "0":
+ mccs = (mccs)[1: 1 + 2]
+ if (mccs)[0: 0 + 1] == "0":
+ mccs = (mccs)[1: 1 + 1]
+ mcc = YAPI._atoi(mccs)
+ mncs = (moni)[11: 11 + 3]
+ if (mncs)[2: 2 + 1] == ",":
+ mncs = (mncs)[0: 0 + 2]
+ if (mncs)[0: 0 + 1] == "0":
+ mncs = (mncs)[1: 1 + len(mncs)-1]
+ mnc = YAPI._atoi(mncs)
+ recs = (moni).split('#')
+ # // process each line in turn
+ del res[:]
+ for y in recs:
+ llen = len(y) - 2
+ if llen >= 44:
+ if (y)[41: 41 + 3] == "dbm":
+ lac = int((y)[16: 16 + 4], 16)
+ cellId = int((y)[23: 23 + 4], 16)
+ dbms = (y)[37: 37 + 4]
+ if (dbms)[0: 0 + 1] == " ":
+ dbms = (dbms)[1: 1 + 3]
+ dbm = YAPI._atoi(dbms)
+ if llen > 66:
+ tads = (y)[54: 54 + 2]
+ if (tads)[0: 0 + 1] == " ":
+ tads = (tads)[1: 1 + 3]
+ tad = YAPI._atoi(tads)
+ oper = (y)[66: 66 + llen-66]
+ else:
+ tad = -1
+ oper = ""
+ if lac < 65535:
+ res.append(YCellRecord(mcc, mnc, lac, cellId, dbm, tad, oper))
+ return res
+
+ def nextCellular(self):
+ """
+ Continues the enumeration of cellular interfaces started using yFirstCellular().
+
+ @return a pointer to a YCellular object, corresponding to
+ a cellular interface currently online, or a None pointer
+ if there are no more cellular interfaces to enumerate.
+ """
+ hwidRef = YRefParam()
+ if YAPI.YISERR(self._nextFunction(hwidRef)):
+ return None
+ if hwidRef.value == "":
+ return None
+ return YCellular.FindCellular(hwidRef.value)
+
+#--- (end of generated code: YCellular implementation)
+
+#--- (generated code: Cellular functions)
+
+ @staticmethod
+ def FirstCellular():
+ """
+ Starts the enumeration of cellular interfaces currently accessible.
+ Use the method YCellular.nextCellular() to iterate on
+ next cellular interfaces.
+
+ @return a pointer to a YCellular object, corresponding to
+ the first cellular interface currently online, or a None pointer
+ if there are none.
+ """
+ devRef = YRefParam()
+ neededsizeRef = YRefParam()
+ serialRef = YRefParam()
+ funcIdRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+ errmsgRef = YRefParam()
+ size = YAPI.C_INTSIZE
+ #noinspection PyTypeChecker,PyCallingNonCallable
+ p = (ctypes.c_int * 1)()
+ err = YAPI.apiGetFunctionsByClass("Cellular", 0, p, size, neededsizeRef, errmsgRef)
+
+ if YAPI.YISERR(err) or not neededsizeRef.value:
+ return None
+
+ if YAPI.YISERR(
+ YAPI.yapiGetFunctionInfo(p[0], devRef, serialRef, funcIdRef, funcNameRef, funcValRef, errmsgRef)):
+ return None
+
+ return YCellular.FindCellular(serialRef.value + "." + funcIdRef.value)
+
+#--- (end of generated code: Cellular functions)
diff --git a/yoctoLib.python.26380/Sources/yocto_colorled.py b/yoctoLib.python.26380/Sources/yocto_colorled.py
new file mode 100644
index 0000000..22f8e44
--- /dev/null
+++ b/yoctoLib.python.26380/Sources/yocto_colorled.py
@@ -0,0 +1,460 @@
+#*********************************************************************
+#*
+#* $Id: yocto_colorled.py 24475 2016-05-12 14:03:35Z mvuilleu $
+#*
+#* Implements yFindColorLed(), the high-level API for ColorLed functions
+#*
+#* - - - - - - - - - License information: - - - - - - - - -
+#*
+#* Copyright (C) 2011 and beyond by Yoctopuce Sarl, Switzerland.
+#*
+#* Yoctopuce Sarl (hereafter Licensor) grants to you a perpetual
+#* non-exclusive license to use, modify, copy and integrate this
+#* file into your software for the sole purpose of interfacing
+#* with Yoctopuce products.
+#*
+#* You may reproduce and distribute copies of this file in
+#* source or object form, as long as the sole purpose of this
+#* code is to interface with Yoctopuce products. You must retain
+#* this notice in the distributed source file.
+#*
+#* You should refer to Yoctopuce General Terms and Conditions
+#* for additional information regarding your rights and
+#* obligations.
+#*
+#* THE SOFTWARE AND DOCUMENTATION ARE PROVIDED 'AS IS' WITHOUT
+#* WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
+#* WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS
+#* FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO
+#* EVENT SHALL LICENSOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
+#* INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA,
+#* COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR
+#* SERVICES, ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT
+#* LIMITED TO ANY DEFENSE THEREOF), ANY CLAIMS FOR INDEMNITY OR
+#* CONTRIBUTION, OR OTHER SIMILAR COSTS, WHETHER ASSERTED ON THE
+#* BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE), BREACH OF
+#* WARRANTY, OR OTHERWISE.
+#*
+#*********************************************************************/
+
+
+__docformat__ = 'restructuredtext en'
+from yocto_api import *
+
+
+#--- (YColorLed class start)
+#noinspection PyProtectedMember
+class YColorLed(YFunction):
+ """
+ The Yoctopuce application programming interface
+ allows you to drive a color LED using RGB coordinates as well as HSL coordinates.
+ The module performs all conversions form RGB to HSL automatically. It is then
+ self-evident to turn on a LED with a given hue and to progressively vary its
+ saturation or lightness. If needed, you can find more information on the
+ difference between RGB and HSL in the section following this one.
+
+ """
+#--- (end of YColorLed class start)
+ #--- (YColorLed return codes)
+ #--- (end of YColorLed return codes)
+ #--- (YColorLed dlldef)
+ #--- (end of YColorLed dlldef)
+ #--- (YColorLed definitions)
+ RGBCOLOR_INVALID = YAPI.INVALID_UINT
+ HSLCOLOR_INVALID = YAPI.INVALID_UINT
+ RGBMOVE_INVALID = None
+ HSLMOVE_INVALID = None
+ RGBCOLORATPOWERON_INVALID = YAPI.INVALID_UINT
+ BLINKSEQSIZE_INVALID = YAPI.INVALID_UINT
+ BLINKSEQMAXSIZE_INVALID = YAPI.INVALID_UINT
+ BLINKSEQSIGNATURE_INVALID = YAPI.INVALID_UINT
+ COMMAND_INVALID = YAPI.INVALID_STRING
+ #--- (end of YColorLed definitions)
+
+ def __init__(self, func):
+ super(YColorLed, self).__init__(func)
+ self._className = 'ColorLed'
+ #--- (YColorLed attributes)
+ self._callback = None
+ self._rgbColor = YColorLed.RGBCOLOR_INVALID
+ self._hslColor = YColorLed.HSLCOLOR_INVALID
+ self._rgbMove = YColorLed.RGBMOVE_INVALID
+ self._hslMove = YColorLed.HSLMOVE_INVALID
+ self._rgbColorAtPowerOn = YColorLed.RGBCOLORATPOWERON_INVALID
+ self._blinkSeqSize = YColorLed.BLINKSEQSIZE_INVALID
+ self._blinkSeqMaxSize = YColorLed.BLINKSEQMAXSIZE_INVALID
+ self._blinkSeqSignature = YColorLed.BLINKSEQSIGNATURE_INVALID
+ self._command = YColorLed.COMMAND_INVALID
+ #--- (end of YColorLed attributes)
+
+ #--- (YColorLed implementation)
+ def _parseAttr(self, member):
+ if member.name == "rgbColor":
+ self._rgbColor = member.ivalue
+ return 1
+ if member.name == "hslColor":
+ self._hslColor = member.ivalue
+ return 1
+ if member.name == "rgbMove":
+ if member.recordtype != YAPI.TJSONRECORDTYPE.JSON_STRUCT:
+ self._rgbMove = -1
+ self._rgbMove = {"moving": None, "target": None, "ms": None}
+ for submemb in member.members:
+ if submemb.name == "moving":
+ self._rgbMove["moving"] = submemb.ivalue
+ elif submemb.name == "target":
+ self._rgbMove["target"] = submemb.ivalue
+ elif submemb.name == "ms":
+ self._rgbMove["ms"] = submemb.ivalue
+ return 1
+ if member.name == "hslMove":
+ if member.recordtype != YAPI.TJSONRECORDTYPE.JSON_STRUCT:
+ self._hslMove = -1
+ self._hslMove = {"moving": None, "target": None, "ms": None}
+ for submemb in member.members:
+ if submemb.name == "moving":
+ self._hslMove["moving"] = submemb.ivalue
+ elif submemb.name == "target":
+ self._hslMove["target"] = submemb.ivalue
+ elif submemb.name == "ms":
+ self._hslMove["ms"] = submemb.ivalue
+ return 1
+ if member.name == "rgbColorAtPowerOn":
+ self._rgbColorAtPowerOn = member.ivalue
+ return 1
+ if member.name == "blinkSeqSize":
+ self._blinkSeqSize = member.ivalue
+ return 1
+ if member.name == "blinkSeqMaxSize":
+ self._blinkSeqMaxSize = member.ivalue
+ return 1
+ if member.name == "blinkSeqSignature":
+ self._blinkSeqSignature = member.ivalue
+ return 1
+ if member.name == "command":
+ self._command = member.svalue
+ return 1
+ super(YColorLed, self)._parseAttr(member)
+
+ def get_rgbColor(self):
+ """
+ Returns the current RGB color of the LED.
+
+ @return an integer corresponding to the current RGB color of the LED
+
+ On failure, throws an exception or returns YColorLed.RGBCOLOR_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YColorLed.RGBCOLOR_INVALID
+ return self._rgbColor
+
+ def set_rgbColor(self, newval):
+ """
+ Changes the current color of the LED, using an RGB color. Encoding is done as follows: 0xRRGGBB.
+
+ @param newval : an integer corresponding to the current color of the LED, using an RGB color
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = "0x" + '%X' % newval
+ return self._setAttr("rgbColor", rest_val)
+
+ def get_hslColor(self):
+ """
+ Returns the current HSL color of the LED.
+
+ @return an integer corresponding to the current HSL color of the LED
+
+ On failure, throws an exception or returns YColorLed.HSLCOLOR_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YColorLed.HSLCOLOR_INVALID
+ return self._hslColor
+
+ def set_hslColor(self, newval):
+ """
+ Changes the current color of the LED, using a color HSL. Encoding is done as follows: 0xHHSSLL.
+
+ @param newval : an integer corresponding to the current color of the LED, using a color HSL
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = "0x" + '%X' % newval
+ return self._setAttr("hslColor", rest_val)
+
+ def get_rgbMove(self):
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YColorLed.RGBMOVE_INVALID
+ return self._rgbMove
+
+ def set_rgbMove(self, newval):
+ rest_val = str(newval.target) + ":" + str(newval.ms)
+ return self._setAttr("rgbMove", rest_val)
+
+ def rgbMove(self, rgb_target, ms_duration):
+ """
+ Performs a smooth transition in the RGB color space between the current color and a target color.
+
+ @param rgb_target : desired RGB color at the end of the transition
+ @param ms_duration : duration of the transition, in millisecond
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(rgb_target) + ":" + str(ms_duration)
+ return self._setAttr("rgbMove", rest_val)
+
+ def get_hslMove(self):
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YColorLed.HSLMOVE_INVALID
+ return self._hslMove
+
+ def set_hslMove(self, newval):
+ rest_val = str(newval.target) + ":" + str(newval.ms)
+ return self._setAttr("hslMove", rest_val)
+
+ def hslMove(self, hsl_target, ms_duration):
+ """
+ Performs a smooth transition in the HSL color space between the current color and a target color.
+
+ @param hsl_target : desired HSL color at the end of the transition
+ @param ms_duration : duration of the transition, in millisecond
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(hsl_target) + ":" + str(ms_duration)
+ return self._setAttr("hslMove", rest_val)
+
+ def get_rgbColorAtPowerOn(self):
+ """
+ Returns the configured color to be displayed when the module is turned on.
+
+ @return an integer corresponding to the configured color to be displayed when the module is turned on
+
+ On failure, throws an exception or returns YColorLed.RGBCOLORATPOWERON_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YColorLed.RGBCOLORATPOWERON_INVALID
+ return self._rgbColorAtPowerOn
+
+ def set_rgbColorAtPowerOn(self, newval):
+ """
+ Changes the color that the LED will display by default when the module is turned on.
+
+ @param newval : an integer corresponding to the color that the LED will display by default when the
+ module is turned on
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = "0x" + '%X' % newval
+ return self._setAttr("rgbColorAtPowerOn", rest_val)
+
+ def get_blinkSeqSize(self):
+ """
+ Returns the current length of the blinking sequence.
+
+ @return an integer corresponding to the current length of the blinking sequence
+
+ On failure, throws an exception or returns YColorLed.BLINKSEQSIZE_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YColorLed.BLINKSEQSIZE_INVALID
+ return self._blinkSeqSize
+
+ def get_blinkSeqMaxSize(self):
+ """
+ Returns the maximum length of the blinking sequence.
+
+ @return an integer corresponding to the maximum length of the blinking sequence
+
+ On failure, throws an exception or returns YColorLed.BLINKSEQMAXSIZE_INVALID.
+ """
+ if self._cacheExpiration == datetime.datetime.fromtimestamp(0):
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YColorLed.BLINKSEQMAXSIZE_INVALID
+ return self._blinkSeqMaxSize
+
+ def get_blinkSeqSignature(self):
+ """
+ Return the blinking sequence signature. Since blinking
+ sequences cannot be read from the device, this can be used
+ to detect if a specific blinking sequence is already
+ programmed.
+
+ @return an integer
+
+ On failure, throws an exception or returns YColorLed.BLINKSEQSIGNATURE_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YColorLed.BLINKSEQSIGNATURE_INVALID
+ return self._blinkSeqSignature
+
+ def get_command(self):
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YColorLed.COMMAND_INVALID
+ return self._command
+
+ def set_command(self, newval):
+ rest_val = newval
+ return self._setAttr("command", rest_val)
+
+ @staticmethod
+ def FindColorLed(func):
+ """
+ Retrieves an RGB LED for a given identifier.
+ The identifier can be specified using several formats:
+ <ul>
+ <li>FunctionLogicalName</li>
+ <li>ModuleSerialNumber.FunctionIdentifier</li>
+ <li>ModuleSerialNumber.FunctionLogicalName</li>
+ <li>ModuleLogicalName.FunctionIdentifier</li>
+ <li>ModuleLogicalName.FunctionLogicalName</li>
+ </ul>
+
+ This function does not require that the RGB LED is online at the time
+ it is invoked. The returned object is nevertheless valid.
+ Use the method YColorLed.isOnline() to test if the RGB LED is
+ indeed online at a given time. In case of ambiguity when looking for
+ an RGB LED by logical name, no error is notified: the first instance
+ found is returned. The search is performed first by hardware name,
+ then by logical name.
+
+ @param func : a string that uniquely characterizes the RGB LED
+
+ @return a YColorLed object allowing you to drive the RGB LED.
+ """
+ # obj
+ obj = YFunction._FindFromCache("ColorLed", func)
+ if obj is None:
+ obj = YColorLed(func)
+ YFunction._AddToCache("ColorLed", func, obj)
+ return obj
+
+ def sendCommand(self, command):
+ # //may throw an exception
+ return self.set_command(command)
+
+ def addHslMoveToBlinkSeq(self, HSLcolor, msDelay):
+ """
+ Add a new transition to the blinking sequence, the move will
+ be performed in the HSL space.
+
+ @param HSLcolor : desired HSL color when the traisntion is completed
+ @param msDelay : duration of the color transition, in milliseconds.
+
+ @return YAPI.SUCCESS if the call succeeds.
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.sendCommand("H" + str(int(HSLcolor)) + "," + str(int(msDelay)))
+
+ def addRgbMoveToBlinkSeq(self, RGBcolor, msDelay):
+ """
+ Adds a new transition to the blinking sequence, the move is
+ performed in the RGB space.
+
+ @param RGBcolor : desired RGB color when the transition is completed
+ @param msDelay : duration of the color transition, in milliseconds.
+
+ @return YAPI.SUCCESS if the call succeeds.
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.sendCommand("R" + str(int(RGBcolor)) + "," + str(int(msDelay)))
+
+ def startBlinkSeq(self):
+ """
+ Starts the preprogrammed blinking sequence. The sequence is
+ run in a loop until it is stopped by stopBlinkSeq or an explicit
+ change.
+
+ @return YAPI.SUCCESS if the call succeeds.
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.sendCommand("S")
+
+ def stopBlinkSeq(self):
+ """
+ Stops the preprogrammed blinking sequence.
+
+ @return YAPI.SUCCESS if the call succeeds.
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.sendCommand("X")
+
+ def resetBlinkSeq(self):
+ """
+ Resets the preprogrammed blinking sequence.
+
+ @return YAPI.SUCCESS if the call succeeds.
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.sendCommand("Z")
+
+ def nextColorLed(self):
+ """
+ Continues the enumeration of RGB LEDs started using yFirstColorLed().
+
+ @return a pointer to a YColorLed object, corresponding to
+ an RGB LED currently online, or a None pointer
+ if there are no more RGB LEDs to enumerate.
+ """
+ hwidRef = YRefParam()
+ if YAPI.YISERR(self._nextFunction(hwidRef)):
+ return None
+ if hwidRef.value == "":
+ return None
+ return YColorLed.FindColorLed(hwidRef.value)
+
+#--- (end of YColorLed implementation)
+
+#--- (ColorLed functions)
+
+ @staticmethod
+ def FirstColorLed():
+ """
+ Starts the enumeration of RGB LEDs currently accessible.
+ Use the method YColorLed.nextColorLed() to iterate on
+ next RGB LEDs.
+
+ @return a pointer to a YColorLed object, corresponding to
+ the first RGB LED currently online, or a None pointer
+ if there are none.
+ """
+ devRef = YRefParam()
+ neededsizeRef = YRefParam()
+ serialRef = YRefParam()
+ funcIdRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+ errmsgRef = YRefParam()
+ size = YAPI.C_INTSIZE
+ #noinspection PyTypeChecker,PyCallingNonCallable
+ p = (ctypes.c_int * 1)()
+ err = YAPI.apiGetFunctionsByClass("ColorLed", 0, p, size, neededsizeRef, errmsgRef)
+
+ if YAPI.YISERR(err) or not neededsizeRef.value:
+ return None
+
+ if YAPI.YISERR(
+ YAPI.yapiGetFunctionInfo(p[0], devRef, serialRef, funcIdRef, funcNameRef, funcValRef, errmsgRef)):
+ return None
+
+ return YColorLed.FindColorLed(serialRef.value + "." + funcIdRef.value)
+
+#--- (end of ColorLed functions)
diff --git a/yoctoLib.python.26380/Sources/yocto_colorledcluster.py b/yoctoLib.python.26380/Sources/yocto_colorledcluster.py
new file mode 100644
index 0000000..44d8be0
--- /dev/null
+++ b/yoctoLib.python.26380/Sources/yocto_colorledcluster.py
@@ -0,0 +1,947 @@
+#*********************************************************************
+#*
+#* $Id: yocto_colorledcluster.py 24939 2016-07-01 08:45:11Z seb $
+#*
+#* Implements yFindColorLedCluster(), the high-level API for ColorLedCluster functions
+#*
+#* - - - - - - - - - License information: - - - - - - - - -
+#*
+#* Copyright (C) 2011 and beyond by Yoctopuce Sarl, Switzerland.
+#*
+#* Yoctopuce Sarl (hereafter Licensor) grants to you a perpetual
+#* non-exclusive license to use, modify, copy and integrate this
+#* file into your software for the sole purpose of interfacing
+#* with Yoctopuce products.
+#*
+#* You may reproduce and distribute copies of this file in
+#* source or object form, as long as the sole purpose of this
+#* code is to interface with Yoctopuce products. You must retain
+#* this notice in the distributed source file.
+#*
+#* You should refer to Yoctopuce General Terms and Conditions
+#* for additional information regarding your rights and
+#* obligations.
+#*
+#* THE SOFTWARE AND DOCUMENTATION ARE PROVIDED 'AS IS' WITHOUT
+#* WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
+#* WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS
+#* FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO
+#* EVENT SHALL LICENSOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
+#* INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA,
+#* COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR
+#* SERVICES, ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT
+#* LIMITED TO ANY DEFENSE THEREOF), ANY CLAIMS FOR INDEMNITY OR
+#* CONTRIBUTION, OR OTHER SIMILAR COSTS, WHETHER ASSERTED ON THE
+#* BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE), BREACH OF
+#* WARRANTY, OR OTHERWISE.
+#*
+#*********************************************************************/
+
+
+__docformat__ = 'restructuredtext en'
+from yocto_api import *
+
+
+#--- (YColorLedCluster class start)
+#noinspection PyProtectedMember
+class YColorLedCluster(YFunction):
+ """
+ The Yoctopuce application programming interface
+ allows you to drive a color LED cluster. Unlike the ColorLed class, the ColorLedCluster
+ allows to handle several LEDs at one. Color changes can be done using RGB coordinates as well as
+ HSL coordinates.
+ The module performs all conversions form RGB to HSL automatically. It is then
+ self-evident to turn on a LED with a given hue and to progressively vary its
+ saturation or lightness. If needed, you can find more information on the
+ difference between RGB and HSL in the section following this one.
+
+ """
+#--- (end of YColorLedCluster class start)
+ #--- (YColorLedCluster return codes)
+ #--- (end of YColorLedCluster return codes)
+ #--- (YColorLedCluster dlldef)
+ #--- (end of YColorLedCluster dlldef)
+ #--- (YColorLedCluster definitions)
+ ACTIVELEDCOUNT_INVALID = YAPI.INVALID_UINT
+ MAXLEDCOUNT_INVALID = YAPI.INVALID_UINT
+ BLINKSEQMAXCOUNT_INVALID = YAPI.INVALID_UINT
+ BLINKSEQMAXSIZE_INVALID = YAPI.INVALID_UINT
+ COMMAND_INVALID = YAPI.INVALID_STRING
+ #--- (end of YColorLedCluster definitions)
+
+ def __init__(self, func):
+ super(YColorLedCluster, self).__init__(func)
+ self._className = 'ColorLedCluster'
+ #--- (YColorLedCluster attributes)
+ self._callback = None
+ self._activeLedCount = YColorLedCluster.ACTIVELEDCOUNT_INVALID
+ self._maxLedCount = YColorLedCluster.MAXLEDCOUNT_INVALID
+ self._blinkSeqMaxCount = YColorLedCluster.BLINKSEQMAXCOUNT_INVALID
+ self._blinkSeqMaxSize = YColorLedCluster.BLINKSEQMAXSIZE_INVALID
+ self._command = YColorLedCluster.COMMAND_INVALID
+ #--- (end of YColorLedCluster attributes)
+
+ #--- (YColorLedCluster implementation)
+ def _parseAttr(self, member):
+ if member.name == "activeLedCount":
+ self._activeLedCount = member.ivalue
+ return 1
+ if member.name == "maxLedCount":
+ self._maxLedCount = member.ivalue
+ return 1
+ if member.name == "blinkSeqMaxCount":
+ self._blinkSeqMaxCount = member.ivalue
+ return 1
+ if member.name == "blinkSeqMaxSize":
+ self._blinkSeqMaxSize = member.ivalue
+ return 1
+ if member.name == "command":
+ self._command = member.svalue
+ return 1
+ super(YColorLedCluster, self)._parseAttr(member)
+
+ def get_activeLedCount(self):
+ """
+ Returns the number of LEDs currently handled by the device.
+
+ @return an integer corresponding to the number of LEDs currently handled by the device
+
+ On failure, throws an exception or returns YColorLedCluster.ACTIVELEDCOUNT_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YColorLedCluster.ACTIVELEDCOUNT_INVALID
+ return self._activeLedCount
+
+ def set_activeLedCount(self, newval):
+ """
+ Changes the number of LEDs currently handled by the device.
+
+ @param newval : an integer corresponding to the number of LEDs currently handled by the device
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("activeLedCount", rest_val)
+
+ def get_maxLedCount(self):
+ """
+ Returns the maximum number of LEDs that the device can handle.
+
+ @return an integer corresponding to the maximum number of LEDs that the device can handle
+
+ On failure, throws an exception or returns YColorLedCluster.MAXLEDCOUNT_INVALID.
+ """
+ if self._cacheExpiration == datetime.datetime.fromtimestamp(0):
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YColorLedCluster.MAXLEDCOUNT_INVALID
+ return self._maxLedCount
+
+ def get_blinkSeqMaxCount(self):
+ """
+ Returns the maximum number of sequences that the device can handle.
+
+ @return an integer corresponding to the maximum number of sequences that the device can handle
+
+ On failure, throws an exception or returns YColorLedCluster.BLINKSEQMAXCOUNT_INVALID.
+ """
+ if self._cacheExpiration == datetime.datetime.fromtimestamp(0):
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YColorLedCluster.BLINKSEQMAXCOUNT_INVALID
+ return self._blinkSeqMaxCount
+
+ def get_blinkSeqMaxSize(self):
+ """
+ Returns the maximum length of sequences.
+
+ @return an integer corresponding to the maximum length of sequences
+
+ On failure, throws an exception or returns YColorLedCluster.BLINKSEQMAXSIZE_INVALID.
+ """
+ if self._cacheExpiration == datetime.datetime.fromtimestamp(0):
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YColorLedCluster.BLINKSEQMAXSIZE_INVALID
+ return self._blinkSeqMaxSize
+
+ def get_command(self):
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YColorLedCluster.COMMAND_INVALID
+ return self._command
+
+ def set_command(self, newval):
+ rest_val = newval
+ return self._setAttr("command", rest_val)
+
+ @staticmethod
+ def FindColorLedCluster(func):
+ """
+ Retrieves a RGB LED cluster for a given identifier.
+ The identifier can be specified using several formats:
+ <ul>
+ <li>FunctionLogicalName</li>
+ <li>ModuleSerialNumber.FunctionIdentifier</li>
+ <li>ModuleSerialNumber.FunctionLogicalName</li>
+ <li>ModuleLogicalName.FunctionIdentifier</li>
+ <li>ModuleLogicalName.FunctionLogicalName</li>
+ </ul>
+
+ This function does not require that the RGB LED cluster is online at the time
+ it is invoked. The returned object is nevertheless valid.
+ Use the method YColorLedCluster.isOnline() to test if the RGB LED cluster is
+ indeed online at a given time. In case of ambiguity when looking for
+ a RGB LED cluster by logical name, no error is notified: the first instance
+ found is returned. The search is performed first by hardware name,
+ then by logical name.
+
+ @param func : a string that uniquely characterizes the RGB LED cluster
+
+ @return a YColorLedCluster object allowing you to drive the RGB LED cluster.
+ """
+ # obj
+ obj = YFunction._FindFromCache("ColorLedCluster", func)
+ if obj is None:
+ obj = YColorLedCluster(func)
+ YFunction._AddToCache("ColorLedCluster", func, obj)
+ return obj
+
+ def sendCommand(self, command):
+ # //may throw an exception
+ return self.set_command(command)
+
+ def set_rgbColor(self, ledIndex, count, rgbValue):
+ """
+ Changes the current color of consecutve LEDs in the cluster, using a RGB color. Encoding is done as
+ follows: 0xRRGGBB.
+
+ @param ledIndex : index of the first affected LED.
+ @param count : affected LED count.
+ @param rgbValue : new color.
+
+ @return YAPI.SUCCESS when the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.sendCommand("SR" + str(int(ledIndex)) + "," + str(int(count)) + "," + ("%X" % rgbValue))
+
+ def set_rgbColorAtPowerOn(self, ledIndex, count, rgbValue):
+ """
+ Changes the color at device startup of consecutve LEDs in the cluster, using a RGB color. Encoding
+ is done as follows: 0xRRGGBB.
+ Don't forget to call saveLedsConfigAtPowerOn() to make sure the modification is saved in the device
+ flash memory.
+
+ @param ledIndex : index of the first affected LED.
+ @param count : affected LED count.
+ @param rgbValue : new color.
+
+ @return YAPI.SUCCESS when the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.sendCommand("SC" + str(int(ledIndex)) + "," + str(int(count)) + "," + ("%X" % rgbValue))
+
+ def set_hslColor(self, ledIndex, count, hslValue):
+ """
+ Changes the current color of consecutive LEDs in the cluster, using a HSL color. Encoding is done
+ as follows: 0xHHSSLL.
+
+ @param ledIndex : index of the first affected LED.
+ @param count : affected LED count.
+ @param hslValue : new color.
+
+ @return YAPI.SUCCESS when the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.sendCommand("SH" + str(int(ledIndex)) + "," + str(int(count)) + "," + ("%X" % hslValue))
+
+ def rgb_move(self, ledIndex, count, rgbValue, delay):
+ """
+ Allows you to modify the current color of a group of adjacent LEDs to another color, in a seamless and
+ autonomous manner. The transition is performed in the RGB space.
+
+ @param ledIndex : index of the first affected LED.
+ @param count : affected LED count.
+ @param rgbValue : new color (0xRRGGBB).
+ @param delay : transition duration in ms
+
+ @return YAPI.SUCCESS when the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.sendCommand("MR" + str(int(ledIndex)) + "," + str(int(count)) + "," + ("%X" % rgbValue) + "," + str(int(delay)))
+
+ def hsl_move(self, ledIndex, count, hslValue, delay):
+ """
+ Allows you to modify the current color of a group of adjacent LEDs to another color, in a seamless and
+ autonomous manner. The transition is performed in the HSL space. In HSL, hue is a circular
+ value (0..360°). There are always two paths to perform the transition: by increasing
+ or by decreasing the hue. The module selects the shortest transition.
+ If the difference is exactly 180°, the module selects the transition which increases
+ the hue.
+
+ @param ledIndex : index of the fisrt affected LED.
+ @param count : affected LED count.
+ @param hslValue : new color (0xHHSSLL).
+ @param delay : transition duration in ms
+
+ @return YAPI.SUCCESS when the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.sendCommand("MH" + str(int(ledIndex)) + "," + str(int(count)) + "," + ("%X" % hslValue) + "," + str(int(delay)))
+
+ def addRgbMoveToBlinkSeq(self, seqIndex, rgbValue, delay):
+ """
+ Adds an RGB transition to a sequence. A sequence is a transition list, which can
+ be executed in loop by a group of LEDs. Sequences are persistent and are saved
+ in the device flash memory as soon as the saveBlinkSeq() method is called.
+
+ @param seqIndex : sequence index.
+ @param rgbValue : target color (0xRRGGBB)
+ @param delay : transition duration in ms
+
+ @return YAPI.SUCCESS when the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.sendCommand("AR" + str(int(seqIndex)) + "," + ("%X" % rgbValue) + "," + str(int(delay)))
+
+ def addHslMoveToBlinkSeq(self, seqIndex, hslValue, delay):
+ """
+ Adds an HSL transition to a sequence. A sequence is a transition list, which can
+ be executed in loop by an group of LEDs. Sequences are persistant and are saved
+ in the device flash memory as soon as the saveBlinkSeq() method is called.
+
+ @param seqIndex : sequence index.
+ @param hslValue : target color (0xHHSSLL)
+ @param delay : transition duration in ms
+
+ @return YAPI.SUCCESS when the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.sendCommand("AH" + str(int(seqIndex)) + "," + ("%X" % hslValue) + "," + str(int(delay)))
+
+ def addMirrorToBlinkSeq(self, seqIndex):
+ """
+ Adds a mirror ending to a sequence. When the sequence will reach the end of the last
+ transition, its running speed will automatically be reversed so that the sequence plays
+ in the reverse direction, like in a mirror. After the first transition of the sequence
+ is played at the end of the reverse execution, the sequence starts again in
+ the initial direction.
+
+ @param seqIndex : sequence index.
+
+ @return YAPI.SUCCESS when the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.sendCommand("AC" + str(int(seqIndex)) + ",0,0")
+
+ def linkLedToBlinkSeq(self, ledIndex, count, seqIndex, offset):
+ """
+ Links adjacent LEDs to a specific sequence. These LEDs start to execute
+ the sequence as soon as startBlinkSeq is called. It is possible to add an offset
+ in the execution: that way we can have several groups of LED executing the same
+ sequence, with a temporal offset. A LED cannot be linked to more than one sequence.
+
+ @param ledIndex : index of the first affected LED.
+ @param count : affected LED count.
+ @param seqIndex : sequence index.
+ @param offset : execution offset in ms.
+
+ @return YAPI.SUCCESS when the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.sendCommand("LS" + str(int(ledIndex)) + "," + str(int(count)) + "," + str(int(seqIndex)) + "," + str(int(offset)))
+
+ def linkLedToBlinkSeqAtPowerOn(self, ledIndex, count, seqIndex, offset):
+ """
+ Links adjacent LEDs to a specific sequence at device poweron. Don't forget to configure
+ the sequence auto start flag as well and call saveLedsConfigAtPowerOn(). It is possible to add an offset
+ in the execution: that way we can have several groups of LEDs executing the same
+ sequence, with a temporal offset. A LED cannot be linked to more than one sequence.
+
+ @param ledIndex : index of the first affected LED.
+ @param count : affected LED count.
+ @param seqIndex : sequence index.
+ @param offset : execution offset in ms.
+
+ @return YAPI.SUCCESS when the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.sendCommand("LO" + str(int(ledIndex)) + "," + str(int(count)) + "," + str(int(seqIndex)) + "," + str(int(offset)))
+
+ def linkLedToPeriodicBlinkSeq(self, ledIndex, count, seqIndex, periods):
+ """
+ Links adjacent LEDs to a specific sequence. These LED start to execute
+ the sequence as soon as startBlinkSeq is called. This function automatically
+ introduces a shift between LEDs so that the specified number of sequence periods
+ appears on the group of LEDs (wave effect).
+
+ @param ledIndex : index of the first affected LED.
+ @param count : affected LED count.
+ @param seqIndex : sequence index.
+ @param periods : number of periods to show on LEDs.
+
+ @return YAPI.SUCCESS when the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.sendCommand("LP" + str(int(ledIndex)) + "," + str(int(count)) + "," + str(int(seqIndex)) + "," + str(int(periods)))
+
+ def unlinkLedFromBlinkSeq(self, ledIndex, count):
+ """
+ Unlinks adjacent LEDs from a sequence.
+
+ @param ledIndex : index of the first affected LED.
+ @param count : affected LED count.
+
+ @return YAPI.SUCCESS when the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.sendCommand("US" + str(int(ledIndex)) + "," + str(int(count)))
+
+ def startBlinkSeq(self, seqIndex):
+ """
+ Starts a sequence execution: every LED linked to that sequence starts to
+ run it in a loop.
+
+ @param seqIndex : index of the sequence to start.
+
+ @return YAPI.SUCCESS when the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.sendCommand("SS" + str(int(seqIndex)))
+
+ def stopBlinkSeq(self, seqIndex):
+ """
+ Stops a sequence execution. If started again, the execution
+ restarts from the beginning.
+
+ @param seqIndex : index of the sequence to stop.
+
+ @return YAPI.SUCCESS when the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.sendCommand("XS" + str(int(seqIndex)))
+
+ def resetBlinkSeq(self, seqIndex):
+ """
+ Stops a sequence execution and resets its contents. Leds linked to this
+ sequence are not automatically updated anymore.
+
+ @param seqIndex : index of the sequence to reset
+
+ @return YAPI.SUCCESS when the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.sendCommand("ZS" + str(int(seqIndex)))
+
+ def set_blinkSeqStateAtPowerOn(self, seqIndex, autostart):
+ """
+ Configures a sequence to make it start automatically at device
+ startup. Don't forget to call saveBlinkSeq() to make sure the
+ modification is saved in the device flash memory.
+
+ @param seqIndex : index of the sequence to reset.
+ @param autostart : 0 to keep the sequence turned off and 1 to start it automatically.
+
+ @return YAPI.SUCCESS when the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.sendCommand("AS" + str(int(seqIndex)) + "," + str(int(autostart)))
+
+ def set_blinkSeqSpeed(self, seqIndex, speed):
+ """
+ Changes the execution speed of a sequence. The natural execution speed is 1000 per
+ thousand. If you configure a slower speed, you can play the sequence in slow-motion.
+ If you set a negative speed, you can play the sequence in reverse direction.
+
+ @param seqIndex : index of the sequence to start.
+ @param speed : sequence running speed (-1000...1000).
+
+ @return YAPI.SUCCESS when the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.sendCommand("CS" + str(int(seqIndex)) + "," + str(int(speed)))
+
+ def saveLedsConfigAtPowerOn(self):
+ """
+ Saves the LEDs power-on configuration. This includes the start-up color or
+ sequence binding for all LEDs. Warning: if some LEDs are linked to a sequence, the
+ method saveBlinkSeq() must also be called to save the sequence definition.
+
+ @return YAPI.SUCCESS when the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.sendCommand("WL")
+
+ def saveLedsState(self):
+ # // may throw an exception
+ return self.sendCommand("WL")
+
+ def saveBlinkSeq(self, seqIndex):
+ """
+ Saves the definition of a sequence. Warning: only sequence steps and flags are saved.
+ to save the LEDs startup bindings, the method saveLedsConfigAtPowerOn()
+ must be called.
+
+ @param seqIndex : index of the sequence to start.
+
+ @return YAPI.SUCCESS when the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.sendCommand("WS" + str(int(seqIndex)))
+
+ def set_rgbColorBuffer(self, ledIndex, buff):
+ """
+ Sends a binary buffer to the LED RGB buffer, as is.
+ First three bytes are RGB components for LED specified as parameter, the
+ next three bytes for the next LED, etc.
+
+ @param ledIndex : index of the first LED which should be updated
+ @param buff : the binary buffer to send
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ # // may throw an exception
+ return self._upload("rgb:0:" + str(int(ledIndex)), buff)
+
+ def set_rgbColorArray(self, ledIndex, rgbList):
+ """
+ Sends 24bit RGB colors (provided as a list of integers) to the LED RGB buffer, as is.
+ The first number represents the RGB value of the LED specified as parameter, the second
+ number represents the RGB value of the next LED, etc.
+
+ @param ledIndex : index of the first LED which should be updated
+ @param rgbList : a list of 24bit RGB codes, in the form 0xRRGGBB
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ # listlen
+ # buff
+ # idx
+ # rgb
+ # res
+ listlen = len(rgbList)
+ buff = bytearray(3*listlen)
+ idx = 0
+ while idx < listlen:
+ rgb = rgbList[idx]
+ buff[3*idx] = ((((rgb) >> (16))) & (255))
+ buff[3*idx+1] = ((((rgb) >> (8))) & (255))
+ buff[3*idx+2] = ((rgb) & (255))
+ idx = idx + 1
+ # // may throw an exception
+ res = self._upload("rgb:0:" + str(int(ledIndex)), buff)
+ return res
+
+ def rgbArray_move(self, rgbList, delay):
+ """
+ Sets up a smooth RGB color transition to the specified pixel-by-pixel list of RGB
+ color codes. The first color code represents the target RGB value of the first LED,
+ the next color code represents the target value of the next LED, etc.
+
+ @param rgbList : a list of target 24bit RGB codes, in the form 0xRRGGBB
+ @param delay : transition duration in ms
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ # listlen
+ # buff
+ # idx
+ # rgb
+ # res
+ listlen = len(rgbList)
+ buff = bytearray(3*listlen)
+ idx = 0
+ while idx < listlen:
+ rgb = rgbList[idx]
+ buff[3*idx] = ((((rgb) >> (16))) & (255))
+ buff[3*idx+1] = ((((rgb) >> (8))) & (255))
+ buff[3*idx+2] = ((rgb) & (255))
+ idx = idx + 1
+ # // may throw an exception
+ res = self._upload("rgb:" + str(int(delay)), buff)
+ return res
+
+ def set_hslColorBuffer(self, ledIndex, buff):
+ """
+ Sends a binary buffer to the LED HSL buffer, as is.
+ First three bytes are HSL components for the LED specified as parameter, the
+ next three bytes for the second LED, etc.
+
+ @param ledIndex : index of the first LED which should be updated
+ @param buff : the binary buffer to send
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ # // may throw an exception
+ return self._upload("hsl:0:" + str(int(ledIndex)), buff)
+
+ def set_hslColorArray(self, ledIndex, hslList):
+ """
+ Sends 24bit HSL colors (provided as a list of integers) to the LED HSL buffer, as is.
+ The first number represents the HSL value of the LED specified as parameter, the second number represents
+ the HSL value of the second LED, etc.
+
+ @param ledIndex : index of the first LED which should be updated
+ @param hslList : a list of 24bit HSL codes, in the form 0xHHSSLL
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ # listlen
+ # buff
+ # idx
+ # hsl
+ # res
+ listlen = len(hslList)
+ buff = bytearray(3*listlen)
+ idx = 0
+ while idx < listlen:
+ hsl = hslList[idx]
+ buff[3*idx] = ((((hsl) >> (16))) & (255))
+ buff[3*idx+1] = ((((hsl) >> (8))) & (255))
+ buff[3*idx+2] = ((hsl) & (255))
+ idx = idx + 1
+ # // may throw an exception
+ res = self._upload("hsl:0:" + str(int(ledIndex)), buff)
+ return res
+
+ def hslArray_move(self, hslList, delay):
+ """
+ Sets up a smooth HSL color transition to the specified pixel-by-pixel list of HSL
+ color codes. The first color code represents the target HSL value of the first LED,
+ the second color code represents the target value of the second LED, etc.
+
+ @param hslList : a list of target 24bit HSL codes, in the form 0xHHSSLL
+ @param delay : transition duration in ms
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ # listlen
+ # buff
+ # idx
+ # hsl
+ # res
+ listlen = len(hslList)
+ buff = bytearray(3*listlen)
+ idx = 0
+ while idx < listlen:
+ hsl = hslList[idx]
+ buff[3*idx] = ((((hsl) >> (16))) & (255))
+ buff[3*idx+1] = ((((hsl) >> (8))) & (255))
+ buff[3*idx+2] = ((hsl) & (255))
+ idx = idx + 1
+ # // may throw an exception
+ res = self._upload("hsl:" + str(int(delay)), buff)
+ return res
+
+ def get_rgbColorBuffer(self, ledIndex, count):
+ """
+ Returns a binary buffer with content from the LED RGB buffer, as is.
+ First three bytes are RGB components for the first LED in the interval,
+ the next three bytes for the second LED in the interval, etc.
+
+ @param ledIndex : index of the first LED which should be returned
+ @param count : number of LEDs which should be returned
+
+ @return a binary buffer with RGB components of selected LEDs.
+
+ On failure, throws an exception or returns an empty binary buffer.
+ """
+ # // may throw an exception
+ return self._download("rgb.bin?typ=0&pos=" + str(int(3*ledIndex)) + "&len=" + str(int(3*count)))
+
+ def get_rgbColorArray(self, ledIndex, count):
+ """
+ Returns a list on 24bit RGB color values with the current colors displayed on
+ the RGB leds. The first number represents the RGB value of the first LED,
+ the second number represents the RGB value of the second LED, etc.
+
+ @param ledIndex : index of the first LED which should be returned
+ @param count : number of LEDs which should be returned
+
+ @return a list of 24bit color codes with RGB components of selected LEDs, as 0xRRGGBB.
+
+ On failure, throws an exception or returns an empty array.
+ """
+ # buff
+ res = []
+ # idx
+ # r
+ # g
+ # b
+ # // may throw an exception
+ buff = self._download("rgb.bin?typ=0&pos=" + str(int(3*ledIndex)) + "&len=" + str(int(3*count)))
+ del res[:]
+
+ idx = 0
+ while idx < count:
+ r = YGetByte(buff, 3*idx)
+ g = YGetByte(buff, 3*idx+1)
+ b = YGetByte(buff, 3*idx+2)
+ res.append(r*65536+g*256+b)
+ idx = idx + 1
+
+ return res
+
+ def get_rgbColorArrayAtPowerOn(self, ledIndex, count):
+ """
+ Returns a list on 24bit RGB color values with the RGB LEDs startup colors.
+ The first number represents the startup RGB value of the first LED,
+ the second number represents the RGB value of the second LED, etc.
+
+ @param ledIndex : index of the first LED which should be returned
+ @param count : number of LEDs which should be returned
+
+ @return a list of 24bit color codes with RGB components of selected LEDs, as 0xRRGGBB.
+
+ On failure, throws an exception or returns an empty array.
+ """
+ # buff
+ res = []
+ # idx
+ # r
+ # g
+ # b
+ # // may throw an exception
+ buff = self._download("rgb.bin?typ=4&pos=" + str(int(3*ledIndex)) + "&len=" + str(int(3*count)))
+ del res[:]
+
+ idx = 0
+ while idx < count:
+ r = YGetByte(buff, 3*idx)
+ g = YGetByte(buff, 3*idx+1)
+ b = YGetByte(buff, 3*idx+2)
+ res.append(r*65536+g*256+b)
+ idx = idx + 1
+
+ return res
+
+ def get_linkedSeqArray(self, ledIndex, count):
+ """
+ Returns a list on sequence index for each RGB LED. The first number represents the
+ sequence index for the the first LED, the second number represents the sequence
+ index for the second LED, etc.
+
+ @param ledIndex : index of the first LED which should be returned
+ @param count : number of LEDs which should be returned
+
+ @return a list of integers with sequence index
+
+ On failure, throws an exception or returns an empty array.
+ """
+ # buff
+ res = []
+ # idx
+ # seq
+ # // may throw an exception
+ buff = self._download("rgb.bin?typ=1&pos=" + str(int(ledIndex)) + "&len=" + str(int(count)))
+ del res[:]
+
+ idx = 0
+ while idx < count:
+ seq = YGetByte(buff, idx)
+ res.append(seq)
+ idx = idx + 1
+
+ return res
+
+ def get_blinkSeqSignatures(self, seqIndex, count):
+ """
+ Returns a list on 32 bit signatures for specified blinking sequences.
+ Since blinking sequences cannot be read from the device, this can be used
+ to detect if a specific blinking sequence is already programmed.
+
+ @param seqIndex : index of the first blinking sequence which should be returned
+ @param count : number of blinking sequences which should be returned
+
+ @return a list of 32 bit integer signatures
+
+ On failure, throws an exception or returns an empty array.
+ """
+ # buff
+ res = []
+ # idx
+ # hh
+ # hl
+ # lh
+ # ll
+ # // may throw an exception
+ buff = self._download("rgb.bin?typ=2&pos=" + str(int(4*seqIndex)) + "&len=" + str(int(4*count)))
+ del res[:]
+
+ idx = 0
+ while idx < count:
+ hh = YGetByte(buff, 4*idx)
+ hl = YGetByte(buff, 4*idx+1)
+ lh = YGetByte(buff, 4*idx+2)
+ ll = YGetByte(buff, 4*idx+3)
+ res.append(((hh) << (24))+((hl) << (16))+((lh) << (8))+ll)
+ idx = idx + 1
+
+ return res
+
+ def get_blinkSeqStateSpeed(self, seqIndex, count):
+ """
+ Returns a list of integers with the current speed for specified blinking sequences.
+
+ @param seqIndex : index of the first sequence speed which should be returned
+ @param count : number of sequence speeds which should be returned
+
+ @return a list of integers, 0 for sequences turned off and 1 for sequences running
+
+ On failure, throws an exception or returns an empty array.
+ """
+ # buff
+ res = []
+ # idx
+ # lh
+ # ll
+ # // may throw an exception
+ buff = self._download("rgb.bin?typ=6&pos=" + str(int(seqIndex)) + "&len=" + str(int(count)))
+ del res[:]
+
+ idx = 0
+ while idx < count:
+ lh = YGetByte(buff, 2*idx)
+ ll = YGetByte(buff, 2*idx+1)
+ res.append(((lh) << (8))+ll)
+ idx = idx + 1
+
+ return res
+
+ def get_blinkSeqStateAtPowerOn(self, seqIndex, count):
+ """
+ Returns a list of integers with the "auto-start at power on" flag state for specified blinking sequences.
+
+ @param seqIndex : index of the first blinking sequence which should be returned
+ @param count : number of blinking sequences which should be returned
+
+ @return a list of integers, 0 for sequences turned off and 1 for sequences running
+
+ On failure, throws an exception or returns an empty array.
+ """
+ # buff
+ res = []
+ # idx
+ # started
+ # // may throw an exception
+ buff = self._download("rgb.bin?typ=5&pos=" + str(int(seqIndex)) + "&len=" + str(int(count)))
+ del res[:]
+
+ idx = 0
+ while idx < count:
+ started = YGetByte(buff, idx)
+ res.append(started)
+ idx = idx + 1
+
+ return res
+
+ def get_blinkSeqState(self, seqIndex, count):
+ """
+ Returns a list of integers with the started state for specified blinking sequences.
+
+ @param seqIndex : index of the first blinking sequence which should be returned
+ @param count : number of blinking sequences which should be returned
+
+ @return a list of integers, 0 for sequences turned off and 1 for sequences running
+
+ On failure, throws an exception or returns an empty array.
+ """
+ # buff
+ res = []
+ # idx
+ # started
+ # // may throw an exception
+ buff = self._download("rgb.bin?typ=3&pos=" + str(int(seqIndex)) + "&len=" + str(int(count)))
+ del res[:]
+
+ idx = 0
+ while idx < count:
+ started = YGetByte(buff, idx)
+ res.append(started)
+ idx = idx + 1
+
+ return res
+
+ def nextColorLedCluster(self):
+ """
+ Continues the enumeration of RGB LED clusters started using yFirstColorLedCluster().
+
+ @return a pointer to a YColorLedCluster object, corresponding to
+ a RGB LED cluster currently online, or a None pointer
+ if there are no more RGB LED clusters to enumerate.
+ """
+ hwidRef = YRefParam()
+ if YAPI.YISERR(self._nextFunction(hwidRef)):
+ return None
+ if hwidRef.value == "":
+ return None
+ return YColorLedCluster.FindColorLedCluster(hwidRef.value)
+
+#--- (end of YColorLedCluster implementation)
+
+#--- (ColorLedCluster functions)
+
+ @staticmethod
+ def FirstColorLedCluster():
+ """
+ Starts the enumeration of RGB LED clusters currently accessible.
+ Use the method YColorLedCluster.nextColorLedCluster() to iterate on
+ next RGB LED clusters.
+
+ @return a pointer to a YColorLedCluster object, corresponding to
+ the first RGB LED cluster currently online, or a None pointer
+ if there are none.
+ """
+ devRef = YRefParam()
+ neededsizeRef = YRefParam()
+ serialRef = YRefParam()
+ funcIdRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+ errmsgRef = YRefParam()
+ size = YAPI.C_INTSIZE
+ #noinspection PyTypeChecker,PyCallingNonCallable
+ p = (ctypes.c_int * 1)()
+ err = YAPI.apiGetFunctionsByClass("ColorLedCluster", 0, p, size, neededsizeRef, errmsgRef)
+
+ if YAPI.YISERR(err) or not neededsizeRef.value:
+ return None
+
+ if YAPI.YISERR(
+ YAPI.yapiGetFunctionInfo(p[0], devRef, serialRef, funcIdRef, funcNameRef, funcValRef, errmsgRef)):
+ return None
+
+ return YColorLedCluster.FindColorLedCluster(serialRef.value + "." + funcIdRef.value)
+
+#--- (end of ColorLedCluster functions)
diff --git a/yoctoLib.python.26380/Sources/yocto_compass.py b/yoctoLib.python.26380/Sources/yocto_compass.py
new file mode 100644
index 0000000..224ea89
--- /dev/null
+++ b/yoctoLib.python.26380/Sources/yocto_compass.py
@@ -0,0 +1,226 @@
+#*********************************************************************
+#*
+#* $Id: yocto_compass.py 24934 2016-06-30 22:32:01Z mvuilleu $
+#*
+#* Implements yFindCompass(), the high-level API for Compass functions
+#*
+#* - - - - - - - - - License information: - - - - - - - - -
+#*
+#* Copyright (C) 2011 and beyond by Yoctopuce Sarl, Switzerland.
+#*
+#* Yoctopuce Sarl (hereafter Licensor) grants to you a perpetual
+#* non-exclusive license to use, modify, copy and integrate this
+#* file into your software for the sole purpose of interfacing
+#* with Yoctopuce products.
+#*
+#* You may reproduce and distribute copies of this file in
+#* source or object form, as long as the sole purpose of this
+#* code is to interface with Yoctopuce products. You must retain
+#* this notice in the distributed source file.
+#*
+#* You should refer to Yoctopuce General Terms and Conditions
+#* for additional information regarding your rights and
+#* obligations.
+#*
+#* THE SOFTWARE AND DOCUMENTATION ARE PROVIDED 'AS IS' WITHOUT
+#* WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
+#* WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS
+#* FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO
+#* EVENT SHALL LICENSOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
+#* INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA,
+#* COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR
+#* SERVICES, ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT
+#* LIMITED TO ANY DEFENSE THEREOF), ANY CLAIMS FOR INDEMNITY OR
+#* CONTRIBUTION, OR OTHER SIMILAR COSTS, WHETHER ASSERTED ON THE
+#* BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE), BREACH OF
+#* WARRANTY, OR OTHERWISE.
+#*
+#*********************************************************************/
+
+
+__docformat__ = 'restructuredtext en'
+from yocto_api import *
+
+
+#--- (YCompass class start)
+#noinspection PyProtectedMember
+class YCompass(YSensor):
+ """
+ The YSensor class is the parent class for all Yoctopuce sensors. It can be
+ used to read the current value and unit of any sensor, read the min/max
+ value, configure autonomous recording frequency and access recorded data.
+ It also provide a function to register a callback invoked each time the
+ observed value changes, or at a predefined interval. Using this class rather
+ than a specific subclass makes it possible to create generic applications
+ that work with any Yoctopuce sensor, even those that do not yet exist.
+ Note: The YAnButton class is the only analog input which does not inherit
+ from YSensor.
+
+ """
+#--- (end of YCompass class start)
+ #--- (YCompass return codes)
+ #--- (end of YCompass return codes)
+ #--- (YCompass dlldef)
+ #--- (end of YCompass dlldef)
+ #--- (YCompass definitions)
+ BANDWIDTH_INVALID = YAPI.INVALID_INT
+ MAGNETICHEADING_INVALID = YAPI.INVALID_DOUBLE
+ AXIS_X = 0
+ AXIS_Y = 1
+ AXIS_Z = 2
+ AXIS_INVALID = -1
+ #--- (end of YCompass definitions)
+
+ def __init__(self, func):
+ super(YCompass, self).__init__(func)
+ self._className = 'Compass'
+ #--- (YCompass attributes)
+ self._callback = None
+ self._bandwidth = YCompass.BANDWIDTH_INVALID
+ self._axis = YCompass.AXIS_INVALID
+ self._magneticHeading = YCompass.MAGNETICHEADING_INVALID
+ #--- (end of YCompass attributes)
+
+ #--- (YCompass implementation)
+ def _parseAttr(self, member):
+ if member.name == "bandwidth":
+ self._bandwidth = member.ivalue
+ return 1
+ if member.name == "axis":
+ self._axis = member.ivalue
+ return 1
+ if member.name == "magneticHeading":
+ self._magneticHeading = round(member.ivalue * 1000.0 / 65536.0) / 1000.0
+ return 1
+ super(YCompass, self)._parseAttr(member)
+
+ def get_bandwidth(self):
+ """
+ Returns the measure update frequency, measured in Hz (Yocto-3D-V2 only).
+
+ @return an integer corresponding to the measure update frequency, measured in Hz (Yocto-3D-V2 only)
+
+ On failure, throws an exception or returns YCompass.BANDWIDTH_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YCompass.BANDWIDTH_INVALID
+ return self._bandwidth
+
+ def set_bandwidth(self, newval):
+ """
+ Changes the measure update frequency, measured in Hz (Yocto-3D-V2 only). When the
+ frequency is lower, the device performs averaging.
+
+ @param newval : an integer corresponding to the measure update frequency, measured in Hz (Yocto-3D-V2 only)
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("bandwidth", rest_val)
+
+ def get_axis(self):
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YCompass.AXIS_INVALID
+ return self._axis
+
+ def get_magneticHeading(self):
+ """
+ Returns the magnetic heading, regardless of the configured bearing.
+
+ @return a floating point number corresponding to the magnetic heading, regardless of the configured bearing
+
+ On failure, throws an exception or returns YCompass.MAGNETICHEADING_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YCompass.MAGNETICHEADING_INVALID
+ return self._magneticHeading
+
+ @staticmethod
+ def FindCompass(func):
+ """
+ Retrieves a compass for a given identifier.
+ The identifier can be specified using several formats:
+ <ul>
+ <li>FunctionLogicalName</li>
+ <li>ModuleSerialNumber.FunctionIdentifier</li>
+ <li>ModuleSerialNumber.FunctionLogicalName</li>
+ <li>ModuleLogicalName.FunctionIdentifier</li>
+ <li>ModuleLogicalName.FunctionLogicalName</li>
+ </ul>
+
+ This function does not require that the compass is online at the time
+ it is invoked. The returned object is nevertheless valid.
+ Use the method YCompass.isOnline() to test if the compass is
+ indeed online at a given time. In case of ambiguity when looking for
+ a compass by logical name, no error is notified: the first instance
+ found is returned. The search is performed first by hardware name,
+ then by logical name.
+
+ @param func : a string that uniquely characterizes the compass
+
+ @return a YCompass object allowing you to drive the compass.
+ """
+ # obj
+ obj = YFunction._FindFromCache("Compass", func)
+ if obj is None:
+ obj = YCompass(func)
+ YFunction._AddToCache("Compass", func, obj)
+ return obj
+
+ def nextCompass(self):
+ """
+ Continues the enumeration of compasses started using yFirstCompass().
+
+ @return a pointer to a YCompass object, corresponding to
+ a compass currently online, or a None pointer
+ if there are no more compasses to enumerate.
+ """
+ hwidRef = YRefParam()
+ if YAPI.YISERR(self._nextFunction(hwidRef)):
+ return None
+ if hwidRef.value == "":
+ return None
+ return YCompass.FindCompass(hwidRef.value)
+
+#--- (end of YCompass implementation)
+
+#--- (Compass functions)
+
+ @staticmethod
+ def FirstCompass():
+ """
+ Starts the enumeration of compasses currently accessible.
+ Use the method YCompass.nextCompass() to iterate on
+ next compasses.
+
+ @return a pointer to a YCompass object, corresponding to
+ the first compass currently online, or a None pointer
+ if there are none.
+ """
+ devRef = YRefParam()
+ neededsizeRef = YRefParam()
+ serialRef = YRefParam()
+ funcIdRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+ errmsgRef = YRefParam()
+ size = YAPI.C_INTSIZE
+ #noinspection PyTypeChecker,PyCallingNonCallable
+ p = (ctypes.c_int * 1)()
+ err = YAPI.apiGetFunctionsByClass("Compass", 0, p, size, neededsizeRef, errmsgRef)
+
+ if YAPI.YISERR(err) or not neededsizeRef.value:
+ return None
+
+ if YAPI.YISERR(
+ YAPI.yapiGetFunctionInfo(p[0], devRef, serialRef, funcIdRef, funcNameRef, funcValRef, errmsgRef)):
+ return None
+
+ return YCompass.FindCompass(serialRef.value + "." + funcIdRef.value)
+
+#--- (end of Compass functions)
diff --git a/yoctoLib.python.26380/Sources/yocto_current.py b/yoctoLib.python.26380/Sources/yocto_current.py
new file mode 100644
index 0000000..e0f5b03
--- /dev/null
+++ b/yoctoLib.python.26380/Sources/yocto_current.py
@@ -0,0 +1,173 @@
+#*********************************************************************
+#*
+#* $Id: yocto_current.py 26183 2016-12-15 00:14:02Z mvuilleu $
+#*
+#* Implements yFindCurrent(), the high-level API for Current functions
+#*
+#* - - - - - - - - - License information: - - - - - - - - -
+#*
+#* Copyright (C) 2011 and beyond by Yoctopuce Sarl, Switzerland.
+#*
+#* Yoctopuce Sarl (hereafter Licensor) grants to you a perpetual
+#* non-exclusive license to use, modify, copy and integrate this
+#* file into your software for the sole purpose of interfacing
+#* with Yoctopuce products.
+#*
+#* You may reproduce and distribute copies of this file in
+#* source or object form, as long as the sole purpose of this
+#* code is to interface with Yoctopuce products. You must retain
+#* this notice in the distributed source file.
+#*
+#* You should refer to Yoctopuce General Terms and Conditions
+#* for additional information regarding your rights and
+#* obligations.
+#*
+#* THE SOFTWARE AND DOCUMENTATION ARE PROVIDED 'AS IS' WITHOUT
+#* WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
+#* WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS
+#* FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO
+#* EVENT SHALL LICENSOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
+#* INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA,
+#* COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR
+#* SERVICES, ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT
+#* LIMITED TO ANY DEFENSE THEREOF), ANY CLAIMS FOR INDEMNITY OR
+#* CONTRIBUTION, OR OTHER SIMILAR COSTS, WHETHER ASSERTED ON THE
+#* BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE), BREACH OF
+#* WARRANTY, OR OTHERWISE.
+#*
+#*********************************************************************/
+
+
+__docformat__ = 'restructuredtext en'
+from yocto_api import *
+
+
+#--- (YCurrent class start)
+#noinspection PyProtectedMember
+class YCurrent(YSensor):
+ """
+ The Yoctopuce class YCurrent allows you to read and configure Yoctopuce current
+ sensors. It inherits from YSensor class the core functions to read measurements,
+ register callback functions, access to the autonomous datalogger.
+
+ """
+#--- (end of YCurrent class start)
+ #--- (YCurrent return codes)
+ #--- (end of YCurrent return codes)
+ #--- (YCurrent dlldef)
+ #--- (end of YCurrent dlldef)
+ #--- (YCurrent definitions)
+ ENABLED_FALSE = 0
+ ENABLED_TRUE = 1
+ ENABLED_INVALID = -1
+ #--- (end of YCurrent definitions)
+
+ def __init__(self, func):
+ super(YCurrent, self).__init__(func)
+ self._className = 'Current'
+ #--- (YCurrent attributes)
+ self._callback = None
+ self._enabled = YCurrent.ENABLED_INVALID
+ #--- (end of YCurrent attributes)
+
+ #--- (YCurrent implementation)
+ def _parseAttr(self, member):
+ if member.name == "enabled":
+ self._enabled = member.ivalue
+ return 1
+ super(YCurrent, self)._parseAttr(member)
+
+ def get_enabled(self):
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YCurrent.ENABLED_INVALID
+ return self._enabled
+
+ def set_enabled(self, newval):
+ rest_val = "1" if newval > 0 else "0"
+ return self._setAttr("enabled", rest_val)
+
+ @staticmethod
+ def FindCurrent(func):
+ """
+ Retrieves a current sensor for a given identifier.
+ The identifier can be specified using several formats:
+ <ul>
+ <li>FunctionLogicalName</li>
+ <li>ModuleSerialNumber.FunctionIdentifier</li>
+ <li>ModuleSerialNumber.FunctionLogicalName</li>
+ <li>ModuleLogicalName.FunctionIdentifier</li>
+ <li>ModuleLogicalName.FunctionLogicalName</li>
+ </ul>
+
+ This function does not require that the current sensor is online at the time
+ it is invoked. The returned object is nevertheless valid.
+ Use the method YCurrent.isOnline() to test if the current sensor is
+ indeed online at a given time. In case of ambiguity when looking for
+ a current sensor by logical name, no error is notified: the first instance
+ found is returned. The search is performed first by hardware name,
+ then by logical name.
+
+ @param func : a string that uniquely characterizes the current sensor
+
+ @return a YCurrent object allowing you to drive the current sensor.
+ """
+ # obj
+ obj = YFunction._FindFromCache("Current", func)
+ if obj is None:
+ obj = YCurrent(func)
+ YFunction._AddToCache("Current", func, obj)
+ return obj
+
+ def nextCurrent(self):
+ """
+ Continues the enumeration of current sensors started using yFirstCurrent().
+
+ @return a pointer to a YCurrent object, corresponding to
+ a current sensor currently online, or a None pointer
+ if there are no more current sensors to enumerate.
+ """
+ hwidRef = YRefParam()
+ if YAPI.YISERR(self._nextFunction(hwidRef)):
+ return None
+ if hwidRef.value == "":
+ return None
+ return YCurrent.FindCurrent(hwidRef.value)
+
+#--- (end of YCurrent implementation)
+
+#--- (Current functions)
+
+ @staticmethod
+ def FirstCurrent():
+ """
+ Starts the enumeration of current sensors currently accessible.
+ Use the method YCurrent.nextCurrent() to iterate on
+ next current sensors.
+
+ @return a pointer to a YCurrent object, corresponding to
+ the first current sensor currently online, or a None pointer
+ if there are none.
+ """
+ devRef = YRefParam()
+ neededsizeRef = YRefParam()
+ serialRef = YRefParam()
+ funcIdRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+ errmsgRef = YRefParam()
+ size = YAPI.C_INTSIZE
+ #noinspection PyTypeChecker,PyCallingNonCallable
+ p = (ctypes.c_int * 1)()
+ err = YAPI.apiGetFunctionsByClass("Current", 0, p, size, neededsizeRef, errmsgRef)
+
+ if YAPI.YISERR(err) or not neededsizeRef.value:
+ return None
+
+ if YAPI.YISERR(
+ YAPI.yapiGetFunctionInfo(p[0], devRef, serialRef, funcIdRef, funcNameRef, funcValRef, errmsgRef)):
+ return None
+
+ return YCurrent.FindCurrent(serialRef.value + "." + funcIdRef.value)
+
+#--- (end of Current functions)
diff --git a/yoctoLib.python.26380/Sources/yocto_currentloopoutput.py b/yoctoLib.python.26380/Sources/yocto_currentloopoutput.py
new file mode 100644
index 0000000..d9a1e31
--- /dev/null
+++ b/yoctoLib.python.26380/Sources/yocto_currentloopoutput.py
@@ -0,0 +1,279 @@
+#*********************************************************************
+#*
+#* $Id: yocto_currentloopoutput.py 23243 2016-02-23 14:13:12Z seb $
+#*
+#* Implements yFindCurrentLoopOutput(), the high-level API for CurrentLoopOutput functions
+#*
+#* - - - - - - - - - License information: - - - - - - - - -
+#*
+#* Copyright (C) 2011 and beyond by Yoctopuce Sarl, Switzerland.
+#*
+#* Yoctopuce Sarl (hereafter Licensor) grants to you a perpetual
+#* non-exclusive license to use, modify, copy and integrate this
+#* file into your software for the sole purpose of interfacing
+#* with Yoctopuce products.
+#*
+#* You may reproduce and distribute copies of this file in
+#* source or object form, as long as the sole purpose of this
+#* code is to interface with Yoctopuce products. You must retain
+#* this notice in the distributed source file.
+#*
+#* You should refer to Yoctopuce General Terms and Conditions
+#* for additional information regarding your rights and
+#* obligations.
+#*
+#* THE SOFTWARE AND DOCUMENTATION ARE PROVIDED 'AS IS' WITHOUT
+#* WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
+#* WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS
+#* FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO
+#* EVENT SHALL LICENSOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
+#* INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA,
+#* COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR
+#* SERVICES, ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT
+#* LIMITED TO ANY DEFENSE THEREOF), ANY CLAIMS FOR INDEMNITY OR
+#* CONTRIBUTION, OR OTHER SIMILAR COSTS, WHETHER ASSERTED ON THE
+#* BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE), BREACH OF
+#* WARRANTY, OR OTHERWISE.
+#*
+#*********************************************************************/
+
+
+__docformat__ = 'restructuredtext en'
+from yocto_api import *
+
+
+#--- (YCurrentLoopOutput class start)
+#noinspection PyProtectedMember
+class YCurrentLoopOutput(YFunction):
+ """
+ The Yoctopuce application programming interface allows you to change the value of the 4-20mA
+ output as well as to know the current loop state.
+
+ """
+#--- (end of YCurrentLoopOutput class start)
+ #--- (YCurrentLoopOutput return codes)
+ #--- (end of YCurrentLoopOutput return codes)
+ #--- (YCurrentLoopOutput dlldef)
+ #--- (end of YCurrentLoopOutput dlldef)
+ #--- (YCurrentLoopOutput definitions)
+ CURRENT_INVALID = YAPI.INVALID_DOUBLE
+ CURRENTTRANSITION_INVALID = YAPI.INVALID_STRING
+ CURRENTATSTARTUP_INVALID = YAPI.INVALID_DOUBLE
+ LOOPPOWER_NOPWR = 0
+ LOOPPOWER_LOWPWR = 1
+ LOOPPOWER_POWEROK = 2
+ LOOPPOWER_INVALID = -1
+ #--- (end of YCurrentLoopOutput definitions)
+
+ def __init__(self, func):
+ super(YCurrentLoopOutput, self).__init__(func)
+ self._className = 'CurrentLoopOutput'
+ #--- (YCurrentLoopOutput attributes)
+ self._callback = None
+ self._current = YCurrentLoopOutput.CURRENT_INVALID
+ self._currentTransition = YCurrentLoopOutput.CURRENTTRANSITION_INVALID
+ self._currentAtStartUp = YCurrentLoopOutput.CURRENTATSTARTUP_INVALID
+ self._loopPower = YCurrentLoopOutput.LOOPPOWER_INVALID
+ #--- (end of YCurrentLoopOutput attributes)
+
+ #--- (YCurrentLoopOutput implementation)
+ def _parseAttr(self, member):
+ if member.name == "current":
+ self._current = round(member.ivalue * 1000.0 / 65536.0) / 1000.0
+ return 1
+ if member.name == "currentTransition":
+ self._currentTransition = member.svalue
+ return 1
+ if member.name == "currentAtStartUp":
+ self._currentAtStartUp = round(member.ivalue * 1000.0 / 65536.0) / 1000.0
+ return 1
+ if member.name == "loopPower":
+ self._loopPower = member.ivalue
+ return 1
+ super(YCurrentLoopOutput, self)._parseAttr(member)
+
+ def set_current(self, newval):
+ """
+ Changes the current loop, the valid range is from 3 to 21mA. If the loop is
+ not propely powered, the target current is not reached and
+ loopPower is set to LOWPWR.
+
+ @param newval : a floating point number corresponding to the current loop, the valid range is from 3 to 21mA
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(int(round(newval * 65536.0, 1)))
+ return self._setAttr("current", rest_val)
+
+ def get_current(self):
+ """
+ Returns the loop current set point in mA.
+
+ @return a floating point number corresponding to the loop current set point in mA
+
+ On failure, throws an exception or returns YCurrentLoopOutput.CURRENT_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YCurrentLoopOutput.CURRENT_INVALID
+ return self._current
+
+ def get_currentTransition(self):
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YCurrentLoopOutput.CURRENTTRANSITION_INVALID
+ return self._currentTransition
+
+ def set_currentTransition(self, newval):
+ rest_val = newval
+ return self._setAttr("currentTransition", rest_val)
+
+ def set_currentAtStartUp(self, newval):
+ """
+ Changes the loop current at device start up. Remember to call the matching
+ module saveToFlash() method, otherwise this call has no effect.
+
+ @param newval : a floating point number corresponding to the loop current at device start up
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(int(round(newval * 65536.0, 1)))
+ return self._setAttr("currentAtStartUp", rest_val)
+
+ def get_currentAtStartUp(self):
+ """
+ Returns the current in the loop at device startup, in mA.
+
+ @return a floating point number corresponding to the current in the loop at device startup, in mA
+
+ On failure, throws an exception or returns YCurrentLoopOutput.CURRENTATSTARTUP_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YCurrentLoopOutput.CURRENTATSTARTUP_INVALID
+ return self._currentAtStartUp
+
+ def get_loopPower(self):
+ """
+ Returns the loop powerstate. POWEROK: the loop
+ is powered. NOPWR: the loop in not powered. LOWPWR: the loop is not
+ powered enough to maintain the current required (insufficient voltage).
+
+ @return a value among YCurrentLoopOutput.LOOPPOWER_NOPWR, YCurrentLoopOutput.LOOPPOWER_LOWPWR and
+ YCurrentLoopOutput.LOOPPOWER_POWEROK corresponding to the loop powerstate
+
+ On failure, throws an exception or returns YCurrentLoopOutput.LOOPPOWER_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YCurrentLoopOutput.LOOPPOWER_INVALID
+ return self._loopPower
+
+ @staticmethod
+ def FindCurrentLoopOutput(func):
+ """
+ Retrieves a 4-20mA output for a given identifier.
+ The identifier can be specified using several formats:
+ <ul>
+ <li>FunctionLogicalName</li>
+ <li>ModuleSerialNumber.FunctionIdentifier</li>
+ <li>ModuleSerialNumber.FunctionLogicalName</li>
+ <li>ModuleLogicalName.FunctionIdentifier</li>
+ <li>ModuleLogicalName.FunctionLogicalName</li>
+ </ul>
+
+ This function does not require that the 4-20mA output is online at the time
+ it is invoked. The returned object is nevertheless valid.
+ Use the method YCurrentLoopOutput.isOnline() to test if the 4-20mA output is
+ indeed online at a given time. In case of ambiguity when looking for
+ a 4-20mA output by logical name, no error is notified: the first instance
+ found is returned. The search is performed first by hardware name,
+ then by logical name.
+
+ @param func : a string that uniquely characterizes the 4-20mA output
+
+ @return a YCurrentLoopOutput object allowing you to drive the 4-20mA output.
+ """
+ # obj
+ obj = YFunction._FindFromCache("CurrentLoopOutput", func)
+ if obj is None:
+ obj = YCurrentLoopOutput(func)
+ YFunction._AddToCache("CurrentLoopOutput", func, obj)
+ return obj
+
+ def currentMove(self, mA_target, ms_duration):
+ """
+ Performs a smooth transistion of current flowing in the loop. Any current explicit
+ change cancels any ongoing transition process.
+
+ @param mA_target : new current value at the end of the transition
+ (floating-point number, representing the transition duration in mA)
+ @param ms_duration : total duration of the transition, in milliseconds
+
+ @return YAPI.SUCCESS when the call succeeds.
+ """
+ # newval
+ if mA_target < 3.0:
+ mA_target = 3.0
+ if mA_target > 21.0:
+ mA_target = 21.0
+ newval = "" + str(int(round(mA_target*1000))) + ":" + str(int(ms_duration))
+ # // may throw an exception
+ return self.set_currentTransition(newval)
+
+ def nextCurrentLoopOutput(self):
+ """
+ Continues the enumeration of 4-20mA outputs started using yFirstCurrentLoopOutput().
+
+ @return a pointer to a YCurrentLoopOutput object, corresponding to
+ a 4-20mA output currently online, or a None pointer
+ if there are no more 4-20mA outputs to enumerate.
+ """
+ hwidRef = YRefParam()
+ if YAPI.YISERR(self._nextFunction(hwidRef)):
+ return None
+ if hwidRef.value == "":
+ return None
+ return YCurrentLoopOutput.FindCurrentLoopOutput(hwidRef.value)
+
+#--- (end of YCurrentLoopOutput implementation)
+
+#--- (CurrentLoopOutput functions)
+
+ @staticmethod
+ def FirstCurrentLoopOutput():
+ """
+ Starts the enumeration of 4-20mA outputs currently accessible.
+ Use the method YCurrentLoopOutput.nextCurrentLoopOutput() to iterate on
+ next 4-20mA outputs.
+
+ @return a pointer to a YCurrentLoopOutput object, corresponding to
+ the first 4-20mA output currently online, or a None pointer
+ if there are none.
+ """
+ devRef = YRefParam()
+ neededsizeRef = YRefParam()
+ serialRef = YRefParam()
+ funcIdRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+ errmsgRef = YRefParam()
+ size = YAPI.C_INTSIZE
+ #noinspection PyTypeChecker,PyCallingNonCallable
+ p = (ctypes.c_int * 1)()
+ err = YAPI.apiGetFunctionsByClass("CurrentLoopOutput", 0, p, size, neededsizeRef, errmsgRef)
+
+ if YAPI.YISERR(err) or not neededsizeRef.value:
+ return None
+
+ if YAPI.YISERR(
+ YAPI.yapiGetFunctionInfo(p[0], devRef, serialRef, funcIdRef, funcNameRef, funcValRef, errmsgRef)):
+ return None
+
+ return YCurrentLoopOutput.FindCurrentLoopOutput(serialRef.value + "." + funcIdRef.value)
+
+#--- (end of CurrentLoopOutput functions)
diff --git a/yoctoLib.python.26380/Sources/yocto_datalogger.py b/yoctoLib.python.26380/Sources/yocto_datalogger.py
new file mode 100644
index 0000000..f23362d
--- /dev/null
+++ b/yoctoLib.python.26380/Sources/yocto_datalogger.py
@@ -0,0 +1,614 @@
+#*********************************************************************
+#*
+#* $Id: yocto_datalogger.py 22197 2015-12-02 12:58:24Z mvuilleu $
+#*
+#* Implements yFindDataLogger(), the high-level API for DataLogger
+#*
+#* - - - - - - - - - License information: - - - - - - - - -
+#*
+#* Copyright (C) 2011 and beyond by Yoctopuce Sarl, Switzerland.
+#*
+#* Yoctopuce Sarl (hereafter Licensor) grants to you a perpetual
+#* non-exclusive license to use, modify, copy and integrate this
+#* file into your software for the sole purpose of interfacing
+#* with Yoctopuce products.
+#*
+#* You may reproduce and distribute copies of this file in
+#* source or object form, as long as the sole purpose of this
+#* code is to interface with Yoctopuce products. You must retain
+#* this notice in the distributed source file.
+#*
+#* You should refer to Yoctopuce General Terms and Conditions
+#* for additional information regarding your rights and
+#* obligations.
+#*
+#* THE SOFTWARE AND DOCUMENTATION ARE PROVIDED 'AS IS' WITHOUT
+#* WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
+#* WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS
+#* FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO
+#* EVENT SHALL LICENSOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
+#* INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA,
+#* COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR
+#* SERVICES, ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT
+#* LIMITED TO ANY DEFENSE THEREOF), ANY CLAIMS FOR INDEMNITY OR
+#* CONTRIBUTION, OR OTHER SIMILAR COSTS, WHETHER ASSERTED ON THE
+#* BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE), BREACH OF
+#* WARRANTY, OR OTHERWISE.
+#*
+#*********************************************************************/
+
+__docformat__ = 'restructuredtext en'
+from yocto_api import *
+
+
+#--- (generated code: YDataLogger class start)
+#noinspection PyProtectedMember
+class YDataLogger(YFunction):
+ """
+ Yoctopuce sensors include a non-volatile memory capable of storing ongoing measured
+ data automatically, without requiring a permanent connection to a computer.
+ The DataLogger function controls the global parameters of the internal data
+ logger.
+
+ """
+#--- (end of generated code: YDataLogger class start)
+
+ Y_DATA_INVALID = YAPI.INVALID_DOUBLE
+
+ #--- (generated code: YDataLogger definitions)
+ CURRENTRUNINDEX_INVALID = YAPI.INVALID_UINT
+ TIMEUTC_INVALID = YAPI.INVALID_LONG
+ RECORDING_OFF = 0
+ RECORDING_ON = 1
+ RECORDING_PENDING = 2
+ RECORDING_INVALID = -1
+ AUTOSTART_OFF = 0
+ AUTOSTART_ON = 1
+ AUTOSTART_INVALID = -1
+ BEACONDRIVEN_OFF = 0
+ BEACONDRIVEN_ON = 1
+ BEACONDRIVEN_INVALID = -1
+ CLEARHISTORY_FALSE = 0
+ CLEARHISTORY_TRUE = 1
+ CLEARHISTORY_INVALID = -1
+ #--- (end of generated code: YDataLogger definitions)
+
+ def __init__(self, func):
+ super(YDataLogger, self).__init__(func)
+ self._className = "DataLogger"
+ #--- (generated code: YDataLogger attributes)
+ self._callback = None
+ self._currentRunIndex = YDataLogger.CURRENTRUNINDEX_INVALID
+ self._timeUTC = YDataLogger.TIMEUTC_INVALID
+ self._recording = YDataLogger.RECORDING_INVALID
+ self._autoStart = YDataLogger.AUTOSTART_INVALID
+ self._beaconDriven = YDataLogger.BEACONDRIVEN_INVALID
+ self._clearHistory = YDataLogger.CLEARHISTORY_INVALID
+ #--- (end of generated code: YDataLogger attributes)
+ self._dataLoggerURL = ""
+
+ #--- (generated code: YDataLogger implementation)
+ def _parseAttr(self, member):
+ if member.name == "currentRunIndex":
+ self._currentRunIndex = member.ivalue
+ return 1
+ if member.name == "timeUTC":
+ self._timeUTC = member.ivalue
+ return 1
+ if member.name == "recording":
+ self._recording = member.ivalue
+ return 1
+ if member.name == "autoStart":
+ self._autoStart = member.ivalue
+ return 1
+ if member.name == "beaconDriven":
+ self._beaconDriven = member.ivalue
+ return 1
+ if member.name == "clearHistory":
+ self._clearHistory = member.ivalue
+ return 1
+ super(YDataLogger, self)._parseAttr(member)
+
+ def get_currentRunIndex(self):
+ """
+ Returns the current run number, corresponding to the number of times the module was
+ powered on with the dataLogger enabled at some point.
+
+ @return an integer corresponding to the current run number, corresponding to the number of times the module was
+ powered on with the dataLogger enabled at some point
+
+ On failure, throws an exception or returns YDataLogger.CURRENTRUNINDEX_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YDataLogger.CURRENTRUNINDEX_INVALID
+ return self._currentRunIndex
+
+ def get_timeUTC(self):
+ """
+ Returns the Unix timestamp for current UTC time, if known.
+
+ @return an integer corresponding to the Unix timestamp for current UTC time, if known
+
+ On failure, throws an exception or returns YDataLogger.TIMEUTC_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YDataLogger.TIMEUTC_INVALID
+ return self._timeUTC
+
+ def set_timeUTC(self, newval):
+ """
+ Changes the current UTC time reference used for recorded data.
+
+ @param newval : an integer corresponding to the current UTC time reference used for recorded data
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("timeUTC", rest_val)
+
+ def get_recording(self):
+ """
+ Returns the current activation state of the data logger.
+
+ @return a value among YDataLogger.RECORDING_OFF, YDataLogger.RECORDING_ON and
+ YDataLogger.RECORDING_PENDING corresponding to the current activation state of the data logger
+
+ On failure, throws an exception or returns YDataLogger.RECORDING_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YDataLogger.RECORDING_INVALID
+ return self._recording
+
+ def set_recording(self, newval):
+ """
+ Changes the activation state of the data logger to start/stop recording data.
+
+ @param newval : a value among YDataLogger.RECORDING_OFF, YDataLogger.RECORDING_ON and
+ YDataLogger.RECORDING_PENDING corresponding to the activation state of the data logger to
+ start/stop recording data
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("recording", rest_val)
+
+ def get_autoStart(self):
+ """
+ Returns the default activation state of the data logger on power up.
+
+ @return either YDataLogger.AUTOSTART_OFF or YDataLogger.AUTOSTART_ON, according to the default
+ activation state of the data logger on power up
+
+ On failure, throws an exception or returns YDataLogger.AUTOSTART_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YDataLogger.AUTOSTART_INVALID
+ return self._autoStart
+
+ def set_autoStart(self, newval):
+ """
+ Changes the default activation state of the data logger on power up.
+ Remember to call the saveToFlash() method of the module if the
+ modification must be kept.
+
+ @param newval : either YDataLogger.AUTOSTART_OFF or YDataLogger.AUTOSTART_ON, according to the
+ default activation state of the data logger on power up
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = "1" if newval > 0 else "0"
+ return self._setAttr("autoStart", rest_val)
+
+ def get_beaconDriven(self):
+ """
+ Return true if the data logger is synchronised with the localization beacon.
+
+ @return either YDataLogger.BEACONDRIVEN_OFF or YDataLogger.BEACONDRIVEN_ON
+
+ On failure, throws an exception or returns YDataLogger.BEACONDRIVEN_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YDataLogger.BEACONDRIVEN_INVALID
+ return self._beaconDriven
+
+ def set_beaconDriven(self, newval):
+ """
+ Changes the type of synchronisation of the data logger.
+ Remember to call the saveToFlash() method of the module if the
+ modification must be kept.
+
+ @param newval : either YDataLogger.BEACONDRIVEN_OFF or YDataLogger.BEACONDRIVEN_ON, according to
+ the type of synchronisation of the data logger
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = "1" if newval > 0 else "0"
+ return self._setAttr("beaconDriven", rest_val)
+
+ def get_clearHistory(self):
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YDataLogger.CLEARHISTORY_INVALID
+ return self._clearHistory
+
+ def set_clearHistory(self, newval):
+ rest_val = "1" if newval > 0 else "0"
+ return self._setAttr("clearHistory", rest_val)
+
+ @staticmethod
+ def FindDataLogger(func):
+ """
+ Retrieves a data logger for a given identifier.
+ The identifier can be specified using several formats:
+ <ul>
+ <li>FunctionLogicalName</li>
+ <li>ModuleSerialNumber.FunctionIdentifier</li>
+ <li>ModuleSerialNumber.FunctionLogicalName</li>
+ <li>ModuleLogicalName.FunctionIdentifier</li>
+ <li>ModuleLogicalName.FunctionLogicalName</li>
+ </ul>
+
+ This function does not require that the data logger is online at the time
+ it is invoked. The returned object is nevertheless valid.
+ Use the method YDataLogger.isOnline() to test if the data logger is
+ indeed online at a given time. In case of ambiguity when looking for
+ a data logger by logical name, no error is notified: the first instance
+ found is returned. The search is performed first by hardware name,
+ then by logical name.
+
+ @param func : a string that uniquely characterizes the data logger
+
+ @return a YDataLogger object allowing you to drive the data logger.
+ """
+ # obj
+ obj = YFunction._FindFromCache("DataLogger", func)
+ if obj is None:
+ obj = YDataLogger(func)
+ YFunction._AddToCache("DataLogger", func, obj)
+ return obj
+
+ def forgetAllDataStreams(self):
+ """
+ Clears the data logger memory and discards all recorded data streams.
+ This method also resets the current run index to zero.
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.set_clearHistory(YDataLogger.CLEARHISTORY_TRUE)
+
+ def get_dataSets(self):
+ """
+ Returns a list of YDataSet objects that can be used to retrieve
+ all measures stored by the data logger.
+
+ This function only works if the device uses a recent firmware,
+ as YDataSet objects are not supported by firmwares older than
+ version 13000.
+
+ @return a list of YDataSet object.
+
+ On failure, throws an exception or returns an empty list.
+ """
+ return self.parse_dataSets(self._download("logger.json"))
+
+ def parse_dataSets(self, json):
+ dslist = []
+ # dataset
+ res = []
+ # // may throw an exception
+ dslist = self._json_get_array(json)
+ del res[:]
+ for y in dslist:
+ dataset = YDataSet(self)
+ dataset._parse(y)
+ res.append(dataset)
+ return res
+
+ def nextDataLogger(self):
+ """
+ Continues the enumeration of data loggers started using yFirstDataLogger().
+
+ @return a pointer to a YDataLogger object, corresponding to
+ a data logger currently online, or a None pointer
+ if there are no more data loggers to enumerate.
+ """
+ hwidRef = YRefParam()
+ if YAPI.YISERR(self._nextFunction(hwidRef)):
+ return None
+ if hwidRef.value == "":
+ return None
+ return YDataLogger.FindDataLogger(hwidRef.value)
+
+#--- (end of generated code: YDataLogger implementation)
+
+ def getData(self, runIdx, timeIdx, jsondataRef):
+ devRef = YRefParam()
+ errmsgRef = YRefParam()
+ bufferRef = YRefParam()
+ if self._dataLoggerURL == "":
+ self._dataLoggerURL = "/logger.json"
+
+ # Resolve our reference to our device, load REST API
+ res = self._getDevice(devRef, errmsgRef)
+ if YAPI.YISERR(res):
+ self._throw(res, errmsgRef.value)
+ return res
+ if timeIdx > 0:
+ query = "GET " + self._dataLoggerURL + "?run=" + str(runIdx) + "&time=" + str(timeIdx) + " HTTP/1.1\r\n\r\n"
+ else:
+ query = "GET " + self._dataLoggerURL + " HTTP/1.1\r\n\r\n"
+ res = devRef.value.HTTPRequest(query, bufferRef, errmsgRef)
+ if YAPI.YISERR(res):
+ res = YAPI.UpdateDeviceList(errmsgRef)
+ if YAPI.YISERR(res):
+ self._throw(res, errmsgRef.value)
+ return res
+ res = devRef.value.HTTPRequest("GET " + self._dataLoggerURL + " HTTP/1.1\n\r\n\r", bufferRef, errmsgRef)
+ if YAPI.YISERR(res):
+ self._throw(res, errmsgRef.value)
+ return res
+ try:
+ jsondataRef.value = YAPI.TJsonParser(bufferRef.value)
+ except YAPI.JsonError as e:
+ if not errmsgRef is None:
+ errmsgRef.value = "unexpected JSON structure: " + e.msg
+ return YAPI.IO_ERROR
+ if jsondataRef.value.httpcode == 404 and self._dataLoggerURL != "/dataLogger.json":
+ # retry using backward-compatible datalogger URL
+ self._dataLoggerURL = "/dataLogger.json"
+ return self.getData(runIdx, timeIdx, jsondataRef)
+
+ return YAPI.SUCCESS
+
+ def get_dataStreams(self, v):
+ """
+ Builds a list of all data streams hold by the data logger (legacy method).
+ The caller must pass by reference an empty array to hold YDataStream
+ objects, and the function fills it with objects describing available
+ data sequences.
+
+ This is the old way to retrieve data from the DataLogger.
+ For new applications, you should rather use get_dataSets()
+ method, or call directly get_recordedData() on the
+ sensor object.
+
+ @param v : an array of YDataStream objects to be filled in
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ jRef = YRefParam()
+ v.value = []
+ res = self.getData(0, 0, jRef)
+ if res != YAPI.SUCCESS:
+ return res
+
+ root = jRef.value.GetRootNode()
+ if len(root.items) == 0:
+ return YAPI.SUCCESS
+ if root.items[0].recordtype == YAPI.TJSONRECORDTYPE.JSON_ARRAY:
+ for i in range(len(root.items)):
+ # old datalogger format: [runIdx, timerel, utc, interval]
+ el = root.items[i]
+ v.value.append(
+ YOldDataStream(self, el.items[0].ivalue,
+ el.items[1].ivalue, el.items[2].ivalue, el.items[3].ivalue))
+ elif root.items[0].recordtype == YAPI.TJSONRECORDTYPE.JSON_STRUCT:
+ # new datalogger format: {"id":"...","unit":"...","streams":["...",...]}
+ json_buffer = jRef.value.convertToString(root, False)
+ sets = self.parse_dataSets(YString2Byte(json_buffer))
+ for curset in sets:
+ ds = curset.get_privateDataStreams()
+ for si in ds:
+ # return a user-owned copy
+ v.value.append(si)
+ return YAPI.SUCCESS
+
+ #--- (generated code: DataLogger functions)
+
+ @staticmethod
+ def FirstDataLogger():
+ """
+ Starts the enumeration of data loggers currently accessible.
+ Use the method YDataLogger.nextDataLogger() to iterate on
+ next data loggers.
+
+ @return a pointer to a YDataLogger object, corresponding to
+ the first data logger currently online, or a None pointer
+ if there are none.
+ """
+ devRef = YRefParam()
+ neededsizeRef = YRefParam()
+ serialRef = YRefParam()
+ funcIdRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+ errmsgRef = YRefParam()
+ size = YAPI.C_INTSIZE
+ #noinspection PyTypeChecker,PyCallingNonCallable
+ p = (ctypes.c_int * 1)()
+ err = YAPI.apiGetFunctionsByClass("DataLogger", 0, p, size, neededsizeRef, errmsgRef)
+
+ if YAPI.YISERR(err) or not neededsizeRef.value:
+ return None
+
+ if YAPI.YISERR(
+ YAPI.yapiGetFunctionInfo(p[0], devRef, serialRef, funcIdRef, funcNameRef, funcValRef, errmsgRef)):
+ return None
+
+ return YDataLogger.FindDataLogger(serialRef.value + "." + funcIdRef.value)
+
+#--- (end of generated code: DataLogger functions)
+
+
+class YOldDataStream(YDataStream):
+
+ def __init__(self, parent, run, stamp, utc, itv):
+ super(YOldDataStream, self).__init__(parent)
+ self._dataLogger = parent
+ self._runNo = run
+ self._timeStamp = stamp
+ self._utcStamp = utc
+ self._interval = itv
+ self._samplesPerHour = 3600 / self._interval
+ self._isClosed = 1
+ self._minVal = self.DATA_INVALID
+ self._avgVal = self.DATA_INVALID
+ self._maxVal = self.DATA_INVALID
+
+ def get_startTime(self):
+ """
+ Returns the relative start time of the data stream, measured in seconds.
+ For recent firmwares, the value is relative to the present time,
+ which means the value is always negative.
+ If the device uses a firmware older than version 13000, value is
+ relative to the start of the time the device was powered on, and
+ is always positive.
+ If you need an absolute UTC timestamp, use get_startTimeUTC().
+
+ @return an unsigned number corresponding to the number of seconds
+ between the start of the run and the beginning of this data
+ stream.
+ """
+ return self._timeStamp
+
+ def get_dataSamplesInterval(self):
+ """
+ Returns the number of seconds elapsed between two consecutive
+ rows of this data stream. By default, the data logger records one row
+ per second, but there might be alternative streams at lower resolution
+ created by summarizing the original stream for archiving purposes.
+
+ This method does not cause any access to the device, as the value
+ is preloaded in the object at instantiation time.
+
+ @return an unsigned number corresponding to a number of seconds.
+ """
+ return self._interval
+
+ def loadStream(self):
+ jsonRef = YRefParam()
+ coldiv = []
+ coltype = []
+ udat = []
+ colscl = []
+ colofs = []
+ c = 0
+ x = 0
+ y = 0
+ res = self._dataLogger.getData(self._runNo, self._timeStamp, jsonRef)
+ if res != YAPI.SUCCESS:
+ return res
+ self._nRows = 0
+ self._nCols = 0
+ del self._columnNames[:]
+ self._values = [[]]
+ root = jsonRef.value.GetRootNode()
+ for i in range(len(root.members)):
+ el = root.members[i]
+ name = el.name
+ if name == "time":
+ self._timeStamp = el.ivalue
+ elif name == "UTC":
+ self._utcStamp = el.ivalue
+ elif name == "interval":
+ self._interval = el.ivalue
+ elif name == "nRows":
+ self._nRows = el.ivalue
+ elif name == "keys":
+ if not self._nCols:
+ self._nCols = len(el.items)
+ for j in range(self._nCols):
+ self._columnNames.append(el.items[j].svalue)
+ elif name == "div":
+ if not self._nCols:
+ self._nCols = len(el.items)
+ for j in range(self._nCols):
+ coldiv.append(el.items[j].ivalue)
+ elif name == "type":
+ if not self._nCols:
+ self._nCols = len(el.items)
+ for j in range(self._nCols):
+ coltype.append(el.items[j].ivalue)
+ elif name == "scal":
+ if not self._nCols:
+ self._nCols = len(el.items)
+ for j in range(self._nCols):
+ colscl.append(el.items[j].ivalue / 65536.0)
+ if coltype[j]:
+ colofs.append(-32767)
+ else:
+ colofs.append(0)
+ elif name == "data":
+ if len(colscl) <= 0:
+ for j in range(self._nCols):
+ colscl.append(1.0 / coldiv[j])
+ if coltype[j]:
+ colofs[j] = -32767
+ else:
+ colofs[j] = 0
+
+ del udat[:]
+ if el.recordtype == YAPI.TJSONRECORDTYPE.JSON_STRING:
+ sdat = el.svalue
+ p = 0
+ while p < len(sdat):
+ c = sdat[p]
+ p += 1
+ if c >= 'a':
+ srcpos = int(len(udat) - 1 - (ord(c) - ord('a')))
+ if srcpos < 0:
+ #noinspection PyProtectedMember
+ self._dataLogger._throw(YAPI.IO_ERROR, "Unexpected JSON reply format")
+ return YAPI.IO_ERROR
+ val = udat[srcpos]
+ else:
+ if p + 2 > len(sdat):
+ #noinspection PyProtectedMember
+ self._dataLogger._throw(YAPI.IO_ERROR, "Unexpected JSON reply format")
+ return YAPI.IO_ERROR
+
+ val = (ord(c) - ord('0'))
+ c = sdat[p]
+ p += 1
+ val += (ord(c) - ord('0')) << 5
+ c = sdat[p]
+ p += 1
+ if c == 'z':
+ c = "\\"
+ val += (ord(c) - ord('0')) << 10
+ udat.append(val)
+ else:
+ count = len(el.items)
+ for j in range(count):
+ tmp = int(el.items[j].ivalue)
+ udat.append(tmp)
+ self._values = [[0] * self._nCols] * self._nRows
+ for uval in udat:
+ if coltype[x] < 2:
+ value = (uval + colofs[x]) * colscl[x]
+ else:
+ #noinspection PyProtectedMember
+ value = YAPI._decimalToDouble(uval - 32767)
+ self._values[y][x] = value
+ x += 1
+ if x == self._nCols:
+ x = 0
+ y += 1
+ return YAPI.SUCCESS
diff --git a/yoctoLib.python.26380/Sources/yocto_digitalio.py b/yoctoLib.python.26380/Sources/yocto_digitalio.py
new file mode 100644
index 0000000..a9a9daf
--- /dev/null
+++ b/yoctoLib.python.26380/Sources/yocto_digitalio.py
@@ -0,0 +1,539 @@
+#*********************************************************************
+#*
+#* $Id: yocto_digitalio.py 25871 2016-11-15 14:32:56Z seb $
+#*
+#* Implements yFindDigitalIO(), the high-level API for DigitalIO functions
+#*
+#* - - - - - - - - - License information: - - - - - - - - -
+#*
+#* Copyright (C) 2011 and beyond by Yoctopuce Sarl, Switzerland.
+#*
+#* Yoctopuce Sarl (hereafter Licensor) grants to you a perpetual
+#* non-exclusive license to use, modify, copy and integrate this
+#* file into your software for the sole purpose of interfacing
+#* with Yoctopuce products.
+#*
+#* You may reproduce and distribute copies of this file in
+#* source or object form, as long as the sole purpose of this
+#* code is to interface with Yoctopuce products. You must retain
+#* this notice in the distributed source file.
+#*
+#* You should refer to Yoctopuce General Terms and Conditions
+#* for additional information regarding your rights and
+#* obligations.
+#*
+#* THE SOFTWARE AND DOCUMENTATION ARE PROVIDED 'AS IS' WITHOUT
+#* WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
+#* WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS
+#* FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO
+#* EVENT SHALL LICENSOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
+#* INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA,
+#* COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR
+#* SERVICES, ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT
+#* LIMITED TO ANY DEFENSE THEREOF), ANY CLAIMS FOR INDEMNITY OR
+#* CONTRIBUTION, OR OTHER SIMILAR COSTS, WHETHER ASSERTED ON THE
+#* BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE), BREACH OF
+#* WARRANTY, OR OTHERWISE.
+#*
+#*********************************************************************/
+
+
+__docformat__ = 'restructuredtext en'
+from yocto_api import *
+
+
+#--- (YDigitalIO class start)
+#noinspection PyProtectedMember
+class YDigitalIO(YFunction):
+ """
+ The Yoctopuce application programming interface allows you to switch the state of each
+ bit of the I/O port. You can switch all bits at once, or one by one. The library
+ can also automatically generate short pulses of a determined duration. Electrical behavior
+ of each I/O can be modified (open drain and reverse polarity).
+
+ """
+#--- (end of YDigitalIO class start)
+ #--- (YDigitalIO return codes)
+ #--- (end of YDigitalIO return codes)
+ #--- (YDigitalIO dlldef)
+ #--- (end of YDigitalIO dlldef)
+ #--- (YDigitalIO definitions)
+ PORTSTATE_INVALID = YAPI.INVALID_UINT
+ PORTDIRECTION_INVALID = YAPI.INVALID_UINT
+ PORTOPENDRAIN_INVALID = YAPI.INVALID_UINT
+ PORTPOLARITY_INVALID = YAPI.INVALID_UINT
+ PORTSIZE_INVALID = YAPI.INVALID_UINT
+ COMMAND_INVALID = YAPI.INVALID_STRING
+ OUTPUTVOLTAGE_USB_5V = 0
+ OUTPUTVOLTAGE_USB_3V = 1
+ OUTPUTVOLTAGE_EXT_V = 2
+ OUTPUTVOLTAGE_INVALID = -1
+ #--- (end of YDigitalIO definitions)
+
+ def __init__(self, func):
+ super(YDigitalIO, self).__init__(func)
+ self._className = 'DigitalIO'
+ #--- (YDigitalIO attributes)
+ self._callback = None
+ self._portState = YDigitalIO.PORTSTATE_INVALID
+ self._portDirection = YDigitalIO.PORTDIRECTION_INVALID
+ self._portOpenDrain = YDigitalIO.PORTOPENDRAIN_INVALID
+ self._portPolarity = YDigitalIO.PORTPOLARITY_INVALID
+ self._portSize = YDigitalIO.PORTSIZE_INVALID
+ self._outputVoltage = YDigitalIO.OUTPUTVOLTAGE_INVALID
+ self._command = YDigitalIO.COMMAND_INVALID
+ #--- (end of YDigitalIO attributes)
+
+ #--- (YDigitalIO implementation)
+ def _parseAttr(self, member):
+ if member.name == "portState":
+ self._portState = member.ivalue
+ return 1
+ if member.name == "portDirection":
+ self._portDirection = member.ivalue
+ return 1
+ if member.name == "portOpenDrain":
+ self._portOpenDrain = member.ivalue
+ return 1
+ if member.name == "portPolarity":
+ self._portPolarity = member.ivalue
+ return 1
+ if member.name == "portSize":
+ self._portSize = member.ivalue
+ return 1
+ if member.name == "outputVoltage":
+ self._outputVoltage = member.ivalue
+ return 1
+ if member.name == "command":
+ self._command = member.svalue
+ return 1
+ super(YDigitalIO, self)._parseAttr(member)
+
+ def get_portState(self):
+ """
+ Returns the digital IO port state: bit 0 represents input 0, and so on.
+
+ @return an integer corresponding to the digital IO port state: bit 0 represents input 0, and so on
+
+ On failure, throws an exception or returns YDigitalIO.PORTSTATE_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YDigitalIO.PORTSTATE_INVALID
+ return self._portState
+
+ def set_portState(self, newval):
+ """
+ Changes the digital IO port state: bit 0 represents input 0, and so on. This function has no effect
+ on bits configured as input in portDirection.
+
+ @param newval : an integer corresponding to the digital IO port state: bit 0 represents input 0, and so on
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("portState", rest_val)
+
+ def get_portDirection(self):
+ """
+ Returns the IO direction of all bits of the port: 0 makes a bit an input, 1 makes it an output.
+
+ @return an integer corresponding to the IO direction of all bits of the port: 0 makes a bit an
+ input, 1 makes it an output
+
+ On failure, throws an exception or returns YDigitalIO.PORTDIRECTION_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YDigitalIO.PORTDIRECTION_INVALID
+ return self._portDirection
+
+ def set_portDirection(self, newval):
+ """
+ Changes the IO direction of all bits of the port: 0 makes a bit an input, 1 makes it an output.
+ Remember to call the saveToFlash() method to make sure the setting is kept after a reboot.
+
+ @param newval : an integer corresponding to the IO direction of all bits of the port: 0 makes a bit
+ an input, 1 makes it an output
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("portDirection", rest_val)
+
+ def get_portOpenDrain(self):
+ """
+ Returns the electrical interface for each bit of the port. For each bit set to 0 the matching I/O
+ works in the regular,
+ intuitive way, for each bit set to 1, the I/O works in reverse mode.
+
+ @return an integer corresponding to the electrical interface for each bit of the port
+
+ On failure, throws an exception or returns YDigitalIO.PORTOPENDRAIN_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YDigitalIO.PORTOPENDRAIN_INVALID
+ return self._portOpenDrain
+
+ def set_portOpenDrain(self, newval):
+ """
+ Changes the electrical interface for each bit of the port. 0 makes a bit a regular input/output, 1 makes
+ it an open-drain (open-collector) input/output. Remember to call the
+ saveToFlash() method to make sure the setting is kept after a reboot.
+
+ @param newval : an integer corresponding to the electrical interface for each bit of the port
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("portOpenDrain", rest_val)
+
+ def get_portPolarity(self):
+ """
+ Returns the polarity of all the bits of the port. For each bit set to 0, the matching I/O works the regular,
+ intuitive way; for each bit set to 1, the I/O works in reverse mode.
+
+ @return an integer corresponding to the polarity of all the bits of the port
+
+ On failure, throws an exception or returns YDigitalIO.PORTPOLARITY_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YDigitalIO.PORTPOLARITY_INVALID
+ return self._portPolarity
+
+ def set_portPolarity(self, newval):
+ """
+ Changes the polarity of all the bits of the port: For each bit set to 0, the matching I/O works the regular,
+ intuitive way; for each bit set to 1, the I/O works in reverse mode.
+ Remember to call the saveToFlash() method to make sure the setting will be kept after a reboot.
+
+ @param newval : an integer corresponding to the polarity of all the bits of the port: For each bit
+ set to 0, the matching I/O works the regular,
+ intuitive way; for each bit set to 1, the I/O works in reverse mode
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("portPolarity", rest_val)
+
+ def get_portSize(self):
+ """
+ Returns the number of bits implemented in the I/O port.
+
+ @return an integer corresponding to the number of bits implemented in the I/O port
+
+ On failure, throws an exception or returns YDigitalIO.PORTSIZE_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YDigitalIO.PORTSIZE_INVALID
+ return self._portSize
+
+ def get_outputVoltage(self):
+ """
+ Returns the voltage source used to drive output bits.
+
+ @return a value among YDigitalIO.OUTPUTVOLTAGE_USB_5V, YDigitalIO.OUTPUTVOLTAGE_USB_3V and
+ YDigitalIO.OUTPUTVOLTAGE_EXT_V corresponding to the voltage source used to drive output bits
+
+ On failure, throws an exception or returns YDigitalIO.OUTPUTVOLTAGE_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YDigitalIO.OUTPUTVOLTAGE_INVALID
+ return self._outputVoltage
+
+ def set_outputVoltage(self, newval):
+ """
+ Changes the voltage source used to drive output bits.
+ Remember to call the saveToFlash() method to make sure the setting is kept after a reboot.
+
+ @param newval : a value among YDigitalIO.OUTPUTVOLTAGE_USB_5V, YDigitalIO.OUTPUTVOLTAGE_USB_3V and
+ YDigitalIO.OUTPUTVOLTAGE_EXT_V corresponding to the voltage source used to drive output bits
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("outputVoltage", rest_val)
+
+ def get_command(self):
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YDigitalIO.COMMAND_INVALID
+ return self._command
+
+ def set_command(self, newval):
+ rest_val = newval
+ return self._setAttr("command", rest_val)
+
+ @staticmethod
+ def FindDigitalIO(func):
+ """
+ Retrieves a digital IO port for a given identifier.
+ The identifier can be specified using several formats:
+ <ul>
+ <li>FunctionLogicalName</li>
+ <li>ModuleSerialNumber.FunctionIdentifier</li>
+ <li>ModuleSerialNumber.FunctionLogicalName</li>
+ <li>ModuleLogicalName.FunctionIdentifier</li>
+ <li>ModuleLogicalName.FunctionLogicalName</li>
+ </ul>
+
+ This function does not require that the digital IO port is online at the time
+ it is invoked. The returned object is nevertheless valid.
+ Use the method YDigitalIO.isOnline() to test if the digital IO port is
+ indeed online at a given time. In case of ambiguity when looking for
+ a digital IO port by logical name, no error is notified: the first instance
+ found is returned. The search is performed first by hardware name,
+ then by logical name.
+
+ @param func : a string that uniquely characterizes the digital IO port
+
+ @return a YDigitalIO object allowing you to drive the digital IO port.
+ """
+ # obj
+ obj = YFunction._FindFromCache("DigitalIO", func)
+ if obj is None:
+ obj = YDigitalIO(func)
+ YFunction._AddToCache("DigitalIO", func, obj)
+ return obj
+
+ def set_bitState(self, bitno, bitstate):
+ """
+ Sets a single bit of the I/O port.
+
+ @param bitno : the bit number; lowest bit has index 0
+ @param bitstate : the state of the bit (1 or 0)
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ if not (bitstate >= 0):
+ self._throw(YAPI.INVALID_ARGUMENT, "invalid bitstate")
+ if not (bitstate <= 1):
+ self._throw(YAPI.INVALID_ARGUMENT, "invalid bitstate")
+ return self.set_command("" + str(chr(82+bitstate)) + "" + str(int(bitno)))
+
+ def get_bitState(self, bitno):
+ """
+ Returns the state of a single bit of the I/O port.
+
+ @param bitno : the bit number; lowest bit has index 0
+
+ @return the bit state (0 or 1)
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ # portVal
+ portVal = self.get_portState()
+ return ((((portVal) >> (bitno))) & (1))
+
+ def toggle_bitState(self, bitno):
+ """
+ Reverts a single bit of the I/O port.
+
+ @param bitno : the bit number; lowest bit has index 0
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.set_command("T" + str(int(bitno)))
+
+ def set_bitDirection(self, bitno, bitdirection):
+ """
+ Changes the direction of a single bit from the I/O port.
+
+ @param bitno : the bit number; lowest bit has index 0
+ @param bitdirection : direction to set, 0 makes the bit an input, 1 makes it an output.
+ Remember to call the saveToFlash() method to make sure the setting is kept after a reboot.
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ if not (bitdirection >= 0):
+ self._throw(YAPI.INVALID_ARGUMENT, "invalid direction")
+ if not (bitdirection <= 1):
+ self._throw(YAPI.INVALID_ARGUMENT, "invalid direction")
+ return self.set_command("" + str(chr(73+6*bitdirection)) + "" + str(int(bitno)))
+
+ def get_bitDirection(self, bitno):
+ """
+ Returns the direction of a single bit from the I/O port (0 means the bit is an input, 1 an output).
+
+ @param bitno : the bit number; lowest bit has index 0
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ # portDir
+ portDir = self.get_portDirection()
+ return ((((portDir) >> (bitno))) & (1))
+
+ def set_bitPolarity(self, bitno, bitpolarity):
+ """
+ Changes the polarity of a single bit from the I/O port.
+
+ @param bitno : the bit number; lowest bit has index 0.
+ @param bitpolarity : polarity to set, 0 makes the I/O work in regular mode, 1 makes the I/O works
+ in reverse mode.
+ Remember to call the saveToFlash() method to make sure the setting is kept after a reboot.
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ if not (bitpolarity >= 0):
+ self._throw(YAPI.INVALID_ARGUMENT, "invalid bitpolarity")
+ if not (bitpolarity <= 1):
+ self._throw(YAPI.INVALID_ARGUMENT, "invalid bitpolarity")
+ return self.set_command("" + str(chr(110+4*bitpolarity)) + "" + str(int(bitno)))
+
+ def get_bitPolarity(self, bitno):
+ """
+ Returns the polarity of a single bit from the I/O port (0 means the I/O works in regular mode, 1
+ means the I/O works in reverse mode).
+
+ @param bitno : the bit number; lowest bit has index 0
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ # portPol
+ portPol = self.get_portPolarity()
+ return ((((portPol) >> (bitno))) & (1))
+
+ def set_bitOpenDrain(self, bitno, opendrain):
+ """
+ Changes the electrical interface of a single bit from the I/O port.
+
+ @param bitno : the bit number; lowest bit has index 0
+ @param opendrain : 0 makes a bit a regular input/output, 1 makes
+ it an open-drain (open-collector) input/output. Remember to call the
+ saveToFlash() method to make sure the setting is kept after a reboot.
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ if not (opendrain >= 0):
+ self._throw(YAPI.INVALID_ARGUMENT, "invalid state")
+ if not (opendrain <= 1):
+ self._throw(YAPI.INVALID_ARGUMENT, "invalid state")
+ return self.set_command("" + str(chr(100-32*opendrain)) + "" + str(int(bitno)))
+
+ def get_bitOpenDrain(self, bitno):
+ """
+ Returns the type of electrical interface of a single bit from the I/O port. (0 means the bit is an
+ input, 1 an output).
+
+ @param bitno : the bit number; lowest bit has index 0
+
+ @return 0 means the a bit is a regular input/output, 1 means the bit is an open-drain
+ (open-collector) input/output.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ # portOpenDrain
+ portOpenDrain = self.get_portOpenDrain()
+ return ((((portOpenDrain) >> (bitno))) & (1))
+
+ def pulse(self, bitno, ms_duration):
+ """
+ Triggers a pulse on a single bit for a specified duration. The specified bit
+ will be turned to 1, and then back to 0 after the given duration.
+
+ @param bitno : the bit number; lowest bit has index 0
+ @param ms_duration : desired pulse duration in milliseconds. Be aware that the device time
+ resolution is not guaranteed up to the millisecond.
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.set_command("Z" + str(int(bitno)) + ",0," + str(int(ms_duration)))
+
+ def delayedPulse(self, bitno, ms_delay, ms_duration):
+ """
+ Schedules a pulse on a single bit for a specified duration. The specified bit
+ will be turned to 1, and then back to 0 after the given duration.
+
+ @param bitno : the bit number; lowest bit has index 0
+ @param ms_delay : waiting time before the pulse, in milliseconds
+ @param ms_duration : desired pulse duration in milliseconds. Be aware that the device time
+ resolution is not guaranteed up to the millisecond.
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.set_command("Z" + str(int(bitno)) + "," + str(int(ms_delay)) + "," + str(int(ms_duration)))
+
+ def nextDigitalIO(self):
+ """
+ Continues the enumeration of digital IO ports started using yFirstDigitalIO().
+
+ @return a pointer to a YDigitalIO object, corresponding to
+ a digital IO port currently online, or a None pointer
+ if there are no more digital IO ports to enumerate.
+ """
+ hwidRef = YRefParam()
+ if YAPI.YISERR(self._nextFunction(hwidRef)):
+ return None
+ if hwidRef.value == "":
+ return None
+ return YDigitalIO.FindDigitalIO(hwidRef.value)
+
+#--- (end of YDigitalIO implementation)
+
+#--- (DigitalIO functions)
+
+ @staticmethod
+ def FirstDigitalIO():
+ """
+ Starts the enumeration of digital IO ports currently accessible.
+ Use the method YDigitalIO.nextDigitalIO() to iterate on
+ next digital IO ports.
+
+ @return a pointer to a YDigitalIO object, corresponding to
+ the first digital IO port currently online, or a None pointer
+ if there are none.
+ """
+ devRef = YRefParam()
+ neededsizeRef = YRefParam()
+ serialRef = YRefParam()
+ funcIdRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+ errmsgRef = YRefParam()
+ size = YAPI.C_INTSIZE
+ #noinspection PyTypeChecker,PyCallingNonCallable
+ p = (ctypes.c_int * 1)()
+ err = YAPI.apiGetFunctionsByClass("DigitalIO", 0, p, size, neededsizeRef, errmsgRef)
+
+ if YAPI.YISERR(err) or not neededsizeRef.value:
+ return None
+
+ if YAPI.YISERR(
+ YAPI.yapiGetFunctionInfo(p[0], devRef, serialRef, funcIdRef, funcNameRef, funcValRef, errmsgRef)):
+ return None
+
+ return YDigitalIO.FindDigitalIO(serialRef.value + "." + funcIdRef.value)
+
+#--- (end of DigitalIO functions)
diff --git a/yoctoLib.python.26380/Sources/yocto_display.py b/yoctoLib.python.26380/Sources/yocto_display.py
new file mode 100644
index 0000000..1bac492
--- /dev/null
+++ b/yoctoLib.python.26380/Sources/yocto_display.py
@@ -0,0 +1,1118 @@
+#*********************************************************************
+#*
+#* $Id: yocto_display.py 25275 2016-08-24 13:42:24Z mvuilleu $
+#*
+#* Implements yFindDisplay(), the high-level API for Display functions
+#*
+#* - - - - - - - - - License information: - - - - - - - - -
+#*
+#* Copyright (C) 2011 and beyond by Yoctopuce Sarl, Switzerland.
+#*
+#* Yoctopuce Sarl (hereafter Licensor) grants to you a perpetual
+#* non-exclusive license to use, modify, copy and integrate this
+#* file into your software for the sole purpose of interfacing
+#* with Yoctopuce products.
+#*
+#* You may reproduce and distribute copies of this file in
+#* source or object form, as long as the sole purpose of this
+#* code is to interface with Yoctopuce products. You must retain
+#* this notice in the distributed source file.
+#*
+#* You should refer to Yoctopuce General Terms and Conditions
+#* for additional information regarding your rights and
+#* obligations.
+#*
+#* THE SOFTWARE AND DOCUMENTATION ARE PROVIDED 'AS IS' WITHOUT
+#* WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
+#* WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS
+#* FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO
+#* EVENT SHALL LICENSOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
+#* INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA,
+#* COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR
+#* SERVICES, ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT
+#* LIMITED TO ANY DEFENSE THEREOF), ANY CLAIMS FOR INDEMNITY OR
+#* CONTRIBUTION, OR OTHER SIMILAR COSTS, WHETHER ASSERTED ON THE
+#* BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE), BREACH OF
+#* WARRANTY, OR OTHERWISE.
+#*
+#*********************************************************************/
+
+__docformat__ = 'restructuredtext en'
+from yocto_api import *
+
+
+#--- (generated code: YDisplayLayer class start)
+#noinspection PyProtectedMember
+class YDisplayLayer(object):
+ """
+ A DisplayLayer is an image layer containing objects to display
+ (bitmaps, text, etc.). The content is displayed only when
+ the layer is active on the screen (and not masked by other
+ overlapping layers).
+
+ """
+#--- (end of generated code: YDisplayLayer class start)
+
+ def __init__(self, parent, layerId):
+ self._display = parent
+ self._id = int(layerId)
+ self._cmdbuff = ""
+ self._hidden = False
+ #--- (generated code: YDisplayLayer attributes)
+ #--- (end of generated code: YDisplayLayer attributes)
+
+ #--- (generated code: YDisplayLayer definitions)
+ class ALIGN:
+ def __init__(self):
+ pass
+ TOP_LEFT, CENTER_LEFT, BASELINE_LEFT, BOTTOM_LEFT, TOP_CENTER, CENTER, BASELINE_CENTER, BOTTOM_CENTER, \
+ TOP_DECIMAL, CENTER_DECIMAL, BASELINE_DECIMAL, BOTTOM_DECIMAL, TOP_RIGHT, CENTER_RIGHT, BASELINE_RIGHT, \
+ BOTTOM_RIGHT = range(16)
+ #--- (end of generated code: YDisplayLayer definitions)
+
+ def flush_now(self):
+ res = YAPI.SUCCESS
+ if self._cmdbuff != "":
+ res = self._display.sendCommand(self._cmdbuff)
+ self._cmdbuff = ""
+ return res
+
+ def command_push(self, cmd):
+ res = YAPI.SUCCESS
+ if len(self._cmdbuff) + len(cmd) >= 100:
+ res = self.flush_now()
+ if self._cmdbuff == "":
+ self._cmdbuff = str(self._id)
+ self._cmdbuff = self._cmdbuff + cmd
+ return res
+
+ def command_flush(self, cmd):
+ res = self.command_push(cmd)
+ if not self._hidden:
+ res = self.flush_now()
+ return res
+
+ #--- (generated code: YDisplayLayer implementation)
+ def reset(self):
+ """
+ Reverts the layer to its initial state (fully transparent, default settings).
+ Reinitializes the drawing pointer to the upper left position,
+ and selects the most visible pen color. If you only want to erase the layer
+ content, use the method clear() instead.
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ self._hidden = False
+ return self.command_flush("X")
+
+ def clear(self):
+ """
+ Erases the whole content of the layer (makes it fully transparent).
+ This method does not change any other attribute of the layer.
+ To reinitialize the layer attributes to defaults settings, use the method
+ reset() instead.
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.command_flush("x")
+
+ def selectColorPen(self, color):
+ """
+ Selects the pen color for all subsequent drawing functions,
+ including text drawing. The pen color is provided as an RGB value.
+ For grayscale or monochrome displays, the value is
+ automatically converted to the proper range.
+
+ @param color : the desired pen color, as a 24-bit RGB value
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.command_push("c" + ("%06X" % color))
+
+ def selectGrayPen(self, graylevel):
+ """
+ Selects the pen gray level for all subsequent drawing functions,
+ including text drawing. The gray level is provided as a number between
+ 0 (black) and 255 (white, or whichever the lighest color is).
+ For monochrome displays (without gray levels), any value
+ lower than 128 is rendered as black, and any value equal
+ or above to 128 is non-black.
+
+ @param graylevel : the desired gray level, from 0 to 255
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.command_push("g" + str(int(graylevel)))
+
+ def selectEraser(self):
+ """
+ Selects an eraser instead of a pen for all subsequent drawing functions,
+ except for bitmap copy functions. Any point drawn using the eraser
+ becomes transparent (as when the layer is empty), showing the other
+ layers beneath it.
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.command_push("e")
+
+ def setAntialiasingMode(self, mode):
+ """
+ Enables or disables anti-aliasing for drawing oblique lines and circles.
+ Anti-aliasing provides a smoother aspect when looked from far enough,
+ but it can add fuzzyness when the display is looked from very close.
+ At the end of the day, it is your personal choice.
+ Anti-aliasing is enabled by default on grayscale and color displays,
+ but you can disable it if you prefer. This setting has no effect
+ on monochrome displays.
+
+ @param mode : <t>true</t> to enable antialiasing, <t>false</t> to
+ disable it.
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.command_push("a" + ("1" if mode else "0"))
+
+ def drawPixel(self, x, y):
+ """
+ Draws a single pixel at the specified position.
+
+ @param x : the distance from left of layer, in pixels
+ @param y : the distance from top of layer, in pixels
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.command_flush("P" + str(int(x)) + "," + str(int(y)))
+
+ def drawRect(self, x1, y1, x2, y2):
+ """
+ Draws an empty rectangle at a specified position.
+
+ @param x1 : the distance from left of layer to the left border of the rectangle, in pixels
+ @param y1 : the distance from top of layer to the top border of the rectangle, in pixels
+ @param x2 : the distance from left of layer to the right border of the rectangle, in pixels
+ @param y2 : the distance from top of layer to the bottom border of the rectangle, in pixels
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.command_flush("R" + str(int(x1)) + "," + str(int(y1)) + "," + str(int(x2)) + "," + str(int(y2)))
+
+ def drawBar(self, x1, y1, x2, y2):
+ """
+ Draws a filled rectangular bar at a specified position.
+
+ @param x1 : the distance from left of layer to the left border of the rectangle, in pixels
+ @param y1 : the distance from top of layer to the top border of the rectangle, in pixels
+ @param x2 : the distance from left of layer to the right border of the rectangle, in pixels
+ @param y2 : the distance from top of layer to the bottom border of the rectangle, in pixels
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.command_flush("B" + str(int(x1)) + "," + str(int(y1)) + "," + str(int(x2)) + "," + str(int(y2)))
+
+ def drawCircle(self, x, y, r):
+ """
+ Draws an empty circle at a specified position.
+
+ @param x : the distance from left of layer to the center of the circle, in pixels
+ @param y : the distance from top of layer to the center of the circle, in pixels
+ @param r : the radius of the circle, in pixels
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.command_flush("C" + str(int(x)) + "," + str(int(y)) + "," + str(int(r)))
+
+ def drawDisc(self, x, y, r):
+ """
+ Draws a filled disc at a given position.
+
+ @param x : the distance from left of layer to the center of the disc, in pixels
+ @param y : the distance from top of layer to the center of the disc, in pixels
+ @param r : the radius of the disc, in pixels
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.command_flush("D" + str(int(x)) + "," + str(int(y)) + "," + str(int(r)))
+
+ def selectFont(self, fontname):
+ """
+ Selects a font to use for the next text drawing functions, by providing the name of the
+ font file. You can use a built-in font as well as a font file that you have previously
+ uploaded to the device built-in memory. If you experience problems selecting a font
+ file, check the device logs for any error message such as missing font file or bad font
+ file format.
+
+ @param fontname : the font file name
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.command_push("&" + fontname + "" + str(chr(27)))
+
+ def drawText(self, x, y, anchor, text):
+ """
+ Draws a text string at the specified position. The point of the text that is aligned
+ to the specified pixel position is called the anchor point, and can be chosen among
+ several options. Text is rendered from left to right, without implicit wrapping.
+
+ @param x : the distance from left of layer to the text anchor point, in pixels
+ @param y : the distance from top of layer to the text anchor point, in pixels
+ @param anchor : the text anchor point, chosen among the YDisplayLayer.ALIGN enumeration:
+ YDisplayLayer.ALIGN.TOP_LEFT, YDisplayLayer.ALIGN.CENTER_LEFT,
+ YDisplayLayer.ALIGN.BASELINE_LEFT, YDisplayLayer.ALIGN.BOTTOM_LEFT,
+ YDisplayLayer.ALIGN.TOP_CENTER, YDisplayLayer.ALIGN.CENTER,
+ YDisplayLayer.ALIGN.BASELINE_CENTER, YDisplayLayer.ALIGN.BOTTOM_CENTER,
+ YDisplayLayer.ALIGN.TOP_DECIMAL, YDisplayLayer.ALIGN.CENTER_DECIMAL,
+ YDisplayLayer.ALIGN.BASELINE_DECIMAL, YDisplayLayer.ALIGN.BOTTOM_DECIMAL,
+ YDisplayLayer.ALIGN.TOP_RIGHT, YDisplayLayer.ALIGN.CENTER_RIGHT,
+ YDisplayLayer.ALIGN.BASELINE_RIGHT, YDisplayLayer.ALIGN.BOTTOM_RIGHT.
+ @param text : the text string to draw
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.command_flush("T" + str(int(x)) + "," + str(int(y)) + "," + str(anchor) + "," + text + "" + str(chr(27)))
+
+ def drawImage(self, x, y, imagename):
+ """
+ Draws a GIF image at the specified position. The GIF image must have been previously
+ uploaded to the device built-in memory. If you experience problems using an image
+ file, check the device logs for any error message such as missing image file or bad
+ image file format.
+
+ @param x : the distance from left of layer to the left of the image, in pixels
+ @param y : the distance from top of layer to the top of the image, in pixels
+ @param imagename : the GIF file name
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.command_flush("*" + str(int(x)) + "," + str(int(y)) + "," + imagename + "" + str(chr(27)))
+
+ def drawBitmap(self, x, y, w, bitmap, bgcol):
+ """
+ Draws a bitmap at the specified position. The bitmap is provided as a binary object,
+ where each pixel maps to a bit, from left to right and from top to bottom.
+ The most significant bit of each byte maps to the leftmost pixel, and the least
+ significant bit maps to the rightmost pixel. Bits set to 1 are drawn using the
+ layer selected pen color. Bits set to 0 are drawn using the specified background
+ gray level, unless -1 is specified, in which case they are not drawn at all
+ (as if transparent).
+
+ @param x : the distance from left of layer to the left of the bitmap, in pixels
+ @param y : the distance from top of layer to the top of the bitmap, in pixels
+ @param w : the width of the bitmap, in pixels
+ @param bitmap : a binary object
+ @param bgcol : the background gray level to use for zero bits (0 = black,
+ 255 = white), or -1 to leave the pixels unchanged
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ # destname
+ destname = "layer" + str(int(self._id)) + ":" + str(int(w)) + "," + str(int(bgcol)) + "@" + str(int(x)) + "," + str(int(y))
+ return self._display.upload(destname,bitmap)
+
+ def moveTo(self, x, y):
+ """
+ Moves the drawing pointer of this layer to the specified position.
+
+ @param x : the distance from left of layer, in pixels
+ @param y : the distance from top of layer, in pixels
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.command_push("@" + str(int(x)) + "," + str(int(y)))
+
+ def lineTo(self, x, y):
+ """
+ Draws a line from current drawing pointer position to the specified position.
+ The specified destination pixel is included in the line. The pointer position
+ is then moved to the end point of the line.
+
+ @param x : the distance from left of layer to the end point of the line, in pixels
+ @param y : the distance from top of layer to the end point of the line, in pixels
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.command_flush("-" + str(int(x)) + "," + str(int(y)))
+
+ def consoleOut(self, text):
+ """
+ Outputs a message in the console area, and advances the console pointer accordingly.
+ The console pointer position is automatically moved to the beginning
+ of the next line when a newline character is met, or when the right margin
+ is hit. When the new text to display extends below the lower margin, the
+ console area is automatically scrolled up.
+
+ @param text : the message to display
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.command_flush("!" + text + "" + str(chr(27)))
+
+ def setConsoleMargins(self, x1, y1, x2, y2):
+ """
+ Sets up display margins for the consoleOut function.
+
+ @param x1 : the distance from left of layer to the left margin, in pixels
+ @param y1 : the distance from top of layer to the top margin, in pixels
+ @param x2 : the distance from left of layer to the right margin, in pixels
+ @param y2 : the distance from top of layer to the bottom margin, in pixels
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.command_push("m" + str(int(x1)) + "," + str(int(y1)) + "," + str(int(x2)) + "," + str(int(y2)))
+
+ def setConsoleBackground(self, bgcol):
+ """
+ Sets up the background color used by the clearConsole function and by
+ the console scrolling feature.
+
+ @param bgcol : the background gray level to use when scrolling (0 = black,
+ 255 = white), or -1 for transparent
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.command_push("b" + str(int(bgcol)))
+
+ def setConsoleWordWrap(self, wordwrap):
+ """
+ Sets up the wrapping behaviour used by the consoleOut function.
+
+ @param wordwrap : true to wrap only between words,
+ false to wrap on the last column anyway.
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.command_push("w" + ("1" if wordwrap else "0"))
+
+ def clearConsole(self):
+ """
+ Blanks the console area within console margins, and resets the console pointer
+ to the upper left corner of the console.
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.command_flush("^")
+
+ def setLayerPosition(self, x, y, scrollTime):
+ """
+ Sets the position of the layer relative to the display upper left corner.
+ When smooth scrolling is used, the display offset of the layer is
+ automatically updated during the next milliseconds to animate the move of the layer.
+
+ @param x : the distance from left of display to the upper left corner of the layer
+ @param y : the distance from top of display to the upper left corner of the layer
+ @param scrollTime : number of milliseconds to use for smooth scrolling, or
+ 0 if the scrolling should be immediate.
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.command_flush("#" + str(int(x)) + "," + str(int(y)) + "," + str(int(scrollTime)))
+
+ def hide(self):
+ """
+ Hides the layer. The state of the layer is perserved but the layer is not displayed
+ on the screen until the next call to unhide(). Hiding the layer can positively
+ affect the drawing speed, since it postpones the rendering until all operations are
+ completed (double-buffering).
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ self.command_push("h")
+ self._hidden = True
+ return self.flush_now()
+
+ def unhide(self):
+ """
+ Shows the layer. Shows the layer again after a hide command.
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ self._hidden = False
+ return self.command_flush("s")
+
+ def get_display(self):
+ """
+ Gets parent YDisplay. Returns the parent YDisplay object of the current YDisplayLayer.
+
+ @return an YDisplay object
+ """
+ return self._display
+
+ def get_displayWidth(self):
+ """
+ Returns the display width, in pixels.
+
+ @return an integer corresponding to the display width, in pixels
+
+ On failure, throws an exception or returns YDisplayLayer.DISPLAYWIDTH_INVALID.
+ """
+ return self._display.get_displayWidth()
+
+ def get_displayHeight(self):
+ """
+ Returns the display height, in pixels.
+
+ @return an integer corresponding to the display height, in pixels
+
+ On failure, throws an exception or returns YDisplayLayer.DISPLAYHEIGHT_INVALID.
+ """
+ return self._display.get_displayHeight()
+
+ def get_layerWidth(self):
+ """
+ Returns the width of the layers to draw on, in pixels.
+
+ @return an integer corresponding to the width of the layers to draw on, in pixels
+
+ On failure, throws an exception or returns YDisplayLayer.LAYERWIDTH_INVALID.
+ """
+ return self._display.get_layerWidth()
+
+ def get_layerHeight(self):
+ """
+ Returns the height of the layers to draw on, in pixels.
+
+ @return an integer corresponding to the height of the layers to draw on, in pixels
+
+ On failure, throws an exception or returns YDisplayLayer.LAYERHEIGHT_INVALID.
+ """
+ return self._display.get_layerHeight()
+
+ def resetHiddenFlag(self):
+ self._hidden = False
+ return YAPI.SUCCESS
+
+#--- (end of generated code: YDisplayLayer implementation)
+
+#--- (DisplayLayer generated code: functions)
+
+#--- (end of DisplayLayer generated code: functions)
+
+
+#--- (generated code: YDisplay class start)
+#noinspection PyProtectedMember
+class YDisplay(YFunction):
+ """
+ Yoctopuce display interface has been designed to easily
+ show information and images. The device provides built-in
+ multi-layer rendering. Layers can be drawn offline, individually,
+ and freely moved on the display. It can also replay recorded
+ sequences (animations).
+
+ """
+#--- (end of generated code: YDisplay class start)
+ #--- (generated code: YDisplay definitions)
+ STARTUPSEQ_INVALID = YAPI.INVALID_STRING
+ BRIGHTNESS_INVALID = YAPI.INVALID_UINT
+ DISPLAYWIDTH_INVALID = YAPI.INVALID_UINT
+ DISPLAYHEIGHT_INVALID = YAPI.INVALID_UINT
+ LAYERWIDTH_INVALID = YAPI.INVALID_UINT
+ LAYERHEIGHT_INVALID = YAPI.INVALID_UINT
+ LAYERCOUNT_INVALID = YAPI.INVALID_UINT
+ COMMAND_INVALID = YAPI.INVALID_STRING
+ ENABLED_FALSE = 0
+ ENABLED_TRUE = 1
+ ENABLED_INVALID = -1
+ ORIENTATION_LEFT = 0
+ ORIENTATION_UP = 1
+ ORIENTATION_RIGHT = 2
+ ORIENTATION_DOWN = 3
+ ORIENTATION_INVALID = -1
+ DISPLAYTYPE_MONO = 0
+ DISPLAYTYPE_GRAY = 1
+ DISPLAYTYPE_RGB = 2
+ DISPLAYTYPE_INVALID = -1
+ #--- (end of generated code: YDisplay definitions)
+
+ def __init__(self, func):
+ super(YDisplay, self).__init__(func)
+ self._className = "Display"
+ #--- (generated code: YDisplay attributes)
+ self._callback = None
+ self._enabled = YDisplay.ENABLED_INVALID
+ self._startupSeq = YDisplay.STARTUPSEQ_INVALID
+ self._brightness = YDisplay.BRIGHTNESS_INVALID
+ self._orientation = YDisplay.ORIENTATION_INVALID
+ self._displayWidth = YDisplay.DISPLAYWIDTH_INVALID
+ self._displayHeight = YDisplay.DISPLAYHEIGHT_INVALID
+ self._displayType = YDisplay.DISPLAYTYPE_INVALID
+ self._layerWidth = YDisplay.LAYERWIDTH_INVALID
+ self._layerHeight = YDisplay.LAYERHEIGHT_INVALID
+ self._layerCount = YDisplay.LAYERCOUNT_INVALID
+ self._command = YDisplay.COMMAND_INVALID
+ #--- (end of generated code: YDisplay attributes)
+ self._sequence = ""
+ self._allDisplayLayers = []
+ self._recording = False
+
+ #--- (generated code: YDisplay implementation)
+ def _parseAttr(self, member):
+ if member.name == "enabled":
+ self._enabled = member.ivalue
+ return 1
+ if member.name == "startupSeq":
+ self._startupSeq = member.svalue
+ return 1
+ if member.name == "brightness":
+ self._brightness = member.ivalue
+ return 1
+ if member.name == "orientation":
+ self._orientation = member.ivalue
+ return 1
+ if member.name == "displayWidth":
+ self._displayWidth = member.ivalue
+ return 1
+ if member.name == "displayHeight":
+ self._displayHeight = member.ivalue
+ return 1
+ if member.name == "displayType":
+ self._displayType = member.ivalue
+ return 1
+ if member.name == "layerWidth":
+ self._layerWidth = member.ivalue
+ return 1
+ if member.name == "layerHeight":
+ self._layerHeight = member.ivalue
+ return 1
+ if member.name == "layerCount":
+ self._layerCount = member.ivalue
+ return 1
+ if member.name == "command":
+ self._command = member.svalue
+ return 1
+ super(YDisplay, self)._parseAttr(member)
+
+ def get_enabled(self):
+ """
+ Returns true if the screen is powered, false otherwise.
+
+ @return either YDisplay.ENABLED_FALSE or YDisplay.ENABLED_TRUE, according to true if the screen is
+ powered, false otherwise
+
+ On failure, throws an exception or returns YDisplay.ENABLED_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YDisplay.ENABLED_INVALID
+ return self._enabled
+
+ def set_enabled(self, newval):
+ """
+ Changes the power state of the display.
+
+ @param newval : either YDisplay.ENABLED_FALSE or YDisplay.ENABLED_TRUE, according to the power
+ state of the display
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = "1" if newval > 0 else "0"
+ return self._setAttr("enabled", rest_val)
+
+ def get_startupSeq(self):
+ """
+ Returns the name of the sequence to play when the displayed is powered on.
+
+ @return a string corresponding to the name of the sequence to play when the displayed is powered on
+
+ On failure, throws an exception or returns YDisplay.STARTUPSEQ_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YDisplay.STARTUPSEQ_INVALID
+ return self._startupSeq
+
+ def set_startupSeq(self, newval):
+ """
+ Changes the name of the sequence to play when the displayed is powered on.
+ Remember to call the saveToFlash() method of the module if the
+ modification must be kept.
+
+ @param newval : a string corresponding to the name of the sequence to play when the displayed is powered on
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = newval
+ return self._setAttr("startupSeq", rest_val)
+
+ def get_brightness(self):
+ """
+ Returns the luminosity of the module informative leds (from 0 to 100).
+
+ @return an integer corresponding to the luminosity of the module informative leds (from 0 to 100)
+
+ On failure, throws an exception or returns YDisplay.BRIGHTNESS_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YDisplay.BRIGHTNESS_INVALID
+ return self._brightness
+
+ def set_brightness(self, newval):
+ """
+ Changes the brightness of the display. The parameter is a value between 0 and
+ 100. Remember to call the saveToFlash() method of the module if the
+ modification must be kept.
+
+ @param newval : an integer corresponding to the brightness of the display
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("brightness", rest_val)
+
+ def get_orientation(self):
+ """
+ Returns the currently selected display orientation.
+
+ @return a value among YDisplay.ORIENTATION_LEFT, YDisplay.ORIENTATION_UP,
+ YDisplay.ORIENTATION_RIGHT and YDisplay.ORIENTATION_DOWN corresponding to the currently selected
+ display orientation
+
+ On failure, throws an exception or returns YDisplay.ORIENTATION_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YDisplay.ORIENTATION_INVALID
+ return self._orientation
+
+ def set_orientation(self, newval):
+ """
+ Changes the display orientation. Remember to call the saveToFlash()
+ method of the module if the modification must be kept.
+
+ @param newval : a value among YDisplay.ORIENTATION_LEFT, YDisplay.ORIENTATION_UP,
+ YDisplay.ORIENTATION_RIGHT and YDisplay.ORIENTATION_DOWN corresponding to the display orientation
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("orientation", rest_val)
+
+ def get_displayWidth(self):
+ """
+ Returns the display width, in pixels.
+
+ @return an integer corresponding to the display width, in pixels
+
+ On failure, throws an exception or returns YDisplay.DISPLAYWIDTH_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YDisplay.DISPLAYWIDTH_INVALID
+ return self._displayWidth
+
+ def get_displayHeight(self):
+ """
+ Returns the display height, in pixels.
+
+ @return an integer corresponding to the display height, in pixels
+
+ On failure, throws an exception or returns YDisplay.DISPLAYHEIGHT_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YDisplay.DISPLAYHEIGHT_INVALID
+ return self._displayHeight
+
+ def get_displayType(self):
+ """
+ Returns the display type: monochrome, gray levels or full color.
+
+ @return a value among YDisplay.DISPLAYTYPE_MONO, YDisplay.DISPLAYTYPE_GRAY and
+ YDisplay.DISPLAYTYPE_RGB corresponding to the display type: monochrome, gray levels or full color
+
+ On failure, throws an exception or returns YDisplay.DISPLAYTYPE_INVALID.
+ """
+ if self._cacheExpiration == datetime.datetime.fromtimestamp(0):
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YDisplay.DISPLAYTYPE_INVALID
+ return self._displayType
+
+ def get_layerWidth(self):
+ """
+ Returns the width of the layers to draw on, in pixels.
+
+ @return an integer corresponding to the width of the layers to draw on, in pixels
+
+ On failure, throws an exception or returns YDisplay.LAYERWIDTH_INVALID.
+ """
+ if self._cacheExpiration == datetime.datetime.fromtimestamp(0):
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YDisplay.LAYERWIDTH_INVALID
+ return self._layerWidth
+
+ def get_layerHeight(self):
+ """
+ Returns the height of the layers to draw on, in pixels.
+
+ @return an integer corresponding to the height of the layers to draw on, in pixels
+
+ On failure, throws an exception or returns YDisplay.LAYERHEIGHT_INVALID.
+ """
+ if self._cacheExpiration == datetime.datetime.fromtimestamp(0):
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YDisplay.LAYERHEIGHT_INVALID
+ return self._layerHeight
+
+ def get_layerCount(self):
+ """
+ Returns the number of available layers to draw on.
+
+ @return an integer corresponding to the number of available layers to draw on
+
+ On failure, throws an exception or returns YDisplay.LAYERCOUNT_INVALID.
+ """
+ if self._cacheExpiration == datetime.datetime.fromtimestamp(0):
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YDisplay.LAYERCOUNT_INVALID
+ return self._layerCount
+
+ def get_command(self):
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YDisplay.COMMAND_INVALID
+ return self._command
+
+ def set_command(self, newval):
+ rest_val = newval
+ return self._setAttr("command", rest_val)
+
+ @staticmethod
+ def FindDisplay(func):
+ """
+ Retrieves a display for a given identifier.
+ The identifier can be specified using several formats:
+ <ul>
+ <li>FunctionLogicalName</li>
+ <li>ModuleSerialNumber.FunctionIdentifier</li>
+ <li>ModuleSerialNumber.FunctionLogicalName</li>
+ <li>ModuleLogicalName.FunctionIdentifier</li>
+ <li>ModuleLogicalName.FunctionLogicalName</li>
+ </ul>
+
+ This function does not require that the display is online at the time
+ it is invoked. The returned object is nevertheless valid.
+ Use the method YDisplay.isOnline() to test if the display is
+ indeed online at a given time. In case of ambiguity when looking for
+ a display by logical name, no error is notified: the first instance
+ found is returned. The search is performed first by hardware name,
+ then by logical name.
+
+ @param func : a string that uniquely characterizes the display
+
+ @return a YDisplay object allowing you to drive the display.
+ """
+ # obj
+ obj = YFunction._FindFromCache("Display", func)
+ if obj is None:
+ obj = YDisplay(func)
+ YFunction._AddToCache("Display", func, obj)
+ return obj
+
+ def resetAll(self):
+ """
+ Clears the display screen and resets all display layers to their default state.
+ Using this function in a sequence will kill the sequence play-back. Don't use that
+ function to reset the display at sequence start-up.
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ self.flushLayers()
+ self.resetHiddenLayerFlags()
+ return self.sendCommand("Z")
+
+ def fade(self, brightness, duration):
+ """
+ Smoothly changes the brightness of the screen to produce a fade-in or fade-out
+ effect.
+
+ @param brightness : the new screen brightness
+ @param duration : duration of the brightness transition, in milliseconds.
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ self.flushLayers()
+ return self.sendCommand("+" + str(int(brightness)) + "," + str(int(duration)))
+
+ def newSequence(self):
+ """
+ Starts to record all display commands into a sequence, for later replay.
+ The name used to store the sequence is specified when calling
+ saveSequence(), once the recording is complete.
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ self.flushLayers()
+ self._sequence = ""
+ self._recording = True
+ return YAPI.SUCCESS
+
+ def saveSequence(self, sequenceName):
+ """
+ Stops recording display commands and saves the sequence into the specified
+ file on the display internal memory. The sequence can be later replayed
+ using playSequence().
+
+ @param sequenceName : the name of the newly created sequence
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ self.flushLayers()
+ self._recording = False
+ self._upload(sequenceName, YString2Byte(self._sequence))
+ # //We need to use YPRINTF("") for Objective-C
+ self._sequence = ""
+ return YAPI.SUCCESS
+
+ def playSequence(self, sequenceName):
+ """
+ Replays a display sequence previously recorded using
+ newSequence() and saveSequence().
+
+ @param sequenceName : the name of the newly created sequence
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ self.flushLayers()
+ return self.sendCommand("S" + sequenceName)
+
+ def pauseSequence(self, delay_ms):
+ """
+ Waits for a specified delay (in milliseconds) before playing next
+ commands in current sequence. This method can be used while
+ recording a display sequence, to insert a timed wait in the sequence
+ (without any immediate effect). It can also be used dynamically while
+ playing a pre-recorded sequence, to suspend or resume the execution of
+ the sequence. To cancel a delay, call the same method with a zero delay.
+
+ @param delay_ms : the duration to wait, in milliseconds
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ self.flushLayers()
+ return self.sendCommand("W" + str(int(delay_ms)))
+
+ def stopSequence(self):
+ """
+ Stops immediately any ongoing sequence replay.
+ The display is left as is.
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ self.flushLayers()
+ return self.sendCommand("S")
+
+ def upload(self, pathname, content):
+ """
+ Uploads an arbitrary file (for instance a GIF file) to the display, to the
+ specified full path name. If a file already exists with the same path name,
+ its content is overwritten.
+
+ @param pathname : path and name of the new file to create
+ @param content : binary buffer with the content to set
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self._upload(pathname, content)
+
+ def copyLayerContent(self, srcLayerId, dstLayerId):
+ """
+ Copies the whole content of a layer to another layer. The color and transparency
+ of all the pixels from the destination layer are set to match the source pixels.
+ This method only affects the displayed content, but does not change any
+ property of the layer object.
+ Note that layer 0 has no transparency support (it is always completely opaque).
+
+ @param srcLayerId : the identifier of the source layer (a number in range 0..layerCount-1)
+ @param dstLayerId : the identifier of the destination layer (a number in range 0..layerCount-1)
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ self.flushLayers()
+ return self.sendCommand("o" + str(int(srcLayerId)) + "," + str(int(dstLayerId)))
+
+ def swapLayerContent(self, layerIdA, layerIdB):
+ """
+ Swaps the whole content of two layers. The color and transparency of all the pixels from
+ the two layers are swapped. This method only affects the displayed content, but does
+ not change any property of the layer objects. In particular, the visibility of each
+ layer stays unchanged. When used between onae hidden layer and a visible layer,
+ this method makes it possible to easily implement double-buffering.
+ Note that layer 0 has no transparency support (it is always completely opaque).
+
+ @param layerIdA : the first layer (a number in range 0..layerCount-1)
+ @param layerIdB : the second layer (a number in range 0..layerCount-1)
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ self.flushLayers()
+ return self.sendCommand("E" + str(int(layerIdA)) + "," + str(int(layerIdB)))
+
+ def nextDisplay(self):
+ """
+ Continues the enumeration of displays started using yFirstDisplay().
+
+ @return a pointer to a YDisplay object, corresponding to
+ a display currently online, or a None pointer
+ if there are no more displays to enumerate.
+ """
+ hwidRef = YRefParam()
+ if YAPI.YISERR(self._nextFunction(hwidRef)):
+ return None
+ if hwidRef.value == "":
+ return None
+ return YDisplay.FindDisplay(hwidRef.value)
+
+#--- (end of generated code: YDisplay implementation)
+
+ def get_displayLayer(self, layerId):
+ """
+ Returns a YDisplayLayer object that can be used to draw on the specified
+ layer. The content is displayed only when the layer is active on the
+ screen (and not masked by other overlapping layers).
+
+ @param layerId : the identifier of the layer (a number in range 0..layerCount-1)
+
+ @return an YDisplayLayer object
+
+ On failure, throws an exception or returns None.
+ """
+ layercount = self.get_layerCount()
+ if (layerId < 0) or (layerId >= layercount):
+ self._throw(-1, "invalid DisplayLayer index, valid values are [0.." + str(layercount - 1) + "]")
+ return None
+
+ if len(self._allDisplayLayers) == 0:
+ for i in range(0, layercount):
+ self._allDisplayLayers.append(YDisplayLayer(self, str(i)))
+
+ return self._allDisplayLayers[layerId]
+
+ def flushLayers(self):
+ if self._allDisplayLayers is not None:
+ for it in self._allDisplayLayers:
+ it.flush_now()
+ return YAPI.SUCCESS
+
+ def resetHiddenLayerFlags(self):
+ if self._allDisplayLayers is not None:
+ for it in self._allDisplayLayers:
+ it.resetHiddenFlag()
+
+ def sendCommand(self, cmd):
+ if not self._recording:
+ return self.set_command(cmd)
+ self._sequence = self._sequence + cmd + '\n'
+ return YAPI.SUCCESS
+
+ #--- (generated code: Display functions)
+
+ @staticmethod
+ def FirstDisplay():
+ """
+ Starts the enumeration of displays currently accessible.
+ Use the method YDisplay.nextDisplay() to iterate on
+ next displays.
+
+ @return a pointer to a YDisplay object, corresponding to
+ the first display currently online, or a None pointer
+ if there are none.
+ """
+ devRef = YRefParam()
+ neededsizeRef = YRefParam()
+ serialRef = YRefParam()
+ funcIdRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+ errmsgRef = YRefParam()
+ size = YAPI.C_INTSIZE
+ #noinspection PyTypeChecker,PyCallingNonCallable
+ p = (ctypes.c_int * 1)()
+ err = YAPI.apiGetFunctionsByClass("Display", 0, p, size, neededsizeRef, errmsgRef)
+
+ if YAPI.YISERR(err) or not neededsizeRef.value:
+ return None
+
+ if YAPI.YISERR(
+ YAPI.yapiGetFunctionInfo(p[0], devRef, serialRef, funcIdRef, funcNameRef, funcValRef, errmsgRef)):
+ return None
+
+ return YDisplay.FindDisplay(serialRef.value + "." + funcIdRef.value)
+
+#--- (end of generated code: Display functions)
diff --git a/yoctoLib.python.26380/Sources/yocto_dualpower.py b/yoctoLib.python.26380/Sources/yocto_dualpower.py
new file mode 100644
index 0000000..973a31c
--- /dev/null
+++ b/yoctoLib.python.26380/Sources/yocto_dualpower.py
@@ -0,0 +1,238 @@
+#*********************************************************************
+#*
+#* $Id: yocto_dualpower.py 23243 2016-02-23 14:13:12Z seb $
+#*
+#* Implements yFindDualPower(), the high-level API for DualPower functions
+#*
+#* - - - - - - - - - License information: - - - - - - - - -
+#*
+#* Copyright (C) 2011 and beyond by Yoctopuce Sarl, Switzerland.
+#*
+#* Yoctopuce Sarl (hereafter Licensor) grants to you a perpetual
+#* non-exclusive license to use, modify, copy and integrate this
+#* file into your software for the sole purpose of interfacing
+#* with Yoctopuce products.
+#*
+#* You may reproduce and distribute copies of this file in
+#* source or object form, as long as the sole purpose of this
+#* code is to interface with Yoctopuce products. You must retain
+#* this notice in the distributed source file.
+#*
+#* You should refer to Yoctopuce General Terms and Conditions
+#* for additional information regarding your rights and
+#* obligations.
+#*
+#* THE SOFTWARE AND DOCUMENTATION ARE PROVIDED 'AS IS' WITHOUT
+#* WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
+#* WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS
+#* FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO
+#* EVENT SHALL LICENSOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
+#* INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA,
+#* COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR
+#* SERVICES, ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT
+#* LIMITED TO ANY DEFENSE THEREOF), ANY CLAIMS FOR INDEMNITY OR
+#* CONTRIBUTION, OR OTHER SIMILAR COSTS, WHETHER ASSERTED ON THE
+#* BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE), BREACH OF
+#* WARRANTY, OR OTHERWISE.
+#*
+#*********************************************************************/
+
+
+__docformat__ = 'restructuredtext en'
+from yocto_api import *
+
+
+#--- (YDualPower class start)
+#noinspection PyProtectedMember
+class YDualPower(YFunction):
+ """
+ Yoctopuce application programming interface allows you to control
+ the power source to use for module functions that require high current.
+ The module can also automatically disconnect the external power
+ when a voltage drop is observed on the external power source
+ (external battery running out of power).
+
+ """
+#--- (end of YDualPower class start)
+ #--- (YDualPower return codes)
+ #--- (end of YDualPower return codes)
+ #--- (YDualPower dlldef)
+ #--- (end of YDualPower dlldef)
+ #--- (YDualPower definitions)
+ EXTVOLTAGE_INVALID = YAPI.INVALID_UINT
+ POWERSTATE_OFF = 0
+ POWERSTATE_FROM_USB = 1
+ POWERSTATE_FROM_EXT = 2
+ POWERSTATE_INVALID = -1
+ POWERCONTROL_AUTO = 0
+ POWERCONTROL_FROM_USB = 1
+ POWERCONTROL_FROM_EXT = 2
+ POWERCONTROL_OFF = 3
+ POWERCONTROL_INVALID = -1
+ #--- (end of YDualPower definitions)
+
+ def __init__(self, func):
+ super(YDualPower, self).__init__(func)
+ self._className = 'DualPower'
+ #--- (YDualPower attributes)
+ self._callback = None
+ self._powerState = YDualPower.POWERSTATE_INVALID
+ self._powerControl = YDualPower.POWERCONTROL_INVALID
+ self._extVoltage = YDualPower.EXTVOLTAGE_INVALID
+ #--- (end of YDualPower attributes)
+
+ #--- (YDualPower implementation)
+ def _parseAttr(self, member):
+ if member.name == "powerState":
+ self._powerState = member.ivalue
+ return 1
+ if member.name == "powerControl":
+ self._powerControl = member.ivalue
+ return 1
+ if member.name == "extVoltage":
+ self._extVoltage = member.ivalue
+ return 1
+ super(YDualPower, self)._parseAttr(member)
+
+ def get_powerState(self):
+ """
+ Returns the current power source for module functions that require lots of current.
+
+ @return a value among YDualPower.POWERSTATE_OFF, YDualPower.POWERSTATE_FROM_USB and
+ YDualPower.POWERSTATE_FROM_EXT corresponding to the current power source for module functions that
+ require lots of current
+
+ On failure, throws an exception or returns YDualPower.POWERSTATE_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YDualPower.POWERSTATE_INVALID
+ return self._powerState
+
+ def get_powerControl(self):
+ """
+ Returns the selected power source for module functions that require lots of current.
+
+ @return a value among YDualPower.POWERCONTROL_AUTO, YDualPower.POWERCONTROL_FROM_USB,
+ YDualPower.POWERCONTROL_FROM_EXT and YDualPower.POWERCONTROL_OFF corresponding to the selected
+ power source for module functions that require lots of current
+
+ On failure, throws an exception or returns YDualPower.POWERCONTROL_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YDualPower.POWERCONTROL_INVALID
+ return self._powerControl
+
+ def set_powerControl(self, newval):
+ """
+ Changes the selected power source for module functions that require lots of current.
+
+ @param newval : a value among YDualPower.POWERCONTROL_AUTO, YDualPower.POWERCONTROL_FROM_USB,
+ YDualPower.POWERCONTROL_FROM_EXT and YDualPower.POWERCONTROL_OFF corresponding to the selected
+ power source for module functions that require lots of current
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("powerControl", rest_val)
+
+ def get_extVoltage(self):
+ """
+ Returns the measured voltage on the external power source, in millivolts.
+
+ @return an integer corresponding to the measured voltage on the external power source, in millivolts
+
+ On failure, throws an exception or returns YDualPower.EXTVOLTAGE_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YDualPower.EXTVOLTAGE_INVALID
+ return self._extVoltage
+
+ @staticmethod
+ def FindDualPower(func):
+ """
+ Retrieves a dual power control for a given identifier.
+ The identifier can be specified using several formats:
+ <ul>
+ <li>FunctionLogicalName</li>
+ <li>ModuleSerialNumber.FunctionIdentifier</li>
+ <li>ModuleSerialNumber.FunctionLogicalName</li>
+ <li>ModuleLogicalName.FunctionIdentifier</li>
+ <li>ModuleLogicalName.FunctionLogicalName</li>
+ </ul>
+
+ This function does not require that the power control is online at the time
+ it is invoked. The returned object is nevertheless valid.
+ Use the method YDualPower.isOnline() to test if the power control is
+ indeed online at a given time. In case of ambiguity when looking for
+ a dual power control by logical name, no error is notified: the first instance
+ found is returned. The search is performed first by hardware name,
+ then by logical name.
+
+ @param func : a string that uniquely characterizes the power control
+
+ @return a YDualPower object allowing you to drive the power control.
+ """
+ # obj
+ obj = YFunction._FindFromCache("DualPower", func)
+ if obj is None:
+ obj = YDualPower(func)
+ YFunction._AddToCache("DualPower", func, obj)
+ return obj
+
+ def nextDualPower(self):
+ """
+ Continues the enumeration of dual power controls started using yFirstDualPower().
+
+ @return a pointer to a YDualPower object, corresponding to
+ a dual power control currently online, or a None pointer
+ if there are no more dual power controls to enumerate.
+ """
+ hwidRef = YRefParam()
+ if YAPI.YISERR(self._nextFunction(hwidRef)):
+ return None
+ if hwidRef.value == "":
+ return None
+ return YDualPower.FindDualPower(hwidRef.value)
+
+#--- (end of YDualPower implementation)
+
+#--- (DualPower functions)
+
+ @staticmethod
+ def FirstDualPower():
+ """
+ Starts the enumeration of dual power controls currently accessible.
+ Use the method YDualPower.nextDualPower() to iterate on
+ next dual power controls.
+
+ @return a pointer to a YDualPower object, corresponding to
+ the first dual power control currently online, or a None pointer
+ if there are none.
+ """
+ devRef = YRefParam()
+ neededsizeRef = YRefParam()
+ serialRef = YRefParam()
+ funcIdRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+ errmsgRef = YRefParam()
+ size = YAPI.C_INTSIZE
+ #noinspection PyTypeChecker,PyCallingNonCallable
+ p = (ctypes.c_int * 1)()
+ err = YAPI.apiGetFunctionsByClass("DualPower", 0, p, size, neededsizeRef, errmsgRef)
+
+ if YAPI.YISERR(err) or not neededsizeRef.value:
+ return None
+
+ if YAPI.YISERR(
+ YAPI.yapiGetFunctionInfo(p[0], devRef, serialRef, funcIdRef, funcNameRef, funcValRef, errmsgRef)):
+ return None
+
+ return YDualPower.FindDualPower(serialRef.value + "." + funcIdRef.value)
+
+#--- (end of DualPower functions)
diff --git a/yoctoLib.python.26380/Sources/yocto_files.py b/yoctoLib.python.26380/Sources/yocto_files.py
new file mode 100644
index 0000000..2f11e67
--- /dev/null
+++ b/yoctoLib.python.26380/Sources/yocto_files.py
@@ -0,0 +1,348 @@
+#*********************************************************************
+#*
+#* $Id: yocto_files.py 22704 2016-01-13 11:09:55Z seb $
+#*
+#* Implements yFindFiles(), the high-level API for Files functions
+#*
+#* - - - - - - - - - License information: - - - - - - - - -
+#*
+#* Copyright (C) 2011 and beyond by Yoctopuce Sarl, Switzerland.
+#*
+#* Yoctopuce Sarl (hereafter Licensor) grants to you a perpetual
+#* non-exclusive license to use, modify, copy and integrate this
+#* file into your software for the sole purpose of interfacing
+#* with Yoctopuce products.
+#*
+#* You may reproduce and distribute copies of this file in
+#* source or object form, as long as the sole purpose of this
+#* code is to interface with Yoctopuce products. You must retain
+#* this notice in the distributed source file.
+#*
+#* You should refer to Yoctopuce General Terms and Conditions
+#* for additional information regarding your rights and
+#* obligations.
+#*
+#* THE SOFTWARE AND DOCUMENTATION ARE PROVIDED 'AS IS' WITHOUT
+#* WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
+#* WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS
+#* FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO
+#* EVENT SHALL LICENSOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
+#* INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA,
+#* COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR
+#* SERVICES, ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT
+#* LIMITED TO ANY DEFENSE THEREOF), ANY CLAIMS FOR INDEMNITY OR
+#* CONTRIBUTION, OR OTHER SIMILAR COSTS, WHETHER ASSERTED ON THE
+#* BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE), BREACH OF
+#* WARRANTY, OR OTHERWISE.
+#*
+#*********************************************************************/
+
+
+__docformat__ = 'restructuredtext en'
+from yocto_api import *
+
+
+#--- (generated code: YFileRecord class start)
+#noinspection PyProtectedMember
+class YFileRecord(object):
+#--- (end of generated code: YFileRecord class start)
+ #--- (generated code: YFileRecord definitions)
+ #--- (end of generated code: YFileRecord definitions)
+
+ def __init__(self, json):
+ #--- (generated code: YFileRecord attributes)
+ self._name = ''
+ self._size = 0
+ self._crc = 0
+ #--- (end of generated code: YFileRecord attributes)
+ self._crc = -1
+ self._size = -1
+ j = YAPI.TJsonParser(json, False)
+ node = j.GetRootNode()
+ for member in node.members:
+ if member.name == "name":
+ self._name = member.svalue
+ elif member.name == "crc":
+ self._crc = member.ivalue
+ elif member.name == "size":
+ self._size = member.ivalue
+
+ #--- (generated code: YFileRecord implementation)
+ def get_name(self):
+ return self._name
+
+ def get_size(self):
+ return self._size
+
+ def get_crc(self):
+ return self._crc
+
+#--- (end of generated code: YFileRecord implementation)
+
+#--- (FileRecord generated code: functions)
+
+#--- (end of FileRecord generated code: functions)
+
+
+#--- (generated code: YFiles class start)
+#noinspection PyProtectedMember
+class YFiles(YFunction):
+ """
+ The filesystem interface makes it possible to store files
+ on some devices, for instance to design a custom web UI
+ (for networked devices) or to add fonts (on display
+ devices).
+
+ """
+#--- (end of generated code: YFiles class start)
+ #--- (generated code: YFiles definitions)
+ FILESCOUNT_INVALID = YAPI.INVALID_UINT
+ FREESPACE_INVALID = YAPI.INVALID_UINT
+ #--- (end of generated code: YFiles definitions)
+
+ def __init__(self, func):
+ super(YFiles, self).__init__(func)
+ self._className = "Files"
+ #--- (generated code: YFiles attributes)
+ self._callback = None
+ self._filesCount = YFiles.FILESCOUNT_INVALID
+ self._freeSpace = YFiles.FREESPACE_INVALID
+ #--- (end of generated code: YFiles attributes)
+
+ #--- (generated code: YFiles implementation)
+ def _parseAttr(self, member):
+ if member.name == "filesCount":
+ self._filesCount = member.ivalue
+ return 1
+ if member.name == "freeSpace":
+ self._freeSpace = member.ivalue
+ return 1
+ super(YFiles, self)._parseAttr(member)
+
+ def get_filesCount(self):
+ """
+ Returns the number of files currently loaded in the filesystem.
+
+ @return an integer corresponding to the number of files currently loaded in the filesystem
+
+ On failure, throws an exception or returns YFiles.FILESCOUNT_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YFiles.FILESCOUNT_INVALID
+ return self._filesCount
+
+ def get_freeSpace(self):
+ """
+ Returns the free space for uploading new files to the filesystem, in bytes.
+
+ @return an integer corresponding to the free space for uploading new files to the filesystem, in bytes
+
+ On failure, throws an exception or returns YFiles.FREESPACE_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YFiles.FREESPACE_INVALID
+ return self._freeSpace
+
+ @staticmethod
+ def FindFiles(func):
+ """
+ Retrieves a filesystem for a given identifier.
+ The identifier can be specified using several formats:
+ <ul>
+ <li>FunctionLogicalName</li>
+ <li>ModuleSerialNumber.FunctionIdentifier</li>
+ <li>ModuleSerialNumber.FunctionLogicalName</li>
+ <li>ModuleLogicalName.FunctionIdentifier</li>
+ <li>ModuleLogicalName.FunctionLogicalName</li>
+ </ul>
+
+ This function does not require that the filesystem is online at the time
+ it is invoked. The returned object is nevertheless valid.
+ Use the method YFiles.isOnline() to test if the filesystem is
+ indeed online at a given time. In case of ambiguity when looking for
+ a filesystem by logical name, no error is notified: the first instance
+ found is returned. The search is performed first by hardware name,
+ then by logical name.
+
+ @param func : a string that uniquely characterizes the filesystem
+
+ @return a YFiles object allowing you to drive the filesystem.
+ """
+ # obj
+ obj = YFunction._FindFromCache("Files", func)
+ if obj is None:
+ obj = YFiles(func)
+ YFunction._AddToCache("Files", func, obj)
+ return obj
+
+ def sendCommand(self, command):
+ # url
+ url = "files.json?a=" + command
+ # // may throw an exception
+ return self._download(url)
+
+ def format_fs(self):
+ """
+ Reinitialize the filesystem to its clean, unfragmented, empty state.
+ All files previously uploaded are permanently lost.
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ # json
+ # res
+ json = self.sendCommand("format")
+ res = self._json_get_key(json, "res")
+ if not (res == "ok"):
+ self._throw(YAPI.IO_ERROR, "format failed")
+ return YAPI.SUCCESS
+
+ def get_list(self, pattern):
+ """
+ Returns a list of YFileRecord objects that describe files currently loaded
+ in the filesystem.
+
+ @param pattern : an optional filter pattern, using star and question marks
+ as wildcards. When an empty pattern is provided, all file records
+ are returned.
+
+ @return a list of YFileRecord objects, containing the file path
+ and name, byte size and 32-bit CRC of the file content.
+
+ On failure, throws an exception or returns an empty list.
+ """
+ # json
+ filelist = []
+ res = []
+ json = self.sendCommand("dir&f=" + pattern)
+ filelist = self._json_get_array(json)
+ del res[:]
+ for y in filelist:
+ res.append(YFileRecord(y))
+ return res
+
+ def fileExist(self, filename):
+ """
+ Test if a file exist on the filesystem of the module.
+
+ @param filename : the file name to test.
+
+ @return a true if the file existe, false ortherwise.
+
+ On failure, throws an exception.
+ """
+ # json
+ filelist = []
+ if len(filename) == 0:
+ return False
+ json = self.sendCommand("dir&f=" + filename)
+ filelist = self._json_get_array(json)
+ if len(filelist) > 0 :
+ return True
+ return False
+
+ def download(self, pathname):
+ """
+ Downloads the requested file and returns a binary buffer with its content.
+
+ @param pathname : path and name of the file to download
+
+ @return a binary buffer with the file content
+
+ On failure, throws an exception or returns an empty content.
+ """
+ return self._download(pathname)
+
+ def upload(self, pathname, content):
+ """
+ Uploads a file to the filesystem, to the specified full path name.
+ If a file already exists with the same path name, its content is overwritten.
+
+ @param pathname : path and name of the new file to create
+ @param content : binary buffer with the content to set
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self._upload(pathname, content)
+
+ def remove(self, pathname):
+ """
+ Deletes a file, given by its full path name, from the filesystem.
+ Because of filesystem fragmentation, deleting a file may not always
+ free up the whole space used by the file. However, rewriting a file
+ with the same path name will always reuse any space not freed previously.
+ If you need to ensure that no space is taken by previously deleted files,
+ you can use format_fs to fully reinitialize the filesystem.
+
+ @param pathname : path and name of the file to remove.
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ # json
+ # res
+ json = self.sendCommand("del&f=" + pathname)
+ res = self._json_get_key(json, "res")
+ if not (res == "ok"):
+ self._throw(YAPI.IO_ERROR, "unable to remove file")
+ return YAPI.SUCCESS
+
+ def nextFiles(self):
+ """
+ Continues the enumeration of filesystems started using yFirstFiles().
+
+ @return a pointer to a YFiles object, corresponding to
+ a filesystem currently online, or a None pointer
+ if there are no more filesystems to enumerate.
+ """
+ hwidRef = YRefParam()
+ if YAPI.YISERR(self._nextFunction(hwidRef)):
+ return None
+ if hwidRef.value == "":
+ return None
+ return YFiles.FindFiles(hwidRef.value)
+
+#--- (end of generated code: YFiles implementation)
+
+#--- (generated code: Files functions)
+
+ @staticmethod
+ def FirstFiles():
+ """
+ Starts the enumeration of filesystems currently accessible.
+ Use the method YFiles.nextFiles() to iterate on
+ next filesystems.
+
+ @return a pointer to a YFiles object, corresponding to
+ the first filesystem currently online, or a None pointer
+ if there are none.
+ """
+ devRef = YRefParam()
+ neededsizeRef = YRefParam()
+ serialRef = YRefParam()
+ funcIdRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+ errmsgRef = YRefParam()
+ size = YAPI.C_INTSIZE
+ #noinspection PyTypeChecker,PyCallingNonCallable
+ p = (ctypes.c_int * 1)()
+ err = YAPI.apiGetFunctionsByClass("Files", 0, p, size, neededsizeRef, errmsgRef)
+
+ if YAPI.YISERR(err) or not neededsizeRef.value:
+ return None
+
+ if YAPI.YISERR(
+ YAPI.yapiGetFunctionInfo(p[0], devRef, serialRef, funcIdRef, funcNameRef, funcValRef, errmsgRef)):
+ return None
+
+ return YFiles.FindFiles(serialRef.value + "." + funcIdRef.value)
+
+#--- (end of generated code: Files functions)
+
diff --git a/yoctoLib.python.26380/Sources/yocto_genericsensor.py b/yoctoLib.python.26380/Sources/yocto_genericsensor.py
new file mode 100644
index 0000000..4d57d33
--- /dev/null
+++ b/yoctoLib.python.26380/Sources/yocto_genericsensor.py
@@ -0,0 +1,372 @@
+#*********************************************************************
+#*
+#* $Id: yocto_genericsensor.py 23527 2016-03-18 21:49:19Z mvuilleu $
+#*
+#* Implements yFindGenericSensor(), the high-level API for GenericSensor functions
+#*
+#* - - - - - - - - - License information: - - - - - - - - -
+#*
+#* Copyright (C) 2011 and beyond by Yoctopuce Sarl, Switzerland.
+#*
+#* Yoctopuce Sarl (hereafter Licensor) grants to you a perpetual
+#* non-exclusive license to use, modify, copy and integrate this
+#* file into your software for the sole purpose of interfacing
+#* with Yoctopuce products.
+#*
+#* You may reproduce and distribute copies of this file in
+#* source or object form, as long as the sole purpose of this
+#* code is to interface with Yoctopuce products. You must retain
+#* this notice in the distributed source file.
+#*
+#* You should refer to Yoctopuce General Terms and Conditions
+#* for additional information regarding your rights and
+#* obligations.
+#*
+#* THE SOFTWARE AND DOCUMENTATION ARE PROVIDED 'AS IS' WITHOUT
+#* WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
+#* WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS
+#* FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO
+#* EVENT SHALL LICENSOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
+#* INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA,
+#* COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR
+#* SERVICES, ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT
+#* LIMITED TO ANY DEFENSE THEREOF), ANY CLAIMS FOR INDEMNITY OR
+#* CONTRIBUTION, OR OTHER SIMILAR COSTS, WHETHER ASSERTED ON THE
+#* BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE), BREACH OF
+#* WARRANTY, OR OTHERWISE.
+#*
+#*********************************************************************/
+
+
+__docformat__ = 'restructuredtext en'
+from yocto_api import *
+
+
+#--- (YGenericSensor class start)
+#noinspection PyProtectedMember
+class YGenericSensor(YSensor):
+ """
+ The YGenericSensor class allows you to read and configure Yoctopuce signal
+ transducers. It inherits from YSensor class the core functions to read measurements,
+ register callback functions, access to the autonomous datalogger.
+ This class adds the ability to configure the automatic conversion between the
+ measured signal and the corresponding engineering unit.
+
+ """
+#--- (end of YGenericSensor class start)
+ #--- (YGenericSensor return codes)
+ #--- (end of YGenericSensor return codes)
+ #--- (YGenericSensor dlldef)
+ #--- (end of YGenericSensor dlldef)
+ #--- (YGenericSensor definitions)
+ SIGNALVALUE_INVALID = YAPI.INVALID_DOUBLE
+ SIGNALUNIT_INVALID = YAPI.INVALID_STRING
+ SIGNALRANGE_INVALID = YAPI.INVALID_STRING
+ VALUERANGE_INVALID = YAPI.INVALID_STRING
+ SIGNALBIAS_INVALID = YAPI.INVALID_DOUBLE
+ SIGNALSAMPLING_HIGH_RATE = 0
+ SIGNALSAMPLING_HIGH_RATE_FILTERED = 1
+ SIGNALSAMPLING_LOW_NOISE = 2
+ SIGNALSAMPLING_LOW_NOISE_FILTERED = 3
+ SIGNALSAMPLING_INVALID = -1
+ #--- (end of YGenericSensor definitions)
+
+ def __init__(self, func):
+ super(YGenericSensor, self).__init__(func)
+ self._className = 'GenericSensor'
+ #--- (YGenericSensor attributes)
+ self._callback = None
+ self._signalValue = YGenericSensor.SIGNALVALUE_INVALID
+ self._signalUnit = YGenericSensor.SIGNALUNIT_INVALID
+ self._signalRange = YGenericSensor.SIGNALRANGE_INVALID
+ self._valueRange = YGenericSensor.VALUERANGE_INVALID
+ self._signalBias = YGenericSensor.SIGNALBIAS_INVALID
+ self._signalSampling = YGenericSensor.SIGNALSAMPLING_INVALID
+ #--- (end of YGenericSensor attributes)
+
+ #--- (YGenericSensor implementation)
+ def _parseAttr(self, member):
+ if member.name == "signalValue":
+ self._signalValue = round(member.ivalue * 1000.0 / 65536.0) / 1000.0
+ return 1
+ if member.name == "signalUnit":
+ self._signalUnit = member.svalue
+ return 1
+ if member.name == "signalRange":
+ self._signalRange = member.svalue
+ return 1
+ if member.name == "valueRange":
+ self._valueRange = member.svalue
+ return 1
+ if member.name == "signalBias":
+ self._signalBias = round(member.ivalue * 1000.0 / 65536.0) / 1000.0
+ return 1
+ if member.name == "signalSampling":
+ self._signalSampling = member.ivalue
+ return 1
+ super(YGenericSensor, self)._parseAttr(member)
+
+ def set_unit(self, newval):
+ """
+ Changes the measuring unit for the measured value.
+ Remember to call the saveToFlash() method of the module if the
+ modification must be kept.
+
+ @param newval : a string corresponding to the measuring unit for the measured value
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = newval
+ return self._setAttr("unit", rest_val)
+
+ def get_signalValue(self):
+ """
+ Returns the current value of the electrical signal measured by the sensor.
+
+ @return a floating point number corresponding to the current value of the electrical signal
+ measured by the sensor
+
+ On failure, throws an exception or returns YGenericSensor.SIGNALVALUE_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YGenericSensor.SIGNALVALUE_INVALID
+ return round(self._signalValue * 1000) / 1000
+
+ def get_signalUnit(self):
+ """
+ Returns the measuring unit of the electrical signal used by the sensor.
+
+ @return a string corresponding to the measuring unit of the electrical signal used by the sensor
+
+ On failure, throws an exception or returns YGenericSensor.SIGNALUNIT_INVALID.
+ """
+ if self._cacheExpiration == datetime.datetime.fromtimestamp(0):
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YGenericSensor.SIGNALUNIT_INVALID
+ return self._signalUnit
+
+ def get_signalRange(self):
+ """
+ Returns the electric signal range used by the sensor.
+
+ @return a string corresponding to the electric signal range used by the sensor
+
+ On failure, throws an exception or returns YGenericSensor.SIGNALRANGE_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YGenericSensor.SIGNALRANGE_INVALID
+ return self._signalRange
+
+ def set_signalRange(self, newval):
+ """
+ Changes the electric signal range used by the sensor.
+
+ @param newval : a string corresponding to the electric signal range used by the sensor
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = newval
+ return self._setAttr("signalRange", rest_val)
+
+ def get_valueRange(self):
+ """
+ Returns the physical value range measured by the sensor.
+
+ @return a string corresponding to the physical value range measured by the sensor
+
+ On failure, throws an exception or returns YGenericSensor.VALUERANGE_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YGenericSensor.VALUERANGE_INVALID
+ return self._valueRange
+
+ def set_valueRange(self, newval):
+ """
+ Changes the physical value range measured by the sensor. As a side effect, the range modification may
+ automatically modify the display resolution.
+
+ @param newval : a string corresponding to the physical value range measured by the sensor
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = newval
+ return self._setAttr("valueRange", rest_val)
+
+ def set_signalBias(self, newval):
+ """
+ Changes the electric signal bias for zero shift adjustment.
+ If your electric signal reads positif when it should be zero, setup
+ a positive signalBias of the same value to fix the zero shift.
+
+ @param newval : a floating point number corresponding to the electric signal bias for zero shift adjustment
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(int(round(newval * 65536.0, 1)))
+ return self._setAttr("signalBias", rest_val)
+
+ def get_signalBias(self):
+ """
+ Returns the electric signal bias for zero shift adjustment.
+ A positive bias means that the signal is over-reporting the measure,
+ while a negative bias means that the signal is underreporting the measure.
+
+ @return a floating point number corresponding to the electric signal bias for zero shift adjustment
+
+ On failure, throws an exception or returns YGenericSensor.SIGNALBIAS_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YGenericSensor.SIGNALBIAS_INVALID
+ return self._signalBias
+
+ def get_signalSampling(self):
+ """
+ Returns the electric signal sampling method to use.
+ The HIGH_RATE method uses the highest sampling frequency, without any filtering.
+ The HIGH_RATE_FILTERED method adds a windowed 7-sample median filter.
+ The LOW_NOISE method uses a reduced acquisition frequency to reduce noise.
+ The LOW_NOISE_FILTERED method combines a reduced frequency with the median filter
+ to get measures as stable as possible when working on a noisy signal.
+
+ @return a value among YGenericSensor.SIGNALSAMPLING_HIGH_RATE,
+ YGenericSensor.SIGNALSAMPLING_HIGH_RATE_FILTERED, YGenericSensor.SIGNALSAMPLING_LOW_NOISE and
+ YGenericSensor.SIGNALSAMPLING_LOW_NOISE_FILTERED corresponding to the electric signal sampling method to use
+
+ On failure, throws an exception or returns YGenericSensor.SIGNALSAMPLING_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YGenericSensor.SIGNALSAMPLING_INVALID
+ return self._signalSampling
+
+ def set_signalSampling(self, newval):
+ """
+ Changes the electric signal sampling method to use.
+ The HIGH_RATE method uses the highest sampling frequency, without any filtering.
+ The HIGH_RATE_FILTERED method adds a windowed 7-sample median filter.
+ The LOW_NOISE method uses a reduced acquisition frequency to reduce noise.
+ The LOW_NOISE_FILTERED method combines a reduced frequency with the median filter
+ to get measures as stable as possible when working on a noisy signal.
+
+ @param newval : a value among YGenericSensor.SIGNALSAMPLING_HIGH_RATE,
+ YGenericSensor.SIGNALSAMPLING_HIGH_RATE_FILTERED, YGenericSensor.SIGNALSAMPLING_LOW_NOISE and
+ YGenericSensor.SIGNALSAMPLING_LOW_NOISE_FILTERED corresponding to the electric signal sampling method to use
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("signalSampling", rest_val)
+
+ @staticmethod
+ def FindGenericSensor(func):
+ """
+ Retrieves a generic sensor for a given identifier.
+ The identifier can be specified using several formats:
+ <ul>
+ <li>FunctionLogicalName</li>
+ <li>ModuleSerialNumber.FunctionIdentifier</li>
+ <li>ModuleSerialNumber.FunctionLogicalName</li>
+ <li>ModuleLogicalName.FunctionIdentifier</li>
+ <li>ModuleLogicalName.FunctionLogicalName</li>
+ </ul>
+
+ This function does not require that the generic sensor is online at the time
+ it is invoked. The returned object is nevertheless valid.
+ Use the method YGenericSensor.isOnline() to test if the generic sensor is
+ indeed online at a given time. In case of ambiguity when looking for
+ a generic sensor by logical name, no error is notified: the first instance
+ found is returned. The search is performed first by hardware name,
+ then by logical name.
+
+ @param func : a string that uniquely characterizes the generic sensor
+
+ @return a YGenericSensor object allowing you to drive the generic sensor.
+ """
+ # obj
+ obj = YFunction._FindFromCache("GenericSensor", func)
+ if obj is None:
+ obj = YGenericSensor(func)
+ YFunction._AddToCache("GenericSensor", func, obj)
+ return obj
+
+ def zeroAdjust(self):
+ """
+ Adjusts the signal bias so that the current signal value is need
+ precisely as zero.
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ # currSignal
+ # currBias
+ currSignal = self.get_signalValue()
+ currBias = self.get_signalBias()
+ return self.set_signalBias(currSignal + currBias)
+
+ def nextGenericSensor(self):
+ """
+ Continues the enumeration of generic sensors started using yFirstGenericSensor().
+
+ @return a pointer to a YGenericSensor object, corresponding to
+ a generic sensor currently online, or a None pointer
+ if there are no more generic sensors to enumerate.
+ """
+ hwidRef = YRefParam()
+ if YAPI.YISERR(self._nextFunction(hwidRef)):
+ return None
+ if hwidRef.value == "":
+ return None
+ return YGenericSensor.FindGenericSensor(hwidRef.value)
+
+#--- (end of YGenericSensor implementation)
+
+#--- (GenericSensor functions)
+
+ @staticmethod
+ def FirstGenericSensor():
+ """
+ Starts the enumeration of generic sensors currently accessible.
+ Use the method YGenericSensor.nextGenericSensor() to iterate on
+ next generic sensors.
+
+ @return a pointer to a YGenericSensor object, corresponding to
+ the first generic sensor currently online, or a None pointer
+ if there are none.
+ """
+ devRef = YRefParam()
+ neededsizeRef = YRefParam()
+ serialRef = YRefParam()
+ funcIdRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+ errmsgRef = YRefParam()
+ size = YAPI.C_INTSIZE
+ #noinspection PyTypeChecker,PyCallingNonCallable
+ p = (ctypes.c_int * 1)()
+ err = YAPI.apiGetFunctionsByClass("GenericSensor", 0, p, size, neededsizeRef, errmsgRef)
+
+ if YAPI.YISERR(err) or not neededsizeRef.value:
+ return None
+
+ if YAPI.YISERR(
+ YAPI.yapiGetFunctionInfo(p[0], devRef, serialRef, funcIdRef, funcNameRef, funcValRef, errmsgRef)):
+ return None
+
+ return YGenericSensor.FindGenericSensor(serialRef.value + "." + funcIdRef.value)
+
+#--- (end of GenericSensor functions)
diff --git a/yoctoLib.python.26380/Sources/yocto_gps.py b/yoctoLib.python.26380/Sources/yocto_gps.py
new file mode 100644
index 0000000..8e7d64a
--- /dev/null
+++ b/yoctoLib.python.26380/Sources/yocto_gps.py
@@ -0,0 +1,432 @@
+#*********************************************************************
+#*
+#* $Id: yocto_gps.py 23243 2016-02-23 14:13:12Z seb $
+#*
+#* Implements yFindGps(), the high-level API for Gps functions
+#*
+#* - - - - - - - - - License information: - - - - - - - - -
+#*
+#* Copyright (C) 2011 and beyond by Yoctopuce Sarl, Switzerland.
+#*
+#* Yoctopuce Sarl (hereafter Licensor) grants to you a perpetual
+#* non-exclusive license to use, modify, copy and integrate this
+#* file into your software for the sole purpose of interfacing
+#* with Yoctopuce products.
+#*
+#* You may reproduce and distribute copies of this file in
+#* source or object form, as long as the sole purpose of this
+#* code is to interface with Yoctopuce products. You must retain
+#* this notice in the distributed source file.
+#*
+#* You should refer to Yoctopuce General Terms and Conditions
+#* for additional information regarding your rights and
+#* obligations.
+#*
+#* THE SOFTWARE AND DOCUMENTATION ARE PROVIDED 'AS IS' WITHOUT
+#* WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
+#* WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS
+#* FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO
+#* EVENT SHALL LICENSOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
+#* INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA,
+#* COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR
+#* SERVICES, ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT
+#* LIMITED TO ANY DEFENSE THEREOF), ANY CLAIMS FOR INDEMNITY OR
+#* CONTRIBUTION, OR OTHER SIMILAR COSTS, WHETHER ASSERTED ON THE
+#* BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE), BREACH OF
+#* WARRANTY, OR OTHERWISE.
+#*
+#*********************************************************************/
+
+
+__docformat__ = 'restructuredtext en'
+from yocto_api import *
+
+
+#--- (YGps class start)
+#noinspection PyProtectedMember
+class YGps(YFunction):
+ """
+ The Gps function allows you to extract positionning
+ data from the GPS device. This class can provides
+ complete positionning information: However, if you
+ whish to define callbacks on position changes, you
+ should use the YLatitude et YLongitude classes.
+
+ """
+#--- (end of YGps class start)
+ #--- (YGps return codes)
+ #--- (end of YGps return codes)
+ #--- (YGps dlldef)
+ #--- (end of YGps dlldef)
+ #--- (YGps definitions)
+ SATCOUNT_INVALID = YAPI.INVALID_LONG
+ LATITUDE_INVALID = YAPI.INVALID_STRING
+ LONGITUDE_INVALID = YAPI.INVALID_STRING
+ DILUTION_INVALID = YAPI.INVALID_DOUBLE
+ ALTITUDE_INVALID = YAPI.INVALID_DOUBLE
+ GROUNDSPEED_INVALID = YAPI.INVALID_DOUBLE
+ DIRECTION_INVALID = YAPI.INVALID_DOUBLE
+ UNIXTIME_INVALID = YAPI.INVALID_LONG
+ DATETIME_INVALID = YAPI.INVALID_STRING
+ UTCOFFSET_INVALID = YAPI.INVALID_INT
+ COMMAND_INVALID = YAPI.INVALID_STRING
+ ISFIXED_FALSE = 0
+ ISFIXED_TRUE = 1
+ ISFIXED_INVALID = -1
+ COORDSYSTEM_GPS_DMS = 0
+ COORDSYSTEM_GPS_DM = 1
+ COORDSYSTEM_GPS_D = 2
+ COORDSYSTEM_INVALID = -1
+ #--- (end of YGps definitions)
+
+ def __init__(self, func):
+ super(YGps, self).__init__(func)
+ self._className = 'Gps'
+ #--- (YGps attributes)
+ self._callback = None
+ self._isFixed = YGps.ISFIXED_INVALID
+ self._satCount = YGps.SATCOUNT_INVALID
+ self._coordSystem = YGps.COORDSYSTEM_INVALID
+ self._latitude = YGps.LATITUDE_INVALID
+ self._longitude = YGps.LONGITUDE_INVALID
+ self._dilution = YGps.DILUTION_INVALID
+ self._altitude = YGps.ALTITUDE_INVALID
+ self._groundSpeed = YGps.GROUNDSPEED_INVALID
+ self._direction = YGps.DIRECTION_INVALID
+ self._unixTime = YGps.UNIXTIME_INVALID
+ self._dateTime = YGps.DATETIME_INVALID
+ self._utcOffset = YGps.UTCOFFSET_INVALID
+ self._command = YGps.COMMAND_INVALID
+ #--- (end of YGps attributes)
+
+ #--- (YGps implementation)
+ def _parseAttr(self, member):
+ if member.name == "isFixed":
+ self._isFixed = member.ivalue
+ return 1
+ if member.name == "satCount":
+ self._satCount = member.ivalue
+ return 1
+ if member.name == "coordSystem":
+ self._coordSystem = member.ivalue
+ return 1
+ if member.name == "latitude":
+ self._latitude = member.svalue
+ return 1
+ if member.name == "longitude":
+ self._longitude = member.svalue
+ return 1
+ if member.name == "dilution":
+ self._dilution = round(member.ivalue * 1000.0 / 65536.0) / 1000.0
+ return 1
+ if member.name == "altitude":
+ self._altitude = round(member.ivalue * 1000.0 / 65536.0) / 1000.0
+ return 1
+ if member.name == "groundSpeed":
+ self._groundSpeed = round(member.ivalue * 1000.0 / 65536.0) / 1000.0
+ return 1
+ if member.name == "direction":
+ self._direction = round(member.ivalue * 1000.0 / 65536.0) / 1000.0
+ return 1
+ if member.name == "unixTime":
+ self._unixTime = member.ivalue
+ return 1
+ if member.name == "dateTime":
+ self._dateTime = member.svalue
+ return 1
+ if member.name == "utcOffset":
+ self._utcOffset = member.ivalue
+ return 1
+ if member.name == "command":
+ self._command = member.svalue
+ return 1
+ super(YGps, self)._parseAttr(member)
+
+ def get_isFixed(self):
+ """
+ Returns TRUE if the receiver has found enough satellites to work.
+
+ @return either YGps.ISFIXED_FALSE or YGps.ISFIXED_TRUE, according to TRUE if the receiver has found
+ enough satellites to work
+
+ On failure, throws an exception or returns YGps.ISFIXED_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YGps.ISFIXED_INVALID
+ return self._isFixed
+
+ def get_satCount(self):
+ """
+ Returns the count of visible satellites.
+
+ @return an integer corresponding to the count of visible satellites
+
+ On failure, throws an exception or returns YGps.SATCOUNT_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YGps.SATCOUNT_INVALID
+ return self._satCount
+
+ def get_coordSystem(self):
+ """
+ Returns the representation system used for positioning data.
+
+ @return a value among YGps.COORDSYSTEM_GPS_DMS, YGps.COORDSYSTEM_GPS_DM and YGps.COORDSYSTEM_GPS_D
+ corresponding to the representation system used for positioning data
+
+ On failure, throws an exception or returns YGps.COORDSYSTEM_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YGps.COORDSYSTEM_INVALID
+ return self._coordSystem
+
+ def set_coordSystem(self, newval):
+ """
+ Changes the representation system used for positioning data.
+
+ @param newval : a value among YGps.COORDSYSTEM_GPS_DMS, YGps.COORDSYSTEM_GPS_DM and
+ YGps.COORDSYSTEM_GPS_D corresponding to the representation system used for positioning data
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("coordSystem", rest_val)
+
+ def get_latitude(self):
+ """
+ Returns the current latitude.
+
+ @return a string corresponding to the current latitude
+
+ On failure, throws an exception or returns YGps.LATITUDE_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YGps.LATITUDE_INVALID
+ return self._latitude
+
+ def get_longitude(self):
+ """
+ Returns the current longitude.
+
+ @return a string corresponding to the current longitude
+
+ On failure, throws an exception or returns YGps.LONGITUDE_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YGps.LONGITUDE_INVALID
+ return self._longitude
+
+ def get_dilution(self):
+ """
+ Returns the current horizontal dilution of precision,
+ the smaller that number is, the better .
+
+ @return a floating point number corresponding to the current horizontal dilution of precision,
+ the smaller that number is, the better
+
+ On failure, throws an exception or returns YGps.DILUTION_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YGps.DILUTION_INVALID
+ return self._dilution
+
+ def get_altitude(self):
+ """
+ Returns the current altitude. Beware: GPS technology
+ is very inaccurate regarding altitude.
+
+ @return a floating point number corresponding to the current altitude
+
+ On failure, throws an exception or returns YGps.ALTITUDE_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YGps.ALTITUDE_INVALID
+ return self._altitude
+
+ def get_groundSpeed(self):
+ """
+ Returns the current ground speed in Km/h.
+
+ @return a floating point number corresponding to the current ground speed in Km/h
+
+ On failure, throws an exception or returns YGps.GROUNDSPEED_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YGps.GROUNDSPEED_INVALID
+ return self._groundSpeed
+
+ def get_direction(self):
+ """
+ Returns the current move bearing in degrees, zero
+ is the true (geographic) north.
+
+ @return a floating point number corresponding to the current move bearing in degrees, zero
+ is the true (geographic) north
+
+ On failure, throws an exception or returns YGps.DIRECTION_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YGps.DIRECTION_INVALID
+ return self._direction
+
+ def get_unixTime(self):
+ """
+ Returns the current time in Unix format (number of
+ seconds elapsed since Jan 1st, 1970).
+
+ @return an integer corresponding to the current time in Unix format (number of
+ seconds elapsed since Jan 1st, 1970)
+
+ On failure, throws an exception or returns YGps.UNIXTIME_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YGps.UNIXTIME_INVALID
+ return self._unixTime
+
+ def get_dateTime(self):
+ """
+ Returns the current time in the form "YYYY/MM/DD hh:mm:ss".
+
+ @return a string corresponding to the current time in the form "YYYY/MM/DD hh:mm:ss"
+
+ On failure, throws an exception or returns YGps.DATETIME_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YGps.DATETIME_INVALID
+ return self._dateTime
+
+ def get_utcOffset(self):
+ """
+ Returns the number of seconds between current time and UTC time (time zone).
+
+ @return an integer corresponding to the number of seconds between current time and UTC time (time zone)
+
+ On failure, throws an exception or returns YGps.UTCOFFSET_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YGps.UTCOFFSET_INVALID
+ return self._utcOffset
+
+ def set_utcOffset(self, newval):
+ """
+ Changes the number of seconds between current time and UTC time (time zone).
+ The timezone is automatically rounded to the nearest multiple of 15 minutes.
+ If current UTC time is known, the current time is automatically be updated according to the selected time zone.
+
+ @param newval : an integer corresponding to the number of seconds between current time and UTC time (time zone)
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("utcOffset", rest_val)
+
+ def get_command(self):
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YGps.COMMAND_INVALID
+ return self._command
+
+ def set_command(self, newval):
+ rest_val = newval
+ return self._setAttr("command", rest_val)
+
+ @staticmethod
+ def FindGps(func):
+ """
+ Retrieves a GPS for a given identifier.
+ The identifier can be specified using several formats:
+ <ul>
+ <li>FunctionLogicalName</li>
+ <li>ModuleSerialNumber.FunctionIdentifier</li>
+ <li>ModuleSerialNumber.FunctionLogicalName</li>
+ <li>ModuleLogicalName.FunctionIdentifier</li>
+ <li>ModuleLogicalName.FunctionLogicalName</li>
+ </ul>
+
+ This function does not require that the GPS is online at the time
+ it is invoked. The returned object is nevertheless valid.
+ Use the method YGps.isOnline() to test if the GPS is
+ indeed online at a given time. In case of ambiguity when looking for
+ a GPS by logical name, no error is notified: the first instance
+ found is returned. The search is performed first by hardware name,
+ then by logical name.
+
+ @param func : a string that uniquely characterizes the GPS
+
+ @return a YGps object allowing you to drive the GPS.
+ """
+ # obj
+ obj = YFunction._FindFromCache("Gps", func)
+ if obj is None:
+ obj = YGps(func)
+ YFunction._AddToCache("Gps", func, obj)
+ return obj
+
+ def nextGps(self):
+ """
+ Continues the enumeration of GPS started using yFirstGps().
+
+ @return a pointer to a YGps object, corresponding to
+ a GPS currently online, or a None pointer
+ if there are no more GPS to enumerate.
+ """
+ hwidRef = YRefParam()
+ if YAPI.YISERR(self._nextFunction(hwidRef)):
+ return None
+ if hwidRef.value == "":
+ return None
+ return YGps.FindGps(hwidRef.value)
+
+#--- (end of YGps implementation)
+
+#--- (Gps functions)
+
+ @staticmethod
+ def FirstGps():
+ """
+ Starts the enumeration of GPS currently accessible.
+ Use the method YGps.nextGps() to iterate on
+ next GPS.
+
+ @return a pointer to a YGps object, corresponding to
+ the first GPS currently online, or a None pointer
+ if there are none.
+ """
+ devRef = YRefParam()
+ neededsizeRef = YRefParam()
+ serialRef = YRefParam()
+ funcIdRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+ errmsgRef = YRefParam()
+ size = YAPI.C_INTSIZE
+ #noinspection PyTypeChecker,PyCallingNonCallable
+ p = (ctypes.c_int * 1)()
+ err = YAPI.apiGetFunctionsByClass("Gps", 0, p, size, neededsizeRef, errmsgRef)
+
+ if YAPI.YISERR(err) or not neededsizeRef.value:
+ return None
+
+ if YAPI.YISERR(
+ YAPI.yapiGetFunctionInfo(p[0], devRef, serialRef, funcIdRef, funcNameRef, funcValRef, errmsgRef)):
+ return None
+
+ return YGps.FindGps(serialRef.value + "." + funcIdRef.value)
+
+#--- (end of Gps functions)
diff --git a/yoctoLib.python.26380/Sources/yocto_groundspeed.py b/yoctoLib.python.26380/Sources/yocto_groundspeed.py
new file mode 100644
index 0000000..25de0ce
--- /dev/null
+++ b/yoctoLib.python.26380/Sources/yocto_groundspeed.py
@@ -0,0 +1,157 @@
+#*********************************************************************
+#*
+#* $Id: yocto_groundspeed.py 23243 2016-02-23 14:13:12Z seb $
+#*
+#* Implements yFindGroundSpeed(), the high-level API for GroundSpeed functions
+#*
+#* - - - - - - - - - License information: - - - - - - - - -
+#*
+#* Copyright (C) 2011 and beyond by Yoctopuce Sarl, Switzerland.
+#*
+#* Yoctopuce Sarl (hereafter Licensor) grants to you a perpetual
+#* non-exclusive license to use, modify, copy and integrate this
+#* file into your software for the sole purpose of interfacing
+#* with Yoctopuce products.
+#*
+#* You may reproduce and distribute copies of this file in
+#* source or object form, as long as the sole purpose of this
+#* code is to interface with Yoctopuce products. You must retain
+#* this notice in the distributed source file.
+#*
+#* You should refer to Yoctopuce General Terms and Conditions
+#* for additional information regarding your rights and
+#* obligations.
+#*
+#* THE SOFTWARE AND DOCUMENTATION ARE PROVIDED 'AS IS' WITHOUT
+#* WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
+#* WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS
+#* FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO
+#* EVENT SHALL LICENSOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
+#* INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA,
+#* COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR
+#* SERVICES, ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT
+#* LIMITED TO ANY DEFENSE THEREOF), ANY CLAIMS FOR INDEMNITY OR
+#* CONTRIBUTION, OR OTHER SIMILAR COSTS, WHETHER ASSERTED ON THE
+#* BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE), BREACH OF
+#* WARRANTY, OR OTHERWISE.
+#*
+#*********************************************************************/
+
+
+__docformat__ = 'restructuredtext en'
+from yocto_api import *
+
+
+#--- (YGroundSpeed class start)
+#noinspection PyProtectedMember
+class YGroundSpeed(YSensor):
+ """
+ The Yoctopuce class YGroundSpeed allows you to read the ground speed from Yoctopuce
+ geolocalization sensors. It inherits from the YSensor class the core functions to
+ read measurements, register callback functions, access the autonomous
+ datalogger.
+
+ """
+#--- (end of YGroundSpeed class start)
+ #--- (YGroundSpeed return codes)
+ #--- (end of YGroundSpeed return codes)
+ #--- (YGroundSpeed dlldef)
+ #--- (end of YGroundSpeed dlldef)
+ #--- (YGroundSpeed definitions)
+ #--- (end of YGroundSpeed definitions)
+
+ def __init__(self, func):
+ super(YGroundSpeed, self).__init__(func)
+ self._className = 'GroundSpeed'
+ #--- (YGroundSpeed attributes)
+ self._callback = None
+ #--- (end of YGroundSpeed attributes)
+
+ #--- (YGroundSpeed implementation)
+ def _parseAttr(self, member):
+ super(YGroundSpeed, self)._parseAttr(member)
+
+ @staticmethod
+ def FindGroundSpeed(func):
+ """
+ Retrieves a ground speed sensor for a given identifier.
+ The identifier can be specified using several formats:
+ <ul>
+ <li>FunctionLogicalName</li>
+ <li>ModuleSerialNumber.FunctionIdentifier</li>
+ <li>ModuleSerialNumber.FunctionLogicalName</li>
+ <li>ModuleLogicalName.FunctionIdentifier</li>
+ <li>ModuleLogicalName.FunctionLogicalName</li>
+ </ul>
+
+ This function does not require that the ground speed sensor is online at the time
+ it is invoked. The returned object is nevertheless valid.
+ Use the method YGroundSpeed.isOnline() to test if the ground speed sensor is
+ indeed online at a given time. In case of ambiguity when looking for
+ a ground speed sensor by logical name, no error is notified: the first instance
+ found is returned. The search is performed first by hardware name,
+ then by logical name.
+
+ @param func : a string that uniquely characterizes the ground speed sensor
+
+ @return a YGroundSpeed object allowing you to drive the ground speed sensor.
+ """
+ # obj
+ obj = YFunction._FindFromCache("GroundSpeed", func)
+ if obj is None:
+ obj = YGroundSpeed(func)
+ YFunction._AddToCache("GroundSpeed", func, obj)
+ return obj
+
+ def nextGroundSpeed(self):
+ """
+ Continues the enumeration of ground speed sensors started using yFirstGroundSpeed().
+
+ @return a pointer to a YGroundSpeed object, corresponding to
+ a ground speed sensor currently online, or a None pointer
+ if there are no more ground speed sensors to enumerate.
+ """
+ hwidRef = YRefParam()
+ if YAPI.YISERR(self._nextFunction(hwidRef)):
+ return None
+ if hwidRef.value == "":
+ return None
+ return YGroundSpeed.FindGroundSpeed(hwidRef.value)
+
+#--- (end of YGroundSpeed implementation)
+
+#--- (GroundSpeed functions)
+
+ @staticmethod
+ def FirstGroundSpeed():
+ """
+ Starts the enumeration of ground speed sensors currently accessible.
+ Use the method YGroundSpeed.nextGroundSpeed() to iterate on
+ next ground speed sensors.
+
+ @return a pointer to a YGroundSpeed object, corresponding to
+ the first ground speed sensor currently online, or a None pointer
+ if there are none.
+ """
+ devRef = YRefParam()
+ neededsizeRef = YRefParam()
+ serialRef = YRefParam()
+ funcIdRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+ errmsgRef = YRefParam()
+ size = YAPI.C_INTSIZE
+ #noinspection PyTypeChecker,PyCallingNonCallable
+ p = (ctypes.c_int * 1)()
+ err = YAPI.apiGetFunctionsByClass("GroundSpeed", 0, p, size, neededsizeRef, errmsgRef)
+
+ if YAPI.YISERR(err) or not neededsizeRef.value:
+ return None
+
+ if YAPI.YISERR(
+ YAPI.yapiGetFunctionInfo(p[0], devRef, serialRef, funcIdRef, funcNameRef, funcValRef, errmsgRef)):
+ return None
+
+ return YGroundSpeed.FindGroundSpeed(serialRef.value + "." + funcIdRef.value)
+
+#--- (end of GroundSpeed functions)
diff --git a/yoctoLib.python.26380/Sources/yocto_gyro.py b/yoctoLib.python.26380/Sources/yocto_gyro.py
new file mode 100644
index 0000000..6b235a8
--- /dev/null
+++ b/yoctoLib.python.26380/Sources/yocto_gyro.py
@@ -0,0 +1,648 @@
+#*********************************************************************
+#*
+#* $Id: yocto_gyro.py 24948 2016-07-01 20:57:28Z mvuilleu $
+#*
+#* Implements yFindGyro(), the high-level API for Gyro functions
+#*
+#* - - - - - - - - - License information: - - - - - - - - -
+#*
+#* Copyright (C) 2011 and beyond by Yoctopuce Sarl, Switzerland.
+#*
+#* Yoctopuce Sarl (hereafter Licensor) grants to you a perpetual
+#* non-exclusive license to use, modify, copy and integrate this
+#* file into your software for the sole purpose of interfacing
+#* with Yoctopuce products.
+#*
+#* You may reproduce and distribute copies of this file in
+#* source or object form, as long as the sole purpose of this
+#* code is to interface with Yoctopuce products. You must retain
+#* this notice in the distributed source file.
+#*
+#* You should refer to Yoctopuce General Terms and Conditions
+#* for additional information regarding your rights and
+#* obligations.
+#*
+#* THE SOFTWARE AND DOCUMENTATION ARE PROVIDED 'AS IS' WITHOUT
+#* WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
+#* WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS
+#* FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO
+#* EVENT SHALL LICENSOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
+#* INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA,
+#* COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR
+#* SERVICES, ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT
+#* LIMITED TO ANY DEFENSE THEREOF), ANY CLAIMS FOR INDEMNITY OR
+#* CONTRIBUTION, OR OTHER SIMILAR COSTS, WHETHER ASSERTED ON THE
+#* BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE), BREACH OF
+#* WARRANTY, OR OTHERWISE.
+#*
+#*********************************************************************/
+import math
+
+
+__docformat__ = 'restructuredtext en'
+from yocto_api import *
+
+#--- (generated code: YQt class start)
+#noinspection PyProtectedMember
+class YQt(YSensor):
+ """
+ The Yoctopuce API YQt class provides direct access to the Yocto3D attitude estimation
+ using a quaternion. It is usually not needed to use the YQt class directly, as the
+ YGyro class provides a more convenient higher-level interface.
+
+ """
+#--- (end of generated code: YQt class start)
+ #--- (generated code: YQt return codes)
+ #--- (end of generated code: YQt return codes)
+ #--- (generated code: YQt definitions)
+ #--- (end of generated code: YQt definitions)
+
+ def __init__(self, func):
+ super(YQt, self).__init__(func)
+ self._className = 'Qt'
+ #--- (generated code: YQt attributes)
+ self._callback = None
+ #--- (end of generated code: YQt attributes)
+
+ #--- (generated code: YQt implementation)
+ def _parseAttr(self, member):
+ super(YQt, self)._parseAttr(member)
+
+ @staticmethod
+ def FindQt(func):
+ """
+ Retrieves a quaternion component for a given identifier.
+ The identifier can be specified using several formats:
+ <ul>
+ <li>FunctionLogicalName</li>
+ <li>ModuleSerialNumber.FunctionIdentifier</li>
+ <li>ModuleSerialNumber.FunctionLogicalName</li>
+ <li>ModuleLogicalName.FunctionIdentifier</li>
+ <li>ModuleLogicalName.FunctionLogicalName</li>
+ </ul>
+
+ This function does not require that the quaternion component is online at the time
+ it is invoked. The returned object is nevertheless valid.
+ Use the method YQt.isOnline() to test if the quaternion component is
+ indeed online at a given time. In case of ambiguity when looking for
+ a quaternion component by logical name, no error is notified: the first instance
+ found is returned. The search is performed first by hardware name,
+ then by logical name.
+
+ @param func : a string that uniquely characterizes the quaternion component
+
+ @return a YQt object allowing you to drive the quaternion component.
+ """
+ # obj
+ obj = YFunction._FindFromCache("Qt", func)
+ if obj is None:
+ obj = YQt(func)
+ YFunction._AddToCache("Qt", func, obj)
+ return obj
+
+ def nextQt(self):
+ """
+ Continues the enumeration of quaternion components started using yFirstQt().
+
+ @return a pointer to a YQt object, corresponding to
+ a quaternion component currently online, or a None pointer
+ if there are no more quaternion components to enumerate.
+ """
+ hwidRef = YRefParam()
+ if YAPI.YISERR(self._nextFunction(hwidRef)):
+ return None
+ if hwidRef.value == "":
+ return None
+ return YQt.FindQt(hwidRef.value)
+
+#--- (end of generated code: YQt implementation)
+
+#--- (generated code: Qt functions)
+
+ @staticmethod
+ def FirstQt():
+ """
+ Starts the enumeration of quaternion components currently accessible.
+ Use the method YQt.nextQt() to iterate on
+ next quaternion components.
+
+ @return a pointer to a YQt object, corresponding to
+ the first quaternion component currently online, or a None pointer
+ if there are none.
+ """
+ devRef = YRefParam()
+ neededsizeRef = YRefParam()
+ serialRef = YRefParam()
+ funcIdRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+ errmsgRef = YRefParam()
+ size = YAPI.C_INTSIZE
+ #noinspection PyTypeChecker,PyCallingNonCallable
+ p = (ctypes.c_int * 1)()
+ err = YAPI.apiGetFunctionsByClass("Qt", 0, p, size, neededsizeRef, errmsgRef)
+
+ if YAPI.YISERR(err) or not neededsizeRef.value:
+ return None
+
+ if YAPI.YISERR(
+ YAPI.yapiGetFunctionInfo(p[0], devRef, serialRef, funcIdRef, funcNameRef, funcValRef, errmsgRef)):
+ return None
+
+ return YQt.FindQt(serialRef.value + "." + funcIdRef.value)
+
+#--- (end of generated code: Qt functions)
+
+def yInternalGyroCallback(YQt_obj, str_value):
+ gyro = YQt_obj.get_userData()
+ if gyro is None:
+ return
+ tmp = YQt_obj.get_functionId()[2]
+ idx = int(tmp)
+ dbl_value = float(str_value)
+ # noinspection PyProtectedMember
+ gyro._invokeGyroCallbacks(idx, dbl_value)
+
+#--- (generated code: YGyro class start)
+#noinspection PyProtectedMember
+class YGyro(YSensor):
+ """
+ The YSensor class is the parent class for all Yoctopuce sensors. It can be
+ used to read the current value and unit of any sensor, read the min/max
+ value, configure autonomous recording frequency and access recorded data.
+ It also provide a function to register a callback invoked each time the
+ observed value changes, or at a predefined interval. Using this class rather
+ than a specific subclass makes it possible to create generic applications
+ that work with any Yoctopuce sensor, even those that do not yet exist.
+ Note: The YAnButton class is the only analog input which does not inherit
+ from YSensor.
+
+ """
+#--- (end of generated code: YGyro class start)
+ #--- (generated code: YGyro return codes)
+ #--- (end of generated code: YGyro return codes)
+ #--- (generated code: YGyro definitions)
+ BANDWIDTH_INVALID = YAPI.INVALID_INT
+ XVALUE_INVALID = YAPI.INVALID_DOUBLE
+ YVALUE_INVALID = YAPI.INVALID_DOUBLE
+ ZVALUE_INVALID = YAPI.INVALID_DOUBLE
+ #--- (end of generated code: YGyro definitions)
+
+ def __init__(self, func):
+ super(YGyro, self).__init__(func)
+ self._className = 'Gyro'
+ #--- (generated code: YGyro attributes)
+ self._callback = None
+ self._bandwidth = YGyro.BANDWIDTH_INVALID
+ self._xValue = YGyro.XVALUE_INVALID
+ self._yValue = YGyro.YVALUE_INVALID
+ self._zValue = YGyro.ZVALUE_INVALID
+ self._qt_stamp = 0
+ self._qt_w = None
+ self._qt_x = None
+ self._qt_y = None
+ self._qt_z = None
+ self._w = 0
+ self._x = 0
+ self._y = 0
+ self._z = 0
+ self._angles_stamp = 0
+ self._head = 0
+ self._pitch = 0
+ self._roll = 0
+ self._quatCallback = None
+ self._anglesCallback = None
+ #--- (end of generated code: YGyro attributes)
+
+ #--- (generated code: YGyro implementation)
+ def _parseAttr(self, member):
+ if member.name == "bandwidth":
+ self._bandwidth = member.ivalue
+ return 1
+ if member.name == "xValue":
+ self._xValue = round(member.ivalue * 1000.0 / 65536.0) / 1000.0
+ return 1
+ if member.name == "yValue":
+ self._yValue = round(member.ivalue * 1000.0 / 65536.0) / 1000.0
+ return 1
+ if member.name == "zValue":
+ self._zValue = round(member.ivalue * 1000.0 / 65536.0) / 1000.0
+ return 1
+ super(YGyro, self)._parseAttr(member)
+
+ def get_bandwidth(self):
+ """
+ Returns the measure update frequency, measured in Hz (Yocto-3D-V2 only).
+
+ @return an integer corresponding to the measure update frequency, measured in Hz (Yocto-3D-V2 only)
+
+ On failure, throws an exception or returns YGyro.BANDWIDTH_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YGyro.BANDWIDTH_INVALID
+ return self._bandwidth
+
+ def set_bandwidth(self, newval):
+ """
+ Changes the measure update frequency, measured in Hz (Yocto-3D-V2 only). When the
+ frequency is lower, the device performs averaging.
+
+ @param newval : an integer corresponding to the measure update frequency, measured in Hz (Yocto-3D-V2 only)
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("bandwidth", rest_val)
+
+ def get_xValue(self):
+ """
+ Returns the angular velocity around the X axis of the device, as a floating point number.
+
+ @return a floating point number corresponding to the angular velocity around the X axis of the
+ device, as a floating point number
+
+ On failure, throws an exception or returns YGyro.XVALUE_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YGyro.XVALUE_INVALID
+ return self._xValue
+
+ def get_yValue(self):
+ """
+ Returns the angular velocity around the Y axis of the device, as a floating point number.
+
+ @return a floating point number corresponding to the angular velocity around the Y axis of the
+ device, as a floating point number
+
+ On failure, throws an exception or returns YGyro.YVALUE_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YGyro.YVALUE_INVALID
+ return self._yValue
+
+ def get_zValue(self):
+ """
+ Returns the angular velocity around the Z axis of the device, as a floating point number.
+
+ @return a floating point number corresponding to the angular velocity around the Z axis of the
+ device, as a floating point number
+
+ On failure, throws an exception or returns YGyro.ZVALUE_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YGyro.ZVALUE_INVALID
+ return self._zValue
+
+ @staticmethod
+ def FindGyro(func):
+ """
+ Retrieves a gyroscope for a given identifier.
+ The identifier can be specified using several formats:
+ <ul>
+ <li>FunctionLogicalName</li>
+ <li>ModuleSerialNumber.FunctionIdentifier</li>
+ <li>ModuleSerialNumber.FunctionLogicalName</li>
+ <li>ModuleLogicalName.FunctionIdentifier</li>
+ <li>ModuleLogicalName.FunctionLogicalName</li>
+ </ul>
+
+ This function does not require that the gyroscope is online at the time
+ it is invoked. The returned object is nevertheless valid.
+ Use the method YGyro.isOnline() to test if the gyroscope is
+ indeed online at a given time. In case of ambiguity when looking for
+ a gyroscope by logical name, no error is notified: the first instance
+ found is returned. The search is performed first by hardware name,
+ then by logical name.
+
+ @param func : a string that uniquely characterizes the gyroscope
+
+ @return a YGyro object allowing you to drive the gyroscope.
+ """
+ # obj
+ obj = YFunction._FindFromCache("Gyro", func)
+ if obj is None:
+ obj = YGyro(func)
+ YFunction._AddToCache("Gyro", func, obj)
+ return obj
+
+ def _loadQuaternion(self):
+ # now_stamp
+ # age_ms
+ now_stamp = (YRelTickCount(YAPI.GetTickCount()) & (0x7FFFFFFF))
+ age_ms = (((now_stamp - self._qt_stamp)) & (0x7FFFFFFF))
+ if (age_ms >= 10) or (self._qt_stamp == 0):
+ if self.load(10) != YAPI.SUCCESS:
+ return YAPI.DEVICE_NOT_FOUND
+ if self._qt_stamp == 0:
+ self._qt_w = YQt.FindQt("" + self._serial + ".qt1")
+ self._qt_x = YQt.FindQt("" + self._serial + ".qt2")
+ self._qt_y = YQt.FindQt("" + self._serial + ".qt3")
+ self._qt_z = YQt.FindQt("" + self._serial + ".qt4")
+ #
+ if self._qt_w.load(9) != YAPI.SUCCESS:
+ return YAPI.DEVICE_NOT_FOUND
+ if self._qt_x.load(9) != YAPI.SUCCESS:
+ return YAPI.DEVICE_NOT_FOUND
+ if self._qt_y.load(9) != YAPI.SUCCESS:
+ return YAPI.DEVICE_NOT_FOUND
+ if self._qt_z.load(9) != YAPI.SUCCESS:
+ return YAPI.DEVICE_NOT_FOUND
+ self._w = self._qt_w.get_currentValue()
+ self._x = self._qt_x.get_currentValue()
+ self._y = self._qt_y.get_currentValue()
+ self._z = self._qt_z.get_currentValue()
+ self._qt_stamp = now_stamp
+ return YAPI.SUCCESS
+
+ def _loadAngles(self):
+ # sqw
+ # sqx
+ # sqy
+ # sqz
+ # norm
+ # delta
+ # // may throw an exception
+ if self._loadQuaternion() != YAPI.SUCCESS:
+ return YAPI.DEVICE_NOT_FOUND
+ if self._angles_stamp != self._qt_stamp:
+ sqw = self._w * self._w
+ sqx = self._x * self._x
+ sqy = self._y * self._y
+ sqz = self._z * self._z
+ norm = sqx + sqy + sqz + sqw
+ delta = self._y * self._w - self._x * self._z
+ if delta > 0.499 * norm:
+ #
+ self._pitch = 90.0
+ self._head = round(2.0 * 1800.0/math.pi * math.atan2(self._x,-self._w)) / 10.0
+ else:
+ if delta < -0.499 * norm:
+ #
+ self._pitch = -90.0
+ self._head = round(-2.0 * 1800.0/math.pi * math.atan2(self._x,-self._w)) / 10.0
+ else:
+ self._roll = round(1800.0/math.pi * math.atan2(2.0 * (self._w * self._x + self._y * self._z),sqw - sqx - sqy + sqz)) / 10.0
+ self._pitch = round(1800.0/math.pi * math.asin(2.0 * delta / norm)) / 10.0
+ self._head = round(1800.0/math.pi * math.atan2(2.0 * (self._x * self._y + self._z * self._w),sqw + sqx - sqy - sqz)) / 10.0
+ self._angles_stamp = self._qt_stamp
+ return YAPI.SUCCESS
+
+ def get_roll(self):
+ """
+ Returns the estimated roll angle, based on the integration of
+ gyroscopic measures combined with acceleration and
+ magnetic field measurements.
+ The axis corresponding to the roll angle can be mapped to any
+ of the device X, Y or Z physical directions using methods of
+ the class YRefFrame.
+
+ @return a floating-point number corresponding to roll angle
+ in degrees, between -180 and +180.
+ """
+ # // may throw an exception
+ self._loadAngles()
+ return self._roll
+
+ def get_pitch(self):
+ """
+ Returns the estimated pitch angle, based on the integration of
+ gyroscopic measures combined with acceleration and
+ magnetic field measurements.
+ The axis corresponding to the pitch angle can be mapped to any
+ of the device X, Y or Z physical directions using methods of
+ the class YRefFrame.
+
+ @return a floating-point number corresponding to pitch angle
+ in degrees, between -90 and +90.
+ """
+ # // may throw an exception
+ self._loadAngles()
+ return self._pitch
+
+ def get_heading(self):
+ """
+ Returns the estimated heading angle, based on the integration of
+ gyroscopic measures combined with acceleration and
+ magnetic field measurements.
+ The axis corresponding to the heading can be mapped to any
+ of the device X, Y or Z physical directions using methods of
+ the class YRefFrame.
+
+ @return a floating-point number corresponding to heading
+ in degrees, between 0 and 360.
+ """
+ # // may throw an exception
+ self._loadAngles()
+ return self._head
+
+ def get_quaternionW(self):
+ """
+ Returns the w component (real part) of the quaternion
+ describing the device estimated orientation, based on the
+ integration of gyroscopic measures combined with acceleration and
+ magnetic field measurements.
+
+ @return a floating-point number corresponding to the w
+ component of the quaternion.
+ """
+ # // may throw an exception
+ self._loadQuaternion()
+ return self._w
+
+ def get_quaternionX(self):
+ """
+ Returns the x component of the quaternion
+ describing the device estimated orientation, based on the
+ integration of gyroscopic measures combined with acceleration and
+ magnetic field measurements. The x component is
+ mostly correlated with rotations on the roll axis.
+
+ @return a floating-point number corresponding to the x
+ component of the quaternion.
+ """
+ # // may throw an exception
+ self._loadQuaternion()
+ return self._x
+
+ def get_quaternionY(self):
+ """
+ Returns the y component of the quaternion
+ describing the device estimated orientation, based on the
+ integration of gyroscopic measures combined with acceleration and
+ magnetic field measurements. The y component is
+ mostly correlated with rotations on the pitch axis.
+
+ @return a floating-point number corresponding to the y
+ component of the quaternion.
+ """
+ # // may throw an exception
+ self._loadQuaternion()
+ return self._y
+
+ def get_quaternionZ(self):
+ """
+ Returns the x component of the quaternion
+ describing the device estimated orientation, based on the
+ integration of gyroscopic measures combined with acceleration and
+ magnetic field measurements. The x component is
+ mostly correlated with changes of heading.
+
+ @return a floating-point number corresponding to the z
+ component of the quaternion.
+ """
+ # // may throw an exception
+ self._loadQuaternion()
+ return self._z
+
+ def registerQuaternionCallback(self, callback):
+ """
+ Registers a callback function that will be invoked each time that the estimated
+ device orientation has changed. The call frequency is typically around 95Hz during a move.
+ The callback is invoked only during the execution of ySleep or yHandleEvents.
+ This provides control over the time when the callback is triggered.
+ For good responsiveness, remember to call one of these two functions periodically.
+ To unregister a callback, pass a None pointer as argument.
+
+ @param callback : the callback function to invoke, or a None pointer.
+ The callback function should take five arguments:
+ the YGyro object of the turning device, and the floating
+ point values of the four components w, x, y and z
+ (as floating-point numbers).
+ @noreturn
+ """
+ self._quatCallback = callback
+ if callback is not None:
+ #
+ if self._loadQuaternion() != YAPI.SUCCESS:
+ return YAPI.DEVICE_NOT_FOUND
+ self._qt_w.set_userData(self)
+ self._qt_x.set_userData(self)
+ self._qt_y.set_userData(self)
+ self._qt_z.set_userData(self)
+ self._qt_w.registerValueCallback(yInternalGyroCallback)
+ self._qt_x.registerValueCallback(yInternalGyroCallback)
+ self._qt_y.registerValueCallback(yInternalGyroCallback)
+ self._qt_z.registerValueCallback(yInternalGyroCallback)
+ else:
+ if not (self._anglesCallback is not None):
+ self._qt_w.registerValueCallback(None)
+ self._qt_x.registerValueCallback(None)
+ self._qt_y.registerValueCallback(None)
+ self._qt_z.registerValueCallback(None)
+ return 0
+
+ def registerAnglesCallback(self, callback):
+ """
+ Registers a callback function that will be invoked each time that the estimated
+ device orientation has changed. The call frequency is typically around 95Hz during a move.
+ The callback is invoked only during the execution of ySleep or yHandleEvents.
+ This provides control over the time when the callback is triggered.
+ For good responsiveness, remember to call one of these two functions periodically.
+ To unregister a callback, pass a None pointer as argument.
+
+ @param callback : the callback function to invoke, or a None pointer.
+ The callback function should take four arguments:
+ the YGyro object of the turning device, and the floating
+ point values of the three angles roll, pitch and heading
+ in degrees (as floating-point numbers).
+ @noreturn
+ """
+ self._anglesCallback = callback
+ if callback is not None:
+ #
+ if self._loadQuaternion() != YAPI.SUCCESS:
+ return YAPI.DEVICE_NOT_FOUND
+ self._qt_w.set_userData(self)
+ self._qt_x.set_userData(self)
+ self._qt_y.set_userData(self)
+ self._qt_z.set_userData(self)
+ self._qt_w.registerValueCallback(yInternalGyroCallback)
+ self._qt_x.registerValueCallback(yInternalGyroCallback)
+ self._qt_y.registerValueCallback(yInternalGyroCallback)
+ self._qt_z.registerValueCallback(yInternalGyroCallback)
+ else:
+ if not (self._quatCallback is not None):
+ self._qt_w.registerValueCallback(None)
+ self._qt_x.registerValueCallback(None)
+ self._qt_y.registerValueCallback(None)
+ self._qt_z.registerValueCallback(None)
+ return 0
+
+ def _invokeGyroCallbacks(self, qtIndex, qtValue):
+ if qtIndex - 1 == 0:
+ self._w = qtValue
+ elif qtIndex - 1 == 1:
+ self._x = qtValue
+ elif qtIndex - 1 == 2:
+ self._y = qtValue
+ elif qtIndex - 1 == 3:
+ self._z = qtValue
+ if qtIndex < 4:
+ return 0
+ self._qt_stamp = (YRelTickCount(YAPI.GetTickCount()) & (0x7FFFFFFF))
+ if self._quatCallback is not None:
+ self._quatCallback(self, self._w, self._x, self._y, self._z)
+ if self._anglesCallback is not None:
+ #
+ self._loadAngles()
+ self._anglesCallback(self, self._roll, self._pitch, self._head)
+ return 0
+
+ def nextGyro(self):
+ """
+ Continues the enumeration of gyroscopes started using yFirstGyro().
+
+ @return a pointer to a YGyro object, corresponding to
+ a gyroscope currently online, or a None pointer
+ if there are no more gyroscopes to enumerate.
+ """
+ hwidRef = YRefParam()
+ if YAPI.YISERR(self._nextFunction(hwidRef)):
+ return None
+ if hwidRef.value == "":
+ return None
+ return YGyro.FindGyro(hwidRef.value)
+
+#--- (end of generated code: YGyro implementation)
+
+#--- (generated code: Gyro functions)
+
+ @staticmethod
+ def FirstGyro():
+ """
+ Starts the enumeration of gyroscopes currently accessible.
+ Use the method YGyro.nextGyro() to iterate on
+ next gyroscopes.
+
+ @return a pointer to a YGyro object, corresponding to
+ the first gyro currently online, or a None pointer
+ if there are none.
+ """
+ devRef = YRefParam()
+ neededsizeRef = YRefParam()
+ serialRef = YRefParam()
+ funcIdRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+ errmsgRef = YRefParam()
+ size = YAPI.C_INTSIZE
+ #noinspection PyTypeChecker,PyCallingNonCallable
+ p = (ctypes.c_int * 1)()
+ err = YAPI.apiGetFunctionsByClass("Gyro", 0, p, size, neededsizeRef, errmsgRef)
+
+ if YAPI.YISERR(err) or not neededsizeRef.value:
+ return None
+
+ if YAPI.YISERR(
+ YAPI.yapiGetFunctionInfo(p[0], devRef, serialRef, funcIdRef, funcNameRef, funcValRef, errmsgRef)):
+ return None
+
+ return YGyro.FindGyro(serialRef.value + "." + funcIdRef.value)
+
+#--- (end of generated code: Gyro functions)
diff --git a/yoctoLib.python.26380/Sources/yocto_hubport.py b/yoctoLib.python.26380/Sources/yocto_hubport.py
new file mode 100644
index 0000000..a18287d
--- /dev/null
+++ b/yoctoLib.python.26380/Sources/yocto_hubport.py
@@ -0,0 +1,237 @@
+#*********************************************************************
+#*
+#* $Id: yocto_hubport.py 23243 2016-02-23 14:13:12Z seb $
+#*
+#* Implements yFindHubPort(), the high-level API for HubPort functions
+#*
+#* - - - - - - - - - License information: - - - - - - - - -
+#*
+#* Copyright (C) 2011 and beyond by Yoctopuce Sarl, Switzerland.
+#*
+#* Yoctopuce Sarl (hereafter Licensor) grants to you a perpetual
+#* non-exclusive license to use, modify, copy and integrate this
+#* file into your software for the sole purpose of interfacing
+#* with Yoctopuce products.
+#*
+#* You may reproduce and distribute copies of this file in
+#* source or object form, as long as the sole purpose of this
+#* code is to interface with Yoctopuce products. You must retain
+#* this notice in the distributed source file.
+#*
+#* You should refer to Yoctopuce General Terms and Conditions
+#* for additional information regarding your rights and
+#* obligations.
+#*
+#* THE SOFTWARE AND DOCUMENTATION ARE PROVIDED 'AS IS' WITHOUT
+#* WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
+#* WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS
+#* FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO
+#* EVENT SHALL LICENSOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
+#* INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA,
+#* COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR
+#* SERVICES, ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT
+#* LIMITED TO ANY DEFENSE THEREOF), ANY CLAIMS FOR INDEMNITY OR
+#* CONTRIBUTION, OR OTHER SIMILAR COSTS, WHETHER ASSERTED ON THE
+#* BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE), BREACH OF
+#* WARRANTY, OR OTHERWISE.
+#*
+#*********************************************************************/
+
+
+__docformat__ = 'restructuredtext en'
+from yocto_api import *
+
+
+#--- (YHubPort class start)
+#noinspection PyProtectedMember
+class YHubPort(YFunction):
+ """
+ YHubPort objects provide control over the power supply for every
+ YoctoHub port and provide information about the device connected to it.
+ The logical name of a YHubPort is always automatically set to the
+ unique serial number of the Yoctopuce device connected to it.
+
+ """
+#--- (end of YHubPort class start)
+ #--- (YHubPort return codes)
+ #--- (end of YHubPort return codes)
+ #--- (YHubPort dlldef)
+ #--- (end of YHubPort dlldef)
+ #--- (YHubPort definitions)
+ BAUDRATE_INVALID = YAPI.INVALID_UINT
+ ENABLED_FALSE = 0
+ ENABLED_TRUE = 1
+ ENABLED_INVALID = -1
+ PORTSTATE_OFF = 0
+ PORTSTATE_OVRLD = 1
+ PORTSTATE_ON = 2
+ PORTSTATE_RUN = 3
+ PORTSTATE_PROG = 4
+ PORTSTATE_INVALID = -1
+ #--- (end of YHubPort definitions)
+
+ def __init__(self, func):
+ super(YHubPort, self).__init__(func)
+ self._className = 'HubPort'
+ #--- (YHubPort attributes)
+ self._callback = None
+ self._enabled = YHubPort.ENABLED_INVALID
+ self._portState = YHubPort.PORTSTATE_INVALID
+ self._baudRate = YHubPort.BAUDRATE_INVALID
+ #--- (end of YHubPort attributes)
+
+ #--- (YHubPort implementation)
+ def _parseAttr(self, member):
+ if member.name == "enabled":
+ self._enabled = member.ivalue
+ return 1
+ if member.name == "portState":
+ self._portState = member.ivalue
+ return 1
+ if member.name == "baudRate":
+ self._baudRate = member.ivalue
+ return 1
+ super(YHubPort, self)._parseAttr(member)
+
+ def get_enabled(self):
+ """
+ Returns true if the Yocto-hub port is powered, false otherwise.
+
+ @return either YHubPort.ENABLED_FALSE or YHubPort.ENABLED_TRUE, according to true if the Yocto-hub
+ port is powered, false otherwise
+
+ On failure, throws an exception or returns YHubPort.ENABLED_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YHubPort.ENABLED_INVALID
+ return self._enabled
+
+ def set_enabled(self, newval):
+ """
+ Changes the activation of the Yocto-hub port. If the port is enabled, the
+ connected module is powered. Otherwise, port power is shut down.
+
+ @param newval : either YHubPort.ENABLED_FALSE or YHubPort.ENABLED_TRUE, according to the activation
+ of the Yocto-hub port
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = "1" if newval > 0 else "0"
+ return self._setAttr("enabled", rest_val)
+
+ def get_portState(self):
+ """
+ Returns the current state of the Yocto-hub port.
+
+ @return a value among YHubPort.PORTSTATE_OFF, YHubPort.PORTSTATE_OVRLD, YHubPort.PORTSTATE_ON,
+ YHubPort.PORTSTATE_RUN and YHubPort.PORTSTATE_PROG corresponding to the current state of the Yocto-hub port
+
+ On failure, throws an exception or returns YHubPort.PORTSTATE_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YHubPort.PORTSTATE_INVALID
+ return self._portState
+
+ def get_baudRate(self):
+ """
+ Returns the current baud rate used by this Yocto-hub port, in kbps.
+ The default value is 1000 kbps, but a slower rate may be used if communication
+ problems are encountered.
+
+ @return an integer corresponding to the current baud rate used by this Yocto-hub port, in kbps
+
+ On failure, throws an exception or returns YHubPort.BAUDRATE_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YHubPort.BAUDRATE_INVALID
+ return self._baudRate
+
+ @staticmethod
+ def FindHubPort(func):
+ """
+ Retrieves a Yocto-hub port for a given identifier.
+ The identifier can be specified using several formats:
+ <ul>
+ <li>FunctionLogicalName</li>
+ <li>ModuleSerialNumber.FunctionIdentifier</li>
+ <li>ModuleSerialNumber.FunctionLogicalName</li>
+ <li>ModuleLogicalName.FunctionIdentifier</li>
+ <li>ModuleLogicalName.FunctionLogicalName</li>
+ </ul>
+
+ This function does not require that the Yocto-hub port is online at the time
+ it is invoked. The returned object is nevertheless valid.
+ Use the method YHubPort.isOnline() to test if the Yocto-hub port is
+ indeed online at a given time. In case of ambiguity when looking for
+ a Yocto-hub port by logical name, no error is notified: the first instance
+ found is returned. The search is performed first by hardware name,
+ then by logical name.
+
+ @param func : a string that uniquely characterizes the Yocto-hub port
+
+ @return a YHubPort object allowing you to drive the Yocto-hub port.
+ """
+ # obj
+ obj = YFunction._FindFromCache("HubPort", func)
+ if obj is None:
+ obj = YHubPort(func)
+ YFunction._AddToCache("HubPort", func, obj)
+ return obj
+
+ def nextHubPort(self):
+ """
+ Continues the enumeration of Yocto-hub ports started using yFirstHubPort().
+
+ @return a pointer to a YHubPort object, corresponding to
+ a Yocto-hub port currently online, or a None pointer
+ if there are no more Yocto-hub ports to enumerate.
+ """
+ hwidRef = YRefParam()
+ if YAPI.YISERR(self._nextFunction(hwidRef)):
+ return None
+ if hwidRef.value == "":
+ return None
+ return YHubPort.FindHubPort(hwidRef.value)
+
+#--- (end of YHubPort implementation)
+
+#--- (HubPort functions)
+
+ @staticmethod
+ def FirstHubPort():
+ """
+ Starts the enumeration of Yocto-hub ports currently accessible.
+ Use the method YHubPort.nextHubPort() to iterate on
+ next Yocto-hub ports.
+
+ @return a pointer to a YHubPort object, corresponding to
+ the first Yocto-hub port currently online, or a None pointer
+ if there are none.
+ """
+ devRef = YRefParam()
+ neededsizeRef = YRefParam()
+ serialRef = YRefParam()
+ funcIdRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+ errmsgRef = YRefParam()
+ size = YAPI.C_INTSIZE
+ #noinspection PyTypeChecker,PyCallingNonCallable
+ p = (ctypes.c_int * 1)()
+ err = YAPI.apiGetFunctionsByClass("HubPort", 0, p, size, neededsizeRef, errmsgRef)
+
+ if YAPI.YISERR(err) or not neededsizeRef.value:
+ return None
+
+ if YAPI.YISERR(
+ YAPI.yapiGetFunctionInfo(p[0], devRef, serialRef, funcIdRef, funcNameRef, funcValRef, errmsgRef)):
+ return None
+
+ return YHubPort.FindHubPort(serialRef.value + "." + funcIdRef.value)
+
+#--- (end of HubPort functions)
diff --git a/yoctoLib.python.26380/Sources/yocto_humidity.py b/yoctoLib.python.26380/Sources/yocto_humidity.py
new file mode 100644
index 0000000..6d5b9e7
--- /dev/null
+++ b/yoctoLib.python.26380/Sources/yocto_humidity.py
@@ -0,0 +1,211 @@
+#*********************************************************************
+#*
+#* $Id: yocto_humidity.py 23243 2016-02-23 14:13:12Z seb $
+#*
+#* Implements yFindHumidity(), the high-level API for Humidity functions
+#*
+#* - - - - - - - - - License information: - - - - - - - - -
+#*
+#* Copyright (C) 2011 and beyond by Yoctopuce Sarl, Switzerland.
+#*
+#* Yoctopuce Sarl (hereafter Licensor) grants to you a perpetual
+#* non-exclusive license to use, modify, copy and integrate this
+#* file into your software for the sole purpose of interfacing
+#* with Yoctopuce products.
+#*
+#* You may reproduce and distribute copies of this file in
+#* source or object form, as long as the sole purpose of this
+#* code is to interface with Yoctopuce products. You must retain
+#* this notice in the distributed source file.
+#*
+#* You should refer to Yoctopuce General Terms and Conditions
+#* for additional information regarding your rights and
+#* obligations.
+#*
+#* THE SOFTWARE AND DOCUMENTATION ARE PROVIDED 'AS IS' WITHOUT
+#* WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
+#* WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS
+#* FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO
+#* EVENT SHALL LICENSOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
+#* INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA,
+#* COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR
+#* SERVICES, ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT
+#* LIMITED TO ANY DEFENSE THEREOF), ANY CLAIMS FOR INDEMNITY OR
+#* CONTRIBUTION, OR OTHER SIMILAR COSTS, WHETHER ASSERTED ON THE
+#* BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE), BREACH OF
+#* WARRANTY, OR OTHERWISE.
+#*
+#*********************************************************************/
+
+
+__docformat__ = 'restructuredtext en'
+from yocto_api import *
+
+
+#--- (YHumidity class start)
+#noinspection PyProtectedMember
+class YHumidity(YSensor):
+ """
+ The Yoctopuce class YHumidity allows you to read and configure Yoctopuce humidity
+ sensors. It inherits from YSensor class the core functions to read measurements,
+ register callback functions, access to the autonomous datalogger.
+
+ """
+#--- (end of YHumidity class start)
+ #--- (YHumidity return codes)
+ #--- (end of YHumidity return codes)
+ #--- (YHumidity dlldef)
+ #--- (end of YHumidity dlldef)
+ #--- (YHumidity definitions)
+ RELHUM_INVALID = YAPI.INVALID_DOUBLE
+ ABSHUM_INVALID = YAPI.INVALID_DOUBLE
+ #--- (end of YHumidity definitions)
+
+ def __init__(self, func):
+ super(YHumidity, self).__init__(func)
+ self._className = 'Humidity'
+ #--- (YHumidity attributes)
+ self._callback = None
+ self._relHum = YHumidity.RELHUM_INVALID
+ self._absHum = YHumidity.ABSHUM_INVALID
+ #--- (end of YHumidity attributes)
+
+ #--- (YHumidity implementation)
+ def _parseAttr(self, member):
+ if member.name == "relHum":
+ self._relHum = round(member.ivalue * 1000.0 / 65536.0) / 1000.0
+ return 1
+ if member.name == "absHum":
+ self._absHum = round(member.ivalue * 1000.0 / 65536.0) / 1000.0
+ return 1
+ super(YHumidity, self)._parseAttr(member)
+
+ def set_unit(self, newval):
+ """
+ Changes the primary unit for measuring humidity. That unit is a string.
+ If that strings starts with the letter 'g', the primary measured value is the absolute
+ humidity, in g/m3. Otherwise, the primary measured value will be the relative humidity
+ (RH), in per cents.
+
+ Remember to call the saveToFlash() method of the module if the modification
+ must be kept.
+
+ @param newval : a string corresponding to the primary unit for measuring humidity
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = newval
+ return self._setAttr("unit", rest_val)
+
+ def get_relHum(self):
+ """
+ Returns the current relative humidity, in per cents.
+
+ @return a floating point number corresponding to the current relative humidity, in per cents
+
+ On failure, throws an exception or returns YHumidity.RELHUM_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YHumidity.RELHUM_INVALID
+ return self._relHum
+
+ def get_absHum(self):
+ """
+ Returns the current absolute humidity, in grams per cubic meter of air.
+
+ @return a floating point number corresponding to the current absolute humidity, in grams per cubic meter of air
+
+ On failure, throws an exception or returns YHumidity.ABSHUM_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YHumidity.ABSHUM_INVALID
+ return self._absHum
+
+ @staticmethod
+ def FindHumidity(func):
+ """
+ Retrieves a humidity sensor for a given identifier.
+ The identifier can be specified using several formats:
+ <ul>
+ <li>FunctionLogicalName</li>
+ <li>ModuleSerialNumber.FunctionIdentifier</li>
+ <li>ModuleSerialNumber.FunctionLogicalName</li>
+ <li>ModuleLogicalName.FunctionIdentifier</li>
+ <li>ModuleLogicalName.FunctionLogicalName</li>
+ </ul>
+
+ This function does not require that the humidity sensor is online at the time
+ it is invoked. The returned object is nevertheless valid.
+ Use the method YHumidity.isOnline() to test if the humidity sensor is
+ indeed online at a given time. In case of ambiguity when looking for
+ a humidity sensor by logical name, no error is notified: the first instance
+ found is returned. The search is performed first by hardware name,
+ then by logical name.
+
+ @param func : a string that uniquely characterizes the humidity sensor
+
+ @return a YHumidity object allowing you to drive the humidity sensor.
+ """
+ # obj
+ obj = YFunction._FindFromCache("Humidity", func)
+ if obj is None:
+ obj = YHumidity(func)
+ YFunction._AddToCache("Humidity", func, obj)
+ return obj
+
+ def nextHumidity(self):
+ """
+ Continues the enumeration of humidity sensors started using yFirstHumidity().
+
+ @return a pointer to a YHumidity object, corresponding to
+ a humidity sensor currently online, or a None pointer
+ if there are no more humidity sensors to enumerate.
+ """
+ hwidRef = YRefParam()
+ if YAPI.YISERR(self._nextFunction(hwidRef)):
+ return None
+ if hwidRef.value == "":
+ return None
+ return YHumidity.FindHumidity(hwidRef.value)
+
+#--- (end of YHumidity implementation)
+
+#--- (Humidity functions)
+
+ @staticmethod
+ def FirstHumidity():
+ """
+ Starts the enumeration of humidity sensors currently accessible.
+ Use the method YHumidity.nextHumidity() to iterate on
+ next humidity sensors.
+
+ @return a pointer to a YHumidity object, corresponding to
+ the first humidity sensor currently online, or a None pointer
+ if there are none.
+ """
+ devRef = YRefParam()
+ neededsizeRef = YRefParam()
+ serialRef = YRefParam()
+ funcIdRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+ errmsgRef = YRefParam()
+ size = YAPI.C_INTSIZE
+ #noinspection PyTypeChecker,PyCallingNonCallable
+ p = (ctypes.c_int * 1)()
+ err = YAPI.apiGetFunctionsByClass("Humidity", 0, p, size, neededsizeRef, errmsgRef)
+
+ if YAPI.YISERR(err) or not neededsizeRef.value:
+ return None
+
+ if YAPI.YISERR(
+ YAPI.yapiGetFunctionInfo(p[0], devRef, serialRef, funcIdRef, funcNameRef, funcValRef, errmsgRef)):
+ return None
+
+ return YHumidity.FindHumidity(serialRef.value + "." + funcIdRef.value)
+
+#--- (end of Humidity functions)
diff --git a/yoctoLib.python.26380/Sources/yocto_latitude.py b/yoctoLib.python.26380/Sources/yocto_latitude.py
new file mode 100644
index 0000000..8436859
--- /dev/null
+++ b/yoctoLib.python.26380/Sources/yocto_latitude.py
@@ -0,0 +1,157 @@
+#*********************************************************************
+#*
+#* $Id: yocto_latitude.py 23243 2016-02-23 14:13:12Z seb $
+#*
+#* Implements yFindLatitude(), the high-level API for Latitude functions
+#*
+#* - - - - - - - - - License information: - - - - - - - - -
+#*
+#* Copyright (C) 2011 and beyond by Yoctopuce Sarl, Switzerland.
+#*
+#* Yoctopuce Sarl (hereafter Licensor) grants to you a perpetual
+#* non-exclusive license to use, modify, copy and integrate this
+#* file into your software for the sole purpose of interfacing
+#* with Yoctopuce products.
+#*
+#* You may reproduce and distribute copies of this file in
+#* source or object form, as long as the sole purpose of this
+#* code is to interface with Yoctopuce products. You must retain
+#* this notice in the distributed source file.
+#*
+#* You should refer to Yoctopuce General Terms and Conditions
+#* for additional information regarding your rights and
+#* obligations.
+#*
+#* THE SOFTWARE AND DOCUMENTATION ARE PROVIDED 'AS IS' WITHOUT
+#* WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
+#* WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS
+#* FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO
+#* EVENT SHALL LICENSOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
+#* INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA,
+#* COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR
+#* SERVICES, ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT
+#* LIMITED TO ANY DEFENSE THEREOF), ANY CLAIMS FOR INDEMNITY OR
+#* CONTRIBUTION, OR OTHER SIMILAR COSTS, WHETHER ASSERTED ON THE
+#* BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE), BREACH OF
+#* WARRANTY, OR OTHERWISE.
+#*
+#*********************************************************************/
+
+
+__docformat__ = 'restructuredtext en'
+from yocto_api import *
+
+
+#--- (YLatitude class start)
+#noinspection PyProtectedMember
+class YLatitude(YSensor):
+ """
+ The Yoctopuce class YLatitude allows you to read the latitude from Yoctopuce
+ geolocalization sensors. It inherits from the YSensor class the core functions to
+ read measurements, register callback functions, access the autonomous
+ datalogger.
+
+ """
+#--- (end of YLatitude class start)
+ #--- (YLatitude return codes)
+ #--- (end of YLatitude return codes)
+ #--- (YLatitude dlldef)
+ #--- (end of YLatitude dlldef)
+ #--- (YLatitude definitions)
+ #--- (end of YLatitude definitions)
+
+ def __init__(self, func):
+ super(YLatitude, self).__init__(func)
+ self._className = 'Latitude'
+ #--- (YLatitude attributes)
+ self._callback = None
+ #--- (end of YLatitude attributes)
+
+ #--- (YLatitude implementation)
+ def _parseAttr(self, member):
+ super(YLatitude, self)._parseAttr(member)
+
+ @staticmethod
+ def FindLatitude(func):
+ """
+ Retrieves a latitude sensor for a given identifier.
+ The identifier can be specified using several formats:
+ <ul>
+ <li>FunctionLogicalName</li>
+ <li>ModuleSerialNumber.FunctionIdentifier</li>
+ <li>ModuleSerialNumber.FunctionLogicalName</li>
+ <li>ModuleLogicalName.FunctionIdentifier</li>
+ <li>ModuleLogicalName.FunctionLogicalName</li>
+ </ul>
+
+ This function does not require that the latitude sensor is online at the time
+ it is invoked. The returned object is nevertheless valid.
+ Use the method YLatitude.isOnline() to test if the latitude sensor is
+ indeed online at a given time. In case of ambiguity when looking for
+ a latitude sensor by logical name, no error is notified: the first instance
+ found is returned. The search is performed first by hardware name,
+ then by logical name.
+
+ @param func : a string that uniquely characterizes the latitude sensor
+
+ @return a YLatitude object allowing you to drive the latitude sensor.
+ """
+ # obj
+ obj = YFunction._FindFromCache("Latitude", func)
+ if obj is None:
+ obj = YLatitude(func)
+ YFunction._AddToCache("Latitude", func, obj)
+ return obj
+
+ def nextLatitude(self):
+ """
+ Continues the enumeration of latitude sensors started using yFirstLatitude().
+
+ @return a pointer to a YLatitude object, corresponding to
+ a latitude sensor currently online, or a None pointer
+ if there are no more latitude sensors to enumerate.
+ """
+ hwidRef = YRefParam()
+ if YAPI.YISERR(self._nextFunction(hwidRef)):
+ return None
+ if hwidRef.value == "":
+ return None
+ return YLatitude.FindLatitude(hwidRef.value)
+
+#--- (end of YLatitude implementation)
+
+#--- (Latitude functions)
+
+ @staticmethod
+ def FirstLatitude():
+ """
+ Starts the enumeration of latitude sensors currently accessible.
+ Use the method YLatitude.nextLatitude() to iterate on
+ next latitude sensors.
+
+ @return a pointer to a YLatitude object, corresponding to
+ the first latitude sensor currently online, or a None pointer
+ if there are none.
+ """
+ devRef = YRefParam()
+ neededsizeRef = YRefParam()
+ serialRef = YRefParam()
+ funcIdRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+ errmsgRef = YRefParam()
+ size = YAPI.C_INTSIZE
+ #noinspection PyTypeChecker,PyCallingNonCallable
+ p = (ctypes.c_int * 1)()
+ err = YAPI.apiGetFunctionsByClass("Latitude", 0, p, size, neededsizeRef, errmsgRef)
+
+ if YAPI.YISERR(err) or not neededsizeRef.value:
+ return None
+
+ if YAPI.YISERR(
+ YAPI.yapiGetFunctionInfo(p[0], devRef, serialRef, funcIdRef, funcNameRef, funcValRef, errmsgRef)):
+ return None
+
+ return YLatitude.FindLatitude(serialRef.value + "." + funcIdRef.value)
+
+#--- (end of Latitude functions)
diff --git a/yoctoLib.python.26380/Sources/yocto_led.py b/yoctoLib.python.26380/Sources/yocto_led.py
new file mode 100644
index 0000000..983c84b
--- /dev/null
+++ b/yoctoLib.python.26380/Sources/yocto_led.py
@@ -0,0 +1,259 @@
+#*********************************************************************
+#*
+#* $Id: yocto_led.py 24475 2016-05-12 14:03:35Z mvuilleu $
+#*
+#* Implements yFindLed(), the high-level API for Led functions
+#*
+#* - - - - - - - - - License information: - - - - - - - - -
+#*
+#* Copyright (C) 2011 and beyond by Yoctopuce Sarl, Switzerland.
+#*
+#* Yoctopuce Sarl (hereafter Licensor) grants to you a perpetual
+#* non-exclusive license to use, modify, copy and integrate this
+#* file into your software for the sole purpose of interfacing
+#* with Yoctopuce products.
+#*
+#* You may reproduce and distribute copies of this file in
+#* source or object form, as long as the sole purpose of this
+#* code is to interface with Yoctopuce products. You must retain
+#* this notice in the distributed source file.
+#*
+#* You should refer to Yoctopuce General Terms and Conditions
+#* for additional information regarding your rights and
+#* obligations.
+#*
+#* THE SOFTWARE AND DOCUMENTATION ARE PROVIDED 'AS IS' WITHOUT
+#* WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
+#* WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS
+#* FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO
+#* EVENT SHALL LICENSOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
+#* INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA,
+#* COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR
+#* SERVICES, ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT
+#* LIMITED TO ANY DEFENSE THEREOF), ANY CLAIMS FOR INDEMNITY OR
+#* CONTRIBUTION, OR OTHER SIMILAR COSTS, WHETHER ASSERTED ON THE
+#* BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE), BREACH OF
+#* WARRANTY, OR OTHERWISE.
+#*
+#*********************************************************************/
+
+
+__docformat__ = 'restructuredtext en'
+from yocto_api import *
+
+
+#--- (YLed class start)
+#noinspection PyProtectedMember
+class YLed(YFunction):
+ """
+ The Yoctopuce application programming interface
+ allows you not only to drive the intensity of the LED, but also to
+ have it blink at various preset frequencies.
+
+ """
+#--- (end of YLed class start)
+ #--- (YLed return codes)
+ #--- (end of YLed return codes)
+ #--- (YLed dlldef)
+ #--- (end of YLed dlldef)
+ #--- (YLed definitions)
+ LUMINOSITY_INVALID = YAPI.INVALID_UINT
+ POWER_OFF = 0
+ POWER_ON = 1
+ POWER_INVALID = -1
+ BLINKING_STILL = 0
+ BLINKING_RELAX = 1
+ BLINKING_AWARE = 2
+ BLINKING_RUN = 3
+ BLINKING_CALL = 4
+ BLINKING_PANIC = 5
+ BLINKING_INVALID = -1
+ #--- (end of YLed definitions)
+
+ def __init__(self, func):
+ super(YLed, self).__init__(func)
+ self._className = 'Led'
+ #--- (YLed attributes)
+ self._callback = None
+ self._power = YLed.POWER_INVALID
+ self._luminosity = YLed.LUMINOSITY_INVALID
+ self._blinking = YLed.BLINKING_INVALID
+ #--- (end of YLed attributes)
+
+ #--- (YLed implementation)
+ def _parseAttr(self, member):
+ if member.name == "power":
+ self._power = member.ivalue
+ return 1
+ if member.name == "luminosity":
+ self._luminosity = member.ivalue
+ return 1
+ if member.name == "blinking":
+ self._blinking = member.ivalue
+ return 1
+ super(YLed, self)._parseAttr(member)
+
+ def get_power(self):
+ """
+ Returns the current LED state.
+
+ @return either YLed.POWER_OFF or YLed.POWER_ON, according to the current LED state
+
+ On failure, throws an exception or returns YLed.POWER_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YLed.POWER_INVALID
+ return self._power
+
+ def set_power(self, newval):
+ """
+ Changes the state of the LED.
+
+ @param newval : either YLed.POWER_OFF or YLed.POWER_ON, according to the state of the LED
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = "1" if newval > 0 else "0"
+ return self._setAttr("power", rest_val)
+
+ def get_luminosity(self):
+ """
+ Returns the current LED intensity (in per cent).
+
+ @return an integer corresponding to the current LED intensity (in per cent)
+
+ On failure, throws an exception or returns YLed.LUMINOSITY_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YLed.LUMINOSITY_INVALID
+ return self._luminosity
+
+ def set_luminosity(self, newval):
+ """
+ Changes the current LED intensity (in per cent).
+
+ @param newval : an integer corresponding to the current LED intensity (in per cent)
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("luminosity", rest_val)
+
+ def get_blinking(self):
+ """
+ Returns the current LED signaling mode.
+
+ @return a value among YLed.BLINKING_STILL, YLed.BLINKING_RELAX, YLed.BLINKING_AWARE,
+ YLed.BLINKING_RUN, YLed.BLINKING_CALL and YLed.BLINKING_PANIC corresponding to the current LED signaling mode
+
+ On failure, throws an exception or returns YLed.BLINKING_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YLed.BLINKING_INVALID
+ return self._blinking
+
+ def set_blinking(self, newval):
+ """
+ Changes the current LED signaling mode.
+
+ @param newval : a value among YLed.BLINKING_STILL, YLed.BLINKING_RELAX, YLed.BLINKING_AWARE,
+ YLed.BLINKING_RUN, YLed.BLINKING_CALL and YLed.BLINKING_PANIC corresponding to the current LED signaling mode
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("blinking", rest_val)
+
+ @staticmethod
+ def FindLed(func):
+ """
+ Retrieves a LED for a given identifier.
+ The identifier can be specified using several formats:
+ <ul>
+ <li>FunctionLogicalName</li>
+ <li>ModuleSerialNumber.FunctionIdentifier</li>
+ <li>ModuleSerialNumber.FunctionLogicalName</li>
+ <li>ModuleLogicalName.FunctionIdentifier</li>
+ <li>ModuleLogicalName.FunctionLogicalName</li>
+ </ul>
+
+ This function does not require that the LED is online at the time
+ it is invoked. The returned object is nevertheless valid.
+ Use the method YLed.isOnline() to test if the LED is
+ indeed online at a given time. In case of ambiguity when looking for
+ a LED by logical name, no error is notified: the first instance
+ found is returned. The search is performed first by hardware name,
+ then by logical name.
+
+ @param func : a string that uniquely characterizes the LED
+
+ @return a YLed object allowing you to drive the LED.
+ """
+ # obj
+ obj = YFunction._FindFromCache("Led", func)
+ if obj is None:
+ obj = YLed(func)
+ YFunction._AddToCache("Led", func, obj)
+ return obj
+
+ def nextLed(self):
+ """
+ Continues the enumeration of LEDs started using yFirstLed().
+
+ @return a pointer to a YLed object, corresponding to
+ a LED currently online, or a None pointer
+ if there are no more LEDs to enumerate.
+ """
+ hwidRef = YRefParam()
+ if YAPI.YISERR(self._nextFunction(hwidRef)):
+ return None
+ if hwidRef.value == "":
+ return None
+ return YLed.FindLed(hwidRef.value)
+
+#--- (end of YLed implementation)
+
+#--- (Led functions)
+
+ @staticmethod
+ def FirstLed():
+ """
+ Starts the enumeration of LEDs currently accessible.
+ Use the method YLed.nextLed() to iterate on
+ next LEDs.
+
+ @return a pointer to a YLed object, corresponding to
+ the first LED currently online, or a None pointer
+ if there are none.
+ """
+ devRef = YRefParam()
+ neededsizeRef = YRefParam()
+ serialRef = YRefParam()
+ funcIdRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+ errmsgRef = YRefParam()
+ size = YAPI.C_INTSIZE
+ #noinspection PyTypeChecker,PyCallingNonCallable
+ p = (ctypes.c_int * 1)()
+ err = YAPI.apiGetFunctionsByClass("Led", 0, p, size, neededsizeRef, errmsgRef)
+
+ if YAPI.YISERR(err) or not neededsizeRef.value:
+ return None
+
+ if YAPI.YISERR(
+ YAPI.yapiGetFunctionInfo(p[0], devRef, serialRef, funcIdRef, funcNameRef, funcValRef, errmsgRef)):
+ return None
+
+ return YLed.FindLed(serialRef.value + "." + funcIdRef.value)
+
+#--- (end of Led functions)
diff --git a/yoctoLib.python.26380/Sources/yocto_lightsensor.py b/yoctoLib.python.26380/Sources/yocto_lightsensor.py
new file mode 100644
index 0000000..a4e875b
--- /dev/null
+++ b/yoctoLib.python.26380/Sources/yocto_lightsensor.py
@@ -0,0 +1,225 @@
+#*********************************************************************
+#*
+#* $Id: yocto_lightsensor.py 23243 2016-02-23 14:13:12Z seb $
+#*
+#* Implements yFindLightSensor(), the high-level API for LightSensor functions
+#*
+#* - - - - - - - - - License information: - - - - - - - - -
+#*
+#* Copyright (C) 2011 and beyond by Yoctopuce Sarl, Switzerland.
+#*
+#* Yoctopuce Sarl (hereafter Licensor) grants to you a perpetual
+#* non-exclusive license to use, modify, copy and integrate this
+#* file into your software for the sole purpose of interfacing
+#* with Yoctopuce products.
+#*
+#* You may reproduce and distribute copies of this file in
+#* source or object form, as long as the sole purpose of this
+#* code is to interface with Yoctopuce products. You must retain
+#* this notice in the distributed source file.
+#*
+#* You should refer to Yoctopuce General Terms and Conditions
+#* for additional information regarding your rights and
+#* obligations.
+#*
+#* THE SOFTWARE AND DOCUMENTATION ARE PROVIDED 'AS IS' WITHOUT
+#* WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
+#* WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS
+#* FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO
+#* EVENT SHALL LICENSOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
+#* INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA,
+#* COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR
+#* SERVICES, ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT
+#* LIMITED TO ANY DEFENSE THEREOF), ANY CLAIMS FOR INDEMNITY OR
+#* CONTRIBUTION, OR OTHER SIMILAR COSTS, WHETHER ASSERTED ON THE
+#* BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE), BREACH OF
+#* WARRANTY, OR OTHERWISE.
+#*
+#*********************************************************************/
+
+
+__docformat__ = 'restructuredtext en'
+from yocto_api import *
+
+
+#--- (YLightSensor class start)
+#noinspection PyProtectedMember
+class YLightSensor(YSensor):
+ """
+ The Yoctopuce class YLightSensor allows you to read and configure Yoctopuce light
+ sensors. It inherits from YSensor class the core functions to read measurements,
+ register callback functions, access to the autonomous datalogger.
+ This class adds the ability to easily perform a one-point linear calibration
+ to compensate the effect of a glass or filter placed in front of the sensor.
+ For some light sensors with several working modes, this class can select the
+ desired working mode.
+
+ """
+#--- (end of YLightSensor class start)
+ #--- (YLightSensor return codes)
+ #--- (end of YLightSensor return codes)
+ #--- (YLightSensor dlldef)
+ #--- (end of YLightSensor dlldef)
+ #--- (YLightSensor definitions)
+ MEASURETYPE_HUMAN_EYE = 0
+ MEASURETYPE_WIDE_SPECTRUM = 1
+ MEASURETYPE_INFRARED = 2
+ MEASURETYPE_HIGH_RATE = 3
+ MEASURETYPE_HIGH_ENERGY = 4
+ MEASURETYPE_INVALID = -1
+ #--- (end of YLightSensor definitions)
+
+ def __init__(self, func):
+ super(YLightSensor, self).__init__(func)
+ self._className = 'LightSensor'
+ #--- (YLightSensor attributes)
+ self._callback = None
+ self._measureType = YLightSensor.MEASURETYPE_INVALID
+ #--- (end of YLightSensor attributes)
+
+ #--- (YLightSensor implementation)
+ def _parseAttr(self, member):
+ if member.name == "measureType":
+ self._measureType = member.ivalue
+ return 1
+ super(YLightSensor, self)._parseAttr(member)
+
+ def set_currentValue(self, newval):
+ rest_val = str(int(round(newval * 65536.0, 1)))
+ return self._setAttr("currentValue", rest_val)
+
+ def calibrate(self, calibratedVal):
+ """
+ Changes the sensor-specific calibration parameter so that the current value
+ matches a desired target (linear scaling).
+
+ @param calibratedVal : the desired target value.
+
+ Remember to call the saveToFlash() method of the module if the
+ modification must be kept.
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(int(round(calibratedVal * 65536.0, 1)))
+ return self._setAttr("currentValue", rest_val)
+
+ def get_measureType(self):
+ """
+ Returns the type of light measure.
+
+ @return a value among YLightSensor.MEASURETYPE_HUMAN_EYE, YLightSensor.MEASURETYPE_WIDE_SPECTRUM,
+ YLightSensor.MEASURETYPE_INFRARED, YLightSensor.MEASURETYPE_HIGH_RATE and
+ YLightSensor.MEASURETYPE_HIGH_ENERGY corresponding to the type of light measure
+
+ On failure, throws an exception or returns YLightSensor.MEASURETYPE_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YLightSensor.MEASURETYPE_INVALID
+ return self._measureType
+
+ def set_measureType(self, newval):
+ """
+ Modify the light sensor type used in the device. The measure can either
+ approximate the response of the human eye, focus on a specific light
+ spectrum, depending on the capabilities of the light-sensitive cell.
+ Remember to call the saveToFlash() method of the module if the
+ modification must be kept.
+
+ @param newval : a value among YLightSensor.MEASURETYPE_HUMAN_EYE,
+ YLightSensor.MEASURETYPE_WIDE_SPECTRUM, YLightSensor.MEASURETYPE_INFRARED,
+ YLightSensor.MEASURETYPE_HIGH_RATE and YLightSensor.MEASURETYPE_HIGH_ENERGY
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("measureType", rest_val)
+
+ @staticmethod
+ def FindLightSensor(func):
+ """
+ Retrieves a light sensor for a given identifier.
+ The identifier can be specified using several formats:
+ <ul>
+ <li>FunctionLogicalName</li>
+ <li>ModuleSerialNumber.FunctionIdentifier</li>
+ <li>ModuleSerialNumber.FunctionLogicalName</li>
+ <li>ModuleLogicalName.FunctionIdentifier</li>
+ <li>ModuleLogicalName.FunctionLogicalName</li>
+ </ul>
+
+ This function does not require that the light sensor is online at the time
+ it is invoked. The returned object is nevertheless valid.
+ Use the method YLightSensor.isOnline() to test if the light sensor is
+ indeed online at a given time. In case of ambiguity when looking for
+ a light sensor by logical name, no error is notified: the first instance
+ found is returned. The search is performed first by hardware name,
+ then by logical name.
+
+ @param func : a string that uniquely characterizes the light sensor
+
+ @return a YLightSensor object allowing you to drive the light sensor.
+ """
+ # obj
+ obj = YFunction._FindFromCache("LightSensor", func)
+ if obj is None:
+ obj = YLightSensor(func)
+ YFunction._AddToCache("LightSensor", func, obj)
+ return obj
+
+ def nextLightSensor(self):
+ """
+ Continues the enumeration of light sensors started using yFirstLightSensor().
+
+ @return a pointer to a YLightSensor object, corresponding to
+ a light sensor currently online, or a None pointer
+ if there are no more light sensors to enumerate.
+ """
+ hwidRef = YRefParam()
+ if YAPI.YISERR(self._nextFunction(hwidRef)):
+ return None
+ if hwidRef.value == "":
+ return None
+ return YLightSensor.FindLightSensor(hwidRef.value)
+
+#--- (end of YLightSensor implementation)
+
+#--- (LightSensor functions)
+
+ @staticmethod
+ def FirstLightSensor():
+ """
+ Starts the enumeration of light sensors currently accessible.
+ Use the method YLightSensor.nextLightSensor() to iterate on
+ next light sensors.
+
+ @return a pointer to a YLightSensor object, corresponding to
+ the first light sensor currently online, or a None pointer
+ if there are none.
+ """
+ devRef = YRefParam()
+ neededsizeRef = YRefParam()
+ serialRef = YRefParam()
+ funcIdRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+ errmsgRef = YRefParam()
+ size = YAPI.C_INTSIZE
+ #noinspection PyTypeChecker,PyCallingNonCallable
+ p = (ctypes.c_int * 1)()
+ err = YAPI.apiGetFunctionsByClass("LightSensor", 0, p, size, neededsizeRef, errmsgRef)
+
+ if YAPI.YISERR(err) or not neededsizeRef.value:
+ return None
+
+ if YAPI.YISERR(
+ YAPI.yapiGetFunctionInfo(p[0], devRef, serialRef, funcIdRef, funcNameRef, funcValRef, errmsgRef)):
+ return None
+
+ return YLightSensor.FindLightSensor(serialRef.value + "." + funcIdRef.value)
+
+#--- (end of LightSensor functions)
diff --git a/yoctoLib.python.26380/Sources/yocto_longitude.py b/yoctoLib.python.26380/Sources/yocto_longitude.py
new file mode 100644
index 0000000..7ca0de3
--- /dev/null
+++ b/yoctoLib.python.26380/Sources/yocto_longitude.py
@@ -0,0 +1,157 @@
+#*********************************************************************
+#*
+#* $Id: yocto_longitude.py 23243 2016-02-23 14:13:12Z seb $
+#*
+#* Implements yFindLongitude(), the high-level API for Longitude functions
+#*
+#* - - - - - - - - - License information: - - - - - - - - -
+#*
+#* Copyright (C) 2011 and beyond by Yoctopuce Sarl, Switzerland.
+#*
+#* Yoctopuce Sarl (hereafter Licensor) grants to you a perpetual
+#* non-exclusive license to use, modify, copy and integrate this
+#* file into your software for the sole purpose of interfacing
+#* with Yoctopuce products.
+#*
+#* You may reproduce and distribute copies of this file in
+#* source or object form, as long as the sole purpose of this
+#* code is to interface with Yoctopuce products. You must retain
+#* this notice in the distributed source file.
+#*
+#* You should refer to Yoctopuce General Terms and Conditions
+#* for additional information regarding your rights and
+#* obligations.
+#*
+#* THE SOFTWARE AND DOCUMENTATION ARE PROVIDED 'AS IS' WITHOUT
+#* WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
+#* WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS
+#* FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO
+#* EVENT SHALL LICENSOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
+#* INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA,
+#* COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR
+#* SERVICES, ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT
+#* LIMITED TO ANY DEFENSE THEREOF), ANY CLAIMS FOR INDEMNITY OR
+#* CONTRIBUTION, OR OTHER SIMILAR COSTS, WHETHER ASSERTED ON THE
+#* BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE), BREACH OF
+#* WARRANTY, OR OTHERWISE.
+#*
+#*********************************************************************/
+
+
+__docformat__ = 'restructuredtext en'
+from yocto_api import *
+
+
+#--- (YLongitude class start)
+#noinspection PyProtectedMember
+class YLongitude(YSensor):
+ """
+ The Yoctopuce class YLongitude allows you to read the longitude from Yoctopuce
+ geolocalization sensors. It inherits from the YSensor class the core functions to
+ read measurements, register callback functions, access the autonomous
+ datalogger.
+
+ """
+#--- (end of YLongitude class start)
+ #--- (YLongitude return codes)
+ #--- (end of YLongitude return codes)
+ #--- (YLongitude dlldef)
+ #--- (end of YLongitude dlldef)
+ #--- (YLongitude definitions)
+ #--- (end of YLongitude definitions)
+
+ def __init__(self, func):
+ super(YLongitude, self).__init__(func)
+ self._className = 'Longitude'
+ #--- (YLongitude attributes)
+ self._callback = None
+ #--- (end of YLongitude attributes)
+
+ #--- (YLongitude implementation)
+ def _parseAttr(self, member):
+ super(YLongitude, self)._parseAttr(member)
+
+ @staticmethod
+ def FindLongitude(func):
+ """
+ Retrieves a longitude sensor for a given identifier.
+ The identifier can be specified using several formats:
+ <ul>
+ <li>FunctionLogicalName</li>
+ <li>ModuleSerialNumber.FunctionIdentifier</li>
+ <li>ModuleSerialNumber.FunctionLogicalName</li>
+ <li>ModuleLogicalName.FunctionIdentifier</li>
+ <li>ModuleLogicalName.FunctionLogicalName</li>
+ </ul>
+
+ This function does not require that the longitude sensor is online at the time
+ it is invoked. The returned object is nevertheless valid.
+ Use the method YLongitude.isOnline() to test if the longitude sensor is
+ indeed online at a given time. In case of ambiguity when looking for
+ a longitude sensor by logical name, no error is notified: the first instance
+ found is returned. The search is performed first by hardware name,
+ then by logical name.
+
+ @param func : a string that uniquely characterizes the longitude sensor
+
+ @return a YLongitude object allowing you to drive the longitude sensor.
+ """
+ # obj
+ obj = YFunction._FindFromCache("Longitude", func)
+ if obj is None:
+ obj = YLongitude(func)
+ YFunction._AddToCache("Longitude", func, obj)
+ return obj
+
+ def nextLongitude(self):
+ """
+ Continues the enumeration of longitude sensors started using yFirstLongitude().
+
+ @return a pointer to a YLongitude object, corresponding to
+ a longitude sensor currently online, or a None pointer
+ if there are no more longitude sensors to enumerate.
+ """
+ hwidRef = YRefParam()
+ if YAPI.YISERR(self._nextFunction(hwidRef)):
+ return None
+ if hwidRef.value == "":
+ return None
+ return YLongitude.FindLongitude(hwidRef.value)
+
+#--- (end of YLongitude implementation)
+
+#--- (Longitude functions)
+
+ @staticmethod
+ def FirstLongitude():
+ """
+ Starts the enumeration of longitude sensors currently accessible.
+ Use the method YLongitude.nextLongitude() to iterate on
+ next longitude sensors.
+
+ @return a pointer to a YLongitude object, corresponding to
+ the first longitude sensor currently online, or a None pointer
+ if there are none.
+ """
+ devRef = YRefParam()
+ neededsizeRef = YRefParam()
+ serialRef = YRefParam()
+ funcIdRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+ errmsgRef = YRefParam()
+ size = YAPI.C_INTSIZE
+ #noinspection PyTypeChecker,PyCallingNonCallable
+ p = (ctypes.c_int * 1)()
+ err = YAPI.apiGetFunctionsByClass("Longitude", 0, p, size, neededsizeRef, errmsgRef)
+
+ if YAPI.YISERR(err) or not neededsizeRef.value:
+ return None
+
+ if YAPI.YISERR(
+ YAPI.yapiGetFunctionInfo(p[0], devRef, serialRef, funcIdRef, funcNameRef, funcValRef, errmsgRef)):
+ return None
+
+ return YLongitude.FindLongitude(serialRef.value + "." + funcIdRef.value)
+
+#--- (end of Longitude functions)
diff --git a/yoctoLib.python.26380/Sources/yocto_magnetometer.py b/yoctoLib.python.26380/Sources/yocto_magnetometer.py
new file mode 100644
index 0000000..97c7b16
--- /dev/null
+++ b/yoctoLib.python.26380/Sources/yocto_magnetometer.py
@@ -0,0 +1,251 @@
+#*********************************************************************
+#*
+#* $Id: yocto_magnetometer.py 24934 2016-06-30 22:32:01Z mvuilleu $
+#*
+#* Implements yFindMagnetometer(), the high-level API for Magnetometer functions
+#*
+#* - - - - - - - - - License information: - - - - - - - - -
+#*
+#* Copyright (C) 2011 and beyond by Yoctopuce Sarl, Switzerland.
+#*
+#* Yoctopuce Sarl (hereafter Licensor) grants to you a perpetual
+#* non-exclusive license to use, modify, copy and integrate this
+#* file into your software for the sole purpose of interfacing
+#* with Yoctopuce products.
+#*
+#* You may reproduce and distribute copies of this file in
+#* source or object form, as long as the sole purpose of this
+#* code is to interface with Yoctopuce products. You must retain
+#* this notice in the distributed source file.
+#*
+#* You should refer to Yoctopuce General Terms and Conditions
+#* for additional information regarding your rights and
+#* obligations.
+#*
+#* THE SOFTWARE AND DOCUMENTATION ARE PROVIDED 'AS IS' WITHOUT
+#* WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
+#* WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS
+#* FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO
+#* EVENT SHALL LICENSOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
+#* INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA,
+#* COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR
+#* SERVICES, ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT
+#* LIMITED TO ANY DEFENSE THEREOF), ANY CLAIMS FOR INDEMNITY OR
+#* CONTRIBUTION, OR OTHER SIMILAR COSTS, WHETHER ASSERTED ON THE
+#* BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE), BREACH OF
+#* WARRANTY, OR OTHERWISE.
+#*
+#*********************************************************************/
+
+
+__docformat__ = 'restructuredtext en'
+from yocto_api import *
+
+
+#--- (YMagnetometer class start)
+#noinspection PyProtectedMember
+class YMagnetometer(YSensor):
+ """
+ The YSensor class is the parent class for all Yoctopuce sensors. It can be
+ used to read the current value and unit of any sensor, read the min/max
+ value, configure autonomous recording frequency and access recorded data.
+ It also provide a function to register a callback invoked each time the
+ observed value changes, or at a predefined interval. Using this class rather
+ than a specific subclass makes it possible to create generic applications
+ that work with any Yoctopuce sensor, even those that do not yet exist.
+ Note: The YAnButton class is the only analog input which does not inherit
+ from YSensor.
+
+ """
+#--- (end of YMagnetometer class start)
+ #--- (YMagnetometer return codes)
+ #--- (end of YMagnetometer return codes)
+ #--- (YMagnetometer dlldef)
+ #--- (end of YMagnetometer dlldef)
+ #--- (YMagnetometer definitions)
+ BANDWIDTH_INVALID = YAPI.INVALID_INT
+ XVALUE_INVALID = YAPI.INVALID_DOUBLE
+ YVALUE_INVALID = YAPI.INVALID_DOUBLE
+ ZVALUE_INVALID = YAPI.INVALID_DOUBLE
+ #--- (end of YMagnetometer definitions)
+
+ def __init__(self, func):
+ super(YMagnetometer, self).__init__(func)
+ self._className = 'Magnetometer'
+ #--- (YMagnetometer attributes)
+ self._callback = None
+ self._bandwidth = YMagnetometer.BANDWIDTH_INVALID
+ self._xValue = YMagnetometer.XVALUE_INVALID
+ self._yValue = YMagnetometer.YVALUE_INVALID
+ self._zValue = YMagnetometer.ZVALUE_INVALID
+ #--- (end of YMagnetometer attributes)
+
+ #--- (YMagnetometer implementation)
+ def _parseAttr(self, member):
+ if member.name == "bandwidth":
+ self._bandwidth = member.ivalue
+ return 1
+ if member.name == "xValue":
+ self._xValue = round(member.ivalue * 1000.0 / 65536.0) / 1000.0
+ return 1
+ if member.name == "yValue":
+ self._yValue = round(member.ivalue * 1000.0 / 65536.0) / 1000.0
+ return 1
+ if member.name == "zValue":
+ self._zValue = round(member.ivalue * 1000.0 / 65536.0) / 1000.0
+ return 1
+ super(YMagnetometer, self)._parseAttr(member)
+
+ def get_bandwidth(self):
+ """
+ Returns the measure update frequency, measured in Hz (Yocto-3D-V2 only).
+
+ @return an integer corresponding to the measure update frequency, measured in Hz (Yocto-3D-V2 only)
+
+ On failure, throws an exception or returns YMagnetometer.BANDWIDTH_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YMagnetometer.BANDWIDTH_INVALID
+ return self._bandwidth
+
+ def set_bandwidth(self, newval):
+ """
+ Changes the measure update frequency, measured in Hz (Yocto-3D-V2 only). When the
+ frequency is lower, the device performs averaging.
+
+ @param newval : an integer corresponding to the measure update frequency, measured in Hz (Yocto-3D-V2 only)
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("bandwidth", rest_val)
+
+ def get_xValue(self):
+ """
+ Returns the X component of the magnetic field, as a floating point number.
+
+ @return a floating point number corresponding to the X component of the magnetic field, as a
+ floating point number
+
+ On failure, throws an exception or returns YMagnetometer.XVALUE_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YMagnetometer.XVALUE_INVALID
+ return self._xValue
+
+ def get_yValue(self):
+ """
+ Returns the Y component of the magnetic field, as a floating point number.
+
+ @return a floating point number corresponding to the Y component of the magnetic field, as a
+ floating point number
+
+ On failure, throws an exception or returns YMagnetometer.YVALUE_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YMagnetometer.YVALUE_INVALID
+ return self._yValue
+
+ def get_zValue(self):
+ """
+ Returns the Z component of the magnetic field, as a floating point number.
+
+ @return a floating point number corresponding to the Z component of the magnetic field, as a
+ floating point number
+
+ On failure, throws an exception or returns YMagnetometer.ZVALUE_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YMagnetometer.ZVALUE_INVALID
+ return self._zValue
+
+ @staticmethod
+ def FindMagnetometer(func):
+ """
+ Retrieves a magnetometer for a given identifier.
+ The identifier can be specified using several formats:
+ <ul>
+ <li>FunctionLogicalName</li>
+ <li>ModuleSerialNumber.FunctionIdentifier</li>
+ <li>ModuleSerialNumber.FunctionLogicalName</li>
+ <li>ModuleLogicalName.FunctionIdentifier</li>
+ <li>ModuleLogicalName.FunctionLogicalName</li>
+ </ul>
+
+ This function does not require that the magnetometer is online at the time
+ it is invoked. The returned object is nevertheless valid.
+ Use the method YMagnetometer.isOnline() to test if the magnetometer is
+ indeed online at a given time. In case of ambiguity when looking for
+ a magnetometer by logical name, no error is notified: the first instance
+ found is returned. The search is performed first by hardware name,
+ then by logical name.
+
+ @param func : a string that uniquely characterizes the magnetometer
+
+ @return a YMagnetometer object allowing you to drive the magnetometer.
+ """
+ # obj
+ obj = YFunction._FindFromCache("Magnetometer", func)
+ if obj is None:
+ obj = YMagnetometer(func)
+ YFunction._AddToCache("Magnetometer", func, obj)
+ return obj
+
+ def nextMagnetometer(self):
+ """
+ Continues the enumeration of magnetometers started using yFirstMagnetometer().
+
+ @return a pointer to a YMagnetometer object, corresponding to
+ a magnetometer currently online, or a None pointer
+ if there are no more magnetometers to enumerate.
+ """
+ hwidRef = YRefParam()
+ if YAPI.YISERR(self._nextFunction(hwidRef)):
+ return None
+ if hwidRef.value == "":
+ return None
+ return YMagnetometer.FindMagnetometer(hwidRef.value)
+
+#--- (end of YMagnetometer implementation)
+
+#--- (Magnetometer functions)
+
+ @staticmethod
+ def FirstMagnetometer():
+ """
+ Starts the enumeration of magnetometers currently accessible.
+ Use the method YMagnetometer.nextMagnetometer() to iterate on
+ next magnetometers.
+
+ @return a pointer to a YMagnetometer object, corresponding to
+ the first magnetometer currently online, or a None pointer
+ if there are none.
+ """
+ devRef = YRefParam()
+ neededsizeRef = YRefParam()
+ serialRef = YRefParam()
+ funcIdRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+ errmsgRef = YRefParam()
+ size = YAPI.C_INTSIZE
+ #noinspection PyTypeChecker,PyCallingNonCallable
+ p = (ctypes.c_int * 1)()
+ err = YAPI.apiGetFunctionsByClass("Magnetometer", 0, p, size, neededsizeRef, errmsgRef)
+
+ if YAPI.YISERR(err) or not neededsizeRef.value:
+ return None
+
+ if YAPI.YISERR(
+ YAPI.yapiGetFunctionInfo(p[0], devRef, serialRef, funcIdRef, funcNameRef, funcValRef, errmsgRef)):
+ return None
+
+ return YMagnetometer.FindMagnetometer(serialRef.value + "." + funcIdRef.value)
+
+#--- (end of Magnetometer functions)
diff --git a/yoctoLib.python.26380/Sources/yocto_messagebox.py b/yoctoLib.python.26380/Sources/yocto_messagebox.py
new file mode 100644
index 0000000..9c283ea
--- /dev/null
+++ b/yoctoLib.python.26380/Sources/yocto_messagebox.py
@@ -0,0 +1,1803 @@
+#*********************************************************************
+#*
+#* $Id: yocto_messagebox.py 24652 2016-05-31 13:47:30Z mvuilleu $
+#*
+#* Implements yFindMessageBox(), the high-level API for MessageBox functions
+#*
+#* - - - - - - - - - License information: - - - - - - - - -
+#*
+#* Copyright (C) 2011 and beyond by Yoctopuce Sarl, Switzerland.
+#*
+#* Yoctopuce Sarl (hereafter Licensor) grants to you a perpetual
+#* non-exclusive license to use, modify, copy and integrate this
+#* file into your software for the sole purpose of interfacing
+#* with Yoctopuce products.
+#*
+#* You may reproduce and distribute copies of this file in
+#* source or object form, as long as the sole purpose of this
+#* code is to interface with Yoctopuce products. You must retain
+#* this notice in the distributed source file.
+#*
+#* You should refer to Yoctopuce General Terms and Conditions
+#* for additional information regarding your rights and
+#* obligations.
+#*
+#* THE SOFTWARE AND DOCUMENTATION ARE PROVIDED 'AS IS' WITHOUT
+#* WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
+#* WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS
+#* FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO
+#* EVENT SHALL LICENSOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
+#* INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA,
+#* COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR
+#* SERVICES, ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT
+#* LIMITED TO ANY DEFENSE THEREOF), ANY CLAIMS FOR INDEMNITY OR
+#* CONTRIBUTION, OR OTHER SIMILAR COSTS, WHETHER ASSERTED ON THE
+#* BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE), BREACH OF
+#* WARRANTY, OR OTHERWISE.
+#*
+#*********************************************************************/
+
+
+__docformat__ = 'restructuredtext en'
+from yocto_api import *
+
+
+#--- (generated code: YSms class start)
+#noinspection PyProtectedMember
+class YSms(object):
+#--- (end of generated code: YSms class start)
+ #--- (generated code: YSms return codes)
+ #--- (end of generated code: YSms return codes)
+ #--- (generated code: YSms dlldef)
+ #--- (end of generated code: YSms dlldef)
+ #--- (generated code: YSms definitions)
+ #--- (end of generated code: YSms definitions)
+
+ def __init__(self, obj_mbox):
+ #--- (generated code: YSms attributes)
+ self._mbox = None
+ self._slot = 0
+ self._deliv = 0
+ self._smsc = ''
+ self._mref = 0
+ self._orig = ''
+ self._dest = ''
+ self._pid = 0
+ self._alphab = 0
+ self._mclass = 0
+ self._stamp = ''
+ self._udh = ''
+ self._udata = ''
+ self._npdu = 0
+ self._pdu = ''
+ self._parts = []
+ self._aggSig = ''
+ self._aggIdx = 0
+ self._aggCnt = 0
+ #--- (end of generated code: YSms attributes)
+ self._mbox = obj_mbox
+
+#--- (generated code: YSms implementation)
+ def get_slot(self):
+ return self._slot
+
+ def get_smsc(self):
+ return self._smsc
+
+ def get_msgRef(self):
+ return self._mref
+
+ def get_sender(self):
+ return self._orig
+
+ def get_recipient(self):
+ return self._dest
+
+ def get_protocolId(self):
+ return self._pid
+
+ def isReceived(self):
+ return self._deliv
+
+ def get_alphabet(self):
+ return self._alphab
+
+ def get_msgClass(self):
+ if ((self._mclass) & (16)) == 0:
+ return -1
+ return ((self._mclass) & (3))
+
+ def get_dcs(self):
+ return ((self._mclass) | ((((self._alphab) << (2)))))
+
+ def get_timestamp(self):
+ return self._stamp
+
+ def get_userDataHeader(self):
+ return self._udh
+
+ def get_userData(self):
+ return self._udata
+
+ def get_textData(self):
+ # isolatin
+ # isosize
+ # i
+
+ if self._alphab == 0:
+ #
+ return self._mbox.gsm2str(self._udata)
+ if self._alphab == 2:
+ #
+ isosize = ((len(self._udata)) >> (1))
+ isolatin = bytearray(isosize)
+ i = 0
+ while i < isosize:
+ isolatin[i] = YGetByte(self._udata, 2*i+1)
+ i = i + 1
+ return YByte2String(isolatin)
+
+ # // default: convert 8 bit to string as-is
+ return YByte2String(self._udata)
+
+ def get_unicodeData(self):
+ res = []
+ # unisize
+ # unival
+ # i
+
+ if self._alphab == 0:
+ #
+ return self._mbox.gsm2unicode(self._udata)
+ if self._alphab == 2:
+ #
+ unisize = ((len(self._udata)) >> (1))
+ del res[:]
+ i = 0
+ while i < unisize:
+ unival = 256*YGetByte(self._udata, 2*i)+YGetByte(self._udata, 2*i+1)
+ res.append(unival)
+ i = i + 1
+ else:
+ #
+ unisize = len(self._udata)
+ del res[:]
+ i = 0
+ while i < unisize:
+ res.append(YGetByte(self._udata, i)+0)
+ i = i + 1
+ return res
+
+ def get_partCount(self):
+ if self._npdu == 0:
+ self.generatePdu()
+ return self._npdu
+
+ def get_pdu(self):
+ if self._npdu == 0:
+ self.generatePdu()
+ return self._pdu
+
+ def get_parts(self):
+ if self._npdu == 0:
+ self.generatePdu()
+ return self._parts
+
+ def get_concatSignature(self):
+ if self._npdu == 0:
+ self.generatePdu()
+ return self._aggSig
+
+ def get_concatIndex(self):
+ if self._npdu == 0:
+ self.generatePdu()
+ return self._aggIdx
+
+ def get_concatCount(self):
+ if self._npdu == 0:
+ self.generatePdu()
+ return self._aggCnt
+
+ def set_slot(self, val):
+ self._slot = val
+ return YAPI.SUCCESS
+
+ def set_received(self, val):
+ self._deliv = val
+ return YAPI.SUCCESS
+
+ def set_smsc(self, val):
+ self._smsc = val
+ self._npdu = 0
+ return YAPI.SUCCESS
+
+ def set_msgRef(self, val):
+ self._mref = val
+ self._npdu = 0
+ return YAPI.SUCCESS
+
+ def set_sender(self, val):
+ self._orig = val
+ self._npdu = 0
+ return YAPI.SUCCESS
+
+ def set_recipient(self, val):
+ self._dest = val
+ self._npdu = 0
+ return YAPI.SUCCESS
+
+ def set_protocolId(self, val):
+ self._pid = val
+ self._npdu = 0
+ return YAPI.SUCCESS
+
+ def set_alphabet(self, val):
+ self._alphab = val
+ self._npdu = 0
+ return YAPI.SUCCESS
+
+ def set_msgClass(self, val):
+ if val == -1:
+ self._mclass = 0
+ else:
+ self._mclass = 16+val
+ self._npdu = 0
+ return YAPI.SUCCESS
+
+ def set_dcs(self, val):
+ self._alphab = (((((val) >> (2)))) & (3))
+ self._mclass = ((val) & (16+3))
+ self._npdu = 0
+ return YAPI.SUCCESS
+
+ def set_timestamp(self, val):
+ self._stamp = val
+ self._npdu = 0
+ return YAPI.SUCCESS
+
+ def set_userDataHeader(self, val):
+ self._udh = val
+ self._npdu = 0
+ self.parseUserDataHeader()
+ return YAPI.SUCCESS
+
+ def set_userData(self, val):
+ self._udata = val
+ self._npdu = 0
+ return YAPI.SUCCESS
+
+ def convertToUnicode(self):
+ ucs2 = []
+ # udatalen
+ # i
+ # uni
+
+ if self._alphab == 2:
+ return YAPI.SUCCESS
+ if self._alphab == 0:
+ ucs2 = self._mbox.gsm2unicode(self._udata)
+ else:
+ udatalen = len(self._udata)
+ del ucs2[:]
+ i = 0
+ while i < udatalen:
+ uni = YGetByte(self._udata, i)
+ ucs2.append(uni)
+ i = i + 1
+ self._alphab = 2
+ self._udata = bytearray(0)
+ self.addUnicodeData(ucs2)
+
+ return YAPI.SUCCESS
+
+ def addText(self, val):
+ # udata
+ # udatalen
+ # newdata
+ # newdatalen
+ # i
+
+ if len(val) == 0:
+ return YAPI.SUCCESS
+
+ if self._alphab == 0:
+ #
+ newdata = self._mbox.str2gsm(val)
+ newdatalen = len(newdata)
+ if newdatalen == 0:
+ #
+ self.convertToUnicode()
+ newdata = YString2Byte(val)
+ newdatalen = len(newdata)
+ else:
+ newdata = YString2Byte(val)
+ newdatalen = len(newdata)
+ udatalen = len(self._udata)
+ if self._alphab == 2:
+ #
+ udata = bytearray(udatalen + 2*newdatalen)
+ i = 0
+ while i < udatalen:
+ udata[i] = YGetByte(self._udata, i)
+ i = i + 1
+ i = 0
+ while i < newdatalen:
+ udata[udatalen+1] = YGetByte(newdata, i)
+ udatalen = udatalen + 2
+ i = i + 1
+ else:
+ #
+ udata = bytearray(udatalen+newdatalen)
+ i = 0
+ while i < udatalen:
+ udata[i] = YGetByte(self._udata, i)
+ i = i + 1
+ i = 0
+ while i < newdatalen:
+ udata[udatalen] = YGetByte(newdata, i)
+ udatalen = udatalen + 1
+ i = i + 1
+
+ return self.set_userData(udata)
+
+ def addUnicodeData(self, val):
+ # arrlen
+ # newdatalen
+ # i
+ # uni
+ # udata
+ # udatalen
+ # surrogate
+
+ if self._alphab != 2:
+ self.convertToUnicode()
+ # // compute number of 16-bit code units
+ arrlen = len(val)
+ newdatalen = arrlen
+ i = 0
+ while i < arrlen:
+ uni = val[i]
+ if uni > 65535:
+ newdatalen = newdatalen + 1
+ i = i + 1
+ # // now build utf-16 buffer
+ udatalen = len(self._udata)
+ udata = bytearray(udatalen+2*newdatalen)
+ i = 0
+ while i < udatalen:
+ udata[i] = YGetByte(self._udata, i)
+ i = i + 1
+ i = 0
+ while i < arrlen:
+ uni = val[i]
+ if uni >= 65536:
+ surrogate = uni - 65536
+ uni = (((((surrogate) >> (10))) & (1023))) + 55296
+ udata[udatalen] = ((uni) >> (8))
+ udata[udatalen+1] = ((uni) & (255))
+ udatalen = udatalen + 2
+ uni = (((surrogate) & (1023))) + 56320
+ udata[udatalen] = ((uni) >> (8))
+ udata[udatalen+1] = ((uni) & (255))
+ udatalen = udatalen + 2
+ i = i + 1
+
+ return self.set_userData(udata)
+
+ def set_pdu(self, pdu):
+ self._pdu = pdu
+ self._npdu = 1
+ return self.parsePdu(pdu)
+
+ def set_parts(self, parts):
+ sorted = []
+ # partno
+ # initpartno
+ # i
+ # retcode
+ # totsize
+ # subsms
+ # subdata
+ # res
+ self._npdu = len(parts)
+ if self._npdu == 0:
+ return YAPI.INVALID_ARGUMENT
+
+ del sorted[:]
+ partno = 0
+ while partno < self._npdu:
+ initpartno = partno
+ i = 0
+ while i < self._npdu:
+ subsms = parts[i]
+ if subsms.get_concatIndex() == partno:
+ sorted.append(subsms)
+ partno = partno + 1
+ i = i + 1
+ if initpartno == partno:
+ partno = partno + 1
+
+ self._parts = sorted
+ self._npdu = len(sorted)
+ # // inherit header fields from first part
+ subsms = self._parts[0]
+ retcode = self.parsePdu(subsms.get_pdu())
+ if retcode != YAPI.SUCCESS:
+ return retcode
+ # // concatenate user data from all parts
+ totsize = 0
+ partno = 0
+ while partno < len(self._parts):
+ subsms = self._parts[partno]
+ subdata = subsms.get_userData()
+ totsize = totsize + len(subdata)
+ partno = partno + 1
+ res = bytearray(totsize)
+ totsize = 0
+ partno = 0
+ while partno < len(self._parts):
+ subsms = self._parts[partno]
+ subdata = subsms.get_userData()
+ i = 0
+ while i < len(subdata):
+ res[totsize] = YGetByte(subdata, i)
+ totsize = totsize + 1
+ i = i + 1
+ partno = partno + 1
+ self._udata = res
+ return YAPI.SUCCESS
+
+ def encodeAddress(self, addr):
+ # bytes
+ # srclen
+ # numlen
+ # i
+ # val
+ # digit
+ # res
+ bytes = YString2Byte(addr)
+ srclen = len(bytes)
+ numlen = 0
+ i = 0
+ while i < srclen:
+ val = YGetByte(bytes, i)
+ if (val >= 48) and (val < 58):
+ numlen = numlen + 1
+ i = i + 1
+ if numlen == 0:
+ res = bytearray(1)
+ res[0] = 0
+ return res
+ res = bytearray(2+((numlen+1) >> (1)))
+ res[0] = numlen
+ if YGetByte(bytes, 0) == 43:
+ res[1] = 145
+ else:
+ res[1] = 129
+ numlen = 4
+ digit = 0
+ i = 0
+ while i < srclen:
+ val = YGetByte(bytes, i)
+ if (val >= 48) and (val < 58):
+ if ((numlen) & (1)) == 0:
+ digit = val - 48
+ else:
+ res[((numlen) >> (1))] = digit + 16*(val-48)
+ numlen = numlen + 1
+ i = i + 1
+ # // pad with F if needed
+ if ((numlen) & (1)) != 0:
+ res[((numlen) >> (1))] = digit + 240
+ return res
+
+ def decodeAddress(self, addr, ofs, siz):
+ # addrType
+ # gsm7
+ # res
+ # i
+ # rpos
+ # carry
+ # nbits
+ # byt
+ if siz == 0:
+ return ""
+ res = ""
+ addrType = ((YGetByte(addr, ofs)) & (112))
+ if addrType == 80:
+ #
+ siz = int((4*siz) / (7))
+ gsm7 = bytearray(siz)
+ rpos = 1
+ carry = 0
+ nbits = 0
+ i = 0
+ while i < siz:
+ if nbits == 7:
+ gsm7[i] = carry
+ carry = 0
+ nbits = 0
+ else:
+ byt = YGetByte(addr, ofs+rpos)
+ rpos = rpos + 1
+ gsm7[i] = ((carry) | ((((((byt) << (nbits)))) & (127))))
+ carry = ((byt) >> ((7 - nbits)))
+ nbits = nbits + 1
+ i = i + 1
+ return self._mbox.gsm2str(gsm7)
+ else:
+ #
+ if addrType == 16:
+ res = "+"
+ siz = (((siz+1)) >> (1))
+ i = 0
+ while i < siz:
+ byt = YGetByte(addr, ofs+i+1)
+ res = "" + res + "" + ("%X" % ((byt) & (15))) + "" + ("%X" % ((byt) >> (4)))
+ i = i + 1
+ #
+ if ((YGetByte(addr, ofs+siz)) >> (4)) == 15:
+ res = (res)[0: 0 + len(res)-1]
+ return res
+
+ def encodeTimeStamp(self, exp):
+ # explen
+ # i
+ # res
+ # n
+ # expasc
+ # v1
+ # v2
+ explen = len(exp)
+ if explen == 0:
+ res = bytearray(0)
+ return res
+ if (exp)[0: 0 + 1] == "+":
+ n = YAPI._atoi((exp)[1: 1 + explen-1])
+ res = bytearray(1)
+ if n > 30*86400:
+ n = 192+int(((n+6*86400)) / ((7*86400)))
+ else:
+ if n > 86400:
+ n = 166+int(((n+86399)) / (86400))
+ else:
+ if n > 43200:
+ n = 143+int(((n-43200+1799)) / (1800))
+ else:
+ n = -1+int(((n+299)) / (300))
+ if n < 0:
+ n = 0
+ res[0] = n
+ return res
+ if (exp)[4: 4 + 1] == "-" or (exp)[4: 4 + 1] == "/":
+ #
+ exp = (exp)[2: 2 + explen-2]
+ explen = len(exp)
+ expasc = YString2Byte(exp)
+ res = bytearray(7)
+ n = 0
+ i = 0
+ while (i+1 < explen) and (n < 7):
+ v1 = YGetByte(expasc, i)
+ if (v1 >= 48) and (v1 < 58):
+ v2 = YGetByte(expasc, i+1)
+ if (v2 >= 48) and (v2 < 58):
+ v1 = v1 - 48
+ v2 = v2 - 48
+ res[n] = (((v2) << (4))) + v1
+ n = n + 1
+ i = i + 1
+ i = i + 1
+ while n < 7:
+ res[n] = 0
+ n = n + 1
+ if i+2 < explen:
+ #
+ v1 = YGetByte(expasc, i-3)
+ v2 = YGetByte(expasc, i)
+ if ((v1 == 43) or (v1 == 45)) and (v2 == 58):
+ v1 = YGetByte(expasc, i+1)
+ v2 = YGetByte(expasc, i+2)
+ if (v1 >= 48) and (v1 < 58) and (v1 >= 48) and (v1 < 58):
+ v1 = int(((10*(v1 - 48)+(v2 - 48))) / (15))
+ n = n - 1
+ v2 = 4 * YGetByte(res, n) + v1
+ if YGetByte(expasc, i-3) == 45:
+ v2 += 128
+ res[n] = v2
+ return res
+
+ def decodeTimeStamp(self, exp, ofs, siz):
+ # n
+ # res
+ # i
+ # byt
+ # sign
+ # hh
+ # ss
+ if siz < 1:
+ return ""
+ if siz == 1:
+ n = YGetByte(exp, ofs)
+ if n < 144:
+ n = n * 300
+ else:
+ if n < 168:
+ n = (n-143) * 1800
+ else:
+ if n < 197:
+ n = (n-166) * 86400
+ else:
+ n = (n-192) * 7 * 86400
+ return "+" + str(int(n))
+ res = "20"
+ i = 0
+ while (i < siz) and (i < 6):
+ byt = YGetByte(exp, ofs+i)
+ res = "" + res + "" + ("%X" % ((byt) & (15))) + "" + ("%X" % ((byt) >> (4)))
+ if i < 3:
+ if i < 2:
+ res = "" + res + "-"
+ else:
+ res = "" + res + " "
+ else:
+ if i < 5:
+ res = "" + res + ":"
+ i = i + 1
+ if siz == 7:
+ byt = YGetByte(exp, ofs+i)
+ sign = "+"
+ if ((byt) & (8)) != 0:
+ byt = byt - 8
+ sign = "-"
+ byt = (10*(((byt) & (15)))) + (((byt) >> (4)))
+ hh = "" + str(int(((byt) >> (2))))
+ ss = "" + str(int(15*(((byt) & (3)))))
+ if len(hh)<2:
+ hh = "0" + hh
+ if len(ss)<2:
+ ss = "0" + ss
+ res = "" + res + "" + sign + "" + hh + ":" + ss
+ return res
+
+ def udataSize(self):
+ # res
+ # udhsize
+ udhsize = len(self._udh)
+ res = len(self._udata)
+ if self._alphab == 0:
+ if udhsize > 0:
+ res = res + int(((8 + 8*udhsize + 6)) / (7))
+ res = int(((res * 7 + 7)) / (8))
+ else:
+ if udhsize > 0:
+ res = res + 1 + udhsize
+ return res
+
+ def encodeUserData(self):
+ # udsize
+ # udlen
+ # udhsize
+ # udhlen
+ # res
+ # i
+ # wpos
+ # carry
+ # nbits
+ # thisb
+ # // nbits = number of bits in carry
+ udsize = self.udataSize()
+ udhsize = len(self._udh)
+ udlen = len(self._udata)
+ res = bytearray(1+udsize)
+ udhlen = 0
+ nbits = 0
+ carry = 0
+ # // 1. Encode UDL
+ if self._alphab == 0:
+ #
+ if udhsize > 0:
+ udhlen = int(((8 + 8*udhsize + 6)) / (7))
+ nbits = 7*udhlen - 8 - 8*udhsize
+ res[0] = udhlen+udlen
+ else:
+ #
+ res[0] = udsize
+ # // 2. Encode UDHL and UDL
+ wpos = 1
+ if udhsize > 0:
+ res[wpos] = udhsize
+ wpos = wpos + 1
+ i = 0
+ while i < udhsize:
+ res[wpos] = YGetByte(self._udh, i)
+ wpos = wpos + 1
+ i = i + 1
+ # // 3. Encode UD
+ if self._alphab == 0:
+ #
+ i = 0
+ while i < udlen:
+ if nbits == 0:
+ carry = YGetByte(self._udata, i)
+ nbits = 7
+ else:
+ thisb = YGetByte(self._udata, i)
+ res[wpos] = ((carry) | ((((((thisb) << (nbits)))) & (255))))
+ wpos = wpos + 1
+ nbits = nbits - 1
+ carry = ((thisb) >> ((7 - nbits)))
+ i = i + 1
+ if nbits > 0:
+ res[wpos] = carry
+ else:
+ #
+ i = 0
+ while i < udlen:
+ res[wpos] = YGetByte(self._udata, i)
+ wpos = wpos + 1
+ i = i + 1
+ return res
+
+ def generateParts(self):
+ # udhsize
+ # udlen
+ # mss
+ # partno
+ # partlen
+ # newud
+ # newudh
+ # newpdu
+ # i
+ # wpos
+ udhsize = len(self._udh)
+ udlen = len(self._udata)
+ mss = 140 - 1 - 5 - udhsize
+ if self._alphab == 0:
+ mss = int(((mss * 8 - 6)) / (7))
+ self._npdu = int(((udlen+mss-1)) / (mss))
+ del self._parts[:]
+ partno = 0
+ wpos = 0
+ while wpos < udlen:
+ partno = partno + 1
+ newudh = bytearray(5+udhsize)
+ newudh[0] = 0
+ #
+ newudh[1] = 3
+ #
+ newudh[2] = self._mref
+ newudh[3] = self._npdu
+ newudh[4] = partno
+ i = 0
+ while i < udhsize:
+ newudh[5+i] = YGetByte(self._udh, i)
+ i = i + 1
+ if wpos+mss < udlen:
+ partlen = mss
+ else:
+ partlen = udlen-wpos
+ newud = bytearray(partlen)
+ i = 0
+ while i < partlen:
+ newud[i] = YGetByte(self._udata, wpos)
+ wpos = wpos + 1
+ i = i + 1
+ newpdu = YSms(self._mbox)
+ newpdu.set_received(self.isReceived())
+ newpdu.set_smsc(self.get_smsc())
+ newpdu.set_msgRef(self.get_msgRef())
+ newpdu.set_sender(self.get_sender())
+ newpdu.set_recipient(self.get_recipient())
+ newpdu.set_protocolId(self.get_protocolId())
+ newpdu.set_dcs(self.get_dcs())
+ newpdu.set_timestamp(self.get_timestamp())
+ newpdu.set_userDataHeader(newudh)
+ newpdu.set_userData(newud)
+ self._parts.append(newpdu)
+ return YAPI.SUCCESS
+
+ def generatePdu(self):
+ # sca
+ # hdr
+ # addr
+ # stamp
+ # udata
+ # pdutyp
+ # pdulen
+ # i
+ # // Determine if the message can fit within a single PDU
+ del self._parts[:]
+ if self.udataSize() > 140:
+ #
+ self._pdu = bytearray(0)
+ return self.generateParts()
+ sca = self.encodeAddress(self._smsc)
+ if len(sca) > 0:
+ sca[0] = len(sca)-1
+ stamp = self.encodeTimeStamp(self._stamp)
+ udata = self.encodeUserData()
+ if self._deliv:
+ addr = self.encodeAddress(self._orig)
+ hdr = bytearray(1)
+ pdutyp = 0
+ else:
+ addr = self.encodeAddress(self._dest)
+ self._mref = self._mbox.nextMsgRef()
+ hdr = bytearray(2)
+ hdr[1] = self._mref
+ pdutyp = 1
+ if len(stamp) > 0:
+ pdutyp = pdutyp + 16
+ if len(stamp) == 7:
+ pdutyp = pdutyp + 8
+ if len(self._udh) > 0:
+ pdutyp = pdutyp + 64
+ hdr[0] = pdutyp
+ pdulen = len(sca)+len(hdr)+len(addr)+2+len(stamp)+len(udata)
+ self._pdu = bytearray(pdulen)
+ pdulen = 0
+ i = 0
+ while i < len(sca):
+ self._pdu[pdulen] = YGetByte(sca, i)
+ pdulen = pdulen + 1
+ i = i + 1
+ i = 0
+ while i < len(hdr):
+ self._pdu[pdulen] = YGetByte(hdr, i)
+ pdulen = pdulen + 1
+ i = i + 1
+ i = 0
+ while i < len(addr):
+ self._pdu[pdulen] = YGetByte(addr, i)
+ pdulen = pdulen + 1
+ i = i + 1
+ self._pdu[pdulen] = self._pid
+ pdulen = pdulen + 1
+ self._pdu[pdulen] = self.get_dcs()
+ pdulen = pdulen + 1
+ i = 0
+ while i < len(stamp):
+ self._pdu[pdulen] = YGetByte(stamp, i)
+ pdulen = pdulen + 1
+ i = i + 1
+ i = 0
+ while i < len(udata):
+ self._pdu[pdulen] = YGetByte(udata, i)
+ pdulen = pdulen + 1
+ i = i + 1
+ self._npdu = 1
+ return YAPI.SUCCESS
+
+ def parseUserDataHeader(self):
+ # udhlen
+ # i
+ # iei
+ # ielen
+ # sig
+
+ self._aggSig = ""
+ self._aggIdx = 0
+ self._aggCnt = 0
+ udhlen = len(self._udh)
+ i = 0
+ while i+1 < udhlen:
+ iei = YGetByte(self._udh, i)
+ ielen = YGetByte(self._udh, i+1)
+ i = i + 2
+ if i + ielen <= udhlen:
+ if (iei == 0) and (ielen == 3):
+ #
+ sig = "" + self._orig + "-" + self._dest + "-" + ("%02X" % self._mref) + "-" + ("%02X" % YGetByte(self._udh, i))
+ self._aggSig = sig
+ self._aggCnt = YGetByte(self._udh, i+1)
+ self._aggIdx = YGetByte(self._udh, i+2)
+ if (iei == 8) and (ielen == 4):
+ #
+ sig = "" + self._orig + "-" + self._dest + "-" + ("%02X" % self._mref) + "-" + ("%02X" % YGetByte(self._udh, i)) + "" + ("%02X" % YGetByte(self._udh, i+1))
+ self._aggSig = sig
+ self._aggCnt = YGetByte(self._udh, i+2)
+ self._aggIdx = YGetByte(self._udh, i+3)
+ i = i + ielen
+ return YAPI.SUCCESS
+
+ def parsePdu(self, pdu):
+ # rpos
+ # addrlen
+ # pdutyp
+ # tslen
+ # dcs
+ # udlen
+ # udhsize
+ # udhlen
+ # i
+ # carry
+ # nbits
+ # thisb
+
+ self._pdu = pdu
+ self._npdu = 1
+
+ # // parse meta-data
+ self._smsc = self.decodeAddress(pdu, 1, 2*(YGetByte(pdu, 0)-1))
+ rpos = 1+YGetByte(pdu, 0)
+ pdutyp = YGetByte(pdu, rpos)
+ rpos = rpos + 1
+ self._deliv = (((pdutyp) & (3)) == 0)
+ if self._deliv:
+ addrlen = YGetByte(pdu, rpos)
+ rpos = rpos + 1
+ self._orig = self.decodeAddress(pdu, rpos, addrlen)
+ self._dest = ""
+ tslen = 7
+ else:
+ self._mref = YGetByte(pdu, rpos)
+ rpos = rpos + 1
+ addrlen = YGetByte(pdu, rpos)
+ rpos = rpos + 1
+ self._dest = self.decodeAddress(pdu, rpos, addrlen)
+ self._orig = ""
+ if (((pdutyp) & (16))) != 0:
+ if (((pdutyp) & (8))) != 0:
+ tslen = 7
+ else:
+ tslen= 1
+ else:
+ tslen = 0
+ rpos = rpos + ((((addrlen+3)) >> (1)))
+ self._pid = YGetByte(pdu, rpos)
+ rpos = rpos + 1
+ dcs = YGetByte(pdu, rpos)
+ rpos = rpos + 1
+ self._alphab = (((((dcs) >> (2)))) & (3))
+ self._mclass = ((dcs) & (16+3))
+ self._stamp = self.decodeTimeStamp(pdu, rpos, tslen)
+ rpos = rpos + tslen
+
+ # // parse user data (including udh)
+ nbits = 0
+ carry = 0
+ udlen = YGetByte(pdu, rpos)
+ rpos = rpos + 1
+ if ((pdutyp) & (64)) != 0:
+ udhsize = YGetByte(pdu, rpos)
+ rpos = rpos + 1
+ self._udh = bytearray(udhsize)
+ i = 0
+ while i < udhsize:
+ self._udh[i] = YGetByte(pdu, rpos)
+ rpos = rpos + 1
+ i = i + 1
+ if self._alphab == 0:
+ #
+ udhlen = int(((8 + 8*udhsize + 6)) / (7))
+ nbits = 7*udhlen - 8 - 8*udhsize
+ if nbits > 0:
+ thisb = YGetByte(pdu, rpos)
+ rpos = rpos + 1
+ carry = ((thisb) >> (nbits))
+ nbits = 8 - nbits
+ else:
+ #
+ udhlen = 1+udhsize
+ udlen = udlen - udhlen
+ else:
+ udhsize = 0
+ self._udh = bytearray(0)
+ self._udata = bytearray(udlen)
+ if self._alphab == 0:
+ #
+ i = 0
+ while i < udlen:
+ if nbits == 7:
+ self._udata[i] = carry
+ carry = 0
+ nbits = 0
+ else:
+ thisb = YGetByte(pdu, rpos)
+ rpos = rpos + 1
+ self._udata[i] = ((carry) | ((((((thisb) << (nbits)))) & (127))))
+ carry = ((thisb) >> ((7 - nbits)))
+ nbits = nbits + 1
+ i = i + 1
+ else:
+ #
+ i = 0
+ while i < udlen:
+ self._udata[i] = YGetByte(pdu, rpos)
+ rpos = rpos + 1
+ i = i + 1
+ self.parseUserDataHeader()
+
+ return YAPI.SUCCESS
+
+ def send(self):
+ # i
+ # retcode
+ # pdu
+ # // may throw an exception
+ if self._npdu == 0:
+ self.generatePdu()
+ if self._npdu == 1:
+ return self._mbox._upload("sendSMS", self._pdu)
+ retcode = YAPI.SUCCESS
+ i = 0
+ while (i < self._npdu) and (retcode == YAPI.SUCCESS):
+ pdu = self._parts[i]
+ retcode= pdu.send()
+ i = i + 1
+ return retcode
+
+ def deleteFromSIM(self):
+ # i
+ # retcode
+ # pdu
+ # // may throw an exception
+ if self._slot > 0:
+ return self._mbox.clearSIMSlot(self._slot)
+ retcode = YAPI.SUCCESS
+ i = 0
+ while (i < self._npdu) and (retcode == YAPI.SUCCESS):
+ pdu = self._parts[i]
+ retcode= pdu.deleteFromSIM()
+ i = i + 1
+ return retcode
+
+#--- (end of generated code: YSms implementation)
+
+#--- (generated code: Sms functions)
+#--- (end of generated code: Sms functions)
+
+
+#--- (generated code: YMessageBox class start)
+#noinspection PyProtectedMember
+class YMessageBox(YFunction):
+ """
+ YMessageBox functions provides SMS sending and receiving capability to
+ GSM-enabled Yoctopuce devices.
+
+ """
+#--- (end of generated code: YMessageBox class start)
+ #--- (generated code: YMessageBox return codes)
+ #--- (end of generated code: YMessageBox return codes)
+ #--- (generated code: YMessageBox dlldef)
+ #--- (end of generated code: YMessageBox dlldef)
+ #--- (generated code: YMessageBox definitions)
+ SLOTSINUSE_INVALID = YAPI.INVALID_UINT
+ SLOTSCOUNT_INVALID = YAPI.INVALID_UINT
+ SLOTSBITMAP_INVALID = YAPI.INVALID_STRING
+ PDUSENT_INVALID = YAPI.INVALID_UINT
+ PDURECEIVED_INVALID = YAPI.INVALID_UINT
+ COMMAND_INVALID = YAPI.INVALID_STRING
+ #--- (end of generated code: YMessageBox definitions)
+
+ def __init__(self, func):
+ super(YMessageBox, self).__init__(func)
+ self._className = 'MessageBox'
+ #--- (generated code: YMessageBox attributes)
+ self._callback = None
+ self._slotsInUse = YMessageBox.SLOTSINUSE_INVALID
+ self._slotsCount = YMessageBox.SLOTSCOUNT_INVALID
+ self._slotsBitmap = YMessageBox.SLOTSBITMAP_INVALID
+ self._pduSent = YMessageBox.PDUSENT_INVALID
+ self._pduReceived = YMessageBox.PDURECEIVED_INVALID
+ self._command = YMessageBox.COMMAND_INVALID
+ self._nextMsgRef = 0
+ self._prevBitmapStr = ''
+ self._pdus = []
+ self._messages = []
+ self._gsm2unicodeReady = 0
+ self._gsm2unicode = []
+ self._iso2gsm = ''
+ #--- (end of generated code: YMessageBox attributes)
+
+ #--- (generated code: YMessageBox implementation)
+ def _parseAttr(self, member):
+ if member.name == "slotsInUse":
+ self._slotsInUse = member.ivalue
+ return 1
+ if member.name == "slotsCount":
+ self._slotsCount = member.ivalue
+ return 1
+ if member.name == "slotsBitmap":
+ self._slotsBitmap = member.svalue
+ return 1
+ if member.name == "pduSent":
+ self._pduSent = member.ivalue
+ return 1
+ if member.name == "pduReceived":
+ self._pduReceived = member.ivalue
+ return 1
+ if member.name == "command":
+ self._command = member.svalue
+ return 1
+ super(YMessageBox, self)._parseAttr(member)
+
+ def get_slotsInUse(self):
+ """
+ Returns the number of message storage slots currently in use.
+
+ @return an integer corresponding to the number of message storage slots currently in use
+
+ On failure, throws an exception or returns YMessageBox.SLOTSINUSE_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YMessageBox.SLOTSINUSE_INVALID
+ return self._slotsInUse
+
+ def get_slotsCount(self):
+ """
+ Returns the total number of message storage slots on the SIM card.
+
+ @return an integer corresponding to the total number of message storage slots on the SIM card
+
+ On failure, throws an exception or returns YMessageBox.SLOTSCOUNT_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YMessageBox.SLOTSCOUNT_INVALID
+ return self._slotsCount
+
+ def get_slotsBitmap(self):
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YMessageBox.SLOTSBITMAP_INVALID
+ return self._slotsBitmap
+
+ def get_pduSent(self):
+ """
+ Returns the number of SMS units sent so far.
+
+ @return an integer corresponding to the number of SMS units sent so far
+
+ On failure, throws an exception or returns YMessageBox.PDUSENT_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YMessageBox.PDUSENT_INVALID
+ return self._pduSent
+
+ def set_pduSent(self, newval):
+ """
+ Changes the value of the outgoing SMS units counter.
+
+ @param newval : an integer corresponding to the value of the outgoing SMS units counter
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("pduSent", rest_val)
+
+ def get_pduReceived(self):
+ """
+ Returns the number of SMS units received so far.
+
+ @return an integer corresponding to the number of SMS units received so far
+
+ On failure, throws an exception or returns YMessageBox.PDURECEIVED_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YMessageBox.PDURECEIVED_INVALID
+ return self._pduReceived
+
+ def set_pduReceived(self, newval):
+ """
+ Changes the value of the incoming SMS units counter.
+
+ @param newval : an integer corresponding to the value of the incoming SMS units counter
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("pduReceived", rest_val)
+
+ def get_command(self):
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YMessageBox.COMMAND_INVALID
+ return self._command
+
+ def set_command(self, newval):
+ rest_val = newval
+ return self._setAttr("command", rest_val)
+
+ @staticmethod
+ def FindMessageBox(func):
+ """
+ Retrieves a MessageBox interface for a given identifier.
+ The identifier can be specified using several formats:
+ <ul>
+ <li>FunctionLogicalName</li>
+ <li>ModuleSerialNumber.FunctionIdentifier</li>
+ <li>ModuleSerialNumber.FunctionLogicalName</li>
+ <li>ModuleLogicalName.FunctionIdentifier</li>
+ <li>ModuleLogicalName.FunctionLogicalName</li>
+ </ul>
+
+ This function does not require that the MessageBox interface is online at the time
+ it is invoked. The returned object is nevertheless valid.
+ Use the method YMessageBox.isOnline() to test if the MessageBox interface is
+ indeed online at a given time. In case of ambiguity when looking for
+ a MessageBox interface by logical name, no error is notified: the first instance
+ found is returned. The search is performed first by hardware name,
+ then by logical name.
+
+ @param func : a string that uniquely characterizes the MessageBox interface
+
+ @return a YMessageBox object allowing you to drive the MessageBox interface.
+ """
+ # obj
+ obj = YFunction._FindFromCache("MessageBox", func)
+ if obj is None:
+ obj = YMessageBox(func)
+ YFunction._AddToCache("MessageBox", func, obj)
+ return obj
+
+ def nextMsgRef(self):
+ self._nextMsgRef = self._nextMsgRef + 1
+ return self._nextMsgRef
+
+ def clearSIMSlot(self, slot):
+ # // may throw an exception
+ self._prevBitmapStr = ""
+ return self.set_command("DS" + str(int(slot)))
+
+ def fetchPdu(self, slot):
+ # binPdu
+ arrPdu = []
+ # hexPdu
+ # sms
+
+ # // may throw an exception
+ binPdu = self._download("sms.json?pos=" + str(int(slot)) + "&len=1")
+ arrPdu = self._json_get_array(binPdu)
+ hexPdu = self._decode_json_string(arrPdu[0])
+ sms = YSms(self)
+ sms.set_slot(slot)
+ sms.parsePdu(YAPI._hexStrToBin(hexPdu))
+ return sms
+
+ def initGsm2Unicode(self):
+ # i
+ # uni
+
+ del self._gsm2unicode[:]
+ # // 00-07
+ self._gsm2unicode.append(64)
+ self._gsm2unicode.append(163)
+ self._gsm2unicode.append(36)
+ self._gsm2unicode.append(165)
+ self._gsm2unicode.append(232)
+ self._gsm2unicode.append(233)
+ self._gsm2unicode.append(249)
+ self._gsm2unicode.append(236)
+ # // 08-0F
+ self._gsm2unicode.append(242)
+ self._gsm2unicode.append(199)
+ self._gsm2unicode.append(10)
+ self._gsm2unicode.append(216)
+ self._gsm2unicode.append(248)
+ self._gsm2unicode.append(13)
+ self._gsm2unicode.append(197)
+ self._gsm2unicode.append(229)
+ # // 10-17
+ self._gsm2unicode.append(916)
+ self._gsm2unicode.append(95)
+ self._gsm2unicode.append(934)
+ self._gsm2unicode.append(915)
+ self._gsm2unicode.append(923)
+ self._gsm2unicode.append(937)
+ self._gsm2unicode.append(928)
+ self._gsm2unicode.append(936)
+ # // 18-1F
+ self._gsm2unicode.append(931)
+ self._gsm2unicode.append(920)
+ self._gsm2unicode.append(926)
+ self._gsm2unicode.append(27)
+ self._gsm2unicode.append(198)
+ self._gsm2unicode.append(230)
+ self._gsm2unicode.append(223)
+ self._gsm2unicode.append(201)
+ # // 20-7A
+ i = 32
+ while i <= 122:
+ self._gsm2unicode.append(i)
+ i = i + 1
+ # // exceptions in range 20-7A
+ self._gsm2unicode[36] = 164
+ self._gsm2unicode[64] = 161
+ self._gsm2unicode[91] = 196
+ self._gsm2unicode[92] = 214
+ self._gsm2unicode[93] = 209
+ self._gsm2unicode[94] = 220
+ self._gsm2unicode[95] = 167
+ self._gsm2unicode[96] = 191
+ # // 7B-7F
+ self._gsm2unicode.append(228)
+ self._gsm2unicode.append(246)
+ self._gsm2unicode.append(241)
+ self._gsm2unicode.append(252)
+ self._gsm2unicode.append(224)
+
+ # // Invert table as well wherever possible
+ self._iso2gsm = bytearray(256)
+ i = 0
+ while i <= 127:
+ uni = self._gsm2unicode[i]
+ if uni <= 255:
+ self._iso2gsm[uni] = i
+ i = i + 1
+ i = 0
+ while i < 4:
+ #
+ self._iso2gsm[91+i] = 27
+ self._iso2gsm[123+i] = 27
+ i = i + 1
+ # // Done
+ self._gsm2unicodeReady = True
+
+ return YAPI.SUCCESS
+
+ def gsm2unicode(self, gsm):
+ # i
+ # gsmlen
+ # reslen
+ res = []
+ # uni
+
+ if not (self._gsm2unicodeReady):
+ self.initGsm2Unicode()
+ gsmlen = len(gsm)
+ reslen = gsmlen
+ i = 0
+ while i < gsmlen:
+ if YGetByte(gsm, i) == 27:
+ reslen = reslen - 1
+ i = i + 1
+ del res[:]
+ i = 0
+ while i < gsmlen:
+ uni = self._gsm2unicode[YGetByte(gsm, i)]
+ if (uni == 27) and (i+1 < gsmlen):
+ i = i + 1
+ uni = YGetByte(gsm, i)
+ if uni < 60:
+ if uni < 41:
+ if uni==20:
+ uni=94
+ else:
+ if uni==40:
+ uni=123
+ else:
+ uni=0
+ else:
+ if uni==41:
+ uni=125
+ else:
+ if uni==47:
+ uni=92
+ else:
+ uni=0
+ else:
+ if uni < 62:
+ if uni==60:
+ uni=91
+ else:
+ if uni==61:
+ uni=126
+ else:
+ uni=0
+ else:
+ if uni==62:
+ uni=93
+ else:
+ if uni==64:
+ uni=124
+ else:
+ if uni==101:
+ uni=164
+ else:
+ uni=0
+ if uni > 0:
+ res.append(uni)
+ i = i + 1
+
+ return res
+
+ def gsm2str(self, gsm):
+ # i
+ # gsmlen
+ # reslen
+ # resbin
+ # resstr
+ # uni
+
+ if not (self._gsm2unicodeReady):
+ self.initGsm2Unicode()
+ gsmlen = len(gsm)
+ reslen = gsmlen
+ i = 0
+ while i < gsmlen:
+ if YGetByte(gsm, i) == 27:
+ reslen = reslen - 1
+ i = i + 1
+ resbin = bytearray(reslen)
+ i = 0
+ reslen = 0
+ while i < gsmlen:
+ uni = self._gsm2unicode[YGetByte(gsm, i)]
+ if (uni == 27) and (i+1 < gsmlen):
+ i = i + 1
+ uni = YGetByte(gsm, i)
+ if uni < 60:
+ if uni < 41:
+ if uni==20:
+ uni=94
+ else:
+ if uni==40:
+ uni=123
+ else:
+ uni=0
+ else:
+ if uni==41:
+ uni=125
+ else:
+ if uni==47:
+ uni=92
+ else:
+ uni=0
+ else:
+ if uni < 62:
+ if uni==60:
+ uni=91
+ else:
+ if uni==61:
+ uni=126
+ else:
+ uni=0
+ else:
+ if uni==62:
+ uni=93
+ else:
+ if uni==64:
+ uni=124
+ else:
+ if uni==101:
+ uni=164
+ else:
+ uni=0
+ if (uni > 0) and (uni < 256):
+ resbin[reslen] = uni
+ reslen = reslen + 1
+ i = i + 1
+ resstr = YByte2String(resbin)
+ if len(resstr) > reslen:
+ resstr = (resstr)[0: 0 + reslen]
+ return resstr
+
+ def str2gsm(self, msg):
+ # asc
+ # asclen
+ # i
+ # ch
+ # gsm7
+ # extra
+ # res
+ # wpos
+
+ if not (self._gsm2unicodeReady):
+ self.initGsm2Unicode()
+ asc = YString2Byte(msg)
+ asclen = len(asc)
+ extra = 0
+ i = 0
+ while i < asclen:
+ ch = YGetByte(asc, i)
+ gsm7 = YGetByte(self._iso2gsm, ch)
+ if gsm7 == 27:
+ extra = extra + 1
+ if gsm7 == 0:
+ #
+ res = bytearray(0)
+ return res
+ i = i + 1
+ res = bytearray(asclen+extra)
+ wpos = 0
+ i = 0
+ while i < asclen:
+ ch = YGetByte(asc, i)
+ gsm7 = YGetByte(self._iso2gsm, ch)
+ res[wpos] = gsm7
+ wpos = wpos + 1
+ if gsm7 == 27:
+ if ch < 100:
+ if ch<93:
+ if ch<92:
+ gsm7=60
+ else:
+ gsm7=47
+ else:
+ if ch<94:
+ gsm7=62
+ else:
+ gsm7=20
+ else:
+ if ch<125:
+ if ch<124:
+ gsm7=40
+ else:
+ gsm7=64
+ else:
+ if ch<126:
+ gsm7=41
+ else:
+ gsm7=61
+ res[wpos] = gsm7
+ wpos = wpos + 1
+ i = i + 1
+ return res
+
+ def checkNewMessages(self):
+ # bitmapStr
+ # prevBitmap
+ # newBitmap
+ # slot
+ # nslots
+ # pduIdx
+ # idx
+ # bitVal
+ # prevBit
+ # i
+ # nsig
+ # cnt
+ # sig
+ newArr = []
+ newMsg = []
+ newAgg = []
+ signatures = []
+ # sms
+
+ # // may throw an exception
+ bitmapStr = self.get_slotsBitmap()
+ if bitmapStr == self._prevBitmapStr:
+ return YAPI.SUCCESS
+ prevBitmap = YAPI._hexStrToBin(self._prevBitmapStr)
+ newBitmap = YAPI._hexStrToBin(bitmapStr)
+ self._prevBitmapStr = bitmapStr
+ nslots = 8*len(newBitmap)
+ del newArr[:]
+ del newMsg[:]
+ del signatures[:]
+ nsig = 0
+ # // copy known messages
+ pduIdx = 0
+ while pduIdx < len(self._pdus):
+ sms = self._pdus[pduIdx]
+ slot = sms.get_slot()
+ idx = ((slot) >> (3))
+ if idx < len(newBitmap):
+ bitVal = ((1) << ((((slot) & (7)))))
+ if (((YGetByte(newBitmap, idx)) & (bitVal))) != 0:
+ newArr.append(sms)
+ if sms.get_concatCount() == 0:
+ newMsg.append(sms)
+ else:
+ sig = sms.get_concatSignature()
+ i = 0
+ while (i < nsig) and (len(sig) > 0):
+ if signatures[i] == sig:
+ sig = ""
+ i = i + 1
+ if len(sig) > 0:
+ signatures.append(sig)
+ nsig = nsig + 1
+ pduIdx = pduIdx + 1
+ # // receive new messages
+ slot = 0
+ while slot < nslots:
+ idx = ((slot) >> (3))
+ bitVal = ((1) << ((((slot) & (7)))))
+ prevBit = 0
+ if idx < len(prevBitmap):
+ prevBit = ((YGetByte(prevBitmap, idx)) & (bitVal))
+ if (((YGetByte(newBitmap, idx)) & (bitVal))) != 0:
+ if prevBit == 0:
+ sms = self.fetchPdu(slot)
+ newArr.append(sms)
+ if sms.get_concatCount() == 0:
+ newMsg.append(sms)
+ else:
+ sig = sms.get_concatSignature()
+ i = 0
+ while (i < nsig) and (len(sig) > 0):
+ if signatures[i] == sig:
+ sig = ""
+ i = i + 1
+ if len(sig) > 0:
+ signatures.append(sig)
+ nsig = nsig + 1
+ slot = slot + 1
+
+ self._pdus = newArr
+ # // append complete concatenated messages
+ i = 0
+ while i < nsig:
+ sig = signatures[i]
+ cnt = 0
+ pduIdx = 0
+ while pduIdx < len(self._pdus):
+ sms = self._pdus[pduIdx]
+ if sms.get_concatCount() > 0:
+ if sms.get_concatSignature() == sig:
+ if cnt == 0:
+ cnt = sms.get_concatCount()
+ del newAgg[:]
+ newAgg.append(sms)
+ pduIdx = pduIdx + 1
+ if (cnt > 0) and (len(newAgg) == cnt):
+ sms = YSms(self)
+ sms.set_parts(newAgg)
+ newMsg.append(sms)
+ i = i + 1
+
+ self._messages = newMsg
+
+ return YAPI.SUCCESS
+
+ def get_pdus(self):
+ # // may throw an exception
+ self.checkNewMessages()
+ return self._pdus
+
+ def clearPduCounters(self):
+ """
+ Clear the SMS units counters.
+
+ @return YAPI.SUCCESS when the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ # retcode
+ # // may throw an exception
+ retcode = self.set_pduReceived(0)
+ if retcode != YAPI.SUCCESS:
+ return retcode
+ retcode = self.set_pduSent(0)
+ return retcode
+
+ def sendTextMessage(self, recipient, message):
+ """
+ Sends a regular text SMS, with standard parameters. This function can send messages
+ of more than 160 characters, using SMS concatenation. ISO-latin accented characters
+ are supported. For sending messages with special unicode characters such as asian
+ characters and emoticons, use newMessage to create a new message and define
+ the content of using methods addText and addUnicodeData.
+
+ @param recipient : a text string with the recipient phone number, either as a
+ national number, or in international format starting with a plus sign
+ @param message : the text to be sent in the message
+
+ @return YAPI.SUCCESS when the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ # sms
+ # // may throw an exception
+ sms = YSms(self)
+ sms.set_recipient(recipient)
+ sms.addText(message)
+ return sms.send()
+
+ def sendFlashMessage(self, recipient, message):
+ """
+ Sends a Flash SMS (class 0 message). Flash messages are displayed on the handset
+ immediately and are usually not saved on the SIM card. This function can send messages
+ of more than 160 characters, using SMS concatenation. ISO-latin accented characters
+ are supported. For sending messages with special unicode characters such as asian
+ characters and emoticons, use newMessage to create a new message and define
+ the content of using methods addText et addUnicodeData.
+
+ @param recipient : a text string with the recipient phone number, either as a
+ national number, or in international format starting with a plus sign
+ @param message : the text to be sent in the message
+
+ @return YAPI.SUCCESS when the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ # sms
+ # // may throw an exception
+ sms = YSms(self)
+ sms.set_recipient(recipient)
+ sms.set_msgClass(0)
+ sms.addText(message)
+ return sms.send()
+
+ def newMessage(self, recipient):
+ """
+ Creates a new empty SMS message, to be configured and sent later on.
+
+ @param recipient : a text string with the recipient phone number, either as a
+ national number, or in international format starting with a plus sign
+
+ @return YAPI.SUCCESS when the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ # sms
+ sms = YSms(self)
+ sms.set_recipient(recipient)
+ return sms
+
+ def get_messages(self):
+ """
+ Returns the list of messages received and not deleted. This function
+ will automatically decode concatenated SMS.
+
+ @return an YSms object list.
+
+ On failure, throws an exception or returns an empty list.
+ """
+ # // may throw an exception
+ self.checkNewMessages()
+
+ return self._messages
+
+ def nextMessageBox(self):
+ """
+ Continues the enumeration of MessageBox interfaces started using yFirstMessageBox().
+
+ @return a pointer to a YMessageBox object, corresponding to
+ a MessageBox interface currently online, or a None pointer
+ if there are no more MessageBox interfaces to enumerate.
+ """
+ hwidRef = YRefParam()
+ if YAPI.YISERR(self._nextFunction(hwidRef)):
+ return None
+ if hwidRef.value == "":
+ return None
+ return YMessageBox.FindMessageBox(hwidRef.value)
+
+#--- (end of generated code: YMessageBox implementation)
+
+#--- (generated code: MessageBox functions)
+
+ @staticmethod
+ def FirstMessageBox():
+ """
+ Starts the enumeration of MessageBox interfaces currently accessible.
+ Use the method YMessageBox.nextMessageBox() to iterate on
+ next MessageBox interfaces.
+
+ @return a pointer to a YMessageBox object, corresponding to
+ the first MessageBox interface currently online, or a None pointer
+ if there are none.
+ """
+ devRef = YRefParam()
+ neededsizeRef = YRefParam()
+ serialRef = YRefParam()
+ funcIdRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+ errmsgRef = YRefParam()
+ size = YAPI.C_INTSIZE
+ #noinspection PyTypeChecker,PyCallingNonCallable
+ p = (ctypes.c_int * 1)()
+ err = YAPI.apiGetFunctionsByClass("MessageBox", 0, p, size, neededsizeRef, errmsgRef)
+
+ if YAPI.YISERR(err) or not neededsizeRef.value:
+ return None
+
+ if YAPI.YISERR(
+ YAPI.yapiGetFunctionInfo(p[0], devRef, serialRef, funcIdRef, funcNameRef, funcValRef, errmsgRef)):
+ return None
+
+ return YMessageBox.FindMessageBox(serialRef.value + "." + funcIdRef.value)
+
+#--- (end of generated code: MessageBox functions)
diff --git a/yoctoLib.python.26380/Sources/yocto_motor.py b/yoctoLib.python.26380/Sources/yocto_motor.py
new file mode 100644
index 0000000..310b467
--- /dev/null
+++ b/yoctoLib.python.26380/Sources/yocto_motor.py
@@ -0,0 +1,522 @@
+#*********************************************************************
+#*
+#* $Id: yocto_motor.py 23243 2016-02-23 14:13:12Z seb $
+#*
+#* Implements yFindMotor(), the high-level API for Motor functions
+#*
+#* - - - - - - - - - License information: - - - - - - - - -
+#*
+#* Copyright (C) 2011 and beyond by Yoctopuce Sarl, Switzerland.
+#*
+#* Yoctopuce Sarl (hereafter Licensor) grants to you a perpetual
+#* non-exclusive license to use, modify, copy and integrate this
+#* file into your software for the sole purpose of interfacing
+#* with Yoctopuce products.
+#*
+#* You may reproduce and distribute copies of this file in
+#* source or object form, as long as the sole purpose of this
+#* code is to interface with Yoctopuce products. You must retain
+#* this notice in the distributed source file.
+#*
+#* You should refer to Yoctopuce General Terms and Conditions
+#* for additional information regarding your rights and
+#* obligations.
+#*
+#* THE SOFTWARE AND DOCUMENTATION ARE PROVIDED 'AS IS' WITHOUT
+#* WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
+#* WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS
+#* FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO
+#* EVENT SHALL LICENSOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
+#* INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA,
+#* COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR
+#* SERVICES, ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT
+#* LIMITED TO ANY DEFENSE THEREOF), ANY CLAIMS FOR INDEMNITY OR
+#* CONTRIBUTION, OR OTHER SIMILAR COSTS, WHETHER ASSERTED ON THE
+#* BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE), BREACH OF
+#* WARRANTY, OR OTHERWISE.
+#*
+#*********************************************************************/
+
+
+__docformat__ = 'restructuredtext en'
+from yocto_api import *
+
+
+#--- (YMotor class start)
+#noinspection PyProtectedMember
+class YMotor(YFunction):
+ """
+ Yoctopuce application programming interface allows you to drive the
+ power sent to the motor to make it turn both ways, but also to drive accelerations
+ and decelerations. The motor will then accelerate automatically: you will not
+ have to monitor it. The API also allows to slow down the motor by shortening
+ its terminals: the motor will then act as an electromagnetic brake.
+
+ """
+#--- (end of YMotor class start)
+ #--- (YMotor return codes)
+ #--- (end of YMotor return codes)
+ #--- (YMotor dlldef)
+ #--- (end of YMotor dlldef)
+ #--- (YMotor definitions)
+ DRIVINGFORCE_INVALID = YAPI.INVALID_DOUBLE
+ BRAKINGFORCE_INVALID = YAPI.INVALID_DOUBLE
+ CUTOFFVOLTAGE_INVALID = YAPI.INVALID_DOUBLE
+ OVERCURRENTLIMIT_INVALID = YAPI.INVALID_INT
+ FREQUENCY_INVALID = YAPI.INVALID_DOUBLE
+ STARTERTIME_INVALID = YAPI.INVALID_INT
+ FAILSAFETIMEOUT_INVALID = YAPI.INVALID_UINT
+ COMMAND_INVALID = YAPI.INVALID_STRING
+ MOTORSTATUS_IDLE = 0
+ MOTORSTATUS_BRAKE = 1
+ MOTORSTATUS_FORWD = 2
+ MOTORSTATUS_BACKWD = 3
+ MOTORSTATUS_LOVOLT = 4
+ MOTORSTATUS_HICURR = 5
+ MOTORSTATUS_HIHEAT = 6
+ MOTORSTATUS_FAILSF = 7
+ MOTORSTATUS_INVALID = -1
+ #--- (end of YMotor definitions)
+
+ def __init__(self, func):
+ super(YMotor, self).__init__(func)
+ self._className = 'Motor'
+ #--- (YMotor attributes)
+ self._callback = None
+ self._motorStatus = YMotor.MOTORSTATUS_INVALID
+ self._drivingForce = YMotor.DRIVINGFORCE_INVALID
+ self._brakingForce = YMotor.BRAKINGFORCE_INVALID
+ self._cutOffVoltage = YMotor.CUTOFFVOLTAGE_INVALID
+ self._overCurrentLimit = YMotor.OVERCURRENTLIMIT_INVALID
+ self._frequency = YMotor.FREQUENCY_INVALID
+ self._starterTime = YMotor.STARTERTIME_INVALID
+ self._failSafeTimeout = YMotor.FAILSAFETIMEOUT_INVALID
+ self._command = YMotor.COMMAND_INVALID
+ #--- (end of YMotor attributes)
+
+ #--- (YMotor implementation)
+ def _parseAttr(self, member):
+ if member.name == "motorStatus":
+ self._motorStatus = member.ivalue
+ return 1
+ if member.name == "drivingForce":
+ self._drivingForce = round(member.ivalue * 1000.0 / 65536.0) / 1000.0
+ return 1
+ if member.name == "brakingForce":
+ self._brakingForce = round(member.ivalue * 1000.0 / 65536.0) / 1000.0
+ return 1
+ if member.name == "cutOffVoltage":
+ self._cutOffVoltage = round(member.ivalue * 1000.0 / 65536.0) / 1000.0
+ return 1
+ if member.name == "overCurrentLimit":
+ self._overCurrentLimit = member.ivalue
+ return 1
+ if member.name == "frequency":
+ self._frequency = round(member.ivalue * 1000.0 / 65536.0) / 1000.0
+ return 1
+ if member.name == "starterTime":
+ self._starterTime = member.ivalue
+ return 1
+ if member.name == "failSafeTimeout":
+ self._failSafeTimeout = member.ivalue
+ return 1
+ if member.name == "command":
+ self._command = member.svalue
+ return 1
+ super(YMotor, self)._parseAttr(member)
+
+ def get_motorStatus(self):
+ """
+ Return the controller state. Possible states are:
+ IDLE when the motor is stopped/in free wheel, ready to start;
+ FORWD when the controller is driving the motor forward;
+ BACKWD when the controller is driving the motor backward;
+ BRAKE when the controller is braking;
+ LOVOLT when the controller has detected a low voltage condition;
+ HICURR when the controller has detected an overcurrent condition;
+ HIHEAT when the controller has detected an overheat condition;
+ FAILSF when the controller switched on the failsafe security.
+
+ When an error condition occurred (LOVOLT, HICURR, HIHEAT, FAILSF), the controller
+ status must be explicitly reset using the resetStatus function.
+
+ @return a value among YMotor.MOTORSTATUS_IDLE, YMotor.MOTORSTATUS_BRAKE, YMotor.MOTORSTATUS_FORWD,
+ YMotor.MOTORSTATUS_BACKWD, YMotor.MOTORSTATUS_LOVOLT, YMotor.MOTORSTATUS_HICURR,
+ YMotor.MOTORSTATUS_HIHEAT and YMotor.MOTORSTATUS_FAILSF
+
+ On failure, throws an exception or returns YMotor.MOTORSTATUS_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YMotor.MOTORSTATUS_INVALID
+ return self._motorStatus
+
+ def set_motorStatus(self, newval):
+ rest_val = str(newval)
+ return self._setAttr("motorStatus", rest_val)
+
+ def set_drivingForce(self, newval):
+ """
+ Changes immediately the power sent to the motor. The value is a percentage between -100%
+ to 100%. If you want go easy on your mechanics and avoid excessive current consumption,
+ try to avoid brutal power changes. For example, immediate transition from forward full power
+ to reverse full power is a very bad idea. Each time the driving power is modified, the
+ braking power is set to zero.
+
+ @param newval : a floating point number corresponding to immediately the power sent to the motor
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(int(round(newval * 65536.0, 1)))
+ return self._setAttr("drivingForce", rest_val)
+
+ def get_drivingForce(self):
+ """
+ Returns the power sent to the motor, as a percentage between -100% and +100%.
+
+ @return a floating point number corresponding to the power sent to the motor, as a percentage
+ between -100% and +100%
+
+ On failure, throws an exception or returns YMotor.DRIVINGFORCE_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YMotor.DRIVINGFORCE_INVALID
+ return self._drivingForce
+
+ def set_brakingForce(self, newval):
+ """
+ Changes immediately the braking force applied to the motor (in percents).
+ The value 0 corresponds to no braking (free wheel). When the braking force
+ is changed, the driving power is set to zero. The value is a percentage.
+
+ @param newval : a floating point number corresponding to immediately the braking force applied to
+ the motor (in percents)
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(int(round(newval * 65536.0, 1)))
+ return self._setAttr("brakingForce", rest_val)
+
+ def get_brakingForce(self):
+ """
+ Returns the braking force applied to the motor, as a percentage.
+ The value 0 corresponds to no braking (free wheel).
+
+ @return a floating point number corresponding to the braking force applied to the motor, as a percentage
+
+ On failure, throws an exception or returns YMotor.BRAKINGFORCE_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YMotor.BRAKINGFORCE_INVALID
+ return self._brakingForce
+
+ def set_cutOffVoltage(self, newval):
+ """
+ Changes the threshold voltage under which the controller automatically switches to error state
+ and prevents further current draw. This setting prevent damage to a battery that can
+ occur when drawing current from an "empty" battery.
+ Note that whatever the cutoff threshold, the controller switches to undervoltage
+ error state if the power supply goes under 3V, even for a very brief time.
+
+ @param newval : a floating point number corresponding to the threshold voltage under which the
+ controller automatically switches to error state
+ and prevents further current draw
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(int(round(newval * 65536.0, 1)))
+ return self._setAttr("cutOffVoltage", rest_val)
+
+ def get_cutOffVoltage(self):
+ """
+ Returns the threshold voltage under which the controller automatically switches to error state
+ and prevents further current draw. This setting prevents damage to a battery that can
+ occur when drawing current from an "empty" battery.
+
+ @return a floating point number corresponding to the threshold voltage under which the controller
+ automatically switches to error state
+ and prevents further current draw
+
+ On failure, throws an exception or returns YMotor.CUTOFFVOLTAGE_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YMotor.CUTOFFVOLTAGE_INVALID
+ return self._cutOffVoltage
+
+ def get_overCurrentLimit(self):
+ """
+ Returns the current threshold (in mA) above which the controller automatically
+ switches to error state. A zero value means that there is no limit.
+
+ @return an integer corresponding to the current threshold (in mA) above which the controller automatically
+ switches to error state
+
+ On failure, throws an exception or returns YMotor.OVERCURRENTLIMIT_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YMotor.OVERCURRENTLIMIT_INVALID
+ return self._overCurrentLimit
+
+ def set_overCurrentLimit(self, newval):
+ """
+ Changes the current threshold (in mA) above which the controller automatically
+ switches to error state. A zero value means that there is no limit. Note that whatever the
+ current limit is, the controller switches to OVERCURRENT status if the current
+ goes above 32A, even for a very brief time.
+
+ @param newval : an integer corresponding to the current threshold (in mA) above which the
+ controller automatically
+ switches to error state
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("overCurrentLimit", rest_val)
+
+ def set_frequency(self, newval):
+ """
+ Changes the PWM frequency used to control the motor. Low frequency is usually
+ more efficient and may help the motor to start, but an audible noise might be
+ generated. A higher frequency reduces the noise, but more energy is converted
+ into heat.
+
+ @param newval : a floating point number corresponding to the PWM frequency used to control the motor
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(int(round(newval * 65536.0, 1)))
+ return self._setAttr("frequency", rest_val)
+
+ def get_frequency(self):
+ """
+ Returns the PWM frequency used to control the motor.
+
+ @return a floating point number corresponding to the PWM frequency used to control the motor
+
+ On failure, throws an exception or returns YMotor.FREQUENCY_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YMotor.FREQUENCY_INVALID
+ return self._frequency
+
+ def get_starterTime(self):
+ """
+ Returns the duration (in ms) during which the motor is driven at low frequency to help
+ it start up.
+
+ @return an integer corresponding to the duration (in ms) during which the motor is driven at low
+ frequency to help
+ it start up
+
+ On failure, throws an exception or returns YMotor.STARTERTIME_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YMotor.STARTERTIME_INVALID
+ return self._starterTime
+
+ def set_starterTime(self, newval):
+ """
+ Changes the duration (in ms) during which the motor is driven at low frequency to help
+ it start up.
+
+ @param newval : an integer corresponding to the duration (in ms) during which the motor is driven
+ at low frequency to help
+ it start up
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("starterTime", rest_val)
+
+ def get_failSafeTimeout(self):
+ """
+ Returns the delay in milliseconds allowed for the controller to run autonomously without
+ receiving any instruction from the control process. When this delay has elapsed,
+ the controller automatically stops the motor and switches to FAILSAFE error.
+ Failsafe security is disabled when the value is zero.
+
+ @return an integer corresponding to the delay in milliseconds allowed for the controller to run
+ autonomously without
+ receiving any instruction from the control process
+
+ On failure, throws an exception or returns YMotor.FAILSAFETIMEOUT_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YMotor.FAILSAFETIMEOUT_INVALID
+ return self._failSafeTimeout
+
+ def set_failSafeTimeout(self, newval):
+ """
+ Changes the delay in milliseconds allowed for the controller to run autonomously without
+ receiving any instruction from the control process. When this delay has elapsed,
+ the controller automatically stops the motor and switches to FAILSAFE error.
+ Failsafe security is disabled when the value is zero.
+
+ @param newval : an integer corresponding to the delay in milliseconds allowed for the controller to
+ run autonomously without
+ receiving any instruction from the control process
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("failSafeTimeout", rest_val)
+
+ def get_command(self):
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YMotor.COMMAND_INVALID
+ return self._command
+
+ def set_command(self, newval):
+ rest_val = newval
+ return self._setAttr("command", rest_val)
+
+ @staticmethod
+ def FindMotor(func):
+ """
+ Retrieves a motor for a given identifier.
+ The identifier can be specified using several formats:
+ <ul>
+ <li>FunctionLogicalName</li>
+ <li>ModuleSerialNumber.FunctionIdentifier</li>
+ <li>ModuleSerialNumber.FunctionLogicalName</li>
+ <li>ModuleLogicalName.FunctionIdentifier</li>
+ <li>ModuleLogicalName.FunctionLogicalName</li>
+ </ul>
+
+ This function does not require that the motor is online at the time
+ it is invoked. The returned object is nevertheless valid.
+ Use the method YMotor.isOnline() to test if the motor is
+ indeed online at a given time. In case of ambiguity when looking for
+ a motor by logical name, no error is notified: the first instance
+ found is returned. The search is performed first by hardware name,
+ then by logical name.
+
+ @param func : a string that uniquely characterizes the motor
+
+ @return a YMotor object allowing you to drive the motor.
+ """
+ # obj
+ obj = YFunction._FindFromCache("Motor", func)
+ if obj is None:
+ obj = YMotor(func)
+ YFunction._AddToCache("Motor", func, obj)
+ return obj
+
+ def keepALive(self):
+ """
+ Rearms the controller failsafe timer. When the motor is running and the failsafe feature
+ is active, this function should be called periodically to prove that the control process
+ is running properly. Otherwise, the motor is automatically stopped after the specified
+ timeout. Calling a motor <i>set</i> function implicitely rearms the failsafe timer.
+ """
+ # // may throw an exception
+ return self.set_command("K")
+
+ def resetStatus(self):
+ """
+ Reset the controller state to IDLE. This function must be invoked explicitely
+ after any error condition is signaled.
+ """
+ # // may throw an exception
+ return self.set_motorStatus(YMotor.MOTORSTATUS_IDLE)
+
+ def drivingForceMove(self, targetPower, delay):
+ """
+ Changes progressively the power sent to the moteur for a specific duration.
+
+ @param targetPower : desired motor power, in percents (between -100% and +100%)
+ @param delay : duration (in ms) of the transition
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.set_command("P" + str(int(round(targetPower*10))) + "," + str(int(delay)))
+
+ def brakingForceMove(self, targetPower, delay):
+ """
+ Changes progressively the braking force applied to the motor for a specific duration.
+
+ @param targetPower : desired braking force, in percents
+ @param delay : duration (in ms) of the transition
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.set_command("B" + str(int(round(targetPower*10))) + "," + str(int(delay)))
+
+ def nextMotor(self):
+ """
+ Continues the enumeration of motors started using yFirstMotor().
+
+ @return a pointer to a YMotor object, corresponding to
+ a motor currently online, or a None pointer
+ if there are no more motors to enumerate.
+ """
+ hwidRef = YRefParam()
+ if YAPI.YISERR(self._nextFunction(hwidRef)):
+ return None
+ if hwidRef.value == "":
+ return None
+ return YMotor.FindMotor(hwidRef.value)
+
+#--- (end of YMotor implementation)
+
+#--- (Motor functions)
+
+ @staticmethod
+ def FirstMotor():
+ """
+ Starts the enumeration of motors currently accessible.
+ Use the method YMotor.nextMotor() to iterate on
+ next motors.
+
+ @return a pointer to a YMotor object, corresponding to
+ the first motor currently online, or a None pointer
+ if there are none.
+ """
+ devRef = YRefParam()
+ neededsizeRef = YRefParam()
+ serialRef = YRefParam()
+ funcIdRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+ errmsgRef = YRefParam()
+ size = YAPI.C_INTSIZE
+ #noinspection PyTypeChecker,PyCallingNonCallable
+ p = (ctypes.c_int * 1)()
+ err = YAPI.apiGetFunctionsByClass("Motor", 0, p, size, neededsizeRef, errmsgRef)
+
+ if YAPI.YISERR(err) or not neededsizeRef.value:
+ return None
+
+ if YAPI.YISERR(
+ YAPI.yapiGetFunctionInfo(p[0], devRef, serialRef, funcIdRef, funcNameRef, funcValRef, errmsgRef)):
+ return None
+
+ return YMotor.FindMotor(serialRef.value + "." + funcIdRef.value)
+
+#--- (end of Motor functions)
diff --git a/yoctoLib.python.26380/Sources/yocto_multiaxiscontroller.py b/yoctoLib.python.26380/Sources/yocto_multiaxiscontroller.py
new file mode 100644
index 0000000..4993a09
--- /dev/null
+++ b/yoctoLib.python.26380/Sources/yocto_multiaxiscontroller.py
@@ -0,0 +1,344 @@
+#*********************************************************************
+#*
+#* $Id: yocto_multiaxiscontroller.py 26303 2017-01-10 13:52:43Z mvuilleu $
+#*
+#* Implements yFindMultiAxisController(), the high-level API for MultiAxisController functions
+#*
+#* - - - - - - - - - License information: - - - - - - - - -
+#*
+#* Copyright (C) 2011 and beyond by Yoctopuce Sarl, Switzerland.
+#*
+#* Yoctopuce Sarl (hereafter Licensor) grants to you a perpetual
+#* non-exclusive license to use, modify, copy and integrate this
+#* file into your software for the sole purpose of interfacing
+#* with Yoctopuce products.
+#*
+#* You may reproduce and distribute copies of this file in
+#* source or object form, as long as the sole purpose of this
+#* code is to interface with Yoctopuce products. You must retain
+#* this notice in the distributed source file.
+#*
+#* You should refer to Yoctopuce General Terms and Conditions
+#* for additional information regarding your rights and
+#* obligations.
+#*
+#* THE SOFTWARE AND DOCUMENTATION ARE PROVIDED 'AS IS' WITHOUT
+#* WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
+#* WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS
+#* FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO
+#* EVENT SHALL LICENSOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
+#* INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA,
+#* COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR
+#* SERVICES, ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT
+#* LIMITED TO ANY DEFENSE THEREOF), ANY CLAIMS FOR INDEMNITY OR
+#* CONTRIBUTION, OR OTHER SIMILAR COSTS, WHETHER ASSERTED ON THE
+#* BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE), BREACH OF
+#* WARRANTY, OR OTHERWISE.
+#*
+#*********************************************************************/
+
+
+__docformat__ = 'restructuredtext en'
+from yocto_api import *
+
+
+#--- (YMultiAxisController class start)
+#noinspection PyProtectedMember
+class YMultiAxisController(YFunction):
+ """
+ The Yoctopuce application programming interface allows you to drive a stepper motor.
+
+ """
+#--- (end of YMultiAxisController class start)
+ #--- (YMultiAxisController return codes)
+ #--- (end of YMultiAxisController return codes)
+ #--- (YMultiAxisController dlldef)
+ #--- (end of YMultiAxisController dlldef)
+ #--- (YMultiAxisController definitions)
+ NAXIS_INVALID = YAPI.INVALID_UINT
+ COMMAND_INVALID = YAPI.INVALID_STRING
+ GLOBALSTATE_ABSENT = 0
+ GLOBALSTATE_ALERT = 1
+ GLOBALSTATE_HI_Z = 2
+ GLOBALSTATE_STOP = 3
+ GLOBALSTATE_RUN = 4
+ GLOBALSTATE_BATCH = 5
+ GLOBALSTATE_INVALID = -1
+ #--- (end of YMultiAxisController definitions)
+
+ def __init__(self, func):
+ super(YMultiAxisController, self).__init__(func)
+ self._className = 'MultiAxisController'
+ #--- (YMultiAxisController attributes)
+ self._callback = None
+ self._nAxis = YMultiAxisController.NAXIS_INVALID
+ self._globalState = YMultiAxisController.GLOBALSTATE_INVALID
+ self._command = YMultiAxisController.COMMAND_INVALID
+ #--- (end of YMultiAxisController attributes)
+
+ #--- (YMultiAxisController implementation)
+ def _parseAttr(self, member):
+ if member.name == "nAxis":
+ self._nAxis = member.ivalue
+ return 1
+ if member.name == "globalState":
+ self._globalState = member.ivalue
+ return 1
+ if member.name == "command":
+ self._command = member.svalue
+ return 1
+ super(YMultiAxisController, self)._parseAttr(member)
+
+ def get_nAxis(self):
+ """
+ Returns the number of synchronized controllers.
+
+ @return an integer corresponding to the number of synchronized controllers
+
+ On failure, throws an exception or returns YMultiAxisController.NAXIS_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YMultiAxisController.NAXIS_INVALID
+ return self._nAxis
+
+ def set_nAxis(self, newval):
+ """
+ Changes the number of synchronized controllers.
+
+ @param newval : an integer corresponding to the number of synchronized controllers
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("nAxis", rest_val)
+
+ def get_globalState(self):
+ """
+ Returns the stepper motor set overall state.
+
+ @return a value among YMultiAxisController.GLOBALSTATE_ABSENT,
+ YMultiAxisController.GLOBALSTATE_ALERT, YMultiAxisController.GLOBALSTATE_HI_Z,
+ YMultiAxisController.GLOBALSTATE_STOP, YMultiAxisController.GLOBALSTATE_RUN and
+ YMultiAxisController.GLOBALSTATE_BATCH corresponding to the stepper motor set overall state
+
+ On failure, throws an exception or returns YMultiAxisController.GLOBALSTATE_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YMultiAxisController.GLOBALSTATE_INVALID
+ return self._globalState
+
+ def get_command(self):
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YMultiAxisController.COMMAND_INVALID
+ return self._command
+
+ def set_command(self, newval):
+ rest_val = newval
+ return self._setAttr("command", rest_val)
+
+ @staticmethod
+ def FindMultiAxisController(func):
+ """
+ Retrieves a multi-axis controller for a given identifier.
+ The identifier can be specified using several formats:
+ <ul>
+ <li>FunctionLogicalName</li>
+ <li>ModuleSerialNumber.FunctionIdentifier</li>
+ <li>ModuleSerialNumber.FunctionLogicalName</li>
+ <li>ModuleLogicalName.FunctionIdentifier</li>
+ <li>ModuleLogicalName.FunctionLogicalName</li>
+ </ul>
+
+ This function does not require that the multi-axis controller is online at the time
+ it is invoked. The returned object is nevertheless valid.
+ Use the method YMultiAxisController.isOnline() to test if the multi-axis controller is
+ indeed online at a given time. In case of ambiguity when looking for
+ a multi-axis controller by logical name, no error is notified: the first instance
+ found is returned. The search is performed first by hardware name,
+ then by logical name.
+
+ @param func : a string that uniquely characterizes the multi-axis controller
+
+ @return a YMultiAxisController object allowing you to drive the multi-axis controller.
+ """
+ # obj
+ obj = YFunction._FindFromCache("MultiAxisController", func)
+ if obj is None:
+ obj = YMultiAxisController(func)
+ YFunction._AddToCache("MultiAxisController", func, obj)
+ return obj
+
+ def sendCommand(self, command):
+ # //may throw an exception
+ return self.set_command(command)
+
+ def reset(self):
+ """
+ Reinitialize all controllers and clear all alert flags.
+
+ @return YAPI.SUCCESS if the call succeeds.
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.sendCommand("Z")
+
+ def findHomePosition(self, speed):
+ """
+ Starts all motors backward at the specified speeds, to search for the motor home position.
+
+ @param speed : desired speed for all axis, in steps per second.
+
+ @return YAPI.SUCCESS if the call succeeds.
+ On failure, throws an exception or returns a negative error code.
+ """
+ # cmd
+ # i
+ # ndim
+ ndim = len(speed)
+ cmd = "H" + str(int(round(1000*speed[0])))
+ i = 1
+ while i + 1 < ndim:
+ cmd = "" + cmd + "," + str(int(round(1000*speed[i])))
+ i = i + 1
+ return self.sendCommand(cmd)
+
+ def moveTo(self, absPos):
+ """
+ Starts all motors synchronously to reach a given absolute position.
+ The time needed to reach the requested position will depend on the lowest
+ acceleration and max speed parameters configured for all motors.
+ The final position will be reached on all axis at the same time.
+
+ @param absPos : absolute position, measured in steps from each origin.
+
+ @return YAPI.SUCCESS if the call succeeds.
+ On failure, throws an exception or returns a negative error code.
+ """
+ # cmd
+ # i
+ # ndim
+ ndim = len(absPos)
+ cmd = "M" + str(int(round(16*absPos[0])))
+ i = 1
+ while i + 1 < ndim:
+ cmd = "" + cmd + "," + str(int(round(16*absPos[i])))
+ i = i + 1
+ return self.sendCommand(cmd)
+
+ def moveRel(self, relPos):
+ """
+ Starts all motors synchronously to reach a given relative position.
+ The time needed to reach the requested position will depend on the lowest
+ acceleration and max speed parameters configured for all motors.
+ The final position will be reached on all axis at the same time.
+
+ @param relPos : relative position, measured in steps from the current position.
+
+ @return YAPI.SUCCESS if the call succeeds.
+ On failure, throws an exception or returns a negative error code.
+ """
+ # cmd
+ # i
+ # ndim
+ ndim = len(relPos)
+ cmd = "m" + str(int(round(16*relPos[0])))
+ i = 1
+ while i + 1 < ndim:
+ cmd = "" + cmd + "," + str(int(round(16*relPos[i])))
+ i = i + 1
+ return self.sendCommand(cmd)
+
+ def pause(self, waitMs):
+ """
+ Keep the motor in the same state for the specified amount of time, before processing next command.
+
+ @param waitMs : wait time, specified in milliseconds.
+
+ @return YAPI.SUCCESS if the call succeeds.
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.sendCommand("_" + str(int(waitMs)))
+
+ def emergencyStop(self):
+ """
+ Stops the motor with an emergency alert, without taking any additional precaution.
+
+ @return YAPI.SUCCESS if the call succeeds.
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.sendCommand("!")
+
+ def abortAndBrake(self):
+ """
+ Stops the motor smoothly as soon as possible, without waiting for ongoing move completion.
+
+ @return YAPI.SUCCESS if the call succeeds.
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.sendCommand("B")
+
+ def abortAndHiZ(self):
+ """
+ Turn the controller into Hi-Z mode immediately, without waiting for ongoing move completion.
+
+ @return YAPI.SUCCESS if the call succeeds.
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.sendCommand("z")
+
+ def nextMultiAxisController(self):
+ """
+ Continues the enumeration of multi-axis controllers started using yFirstMultiAxisController().
+
+ @return a pointer to a YMultiAxisController object, corresponding to
+ a multi-axis controller currently online, or a None pointer
+ if there are no more multi-axis controllers to enumerate.
+ """
+ hwidRef = YRefParam()
+ if YAPI.YISERR(self._nextFunction(hwidRef)):
+ return None
+ if hwidRef.value == "":
+ return None
+ return YMultiAxisController.FindMultiAxisController(hwidRef.value)
+
+#--- (end of YMultiAxisController implementation)
+
+#--- (MultiAxisController functions)
+
+ @staticmethod
+ def FirstMultiAxisController():
+ """
+ Starts the enumeration of multi-axis controllers currently accessible.
+ Use the method YMultiAxisController.nextMultiAxisController() to iterate on
+ next multi-axis controllers.
+
+ @return a pointer to a YMultiAxisController object, corresponding to
+ the first multi-axis controller currently online, or a None pointer
+ if there are none.
+ """
+ devRef = YRefParam()
+ neededsizeRef = YRefParam()
+ serialRef = YRefParam()
+ funcIdRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+ errmsgRef = YRefParam()
+ size = YAPI.C_INTSIZE
+ #noinspection PyTypeChecker,PyCallingNonCallable
+ p = (ctypes.c_int * 1)()
+ err = YAPI.apiGetFunctionsByClass("MultiAxisController", 0, p, size, neededsizeRef, errmsgRef)
+
+ if YAPI.YISERR(err) or not neededsizeRef.value:
+ return None
+
+ if YAPI.YISERR(
+ YAPI.yapiGetFunctionInfo(p[0], devRef, serialRef, funcIdRef, funcNameRef, funcValRef, errmsgRef)):
+ return None
+
+ return YMultiAxisController.FindMultiAxisController(serialRef.value + "." + funcIdRef.value)
+
+#--- (end of MultiAxisController functions)
diff --git a/yoctoLib.python.26380/Sources/yocto_network.py b/yoctoLib.python.26380/Sources/yocto_network.py
new file mode 100644
index 0000000..2ea6042
--- /dev/null
+++ b/yoctoLib.python.26380/Sources/yocto_network.py
@@ -0,0 +1,958 @@
+#*********************************************************************
+#*
+#* $Id: yocto_network.py 23930 2016-04-15 09:31:14Z seb $
+#*
+#* Implements yFindNetwork(), the high-level API for Network functions
+#*
+#* - - - - - - - - - License information: - - - - - - - - -
+#*
+#* Copyright (C) 2011 and beyond by Yoctopuce Sarl, Switzerland.
+#*
+#* Yoctopuce Sarl (hereafter Licensor) grants to you a perpetual
+#* non-exclusive license to use, modify, copy and integrate this
+#* file into your software for the sole purpose of interfacing
+#* with Yoctopuce products.
+#*
+#* You may reproduce and distribute copies of this file in
+#* source or object form, as long as the sole purpose of this
+#* code is to interface with Yoctopuce products. You must retain
+#* this notice in the distributed source file.
+#*
+#* You should refer to Yoctopuce General Terms and Conditions
+#* for additional information regarding your rights and
+#* obligations.
+#*
+#* THE SOFTWARE AND DOCUMENTATION ARE PROVIDED 'AS IS' WITHOUT
+#* WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
+#* WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS
+#* FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO
+#* EVENT SHALL LICENSOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
+#* INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA,
+#* COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR
+#* SERVICES, ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT
+#* LIMITED TO ANY DEFENSE THEREOF), ANY CLAIMS FOR INDEMNITY OR
+#* CONTRIBUTION, OR OTHER SIMILAR COSTS, WHETHER ASSERTED ON THE
+#* BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE), BREACH OF
+#* WARRANTY, OR OTHERWISE.
+#*
+#*********************************************************************/
+
+
+__docformat__ = 'restructuredtext en'
+from yocto_api import *
+
+
+#--- (YNetwork class start)
+#noinspection PyProtectedMember
+class YNetwork(YFunction):
+ """
+ YNetwork objects provide access to TCP/IP parameters of Yoctopuce
+ modules that include a built-in network interface.
+
+ """
+#--- (end of YNetwork class start)
+ #--- (YNetwork return codes)
+ #--- (end of YNetwork return codes)
+ #--- (YNetwork dlldef)
+ #--- (end of YNetwork dlldef)
+ #--- (YNetwork definitions)
+ MACADDRESS_INVALID = YAPI.INVALID_STRING
+ IPADDRESS_INVALID = YAPI.INVALID_STRING
+ SUBNETMASK_INVALID = YAPI.INVALID_STRING
+ ROUTER_INVALID = YAPI.INVALID_STRING
+ IPCONFIG_INVALID = YAPI.INVALID_STRING
+ PRIMARYDNS_INVALID = YAPI.INVALID_STRING
+ SECONDARYDNS_INVALID = YAPI.INVALID_STRING
+ NTPSERVER_INVALID = YAPI.INVALID_STRING
+ USERPASSWORD_INVALID = YAPI.INVALID_STRING
+ ADMINPASSWORD_INVALID = YAPI.INVALID_STRING
+ HTTPPORT_INVALID = YAPI.INVALID_UINT
+ DEFAULTPAGE_INVALID = YAPI.INVALID_STRING
+ WWWWATCHDOGDELAY_INVALID = YAPI.INVALID_UINT
+ CALLBACKURL_INVALID = YAPI.INVALID_STRING
+ CALLBACKCREDENTIALS_INVALID = YAPI.INVALID_STRING
+ CALLBACKINITIALDELAY_INVALID = YAPI.INVALID_UINT
+ CALLBACKMINDELAY_INVALID = YAPI.INVALID_UINT
+ CALLBACKMAXDELAY_INVALID = YAPI.INVALID_UINT
+ POECURRENT_INVALID = YAPI.INVALID_UINT
+ READINESS_DOWN = 0
+ READINESS_EXISTS = 1
+ READINESS_LINKED = 2
+ READINESS_LAN_OK = 3
+ READINESS_WWW_OK = 4
+ READINESS_INVALID = -1
+ DISCOVERABLE_FALSE = 0
+ DISCOVERABLE_TRUE = 1
+ DISCOVERABLE_INVALID = -1
+ CALLBACKMETHOD_POST = 0
+ CALLBACKMETHOD_GET = 1
+ CALLBACKMETHOD_PUT = 2
+ CALLBACKMETHOD_INVALID = -1
+ CALLBACKENCODING_FORM = 0
+ CALLBACKENCODING_JSON = 1
+ CALLBACKENCODING_JSON_ARRAY = 2
+ CALLBACKENCODING_CSV = 3
+ CALLBACKENCODING_YOCTO_API = 4
+ CALLBACKENCODING_JSON_NUM = 5
+ CALLBACKENCODING_EMONCMS = 6
+ CALLBACKENCODING_AZURE = 7
+ CALLBACKENCODING_INFLUXDB = 8
+ CALLBACKENCODING_MQTT = 9
+ CALLBACKENCODING_INVALID = -1
+ #--- (end of YNetwork definitions)
+
+ def __init__(self, func):
+ super(YNetwork, self).__init__(func)
+ self._className = 'Network'
+ #--- (YNetwork attributes)
+ self._callback = None
+ self._readiness = YNetwork.READINESS_INVALID
+ self._macAddress = YNetwork.MACADDRESS_INVALID
+ self._ipAddress = YNetwork.IPADDRESS_INVALID
+ self._subnetMask = YNetwork.SUBNETMASK_INVALID
+ self._router = YNetwork.ROUTER_INVALID
+ self._ipConfig = YNetwork.IPCONFIG_INVALID
+ self._primaryDNS = YNetwork.PRIMARYDNS_INVALID
+ self._secondaryDNS = YNetwork.SECONDARYDNS_INVALID
+ self._ntpServer = YNetwork.NTPSERVER_INVALID
+ self._userPassword = YNetwork.USERPASSWORD_INVALID
+ self._adminPassword = YNetwork.ADMINPASSWORD_INVALID
+ self._httpPort = YNetwork.HTTPPORT_INVALID
+ self._defaultPage = YNetwork.DEFAULTPAGE_INVALID
+ self._discoverable = YNetwork.DISCOVERABLE_INVALID
+ self._wwwWatchdogDelay = YNetwork.WWWWATCHDOGDELAY_INVALID
+ self._callbackUrl = YNetwork.CALLBACKURL_INVALID
+ self._callbackMethod = YNetwork.CALLBACKMETHOD_INVALID
+ self._callbackEncoding = YNetwork.CALLBACKENCODING_INVALID
+ self._callbackCredentials = YNetwork.CALLBACKCREDENTIALS_INVALID
+ self._callbackInitialDelay = YNetwork.CALLBACKINITIALDELAY_INVALID
+ self._callbackMinDelay = YNetwork.CALLBACKMINDELAY_INVALID
+ self._callbackMaxDelay = YNetwork.CALLBACKMAXDELAY_INVALID
+ self._poeCurrent = YNetwork.POECURRENT_INVALID
+ #--- (end of YNetwork attributes)
+
+ #--- (YNetwork implementation)
+ def _parseAttr(self, member):
+ if member.name == "readiness":
+ self._readiness = member.ivalue
+ return 1
+ if member.name == "macAddress":
+ self._macAddress = member.svalue
+ return 1
+ if member.name == "ipAddress":
+ self._ipAddress = member.svalue
+ return 1
+ if member.name == "subnetMask":
+ self._subnetMask = member.svalue
+ return 1
+ if member.name == "router":
+ self._router = member.svalue
+ return 1
+ if member.name == "ipConfig":
+ self._ipConfig = member.svalue
+ return 1
+ if member.name == "primaryDNS":
+ self._primaryDNS = member.svalue
+ return 1
+ if member.name == "secondaryDNS":
+ self._secondaryDNS = member.svalue
+ return 1
+ if member.name == "ntpServer":
+ self._ntpServer = member.svalue
+ return 1
+ if member.name == "userPassword":
+ self._userPassword = member.svalue
+ return 1
+ if member.name == "adminPassword":
+ self._adminPassword = member.svalue
+ return 1
+ if member.name == "httpPort":
+ self._httpPort = member.ivalue
+ return 1
+ if member.name == "defaultPage":
+ self._defaultPage = member.svalue
+ return 1
+ if member.name == "discoverable":
+ self._discoverable = member.ivalue
+ return 1
+ if member.name == "wwwWatchdogDelay":
+ self._wwwWatchdogDelay = member.ivalue
+ return 1
+ if member.name == "callbackUrl":
+ self._callbackUrl = member.svalue
+ return 1
+ if member.name == "callbackMethod":
+ self._callbackMethod = member.ivalue
+ return 1
+ if member.name == "callbackEncoding":
+ self._callbackEncoding = member.ivalue
+ return 1
+ if member.name == "callbackCredentials":
+ self._callbackCredentials = member.svalue
+ return 1
+ if member.name == "callbackInitialDelay":
+ self._callbackInitialDelay = member.ivalue
+ return 1
+ if member.name == "callbackMinDelay":
+ self._callbackMinDelay = member.ivalue
+ return 1
+ if member.name == "callbackMaxDelay":
+ self._callbackMaxDelay = member.ivalue
+ return 1
+ if member.name == "poeCurrent":
+ self._poeCurrent = member.ivalue
+ return 1
+ super(YNetwork, self)._parseAttr(member)
+
+ def get_readiness(self):
+ """
+ Returns the current established working mode of the network interface.
+ Level zero (DOWN_0) means that no hardware link has been detected. Either there is no signal
+ on the network cable, or the selected wireless access point cannot be detected.
+ Level 1 (LIVE_1) is reached when the network is detected, but is not yet connected.
+ For a wireless network, this shows that the requested SSID is present.
+ Level 2 (LINK_2) is reached when the hardware connection is established.
+ For a wired network connection, level 2 means that the cable is attached at both ends.
+ For a connection to a wireless access point, it shows that the security parameters
+ are properly configured. For an ad-hoc wireless connection, it means that there is
+ at least one other device connected on the ad-hoc network.
+ Level 3 (DHCP_3) is reached when an IP address has been obtained using DHCP.
+ Level 4 (DNS_4) is reached when the DNS server is reachable on the network.
+ Level 5 (WWW_5) is reached when global connectivity is demonstrated by properly loading the
+ current time from an NTP server.
+
+ @return a value among YNetwork.READINESS_DOWN, YNetwork.READINESS_EXISTS,
+ YNetwork.READINESS_LINKED, YNetwork.READINESS_LAN_OK and YNetwork.READINESS_WWW_OK corresponding to
+ the current established working mode of the network interface
+
+ On failure, throws an exception or returns YNetwork.READINESS_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YNetwork.READINESS_INVALID
+ return self._readiness
+
+ def get_macAddress(self):
+ """
+ Returns the MAC address of the network interface. The MAC address is also available on a sticker
+ on the module, in both numeric and barcode forms.
+
+ @return a string corresponding to the MAC address of the network interface
+
+ On failure, throws an exception or returns YNetwork.MACADDRESS_INVALID.
+ """
+ if self._cacheExpiration == datetime.datetime.fromtimestamp(0):
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YNetwork.MACADDRESS_INVALID
+ return self._macAddress
+
+ def get_ipAddress(self):
+ """
+ Returns the IP address currently in use by the device. The address may have been configured
+ statically, or provided by a DHCP server.
+
+ @return a string corresponding to the IP address currently in use by the device
+
+ On failure, throws an exception or returns YNetwork.IPADDRESS_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YNetwork.IPADDRESS_INVALID
+ return self._ipAddress
+
+ def get_subnetMask(self):
+ """
+ Returns the subnet mask currently used by the device.
+
+ @return a string corresponding to the subnet mask currently used by the device
+
+ On failure, throws an exception or returns YNetwork.SUBNETMASK_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YNetwork.SUBNETMASK_INVALID
+ return self._subnetMask
+
+ def get_router(self):
+ """
+ Returns the IP address of the router on the device subnet (default gateway).
+
+ @return a string corresponding to the IP address of the router on the device subnet (default gateway)
+
+ On failure, throws an exception or returns YNetwork.ROUTER_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YNetwork.ROUTER_INVALID
+ return self._router
+
+ def get_ipConfig(self):
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YNetwork.IPCONFIG_INVALID
+ return self._ipConfig
+
+ def set_ipConfig(self, newval):
+ rest_val = newval
+ return self._setAttr("ipConfig", rest_val)
+
+ def get_primaryDNS(self):
+ """
+ Returns the IP address of the primary name server to be used by the module.
+
+ @return a string corresponding to the IP address of the primary name server to be used by the module
+
+ On failure, throws an exception or returns YNetwork.PRIMARYDNS_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YNetwork.PRIMARYDNS_INVALID
+ return self._primaryDNS
+
+ def set_primaryDNS(self, newval):
+ """
+ Changes the IP address of the primary name server to be used by the module.
+ When using DHCP, if a value is specified, it overrides the value received from the DHCP server.
+ Remember to call the saveToFlash() method and then to reboot the module to apply this setting.
+
+ @param newval : a string corresponding to the IP address of the primary name server to be used by the module
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = newval
+ return self._setAttr("primaryDNS", rest_val)
+
+ def get_secondaryDNS(self):
+ """
+ Returns the IP address of the secondary name server to be used by the module.
+
+ @return a string corresponding to the IP address of the secondary name server to be used by the module
+
+ On failure, throws an exception or returns YNetwork.SECONDARYDNS_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YNetwork.SECONDARYDNS_INVALID
+ return self._secondaryDNS
+
+ def set_secondaryDNS(self, newval):
+ """
+ Changes the IP address of the secondary name server to be used by the module.
+ When using DHCP, if a value is specified, it overrides the value received from the DHCP server.
+ Remember to call the saveToFlash() method and then to reboot the module to apply this setting.
+
+ @param newval : a string corresponding to the IP address of the secondary name server to be used by the module
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = newval
+ return self._setAttr("secondaryDNS", rest_val)
+
+ def get_ntpServer(self):
+ """
+ Returns the IP address of the NTP server to be used by the device.
+
+ @return a string corresponding to the IP address of the NTP server to be used by the device
+
+ On failure, throws an exception or returns YNetwork.NTPSERVER_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YNetwork.NTPSERVER_INVALID
+ return self._ntpServer
+
+ def set_ntpServer(self, newval):
+ """
+ Changes the IP address of the NTP server to be used by the module.
+ Remember to call the saveToFlash() method and then to reboot the module to apply this setting.
+
+ @param newval : a string corresponding to the IP address of the NTP server to be used by the module
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = newval
+ return self._setAttr("ntpServer", rest_val)
+
+ def get_userPassword(self):
+ """
+ Returns a hash string if a password has been set for "user" user,
+ or an empty string otherwise.
+
+ @return a string corresponding to a hash string if a password has been set for "user" user,
+ or an empty string otherwise
+
+ On failure, throws an exception or returns YNetwork.USERPASSWORD_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YNetwork.USERPASSWORD_INVALID
+ return self._userPassword
+
+ def set_userPassword(self, newval):
+ """
+ Changes the password for the "user" user. This password becomes instantly required
+ to perform any use of the module. If the specified value is an
+ empty string, a password is not required anymore.
+ Remember to call the saveToFlash() method of the module if the
+ modification must be kept.
+
+ @param newval : a string corresponding to the password for the "user" user
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = newval
+ return self._setAttr("userPassword", rest_val)
+
+ def get_adminPassword(self):
+ """
+ Returns a hash string if a password has been set for user "admin",
+ or an empty string otherwise.
+
+ @return a string corresponding to a hash string if a password has been set for user "admin",
+ or an empty string otherwise
+
+ On failure, throws an exception or returns YNetwork.ADMINPASSWORD_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YNetwork.ADMINPASSWORD_INVALID
+ return self._adminPassword
+
+ def set_adminPassword(self, newval):
+ """
+ Changes the password for the "admin" user. This password becomes instantly required
+ to perform any change of the module state. If the specified value is an
+ empty string, a password is not required anymore.
+ Remember to call the saveToFlash() method of the module if the
+ modification must be kept.
+
+ @param newval : a string corresponding to the password for the "admin" user
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = newval
+ return self._setAttr("adminPassword", rest_val)
+
+ def get_httpPort(self):
+ """
+ Returns the HTML page to serve for the URL "/"" of the hub.
+
+ @return an integer corresponding to the HTML page to serve for the URL "/"" of the hub
+
+ On failure, throws an exception or returns YNetwork.HTTPPORT_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YNetwork.HTTPPORT_INVALID
+ return self._httpPort
+
+ def set_httpPort(self, newval):
+ """
+ Changes the default HTML page returned by the hub. If not value are set the hub return
+ "index.html" which is the web interface of the hub. It is possible de change this page
+ for file that has been uploaded on the hub.
+
+ @param newval : an integer corresponding to the default HTML page returned by the hub
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("httpPort", rest_val)
+
+ def get_defaultPage(self):
+ """
+ Returns the HTML page to serve for the URL "/"" of the hub.
+
+ @return a string corresponding to the HTML page to serve for the URL "/"" of the hub
+
+ On failure, throws an exception or returns YNetwork.DEFAULTPAGE_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YNetwork.DEFAULTPAGE_INVALID
+ return self._defaultPage
+
+ def set_defaultPage(self, newval):
+ """
+ Changes the default HTML page returned by the hub. If not value are set the hub return
+ "index.html" which is the web interface of the hub. It is possible de change this page
+ for file that has been uploaded on the hub.
+
+ @param newval : a string corresponding to the default HTML page returned by the hub
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = newval
+ return self._setAttr("defaultPage", rest_val)
+
+ def get_discoverable(self):
+ """
+ Returns the activation state of the multicast announce protocols to allow easy
+ discovery of the module in the network neighborhood (uPnP/Bonjour protocol).
+
+ @return either YNetwork.DISCOVERABLE_FALSE or YNetwork.DISCOVERABLE_TRUE, according to the
+ activation state of the multicast announce protocols to allow easy
+ discovery of the module in the network neighborhood (uPnP/Bonjour protocol)
+
+ On failure, throws an exception or returns YNetwork.DISCOVERABLE_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YNetwork.DISCOVERABLE_INVALID
+ return self._discoverable
+
+ def set_discoverable(self, newval):
+ """
+ Changes the activation state of the multicast announce protocols to allow easy
+ discovery of the module in the network neighborhood (uPnP/Bonjour protocol).
+
+ @param newval : either YNetwork.DISCOVERABLE_FALSE or YNetwork.DISCOVERABLE_TRUE, according to the
+ activation state of the multicast announce protocols to allow easy
+ discovery of the module in the network neighborhood (uPnP/Bonjour protocol)
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = "1" if newval > 0 else "0"
+ return self._setAttr("discoverable", rest_val)
+
+ def get_wwwWatchdogDelay(self):
+ """
+ Returns the allowed downtime of the WWW link (in seconds) before triggering an automated
+ reboot to try to recover Internet connectivity. A zero value disables automated reboot
+ in case of Internet connectivity loss.
+
+ @return an integer corresponding to the allowed downtime of the WWW link (in seconds) before
+ triggering an automated
+ reboot to try to recover Internet connectivity
+
+ On failure, throws an exception or returns YNetwork.WWWWATCHDOGDELAY_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YNetwork.WWWWATCHDOGDELAY_INVALID
+ return self._wwwWatchdogDelay
+
+ def set_wwwWatchdogDelay(self, newval):
+ """
+ Changes the allowed downtime of the WWW link (in seconds) before triggering an automated
+ reboot to try to recover Internet connectivity. A zero value disables automated reboot
+ in case of Internet connectivity loss. The smallest valid non-zero timeout is
+ 90 seconds.
+
+ @param newval : an integer corresponding to the allowed downtime of the WWW link (in seconds)
+ before triggering an automated
+ reboot to try to recover Internet connectivity
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("wwwWatchdogDelay", rest_val)
+
+ def get_callbackUrl(self):
+ """
+ Returns the callback URL to notify of significant state changes.
+
+ @return a string corresponding to the callback URL to notify of significant state changes
+
+ On failure, throws an exception or returns YNetwork.CALLBACKURL_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YNetwork.CALLBACKURL_INVALID
+ return self._callbackUrl
+
+ def set_callbackUrl(self, newval):
+ """
+ Changes the callback URL to notify significant state changes. Remember to call the
+ saveToFlash() method of the module if the modification must be kept.
+
+ @param newval : a string corresponding to the callback URL to notify significant state changes
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = newval
+ return self._setAttr("callbackUrl", rest_val)
+
+ def get_callbackMethod(self):
+ """
+ Returns the HTTP method used to notify callbacks for significant state changes.
+
+ @return a value among YNetwork.CALLBACKMETHOD_POST, YNetwork.CALLBACKMETHOD_GET and
+ YNetwork.CALLBACKMETHOD_PUT corresponding to the HTTP method used to notify callbacks for
+ significant state changes
+
+ On failure, throws an exception or returns YNetwork.CALLBACKMETHOD_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YNetwork.CALLBACKMETHOD_INVALID
+ return self._callbackMethod
+
+ def set_callbackMethod(self, newval):
+ """
+ Changes the HTTP method used to notify callbacks for significant state changes.
+
+ @param newval : a value among YNetwork.CALLBACKMETHOD_POST, YNetwork.CALLBACKMETHOD_GET and
+ YNetwork.CALLBACKMETHOD_PUT corresponding to the HTTP method used to notify callbacks for
+ significant state changes
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("callbackMethod", rest_val)
+
+ def get_callbackEncoding(self):
+ """
+ Returns the encoding standard to use for representing notification values.
+
+ @return a value among YNetwork.CALLBACKENCODING_FORM, YNetwork.CALLBACKENCODING_JSON,
+ YNetwork.CALLBACKENCODING_JSON_ARRAY, YNetwork.CALLBACKENCODING_CSV,
+ YNetwork.CALLBACKENCODING_YOCTO_API, YNetwork.CALLBACKENCODING_JSON_NUM,
+ YNetwork.CALLBACKENCODING_EMONCMS, YNetwork.CALLBACKENCODING_AZURE,
+ YNetwork.CALLBACKENCODING_INFLUXDB and YNetwork.CALLBACKENCODING_MQTT corresponding to the encoding
+ standard to use for representing notification values
+
+ On failure, throws an exception or returns YNetwork.CALLBACKENCODING_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YNetwork.CALLBACKENCODING_INVALID
+ return self._callbackEncoding
+
+ def set_callbackEncoding(self, newval):
+ """
+ Changes the encoding standard to use for representing notification values.
+
+ @param newval : a value among YNetwork.CALLBACKENCODING_FORM, YNetwork.CALLBACKENCODING_JSON,
+ YNetwork.CALLBACKENCODING_JSON_ARRAY, YNetwork.CALLBACKENCODING_CSV,
+ YNetwork.CALLBACKENCODING_YOCTO_API, YNetwork.CALLBACKENCODING_JSON_NUM,
+ YNetwork.CALLBACKENCODING_EMONCMS, YNetwork.CALLBACKENCODING_AZURE,
+ YNetwork.CALLBACKENCODING_INFLUXDB and YNetwork.CALLBACKENCODING_MQTT corresponding to the encoding
+ standard to use for representing notification values
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("callbackEncoding", rest_val)
+
+ def get_callbackCredentials(self):
+ """
+ Returns a hashed version of the notification callback credentials if set,
+ or an empty string otherwise.
+
+ @return a string corresponding to a hashed version of the notification callback credentials if set,
+ or an empty string otherwise
+
+ On failure, throws an exception or returns YNetwork.CALLBACKCREDENTIALS_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YNetwork.CALLBACKCREDENTIALS_INVALID
+ return self._callbackCredentials
+
+ def set_callbackCredentials(self, newval):
+ """
+ Changes the credentials required to connect to the callback address. The credentials
+ must be provided as returned by function get_callbackCredentials,
+ in the form username:hash. The method used to compute the hash varies according
+ to the the authentication scheme implemented by the callback, For Basic authentication,
+ the hash is the MD5 of the string username:password. For Digest authentication,
+ the hash is the MD5 of the string username:realm:password. For a simpler
+ way to configure callback credentials, use function callbackLogin instead.
+ Remember to call the saveToFlash() method of the module if the
+ modification must be kept.
+
+ @param newval : a string corresponding to the credentials required to connect to the callback address
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = newval
+ return self._setAttr("callbackCredentials", rest_val)
+
+ def callbackLogin(self, username, password):
+ """
+ Connects to the notification callback and saves the credentials required to
+ log into it. The password is not stored into the module, only a hashed
+ copy of the credentials are saved. Remember to call the
+ saveToFlash() method of the module if the modification must be kept.
+
+ @param username : username required to log to the callback
+ @param password : password required to log to the callback
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = username + ":" + password
+ return self._setAttr("callbackCredentials", rest_val)
+
+ def get_callbackInitialDelay(self):
+ """
+ Returns the initial waiting time before first callback notifications, in seconds.
+
+ @return an integer corresponding to the initial waiting time before first callback notifications, in seconds
+
+ On failure, throws an exception or returns YNetwork.CALLBACKINITIALDELAY_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YNetwork.CALLBACKINITIALDELAY_INVALID
+ return self._callbackInitialDelay
+
+ def set_callbackInitialDelay(self, newval):
+ """
+ Changes the initial waiting time before first callback notifications, in seconds.
+
+ @param newval : an integer corresponding to the initial waiting time before first callback
+ notifications, in seconds
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("callbackInitialDelay", rest_val)
+
+ def get_callbackMinDelay(self):
+ """
+ Returns the minimum waiting time between two callback notifications, in seconds.
+
+ @return an integer corresponding to the minimum waiting time between two callback notifications, in seconds
+
+ On failure, throws an exception or returns YNetwork.CALLBACKMINDELAY_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YNetwork.CALLBACKMINDELAY_INVALID
+ return self._callbackMinDelay
+
+ def set_callbackMinDelay(self, newval):
+ """
+ Changes the minimum waiting time between two callback notifications, in seconds.
+
+ @param newval : an integer corresponding to the minimum waiting time between two callback
+ notifications, in seconds
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("callbackMinDelay", rest_val)
+
+ def get_callbackMaxDelay(self):
+ """
+ Returns the maximum waiting time between two callback notifications, in seconds.
+
+ @return an integer corresponding to the maximum waiting time between two callback notifications, in seconds
+
+ On failure, throws an exception or returns YNetwork.CALLBACKMAXDELAY_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YNetwork.CALLBACKMAXDELAY_INVALID
+ return self._callbackMaxDelay
+
+ def set_callbackMaxDelay(self, newval):
+ """
+ Changes the maximum waiting time between two callback notifications, in seconds.
+
+ @param newval : an integer corresponding to the maximum waiting time between two callback
+ notifications, in seconds
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("callbackMaxDelay", rest_val)
+
+ def get_poeCurrent(self):
+ """
+ Returns the current consumed by the module from Power-over-Ethernet (PoE), in milli-amps.
+ The current consumption is measured after converting PoE source to 5 Volt, and should
+ never exceed 1800 mA.
+
+ @return an integer corresponding to the current consumed by the module from Power-over-Ethernet
+ (PoE), in milli-amps
+
+ On failure, throws an exception or returns YNetwork.POECURRENT_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YNetwork.POECURRENT_INVALID
+ return self._poeCurrent
+
+ @staticmethod
+ def FindNetwork(func):
+ """
+ Retrieves a network interface for a given identifier.
+ The identifier can be specified using several formats:
+ <ul>
+ <li>FunctionLogicalName</li>
+ <li>ModuleSerialNumber.FunctionIdentifier</li>
+ <li>ModuleSerialNumber.FunctionLogicalName</li>
+ <li>ModuleLogicalName.FunctionIdentifier</li>
+ <li>ModuleLogicalName.FunctionLogicalName</li>
+ </ul>
+
+ This function does not require that the network interface is online at the time
+ it is invoked. The returned object is nevertheless valid.
+ Use the method YNetwork.isOnline() to test if the network interface is
+ indeed online at a given time. In case of ambiguity when looking for
+ a network interface by logical name, no error is notified: the first instance
+ found is returned. The search is performed first by hardware name,
+ then by logical name.
+
+ @param func : a string that uniquely characterizes the network interface
+
+ @return a YNetwork object allowing you to drive the network interface.
+ """
+ # obj
+ obj = YFunction._FindFromCache("Network", func)
+ if obj is None:
+ obj = YNetwork(func)
+ YFunction._AddToCache("Network", func, obj)
+ return obj
+
+ def useDHCP(self, fallbackIpAddr, fallbackSubnetMaskLen, fallbackRouter):
+ """
+ Changes the configuration of the network interface to enable the use of an
+ IP address received from a DHCP server. Until an address is received from a DHCP
+ server, the module uses the IP parameters specified to this function.
+ Remember to call the saveToFlash() method and then to reboot the module to apply this setting.
+
+ @param fallbackIpAddr : fallback IP address, to be used when no DHCP reply is received
+ @param fallbackSubnetMaskLen : fallback subnet mask length when no DHCP reply is received, as an
+ integer (eg. 24 means 255.255.255.0)
+ @param fallbackRouter : fallback router IP address, to be used when no DHCP reply is received
+
+ @return YAPI.SUCCESS when the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.set_ipConfig("DHCP:" + fallbackIpAddr + "/" + str(int(fallbackSubnetMaskLen)) + "/" + fallbackRouter)
+
+ def useStaticIP(self, ipAddress, subnetMaskLen, router):
+ """
+ Changes the configuration of the network interface to use a static IP address.
+ Remember to call the saveToFlash() method and then to reboot the module to apply this setting.
+
+ @param ipAddress : device IP address
+ @param subnetMaskLen : subnet mask length, as an integer (eg. 24 means 255.255.255.0)
+ @param router : router IP address (default gateway)
+
+ @return YAPI.SUCCESS when the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.set_ipConfig("STATIC:" + ipAddress + "/" + str(int(subnetMaskLen)) + "/" + router)
+
+ def ping(self, host):
+ """
+ Pings host to test the network connectivity. Sends four ICMP ECHO_REQUEST requests from the
+ module to the target host. This method returns a string with the result of the
+ 4 ICMP ECHO_REQUEST requests.
+
+ @param host : the hostname or the IP address of the target
+
+ @return a string with the result of the ping.
+ """
+ # content
+ # // may throw an exception
+ content = self._download("ping.txt?host=" + host)
+ return YByte2String(content)
+
+ def triggerCallback(self):
+ """
+ Trigger an HTTP callback quickly. This function can even be called within
+ an HTTP callback, in which case the next callback will be triggered 5 seconds
+ after the end of the current callback, regardless if the minimum time between
+ callbacks configured in the device.
+
+ @return YAPI.SUCCESS when the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ # // Rewrite the callback method to trigger the callback
+ # // may throw an exception
+ return self.set_callbackMethod(self.get_callbackMethod())
+
+ def nextNetwork(self):
+ """
+ Continues the enumeration of network interfaces started using yFirstNetwork().
+
+ @return a pointer to a YNetwork object, corresponding to
+ a network interface currently online, or a None pointer
+ if there are no more network interfaces to enumerate.
+ """
+ hwidRef = YRefParam()
+ if YAPI.YISERR(self._nextFunction(hwidRef)):
+ return None
+ if hwidRef.value == "":
+ return None
+ return YNetwork.FindNetwork(hwidRef.value)
+
+#--- (end of YNetwork implementation)
+
+#--- (Network functions)
+
+ @staticmethod
+ def FirstNetwork():
+ """
+ Starts the enumeration of network interfaces currently accessible.
+ Use the method YNetwork.nextNetwork() to iterate on
+ next network interfaces.
+
+ @return a pointer to a YNetwork object, corresponding to
+ the first network interface currently online, or a None pointer
+ if there are none.
+ """
+ devRef = YRefParam()
+ neededsizeRef = YRefParam()
+ serialRef = YRefParam()
+ funcIdRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+ errmsgRef = YRefParam()
+ size = YAPI.C_INTSIZE
+ #noinspection PyTypeChecker,PyCallingNonCallable
+ p = (ctypes.c_int * 1)()
+ err = YAPI.apiGetFunctionsByClass("Network", 0, p, size, neededsizeRef, errmsgRef)
+
+ if YAPI.YISERR(err) or not neededsizeRef.value:
+ return None
+
+ if YAPI.YISERR(
+ YAPI.yapiGetFunctionInfo(p[0], devRef, serialRef, funcIdRef, funcNameRef, funcValRef, errmsgRef)):
+ return None
+
+ return YNetwork.FindNetwork(serialRef.value + "." + funcIdRef.value)
+
+#--- (end of Network functions)
diff --git a/yoctoLib.python.26380/Sources/yocto_oscontrol.py b/yoctoLib.python.26380/Sources/yocto_oscontrol.py
new file mode 100644
index 0000000..f162654
--- /dev/null
+++ b/yoctoLib.python.26380/Sources/yocto_oscontrol.py
@@ -0,0 +1,192 @@
+#*********************************************************************
+#*
+#* $Id: yocto_oscontrol.py 23243 2016-02-23 14:13:12Z seb $
+#*
+#* Implements yFindOsControl(), the high-level API for OsControl functions
+#*
+#* - - - - - - - - - License information: - - - - - - - - -
+#*
+#* Copyright (C) 2011 and beyond by Yoctopuce Sarl, Switzerland.
+#*
+#* Yoctopuce Sarl (hereafter Licensor) grants to you a perpetual
+#* non-exclusive license to use, modify, copy and integrate this
+#* file into your software for the sole purpose of interfacing
+#* with Yoctopuce products.
+#*
+#* You may reproduce and distribute copies of this file in
+#* source or object form, as long as the sole purpose of this
+#* code is to interface with Yoctopuce products. You must retain
+#* this notice in the distributed source file.
+#*
+#* You should refer to Yoctopuce General Terms and Conditions
+#* for additional information regarding your rights and
+#* obligations.
+#*
+#* THE SOFTWARE AND DOCUMENTATION ARE PROVIDED 'AS IS' WITHOUT
+#* WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
+#* WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS
+#* FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO
+#* EVENT SHALL LICENSOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
+#* INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA,
+#* COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR
+#* SERVICES, ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT
+#* LIMITED TO ANY DEFENSE THEREOF), ANY CLAIMS FOR INDEMNITY OR
+#* CONTRIBUTION, OR OTHER SIMILAR COSTS, WHETHER ASSERTED ON THE
+#* BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE), BREACH OF
+#* WARRANTY, OR OTHERWISE.
+#*
+#*********************************************************************/
+
+
+__docformat__ = 'restructuredtext en'
+from yocto_api import *
+
+
+#--- (YOsControl class start)
+#noinspection PyProtectedMember
+class YOsControl(YFunction):
+ """
+ The OScontrol object allows some control over the operating system running a VirtualHub.
+ OsControl is available on the VirtualHub software only. This feature must be activated at the VirtualHub
+ start up with -o option.
+
+ """
+#--- (end of YOsControl class start)
+ #--- (YOsControl return codes)
+ #--- (end of YOsControl return codes)
+ #--- (YOsControl dlldef)
+ #--- (end of YOsControl dlldef)
+ #--- (YOsControl definitions)
+ SHUTDOWNCOUNTDOWN_INVALID = YAPI.INVALID_UINT
+ #--- (end of YOsControl definitions)
+
+ def __init__(self, func):
+ super(YOsControl, self).__init__(func)
+ self._className = 'OsControl'
+ #--- (YOsControl attributes)
+ self._callback = None
+ self._shutdownCountdown = YOsControl.SHUTDOWNCOUNTDOWN_INVALID
+ #--- (end of YOsControl attributes)
+
+ #--- (YOsControl implementation)
+ def _parseAttr(self, member):
+ if member.name == "shutdownCountdown":
+ self._shutdownCountdown = member.ivalue
+ return 1
+ super(YOsControl, self)._parseAttr(member)
+
+ def get_shutdownCountdown(self):
+ """
+ Returns the remaining number of seconds before the OS shutdown, or zero when no
+ shutdown has been scheduled.
+
+ @return an integer corresponding to the remaining number of seconds before the OS shutdown, or zero when no
+ shutdown has been scheduled
+
+ On failure, throws an exception or returns YOsControl.SHUTDOWNCOUNTDOWN_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YOsControl.SHUTDOWNCOUNTDOWN_INVALID
+ return self._shutdownCountdown
+
+ def set_shutdownCountdown(self, newval):
+ rest_val = str(newval)
+ return self._setAttr("shutdownCountdown", rest_val)
+
+ @staticmethod
+ def FindOsControl(func):
+ """
+ Retrieves OS control for a given identifier.
+ The identifier can be specified using several formats:
+ <ul>
+ <li>FunctionLogicalName</li>
+ <li>ModuleSerialNumber.FunctionIdentifier</li>
+ <li>ModuleSerialNumber.FunctionLogicalName</li>
+ <li>ModuleLogicalName.FunctionIdentifier</li>
+ <li>ModuleLogicalName.FunctionLogicalName</li>
+ </ul>
+
+ This function does not require that the OS control is online at the time
+ it is invoked. The returned object is nevertheless valid.
+ Use the method YOsControl.isOnline() to test if the OS control is
+ indeed online at a given time. In case of ambiguity when looking for
+ OS control by logical name, no error is notified: the first instance
+ found is returned. The search is performed first by hardware name,
+ then by logical name.
+
+ @param func : a string that uniquely characterizes the OS control
+
+ @return a YOsControl object allowing you to drive the OS control.
+ """
+ # obj
+ obj = YFunction._FindFromCache("OsControl", func)
+ if obj is None:
+ obj = YOsControl(func)
+ YFunction._AddToCache("OsControl", func, obj)
+ return obj
+
+ def shutdown(self, secBeforeShutDown):
+ """
+ Schedules an OS shutdown after a given number of seconds.
+
+ @param secBeforeShutDown : number of seconds before shutdown
+
+ @return YAPI.SUCCESS when the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.set_shutdownCountdown(secBeforeShutDown)
+
+ def nextOsControl(self):
+ """
+ Continues the enumeration of OS control started using yFirstOsControl().
+
+ @return a pointer to a YOsControl object, corresponding to
+ OS control currently online, or a None pointer
+ if there are no more OS control to enumerate.
+ """
+ hwidRef = YRefParam()
+ if YAPI.YISERR(self._nextFunction(hwidRef)):
+ return None
+ if hwidRef.value == "":
+ return None
+ return YOsControl.FindOsControl(hwidRef.value)
+
+#--- (end of YOsControl implementation)
+
+#--- (OsControl functions)
+
+ @staticmethod
+ def FirstOsControl():
+ """
+ Starts the enumeration of OS control currently accessible.
+ Use the method YOsControl.nextOsControl() to iterate on
+ next OS control.
+
+ @return a pointer to a YOsControl object, corresponding to
+ the first OS control currently online, or a None pointer
+ if there are none.
+ """
+ devRef = YRefParam()
+ neededsizeRef = YRefParam()
+ serialRef = YRefParam()
+ funcIdRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+ errmsgRef = YRefParam()
+ size = YAPI.C_INTSIZE
+ #noinspection PyTypeChecker,PyCallingNonCallable
+ p = (ctypes.c_int * 1)()
+ err = YAPI.apiGetFunctionsByClass("OsControl", 0, p, size, neededsizeRef, errmsgRef)
+
+ if YAPI.YISERR(err) or not neededsizeRef.value:
+ return None
+
+ if YAPI.YISERR(
+ YAPI.yapiGetFunctionInfo(p[0], devRef, serialRef, funcIdRef, funcNameRef, funcValRef, errmsgRef)):
+ return None
+
+ return YOsControl.FindOsControl(serialRef.value + "." + funcIdRef.value)
+
+#--- (end of OsControl functions)
diff --git a/yoctoLib.python.26380/Sources/yocto_power.py b/yoctoLib.python.26380/Sources/yocto_power.py
new file mode 100644
index 0000000..f8c5db1
--- /dev/null
+++ b/yoctoLib.python.26380/Sources/yocto_power.py
@@ -0,0 +1,229 @@
+#*********************************************************************
+#*
+#* $Id: yocto_power.py 23243 2016-02-23 14:13:12Z seb $
+#*
+#* Implements yFindPower(), the high-level API for Power functions
+#*
+#* - - - - - - - - - License information: - - - - - - - - -
+#*
+#* Copyright (C) 2011 and beyond by Yoctopuce Sarl, Switzerland.
+#*
+#* Yoctopuce Sarl (hereafter Licensor) grants to you a perpetual
+#* non-exclusive license to use, modify, copy and integrate this
+#* file into your software for the sole purpose of interfacing
+#* with Yoctopuce products.
+#*
+#* You may reproduce and distribute copies of this file in
+#* source or object form, as long as the sole purpose of this
+#* code is to interface with Yoctopuce products. You must retain
+#* this notice in the distributed source file.
+#*
+#* You should refer to Yoctopuce General Terms and Conditions
+#* for additional information regarding your rights and
+#* obligations.
+#*
+#* THE SOFTWARE AND DOCUMENTATION ARE PROVIDED 'AS IS' WITHOUT
+#* WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
+#* WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS
+#* FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO
+#* EVENT SHALL LICENSOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
+#* INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA,
+#* COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR
+#* SERVICES, ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT
+#* LIMITED TO ANY DEFENSE THEREOF), ANY CLAIMS FOR INDEMNITY OR
+#* CONTRIBUTION, OR OTHER SIMILAR COSTS, WHETHER ASSERTED ON THE
+#* BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE), BREACH OF
+#* WARRANTY, OR OTHERWISE.
+#*
+#*********************************************************************/
+
+
+__docformat__ = 'restructuredtext en'
+from yocto_api import *
+
+
+#--- (YPower class start)
+#noinspection PyProtectedMember
+class YPower(YSensor):
+ """
+ The Yoctopuce class YPower allows you to read and configure Yoctopuce power
+ sensors. It inherits from YSensor class the core functions to read measurements,
+ register callback functions, access to the autonomous datalogger.
+ This class adds the ability to access the energy counter and the power factor.
+
+ """
+#--- (end of YPower class start)
+ #--- (YPower return codes)
+ #--- (end of YPower return codes)
+ #--- (YPower dlldef)
+ #--- (end of YPower dlldef)
+ #--- (YPower definitions)
+ COSPHI_INVALID = YAPI.INVALID_DOUBLE
+ METER_INVALID = YAPI.INVALID_DOUBLE
+ METERTIMER_INVALID = YAPI.INVALID_UINT
+ #--- (end of YPower definitions)
+
+ def __init__(self, func):
+ super(YPower, self).__init__(func)
+ self._className = 'Power'
+ #--- (YPower attributes)
+ self._callback = None
+ self._cosPhi = YPower.COSPHI_INVALID
+ self._meter = YPower.METER_INVALID
+ self._meterTimer = YPower.METERTIMER_INVALID
+ #--- (end of YPower attributes)
+
+ #--- (YPower implementation)
+ def _parseAttr(self, member):
+ if member.name == "cosPhi":
+ self._cosPhi = round(member.ivalue * 1000.0 / 65536.0) / 1000.0
+ return 1
+ if member.name == "meter":
+ self._meter = round(member.ivalue * 1000.0 / 65536.0) / 1000.0
+ return 1
+ if member.name == "meterTimer":
+ self._meterTimer = member.ivalue
+ return 1
+ super(YPower, self)._parseAttr(member)
+
+ def get_cosPhi(self):
+ """
+ Returns the power factor (the ratio between the real power consumed,
+ measured in W, and the apparent power provided, measured in VA).
+
+ @return a floating point number corresponding to the power factor (the ratio between the real power consumed,
+ measured in W, and the apparent power provided, measured in VA)
+
+ On failure, throws an exception or returns YPower.COSPHI_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YPower.COSPHI_INVALID
+ return self._cosPhi
+
+ def set_meter(self, newval):
+ rest_val = str(int(round(newval * 65536.0, 1)))
+ return self._setAttr("meter", rest_val)
+
+ def get_meter(self):
+ """
+ Returns the energy counter, maintained by the wattmeter by integrating the power consumption over time.
+ Note that this counter is reset at each start of the device.
+
+ @return a floating point number corresponding to the energy counter, maintained by the wattmeter by
+ integrating the power consumption over time
+
+ On failure, throws an exception or returns YPower.METER_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YPower.METER_INVALID
+ return self._meter
+
+ def get_meterTimer(self):
+ """
+ Returns the elapsed time since last energy counter reset, in seconds.
+
+ @return an integer corresponding to the elapsed time since last energy counter reset, in seconds
+
+ On failure, throws an exception or returns YPower.METERTIMER_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YPower.METERTIMER_INVALID
+ return self._meterTimer
+
+ @staticmethod
+ def FindPower(func):
+ """
+ Retrieves a electrical power sensor for a given identifier.
+ The identifier can be specified using several formats:
+ <ul>
+ <li>FunctionLogicalName</li>
+ <li>ModuleSerialNumber.FunctionIdentifier</li>
+ <li>ModuleSerialNumber.FunctionLogicalName</li>
+ <li>ModuleLogicalName.FunctionIdentifier</li>
+ <li>ModuleLogicalName.FunctionLogicalName</li>
+ </ul>
+
+ This function does not require that the electrical power sensor is online at the time
+ it is invoked. The returned object is nevertheless valid.
+ Use the method YPower.isOnline() to test if the electrical power sensor is
+ indeed online at a given time. In case of ambiguity when looking for
+ a electrical power sensor by logical name, no error is notified: the first instance
+ found is returned. The search is performed first by hardware name,
+ then by logical name.
+
+ @param func : a string that uniquely characterizes the electrical power sensor
+
+ @return a YPower object allowing you to drive the electrical power sensor.
+ """
+ # obj
+ obj = YFunction._FindFromCache("Power", func)
+ if obj is None:
+ obj = YPower(func)
+ YFunction._AddToCache("Power", func, obj)
+ return obj
+
+ def reset(self):
+ """
+ Resets the energy counter.
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.set_meter(0)
+
+ def nextPower(self):
+ """
+ Continues the enumeration of electrical power sensors started using yFirstPower().
+
+ @return a pointer to a YPower object, corresponding to
+ a electrical power sensor currently online, or a None pointer
+ if there are no more electrical power sensors to enumerate.
+ """
+ hwidRef = YRefParam()
+ if YAPI.YISERR(self._nextFunction(hwidRef)):
+ return None
+ if hwidRef.value == "":
+ return None
+ return YPower.FindPower(hwidRef.value)
+
+#--- (end of YPower implementation)
+
+#--- (Power functions)
+
+ @staticmethod
+ def FirstPower():
+ """
+ Starts the enumeration of electrical power sensors currently accessible.
+ Use the method YPower.nextPower() to iterate on
+ next electrical power sensors.
+
+ @return a pointer to a YPower object, corresponding to
+ the first electrical power sensor currently online, or a None pointer
+ if there are none.
+ """
+ devRef = YRefParam()
+ neededsizeRef = YRefParam()
+ serialRef = YRefParam()
+ funcIdRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+ errmsgRef = YRefParam()
+ size = YAPI.C_INTSIZE
+ #noinspection PyTypeChecker,PyCallingNonCallable
+ p = (ctypes.c_int * 1)()
+ err = YAPI.apiGetFunctionsByClass("Power", 0, p, size, neededsizeRef, errmsgRef)
+
+ if YAPI.YISERR(err) or not neededsizeRef.value:
+ return None
+
+ if YAPI.YISERR(
+ YAPI.yapiGetFunctionInfo(p[0], devRef, serialRef, funcIdRef, funcNameRef, funcValRef, errmsgRef)):
+ return None
+
+ return YPower.FindPower(serialRef.value + "." + funcIdRef.value)
+
+#--- (end of Power functions)
diff --git a/yoctoLib.python.26380/Sources/yocto_poweroutput.py b/yoctoLib.python.26380/Sources/yocto_poweroutput.py
new file mode 100644
index 0000000..a57ba2b
--- /dev/null
+++ b/yoctoLib.python.26380/Sources/yocto_poweroutput.py
@@ -0,0 +1,196 @@
+#*********************************************************************
+#*
+#* $Id: yocto_poweroutput.py 23243 2016-02-23 14:13:12Z seb $
+#*
+#* Implements yFindPowerOutput(), the high-level API for PowerOutput functions
+#*
+#* - - - - - - - - - License information: - - - - - - - - -
+#*
+#* Copyright (C) 2011 and beyond by Yoctopuce Sarl, Switzerland.
+#*
+#* Yoctopuce Sarl (hereafter Licensor) grants to you a perpetual
+#* non-exclusive license to use, modify, copy and integrate this
+#* file into your software for the sole purpose of interfacing
+#* with Yoctopuce products.
+#*
+#* You may reproduce and distribute copies of this file in
+#* source or object form, as long as the sole purpose of this
+#* code is to interface with Yoctopuce products. You must retain
+#* this notice in the distributed source file.
+#*
+#* You should refer to Yoctopuce General Terms and Conditions
+#* for additional information regarding your rights and
+#* obligations.
+#*
+#* THE SOFTWARE AND DOCUMENTATION ARE PROVIDED 'AS IS' WITHOUT
+#* WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
+#* WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS
+#* FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO
+#* EVENT SHALL LICENSOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
+#* INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA,
+#* COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR
+#* SERVICES, ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT
+#* LIMITED TO ANY DEFENSE THEREOF), ANY CLAIMS FOR INDEMNITY OR
+#* CONTRIBUTION, OR OTHER SIMILAR COSTS, WHETHER ASSERTED ON THE
+#* BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE), BREACH OF
+#* WARRANTY, OR OTHERWISE.
+#*
+#*********************************************************************/
+
+
+__docformat__ = 'restructuredtext en'
+from yocto_api import *
+
+
+#--- (YPowerOutput class start)
+#noinspection PyProtectedMember
+class YPowerOutput(YFunction):
+ """
+ Yoctopuce application programming interface allows you to control
+ the power ouput featured on some devices such as the Yocto-Serial.
+
+ """
+#--- (end of YPowerOutput class start)
+ #--- (YPowerOutput return codes)
+ #--- (end of YPowerOutput return codes)
+ #--- (YPowerOutput dlldef)
+ #--- (end of YPowerOutput dlldef)
+ #--- (YPowerOutput definitions)
+ VOLTAGE_OFF = 0
+ VOLTAGE_OUT3V3 = 1
+ VOLTAGE_OUT5V = 2
+ VOLTAGE_INVALID = -1
+ #--- (end of YPowerOutput definitions)
+
+ def __init__(self, func):
+ super(YPowerOutput, self).__init__(func)
+ self._className = 'PowerOutput'
+ #--- (YPowerOutput attributes)
+ self._callback = None
+ self._voltage = YPowerOutput.VOLTAGE_INVALID
+ #--- (end of YPowerOutput attributes)
+
+ #--- (YPowerOutput implementation)
+ def _parseAttr(self, member):
+ if member.name == "voltage":
+ self._voltage = member.ivalue
+ return 1
+ super(YPowerOutput, self)._parseAttr(member)
+
+ def get_voltage(self):
+ """
+ Returns the voltage on the power ouput featured by
+ the module.
+
+ @return a value among YPowerOutput.VOLTAGE_OFF, YPowerOutput.VOLTAGE_OUT3V3 and
+ YPowerOutput.VOLTAGE_OUT5V corresponding to the voltage on the power ouput featured by
+ the module
+
+ On failure, throws an exception or returns YPowerOutput.VOLTAGE_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YPowerOutput.VOLTAGE_INVALID
+ return self._voltage
+
+ def set_voltage(self, newval):
+ """
+ Changes the voltage on the power output provided by the
+ module. Remember to call the saveToFlash() method of the module if the
+ modification must be kept.
+
+ @param newval : a value among YPowerOutput.VOLTAGE_OFF, YPowerOutput.VOLTAGE_OUT3V3 and
+ YPowerOutput.VOLTAGE_OUT5V corresponding to the voltage on the power output provided by the
+ module
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("voltage", rest_val)
+
+ @staticmethod
+ def FindPowerOutput(func):
+ """
+ Retrieves a dual power ouput control for a given identifier.
+ The identifier can be specified using several formats:
+ <ul>
+ <li>FunctionLogicalName</li>
+ <li>ModuleSerialNumber.FunctionIdentifier</li>
+ <li>ModuleSerialNumber.FunctionLogicalName</li>
+ <li>ModuleLogicalName.FunctionIdentifier</li>
+ <li>ModuleLogicalName.FunctionLogicalName</li>
+ </ul>
+
+ This function does not require that the power ouput control is online at the time
+ it is invoked. The returned object is nevertheless valid.
+ Use the method YPowerOutput.isOnline() to test if the power ouput control is
+ indeed online at a given time. In case of ambiguity when looking for
+ a dual power ouput control by logical name, no error is notified: the first instance
+ found is returned. The search is performed first by hardware name,
+ then by logical name.
+
+ @param func : a string that uniquely characterizes the power ouput control
+
+ @return a YPowerOutput object allowing you to drive the power ouput control.
+ """
+ # obj
+ obj = YFunction._FindFromCache("PowerOutput", func)
+ if obj is None:
+ obj = YPowerOutput(func)
+ YFunction._AddToCache("PowerOutput", func, obj)
+ return obj
+
+ def nextPowerOutput(self):
+ """
+ Continues the enumeration of dual power ouput controls started using yFirstPowerOutput().
+
+ @return a pointer to a YPowerOutput object, corresponding to
+ a dual power ouput control currently online, or a None pointer
+ if there are no more dual power ouput controls to enumerate.
+ """
+ hwidRef = YRefParam()
+ if YAPI.YISERR(self._nextFunction(hwidRef)):
+ return None
+ if hwidRef.value == "":
+ return None
+ return YPowerOutput.FindPowerOutput(hwidRef.value)
+
+#--- (end of YPowerOutput implementation)
+
+#--- (PowerOutput functions)
+
+ @staticmethod
+ def FirstPowerOutput():
+ """
+ Starts the enumeration of dual power ouput controls currently accessible.
+ Use the method YPowerOutput.nextPowerOutput() to iterate on
+ next dual power ouput controls.
+
+ @return a pointer to a YPowerOutput object, corresponding to
+ the first dual power ouput control currently online, or a None pointer
+ if there are none.
+ """
+ devRef = YRefParam()
+ neededsizeRef = YRefParam()
+ serialRef = YRefParam()
+ funcIdRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+ errmsgRef = YRefParam()
+ size = YAPI.C_INTSIZE
+ #noinspection PyTypeChecker,PyCallingNonCallable
+ p = (ctypes.c_int * 1)()
+ err = YAPI.apiGetFunctionsByClass("PowerOutput", 0, p, size, neededsizeRef, errmsgRef)
+
+ if YAPI.YISERR(err) or not neededsizeRef.value:
+ return None
+
+ if YAPI.YISERR(
+ YAPI.yapiGetFunctionInfo(p[0], devRef, serialRef, funcIdRef, funcNameRef, funcValRef, errmsgRef)):
+ return None
+
+ return YPowerOutput.FindPowerOutput(serialRef.value + "." + funcIdRef.value)
+
+#--- (end of PowerOutput functions)
diff --git a/yoctoLib.python.26380/Sources/yocto_pressure.py b/yoctoLib.python.26380/Sources/yocto_pressure.py
new file mode 100644
index 0000000..f51bb37
--- /dev/null
+++ b/yoctoLib.python.26380/Sources/yocto_pressure.py
@@ -0,0 +1,156 @@
+#*********************************************************************
+#*
+#* $Id: yocto_pressure.py 23243 2016-02-23 14:13:12Z seb $
+#*
+#* Implements yFindPressure(), the high-level API for Pressure functions
+#*
+#* - - - - - - - - - License information: - - - - - - - - -
+#*
+#* Copyright (C) 2011 and beyond by Yoctopuce Sarl, Switzerland.
+#*
+#* Yoctopuce Sarl (hereafter Licensor) grants to you a perpetual
+#* non-exclusive license to use, modify, copy and integrate this
+#* file into your software for the sole purpose of interfacing
+#* with Yoctopuce products.
+#*
+#* You may reproduce and distribute copies of this file in
+#* source or object form, as long as the sole purpose of this
+#* code is to interface with Yoctopuce products. You must retain
+#* this notice in the distributed source file.
+#*
+#* You should refer to Yoctopuce General Terms and Conditions
+#* for additional information regarding your rights and
+#* obligations.
+#*
+#* THE SOFTWARE AND DOCUMENTATION ARE PROVIDED 'AS IS' WITHOUT
+#* WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
+#* WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS
+#* FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO
+#* EVENT SHALL LICENSOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
+#* INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA,
+#* COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR
+#* SERVICES, ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT
+#* LIMITED TO ANY DEFENSE THEREOF), ANY CLAIMS FOR INDEMNITY OR
+#* CONTRIBUTION, OR OTHER SIMILAR COSTS, WHETHER ASSERTED ON THE
+#* BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE), BREACH OF
+#* WARRANTY, OR OTHERWISE.
+#*
+#*********************************************************************/
+
+
+__docformat__ = 'restructuredtext en'
+from yocto_api import *
+
+
+#--- (YPressure class start)
+#noinspection PyProtectedMember
+class YPressure(YSensor):
+ """
+ The Yoctopuce class YPressure allows you to read and configure Yoctopuce pressure
+ sensors. It inherits from YSensor class the core functions to read measurements,
+ register callback functions, access to the autonomous datalogger.
+
+ """
+#--- (end of YPressure class start)
+ #--- (YPressure return codes)
+ #--- (end of YPressure return codes)
+ #--- (YPressure dlldef)
+ #--- (end of YPressure dlldef)
+ #--- (YPressure definitions)
+ #--- (end of YPressure definitions)
+
+ def __init__(self, func):
+ super(YPressure, self).__init__(func)
+ self._className = 'Pressure'
+ #--- (YPressure attributes)
+ self._callback = None
+ #--- (end of YPressure attributes)
+
+ #--- (YPressure implementation)
+ def _parseAttr(self, member):
+ super(YPressure, self)._parseAttr(member)
+
+ @staticmethod
+ def FindPressure(func):
+ """
+ Retrieves a pressure sensor for a given identifier.
+ The identifier can be specified using several formats:
+ <ul>
+ <li>FunctionLogicalName</li>
+ <li>ModuleSerialNumber.FunctionIdentifier</li>
+ <li>ModuleSerialNumber.FunctionLogicalName</li>
+ <li>ModuleLogicalName.FunctionIdentifier</li>
+ <li>ModuleLogicalName.FunctionLogicalName</li>
+ </ul>
+
+ This function does not require that the pressure sensor is online at the time
+ it is invoked. The returned object is nevertheless valid.
+ Use the method YPressure.isOnline() to test if the pressure sensor is
+ indeed online at a given time. In case of ambiguity when looking for
+ a pressure sensor by logical name, no error is notified: the first instance
+ found is returned. The search is performed first by hardware name,
+ then by logical name.
+
+ @param func : a string that uniquely characterizes the pressure sensor
+
+ @return a YPressure object allowing you to drive the pressure sensor.
+ """
+ # obj
+ obj = YFunction._FindFromCache("Pressure", func)
+ if obj is None:
+ obj = YPressure(func)
+ YFunction._AddToCache("Pressure", func, obj)
+ return obj
+
+ def nextPressure(self):
+ """
+ Continues the enumeration of pressure sensors started using yFirstPressure().
+
+ @return a pointer to a YPressure object, corresponding to
+ a pressure sensor currently online, or a None pointer
+ if there are no more pressure sensors to enumerate.
+ """
+ hwidRef = YRefParam()
+ if YAPI.YISERR(self._nextFunction(hwidRef)):
+ return None
+ if hwidRef.value == "":
+ return None
+ return YPressure.FindPressure(hwidRef.value)
+
+#--- (end of YPressure implementation)
+
+#--- (Pressure functions)
+
+ @staticmethod
+ def FirstPressure():
+ """
+ Starts the enumeration of pressure sensors currently accessible.
+ Use the method YPressure.nextPressure() to iterate on
+ next pressure sensors.
+
+ @return a pointer to a YPressure object, corresponding to
+ the first pressure sensor currently online, or a None pointer
+ if there are none.
+ """
+ devRef = YRefParam()
+ neededsizeRef = YRefParam()
+ serialRef = YRefParam()
+ funcIdRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+ errmsgRef = YRefParam()
+ size = YAPI.C_INTSIZE
+ #noinspection PyTypeChecker,PyCallingNonCallable
+ p = (ctypes.c_int * 1)()
+ err = YAPI.apiGetFunctionsByClass("Pressure", 0, p, size, neededsizeRef, errmsgRef)
+
+ if YAPI.YISERR(err) or not neededsizeRef.value:
+ return None
+
+ if YAPI.YISERR(
+ YAPI.yapiGetFunctionInfo(p[0], devRef, serialRef, funcIdRef, funcNameRef, funcValRef, errmsgRef)):
+ return None
+
+ return YPressure.FindPressure(serialRef.value + "." + funcIdRef.value)
+
+#--- (end of Pressure functions)
diff --git a/yoctoLib.python.26380/Sources/yocto_proximity.py b/yoctoLib.python.26380/Sources/yocto_proximity.py
new file mode 100644
index 0000000..15c13ef
--- /dev/null
+++ b/yoctoLib.python.26380/Sources/yocto_proximity.py
@@ -0,0 +1,312 @@
+#*********************************************************************
+#*
+#* $Id: pic24config.php 26169 2016-12-12 01:36:34Z mvuilleu $
+#*
+#* Implements yFindProximity(), the high-level API for Proximity functions
+#*
+#* - - - - - - - - - License information: - - - - - - - - -
+#*
+#* Copyright (C) 2011 and beyond by Yoctopuce Sarl, Switzerland.
+#*
+#* Yoctopuce Sarl (hereafter Licensor) grants to you a perpetual
+#* non-exclusive license to use, modify, copy and integrate this
+#* file into your software for the sole purpose of interfacing
+#* with Yoctopuce products.
+#*
+#* You may reproduce and distribute copies of this file in
+#* source or object form, as long as the sole purpose of this
+#* code is to interface with Yoctopuce products. You must retain
+#* this notice in the distributed source file.
+#*
+#* You should refer to Yoctopuce General Terms and Conditions
+#* for additional information regarding your rights and
+#* obligations.
+#*
+#* THE SOFTWARE AND DOCUMENTATION ARE PROVIDED 'AS IS' WITHOUT
+#* WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
+#* WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS
+#* FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO
+#* EVENT SHALL LICENSOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
+#* INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA,
+#* COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR
+#* SERVICES, ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT
+#* LIMITED TO ANY DEFENSE THEREOF), ANY CLAIMS FOR INDEMNITY OR
+#* CONTRIBUTION, OR OTHER SIMILAR COSTS, WHETHER ASSERTED ON THE
+#* BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE), BREACH OF
+#* WARRANTY, OR OTHERWISE.
+#*
+#*********************************************************************/
+
+
+__docformat__ = 'restructuredtext en'
+from yocto_api import *
+
+
+#--- (YProximity class start)
+#noinspection PyProtectedMember
+class YProximity(YSensor):
+ """
+ The Yoctopuce class YProximity allows you to use and configure Yoctopuce proximity
+ sensors. It inherits from YSensor class the core functions to read measurements,
+ register callback functions, access to the autonomous datalogger.
+ This class adds the ability to easily perform a one-point linear calibration
+ to compensate the effect of a glass or filter placed in front of the sensor.
+
+ """
+#--- (end of YProximity class start)
+ #--- (YProximity return codes)
+ #--- (end of YProximity return codes)
+ #--- (YProximity dlldef)
+ #--- (end of YProximity dlldef)
+ #--- (YProximity definitions)
+ DETECTIONTHRESHOLD_INVALID = YAPI.INVALID_UINT
+ LASTTIMEAPPROACHED_INVALID = YAPI.INVALID_LONG
+ LASTTIMEREMOVED_INVALID = YAPI.INVALID_LONG
+ PULSECOUNTER_INVALID = YAPI.INVALID_LONG
+ PULSETIMER_INVALID = YAPI.INVALID_LONG
+ ISPRESENT_FALSE = 0
+ ISPRESENT_TRUE = 1
+ ISPRESENT_INVALID = -1
+ #--- (end of YProximity definitions)
+
+ def __init__(self, func):
+ super(YProximity, self).__init__(func)
+ self._className = 'Proximity'
+ #--- (YProximity attributes)
+ self._callback = None
+ self._detectionThreshold = YProximity.DETECTIONTHRESHOLD_INVALID
+ self._isPresent = YProximity.ISPRESENT_INVALID
+ self._lastTimeApproached = YProximity.LASTTIMEAPPROACHED_INVALID
+ self._lastTimeRemoved = YProximity.LASTTIMEREMOVED_INVALID
+ self._pulseCounter = YProximity.PULSECOUNTER_INVALID
+ self._pulseTimer = YProximity.PULSETIMER_INVALID
+ #--- (end of YProximity attributes)
+
+ #--- (YProximity implementation)
+ def _parseAttr(self, member):
+ if member.name == "detectionThreshold":
+ self._detectionThreshold = member.ivalue
+ return 1
+ if member.name == "isPresent":
+ self._isPresent = member.ivalue
+ return 1
+ if member.name == "lastTimeApproached":
+ self._lastTimeApproached = member.ivalue
+ return 1
+ if member.name == "lastTimeRemoved":
+ self._lastTimeRemoved = member.ivalue
+ return 1
+ if member.name == "pulseCounter":
+ self._pulseCounter = member.ivalue
+ return 1
+ if member.name == "pulseTimer":
+ self._pulseTimer = member.ivalue
+ return 1
+ super(YProximity, self)._parseAttr(member)
+
+ def get_detectionThreshold(self):
+ """
+ Returns the threshold used to determine the logical state of the proximity sensor, when considered
+ as a binary input (on/off).
+
+ @return an integer corresponding to the threshold used to determine the logical state of the
+ proximity sensor, when considered
+ as a binary input (on/off)
+
+ On failure, throws an exception or returns YProximity.DETECTIONTHRESHOLD_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YProximity.DETECTIONTHRESHOLD_INVALID
+ return self._detectionThreshold
+
+ def set_detectionThreshold(self, newval):
+ """
+ Changes the threshold used to determine the logical state of the proximity sensor, when considered
+ as a binary input (on/off).
+
+ @param newval : an integer corresponding to the threshold used to determine the logical state of
+ the proximity sensor, when considered
+ as a binary input (on/off)
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("detectionThreshold", rest_val)
+
+ def get_isPresent(self):
+ """
+ Returns true if the input (considered as binary) is active (detection value is smaller than the
+ specified threshold), and false otherwise.
+
+ @return either YProximity.ISPRESENT_FALSE or YProximity.ISPRESENT_TRUE, according to true if the
+ input (considered as binary) is active (detection value is smaller than the specified threshold),
+ and false otherwise
+
+ On failure, throws an exception or returns YProximity.ISPRESENT_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YProximity.ISPRESENT_INVALID
+ return self._isPresent
+
+ def get_lastTimeApproached(self):
+ """
+ Returns the number of elapsed milliseconds between the module power on and the last observed
+ detection (the input contact transitioned from absent to present).
+
+ @return an integer corresponding to the number of elapsed milliseconds between the module power on
+ and the last observed
+ detection (the input contact transitioned from absent to present)
+
+ On failure, throws an exception or returns YProximity.LASTTIMEAPPROACHED_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YProximity.LASTTIMEAPPROACHED_INVALID
+ return self._lastTimeApproached
+
+ def get_lastTimeRemoved(self):
+ """
+ Returns the number of elapsed milliseconds between the module power on and the last observed
+ detection (the input contact transitioned from present to absent).
+
+ @return an integer corresponding to the number of elapsed milliseconds between the module power on
+ and the last observed
+ detection (the input contact transitioned from present to absent)
+
+ On failure, throws an exception or returns YProximity.LASTTIMEREMOVED_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YProximity.LASTTIMEREMOVED_INVALID
+ return self._lastTimeRemoved
+
+ def get_pulseCounter(self):
+ """
+ Returns the pulse counter value. The value is a 32 bit integer. In case
+ of overflow (>=2^32), the counter will wrap. To reset the counter, just
+ call the resetCounter() method.
+
+ @return an integer corresponding to the pulse counter value
+
+ On failure, throws an exception or returns YProximity.PULSECOUNTER_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YProximity.PULSECOUNTER_INVALID
+ return self._pulseCounter
+
+ def set_pulseCounter(self, newval):
+ rest_val = str(newval)
+ return self._setAttr("pulseCounter", rest_val)
+
+ def get_pulseTimer(self):
+ """
+ Returns the timer of the pulses counter (ms).
+
+ @return an integer corresponding to the timer of the pulses counter (ms)
+
+ On failure, throws an exception or returns YProximity.PULSETIMER_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YProximity.PULSETIMER_INVALID
+ return self._pulseTimer
+
+ @staticmethod
+ def FindProximity(func):
+ """
+ Retrieves a proximity sensor for a given identifier.
+ The identifier can be specified using several formats:
+ <ul>
+ <li>FunctionLogicalName</li>
+ <li>ModuleSerialNumber.FunctionIdentifier</li>
+ <li>ModuleSerialNumber.FunctionLogicalName</li>
+ <li>ModuleLogicalName.FunctionIdentifier</li>
+ <li>ModuleLogicalName.FunctionLogicalName</li>
+ </ul>
+
+ This function does not require that the proximity sensor is online at the time
+ it is invoked. The returned object is nevertheless valid.
+ Use the method YProximity.isOnline() to test if the proximity sensor is
+ indeed online at a given time. In case of ambiguity when looking for
+ a proximity sensor by logical name, no error is notified: the first instance
+ found is returned. The search is performed first by hardware name,
+ then by logical name.
+
+ @param func : a string that uniquely characterizes the proximity sensor
+
+ @return a YProximity object allowing you to drive the proximity sensor.
+ """
+ # obj
+ obj = YFunction._FindFromCache("Proximity", func)
+ if obj is None:
+ obj = YProximity(func)
+ YFunction._AddToCache("Proximity", func, obj)
+ return obj
+
+ def resetCounter(self):
+ """
+ Returns the pulse counter value as well as its timer.
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.set_pulseCounter(0)
+
+ def nextProximity(self):
+ """
+ Continues the enumeration of proximity sensors started using yFirstProximity().
+
+ @return a pointer to a YProximity object, corresponding to
+ a proximity sensor currently online, or a None pointer
+ if there are no more proximity sensors to enumerate.
+ """
+ hwidRef = YRefParam()
+ if YAPI.YISERR(self._nextFunction(hwidRef)):
+ return None
+ if hwidRef.value == "":
+ return None
+ return YProximity.FindProximity(hwidRef.value)
+
+#--- (end of YProximity implementation)
+
+#--- (Proximity functions)
+
+ @staticmethod
+ def FirstProximity():
+ """
+ Starts the enumeration of proximity sensors currently accessible.
+ Use the method YProximity.nextProximity() to iterate on
+ next proximity sensors.
+
+ @return a pointer to a YProximity object, corresponding to
+ the first proximity sensor currently online, or a None pointer
+ if there are none.
+ """
+ devRef = YRefParam()
+ neededsizeRef = YRefParam()
+ serialRef = YRefParam()
+ funcIdRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+ errmsgRef = YRefParam()
+ size = YAPI.C_INTSIZE
+ #noinspection PyTypeChecker,PyCallingNonCallable
+ p = (ctypes.c_int * 1)()
+ err = YAPI.apiGetFunctionsByClass("Proximity", 0, p, size, neededsizeRef, errmsgRef)
+
+ if YAPI.YISERR(err) or not neededsizeRef.value:
+ return None
+
+ if YAPI.YISERR(
+ YAPI.yapiGetFunctionInfo(p[0], devRef, serialRef, funcIdRef, funcNameRef, funcValRef, errmsgRef)):
+ return None
+
+ return YProximity.FindProximity(serialRef.value + "." + funcIdRef.value)
+
+#--- (end of Proximity functions)
diff --git a/yoctoLib.python.26380/Sources/yocto_pwminput.py b/yoctoLib.python.26380/Sources/yocto_pwminput.py
new file mode 100644
index 0000000..e79a0e7
--- /dev/null
+++ b/yoctoLib.python.26380/Sources/yocto_pwminput.py
@@ -0,0 +1,327 @@
+#*********************************************************************
+#*
+#* $Id: yocto_pwminput.py 23243 2016-02-23 14:13:12Z seb $
+#*
+#* Implements yFindPwmInput(), the high-level API for PwmInput functions
+#*
+#* - - - - - - - - - License information: - - - - - - - - -
+#*
+#* Copyright (C) 2011 and beyond by Yoctopuce Sarl, Switzerland.
+#*
+#* Yoctopuce Sarl (hereafter Licensor) grants to you a perpetual
+#* non-exclusive license to use, modify, copy and integrate this
+#* file into your software for the sole purpose of interfacing
+#* with Yoctopuce products.
+#*
+#* You may reproduce and distribute copies of this file in
+#* source or object form, as long as the sole purpose of this
+#* code is to interface with Yoctopuce products. You must retain
+#* this notice in the distributed source file.
+#*
+#* You should refer to Yoctopuce General Terms and Conditions
+#* for additional information regarding your rights and
+#* obligations.
+#*
+#* THE SOFTWARE AND DOCUMENTATION ARE PROVIDED 'AS IS' WITHOUT
+#* WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
+#* WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS
+#* FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO
+#* EVENT SHALL LICENSOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
+#* INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA,
+#* COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR
+#* SERVICES, ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT
+#* LIMITED TO ANY DEFENSE THEREOF), ANY CLAIMS FOR INDEMNITY OR
+#* CONTRIBUTION, OR OTHER SIMILAR COSTS, WHETHER ASSERTED ON THE
+#* BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE), BREACH OF
+#* WARRANTY, OR OTHERWISE.
+#*
+#*********************************************************************/
+
+
+__docformat__ = 'restructuredtext en'
+from yocto_api import *
+
+
+#--- (YPwmInput class start)
+#noinspection PyProtectedMember
+class YPwmInput(YSensor):
+ """
+ The Yoctopuce class YPwmInput allows you to read and configure Yoctopuce PWM
+ sensors. It inherits from YSensor class the core functions to read measurements,
+ register callback functions, access to the autonomous datalogger.
+ This class adds the ability to configure the signal parameter used to transmit
+ information: the duty cycle, the frequency or the pulse width.
+
+ """
+#--- (end of YPwmInput class start)
+ #--- (YPwmInput return codes)
+ #--- (end of YPwmInput return codes)
+ #--- (YPwmInput dlldef)
+ #--- (end of YPwmInput dlldef)
+ #--- (YPwmInput definitions)
+ DUTYCYCLE_INVALID = YAPI.INVALID_DOUBLE
+ PULSEDURATION_INVALID = YAPI.INVALID_DOUBLE
+ FREQUENCY_INVALID = YAPI.INVALID_DOUBLE
+ PERIOD_INVALID = YAPI.INVALID_DOUBLE
+ PULSECOUNTER_INVALID = YAPI.INVALID_LONG
+ PULSETIMER_INVALID = YAPI.INVALID_LONG
+ PWMREPORTMODE_PWM_DUTYCYCLE = 0
+ PWMREPORTMODE_PWM_FREQUENCY = 1
+ PWMREPORTMODE_PWM_PULSEDURATION = 2
+ PWMREPORTMODE_PWM_EDGECOUNT = 3
+ PWMREPORTMODE_INVALID = -1
+ #--- (end of YPwmInput definitions)
+
+ def __init__(self, func):
+ super(YPwmInput, self).__init__(func)
+ self._className = 'PwmInput'
+ #--- (YPwmInput attributes)
+ self._callback = None
+ self._dutyCycle = YPwmInput.DUTYCYCLE_INVALID
+ self._pulseDuration = YPwmInput.PULSEDURATION_INVALID
+ self._frequency = YPwmInput.FREQUENCY_INVALID
+ self._period = YPwmInput.PERIOD_INVALID
+ self._pulseCounter = YPwmInput.PULSECOUNTER_INVALID
+ self._pulseTimer = YPwmInput.PULSETIMER_INVALID
+ self._pwmReportMode = YPwmInput.PWMREPORTMODE_INVALID
+ #--- (end of YPwmInput attributes)
+
+ #--- (YPwmInput implementation)
+ def _parseAttr(self, member):
+ if member.name == "dutyCycle":
+ self._dutyCycle = round(member.ivalue * 1000.0 / 65536.0) / 1000.0
+ return 1
+ if member.name == "pulseDuration":
+ self._pulseDuration = round(member.ivalue * 1000.0 / 65536.0) / 1000.0
+ return 1
+ if member.name == "frequency":
+ self._frequency = round(member.ivalue * 1000.0 / 65536.0) / 1000.0
+ return 1
+ if member.name == "period":
+ self._period = round(member.ivalue * 1000.0 / 65536.0) / 1000.0
+ return 1
+ if member.name == "pulseCounter":
+ self._pulseCounter = member.ivalue
+ return 1
+ if member.name == "pulseTimer":
+ self._pulseTimer = member.ivalue
+ return 1
+ if member.name == "pwmReportMode":
+ self._pwmReportMode = member.ivalue
+ return 1
+ super(YPwmInput, self)._parseAttr(member)
+
+ def get_dutyCycle(self):
+ """
+ Returns the PWM duty cycle, in per cents.
+
+ @return a floating point number corresponding to the PWM duty cycle, in per cents
+
+ On failure, throws an exception or returns YPwmInput.DUTYCYCLE_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YPwmInput.DUTYCYCLE_INVALID
+ return self._dutyCycle
+
+ def get_pulseDuration(self):
+ """
+ Returns the PWM pulse length in milliseconds, as a floating point number.
+
+ @return a floating point number corresponding to the PWM pulse length in milliseconds, as a
+ floating point number
+
+ On failure, throws an exception or returns YPwmInput.PULSEDURATION_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YPwmInput.PULSEDURATION_INVALID
+ return self._pulseDuration
+
+ def get_frequency(self):
+ """
+ Returns the PWM frequency in Hz.
+
+ @return a floating point number corresponding to the PWM frequency in Hz
+
+ On failure, throws an exception or returns YPwmInput.FREQUENCY_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YPwmInput.FREQUENCY_INVALID
+ return self._frequency
+
+ def get_period(self):
+ """
+ Returns the PWM period in milliseconds.
+
+ @return a floating point number corresponding to the PWM period in milliseconds
+
+ On failure, throws an exception or returns YPwmInput.PERIOD_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YPwmInput.PERIOD_INVALID
+ return self._period
+
+ def get_pulseCounter(self):
+ """
+ Returns the pulse counter value. Actually that
+ counter is incremented twice per period. That counter is
+ limited to 1 billion
+
+ @return an integer corresponding to the pulse counter value
+
+ On failure, throws an exception or returns YPwmInput.PULSECOUNTER_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YPwmInput.PULSECOUNTER_INVALID
+ return self._pulseCounter
+
+ def set_pulseCounter(self, newval):
+ rest_val = str(newval)
+ return self._setAttr("pulseCounter", rest_val)
+
+ def get_pulseTimer(self):
+ """
+ Returns the timer of the pulses counter (ms).
+
+ @return an integer corresponding to the timer of the pulses counter (ms)
+
+ On failure, throws an exception or returns YPwmInput.PULSETIMER_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YPwmInput.PULSETIMER_INVALID
+ return self._pulseTimer
+
+ def get_pwmReportMode(self):
+ """
+ Returns the parameter (frequency/duty cycle, pulse width, edges count) returned by the
+ get_currentValue function and callbacks. Attention
+
+ @return a value among YPwmInput.PWMREPORTMODE_PWM_DUTYCYCLE, YPwmInput.PWMREPORTMODE_PWM_FREQUENCY,
+ YPwmInput.PWMREPORTMODE_PWM_PULSEDURATION and YPwmInput.PWMREPORTMODE_PWM_EDGECOUNT corresponding
+ to the parameter (frequency/duty cycle, pulse width, edges count) returned by the get_currentValue
+ function and callbacks
+
+ On failure, throws an exception or returns YPwmInput.PWMREPORTMODE_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YPwmInput.PWMREPORTMODE_INVALID
+ return self._pwmReportMode
+
+ def set_pwmReportMode(self, newval):
+ """
+ Modifies the parameter type (frequency/duty cycle, pulse width, or edge count) returned by the
+ get_currentValue function and callbacks.
+ The edge count value is limited to the 6 lowest digits. For values greater than one million, use
+ get_pulseCounter().
+
+ @param newval : a value among YPwmInput.PWMREPORTMODE_PWM_DUTYCYCLE,
+ YPwmInput.PWMREPORTMODE_PWM_FREQUENCY, YPwmInput.PWMREPORTMODE_PWM_PULSEDURATION and
+ YPwmInput.PWMREPORTMODE_PWM_EDGECOUNT
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("pwmReportMode", rest_val)
+
+ @staticmethod
+ def FindPwmInput(func):
+ """
+ Retrieves a PWM input for a given identifier.
+ The identifier can be specified using several formats:
+ <ul>
+ <li>FunctionLogicalName</li>
+ <li>ModuleSerialNumber.FunctionIdentifier</li>
+ <li>ModuleSerialNumber.FunctionLogicalName</li>
+ <li>ModuleLogicalName.FunctionIdentifier</li>
+ <li>ModuleLogicalName.FunctionLogicalName</li>
+ </ul>
+
+ This function does not require that the PWM input is online at the time
+ it is invoked. The returned object is nevertheless valid.
+ Use the method YPwmInput.isOnline() to test if the PWM input is
+ indeed online at a given time. In case of ambiguity when looking for
+ a PWM input by logical name, no error is notified: the first instance
+ found is returned. The search is performed first by hardware name,
+ then by logical name.
+
+ @param func : a string that uniquely characterizes the PWM input
+
+ @return a YPwmInput object allowing you to drive the PWM input.
+ """
+ # obj
+ obj = YFunction._FindFromCache("PwmInput", func)
+ if obj is None:
+ obj = YPwmInput(func)
+ YFunction._AddToCache("PwmInput", func, obj)
+ return obj
+
+ def resetCounter(self):
+ """
+ Returns the pulse counter value as well as its timer.
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.set_pulseCounter(0)
+
+ def nextPwmInput(self):
+ """
+ Continues the enumeration of PWM inputs started using yFirstPwmInput().
+
+ @return a pointer to a YPwmInput object, corresponding to
+ a PWM input currently online, or a None pointer
+ if there are no more PWM inputs to enumerate.
+ """
+ hwidRef = YRefParam()
+ if YAPI.YISERR(self._nextFunction(hwidRef)):
+ return None
+ if hwidRef.value == "":
+ return None
+ return YPwmInput.FindPwmInput(hwidRef.value)
+
+#--- (end of YPwmInput implementation)
+
+#--- (PwmInput functions)
+
+ @staticmethod
+ def FirstPwmInput():
+ """
+ Starts the enumeration of PWM inputs currently accessible.
+ Use the method YPwmInput.nextPwmInput() to iterate on
+ next PWM inputs.
+
+ @return a pointer to a YPwmInput object, corresponding to
+ the first PWM input currently online, or a None pointer
+ if there are none.
+ """
+ devRef = YRefParam()
+ neededsizeRef = YRefParam()
+ serialRef = YRefParam()
+ funcIdRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+ errmsgRef = YRefParam()
+ size = YAPI.C_INTSIZE
+ #noinspection PyTypeChecker,PyCallingNonCallable
+ p = (ctypes.c_int * 1)()
+ err = YAPI.apiGetFunctionsByClass("PwmInput", 0, p, size, neededsizeRef, errmsgRef)
+
+ if YAPI.YISERR(err) or not neededsizeRef.value:
+ return None
+
+ if YAPI.YISERR(
+ YAPI.yapiGetFunctionInfo(p[0], devRef, serialRef, funcIdRef, funcNameRef, funcValRef, errmsgRef)):
+ return None
+
+ return YPwmInput.FindPwmInput(serialRef.value + "." + funcIdRef.value)
+
+#--- (end of PwmInput functions)
diff --git a/yoctoLib.python.26380/Sources/yocto_pwmoutput.py b/yoctoLib.python.26380/Sources/yocto_pwmoutput.py
new file mode 100644
index 0000000..0b067d8
--- /dev/null
+++ b/yoctoLib.python.26380/Sources/yocto_pwmoutput.py
@@ -0,0 +1,437 @@
+#*********************************************************************
+#*
+#* $Id: yocto_pwmoutput.py 23243 2016-02-23 14:13:12Z seb $
+#*
+#* Implements yFindPwmOutput(), the high-level API for PwmOutput functions
+#*
+#* - - - - - - - - - License information: - - - - - - - - -
+#*
+#* Copyright (C) 2011 and beyond by Yoctopuce Sarl, Switzerland.
+#*
+#* Yoctopuce Sarl (hereafter Licensor) grants to you a perpetual
+#* non-exclusive license to use, modify, copy and integrate this
+#* file into your software for the sole purpose of interfacing
+#* with Yoctopuce products.
+#*
+#* You may reproduce and distribute copies of this file in
+#* source or object form, as long as the sole purpose of this
+#* code is to interface with Yoctopuce products. You must retain
+#* this notice in the distributed source file.
+#*
+#* You should refer to Yoctopuce General Terms and Conditions
+#* for additional information regarding your rights and
+#* obligations.
+#*
+#* THE SOFTWARE AND DOCUMENTATION ARE PROVIDED 'AS IS' WITHOUT
+#* WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
+#* WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS
+#* FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO
+#* EVENT SHALL LICENSOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
+#* INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA,
+#* COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR
+#* SERVICES, ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT
+#* LIMITED TO ANY DEFENSE THEREOF), ANY CLAIMS FOR INDEMNITY OR
+#* CONTRIBUTION, OR OTHER SIMILAR COSTS, WHETHER ASSERTED ON THE
+#* BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE), BREACH OF
+#* WARRANTY, OR OTHERWISE.
+#*
+#*********************************************************************/
+
+
+__docformat__ = 'restructuredtext en'
+from yocto_api import *
+
+
+#--- (YPwmOutput class start)
+#noinspection PyProtectedMember
+class YPwmOutput(YFunction):
+ """
+ The Yoctopuce application programming interface allows you to configure, start, and stop the PWM.
+
+ """
+#--- (end of YPwmOutput class start)
+ #--- (YPwmOutput return codes)
+ #--- (end of YPwmOutput return codes)
+ #--- (YPwmOutput dlldef)
+ #--- (end of YPwmOutput dlldef)
+ #--- (YPwmOutput definitions)
+ FREQUENCY_INVALID = YAPI.INVALID_DOUBLE
+ PERIOD_INVALID = YAPI.INVALID_DOUBLE
+ DUTYCYCLE_INVALID = YAPI.INVALID_DOUBLE
+ PULSEDURATION_INVALID = YAPI.INVALID_DOUBLE
+ PWMTRANSITION_INVALID = YAPI.INVALID_STRING
+ DUTYCYCLEATPOWERON_INVALID = YAPI.INVALID_DOUBLE
+ ENABLED_FALSE = 0
+ ENABLED_TRUE = 1
+ ENABLED_INVALID = -1
+ ENABLEDATPOWERON_FALSE = 0
+ ENABLEDATPOWERON_TRUE = 1
+ ENABLEDATPOWERON_INVALID = -1
+ #--- (end of YPwmOutput definitions)
+
+ def __init__(self, func):
+ super(YPwmOutput, self).__init__(func)
+ self._className = 'PwmOutput'
+ #--- (YPwmOutput attributes)
+ self._callback = None
+ self._enabled = YPwmOutput.ENABLED_INVALID
+ self._frequency = YPwmOutput.FREQUENCY_INVALID
+ self._period = YPwmOutput.PERIOD_INVALID
+ self._dutyCycle = YPwmOutput.DUTYCYCLE_INVALID
+ self._pulseDuration = YPwmOutput.PULSEDURATION_INVALID
+ self._pwmTransition = YPwmOutput.PWMTRANSITION_INVALID
+ self._enabledAtPowerOn = YPwmOutput.ENABLEDATPOWERON_INVALID
+ self._dutyCycleAtPowerOn = YPwmOutput.DUTYCYCLEATPOWERON_INVALID
+ #--- (end of YPwmOutput attributes)
+
+ #--- (YPwmOutput implementation)
+ def _parseAttr(self, member):
+ if member.name == "enabled":
+ self._enabled = member.ivalue
+ return 1
+ if member.name == "frequency":
+ self._frequency = round(member.ivalue * 1000.0 / 65536.0) / 1000.0
+ return 1
+ if member.name == "period":
+ self._period = round(member.ivalue * 1000.0 / 65536.0) / 1000.0
+ return 1
+ if member.name == "dutyCycle":
+ self._dutyCycle = round(member.ivalue * 1000.0 / 65536.0) / 1000.0
+ return 1
+ if member.name == "pulseDuration":
+ self._pulseDuration = round(member.ivalue * 1000.0 / 65536.0) / 1000.0
+ return 1
+ if member.name == "pwmTransition":
+ self._pwmTransition = member.svalue
+ return 1
+ if member.name == "enabledAtPowerOn":
+ self._enabledAtPowerOn = member.ivalue
+ return 1
+ if member.name == "dutyCycleAtPowerOn":
+ self._dutyCycleAtPowerOn = round(member.ivalue * 1000.0 / 65536.0) / 1000.0
+ return 1
+ super(YPwmOutput, self)._parseAttr(member)
+
+ def get_enabled(self):
+ """
+ Returns the state of the PWMs.
+
+ @return either YPwmOutput.ENABLED_FALSE or YPwmOutput.ENABLED_TRUE, according to the state of the PWMs
+
+ On failure, throws an exception or returns YPwmOutput.ENABLED_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YPwmOutput.ENABLED_INVALID
+ return self._enabled
+
+ def set_enabled(self, newval):
+ """
+ Stops or starts the PWM.
+
+ @param newval : either YPwmOutput.ENABLED_FALSE or YPwmOutput.ENABLED_TRUE
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = "1" if newval > 0 else "0"
+ return self._setAttr("enabled", rest_val)
+
+ def set_frequency(self, newval):
+ """
+ Changes the PWM frequency. The duty cycle is kept unchanged thanks to an
+ automatic pulse width change.
+
+ @param newval : a floating point number corresponding to the PWM frequency
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(int(round(newval * 65536.0, 1)))
+ return self._setAttr("frequency", rest_val)
+
+ def get_frequency(self):
+ """
+ Returns the PWM frequency in Hz.
+
+ @return a floating point number corresponding to the PWM frequency in Hz
+
+ On failure, throws an exception or returns YPwmOutput.FREQUENCY_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YPwmOutput.FREQUENCY_INVALID
+ return self._frequency
+
+ def set_period(self, newval):
+ """
+ Changes the PWM period in milliseconds.
+
+ @param newval : a floating point number corresponding to the PWM period in milliseconds
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(int(round(newval * 65536.0, 1)))
+ return self._setAttr("period", rest_val)
+
+ def get_period(self):
+ """
+ Returns the PWM period in milliseconds.
+
+ @return a floating point number corresponding to the PWM period in milliseconds
+
+ On failure, throws an exception or returns YPwmOutput.PERIOD_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YPwmOutput.PERIOD_INVALID
+ return self._period
+
+ def set_dutyCycle(self, newval):
+ """
+ Changes the PWM duty cycle, in per cents.
+
+ @param newval : a floating point number corresponding to the PWM duty cycle, in per cents
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(int(round(newval * 65536.0, 1)))
+ return self._setAttr("dutyCycle", rest_val)
+
+ def get_dutyCycle(self):
+ """
+ Returns the PWM duty cycle, in per cents.
+
+ @return a floating point number corresponding to the PWM duty cycle, in per cents
+
+ On failure, throws an exception or returns YPwmOutput.DUTYCYCLE_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YPwmOutput.DUTYCYCLE_INVALID
+ return self._dutyCycle
+
+ def set_pulseDuration(self, newval):
+ """
+ Changes the PWM pulse length, in milliseconds. A pulse length cannot be longer than period,
+ otherwise it is truncated.
+
+ @param newval : a floating point number corresponding to the PWM pulse length, in milliseconds
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(int(round(newval * 65536.0, 1)))
+ return self._setAttr("pulseDuration", rest_val)
+
+ def get_pulseDuration(self):
+ """
+ Returns the PWM pulse length in milliseconds, as a floating point number.
+
+ @return a floating point number corresponding to the PWM pulse length in milliseconds, as a
+ floating point number
+
+ On failure, throws an exception or returns YPwmOutput.PULSEDURATION_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YPwmOutput.PULSEDURATION_INVALID
+ return self._pulseDuration
+
+ def get_pwmTransition(self):
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YPwmOutput.PWMTRANSITION_INVALID
+ return self._pwmTransition
+
+ def set_pwmTransition(self, newval):
+ rest_val = newval
+ return self._setAttr("pwmTransition", rest_val)
+
+ def get_enabledAtPowerOn(self):
+ """
+ Returns the state of the PWM at device power on.
+
+ @return either YPwmOutput.ENABLEDATPOWERON_FALSE or YPwmOutput.ENABLEDATPOWERON_TRUE, according to
+ the state of the PWM at device power on
+
+ On failure, throws an exception or returns YPwmOutput.ENABLEDATPOWERON_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YPwmOutput.ENABLEDATPOWERON_INVALID
+ return self._enabledAtPowerOn
+
+ def set_enabledAtPowerOn(self, newval):
+ """
+ Changes the state of the PWM at device power on. Remember to call the matching module saveToFlash()
+ method, otherwise this call will have no effect.
+
+ @param newval : either YPwmOutput.ENABLEDATPOWERON_FALSE or YPwmOutput.ENABLEDATPOWERON_TRUE,
+ according to the state of the PWM at device power on
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = "1" if newval > 0 else "0"
+ return self._setAttr("enabledAtPowerOn", rest_val)
+
+ def set_dutyCycleAtPowerOn(self, newval):
+ """
+ Changes the PWM duty cycle at device power on. Remember to call the matching
+ module saveToFlash() method, otherwise this call will have no effect.
+
+ @param newval : a floating point number corresponding to the PWM duty cycle at device power on
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(int(round(newval * 65536.0, 1)))
+ return self._setAttr("dutyCycleAtPowerOn", rest_val)
+
+ def get_dutyCycleAtPowerOn(self):
+ """
+ Returns the PWMs duty cycle at device power on as a floating point number between 0 and 100.
+
+ @return a floating point number corresponding to the PWMs duty cycle at device power on as a
+ floating point number between 0 and 100
+
+ On failure, throws an exception or returns YPwmOutput.DUTYCYCLEATPOWERON_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YPwmOutput.DUTYCYCLEATPOWERON_INVALID
+ return self._dutyCycleAtPowerOn
+
+ @staticmethod
+ def FindPwmOutput(func):
+ """
+ Retrieves a PWM for a given identifier.
+ The identifier can be specified using several formats:
+ <ul>
+ <li>FunctionLogicalName</li>
+ <li>ModuleSerialNumber.FunctionIdentifier</li>
+ <li>ModuleSerialNumber.FunctionLogicalName</li>
+ <li>ModuleLogicalName.FunctionIdentifier</li>
+ <li>ModuleLogicalName.FunctionLogicalName</li>
+ </ul>
+
+ This function does not require that the PWM is online at the time
+ it is invoked. The returned object is nevertheless valid.
+ Use the method YPwmOutput.isOnline() to test if the PWM is
+ indeed online at a given time. In case of ambiguity when looking for
+ a PWM by logical name, no error is notified: the first instance
+ found is returned. The search is performed first by hardware name,
+ then by logical name.
+
+ @param func : a string that uniquely characterizes the PWM
+
+ @return a YPwmOutput object allowing you to drive the PWM.
+ """
+ # obj
+ obj = YFunction._FindFromCache("PwmOutput", func)
+ if obj is None:
+ obj = YPwmOutput(func)
+ YFunction._AddToCache("PwmOutput", func, obj)
+ return obj
+
+ def pulseDurationMove(self, ms_target, ms_duration):
+ """
+ Performs a smooth transistion of the pulse duration toward a given value. Any period,
+ frequency, duty cycle or pulse width change will cancel any ongoing transition process.
+
+ @param ms_target : new pulse duration at the end of the transition
+ (floating-point number, representing the pulse duration in milliseconds)
+ @param ms_duration : total duration of the transition, in milliseconds
+
+ @return YAPI.SUCCESS when the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ # newval
+ if ms_target < 0.0:
+ ms_target = 0.0
+ newval = "" + str(int(round(ms_target*65536))) + "ms:" + str(int(ms_duration))
+ return self.set_pwmTransition(newval)
+
+ def dutyCycleMove(self, target, ms_duration):
+ """
+ Performs a smooth change of the pulse duration toward a given value.
+
+ @param target : new duty cycle at the end of the transition
+ (floating-point number, between 0 and 1)
+ @param ms_duration : total duration of the transition, in milliseconds
+
+ @return YAPI.SUCCESS when the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ # newval
+ if target < 0.0:
+ target = 0.0
+ if target > 100.0:
+ target = 100.0
+ newval = "" + str(int(round(target*65536))) + ":" + str(int(ms_duration))
+ return self.set_pwmTransition(newval)
+
+ def nextPwmOutput(self):
+ """
+ Continues the enumeration of PWMs started using yFirstPwmOutput().
+
+ @return a pointer to a YPwmOutput object, corresponding to
+ a PWM currently online, or a None pointer
+ if there are no more PWMs to enumerate.
+ """
+ hwidRef = YRefParam()
+ if YAPI.YISERR(self._nextFunction(hwidRef)):
+ return None
+ if hwidRef.value == "":
+ return None
+ return YPwmOutput.FindPwmOutput(hwidRef.value)
+
+#--- (end of YPwmOutput implementation)
+
+#--- (PwmOutput functions)
+
+ @staticmethod
+ def FirstPwmOutput():
+ """
+ Starts the enumeration of PWMs currently accessible.
+ Use the method YPwmOutput.nextPwmOutput() to iterate on
+ next PWMs.
+
+ @return a pointer to a YPwmOutput object, corresponding to
+ the first PWM currently online, or a None pointer
+ if there are none.
+ """
+ devRef = YRefParam()
+ neededsizeRef = YRefParam()
+ serialRef = YRefParam()
+ funcIdRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+ errmsgRef = YRefParam()
+ size = YAPI.C_INTSIZE
+ #noinspection PyTypeChecker,PyCallingNonCallable
+ p = (ctypes.c_int * 1)()
+ err = YAPI.apiGetFunctionsByClass("PwmOutput", 0, p, size, neededsizeRef, errmsgRef)
+
+ if YAPI.YISERR(err) or not neededsizeRef.value:
+ return None
+
+ if YAPI.YISERR(
+ YAPI.yapiGetFunctionInfo(p[0], devRef, serialRef, funcIdRef, funcNameRef, funcValRef, errmsgRef)):
+ return None
+
+ return YPwmOutput.FindPwmOutput(serialRef.value + "." + funcIdRef.value)
+
+#--- (end of PwmOutput functions)
diff --git a/yoctoLib.python.26380/Sources/yocto_pwmpowersource.py b/yoctoLib.python.26380/Sources/yocto_pwmpowersource.py
new file mode 100644
index 0000000..8615b2d
--- /dev/null
+++ b/yoctoLib.python.26380/Sources/yocto_pwmpowersource.py
@@ -0,0 +1,199 @@
+#*********************************************************************
+#*
+#* $Id: yocto_pwmpowersource.py 23243 2016-02-23 14:13:12Z seb $
+#*
+#* Implements yFindPwmPowerSource(), the high-level API for PwmPowerSource functions
+#*
+#* - - - - - - - - - License information: - - - - - - - - -
+#*
+#* Copyright (C) 2011 and beyond by Yoctopuce Sarl, Switzerland.
+#*
+#* Yoctopuce Sarl (hereafter Licensor) grants to you a perpetual
+#* non-exclusive license to use, modify, copy and integrate this
+#* file into your software for the sole purpose of interfacing
+#* with Yoctopuce products.
+#*
+#* You may reproduce and distribute copies of this file in
+#* source or object form, as long as the sole purpose of this
+#* code is to interface with Yoctopuce products. You must retain
+#* this notice in the distributed source file.
+#*
+#* You should refer to Yoctopuce General Terms and Conditions
+#* for additional information regarding your rights and
+#* obligations.
+#*
+#* THE SOFTWARE AND DOCUMENTATION ARE PROVIDED 'AS IS' WITHOUT
+#* WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
+#* WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS
+#* FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO
+#* EVENT SHALL LICENSOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
+#* INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA,
+#* COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR
+#* SERVICES, ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT
+#* LIMITED TO ANY DEFENSE THEREOF), ANY CLAIMS FOR INDEMNITY OR
+#* CONTRIBUTION, OR OTHER SIMILAR COSTS, WHETHER ASSERTED ON THE
+#* BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE), BREACH OF
+#* WARRANTY, OR OTHERWISE.
+#*
+#*********************************************************************/
+
+
+__docformat__ = 'restructuredtext en'
+from yocto_api import *
+
+
+#--- (YPwmPowerSource class start)
+#noinspection PyProtectedMember
+class YPwmPowerSource(YFunction):
+ """
+ The Yoctopuce application programming interface allows you to configure
+ the voltage source used by all PWM on the same device.
+
+ """
+#--- (end of YPwmPowerSource class start)
+ #--- (YPwmPowerSource return codes)
+ #--- (end of YPwmPowerSource return codes)
+ #--- (YPwmPowerSource dlldef)
+ #--- (end of YPwmPowerSource dlldef)
+ #--- (YPwmPowerSource definitions)
+ POWERMODE_USB_5V = 0
+ POWERMODE_USB_3V = 1
+ POWERMODE_EXT_V = 2
+ POWERMODE_OPNDRN = 3
+ POWERMODE_INVALID = -1
+ #--- (end of YPwmPowerSource definitions)
+
+ def __init__(self, func):
+ super(YPwmPowerSource, self).__init__(func)
+ self._className = 'PwmPowerSource'
+ #--- (YPwmPowerSource attributes)
+ self._callback = None
+ self._powerMode = YPwmPowerSource.POWERMODE_INVALID
+ #--- (end of YPwmPowerSource attributes)
+
+ #--- (YPwmPowerSource implementation)
+ def _parseAttr(self, member):
+ if member.name == "powerMode":
+ self._powerMode = member.ivalue
+ return 1
+ super(YPwmPowerSource, self)._parseAttr(member)
+
+ def get_powerMode(self):
+ """
+ Returns the selected power source for the PWM on the same device.
+
+ @return a value among YPwmPowerSource.POWERMODE_USB_5V, YPwmPowerSource.POWERMODE_USB_3V,
+ YPwmPowerSource.POWERMODE_EXT_V and YPwmPowerSource.POWERMODE_OPNDRN corresponding to the selected
+ power source for the PWM on the same device
+
+ On failure, throws an exception or returns YPwmPowerSource.POWERMODE_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YPwmPowerSource.POWERMODE_INVALID
+ return self._powerMode
+
+ def set_powerMode(self, newval):
+ """
+ Changes the PWM power source. PWM can use isolated 5V from USB, isolated 3V from USB or
+ voltage from an external power source. The PWM can also work in open drain mode. In that
+ mode, the PWM actively pulls the line down.
+ Warning: this setting is common to all PWM on the same device. If you change that parameter,
+ all PWM located on the same device are affected.
+ If you want the change to be kept after a device reboot, make sure to call the matching
+ module saveToFlash().
+
+ @param newval : a value among YPwmPowerSource.POWERMODE_USB_5V, YPwmPowerSource.POWERMODE_USB_3V,
+ YPwmPowerSource.POWERMODE_EXT_V and YPwmPowerSource.POWERMODE_OPNDRN corresponding to the PWM power source
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("powerMode", rest_val)
+
+ @staticmethod
+ def FindPwmPowerSource(func):
+ """
+ Retrieves a voltage source for a given identifier.
+ The identifier can be specified using several formats:
+ <ul>
+ <li>FunctionLogicalName</li>
+ <li>ModuleSerialNumber.FunctionIdentifier</li>
+ <li>ModuleSerialNumber.FunctionLogicalName</li>
+ <li>ModuleLogicalName.FunctionIdentifier</li>
+ <li>ModuleLogicalName.FunctionLogicalName</li>
+ </ul>
+
+ This function does not require that the voltage source is online at the time
+ it is invoked. The returned object is nevertheless valid.
+ Use the method YPwmPowerSource.isOnline() to test if the voltage source is
+ indeed online at a given time. In case of ambiguity when looking for
+ a voltage source by logical name, no error is notified: the first instance
+ found is returned. The search is performed first by hardware name,
+ then by logical name.
+
+ @param func : a string that uniquely characterizes the voltage source
+
+ @return a YPwmPowerSource object allowing you to drive the voltage source.
+ """
+ # obj
+ obj = YFunction._FindFromCache("PwmPowerSource", func)
+ if obj is None:
+ obj = YPwmPowerSource(func)
+ YFunction._AddToCache("PwmPowerSource", func, obj)
+ return obj
+
+ def nextPwmPowerSource(self):
+ """
+ Continues the enumeration of Voltage sources started using yFirstPwmPowerSource().
+
+ @return a pointer to a YPwmPowerSource object, corresponding to
+ a voltage source currently online, or a None pointer
+ if there are no more Voltage sources to enumerate.
+ """
+ hwidRef = YRefParam()
+ if YAPI.YISERR(self._nextFunction(hwidRef)):
+ return None
+ if hwidRef.value == "":
+ return None
+ return YPwmPowerSource.FindPwmPowerSource(hwidRef.value)
+
+#--- (end of YPwmPowerSource implementation)
+
+#--- (PwmPowerSource functions)
+
+ @staticmethod
+ def FirstPwmPowerSource():
+ """
+ Starts the enumeration of Voltage sources currently accessible.
+ Use the method YPwmPowerSource.nextPwmPowerSource() to iterate on
+ next Voltage sources.
+
+ @return a pointer to a YPwmPowerSource object, corresponding to
+ the first source currently online, or a None pointer
+ if there are none.
+ """
+ devRef = YRefParam()
+ neededsizeRef = YRefParam()
+ serialRef = YRefParam()
+ funcIdRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+ errmsgRef = YRefParam()
+ size = YAPI.C_INTSIZE
+ #noinspection PyTypeChecker,PyCallingNonCallable
+ p = (ctypes.c_int * 1)()
+ err = YAPI.apiGetFunctionsByClass("PwmPowerSource", 0, p, size, neededsizeRef, errmsgRef)
+
+ if YAPI.YISERR(err) or not neededsizeRef.value:
+ return None
+
+ if YAPI.YISERR(
+ YAPI.yapiGetFunctionInfo(p[0], devRef, serialRef, funcIdRef, funcNameRef, funcValRef, errmsgRef)):
+ return None
+
+ return YPwmPowerSource.FindPwmPowerSource(serialRef.value + "." + funcIdRef.value)
+
+#--- (end of PwmPowerSource functions)
diff --git a/yoctoLib.python.26380/Sources/yocto_quadraturedecoder.py b/yoctoLib.python.26380/Sources/yocto_quadraturedecoder.py
new file mode 100644
index 0000000..1bf60fb
--- /dev/null
+++ b/yoctoLib.python.26380/Sources/yocto_quadraturedecoder.py
@@ -0,0 +1,223 @@
+#*********************************************************************
+#*
+#* $Id: yocto_quadraturedecoder.py 23243 2016-02-23 14:13:12Z seb $
+#*
+#* Implements yFindQuadratureDecoder(), the high-level API for QuadratureDecoder functions
+#*
+#* - - - - - - - - - License information: - - - - - - - - -
+#*
+#* Copyright (C) 2011 and beyond by Yoctopuce Sarl, Switzerland.
+#*
+#* Yoctopuce Sarl (hereafter Licensor) grants to you a perpetual
+#* non-exclusive license to use, modify, copy and integrate this
+#* file into your software for the sole purpose of interfacing
+#* with Yoctopuce products.
+#*
+#* You may reproduce and distribute copies of this file in
+#* source or object form, as long as the sole purpose of this
+#* code is to interface with Yoctopuce products. You must retain
+#* this notice in the distributed source file.
+#*
+#* You should refer to Yoctopuce General Terms and Conditions
+#* for additional information regarding your rights and
+#* obligations.
+#*
+#* THE SOFTWARE AND DOCUMENTATION ARE PROVIDED 'AS IS' WITHOUT
+#* WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
+#* WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS
+#* FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO
+#* EVENT SHALL LICENSOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
+#* INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA,
+#* COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR
+#* SERVICES, ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT
+#* LIMITED TO ANY DEFENSE THEREOF), ANY CLAIMS FOR INDEMNITY OR
+#* CONTRIBUTION, OR OTHER SIMILAR COSTS, WHETHER ASSERTED ON THE
+#* BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE), BREACH OF
+#* WARRANTY, OR OTHERWISE.
+#*
+#*********************************************************************/
+
+
+__docformat__ = 'restructuredtext en'
+from yocto_api import *
+
+
+#--- (YQuadratureDecoder class start)
+#noinspection PyProtectedMember
+class YQuadratureDecoder(YSensor):
+ """
+ The class YQuadratureDecoder allows you to decode a two-wire signal produced by a
+ quadrature encoder. It inherits from YSensor class the core functions to read measurements,
+ register callback functions, access to the autonomous datalogger.
+
+ """
+#--- (end of YQuadratureDecoder class start)
+ #--- (YQuadratureDecoder return codes)
+ #--- (end of YQuadratureDecoder return codes)
+ #--- (YQuadratureDecoder dlldef)
+ #--- (end of YQuadratureDecoder dlldef)
+ #--- (YQuadratureDecoder definitions)
+ SPEED_INVALID = YAPI.INVALID_DOUBLE
+ DECODING_OFF = 0
+ DECODING_ON = 1
+ DECODING_INVALID = -1
+ #--- (end of YQuadratureDecoder definitions)
+
+ def __init__(self, func):
+ super(YQuadratureDecoder, self).__init__(func)
+ self._className = 'QuadratureDecoder'
+ #--- (YQuadratureDecoder attributes)
+ self._callback = None
+ self._speed = YQuadratureDecoder.SPEED_INVALID
+ self._decoding = YQuadratureDecoder.DECODING_INVALID
+ #--- (end of YQuadratureDecoder attributes)
+
+ #--- (YQuadratureDecoder implementation)
+ def _parseAttr(self, member):
+ if member.name == "speed":
+ self._speed = round(member.ivalue * 1000.0 / 65536.0) / 1000.0
+ return 1
+ if member.name == "decoding":
+ self._decoding = member.ivalue
+ return 1
+ super(YQuadratureDecoder, self)._parseAttr(member)
+
+ def set_currentValue(self, newval):
+ """
+ Changes the current expected position of the quadrature decoder.
+ Invoking this function implicitely activates the quadrature decoder.
+
+ @param newval : a floating point number corresponding to the current expected position of the quadrature decoder
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(int(round(newval * 65536.0, 1)))
+ return self._setAttr("currentValue", rest_val)
+
+ def get_speed(self):
+ """
+ Returns the PWM frequency in Hz.
+
+ @return a floating point number corresponding to the PWM frequency in Hz
+
+ On failure, throws an exception or returns YQuadratureDecoder.SPEED_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YQuadratureDecoder.SPEED_INVALID
+ return self._speed
+
+ def get_decoding(self):
+ """
+ Returns the current activation state of the quadrature decoder.
+
+ @return either YQuadratureDecoder.DECODING_OFF or YQuadratureDecoder.DECODING_ON, according to the
+ current activation state of the quadrature decoder
+
+ On failure, throws an exception or returns YQuadratureDecoder.DECODING_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YQuadratureDecoder.DECODING_INVALID
+ return self._decoding
+
+ def set_decoding(self, newval):
+ """
+ Changes the activation state of the quadrature decoder.
+
+ @param newval : either YQuadratureDecoder.DECODING_OFF or YQuadratureDecoder.DECODING_ON, according
+ to the activation state of the quadrature decoder
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = "1" if newval > 0 else "0"
+ return self._setAttr("decoding", rest_val)
+
+ @staticmethod
+ def FindQuadratureDecoder(func):
+ """
+ Retrieves a quadrature decoder for a given identifier.
+ The identifier can be specified using several formats:
+ <ul>
+ <li>FunctionLogicalName</li>
+ <li>ModuleSerialNumber.FunctionIdentifier</li>
+ <li>ModuleSerialNumber.FunctionLogicalName</li>
+ <li>ModuleLogicalName.FunctionIdentifier</li>
+ <li>ModuleLogicalName.FunctionLogicalName</li>
+ </ul>
+
+ This function does not require that the quadrature decoder is online at the time
+ it is invoked. The returned object is nevertheless valid.
+ Use the method YQuadratureDecoder.isOnline() to test if the quadrature decoder is
+ indeed online at a given time. In case of ambiguity when looking for
+ a quadrature decoder by logical name, no error is notified: the first instance
+ found is returned. The search is performed first by hardware name,
+ then by logical name.
+
+ @param func : a string that uniquely characterizes the quadrature decoder
+
+ @return a YQuadratureDecoder object allowing you to drive the quadrature decoder.
+ """
+ # obj
+ obj = YFunction._FindFromCache("QuadratureDecoder", func)
+ if obj is None:
+ obj = YQuadratureDecoder(func)
+ YFunction._AddToCache("QuadratureDecoder", func, obj)
+ return obj
+
+ def nextQuadratureDecoder(self):
+ """
+ Continues the enumeration of quadrature decoders started using yFirstQuadratureDecoder().
+
+ @return a pointer to a YQuadratureDecoder object, corresponding to
+ a quadrature decoder currently online, or a None pointer
+ if there are no more quadrature decoders to enumerate.
+ """
+ hwidRef = YRefParam()
+ if YAPI.YISERR(self._nextFunction(hwidRef)):
+ return None
+ if hwidRef.value == "":
+ return None
+ return YQuadratureDecoder.FindQuadratureDecoder(hwidRef.value)
+
+#--- (end of YQuadratureDecoder implementation)
+
+#--- (QuadratureDecoder functions)
+
+ @staticmethod
+ def FirstQuadratureDecoder():
+ """
+ Starts the enumeration of quadrature decoders currently accessible.
+ Use the method YQuadratureDecoder.nextQuadratureDecoder() to iterate on
+ next quadrature decoders.
+
+ @return a pointer to a YQuadratureDecoder object, corresponding to
+ the first quadrature decoder currently online, or a None pointer
+ if there are none.
+ """
+ devRef = YRefParam()
+ neededsizeRef = YRefParam()
+ serialRef = YRefParam()
+ funcIdRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+ errmsgRef = YRefParam()
+ size = YAPI.C_INTSIZE
+ #noinspection PyTypeChecker,PyCallingNonCallable
+ p = (ctypes.c_int * 1)()
+ err = YAPI.apiGetFunctionsByClass("QuadratureDecoder", 0, p, size, neededsizeRef, errmsgRef)
+
+ if YAPI.YISERR(err) or not neededsizeRef.value:
+ return None
+
+ if YAPI.YISERR(
+ YAPI.yapiGetFunctionInfo(p[0], devRef, serialRef, funcIdRef, funcNameRef, funcValRef, errmsgRef)):
+ return None
+
+ return YQuadratureDecoder.FindQuadratureDecoder(serialRef.value + "." + funcIdRef.value)
+
+#--- (end of QuadratureDecoder functions)
diff --git a/yoctoLib.python.26380/Sources/yocto_rangefinder.py b/yoctoLib.python.26380/Sources/yocto_rangefinder.py
new file mode 100644
index 0000000..2df0ba7
--- /dev/null
+++ b/yoctoLib.python.26380/Sources/yocto_rangefinder.py
@@ -0,0 +1,245 @@
+#*********************************************************************
+#*
+#* $Id: yocto_rangefinder.py 26329 2017-01-11 14:04:39Z mvuilleu $
+#*
+#* Implements yFindRangeFinder(), the high-level API for RangeFinder functions
+#*
+#* - - - - - - - - - License information: - - - - - - - - -
+#*
+#* Copyright (C) 2011 and beyond by Yoctopuce Sarl, Switzerland.
+#*
+#* Yoctopuce Sarl (hereafter Licensor) grants to you a perpetual
+#* non-exclusive license to use, modify, copy and integrate this
+#* file into your software for the sole purpose of interfacing
+#* with Yoctopuce products.
+#*
+#* You may reproduce and distribute copies of this file in
+#* source or object form, as long as the sole purpose of this
+#* code is to interface with Yoctopuce products. You must retain
+#* this notice in the distributed source file.
+#*
+#* You should refer to Yoctopuce General Terms and Conditions
+#* for additional information regarding your rights and
+#* obligations.
+#*
+#* THE SOFTWARE AND DOCUMENTATION ARE PROVIDED 'AS IS' WITHOUT
+#* WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
+#* WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS
+#* FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO
+#* EVENT SHALL LICENSOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
+#* INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA,
+#* COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR
+#* SERVICES, ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT
+#* LIMITED TO ANY DEFENSE THEREOF), ANY CLAIMS FOR INDEMNITY OR
+#* CONTRIBUTION, OR OTHER SIMILAR COSTS, WHETHER ASSERTED ON THE
+#* BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE), BREACH OF
+#* WARRANTY, OR OTHERWISE.
+#*
+#*********************************************************************/
+
+
+__docformat__ = 'restructuredtext en'
+from yocto_api import *
+
+
+#--- (YRangeFinder class start)
+#noinspection PyProtectedMember
+class YRangeFinder(YSensor):
+ """
+ The Yoctopuce class YRangeFinder allows you to use and configure Yoctopuce range finders
+ sensors. It inherits from YSensor class the core functions to read measurements,
+ register callback functions, access to the autonomous datalogger.
+ This class adds the ability to easily perform a one-point linear calibration
+ to compensate the effect of a glass or filter placed in front of the sensor.
+
+ """
+#--- (end of YRangeFinder class start)
+ #--- (YRangeFinder return codes)
+ #--- (end of YRangeFinder return codes)
+ #--- (YRangeFinder dlldef)
+ #--- (end of YRangeFinder dlldef)
+ #--- (YRangeFinder definitions)
+ COMMAND_INVALID = YAPI.INVALID_STRING
+ RANGEFINDERMODE_DEFAULT = 0
+ RANGEFINDERMODE_LONG_RANGE = 1
+ RANGEFINDERMODE_HIGH_ACCURACY = 2
+ RANGEFINDERMODE_HIGH_SPEED = 3
+ RANGEFINDERMODE_INVALID = -1
+ #--- (end of YRangeFinder definitions)
+
+ def __init__(self, func):
+ super(YRangeFinder, self).__init__(func)
+ self._className = 'RangeFinder'
+ #--- (YRangeFinder attributes)
+ self._callback = None
+ self._rangeFinderMode = YRangeFinder.RANGEFINDERMODE_INVALID
+ self._command = YRangeFinder.COMMAND_INVALID
+ #--- (end of YRangeFinder attributes)
+
+ #--- (YRangeFinder implementation)
+ def _parseAttr(self, member):
+ if member.name == "rangeFinderMode":
+ self._rangeFinderMode = member.ivalue
+ return 1
+ if member.name == "command":
+ self._command = member.svalue
+ return 1
+ super(YRangeFinder, self)._parseAttr(member)
+
+ def set_unit(self, newval):
+ """
+ Changes the measuring unit for the measured temperature. That unit is a string.
+ String value can be " or mm. Any other value will be ignored.
+ Remember to call the saveToFlash() method of the module if the modification must be kept.
+ WARNING: if a specific calibration is defined for the rangeFinder function, a
+ unit system change will probably break it.
+
+ @param newval : a string corresponding to the measuring unit for the measured temperature
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = newval
+ return self._setAttr("unit", rest_val)
+
+ def get_rangeFinderMode(self):
+ """
+ Returns the rangefinder running mode. The rangefinder running mode
+ allows to put priority on precision, speed or maximum range.
+
+ @return a value among YRangeFinder.RANGEFINDERMODE_DEFAULT, YRangeFinder.RANGEFINDERMODE_LONG_RANGE,
+ YRangeFinder.RANGEFINDERMODE_HIGH_ACCURACY and YRangeFinder.RANGEFINDERMODE_HIGH_SPEED
+ corresponding to the rangefinder running mode
+
+ On failure, throws an exception or returns YRangeFinder.RANGEFINDERMODE_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YRangeFinder.RANGEFINDERMODE_INVALID
+ return self._rangeFinderMode
+
+ def set_rangeFinderMode(self, newval):
+ """
+ Changes the rangefinder running mode, allowing to put priority on
+ precision, speed or maximum range.
+
+ @param newval : a value among YRangeFinder.RANGEFINDERMODE_DEFAULT,
+ YRangeFinder.RANGEFINDERMODE_LONG_RANGE, YRangeFinder.RANGEFINDERMODE_HIGH_ACCURACY and
+ YRangeFinder.RANGEFINDERMODE_HIGH_SPEED corresponding to the rangefinder running mode, allowing to
+ put priority on
+ precision, speed or maximum range
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("rangeFinderMode", rest_val)
+
+ def get_command(self):
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YRangeFinder.COMMAND_INVALID
+ return self._command
+
+ def set_command(self, newval):
+ rest_val = newval
+ return self._setAttr("command", rest_val)
+
+ @staticmethod
+ def FindRangeFinder(func):
+ """
+ Retrieves a range finder for a given identifier.
+ The identifier can be specified using several formats:
+ <ul>
+ <li>FunctionLogicalName</li>
+ <li>ModuleSerialNumber.FunctionIdentifier</li>
+ <li>ModuleSerialNumber.FunctionLogicalName</li>
+ <li>ModuleLogicalName.FunctionIdentifier</li>
+ <li>ModuleLogicalName.FunctionLogicalName</li>
+ </ul>
+
+ This function does not require that the range finder is online at the time
+ it is invoked. The returned object is nevertheless valid.
+ Use the method YRangeFinder.isOnline() to test if the range finder is
+ indeed online at a given time. In case of ambiguity when looking for
+ a range finder by logical name, no error is notified: the first instance
+ found is returned. The search is performed first by hardware name,
+ then by logical name.
+
+ @param func : a string that uniquely characterizes the range finder
+
+ @return a YRangeFinder object allowing you to drive the range finder.
+ """
+ # obj
+ obj = YFunction._FindFromCache("RangeFinder", func)
+ if obj is None:
+ obj = YRangeFinder(func)
+ YFunction._AddToCache("RangeFinder", func, obj)
+ return obj
+
+ def triggerTempCalibration(self):
+ """
+ Triggers a sensor calibration according to the current ambient temperature. That
+ calibration process needs no physical interaction with the sensor. It is performed
+ automatically at device startup, but it is recommended to start it again when the
+ temperature delta since last calibration exceeds 8°C.
+
+ @return YAPI.SUCCESS if the call succeeds.
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.set_command("T")
+
+ def nextRangeFinder(self):
+ """
+ Continues the enumeration of range finders started using yFirstRangeFinder().
+
+ @return a pointer to a YRangeFinder object, corresponding to
+ a range finder currently online, or a None pointer
+ if there are no more range finders to enumerate.
+ """
+ hwidRef = YRefParam()
+ if YAPI.YISERR(self._nextFunction(hwidRef)):
+ return None
+ if hwidRef.value == "":
+ return None
+ return YRangeFinder.FindRangeFinder(hwidRef.value)
+
+#--- (end of YRangeFinder implementation)
+
+#--- (RangeFinder functions)
+
+ @staticmethod
+ def FirstRangeFinder():
+ """
+ Starts the enumeration of range finders currently accessible.
+ Use the method YRangeFinder.nextRangeFinder() to iterate on
+ next range finders.
+
+ @return a pointer to a YRangeFinder object, corresponding to
+ the first range finder currently online, or a None pointer
+ if there are none.
+ """
+ devRef = YRefParam()
+ neededsizeRef = YRefParam()
+ serialRef = YRefParam()
+ funcIdRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+ errmsgRef = YRefParam()
+ size = YAPI.C_INTSIZE
+ #noinspection PyTypeChecker,PyCallingNonCallable
+ p = (ctypes.c_int * 1)()
+ err = YAPI.apiGetFunctionsByClass("RangeFinder", 0, p, size, neededsizeRef, errmsgRef)
+
+ if YAPI.YISERR(err) or not neededsizeRef.value:
+ return None
+
+ if YAPI.YISERR(
+ YAPI.yapiGetFunctionInfo(p[0], devRef, serialRef, funcIdRef, funcNameRef, funcValRef, errmsgRef)):
+ return None
+
+ return YRangeFinder.FindRangeFinder(serialRef.value + "." + funcIdRef.value)
+
+#--- (end of RangeFinder functions)
diff --git a/yoctoLib.python.26380/Sources/yocto_realtimeclock.py b/yoctoLib.python.26380/Sources/yocto_realtimeclock.py
new file mode 100644
index 0000000..8b7bc54
--- /dev/null
+++ b/yoctoLib.python.26380/Sources/yocto_realtimeclock.py
@@ -0,0 +1,260 @@
+#*********************************************************************
+#*
+#* $Id: yocto_realtimeclock.py 23243 2016-02-23 14:13:12Z seb $
+#*
+#* Implements yFindRealTimeClock(), the high-level API for RealTimeClock functions
+#*
+#* - - - - - - - - - License information: - - - - - - - - -
+#*
+#* Copyright (C) 2011 and beyond by Yoctopuce Sarl, Switzerland.
+#*
+#* Yoctopuce Sarl (hereafter Licensor) grants to you a perpetual
+#* non-exclusive license to use, modify, copy and integrate this
+#* file into your software for the sole purpose of interfacing
+#* with Yoctopuce products.
+#*
+#* You may reproduce and distribute copies of this file in
+#* source or object form, as long as the sole purpose of this
+#* code is to interface with Yoctopuce products. You must retain
+#* this notice in the distributed source file.
+#*
+#* You should refer to Yoctopuce General Terms and Conditions
+#* for additional information regarding your rights and
+#* obligations.
+#*
+#* THE SOFTWARE AND DOCUMENTATION ARE PROVIDED 'AS IS' WITHOUT
+#* WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
+#* WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS
+#* FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO
+#* EVENT SHALL LICENSOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
+#* INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA,
+#* COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR
+#* SERVICES, ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT
+#* LIMITED TO ANY DEFENSE THEREOF), ANY CLAIMS FOR INDEMNITY OR
+#* CONTRIBUTION, OR OTHER SIMILAR COSTS, WHETHER ASSERTED ON THE
+#* BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE), BREACH OF
+#* WARRANTY, OR OTHERWISE.
+#*
+#*********************************************************************/
+
+
+__docformat__ = 'restructuredtext en'
+from yocto_api import *
+
+
+#--- (YRealTimeClock class start)
+#noinspection PyProtectedMember
+class YRealTimeClock(YFunction):
+ """
+ The RealTimeClock function maintains and provides current date and time, even accross power cut
+ lasting several days. It is the base for automated wake-up functions provided by the WakeUpScheduler.
+ The current time may represent a local time as well as an UTC time, but no automatic time change
+ will occur to account for daylight saving time.
+
+ """
+#--- (end of YRealTimeClock class start)
+ #--- (YRealTimeClock return codes)
+ #--- (end of YRealTimeClock return codes)
+ #--- (YRealTimeClock dlldef)
+ #--- (end of YRealTimeClock dlldef)
+ #--- (YRealTimeClock definitions)
+ UNIXTIME_INVALID = YAPI.INVALID_LONG
+ DATETIME_INVALID = YAPI.INVALID_STRING
+ UTCOFFSET_INVALID = YAPI.INVALID_INT
+ TIMESET_FALSE = 0
+ TIMESET_TRUE = 1
+ TIMESET_INVALID = -1
+ #--- (end of YRealTimeClock definitions)
+
+ def __init__(self, func):
+ super(YRealTimeClock, self).__init__(func)
+ self._className = 'RealTimeClock'
+ #--- (YRealTimeClock attributes)
+ self._callback = None
+ self._unixTime = YRealTimeClock.UNIXTIME_INVALID
+ self._dateTime = YRealTimeClock.DATETIME_INVALID
+ self._utcOffset = YRealTimeClock.UTCOFFSET_INVALID
+ self._timeSet = YRealTimeClock.TIMESET_INVALID
+ #--- (end of YRealTimeClock attributes)
+
+ #--- (YRealTimeClock implementation)
+ def _parseAttr(self, member):
+ if member.name == "unixTime":
+ self._unixTime = member.ivalue
+ return 1
+ if member.name == "dateTime":
+ self._dateTime = member.svalue
+ return 1
+ if member.name == "utcOffset":
+ self._utcOffset = member.ivalue
+ return 1
+ if member.name == "timeSet":
+ self._timeSet = member.ivalue
+ return 1
+ super(YRealTimeClock, self)._parseAttr(member)
+
+ def get_unixTime(self):
+ """
+ Returns the current time in Unix format (number of elapsed seconds since Jan 1st, 1970).
+
+ @return an integer corresponding to the current time in Unix format (number of elapsed seconds
+ since Jan 1st, 1970)
+
+ On failure, throws an exception or returns YRealTimeClock.UNIXTIME_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YRealTimeClock.UNIXTIME_INVALID
+ return self._unixTime
+
+ def set_unixTime(self, newval):
+ """
+ Changes the current time. Time is specifid in Unix format (number of elapsed seconds since Jan 1st, 1970).
+
+ @param newval : an integer corresponding to the current time
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("unixTime", rest_val)
+
+ def get_dateTime(self):
+ """
+ Returns the current time in the form "YYYY/MM/DD hh:mm:ss".
+
+ @return a string corresponding to the current time in the form "YYYY/MM/DD hh:mm:ss"
+
+ On failure, throws an exception or returns YRealTimeClock.DATETIME_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YRealTimeClock.DATETIME_INVALID
+ return self._dateTime
+
+ def get_utcOffset(self):
+ """
+ Returns the number of seconds between current time and UTC time (time zone).
+
+ @return an integer corresponding to the number of seconds between current time and UTC time (time zone)
+
+ On failure, throws an exception or returns YRealTimeClock.UTCOFFSET_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YRealTimeClock.UTCOFFSET_INVALID
+ return self._utcOffset
+
+ def set_utcOffset(self, newval):
+ """
+ Changes the number of seconds between current time and UTC time (time zone).
+ The timezone is automatically rounded to the nearest multiple of 15 minutes.
+
+ @param newval : an integer corresponding to the number of seconds between current time and UTC time (time zone)
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("utcOffset", rest_val)
+
+ def get_timeSet(self):
+ """
+ Returns true if the clock has been set, and false otherwise.
+
+ @return either YRealTimeClock.TIMESET_FALSE or YRealTimeClock.TIMESET_TRUE, according to true if
+ the clock has been set, and false otherwise
+
+ On failure, throws an exception or returns YRealTimeClock.TIMESET_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YRealTimeClock.TIMESET_INVALID
+ return self._timeSet
+
+ @staticmethod
+ def FindRealTimeClock(func):
+ """
+ Retrieves a clock for a given identifier.
+ The identifier can be specified using several formats:
+ <ul>
+ <li>FunctionLogicalName</li>
+ <li>ModuleSerialNumber.FunctionIdentifier</li>
+ <li>ModuleSerialNumber.FunctionLogicalName</li>
+ <li>ModuleLogicalName.FunctionIdentifier</li>
+ <li>ModuleLogicalName.FunctionLogicalName</li>
+ </ul>
+
+ This function does not require that the clock is online at the time
+ it is invoked. The returned object is nevertheless valid.
+ Use the method YRealTimeClock.isOnline() to test if the clock is
+ indeed online at a given time. In case of ambiguity when looking for
+ a clock by logical name, no error is notified: the first instance
+ found is returned. The search is performed first by hardware name,
+ then by logical name.
+
+ @param func : a string that uniquely characterizes the clock
+
+ @return a YRealTimeClock object allowing you to drive the clock.
+ """
+ # obj
+ obj = YFunction._FindFromCache("RealTimeClock", func)
+ if obj is None:
+ obj = YRealTimeClock(func)
+ YFunction._AddToCache("RealTimeClock", func, obj)
+ return obj
+
+ def nextRealTimeClock(self):
+ """
+ Continues the enumeration of clocks started using yFirstRealTimeClock().
+
+ @return a pointer to a YRealTimeClock object, corresponding to
+ a clock currently online, or a None pointer
+ if there are no more clocks to enumerate.
+ """
+ hwidRef = YRefParam()
+ if YAPI.YISERR(self._nextFunction(hwidRef)):
+ return None
+ if hwidRef.value == "":
+ return None
+ return YRealTimeClock.FindRealTimeClock(hwidRef.value)
+
+#--- (end of YRealTimeClock implementation)
+
+#--- (RealTimeClock functions)
+
+ @staticmethod
+ def FirstRealTimeClock():
+ """
+ Starts the enumeration of clocks currently accessible.
+ Use the method YRealTimeClock.nextRealTimeClock() to iterate on
+ next clocks.
+
+ @return a pointer to a YRealTimeClock object, corresponding to
+ the first clock currently online, or a None pointer
+ if there are none.
+ """
+ devRef = YRefParam()
+ neededsizeRef = YRefParam()
+ serialRef = YRefParam()
+ funcIdRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+ errmsgRef = YRefParam()
+ size = YAPI.C_INTSIZE
+ #noinspection PyTypeChecker,PyCallingNonCallable
+ p = (ctypes.c_int * 1)()
+ err = YAPI.apiGetFunctionsByClass("RealTimeClock", 0, p, size, neededsizeRef, errmsgRef)
+
+ if YAPI.YISERR(err) or not neededsizeRef.value:
+ return None
+
+ if YAPI.YISERR(
+ YAPI.yapiGetFunctionInfo(p[0], devRef, serialRef, funcIdRef, funcNameRef, funcValRef, errmsgRef)):
+ return None
+
+ return YRealTimeClock.FindRealTimeClock(serialRef.value + "." + funcIdRef.value)
+
+#--- (end of RealTimeClock functions)
diff --git a/yoctoLib.python.26380/Sources/yocto_refframe.py b/yoctoLib.python.26380/Sources/yocto_refframe.py
new file mode 100644
index 0000000..c3fb114
--- /dev/null
+++ b/yoctoLib.python.26380/Sources/yocto_refframe.py
@@ -0,0 +1,827 @@
+#*********************************************************************
+#*
+#* $Id: yocto_refframe.py 25275 2016-08-24 13:42:24Z mvuilleu $
+#*
+#* Implements yFindRefFrame(), the high-level API for RefFrame functions
+#*
+#* - - - - - - - - - License information: - - - - - - - - -
+#*
+#* Copyright (C) 2011 and beyond by Yoctopuce Sarl, Switzerland.
+#*
+#* Yoctopuce Sarl (hereafter Licensor) grants to you a perpetual
+#* non-exclusive license to use, modify, copy and integrate this
+#* file into your software for the sole purpose of interfacing
+#* with Yoctopuce products.
+#*
+#* You may reproduce and distribute copies of this file in
+#* source or object form, as long as the sole purpose of this
+#* code is to interface with Yoctopuce products. You must retain
+#* this notice in the distributed source file.
+#*
+#* You should refer to Yoctopuce General Terms and Conditions
+#* for additional information regarding your rights and
+#* obligations.
+#*
+#* THE SOFTWARE AND DOCUMENTATION ARE PROVIDED 'AS IS' WITHOUT
+#* WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
+#* WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS
+#* FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO
+#* EVENT SHALL LICENSOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
+#* INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA,
+#* COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR
+#* SERVICES, ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT
+#* LIMITED TO ANY DEFENSE THEREOF), ANY CLAIMS FOR INDEMNITY OR
+#* CONTRIBUTION, OR OTHER SIMILAR COSTS, WHETHER ASSERTED ON THE
+#* BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE), BREACH OF
+#* WARRANTY, OR OTHERWISE.
+#*
+#*********************************************************************/
+
+
+__docformat__ = 'restructuredtext en'
+from yocto_api import *
+
+
+#--- (YRefFrame class start)
+#noinspection PyProtectedMember
+class YRefFrame(YFunction):
+ """
+ This class is used to setup the base orientation of the Yocto-3D, so that
+ the orientation functions, relative to the earth surface plane, use
+ the proper reference frame. The class also implements a tridimensional
+ sensor calibration process, which can compensate for local variations
+ of standard gravity and improve the precision of the tilt sensors.
+
+ """
+#--- (end of YRefFrame class start)
+ #--- (YRefFrame return codes)
+ #--- (end of YRefFrame return codes)
+ #--- (YRefFrame dlldef)
+ #--- (end of YRefFrame dlldef)
+ #--- (YRefFrame definitions)
+ class MOUNTPOSITION:
+ def __init__(self):
+ pass
+ BOTTOM, TOP, FRONT, REAR, RIGHT, LEFT, INVALID = range(7)
+ class MOUNTORIENTATION:
+ def __init__(self):
+ pass
+ TWELVE, THREE, SIX, NINE, INVALID = range(5)
+ MOUNTPOS_INVALID = YAPI.INVALID_UINT
+ BEARING_INVALID = YAPI.INVALID_DOUBLE
+ CALIBRATIONPARAM_INVALID = YAPI.INVALID_STRING
+ #--- (end of YRefFrame definitions)
+
+ def __init__(self, func):
+ super(YRefFrame, self).__init__(func)
+ self._className = 'RefFrame'
+ #--- (YRefFrame attributes)
+ self._callback = None
+ self._mountPos = YRefFrame.MOUNTPOS_INVALID
+ self._bearing = YRefFrame.BEARING_INVALID
+ self._calibrationParam = YRefFrame.CALIBRATIONPARAM_INVALID
+ self._calibV2 = 0
+ self._calibStage = 0
+ self._calibStageHint = ''
+ self._calibStageProgress = 0
+ self._calibProgress = 0
+ self._calibLogMsg = ''
+ self._calibSavedParams = ''
+ self._calibCount = 0
+ self._calibInternalPos = 0
+ self._calibPrevTick = 0
+ self._calibOrient = []
+ self._calibDataAccX = []
+ self._calibDataAccY = []
+ self._calibDataAccZ = []
+ self._calibDataAcc = []
+ self._calibAccXOfs = 0
+ self._calibAccYOfs = 0
+ self._calibAccZOfs = 0
+ self._calibAccXScale = 0
+ self._calibAccYScale = 0
+ self._calibAccZScale = 0
+ #--- (end of YRefFrame attributes)
+
+ #--- (YRefFrame implementation)
+ def _parseAttr(self, member):
+ if member.name == "mountPos":
+ self._mountPos = member.ivalue
+ return 1
+ if member.name == "bearing":
+ self._bearing = round(member.ivalue * 1000.0 / 65536.0) / 1000.0
+ return 1
+ if member.name == "calibrationParam":
+ self._calibrationParam = member.svalue
+ return 1
+ super(YRefFrame, self)._parseAttr(member)
+
+ def get_mountPos(self):
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YRefFrame.MOUNTPOS_INVALID
+ return self._mountPos
+
+ def set_mountPos(self, newval):
+ rest_val = str(newval)
+ return self._setAttr("mountPos", rest_val)
+
+ def set_bearing(self, newval):
+ """
+ Changes the reference bearing used by the compass. The relative bearing
+ indicated by the compass is the difference between the measured magnetic
+ heading and the reference bearing indicated here.
+
+ For instance, if you setup as reference bearing the value of the earth
+ magnetic declination, the compass will provide the orientation relative
+ to the geographic North.
+
+ Similarly, when the sensor is not mounted along the standard directions
+ because it has an additional yaw angle, you can set this angle in the reference
+ bearing so that the compass provides the expected natural direction.
+
+ Remember to call the saveToFlash()
+ method of the module if the modification must be kept.
+
+ @param newval : a floating point number corresponding to the reference bearing used by the compass
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(int(round(newval * 65536.0, 1)))
+ return self._setAttr("bearing", rest_val)
+
+ def get_bearing(self):
+ """
+ Returns the reference bearing used by the compass. The relative bearing
+ indicated by the compass is the difference between the measured magnetic
+ heading and the reference bearing indicated here.
+
+ @return a floating point number corresponding to the reference bearing used by the compass
+
+ On failure, throws an exception or returns YRefFrame.BEARING_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YRefFrame.BEARING_INVALID
+ return self._bearing
+
+ def get_calibrationParam(self):
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YRefFrame.CALIBRATIONPARAM_INVALID
+ return self._calibrationParam
+
+ def set_calibrationParam(self, newval):
+ rest_val = newval
+ return self._setAttr("calibrationParam", rest_val)
+
+ @staticmethod
+ def FindRefFrame(func):
+ """
+ Retrieves a reference frame for a given identifier.
+ The identifier can be specified using several formats:
+ <ul>
+ <li>FunctionLogicalName</li>
+ <li>ModuleSerialNumber.FunctionIdentifier</li>
+ <li>ModuleSerialNumber.FunctionLogicalName</li>
+ <li>ModuleLogicalName.FunctionIdentifier</li>
+ <li>ModuleLogicalName.FunctionLogicalName</li>
+ </ul>
+
+ This function does not require that the reference frame is online at the time
+ it is invoked. The returned object is nevertheless valid.
+ Use the method YRefFrame.isOnline() to test if the reference frame is
+ indeed online at a given time. In case of ambiguity when looking for
+ a reference frame by logical name, no error is notified: the first instance
+ found is returned. The search is performed first by hardware name,
+ then by logical name.
+
+ @param func : a string that uniquely characterizes the reference frame
+
+ @return a YRefFrame object allowing you to drive the reference frame.
+ """
+ # obj
+ obj = YFunction._FindFromCache("RefFrame", func)
+ if obj is None:
+ obj = YRefFrame(func)
+ YFunction._AddToCache("RefFrame", func, obj)
+ return obj
+
+ def get_mountPosition(self):
+ """
+ Returns the installation position of the device, as configured
+ in order to define the reference frame for the compass and the
+ pitch/roll tilt sensors.
+
+ @return a value among the YRefFrame.MOUNTPOSITION enumeration
+ (YRefFrame.MOUNTPOSITION.BOTTOM, YRefFrame.MOUNTPOSITION.TOP,
+ YRefFrame.MOUNTPOSITION.FRONT, YRefFrame.MOUNTPOSITION.RIGHT,
+ YRefFrame.MOUNTPOSITION.REAR, YRefFrame.MOUNTPOSITION.LEFT),
+ corresponding to the installation in a box, on one of the six faces.
+
+ On failure, throws an exception or returns YRefFrame.MOUNTPOSITION.INVALID.
+ """
+ # position
+ position = self.get_mountPos()
+ if position < 0:
+ return YRefFrame.MOUNTPOSITION.INVALID
+ return ((position) >> (2))
+
+ def get_mountOrientation(self):
+ """
+ Returns the installation orientation of the device, as configured
+ in order to define the reference frame for the compass and the
+ pitch/roll tilt sensors.
+
+ @return a value among the enumeration YRefFrame.MOUNTORIENTATION
+ (YRefFrame.MOUNTORIENTATION.TWELVE, YRefFrame.MOUNTORIENTATION.THREE,
+ YRefFrame.MOUNTORIENTATION.SIX, YRefFrame.MOUNTORIENTATION.NINE)
+ corresponding to the orientation of the "X" arrow on the device,
+ as on a clock dial seen from an observer in the center of the box.
+ On the bottom face, the 12H orientation points to the front, while
+ on the top face, the 12H orientation points to the rear.
+
+ On failure, throws an exception or returns YRefFrame.MOUNTORIENTATION.INVALID.
+ """
+ # position
+ position = self.get_mountPos()
+ if position < 0:
+ return YRefFrame.MOUNTORIENTATION.INVALID
+ return ((position) & (3))
+
+ def set_mountPosition(self, position, orientation):
+ """
+ Changes the compass and tilt sensor frame of reference. The magnetic compass
+ and the tilt sensors (pitch and roll) naturally work in the plane
+ parallel to the earth surface. In case the device is not installed upright
+ and horizontally, you must select its reference orientation (parallel to
+ the earth surface) so that the measures are made relative to this position.
+
+ @param position : a value among the YRefFrame.MOUNTPOSITION enumeration
+ (YRefFrame.MOUNTPOSITION.BOTTOM, YRefFrame.MOUNTPOSITION.TOP,
+ YRefFrame.MOUNTPOSITION.FRONT, YRefFrame.MOUNTPOSITION.RIGHT,
+ YRefFrame.MOUNTPOSITION.REAR, YRefFrame.MOUNTPOSITION.LEFT),
+ corresponding to the installation in a box, on one of the six faces.
+ @param orientation : a value among the enumeration YRefFrame.MOUNTORIENTATION
+ (YRefFrame.MOUNTORIENTATION.TWELVE, YRefFrame.MOUNTORIENTATION.THREE,
+ YRefFrame.MOUNTORIENTATION.SIX, YRefFrame.MOUNTORIENTATION.NINE)
+ corresponding to the orientation of the "X" arrow on the device,
+ as on a clock dial seen from an observer in the center of the box.
+ On the bottom face, the 12H orientation points to the front, while
+ on the top face, the 12H orientation points to the rear.
+
+ Remember to call the saveToFlash()
+ method of the module if the modification must be kept.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ # mixedPos
+ mixedPos = ((position) << (2)) + orientation
+ return self.set_mountPos(mixedPos)
+
+ def get_calibrationState(self):
+ """
+ Returns the 3D sensor calibration state (Yocto-3D-V2 only). This function returns
+ an integer representing the calibration state of the 3 inertial sensors of
+ the BNO055 chip, found in the Yocto-3D-V2. Hundredths show the calibration state
+ of the accelerometer, tenths show the calibration state of the magnetometer while
+ units show the calibration state of the gyroscope. For each sensor, the value 0
+ means no calibration and the value 3 means full calibration.
+
+ @return an integer representing the calibration state of Yocto-3D-V2:
+ 333 when fully calibrated, 0 when not calibrated at all.
+
+ On failure, throws an exception or returns a negative error code.
+ For the Yocto-3D (V1), this function always return -3 (unsupported function).
+ """
+ # calibParam
+ iCalib = []
+ # caltyp
+ # res
+ # // may throw an exception
+ calibParam = self.get_calibrationParam()
+ iCalib = YAPI._decodeFloats(calibParam)
+ caltyp = int((iCalib[0]) / (1000))
+ if caltyp != 33:
+ return YAPI.NOT_SUPPORTED
+ res = int((iCalib[1]) / (1000))
+ return res
+
+ def get_measureQuality(self):
+ """
+ Returns estimated quality of the orientation (Yocto-3D-V2 only). This function returns
+ an integer between 0 and 3 representing the degree of confidence of the position
+ estimate. When the value is 3, the estimation is reliable. Below 3, one should
+ expect sudden corrections, in particular for heading (compass function).
+ The most frequent causes for values below 3 are magnetic interferences, and
+ accelerations or rotations beyond the sensor range.
+
+ @return an integer between 0 and 3 (3 when the measure is reliable)
+
+ On failure, throws an exception or returns a negative error code.
+ For the Yocto-3D (V1), this function always return -3 (unsupported function).
+ """
+ # calibParam
+ iCalib = []
+ # caltyp
+ # res
+ # // may throw an exception
+ calibParam = self.get_calibrationParam()
+ iCalib = YAPI._decodeFloats(calibParam)
+ caltyp = int((iCalib[0]) / (1000))
+ if caltyp != 33:
+ return YAPI.NOT_SUPPORTED
+ res = int((iCalib[2]) / (1000))
+ return res
+
+ def _calibSort(self, start, stopidx):
+ # idx
+ # changed
+ # a
+ # b
+ # xa
+ # xb
+ # // bubble sort is good since we will re-sort again after offset adjustment
+ changed = 1
+ while changed > 0:
+ changed = 0
+ a = self._calibDataAcc[start]
+ idx = start + 1
+ while idx < stopidx:
+ b = self._calibDataAcc[idx]
+ if a > b:
+ self._calibDataAcc[idx-1] = b
+ self._calibDataAcc[idx] = a
+ xa = self._calibDataAccX[idx-1]
+ xb = self._calibDataAccX[idx]
+ self._calibDataAccX[idx-1] = xb
+ self._calibDataAccX[idx] = xa
+ xa = self._calibDataAccY[idx-1]
+ xb = self._calibDataAccY[idx]
+ self._calibDataAccY[idx-1] = xb
+ self._calibDataAccY[idx] = xa
+ xa = self._calibDataAccZ[idx-1]
+ xb = self._calibDataAccZ[idx]
+ self._calibDataAccZ[idx-1] = xb
+ self._calibDataAccZ[idx] = xa
+ changed = changed + 1
+ else:
+ a = b
+ idx = idx + 1
+ return 0
+
+ def start3DCalibration(self):
+ """
+ Initiates the sensors tridimensional calibration process.
+ This calibration is used at low level for inertial position estimation
+ and to enhance the precision of the tilt sensors.
+
+ After calling this method, the device should be moved according to the
+ instructions provided by method get_3DCalibrationHint,
+ and more3DCalibration should be invoked about 5 times per second.
+ The calibration procedure is completed when the method
+ get_3DCalibrationProgress returns 100. At this point,
+ the computed calibration parameters can be applied using method
+ save3DCalibration. The calibration process can be canceled
+ at any time using method cancel3DCalibration.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ # // may throw an exception
+ if not (self.isOnline()):
+ return YAPI.DEVICE_NOT_FOUND
+ if self._calibStage != 0:
+ self.cancel3DCalibration()
+ self._calibSavedParams = self.get_calibrationParam()
+ self._calibV2 = (YAPI._atoi(self._calibSavedParams) == 33)
+ self.set_calibrationParam("0")
+ self._calibCount = 50
+ self._calibStage = 1
+ self._calibStageHint = "Set down the device on a steady horizontal surface"
+ self._calibStageProgress = 0
+ self._calibProgress = 1
+ self._calibInternalPos = 0
+ self._calibPrevTick = (YRelTickCount(YAPI.GetTickCount()) & (0x7FFFFFFF))
+ del self._calibOrient[:]
+ del self._calibDataAccX[:]
+ del self._calibDataAccY[:]
+ del self._calibDataAccZ[:]
+ del self._calibDataAcc[:]
+ return YAPI.SUCCESS
+
+ def more3DCalibration(self):
+ """
+ Continues the sensors tridimensional calibration process previously
+ initiated using method start3DCalibration.
+ This method should be called approximately 5 times per second, while
+ positioning the device according to the instructions provided by method
+ get_3DCalibrationHint. Note that the instructions change during
+ the calibration process.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ # // may throw an exception
+ if self._calibV2:
+ return self.more3DCalibrationV2()
+ return self.more3DCalibrationV1()
+
+ def more3DCalibrationV1(self):
+ # // may throw an exception
+ # currTick
+ # jsonData
+ # xVal
+ # yVal
+ # zVal
+ # xSq
+ # ySq
+ # zSq
+ # norm
+ # orient
+ # idx
+ # intpos
+ # err
+ # // make sure calibration has been started
+ if self._calibStage == 0:
+ return YAPI.INVALID_ARGUMENT
+ if self._calibProgress == 100:
+ return YAPI.SUCCESS
+ # // make sure we leave at least 160ms between samples
+ currTick = (YRelTickCount(YAPI.GetTickCount()) & (0x7FFFFFFF))
+ if ((currTick - self._calibPrevTick) & (0x7FFFFFFF)) < 160:
+ return YAPI.SUCCESS
+ # // load current accelerometer values, make sure we are on a straight angle
+ # // (default timeout to 0,5 sec without reading measure when out of range)
+ self._calibStageHint = "Set down the device on a steady horizontal surface"
+ self._calibPrevTick = ((currTick + 500) & (0x7FFFFFFF))
+ jsonData = self._download("api/accelerometer.json")
+ xVal = YAPI._atoi(self._json_get_key(jsonData, "xValue")) / 65536.0
+ yVal = YAPI._atoi(self._json_get_key(jsonData, "yValue")) / 65536.0
+ zVal = YAPI._atoi(self._json_get_key(jsonData, "zValue")) / 65536.0
+ xSq = xVal * xVal
+ if xSq >= 0.04 and xSq < 0.64:
+ return YAPI.SUCCESS
+ if xSq >= 1.44:
+ return YAPI.SUCCESS
+ ySq = yVal * yVal
+ if ySq >= 0.04 and ySq < 0.64:
+ return YAPI.SUCCESS
+ if ySq >= 1.44:
+ return YAPI.SUCCESS
+ zSq = zVal * zVal
+ if zSq >= 0.04 and zSq < 0.64:
+ return YAPI.SUCCESS
+ if zSq >= 1.44:
+ return YAPI.SUCCESS
+ norm = sqrt(xSq + ySq + zSq)
+ if norm < 0.8 or norm > 1.2:
+ return YAPI.SUCCESS
+ self._calibPrevTick = currTick
+ # // Determine the device orientation index
+ orient = 0
+ if zSq > 0.5:
+ if zVal > 0:
+ orient = 0
+ else:
+ orient = 1
+ if xSq > 0.5:
+ if xVal > 0:
+ orient = 2
+ else:
+ orient = 3
+ if ySq > 0.5:
+ if yVal > 0:
+ orient = 4
+ else:
+ orient = 5
+ # // Discard measures that are not in the proper orientation
+ if self._calibStageProgress == 0:
+ #
+ idx = 0
+ err = 0
+ while idx + 1 < self._calibStage:
+ if self._calibOrient[idx] == orient:
+ err = 1
+ idx = idx + 1
+ if err != 0:
+ self._calibStageHint = "Turn the device on another face"
+ return YAPI.SUCCESS
+ self._calibOrient.append(orient)
+ else:
+ #
+ if orient != self._calibOrient[self._calibStage-1]:
+ self._calibStageHint = "Not yet done, please move back to the previous face"
+ return YAPI.SUCCESS
+ # // Save measure
+ self._calibStageHint = "calibrating.."
+ self._calibDataAccX.append(xVal)
+ self._calibDataAccY.append(yVal)
+ self._calibDataAccZ.append(zVal)
+ self._calibDataAcc.append(norm)
+ self._calibInternalPos = self._calibInternalPos + 1
+ self._calibProgress = 1 + 16 * (self._calibStage - 1) + int((16 * self._calibInternalPos) / (self._calibCount))
+ if self._calibInternalPos < self._calibCount:
+ self._calibStageProgress = 1 + int((99 * self._calibInternalPos) / (self._calibCount))
+ return YAPI.SUCCESS
+ # // Stage done, compute preliminary result
+ intpos = (self._calibStage - 1) * self._calibCount
+ self._calibSort(intpos, intpos + self._calibCount)
+ intpos = intpos + int((self._calibCount) / (2))
+ self._calibLogMsg = "Stage " + str(int(self._calibStage)) + ": median is " + str(int(round(1000*self._calibDataAccX[intpos]))) + "," + str(int(round(1000*self._calibDataAccY[intpos]))) + "," + str(int(round(1000*self._calibDataAccZ[intpos])))
+ # // move to next stage
+ self._calibStage = self._calibStage + 1
+ if self._calibStage < 7:
+ self._calibStageHint = "Turn the device on another face"
+ self._calibPrevTick = ((currTick + 500) & (0x7FFFFFFF))
+ self._calibStageProgress = 0
+ self._calibInternalPos = 0
+ return YAPI.SUCCESS
+ # // Data collection completed, compute accelerometer shift
+ xVal = 0
+ yVal = 0
+ zVal = 0
+ idx = 0
+ while idx < 6:
+ intpos = idx * self._calibCount + int((self._calibCount) / (2))
+ orient = self._calibOrient[idx]
+ if orient == 0 or orient == 1:
+ zVal = zVal + self._calibDataAccZ[intpos]
+ if orient == 2 or orient == 3:
+ xVal = xVal + self._calibDataAccX[intpos]
+ if orient == 4 or orient == 5:
+ yVal = yVal + self._calibDataAccY[intpos]
+ idx = idx + 1
+ self._calibAccXOfs = xVal / 2.0
+ self._calibAccYOfs = yVal / 2.0
+ self._calibAccZOfs = zVal / 2.0
+ # // Recompute all norms, taking into account the computed shift, and re-sort
+ intpos = 0
+ while intpos < len(self._calibDataAcc):
+ xVal = self._calibDataAccX[intpos] - self._calibAccXOfs
+ yVal = self._calibDataAccY[intpos] - self._calibAccYOfs
+ zVal = self._calibDataAccZ[intpos] - self._calibAccZOfs
+ norm = sqrt(xVal * xVal + yVal * yVal + zVal * zVal)
+ self._calibDataAcc[intpos] = norm
+ intpos = intpos + 1
+ idx = 0
+ while idx < 6:
+ intpos = idx * self._calibCount
+ self._calibSort(intpos, intpos + self._calibCount)
+ idx = idx + 1
+ # // Compute the scaling factor for each axis
+ xVal = 0
+ yVal = 0
+ zVal = 0
+ idx = 0
+ while idx < 6:
+ intpos = idx * self._calibCount + int((self._calibCount) / (2))
+ orient = self._calibOrient[idx]
+ if orient == 0 or orient == 1:
+ zVal = zVal + self._calibDataAcc[intpos]
+ if orient == 2 or orient == 3:
+ xVal = xVal + self._calibDataAcc[intpos]
+ if orient == 4 or orient == 5:
+ yVal = yVal + self._calibDataAcc[intpos]
+ idx = idx + 1
+ self._calibAccXScale = xVal / 2.0
+ self._calibAccYScale = yVal / 2.0
+ self._calibAccZScale = zVal / 2.0
+ # // Report completion
+ self._calibProgress = 100
+ self._calibStageHint = "Calibration data ready for saving"
+ return YAPI.SUCCESS
+
+ def more3DCalibrationV2(self):
+ # currTick
+ # calibParam
+ iCalib = []
+ # cal3
+ # calAcc
+ # calMag
+ # calGyr
+ # // make sure calibration has been started
+ if self._calibStage == 0:
+ return YAPI.INVALID_ARGUMENT
+ if self._calibProgress == 100:
+ return YAPI.SUCCESS
+ # // make sure we don't start before previous calibration is cleared
+ if self._calibStage == 1:
+ currTick = (YRelTickCount(YAPI.GetTickCount()) & (0x7FFFFFFF))
+ currTick = ((currTick - self._calibPrevTick) & (0x7FFFFFFF))
+ if currTick < 1600:
+ self._calibStageHint = "Set down the device on a steady horizontal surface"
+ self._calibStageProgress = int((currTick) / (40))
+ self._calibProgress = 1
+ return YAPI.SUCCESS
+ # // may throw an exception
+ calibParam = self._download("api/refFrame/calibrationParam.txt")
+ iCalib = YAPI._decodeFloats(YByte2String(calibParam))
+ cal3 = int((iCalib[1]) / (1000))
+ calAcc = int((cal3) / (100))
+ calMag = int((cal3) / (10)) - 10*calAcc
+ calGyr = ((cal3) % (10))
+ if calGyr < 3:
+ self._calibStageHint = "Set down the device on a steady horizontal surface"
+ self._calibStageProgress = 40 + calGyr*20
+ self._calibProgress = 4 + calGyr*2
+ else:
+ self._calibStage = 2
+ if calMag < 3:
+ self._calibStageHint = "Slowly draw '8' shapes along the 3 axis"
+ self._calibStageProgress = 1 + calMag*33
+ self._calibProgress = 10 + calMag*5
+ else:
+ self._calibStage = 3
+ if calAcc < 3:
+ self._calibStageHint = "Slowly turn the device, stopping at each 90 degrees"
+ self._calibStageProgress = 1 + calAcc*33
+ self._calibProgress = 25 + calAcc*25
+ else:
+ self._calibStageProgress = 99
+ self._calibProgress = 100
+ return YAPI.SUCCESS
+
+ def get_3DCalibrationHint(self):
+ """
+ Returns instructions to proceed to the tridimensional calibration initiated with
+ method start3DCalibration.
+
+ @return a character string.
+ """
+ return self._calibStageHint
+
+ def get_3DCalibrationProgress(self):
+ """
+ Returns the global process indicator for the tridimensional calibration
+ initiated with method start3DCalibration.
+
+ @return an integer between 0 (not started) and 100 (stage completed).
+ """
+ return self._calibProgress
+
+ def get_3DCalibrationStage(self):
+ """
+ Returns index of the current stage of the calibration
+ initiated with method start3DCalibration.
+
+ @return an integer, growing each time a calibration stage is completed.
+ """
+ return self._calibStage
+
+ def get_3DCalibrationStageProgress(self):
+ """
+ Returns the process indicator for the current stage of the calibration
+ initiated with method start3DCalibration.
+
+ @return an integer between 0 (not started) and 100 (stage completed).
+ """
+ return self._calibStageProgress
+
+ def get_3DCalibrationLogMsg(self):
+ """
+ Returns the latest log message from the calibration process.
+ When no new message is available, returns an empty string.
+
+ @return a character string.
+ """
+ # msg
+ msg = self._calibLogMsg
+ self._calibLogMsg = ""
+ return msg
+
+ def save3DCalibration(self):
+ """
+ Applies the sensors tridimensional calibration parameters that have just been computed.
+ Remember to call the saveToFlash() method of the module if the changes
+ must be kept when the device is restarted.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ # // may throw an exception
+ if self._calibV2:
+ return self.save3DCalibrationV2()
+ return self.save3DCalibrationV1()
+
+ def save3DCalibrationV1(self):
+ # // may throw an exception
+ # shiftX
+ # shiftY
+ # shiftZ
+ # scaleExp
+ # scaleX
+ # scaleY
+ # scaleZ
+ # scaleLo
+ # scaleHi
+ # newcalib
+ if self._calibProgress != 100:
+ return YAPI.INVALID_ARGUMENT
+ # // Compute integer values (correction unit is 732ug/count)
+ shiftX = -round(self._calibAccXOfs / 0.000732)
+ if shiftX < 0:
+ shiftX = shiftX + 65536
+ shiftY = -round(self._calibAccYOfs / 0.000732)
+ if shiftY < 0:
+ shiftY = shiftY + 65536
+ shiftZ = -round(self._calibAccZOfs / 0.000732)
+ if shiftZ < 0:
+ shiftZ = shiftZ + 65536
+ scaleX = round(2048.0 / self._calibAccXScale) - 2048
+ scaleY = round(2048.0 / self._calibAccYScale) - 2048
+ scaleZ = round(2048.0 / self._calibAccZScale) - 2048
+ if scaleX < -2048 or scaleX >= 2048 or scaleY < -2048 or scaleY >= 2048 or scaleZ < -2048 or scaleZ >= 2048:
+ scaleExp = 3
+ else:
+ if scaleX < -1024 or scaleX >= 1024 or scaleY < -1024 or scaleY >= 1024 or scaleZ < -1024 or scaleZ >= 1024:
+ scaleExp = 2
+ else:
+ if scaleX < -512 or scaleX >= 512 or scaleY < -512 or scaleY >= 512 or scaleZ < -512 or scaleZ >= 512:
+ scaleExp = 1
+ else:
+ scaleExp = 0
+ if scaleExp > 0:
+ scaleX = ((scaleX) >> (scaleExp))
+ scaleY = ((scaleY) >> (scaleExp))
+ scaleZ = ((scaleZ) >> (scaleExp))
+ if scaleX < 0:
+ scaleX = scaleX + 1024
+ if scaleY < 0:
+ scaleY = scaleY + 1024
+ if scaleZ < 0:
+ scaleZ = scaleZ + 1024
+ scaleLo = ((((scaleY) & (15))) << (12)) + ((scaleX) << (2)) + scaleExp
+ scaleHi = ((scaleZ) << (6)) + ((scaleY) >> (4))
+ # // Save calibration parameters
+ newcalib = "5," + str(int(shiftX)) + "," + str(int(shiftY)) + "," + str(int(shiftZ)) + "," + str(int(scaleLo)) + "," + str(int(scaleHi))
+ self._calibStage = 0
+ return self.set_calibrationParam(newcalib)
+
+ def save3DCalibrationV2(self):
+ # // may throw an exception
+ return self.set_calibrationParam("5,5,5,5,5,5")
+
+ def cancel3DCalibration(self):
+ """
+ Aborts the sensors tridimensional calibration process et restores normal settings.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ if self._calibStage == 0:
+ return YAPI.SUCCESS
+ # // may throw an exception
+ self._calibStage = 0
+ return self.set_calibrationParam(self._calibSavedParams)
+
+ def nextRefFrame(self):
+ """
+ Continues the enumeration of reference frames started using yFirstRefFrame().
+
+ @return a pointer to a YRefFrame object, corresponding to
+ a reference frame currently online, or a None pointer
+ if there are no more reference frames to enumerate.
+ """
+ hwidRef = YRefParam()
+ if YAPI.YISERR(self._nextFunction(hwidRef)):
+ return None
+ if hwidRef.value == "":
+ return None
+ return YRefFrame.FindRefFrame(hwidRef.value)
+
+#--- (end of YRefFrame implementation)
+
+#--- (RefFrame functions)
+
+ @staticmethod
+ def FirstRefFrame():
+ """
+ Starts the enumeration of reference frames currently accessible.
+ Use the method YRefFrame.nextRefFrame() to iterate on
+ next reference frames.
+
+ @return a pointer to a YRefFrame object, corresponding to
+ the first reference frame currently online, or a None pointer
+ if there are none.
+ """
+ devRef = YRefParam()
+ neededsizeRef = YRefParam()
+ serialRef = YRefParam()
+ funcIdRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+ errmsgRef = YRefParam()
+ size = YAPI.C_INTSIZE
+ #noinspection PyTypeChecker,PyCallingNonCallable
+ p = (ctypes.c_int * 1)()
+ err = YAPI.apiGetFunctionsByClass("RefFrame", 0, p, size, neededsizeRef, errmsgRef)
+
+ if YAPI.YISERR(err) or not neededsizeRef.value:
+ return None
+
+ if YAPI.YISERR(
+ YAPI.yapiGetFunctionInfo(p[0], devRef, serialRef, funcIdRef, funcNameRef, funcValRef, errmsgRef)):
+ return None
+
+ return YRefFrame.FindRefFrame(serialRef.value + "." + funcIdRef.value)
+
+#--- (end of RefFrame functions)
diff --git a/yoctoLib.python.26380/Sources/yocto_relay.py b/yoctoLib.python.26380/Sources/yocto_relay.py
new file mode 100644
index 0000000..ab9f543
--- /dev/null
+++ b/yoctoLib.python.26380/Sources/yocto_relay.py
@@ -0,0 +1,433 @@
+#*********************************************************************
+#*
+#* $Id: yocto_relay.py 23243 2016-02-23 14:13:12Z seb $
+#*
+#* Implements yFindRelay(), the high-level API for Relay functions
+#*
+#* - - - - - - - - - License information: - - - - - - - - -
+#*
+#* Copyright (C) 2011 and beyond by Yoctopuce Sarl, Switzerland.
+#*
+#* Yoctopuce Sarl (hereafter Licensor) grants to you a perpetual
+#* non-exclusive license to use, modify, copy and integrate this
+#* file into your software for the sole purpose of interfacing
+#* with Yoctopuce products.
+#*
+#* You may reproduce and distribute copies of this file in
+#* source or object form, as long as the sole purpose of this
+#* code is to interface with Yoctopuce products. You must retain
+#* this notice in the distributed source file.
+#*
+#* You should refer to Yoctopuce General Terms and Conditions
+#* for additional information regarding your rights and
+#* obligations.
+#*
+#* THE SOFTWARE AND DOCUMENTATION ARE PROVIDED 'AS IS' WITHOUT
+#* WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
+#* WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS
+#* FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO
+#* EVENT SHALL LICENSOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
+#* INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA,
+#* COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR
+#* SERVICES, ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT
+#* LIMITED TO ANY DEFENSE THEREOF), ANY CLAIMS FOR INDEMNITY OR
+#* CONTRIBUTION, OR OTHER SIMILAR COSTS, WHETHER ASSERTED ON THE
+#* BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE), BREACH OF
+#* WARRANTY, OR OTHERWISE.
+#*
+#*********************************************************************/
+
+
+__docformat__ = 'restructuredtext en'
+from yocto_api import *
+
+
+#--- (YRelay class start)
+#noinspection PyProtectedMember
+class YRelay(YFunction):
+ """
+ The Yoctopuce application programming interface allows you to switch the relay state.
+ This change is not persistent: the relay will automatically return to its idle position
+ whenever power is lost or if the module is restarted.
+ The library can also generate automatically short pulses of determined duration.
+ On devices with two output for each relay (double throw), the two outputs are named A and B,
+ with output A corresponding to the idle position (at power off) and the output B corresponding to the
+ active state. If you prefer the alternate default state, simply switch your cables on the board.
+
+ """
+#--- (end of YRelay class start)
+ #--- (YRelay return codes)
+ #--- (end of YRelay return codes)
+ #--- (YRelay dlldef)
+ #--- (end of YRelay dlldef)
+ #--- (YRelay definitions)
+ MAXTIMEONSTATEA_INVALID = YAPI.INVALID_LONG
+ MAXTIMEONSTATEB_INVALID = YAPI.INVALID_LONG
+ PULSETIMER_INVALID = YAPI.INVALID_LONG
+ DELAYEDPULSETIMER_INVALID = None
+ COUNTDOWN_INVALID = YAPI.INVALID_LONG
+ STATE_A = 0
+ STATE_B = 1
+ STATE_INVALID = -1
+ STATEATPOWERON_UNCHANGED = 0
+ STATEATPOWERON_A = 1
+ STATEATPOWERON_B = 2
+ STATEATPOWERON_INVALID = -1
+ OUTPUT_OFF = 0
+ OUTPUT_ON = 1
+ OUTPUT_INVALID = -1
+ #--- (end of YRelay definitions)
+
+ def __init__(self, func):
+ super(YRelay, self).__init__(func)
+ self._className = 'Relay'
+ #--- (YRelay attributes)
+ self._callback = None
+ self._state = YRelay.STATE_INVALID
+ self._stateAtPowerOn = YRelay.STATEATPOWERON_INVALID
+ self._maxTimeOnStateA = YRelay.MAXTIMEONSTATEA_INVALID
+ self._maxTimeOnStateB = YRelay.MAXTIMEONSTATEB_INVALID
+ self._output = YRelay.OUTPUT_INVALID
+ self._pulseTimer = YRelay.PULSETIMER_INVALID
+ self._delayedPulseTimer = YRelay.DELAYEDPULSETIMER_INVALID
+ self._countdown = YRelay.COUNTDOWN_INVALID
+ #--- (end of YRelay attributes)
+
+ #--- (YRelay implementation)
+ def _parseAttr(self, member):
+ if member.name == "state":
+ self._state = member.ivalue
+ return 1
+ if member.name == "stateAtPowerOn":
+ self._stateAtPowerOn = member.ivalue
+ return 1
+ if member.name == "maxTimeOnStateA":
+ self._maxTimeOnStateA = member.ivalue
+ return 1
+ if member.name == "maxTimeOnStateB":
+ self._maxTimeOnStateB = member.ivalue
+ return 1
+ if member.name == "output":
+ self._output = member.ivalue
+ return 1
+ if member.name == "pulseTimer":
+ self._pulseTimer = member.ivalue
+ return 1
+ if member.name == "delayedPulseTimer":
+ if member.recordtype != YAPI.TJSONRECORDTYPE.JSON_STRUCT:
+ self._delayedPulseTimer = -1
+ self._delayedPulseTimer = {"moving": None, "target": None, "ms": None}
+ for submemb in member.members:
+ if submemb.name == "moving":
+ self._delayedPulseTimer["moving"] = submemb.ivalue
+ elif submemb.name == "target":
+ self._delayedPulseTimer["target"] = submemb.ivalue
+ elif submemb.name == "ms":
+ self._delayedPulseTimer["ms"] = submemb.ivalue
+ return 1
+ if member.name == "countdown":
+ self._countdown = member.ivalue
+ return 1
+ super(YRelay, self)._parseAttr(member)
+
+ def get_state(self):
+ """
+ Returns the state of the relays (A for the idle position, B for the active position).
+
+ @return either YRelay.STATE_A or YRelay.STATE_B, according to the state of the relays (A for the
+ idle position, B for the active position)
+
+ On failure, throws an exception or returns YRelay.STATE_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YRelay.STATE_INVALID
+ return self._state
+
+ def set_state(self, newval):
+ """
+ Changes the state of the relays (A for the idle position, B for the active position).
+
+ @param newval : either YRelay.STATE_A or YRelay.STATE_B, according to the state of the relays (A
+ for the idle position, B for the active position)
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = "1" if newval > 0 else "0"
+ return self._setAttr("state", rest_val)
+
+ def get_stateAtPowerOn(self):
+ """
+ Returns the state of the relays at device startup (A for the idle position, B for the active
+ position, UNCHANGED for no change).
+
+ @return a value among YRelay.STATEATPOWERON_UNCHANGED, YRelay.STATEATPOWERON_A and
+ YRelay.STATEATPOWERON_B corresponding to the state of the relays at device startup (A for the idle
+ position, B for the active position, UNCHANGED for no change)
+
+ On failure, throws an exception or returns YRelay.STATEATPOWERON_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YRelay.STATEATPOWERON_INVALID
+ return self._stateAtPowerOn
+
+ def set_stateAtPowerOn(self, newval):
+ """
+ Preset the state of the relays at device startup (A for the idle position,
+ B for the active position, UNCHANGED for no modification). Remember to call the matching module saveToFlash()
+ method, otherwise this call will have no effect.
+
+ @param newval : a value among YRelay.STATEATPOWERON_UNCHANGED, YRelay.STATEATPOWERON_A and
+ YRelay.STATEATPOWERON_B
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("stateAtPowerOn", rest_val)
+
+ def get_maxTimeOnStateA(self):
+ """
+ Retourne the maximum time (ms) allowed for $THEFUNCTIONS$ to stay in state A before automatically
+ switching back in to B state. Zero means no maximum time.
+
+ @return an integer
+
+ On failure, throws an exception or returns YRelay.MAXTIMEONSTATEA_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YRelay.MAXTIMEONSTATEA_INVALID
+ return self._maxTimeOnStateA
+
+ def set_maxTimeOnStateA(self, newval):
+ """
+ Sets the maximum time (ms) allowed for $THEFUNCTIONS$ to stay in state A before automatically
+ switching back in to B state. Use zero for no maximum time.
+
+ @param newval : an integer
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("maxTimeOnStateA", rest_val)
+
+ def get_maxTimeOnStateB(self):
+ """
+ Retourne the maximum time (ms) allowed for $THEFUNCTIONS$ to stay in state B before automatically
+ switching back in to A state. Zero means no maximum time.
+
+ @return an integer
+
+ On failure, throws an exception or returns YRelay.MAXTIMEONSTATEB_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YRelay.MAXTIMEONSTATEB_INVALID
+ return self._maxTimeOnStateB
+
+ def set_maxTimeOnStateB(self, newval):
+ """
+ Sets the maximum time (ms) allowed for $THEFUNCTIONS$ to stay in state B before automatically
+ switching back in to A state. Use zero for no maximum time.
+
+ @param newval : an integer
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("maxTimeOnStateB", rest_val)
+
+ def get_output(self):
+ """
+ Returns the output state of the relays, when used as a simple switch (single throw).
+
+ @return either YRelay.OUTPUT_OFF or YRelay.OUTPUT_ON, according to the output state of the relays,
+ when used as a simple switch (single throw)
+
+ On failure, throws an exception or returns YRelay.OUTPUT_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YRelay.OUTPUT_INVALID
+ return self._output
+
+ def set_output(self, newval):
+ """
+ Changes the output state of the relays, when used as a simple switch (single throw).
+
+ @param newval : either YRelay.OUTPUT_OFF or YRelay.OUTPUT_ON, according to the output state of the
+ relays, when used as a simple switch (single throw)
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = "1" if newval > 0 else "0"
+ return self._setAttr("output", rest_val)
+
+ def get_pulseTimer(self):
+ """
+ Returns the number of milliseconds remaining before the relays is returned to idle position
+ (state A), during a measured pulse generation. When there is no ongoing pulse, returns zero.
+
+ @return an integer corresponding to the number of milliseconds remaining before the relays is
+ returned to idle position
+ (state A), during a measured pulse generation
+
+ On failure, throws an exception or returns YRelay.PULSETIMER_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YRelay.PULSETIMER_INVALID
+ return self._pulseTimer
+
+ def set_pulseTimer(self, newval):
+ rest_val = str(newval)
+ return self._setAttr("pulseTimer", rest_val)
+
+ def pulse(self, ms_duration):
+ """
+ Sets the relay to output B (active) for a specified duration, then brings it
+ automatically back to output A (idle state).
+
+ @param ms_duration : pulse duration, in millisecondes
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(ms_duration)
+ return self._setAttr("pulseTimer", rest_val)
+
+ def get_delayedPulseTimer(self):
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YRelay.DELAYEDPULSETIMER_INVALID
+ return self._delayedPulseTimer
+
+ def set_delayedPulseTimer(self, newval):
+ rest_val = str(newval.target) + ":" + str(newval.ms)
+ return self._setAttr("delayedPulseTimer", rest_val)
+
+ def delayedPulse(self, ms_delay, ms_duration):
+ """
+ Schedules a pulse.
+
+ @param ms_delay : waiting time before the pulse, in millisecondes
+ @param ms_duration : pulse duration, in millisecondes
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(ms_delay) + ":" + str(ms_duration)
+ return self._setAttr("delayedPulseTimer", rest_val)
+
+ def get_countdown(self):
+ """
+ Returns the number of milliseconds remaining before a pulse (delayedPulse() call)
+ When there is no scheduled pulse, returns zero.
+
+ @return an integer corresponding to the number of milliseconds remaining before a pulse (delayedPulse() call)
+ When there is no scheduled pulse, returns zero
+
+ On failure, throws an exception or returns YRelay.COUNTDOWN_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YRelay.COUNTDOWN_INVALID
+ return self._countdown
+
+ @staticmethod
+ def FindRelay(func):
+ """
+ Retrieves a relay for a given identifier.
+ The identifier can be specified using several formats:
+ <ul>
+ <li>FunctionLogicalName</li>
+ <li>ModuleSerialNumber.FunctionIdentifier</li>
+ <li>ModuleSerialNumber.FunctionLogicalName</li>
+ <li>ModuleLogicalName.FunctionIdentifier</li>
+ <li>ModuleLogicalName.FunctionLogicalName</li>
+ </ul>
+
+ This function does not require that the relay is online at the time
+ it is invoked. The returned object is nevertheless valid.
+ Use the method YRelay.isOnline() to test if the relay is
+ indeed online at a given time. In case of ambiguity when looking for
+ a relay by logical name, no error is notified: the first instance
+ found is returned. The search is performed first by hardware name,
+ then by logical name.
+
+ @param func : a string that uniquely characterizes the relay
+
+ @return a YRelay object allowing you to drive the relay.
+ """
+ # obj
+ obj = YFunction._FindFromCache("Relay", func)
+ if obj is None:
+ obj = YRelay(func)
+ YFunction._AddToCache("Relay", func, obj)
+ return obj
+
+ def nextRelay(self):
+ """
+ Continues the enumeration of relays started using yFirstRelay().
+
+ @return a pointer to a YRelay object, corresponding to
+ a relay currently online, or a None pointer
+ if there are no more relays to enumerate.
+ """
+ hwidRef = YRefParam()
+ if YAPI.YISERR(self._nextFunction(hwidRef)):
+ return None
+ if hwidRef.value == "":
+ return None
+ return YRelay.FindRelay(hwidRef.value)
+
+#--- (end of YRelay implementation)
+
+#--- (Relay functions)
+
+ @staticmethod
+ def FirstRelay():
+ """
+ Starts the enumeration of relays currently accessible.
+ Use the method YRelay.nextRelay() to iterate on
+ next relays.
+
+ @return a pointer to a YRelay object, corresponding to
+ the first relay currently online, or a None pointer
+ if there are none.
+ """
+ devRef = YRefParam()
+ neededsizeRef = YRefParam()
+ serialRef = YRefParam()
+ funcIdRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+ errmsgRef = YRefParam()
+ size = YAPI.C_INTSIZE
+ #noinspection PyTypeChecker,PyCallingNonCallable
+ p = (ctypes.c_int * 1)()
+ err = YAPI.apiGetFunctionsByClass("Relay", 0, p, size, neededsizeRef, errmsgRef)
+
+ if YAPI.YISERR(err) or not neededsizeRef.value:
+ return None
+
+ if YAPI.YISERR(
+ YAPI.yapiGetFunctionInfo(p[0], devRef, serialRef, funcIdRef, funcNameRef, funcValRef, errmsgRef)):
+ return None
+
+ return YRelay.FindRelay(serialRef.value + "." + funcIdRef.value)
+
+#--- (end of Relay functions)
diff --git a/yoctoLib.python.26380/Sources/yocto_segmenteddisplay.py b/yoctoLib.python.26380/Sources/yocto_segmenteddisplay.py
new file mode 100644
index 0000000..b93ad04
--- /dev/null
+++ b/yoctoLib.python.26380/Sources/yocto_segmenteddisplay.py
@@ -0,0 +1,204 @@
+#*********************************************************************
+#*
+#* $Id: yocto_segmenteddisplay.py 23243 2016-02-23 14:13:12Z seb $
+#*
+#* Implements yFindSegmentedDisplay(), the high-level API for SegmentedDisplay functions
+#*
+#* - - - - - - - - - License information: - - - - - - - - -
+#*
+#* Copyright (C) 2011 and beyond by Yoctopuce Sarl, Switzerland.
+#*
+#* Yoctopuce Sarl (hereafter Licensor) grants to you a perpetual
+#* non-exclusive license to use, modify, copy and integrate this
+#* file into your software for the sole purpose of interfacing
+#* with Yoctopuce products.
+#*
+#* You may reproduce and distribute copies of this file in
+#* source or object form, as long as the sole purpose of this
+#* code is to interface with Yoctopuce products. You must retain
+#* this notice in the distributed source file.
+#*
+#* You should refer to Yoctopuce General Terms and Conditions
+#* for additional information regarding your rights and
+#* obligations.
+#*
+#* THE SOFTWARE AND DOCUMENTATION ARE PROVIDED 'AS IS' WITHOUT
+#* WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
+#* WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS
+#* FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO
+#* EVENT SHALL LICENSOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
+#* INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA,
+#* COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR
+#* SERVICES, ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT
+#* LIMITED TO ANY DEFENSE THEREOF), ANY CLAIMS FOR INDEMNITY OR
+#* CONTRIBUTION, OR OTHER SIMILAR COSTS, WHETHER ASSERTED ON THE
+#* BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE), BREACH OF
+#* WARRANTY, OR OTHERWISE.
+#*
+#*********************************************************************/
+
+
+__docformat__ = 'restructuredtext en'
+from yocto_api import *
+
+
+#--- (YSegmentedDisplay class start)
+#noinspection PyProtectedMember
+class YSegmentedDisplay(YFunction):
+ """
+ The SegmentedDisplay class allows you to drive segmented displays.
+
+ """
+#--- (end of YSegmentedDisplay class start)
+ #--- (YSegmentedDisplay return codes)
+ #--- (end of YSegmentedDisplay return codes)
+ #--- (YSegmentedDisplay dlldef)
+ #--- (end of YSegmentedDisplay dlldef)
+ #--- (YSegmentedDisplay definitions)
+ DISPLAYEDTEXT_INVALID = YAPI.INVALID_STRING
+ DISPLAYMODE_DISCONNECTED = 0
+ DISPLAYMODE_MANUAL = 1
+ DISPLAYMODE_AUTO1 = 2
+ DISPLAYMODE_AUTO60 = 3
+ DISPLAYMODE_INVALID = -1
+ #--- (end of YSegmentedDisplay definitions)
+
+ def __init__(self, func):
+ super(YSegmentedDisplay, self).__init__(func)
+ self._className = 'SegmentedDisplay'
+ #--- (YSegmentedDisplay attributes)
+ self._callback = None
+ self._displayedText = YSegmentedDisplay.DISPLAYEDTEXT_INVALID
+ self._displayMode = YSegmentedDisplay.DISPLAYMODE_INVALID
+ #--- (end of YSegmentedDisplay attributes)
+
+ #--- (YSegmentedDisplay implementation)
+ def _parseAttr(self, member):
+ if member.name == "displayedText":
+ self._displayedText = member.svalue
+ return 1
+ if member.name == "displayMode":
+ self._displayMode = member.ivalue
+ return 1
+ super(YSegmentedDisplay, self)._parseAttr(member)
+
+ def get_displayedText(self):
+ """
+ Returns the text currently displayed on the screen.
+
+ @return a string corresponding to the text currently displayed on the screen
+
+ On failure, throws an exception or returns YSegmentedDisplay.DISPLAYEDTEXT_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YSegmentedDisplay.DISPLAYEDTEXT_INVALID
+ return self._displayedText
+
+ def set_displayedText(self, newval):
+ """
+ Changes the text currently displayed on the screen.
+
+ @param newval : a string corresponding to the text currently displayed on the screen
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = newval
+ return self._setAttr("displayedText", rest_val)
+
+ def get_displayMode(self):
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YSegmentedDisplay.DISPLAYMODE_INVALID
+ return self._displayMode
+
+ def set_displayMode(self, newval):
+ rest_val = str(newval)
+ return self._setAttr("displayMode", rest_val)
+
+ @staticmethod
+ def FindSegmentedDisplay(func):
+ """
+ Retrieves a segmented display for a given identifier.
+ The identifier can be specified using several formats:
+ <ul>
+ <li>FunctionLogicalName</li>
+ <li>ModuleSerialNumber.FunctionIdentifier</li>
+ <li>ModuleSerialNumber.FunctionLogicalName</li>
+ <li>ModuleLogicalName.FunctionIdentifier</li>
+ <li>ModuleLogicalName.FunctionLogicalName</li>
+ </ul>
+
+ This function does not require that the segmented displays is online at the time
+ it is invoked. The returned object is nevertheless valid.
+ Use the method YSegmentedDisplay.isOnline() to test if the segmented displays is
+ indeed online at a given time. In case of ambiguity when looking for
+ a segmented display by logical name, no error is notified: the first instance
+ found is returned. The search is performed first by hardware name,
+ then by logical name.
+
+ @param func : a string that uniquely characterizes the segmented displays
+
+ @return a YSegmentedDisplay object allowing you to drive the segmented displays.
+ """
+ # obj
+ obj = YFunction._FindFromCache("SegmentedDisplay", func)
+ if obj is None:
+ obj = YSegmentedDisplay(func)
+ YFunction._AddToCache("SegmentedDisplay", func, obj)
+ return obj
+
+ def nextSegmentedDisplay(self):
+ """
+ Continues the enumeration of segmented displays started using yFirstSegmentedDisplay().
+
+ @return a pointer to a YSegmentedDisplay object, corresponding to
+ a segmented display currently online, or a None pointer
+ if there are no more segmented displays to enumerate.
+ """
+ hwidRef = YRefParam()
+ if YAPI.YISERR(self._nextFunction(hwidRef)):
+ return None
+ if hwidRef.value == "":
+ return None
+ return YSegmentedDisplay.FindSegmentedDisplay(hwidRef.value)
+
+#--- (end of YSegmentedDisplay implementation)
+
+#--- (SegmentedDisplay functions)
+
+ @staticmethod
+ def FirstSegmentedDisplay():
+ """
+ Starts the enumeration of segmented displays currently accessible.
+ Use the method YSegmentedDisplay.nextSegmentedDisplay() to iterate on
+ next segmented displays.
+
+ @return a pointer to a YSegmentedDisplay object, corresponding to
+ the first segmented displays currently online, or a None pointer
+ if there are none.
+ """
+ devRef = YRefParam()
+ neededsizeRef = YRefParam()
+ serialRef = YRefParam()
+ funcIdRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+ errmsgRef = YRefParam()
+ size = YAPI.C_INTSIZE
+ #noinspection PyTypeChecker,PyCallingNonCallable
+ p = (ctypes.c_int * 1)()
+ err = YAPI.apiGetFunctionsByClass("SegmentedDisplay", 0, p, size, neededsizeRef, errmsgRef)
+
+ if YAPI.YISERR(err) or not neededsizeRef.value:
+ return None
+
+ if YAPI.YISERR(
+ YAPI.yapiGetFunctionInfo(p[0], devRef, serialRef, funcIdRef, funcNameRef, funcValRef, errmsgRef)):
+ return None
+
+ return YSegmentedDisplay.FindSegmentedDisplay(serialRef.value + "." + funcIdRef.value)
+
+#--- (end of SegmentedDisplay functions)
diff --git a/yoctoLib.python.26380/Sources/yocto_serialport.py b/yoctoLib.python.26380/Sources/yocto_serialport.py
new file mode 100644
index 0000000..ef0649c
--- /dev/null
+++ b/yoctoLib.python.26380/Sources/yocto_serialport.py
@@ -0,0 +1,1583 @@
+#*********************************************************************
+#*
+#* $Id: yocto_serialport.py 25248 2016-08-22 15:51:04Z seb $
+#*
+#* Implements yFindSerialPort(), the high-level API for SerialPort functions
+#*
+#* - - - - - - - - - License information: - - - - - - - - -
+#*
+#* Copyright (C) 2011 and beyond by Yoctopuce Sarl, Switzerland.
+#*
+#* Yoctopuce Sarl (hereafter Licensor) grants to you a perpetual
+#* non-exclusive license to use, modify, copy and integrate this
+#* file into your software for the sole purpose of interfacing
+#* with Yoctopuce products.
+#*
+#* You may reproduce and distribute copies of this file in
+#* source or object form, as long as the sole purpose of this
+#* code is to interface with Yoctopuce products. You must retain
+#* this notice in the distributed source file.
+#*
+#* You should refer to Yoctopuce General Terms and Conditions
+#* for additional information regarding your rights and
+#* obligations.
+#*
+#* THE SOFTWARE AND DOCUMENTATION ARE PROVIDED 'AS IS' WITHOUT
+#* WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
+#* WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS
+#* FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO
+#* EVENT SHALL LICENSOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
+#* INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA,
+#* COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR
+#* SERVICES, ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT
+#* LIMITED TO ANY DEFENSE THEREOF), ANY CLAIMS FOR INDEMNITY OR
+#* CONTRIBUTION, OR OTHER SIMILAR COSTS, WHETHER ASSERTED ON THE
+#* BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE), BREACH OF
+#* WARRANTY, OR OTHERWISE.
+#*
+#*********************************************************************/
+
+
+__docformat__ = 'restructuredtext en'
+from yocto_api import *
+
+
+#--- (YSerialPort class start)
+#noinspection PyProtectedMember
+class YSerialPort(YFunction):
+ """
+ The SerialPort function interface allows you to fully drive a Yoctopuce
+ serial port, to send and receive data, and to configure communication
+ parameters (baud rate, bit count, parity, flow control and protocol).
+ Note that Yoctopuce serial ports are not exposed as virtual COM ports.
+ They are meant to be used in the same way as all Yoctopuce devices.
+
+ """
+#--- (end of YSerialPort class start)
+ #--- (YSerialPort return codes)
+ #--- (end of YSerialPort return codes)
+ #--- (YSerialPort dlldef)
+ #--- (end of YSerialPort dlldef)
+ #--- (YSerialPort definitions)
+ RXCOUNT_INVALID = YAPI.INVALID_UINT
+ TXCOUNT_INVALID = YAPI.INVALID_UINT
+ ERRCOUNT_INVALID = YAPI.INVALID_UINT
+ RXMSGCOUNT_INVALID = YAPI.INVALID_UINT
+ TXMSGCOUNT_INVALID = YAPI.INVALID_UINT
+ LASTMSG_INVALID = YAPI.INVALID_STRING
+ CURRENTJOB_INVALID = YAPI.INVALID_STRING
+ STARTUPJOB_INVALID = YAPI.INVALID_STRING
+ COMMAND_INVALID = YAPI.INVALID_STRING
+ PROTOCOL_INVALID = YAPI.INVALID_STRING
+ SERIALMODE_INVALID = YAPI.INVALID_STRING
+ VOLTAGELEVEL_OFF = 0
+ VOLTAGELEVEL_TTL3V = 1
+ VOLTAGELEVEL_TTL3VR = 2
+ VOLTAGELEVEL_TTL5V = 3
+ VOLTAGELEVEL_TTL5VR = 4
+ VOLTAGELEVEL_RS232 = 5
+ VOLTAGELEVEL_RS485 = 6
+ VOLTAGELEVEL_INVALID = -1
+ #--- (end of YSerialPort definitions)
+
+ def __init__(self, func):
+ super(YSerialPort, self).__init__(func)
+ self._className = 'SerialPort'
+ #--- (YSerialPort attributes)
+ self._callback = None
+ self._rxCount = YSerialPort.RXCOUNT_INVALID
+ self._txCount = YSerialPort.TXCOUNT_INVALID
+ self._errCount = YSerialPort.ERRCOUNT_INVALID
+ self._rxMsgCount = YSerialPort.RXMSGCOUNT_INVALID
+ self._txMsgCount = YSerialPort.TXMSGCOUNT_INVALID
+ self._lastMsg = YSerialPort.LASTMSG_INVALID
+ self._currentJob = YSerialPort.CURRENTJOB_INVALID
+ self._startupJob = YSerialPort.STARTUPJOB_INVALID
+ self._command = YSerialPort.COMMAND_INVALID
+ self._voltageLevel = YSerialPort.VOLTAGELEVEL_INVALID
+ self._protocol = YSerialPort.PROTOCOL_INVALID
+ self._serialMode = YSerialPort.SERIALMODE_INVALID
+ self._rxptr = 0
+ self._rxbuff = ''
+ self._rxbuffptr = 0
+ #--- (end of YSerialPort attributes)
+
+ #--- (YSerialPort implementation)
+ def _parseAttr(self, member):
+ if member.name == "rxCount":
+ self._rxCount = member.ivalue
+ return 1
+ if member.name == "txCount":
+ self._txCount = member.ivalue
+ return 1
+ if member.name == "errCount":
+ self._errCount = member.ivalue
+ return 1
+ if member.name == "rxMsgCount":
+ self._rxMsgCount = member.ivalue
+ return 1
+ if member.name == "txMsgCount":
+ self._txMsgCount = member.ivalue
+ return 1
+ if member.name == "lastMsg":
+ self._lastMsg = member.svalue
+ return 1
+ if member.name == "currentJob":
+ self._currentJob = member.svalue
+ return 1
+ if member.name == "startupJob":
+ self._startupJob = member.svalue
+ return 1
+ if member.name == "command":
+ self._command = member.svalue
+ return 1
+ if member.name == "voltageLevel":
+ self._voltageLevel = member.ivalue
+ return 1
+ if member.name == "protocol":
+ self._protocol = member.svalue
+ return 1
+ if member.name == "serialMode":
+ self._serialMode = member.svalue
+ return 1
+ super(YSerialPort, self)._parseAttr(member)
+
+ def get_rxCount(self):
+ """
+ Returns the total number of bytes received since last reset.
+
+ @return an integer corresponding to the total number of bytes received since last reset
+
+ On failure, throws an exception or returns YSerialPort.RXCOUNT_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YSerialPort.RXCOUNT_INVALID
+ return self._rxCount
+
+ def get_txCount(self):
+ """
+ Returns the total number of bytes transmitted since last reset.
+
+ @return an integer corresponding to the total number of bytes transmitted since last reset
+
+ On failure, throws an exception or returns YSerialPort.TXCOUNT_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YSerialPort.TXCOUNT_INVALID
+ return self._txCount
+
+ def get_errCount(self):
+ """
+ Returns the total number of communication errors detected since last reset.
+
+ @return an integer corresponding to the total number of communication errors detected since last reset
+
+ On failure, throws an exception or returns YSerialPort.ERRCOUNT_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YSerialPort.ERRCOUNT_INVALID
+ return self._errCount
+
+ def get_rxMsgCount(self):
+ """
+ Returns the total number of messages received since last reset.
+
+ @return an integer corresponding to the total number of messages received since last reset
+
+ On failure, throws an exception or returns YSerialPort.RXMSGCOUNT_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YSerialPort.RXMSGCOUNT_INVALID
+ return self._rxMsgCount
+
+ def get_txMsgCount(self):
+ """
+ Returns the total number of messages send since last reset.
+
+ @return an integer corresponding to the total number of messages send since last reset
+
+ On failure, throws an exception or returns YSerialPort.TXMSGCOUNT_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YSerialPort.TXMSGCOUNT_INVALID
+ return self._txMsgCount
+
+ def get_lastMsg(self):
+ """
+ Returns the latest message fully received (for Line, Frame and Modbus protocols).
+
+ @return a string corresponding to the latest message fully received (for Line, Frame and Modbus protocols)
+
+ On failure, throws an exception or returns YSerialPort.LASTMSG_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YSerialPort.LASTMSG_INVALID
+ return self._lastMsg
+
+ def get_currentJob(self):
+ """
+ Returns the name of the job file currently in use.
+
+ @return a string corresponding to the name of the job file currently in use
+
+ On failure, throws an exception or returns YSerialPort.CURRENTJOB_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YSerialPort.CURRENTJOB_INVALID
+ return self._currentJob
+
+ def set_currentJob(self, newval):
+ """
+ Changes the job to use when the device is powered on.
+ Remember to call the saveToFlash() method of the module if the
+ modification must be kept.
+
+ @param newval : a string corresponding to the job to use when the device is powered on
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = newval
+ return self._setAttr("currentJob", rest_val)
+
+ def get_startupJob(self):
+ """
+ Returns the job file to use when the device is powered on.
+
+ @return a string corresponding to the job file to use when the device is powered on
+
+ On failure, throws an exception or returns YSerialPort.STARTUPJOB_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YSerialPort.STARTUPJOB_INVALID
+ return self._startupJob
+
+ def set_startupJob(self, newval):
+ """
+ Changes the job to use when the device is powered on.
+ Remember to call the saveToFlash() method of the module if the
+ modification must be kept.
+
+ @param newval : a string corresponding to the job to use when the device is powered on
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = newval
+ return self._setAttr("startupJob", rest_val)
+
+ def get_command(self):
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YSerialPort.COMMAND_INVALID
+ return self._command
+
+ def set_command(self, newval):
+ rest_val = newval
+ return self._setAttr("command", rest_val)
+
+ def get_voltageLevel(self):
+ """
+ Returns the voltage level used on the serial line.
+
+ @return a value among YSerialPort.VOLTAGELEVEL_OFF, YSerialPort.VOLTAGELEVEL_TTL3V,
+ YSerialPort.VOLTAGELEVEL_TTL3VR, YSerialPort.VOLTAGELEVEL_TTL5V, YSerialPort.VOLTAGELEVEL_TTL5VR,
+ YSerialPort.VOLTAGELEVEL_RS232 and YSerialPort.VOLTAGELEVEL_RS485 corresponding to the voltage
+ level used on the serial line
+
+ On failure, throws an exception or returns YSerialPort.VOLTAGELEVEL_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YSerialPort.VOLTAGELEVEL_INVALID
+ return self._voltageLevel
+
+ def set_voltageLevel(self, newval):
+ """
+ Changes the voltage type used on the serial line. Valid
+ values will depend on the Yoctopuce device model featuring
+ the serial port feature. Check your device documentation
+ to find out which values are valid for that specific model.
+ Trying to set an invalid value will have no effect.
+
+ @param newval : a value among YSerialPort.VOLTAGELEVEL_OFF, YSerialPort.VOLTAGELEVEL_TTL3V,
+ YSerialPort.VOLTAGELEVEL_TTL3VR, YSerialPort.VOLTAGELEVEL_TTL5V, YSerialPort.VOLTAGELEVEL_TTL5VR,
+ YSerialPort.VOLTAGELEVEL_RS232 and YSerialPort.VOLTAGELEVEL_RS485 corresponding to the voltage type
+ used on the serial line
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("voltageLevel", rest_val)
+
+ def get_protocol(self):
+ """
+ Returns the type of protocol used over the serial line, as a string.
+ Possible values are "Line" for ASCII messages separated by CR and/or LF,
+ "Frame:[timeout]ms" for binary messages separated by a delay time,
+ "Modbus-ASCII" for MODBUS messages in ASCII mode,
+ "Modbus-RTU" for MODBUS messages in RTU mode,
+ "Char" for a continuous ASCII stream or
+ "Byte" for a continuous binary stream.
+
+ @return a string corresponding to the type of protocol used over the serial line, as a string
+
+ On failure, throws an exception or returns YSerialPort.PROTOCOL_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YSerialPort.PROTOCOL_INVALID
+ return self._protocol
+
+ def set_protocol(self, newval):
+ """
+ Changes the type of protocol used over the serial line.
+ Possible values are "Line" for ASCII messages separated by CR and/or LF,
+ "Frame:[timeout]ms" for binary messages separated by a delay time,
+ "Modbus-ASCII" for MODBUS messages in ASCII mode,
+ "Modbus-RTU" for MODBUS messages in RTU mode,
+ "Char" for a continuous ASCII stream or
+ "Byte" for a continuous binary stream.
+ The suffix "/[wait]ms" can be added to reduce the transmit rate so that there
+ is always at lest the specified number of milliseconds between each bytes sent.
+
+ @param newval : a string corresponding to the type of protocol used over the serial line
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = newval
+ return self._setAttr("protocol", rest_val)
+
+ def get_serialMode(self):
+ """
+ Returns the serial port communication parameters, as a string such as
+ "9600,8N1". The string includes the baud rate, the number of data bits,
+ the parity, and the number of stop bits. An optional suffix is included
+ if flow control is active: "CtsRts" for hardware handshake, "XOnXOff"
+ for logical flow control and "Simplex" for acquiring a shared bus using
+ the RTS line (as used by some RS485 adapters for instance).
+
+ @return a string corresponding to the serial port communication parameters, as a string such as
+ "9600,8N1"
+
+ On failure, throws an exception or returns YSerialPort.SERIALMODE_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YSerialPort.SERIALMODE_INVALID
+ return self._serialMode
+
+ def set_serialMode(self, newval):
+ """
+ Changes the serial port communication parameters, with a string such as
+ "9600,8N1". The string includes the baud rate, the number of data bits,
+ the parity, and the number of stop bits. An optional suffix can be added
+ to enable flow control: "CtsRts" for hardware handshake, "XOnXOff"
+ for logical flow control and "Simplex" for acquiring a shared bus using
+ the RTS line (as used by some RS485 adapters for instance).
+
+ @param newval : a string corresponding to the serial port communication parameters, with a string such as
+ "9600,8N1"
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = newval
+ return self._setAttr("serialMode", rest_val)
+
+ @staticmethod
+ def FindSerialPort(func):
+ """
+ Retrieves a serial port for a given identifier.
+ The identifier can be specified using several formats:
+ <ul>
+ <li>FunctionLogicalName</li>
+ <li>ModuleSerialNumber.FunctionIdentifier</li>
+ <li>ModuleSerialNumber.FunctionLogicalName</li>
+ <li>ModuleLogicalName.FunctionIdentifier</li>
+ <li>ModuleLogicalName.FunctionLogicalName</li>
+ </ul>
+
+ This function does not require that the serial port is online at the time
+ it is invoked. The returned object is nevertheless valid.
+ Use the method YSerialPort.isOnline() to test if the serial port is
+ indeed online at a given time. In case of ambiguity when looking for
+ a serial port by logical name, no error is notified: the first instance
+ found is returned. The search is performed first by hardware name,
+ then by logical name.
+
+ @param func : a string that uniquely characterizes the serial port
+
+ @return a YSerialPort object allowing you to drive the serial port.
+ """
+ # obj
+ obj = YFunction._FindFromCache("SerialPort", func)
+ if obj is None:
+ obj = YSerialPort(func)
+ YFunction._AddToCache("SerialPort", func, obj)
+ return obj
+
+ def sendCommand(self, text):
+ # // may throw an exception
+ return self.set_command(text)
+
+ def reset(self):
+ """
+ Clears the serial port buffer and resets counters to zero.
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ self._rxptr = 0
+ self._rxbuffptr = 0
+ self._rxbuff = bytearray(0)
+ # // may throw an exception
+ return self.sendCommand("Z")
+
+ def writeByte(self, code):
+ """
+ Sends a single byte to the serial port.
+
+ @param code : the byte to send
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ # // may throw an exception
+ return self.sendCommand("$" + ("%02X" % code))
+
+ def writeStr(self, text):
+ """
+ Sends an ASCII string to the serial port, as is.
+
+ @param text : the text string to send
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ # buff
+ # bufflen
+ # idx
+ # ch
+ buff = YString2Byte(text)
+ bufflen = len(buff)
+ if bufflen < 100:
+ #
+ ch = 0x20
+ idx = 0
+ while (idx < bufflen) and (ch != 0):
+ ch = YGetByte(buff, idx)
+ if (ch >= 0x20) and (ch < 0x7f):
+ idx = idx + 1
+ else:
+ ch = 0
+ if idx >= bufflen:
+ #
+ return self.sendCommand("+" + text)
+ # // send string using file upload
+ return self._upload("txdata", buff)
+
+ def writeBin(self, buff):
+ """
+ Sends a binary buffer to the serial port, as is.
+
+ @param buff : the binary buffer to send
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ # // may throw an exception
+ return self._upload("txdata", buff)
+
+ def writeArray(self, byteList):
+ """
+ Sends a byte sequence (provided as a list of bytes) to the serial port.
+
+ @param byteList : a list of byte codes
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ # buff
+ # bufflen
+ # idx
+ # hexb
+ # res
+ bufflen = len(byteList)
+ buff = bytearray(bufflen)
+ idx = 0
+ while idx < bufflen:
+ hexb = byteList[idx]
+ buff[idx] = hexb
+ idx = idx + 1
+ # // may throw an exception
+ res = self._upload("txdata", buff)
+ return res
+
+ def writeHex(self, hexString):
+ """
+ Sends a byte sequence (provided as a hexadecimal string) to the serial port.
+
+ @param hexString : a string of hexadecimal byte codes
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ # buff
+ # bufflen
+ # idx
+ # hexb
+ # res
+ bufflen = len(hexString)
+ if bufflen < 100:
+ #
+ return self.sendCommand("$" + hexString)
+ bufflen = ((bufflen) >> (1))
+ buff = bytearray(bufflen)
+ idx = 0
+ while idx < bufflen:
+ hexb = int((hexString)[2 * idx: 2 * idx + 2], 16)
+ buff[idx] = hexb
+ idx = idx + 1
+ # // may throw an exception
+ res = self._upload("txdata", buff)
+ return res
+
+ def writeLine(self, text):
+ """
+ Sends an ASCII string to the serial port, followed by a line break (CR LF).
+
+ @param text : the text string to send
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ # buff
+ # bufflen
+ # idx
+ # ch
+ buff = YString2Byte("" + text + "\r\n")
+ bufflen = len(buff)-2
+ if bufflen < 100:
+ #
+ ch = 0x20
+ idx = 0
+ while (idx < bufflen) and (ch != 0):
+ ch = YGetByte(buff, idx)
+ if (ch >= 0x20) and (ch < 0x7f):
+ idx = idx + 1
+ else:
+ ch = 0
+ if idx >= bufflen:
+ #
+ return self.sendCommand("!" + text)
+ # // send string using file upload
+ return self._upload("txdata", buff)
+
+ def readByte(self):
+ """
+ Reads one byte from the receive buffer, starting at current stream position.
+ If data at current stream position is not available anymore in the receive buffer,
+ or if there is no data available yet, the function returns YAPI.NO_MORE_DATA.
+
+ @return the next byte
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ # currpos
+ # reqlen
+ # buff
+ # bufflen
+ # mult
+ # endpos
+ # res
+
+ # // first check if we have the requested character in the look-ahead buffer
+ bufflen = len(self._rxbuff)
+ if (self._rxptr >= self._rxbuffptr) and (self._rxptr < self._rxbuffptr+bufflen):
+ res = YGetByte(self._rxbuff, self._rxptr-self._rxbuffptr)
+ self._rxptr = self._rxptr + 1
+ return res
+
+ # // try to preload more than one byte to speed-up byte-per-byte access
+ currpos = self._rxptr
+ reqlen = 1024
+ buff = self.readBin(reqlen)
+ bufflen = len(buff)
+ if self._rxptr == currpos+bufflen:
+ res = YGetByte(buff, 0)
+ self._rxptr = currpos+1
+ self._rxbuffptr = currpos
+ self._rxbuff = buff
+ return res
+ # // mixed bidirectional data, retry with a smaller block
+ self._rxptr = currpos
+ reqlen = 16
+ buff = self.readBin(reqlen)
+ bufflen = len(buff)
+ if self._rxptr == currpos+bufflen:
+ res = YGetByte(buff, 0)
+ self._rxptr = currpos+1
+ self._rxbuffptr = currpos
+ self._rxbuff = buff
+ return res
+ # // still mixed, need to process character by character
+ self._rxptr = currpos
+
+ # // may throw an exception
+ buff = self._download("rxdata.bin?pos=" + str(int(self._rxptr)) + "&len=1")
+ bufflen = len(buff) - 1
+ endpos = 0
+ mult = 1
+ while (bufflen > 0) and (YGetByte(buff, bufflen) != 64):
+ endpos = endpos + mult * (YGetByte(buff, bufflen) - 48)
+ mult = mult * 10
+ bufflen = bufflen - 1
+ self._rxptr = endpos
+ if bufflen == 0:
+ return YAPI.NO_MORE_DATA
+ res = YGetByte(buff, 0)
+ return res
+
+ def readStr(self, nChars):
+ """
+ Reads data from the receive buffer as a string, starting at current stream position.
+ If data at current stream position is not available anymore in the receive buffer, the
+ function performs a short read.
+
+ @param nChars : the maximum number of characters to read
+
+ @return a string with receive buffer contents
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ # buff
+ # bufflen
+ # mult
+ # endpos
+ # res
+ if nChars > 65535:
+ nChars = 65535
+ # // may throw an exception
+ buff = self._download("rxdata.bin?pos=" + str(int(self._rxptr)) + "&len=" + str(int(nChars)))
+ bufflen = len(buff) - 1
+ endpos = 0
+ mult = 1
+ while (bufflen > 0) and (YGetByte(buff, bufflen) != 64):
+ endpos = endpos + mult * (YGetByte(buff, bufflen) - 48)
+ mult = mult * 10
+ bufflen = bufflen - 1
+ self._rxptr = endpos
+ res = (YByte2String(buff))[0: 0 + bufflen]
+ return res
+
+ def readBin(self, nChars):
+ """
+ Reads data from the receive buffer as a binary buffer, starting at current stream position.
+ If data at current stream position is not available anymore in the receive buffer, the
+ function performs a short read.
+
+ @param nChars : the maximum number of bytes to read
+
+ @return a binary object with receive buffer contents
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ # buff
+ # bufflen
+ # mult
+ # endpos
+ # idx
+ # res
+ if nChars > 65535:
+ nChars = 65535
+ # // may throw an exception
+ buff = self._download("rxdata.bin?pos=" + str(int(self._rxptr)) + "&len=" + str(int(nChars)))
+ bufflen = len(buff) - 1
+ endpos = 0
+ mult = 1
+ while (bufflen > 0) and (YGetByte(buff, bufflen) != 64):
+ endpos = endpos + mult * (YGetByte(buff, bufflen) - 48)
+ mult = mult * 10
+ bufflen = bufflen - 1
+ self._rxptr = endpos
+ res = bytearray(bufflen)
+ idx = 0
+ while idx < bufflen:
+ res[idx] = YGetByte(buff, idx)
+ idx = idx + 1
+ return res
+
+ def readArray(self, nChars):
+ """
+ Reads data from the receive buffer as a list of bytes, starting at current stream position.
+ If data at current stream position is not available anymore in the receive buffer, the
+ function performs a short read.
+
+ @param nChars : the maximum number of bytes to read
+
+ @return a sequence of bytes with receive buffer contents
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ # buff
+ # bufflen
+ # mult
+ # endpos
+ # idx
+ # b
+ res = []
+ if nChars > 65535:
+ nChars = 65535
+ # // may throw an exception
+ buff = self._download("rxdata.bin?pos=" + str(int(self._rxptr)) + "&len=" + str(int(nChars)))
+ bufflen = len(buff) - 1
+ endpos = 0
+ mult = 1
+ while (bufflen > 0) and (YGetByte(buff, bufflen) != 64):
+ endpos = endpos + mult * (YGetByte(buff, bufflen) - 48)
+ mult = mult * 10
+ bufflen = bufflen - 1
+ self._rxptr = endpos
+ del res[:]
+ idx = 0
+ while idx < bufflen:
+ b = YGetByte(buff, idx)
+ res.append(b)
+ idx = idx + 1
+
+ return res
+
+ def readHex(self, nBytes):
+ """
+ Reads data from the receive buffer as a hexadecimal string, starting at current stream position.
+ If data at current stream position is not available anymore in the receive buffer, the
+ function performs a short read.
+
+ @param nBytes : the maximum number of bytes to read
+
+ @return a string with receive buffer contents, encoded in hexadecimal
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ # buff
+ # bufflen
+ # mult
+ # endpos
+ # ofs
+ # res
+ if nBytes > 65535:
+ nBytes = 65535
+ # // may throw an exception
+ buff = self._download("rxdata.bin?pos=" + str(int(self._rxptr)) + "&len=" + str(int(nBytes)))
+ bufflen = len(buff) - 1
+ endpos = 0
+ mult = 1
+ while (bufflen > 0) and (YGetByte(buff, bufflen) != 64):
+ endpos = endpos + mult * (YGetByte(buff, bufflen) - 48)
+ mult = mult * 10
+ bufflen = bufflen - 1
+ self._rxptr = endpos
+ res = ""
+ ofs = 0
+ while ofs + 3 < bufflen:
+ res = "" + res + "" + ("%02X" % YGetByte(buff, ofs)) + "" + ("%02X" % YGetByte(buff, ofs + 1)) + "" + ("%02X" % YGetByte(buff, ofs + 2)) + "" + ("%02X" % YGetByte(buff, ofs + 3))
+ ofs = ofs + 4
+ while ofs < bufflen:
+ res = "" + res + "" + ("%02X" % YGetByte(buff, ofs))
+ ofs = ofs + 1
+ return res
+
+ def readLine(self):
+ """
+ Reads a single line (or message) from the receive buffer, starting at current stream position.
+ This function is intended to be used when the serial port is configured for a message protocol,
+ such as 'Line' mode or frame protocols.
+
+ If data at current stream position is not available anymore in the receive buffer,
+ the function returns the oldest available line and moves the stream position just after.
+ If no new full line is received, the function returns an empty line.
+
+ @return a string with a single line of text
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ # url
+ # msgbin
+ msgarr = []
+ # msglen
+ # res
+ # // may throw an exception
+ url = "rxmsg.json?pos=" + str(int(self._rxptr)) + "&len=1&maxw=1"
+ msgbin = self._download(url)
+ msgarr = self._json_get_array(msgbin)
+ msglen = len(msgarr)
+ if msglen == 0:
+ return ""
+ # // last element of array is the new position
+ msglen = msglen - 1
+ self._rxptr = YAPI._atoi(msgarr[msglen])
+ if msglen == 0:
+ return ""
+ res = self._json_get_string(YString2Byte(msgarr[0]))
+ return res
+
+ def readMessages(self, pattern, maxWait):
+ """
+ Searches for incoming messages in the serial port receive buffer matching a given pattern,
+ starting at current position. This function will only compare and return printable characters
+ in the message strings. Binary protocols are handled as hexadecimal strings.
+
+ The search returns all messages matching the expression provided as argument in the buffer.
+ If no matching message is found, the search waits for one up to the specified maximum timeout
+ (in milliseconds).
+
+ @param pattern : a limited regular expression describing the expected message format,
+ or an empty string if all messages should be returned (no filtering).
+ When using binary protocols, the format applies to the hexadecimal
+ representation of the message.
+ @param maxWait : the maximum number of milliseconds to wait for a message if none is found
+ in the receive buffer.
+
+ @return an array of strings containing the messages found, if any.
+ Binary messages are converted to hexadecimal representation.
+
+ On failure, throws an exception or returns an empty array.
+ """
+ # url
+ # msgbin
+ msgarr = []
+ # msglen
+ res = []
+ # idx
+ # // may throw an exception
+ url = "rxmsg.json?pos=" + str(int(self._rxptr)) + "&maxw=" + str(int(maxWait)) + "&pat=" + pattern
+ msgbin = self._download(url)
+ msgarr = self._json_get_array(msgbin)
+ msglen = len(msgarr)
+ if msglen == 0:
+ return res
+ # // last element of array is the new position
+ msglen = msglen - 1
+ self._rxptr = YAPI._atoi(msgarr[msglen])
+ idx = 0
+
+ while idx < msglen:
+ res.append(self._json_get_string(YString2Byte(msgarr[idx])))
+ idx = idx + 1
+
+ return res
+
+ def read_seek(self, absPos):
+ """
+ Changes the current internal stream position to the specified value. This function
+ does not affect the device, it only changes the value stored in the API object
+ for the next read operations.
+
+ @param absPos : the absolute position index for next read operations.
+
+ @return nothing.
+ """
+ self._rxptr = absPos
+ return YAPI.SUCCESS
+
+ def read_tell(self):
+ """
+ Returns the current absolute stream position pointer of the API object.
+
+ @return the absolute position index for next read operations.
+ """
+ return self._rxptr
+
+ def read_avail(self):
+ """
+ Returns the number of bytes available to read in the input buffer starting from the
+ current absolute stream position pointer of the API object.
+
+ @return the number of bytes available to read
+ """
+ # buff
+ # bufflen
+ # res
+ # // may throw an exception
+ buff = self._download("rxcnt.bin?pos=" + str(int(self._rxptr)))
+ bufflen = len(buff) - 1
+ while (bufflen > 0) and (YGetByte(buff, bufflen) != 64):
+ bufflen = bufflen - 1
+ res = YAPI._atoi((YByte2String(buff))[0: 0 + bufflen])
+ return res
+
+ def queryLine(self, query, maxWait):
+ """
+ Sends a text line query to the serial port, and reads the reply, if any.
+ This function is intended to be used when the serial port is configured for 'Line' protocol.
+
+ @param query : the line query to send (without CR/LF)
+ @param maxWait : the maximum number of milliseconds to wait for a reply.
+
+ @return the next text line received after sending the text query, as a string.
+ Additional lines can be obtained by calling readLine or readMessages.
+
+ On failure, throws an exception or returns an empty array.
+ """
+ # url
+ # msgbin
+ msgarr = []
+ # msglen
+ # res
+ # // may throw an exception
+ url = "rxmsg.json?len=1&maxw=" + str(int(maxWait)) + "&cmd=!" + query
+ msgbin = self._download(url)
+ msgarr = self._json_get_array(msgbin)
+ msglen = len(msgarr)
+ if msglen == 0:
+ return ""
+ # // last element of array is the new position
+ msglen = msglen - 1
+ self._rxptr = YAPI._atoi(msgarr[msglen])
+ if msglen == 0:
+ return ""
+ res = self._json_get_string(YString2Byte(msgarr[0]))
+ return res
+
+ def uploadJob(self, jobfile, jsonDef):
+ """
+ Saves the job definition string (JSON data) into a job file.
+ The job file can be later enabled using selectJob().
+
+ @param jobfile : name of the job file to save on the device filesystem
+ @param jsonDef : a string containing a JSON definition of the job
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ self._upload(jobfile, YString2Byte(jsonDef))
+ return YAPI.SUCCESS
+
+ def selectJob(self, jobfile):
+ """
+ Load and start processing the specified job file. The file must have
+ been previously created using the user interface or uploaded on the
+ device filesystem using the uploadJob() function.
+
+ @param jobfile : name of the job file (on the device filesystem)
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ # // may throw an exception
+ return self.set_currentJob(jobfile)
+
+ def set_RTS(self, val):
+ """
+ Manually sets the state of the RTS line. This function has no effect when
+ hardware handshake is enabled, as the RTS line is driven automatically.
+
+ @param val : 1 to turn RTS on, 0 to turn RTS off
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ # // may throw an exception
+ return self.sendCommand("R" + str(int(val)))
+
+ def get_CTS(self):
+ """
+ Reads the level of the CTS line. The CTS line is usually driven by
+ the RTS signal of the connected serial device.
+
+ @return 1 if the CTS line is high, 0 if the CTS line is low.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ # buff
+ # res
+ # // may throw an exception
+ buff = self._download("cts.txt")
+ if not (len(buff) == 1):
+ self._throw(YAPI.IO_ERROR, "invalid CTS reply")
+ res = YGetByte(buff, 0) - 48
+ return res
+
+ def writeMODBUS(self, hexString):
+ """
+ Sends a MODBUS message (provided as a hexadecimal string) to the serial port.
+ The message must start with the slave address. The MODBUS CRC/LRC is
+ automatically added by the function. This function does not wait for a reply.
+
+ @param hexString : a hexadecimal message string, including device address but no CRC/LRC
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ # // may throw an exception
+ return self.sendCommand(":" + hexString)
+
+ def queryMODBUS(self, slaveNo, pduBytes):
+ """
+ Sends a message to a specified MODBUS slave connected to the serial port, and reads the
+ reply, if any. The message is the PDU, provided as a vector of bytes.
+
+ @param slaveNo : the address of the slave MODBUS device to query
+ @param pduBytes : the message to send (PDU), as a vector of bytes. The first byte of the
+ PDU is the MODBUS function code.
+
+ @return the received reply, as a vector of bytes.
+
+ On failure, throws an exception or returns an empty array (or a MODBUS error reply).
+ """
+ # funCode
+ # nib
+ # i
+ # cmd
+ # url
+ # pat
+ # msgs
+ reps = []
+ # rep
+ res = []
+ # replen
+ # hexb
+ funCode = pduBytes[0]
+ nib = ((funCode) >> (4))
+ pat = "" + ("%02X" % slaveNo) + "[" + ("%X" % nib) + "" + ("%X" % (nib+8)) + "]" + ("%X" % ((funCode) & (15))) + ".*"
+ cmd = "" + ("%02X" % slaveNo) + "" + ("%02X" % funCode)
+ i = 1
+ while i < len(pduBytes):
+ cmd = "" + cmd + "" + ("%02X" % ((pduBytes[i]) & (0xff)))
+ i = i + 1
+ # // may throw an exception
+ url = "rxmsg.json?cmd=:" + cmd + "&pat=:" + pat
+ msgs = self._download(url)
+ reps = self._json_get_array(msgs)
+ if not (len(reps) > 1):
+ self._throw(YAPI.IO_ERROR, "no reply from slave")
+ if len(reps) > 1:
+ rep = self._json_get_string(YString2Byte(reps[0]))
+ replen = ((len(rep) - 3) >> (1))
+ i = 0
+ while i < replen:
+ hexb = int((rep)[2 * i + 3: 2 * i + 3 + 2], 16)
+ res.append(hexb)
+ i = i + 1
+ if res[0] != funCode:
+ i = res[1]
+ if not (i > 1):
+ self._throw(YAPI.NOT_SUPPORTED, "MODBUS error: unsupported function code")
+ if not (i > 2):
+ self._throw(YAPI.INVALID_ARGUMENT, "MODBUS error: illegal data address")
+ if not (i > 3):
+ self._throw(YAPI.INVALID_ARGUMENT, "MODBUS error: illegal data value")
+ if not (i > 4):
+ self._throw(YAPI.INVALID_ARGUMENT, "MODBUS error: failed to execute function")
+ return res
+
+ def modbusReadBits(self, slaveNo, pduAddr, nBits):
+ """
+ Reads one or more contiguous internal bits (or coil status) from a MODBUS serial device.
+ This method uses the MODBUS function code 0x01 (Read Coils).
+
+ @param slaveNo : the address of the slave MODBUS device to query
+ @param pduAddr : the relative address of the first bit/coil to read (zero-based)
+ @param nBits : the number of bits/coils to read
+
+ @return a vector of integers, each corresponding to one bit.
+
+ On failure, throws an exception or returns an empty array.
+ """
+ pdu = []
+ reply = []
+ res = []
+ # bitpos
+ # idx
+ # val
+ # mask
+
+ pdu.append(0x01)
+ pdu.append(((pduAddr) >> (8)))
+ pdu.append(((pduAddr) & (0xff)))
+ pdu.append(((nBits) >> (8)))
+ pdu.append(((nBits) & (0xff)))
+
+ # // may throw an exception
+ reply = self.queryMODBUS(slaveNo, pdu)
+ if len(reply) == 0:
+ return res
+ if reply[0] != pdu[0]:
+ return res
+
+ bitpos = 0
+ idx = 2
+ val = reply[idx]
+ mask = 1
+ while bitpos < nBits:
+ if ((val) & (mask)) == 0:
+ res.append(0)
+ else:
+ res.append(1)
+ bitpos = bitpos + 1
+ if mask == 0x80:
+ idx = idx + 1
+ val = reply[idx]
+ mask = 1
+ else:
+ mask = ((mask) << (1))
+
+ return res
+
+ def modbusReadInputBits(self, slaveNo, pduAddr, nBits):
+ """
+ Reads one or more contiguous input bits (or discrete inputs) from a MODBUS serial device.
+ This method uses the MODBUS function code 0x02 (Read Discrete Inputs).
+
+ @param slaveNo : the address of the slave MODBUS device to query
+ @param pduAddr : the relative address of the first bit/input to read (zero-based)
+ @param nBits : the number of bits/inputs to read
+
+ @return a vector of integers, each corresponding to one bit.
+
+ On failure, throws an exception or returns an empty array.
+ """
+ pdu = []
+ reply = []
+ res = []
+ # bitpos
+ # idx
+ # val
+ # mask
+
+ pdu.append(0x02)
+ pdu.append(((pduAddr) >> (8)))
+ pdu.append(((pduAddr) & (0xff)))
+ pdu.append(((nBits) >> (8)))
+ pdu.append(((nBits) & (0xff)))
+
+ # // may throw an exception
+ reply = self.queryMODBUS(slaveNo, pdu)
+ if len(reply) == 0:
+ return res
+ if reply[0] != pdu[0]:
+ return res
+
+ bitpos = 0
+ idx = 2
+ val = reply[idx]
+ mask = 1
+ while bitpos < nBits:
+ if ((val) & (mask)) == 0:
+ res.append(0)
+ else:
+ res.append(1)
+ bitpos = bitpos + 1
+ if mask == 0x80:
+ idx = idx + 1
+ val = reply[idx]
+ mask = 1
+ else:
+ mask = ((mask) << (1))
+
+ return res
+
+ def modbusReadRegisters(self, slaveNo, pduAddr, nWords):
+ """
+ Reads one or more contiguous internal registers (holding registers) from a MODBUS serial device.
+ This method uses the MODBUS function code 0x03 (Read Holding Registers).
+
+ @param slaveNo : the address of the slave MODBUS device to query
+ @param pduAddr : the relative address of the first holding register to read (zero-based)
+ @param nWords : the number of holding registers to read
+
+ @return a vector of integers, each corresponding to one 16-bit register value.
+
+ On failure, throws an exception or returns an empty array.
+ """
+ pdu = []
+ reply = []
+ res = []
+ # regpos
+ # idx
+ # val
+
+ pdu.append(0x03)
+ pdu.append(((pduAddr) >> (8)))
+ pdu.append(((pduAddr) & (0xff)))
+ pdu.append(((nWords) >> (8)))
+ pdu.append(((nWords) & (0xff)))
+
+ # // may throw an exception
+ reply = self.queryMODBUS(slaveNo, pdu)
+ if len(reply) == 0:
+ return res
+ if reply[0] != pdu[0]:
+ return res
+
+ regpos = 0
+ idx = 2
+ while regpos < nWords:
+ val = ((reply[idx]) << (8))
+ idx = idx + 1
+ val = val + reply[idx]
+ idx = idx + 1
+ res.append(val)
+ regpos = regpos + 1
+
+ return res
+
+ def modbusReadInputRegisters(self, slaveNo, pduAddr, nWords):
+ """
+ Reads one or more contiguous input registers (read-only registers) from a MODBUS serial device.
+ This method uses the MODBUS function code 0x04 (Read Input Registers).
+
+ @param slaveNo : the address of the slave MODBUS device to query
+ @param pduAddr : the relative address of the first input register to read (zero-based)
+ @param nWords : the number of input registers to read
+
+ @return a vector of integers, each corresponding to one 16-bit input value.
+
+ On failure, throws an exception or returns an empty array.
+ """
+ pdu = []
+ reply = []
+ res = []
+ # regpos
+ # idx
+ # val
+
+ pdu.append(0x04)
+ pdu.append(((pduAddr) >> (8)))
+ pdu.append(((pduAddr) & (0xff)))
+ pdu.append(((nWords) >> (8)))
+ pdu.append(((nWords) & (0xff)))
+
+ # // may throw an exception
+ reply = self.queryMODBUS(slaveNo, pdu)
+ if len(reply) == 0:
+ return res
+ if reply[0] != pdu[0]:
+ return res
+
+ regpos = 0
+ idx = 2
+ while regpos < nWords:
+ val = ((reply[idx]) << (8))
+ idx = idx + 1
+ val = val + reply[idx]
+ idx = idx + 1
+ res.append(val)
+ regpos = regpos + 1
+
+ return res
+
+ def modbusWriteBit(self, slaveNo, pduAddr, value):
+ """
+ Sets a single internal bit (or coil) on a MODBUS serial device.
+ This method uses the MODBUS function code 0x05 (Write Single Coil).
+
+ @param slaveNo : the address of the slave MODBUS device to drive
+ @param pduAddr : the relative address of the bit/coil to set (zero-based)
+ @param value : the value to set (0 for OFF state, non-zero for ON state)
+
+ @return the number of bits/coils affected on the device (1)
+
+ On failure, throws an exception or returns zero.
+ """
+ pdu = []
+ reply = []
+ # res
+ res = 0
+ if value != 0:
+ value = 0xff
+
+ pdu.append(0x05)
+ pdu.append(((pduAddr) >> (8)))
+ pdu.append(((pduAddr) & (0xff)))
+ pdu.append(value)
+ pdu.append(0x00)
+
+ # // may throw an exception
+ reply = self.queryMODBUS(slaveNo, pdu)
+ if len(reply) == 0:
+ return res
+ if reply[0] != pdu[0]:
+ return res
+ res = 1
+ return res
+
+ def modbusWriteBits(self, slaveNo, pduAddr, bits):
+ """
+ Sets several contiguous internal bits (or coils) on a MODBUS serial device.
+ This method uses the MODBUS function code 0x0f (Write Multiple Coils).
+
+ @param slaveNo : the address of the slave MODBUS device to drive
+ @param pduAddr : the relative address of the first bit/coil to set (zero-based)
+ @param bits : the vector of bits to be set (one integer per bit)
+
+ @return the number of bits/coils affected on the device
+
+ On failure, throws an exception or returns zero.
+ """
+ # nBits
+ # nBytes
+ # bitpos
+ # val
+ # mask
+ pdu = []
+ reply = []
+ # res
+ res = 0
+ nBits = len(bits)
+ nBytes = (((nBits + 7)) >> (3))
+
+ pdu.append(0x0f)
+ pdu.append(((pduAddr) >> (8)))
+ pdu.append(((pduAddr) & (0xff)))
+ pdu.append(((nBits) >> (8)))
+ pdu.append(((nBits) & (0xff)))
+ pdu.append(nBytes)
+ bitpos = 0
+ val = 0
+ mask = 1
+ while bitpos < nBits:
+ if bits[bitpos] != 0:
+ val = ((val) | (mask))
+ bitpos = bitpos + 1
+ if mask == 0x80:
+ pdu.append(val)
+ val = 0
+ mask = 1
+ else:
+ mask = ((mask) << (1))
+ if mask != 1:
+ pdu.append(val)
+
+ # // may throw an exception
+ reply = self.queryMODBUS(slaveNo, pdu)
+ if len(reply) == 0:
+ return res
+ if reply[0] != pdu[0]:
+ return res
+ res = ((reply[3]) << (8))
+ res = res + reply[4]
+ return res
+
+ def modbusWriteRegister(self, slaveNo, pduAddr, value):
+ """
+ Sets a single internal register (or holding register) on a MODBUS serial device.
+ This method uses the MODBUS function code 0x06 (Write Single Register).
+
+ @param slaveNo : the address of the slave MODBUS device to drive
+ @param pduAddr : the relative address of the register to set (zero-based)
+ @param value : the 16 bit value to set
+
+ @return the number of registers affected on the device (1)
+
+ On failure, throws an exception or returns zero.
+ """
+ pdu = []
+ reply = []
+ # res
+ res = 0
+
+ pdu.append(0x06)
+ pdu.append(((pduAddr) >> (8)))
+ pdu.append(((pduAddr) & (0xff)))
+ pdu.append(((value) >> (8)))
+ pdu.append(((value) & (0xff)))
+
+ # // may throw an exception
+ reply = self.queryMODBUS(slaveNo, pdu)
+ if len(reply) == 0:
+ return res
+ if reply[0] != pdu[0]:
+ return res
+ res = 1
+ return res
+
+ def modbusWriteRegisters(self, slaveNo, pduAddr, values):
+ """
+ Sets several contiguous internal registers (or holding registers) on a MODBUS serial device.
+ This method uses the MODBUS function code 0x10 (Write Multiple Registers).
+
+ @param slaveNo : the address of the slave MODBUS device to drive
+ @param pduAddr : the relative address of the first internal register to set (zero-based)
+ @param values : the vector of 16 bit values to set
+
+ @return the number of registers affected on the device
+
+ On failure, throws an exception or returns zero.
+ """
+ # nWords
+ # nBytes
+ # regpos
+ # val
+ pdu = []
+ reply = []
+ # res
+ res = 0
+ nWords = len(values)
+ nBytes = 2 * nWords
+
+ pdu.append(0x10)
+ pdu.append(((pduAddr) >> (8)))
+ pdu.append(((pduAddr) & (0xff)))
+ pdu.append(((nWords) >> (8)))
+ pdu.append(((nWords) & (0xff)))
+ pdu.append(nBytes)
+ regpos = 0
+ while regpos < nWords:
+ val = values[regpos]
+ pdu.append(((val) >> (8)))
+ pdu.append(((val) & (0xff)))
+ regpos = regpos + 1
+
+ # // may throw an exception
+ reply = self.queryMODBUS(slaveNo, pdu)
+ if len(reply) == 0:
+ return res
+ if reply[0] != pdu[0]:
+ return res
+ res = ((reply[3]) << (8))
+ res = res + reply[4]
+ return res
+
+ def modbusWriteAndReadRegisters(self, slaveNo, pduWriteAddr, values, pduReadAddr, nReadWords):
+ """
+ Sets several contiguous internal registers (holding registers) on a MODBUS serial device,
+ then performs a contiguous read of a set of (possibly different) internal registers.
+ This method uses the MODBUS function code 0x17 (Read/Write Multiple Registers).
+
+ @param slaveNo : the address of the slave MODBUS device to drive
+ @param pduWriteAddr : the relative address of the first internal register to set (zero-based)
+ @param values : the vector of 16 bit values to set
+ @param pduReadAddr : the relative address of the first internal register to read (zero-based)
+ @param nReadWords : the number of 16 bit values to read
+
+ @return a vector of integers, each corresponding to one 16-bit register value read.
+
+ On failure, throws an exception or returns an empty array.
+ """
+ # nWriteWords
+ # nBytes
+ # regpos
+ # val
+ # idx
+ pdu = []
+ reply = []
+ res = []
+ nWriteWords = len(values)
+ nBytes = 2 * nWriteWords
+
+ pdu.append(0x17)
+ pdu.append(((pduReadAddr) >> (8)))
+ pdu.append(((pduReadAddr) & (0xff)))
+ pdu.append(((nReadWords) >> (8)))
+ pdu.append(((nReadWords) & (0xff)))
+ pdu.append(((pduWriteAddr) >> (8)))
+ pdu.append(((pduWriteAddr) & (0xff)))
+ pdu.append(((nWriteWords) >> (8)))
+ pdu.append(((nWriteWords) & (0xff)))
+ pdu.append(nBytes)
+ regpos = 0
+ while regpos < nWriteWords:
+ val = values[regpos]
+ pdu.append(((val) >> (8)))
+ pdu.append(((val) & (0xff)))
+ regpos = regpos + 1
+
+ # // may throw an exception
+ reply = self.queryMODBUS(slaveNo, pdu)
+ if len(reply) == 0:
+ return res
+ if reply[0] != pdu[0]:
+ return res
+
+ regpos = 0
+ idx = 2
+ while regpos < nReadWords:
+ val = ((reply[idx]) << (8))
+ idx = idx + 1
+ val = val + reply[idx]
+ idx = idx + 1
+ res.append(val)
+ regpos = regpos + 1
+
+ return res
+
+ def nextSerialPort(self):
+ """
+ Continues the enumeration of serial ports started using yFirstSerialPort().
+
+ @return a pointer to a YSerialPort object, corresponding to
+ a serial port currently online, or a None pointer
+ if there are no more serial ports to enumerate.
+ """
+ hwidRef = YRefParam()
+ if YAPI.YISERR(self._nextFunction(hwidRef)):
+ return None
+ if hwidRef.value == "":
+ return None
+ return YSerialPort.FindSerialPort(hwidRef.value)
+
+#--- (end of YSerialPort implementation)
+
+#--- (SerialPort functions)
+
+ @staticmethod
+ def FirstSerialPort():
+ """
+ Starts the enumeration of serial ports currently accessible.
+ Use the method YSerialPort.nextSerialPort() to iterate on
+ next serial ports.
+
+ @return a pointer to a YSerialPort object, corresponding to
+ the first serial port currently online, or a None pointer
+ if there are none.
+ """
+ devRef = YRefParam()
+ neededsizeRef = YRefParam()
+ serialRef = YRefParam()
+ funcIdRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+ errmsgRef = YRefParam()
+ size = YAPI.C_INTSIZE
+ #noinspection PyTypeChecker,PyCallingNonCallable
+ p = (ctypes.c_int * 1)()
+ err = YAPI.apiGetFunctionsByClass("SerialPort", 0, p, size, neededsizeRef, errmsgRef)
+
+ if YAPI.YISERR(err) or not neededsizeRef.value:
+ return None
+
+ if YAPI.YISERR(
+ YAPI.yapiGetFunctionInfo(p[0], devRef, serialRef, funcIdRef, funcNameRef, funcValRef, errmsgRef)):
+ return None
+
+ return YSerialPort.FindSerialPort(serialRef.value + "." + funcIdRef.value)
+
+#--- (end of SerialPort functions)
diff --git a/yoctoLib.python.26380/Sources/yocto_servo.py b/yoctoLib.python.26380/Sources/yocto_servo.py
new file mode 100644
index 0000000..17ed2a4
--- /dev/null
+++ b/yoctoLib.python.26380/Sources/yocto_servo.py
@@ -0,0 +1,400 @@
+#*********************************************************************
+#*
+#* $Id: yocto_servo.py 23243 2016-02-23 14:13:12Z seb $
+#*
+#* Implements yFindServo(), the high-level API for Servo functions
+#*
+#* - - - - - - - - - License information: - - - - - - - - -
+#*
+#* Copyright (C) 2011 and beyond by Yoctopuce Sarl, Switzerland.
+#*
+#* Yoctopuce Sarl (hereafter Licensor) grants to you a perpetual
+#* non-exclusive license to use, modify, copy and integrate this
+#* file into your software for the sole purpose of interfacing
+#* with Yoctopuce products.
+#*
+#* You may reproduce and distribute copies of this file in
+#* source or object form, as long as the sole purpose of this
+#* code is to interface with Yoctopuce products. You must retain
+#* this notice in the distributed source file.
+#*
+#* You should refer to Yoctopuce General Terms and Conditions
+#* for additional information regarding your rights and
+#* obligations.
+#*
+#* THE SOFTWARE AND DOCUMENTATION ARE PROVIDED 'AS IS' WITHOUT
+#* WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
+#* WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS
+#* FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO
+#* EVENT SHALL LICENSOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
+#* INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA,
+#* COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR
+#* SERVICES, ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT
+#* LIMITED TO ANY DEFENSE THEREOF), ANY CLAIMS FOR INDEMNITY OR
+#* CONTRIBUTION, OR OTHER SIMILAR COSTS, WHETHER ASSERTED ON THE
+#* BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE), BREACH OF
+#* WARRANTY, OR OTHERWISE.
+#*
+#*********************************************************************/
+
+
+__docformat__ = 'restructuredtext en'
+from yocto_api import *
+
+
+#--- (YServo class start)
+#noinspection PyProtectedMember
+class YServo(YFunction):
+ """
+ Yoctopuce application programming interface allows you not only to move
+ a servo to a given position, but also to specify the time interval
+ in which the move should be performed. This makes it possible to
+ synchronize two servos involved in a same move.
+
+ """
+#--- (end of YServo class start)
+ #--- (YServo return codes)
+ #--- (end of YServo return codes)
+ #--- (YServo dlldef)
+ #--- (end of YServo dlldef)
+ #--- (YServo definitions)
+ POSITION_INVALID = YAPI.INVALID_INT
+ RANGE_INVALID = YAPI.INVALID_UINT
+ NEUTRAL_INVALID = YAPI.INVALID_UINT
+ MOVE_INVALID = None
+ POSITIONATPOWERON_INVALID = YAPI.INVALID_INT
+ ENABLED_FALSE = 0
+ ENABLED_TRUE = 1
+ ENABLED_INVALID = -1
+ ENABLEDATPOWERON_FALSE = 0
+ ENABLEDATPOWERON_TRUE = 1
+ ENABLEDATPOWERON_INVALID = -1
+ #--- (end of YServo definitions)
+
+ def __init__(self, func):
+ super(YServo, self).__init__(func)
+ self._className = 'Servo'
+ #--- (YServo attributes)
+ self._callback = None
+ self._position = YServo.POSITION_INVALID
+ self._enabled = YServo.ENABLED_INVALID
+ self._range = YServo.RANGE_INVALID
+ self._neutral = YServo.NEUTRAL_INVALID
+ self._move = YServo.MOVE_INVALID
+ self._positionAtPowerOn = YServo.POSITIONATPOWERON_INVALID
+ self._enabledAtPowerOn = YServo.ENABLEDATPOWERON_INVALID
+ #--- (end of YServo attributes)
+
+ #--- (YServo implementation)
+ def _parseAttr(self, member):
+ if member.name == "position":
+ self._position = member.ivalue
+ return 1
+ if member.name == "enabled":
+ self._enabled = member.ivalue
+ return 1
+ if member.name == "range":
+ self._range = member.ivalue
+ return 1
+ if member.name == "neutral":
+ self._neutral = member.ivalue
+ return 1
+ if member.name == "move":
+ if member.recordtype != YAPI.TJSONRECORDTYPE.JSON_STRUCT:
+ self._move = -1
+ self._move = {"moving": None, "target": None, "ms": None}
+ for submemb in member.members:
+ if submemb.name == "moving":
+ self._move["moving"] = submemb.ivalue
+ elif submemb.name == "target":
+ self._move["target"] = submemb.ivalue
+ elif submemb.name == "ms":
+ self._move["ms"] = submemb.ivalue
+ return 1
+ if member.name == "positionAtPowerOn":
+ self._positionAtPowerOn = member.ivalue
+ return 1
+ if member.name == "enabledAtPowerOn":
+ self._enabledAtPowerOn = member.ivalue
+ return 1
+ super(YServo, self)._parseAttr(member)
+
+ def get_position(self):
+ """
+ Returns the current servo position.
+
+ @return an integer corresponding to the current servo position
+
+ On failure, throws an exception or returns YServo.POSITION_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YServo.POSITION_INVALID
+ return self._position
+
+ def set_position(self, newval):
+ """
+ Changes immediately the servo driving position.
+
+ @param newval : an integer corresponding to immediately the servo driving position
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("position", rest_val)
+
+ def get_enabled(self):
+ """
+ Returns the state of the servos.
+
+ @return either YServo.ENABLED_FALSE or YServo.ENABLED_TRUE, according to the state of the servos
+
+ On failure, throws an exception or returns YServo.ENABLED_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YServo.ENABLED_INVALID
+ return self._enabled
+
+ def set_enabled(self, newval):
+ """
+ Stops or starts the servo.
+
+ @param newval : either YServo.ENABLED_FALSE or YServo.ENABLED_TRUE
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = "1" if newval > 0 else "0"
+ return self._setAttr("enabled", rest_val)
+
+ def get_range(self):
+ """
+ Returns the current range of use of the servo.
+
+ @return an integer corresponding to the current range of use of the servo
+
+ On failure, throws an exception or returns YServo.RANGE_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YServo.RANGE_INVALID
+ return self._range
+
+ def set_range(self, newval):
+ """
+ Changes the range of use of the servo, specified in per cents.
+ A range of 100% corresponds to a standard control signal, that varies
+ from 1 [ms] to 2 [ms], When using a servo that supports a double range,
+ from 0.5 [ms] to 2.5 [ms], you can select a range of 200%.
+ Be aware that using a range higher than what is supported by the servo
+ is likely to damage the servo. Remember to call the matching module
+ saveToFlash() method, otherwise this call will have no effect.
+
+ @param newval : an integer corresponding to the range of use of the servo, specified in per cents
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("range", rest_val)
+
+ def get_neutral(self):
+ """
+ Returns the duration in microseconds of a neutral pulse for the servo.
+
+ @return an integer corresponding to the duration in microseconds of a neutral pulse for the servo
+
+ On failure, throws an exception or returns YServo.NEUTRAL_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YServo.NEUTRAL_INVALID
+ return self._neutral
+
+ def set_neutral(self, newval):
+ """
+ Changes the duration of the pulse corresponding to the neutral position of the servo.
+ The duration is specified in microseconds, and the standard value is 1500 [us].
+ This setting makes it possible to shift the range of use of the servo.
+ Be aware that using a range higher than what is supported by the servo is
+ likely to damage the servo. Remember to call the matching module
+ saveToFlash() method, otherwise this call will have no effect.
+
+ @param newval : an integer corresponding to the duration of the pulse corresponding to the neutral
+ position of the servo
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("neutral", rest_val)
+
+ def get_move(self):
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YServo.MOVE_INVALID
+ return self._move
+
+ def set_move(self, newval):
+ rest_val = str(newval.target) + ":" + str(newval.ms)
+ return self._setAttr("move", rest_val)
+
+ def move(self, target, ms_duration):
+ """
+ Performs a smooth move at constant speed toward a given position.
+
+ @param target : new position at the end of the move
+ @param ms_duration : total duration of the move, in milliseconds
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(target) + ":" + str(ms_duration)
+ return self._setAttr("move", rest_val)
+
+ def get_positionAtPowerOn(self):
+ """
+ Returns the servo position at device power up.
+
+ @return an integer corresponding to the servo position at device power up
+
+ On failure, throws an exception or returns YServo.POSITIONATPOWERON_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YServo.POSITIONATPOWERON_INVALID
+ return self._positionAtPowerOn
+
+ def set_positionAtPowerOn(self, newval):
+ """
+ Configure the servo position at device power up. Remember to call the matching
+ module saveToFlash() method, otherwise this call will have no effect.
+
+ @param newval : an integer
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("positionAtPowerOn", rest_val)
+
+ def get_enabledAtPowerOn(self):
+ """
+ Returns the servo signal generator state at power up.
+
+ @return either YServo.ENABLEDATPOWERON_FALSE or YServo.ENABLEDATPOWERON_TRUE, according to the
+ servo signal generator state at power up
+
+ On failure, throws an exception or returns YServo.ENABLEDATPOWERON_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YServo.ENABLEDATPOWERON_INVALID
+ return self._enabledAtPowerOn
+
+ def set_enabledAtPowerOn(self, newval):
+ """
+ Configure the servo signal generator state at power up. Remember to call the matching module saveToFlash()
+ method, otherwise this call will have no effect.
+
+ @param newval : either YServo.ENABLEDATPOWERON_FALSE or YServo.ENABLEDATPOWERON_TRUE
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = "1" if newval > 0 else "0"
+ return self._setAttr("enabledAtPowerOn", rest_val)
+
+ @staticmethod
+ def FindServo(func):
+ """
+ Retrieves a servo for a given identifier.
+ The identifier can be specified using several formats:
+ <ul>
+ <li>FunctionLogicalName</li>
+ <li>ModuleSerialNumber.FunctionIdentifier</li>
+ <li>ModuleSerialNumber.FunctionLogicalName</li>
+ <li>ModuleLogicalName.FunctionIdentifier</li>
+ <li>ModuleLogicalName.FunctionLogicalName</li>
+ </ul>
+
+ This function does not require that the servo is online at the time
+ it is invoked. The returned object is nevertheless valid.
+ Use the method YServo.isOnline() to test if the servo is
+ indeed online at a given time. In case of ambiguity when looking for
+ a servo by logical name, no error is notified: the first instance
+ found is returned. The search is performed first by hardware name,
+ then by logical name.
+
+ @param func : a string that uniquely characterizes the servo
+
+ @return a YServo object allowing you to drive the servo.
+ """
+ # obj
+ obj = YFunction._FindFromCache("Servo", func)
+ if obj is None:
+ obj = YServo(func)
+ YFunction._AddToCache("Servo", func, obj)
+ return obj
+
+ def nextServo(self):
+ """
+ Continues the enumeration of servos started using yFirstServo().
+
+ @return a pointer to a YServo object, corresponding to
+ a servo currently online, or a None pointer
+ if there are no more servos to enumerate.
+ """
+ hwidRef = YRefParam()
+ if YAPI.YISERR(self._nextFunction(hwidRef)):
+ return None
+ if hwidRef.value == "":
+ return None
+ return YServo.FindServo(hwidRef.value)
+
+#--- (end of YServo implementation)
+
+#--- (Servo functions)
+
+ @staticmethod
+ def FirstServo():
+ """
+ Starts the enumeration of servos currently accessible.
+ Use the method YServo.nextServo() to iterate on
+ next servos.
+
+ @return a pointer to a YServo object, corresponding to
+ the first servo currently online, or a None pointer
+ if there are none.
+ """
+ devRef = YRefParam()
+ neededsizeRef = YRefParam()
+ serialRef = YRefParam()
+ funcIdRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+ errmsgRef = YRefParam()
+ size = YAPI.C_INTSIZE
+ #noinspection PyTypeChecker,PyCallingNonCallable
+ p = (ctypes.c_int * 1)()
+ err = YAPI.apiGetFunctionsByClass("Servo", 0, p, size, neededsizeRef, errmsgRef)
+
+ if YAPI.YISERR(err) or not neededsizeRef.value:
+ return None
+
+ if YAPI.YISERR(
+ YAPI.yapiGetFunctionInfo(p[0], devRef, serialRef, funcIdRef, funcNameRef, funcValRef, errmsgRef)):
+ return None
+
+ return YServo.FindServo(serialRef.value + "." + funcIdRef.value)
+
+#--- (end of Servo functions)
diff --git a/yoctoLib.python.26380/Sources/yocto_spiport.py b/yoctoLib.python.26380/Sources/yocto_spiport.py
new file mode 100644
index 0000000..f6007b6
--- /dev/null
+++ b/yoctoLib.python.26380/Sources/yocto_spiport.py
@@ -0,0 +1,1122 @@
+#*********************************************************************
+#*
+#* $Id: yocto_spiport.py 25085 2016-07-26 16:38:36Z mvuilleu $
+#*
+#* Implements yFindSpiPort(), the high-level API for SpiPort functions
+#*
+#* - - - - - - - - - License information: - - - - - - - - -
+#*
+#* Copyright (C) 2011 and beyond by Yoctopuce Sarl, Switzerland.
+#*
+#* Yoctopuce Sarl (hereafter Licensor) grants to you a perpetual
+#* non-exclusive license to use, modify, copy and integrate this
+#* file into your software for the sole purpose of interfacing
+#* with Yoctopuce products.
+#*
+#* You may reproduce and distribute copies of this file in
+#* source or object form, as long as the sole purpose of this
+#* code is to interface with Yoctopuce products. You must retain
+#* this notice in the distributed source file.
+#*
+#* You should refer to Yoctopuce General Terms and Conditions
+#* for additional information regarding your rights and
+#* obligations.
+#*
+#* THE SOFTWARE AND DOCUMENTATION ARE PROVIDED 'AS IS' WITHOUT
+#* WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
+#* WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS
+#* FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO
+#* EVENT SHALL LICENSOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
+#* INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA,
+#* COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR
+#* SERVICES, ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT
+#* LIMITED TO ANY DEFENSE THEREOF), ANY CLAIMS FOR INDEMNITY OR
+#* CONTRIBUTION, OR OTHER SIMILAR COSTS, WHETHER ASSERTED ON THE
+#* BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE), BREACH OF
+#* WARRANTY, OR OTHERWISE.
+#*
+#*********************************************************************/
+
+
+__docformat__ = 'restructuredtext en'
+from yocto_api import *
+
+
+#--- (YSpiPort class start)
+#noinspection PyProtectedMember
+class YSpiPort(YFunction):
+ """
+ The SpiPort function interface allows you to fully drive a Yoctopuce
+ SPI port, to send and receive data, and to configure communication
+ parameters (baud rate, bit count, parity, flow control and protocol).
+ Note that Yoctopuce SPI ports are not exposed as virtual COM ports.
+ They are meant to be used in the same way as all Yoctopuce devices.
+
+ """
+#--- (end of YSpiPort class start)
+ #--- (YSpiPort return codes)
+ #--- (end of YSpiPort return codes)
+ #--- (YSpiPort dlldef)
+ #--- (end of YSpiPort dlldef)
+ #--- (YSpiPort definitions)
+ RXCOUNT_INVALID = YAPI.INVALID_UINT
+ TXCOUNT_INVALID = YAPI.INVALID_UINT
+ ERRCOUNT_INVALID = YAPI.INVALID_UINT
+ RXMSGCOUNT_INVALID = YAPI.INVALID_UINT
+ TXMSGCOUNT_INVALID = YAPI.INVALID_UINT
+ LASTMSG_INVALID = YAPI.INVALID_STRING
+ CURRENTJOB_INVALID = YAPI.INVALID_STRING
+ STARTUPJOB_INVALID = YAPI.INVALID_STRING
+ COMMAND_INVALID = YAPI.INVALID_STRING
+ PROTOCOL_INVALID = YAPI.INVALID_STRING
+ SPIMODE_INVALID = YAPI.INVALID_STRING
+ VOLTAGELEVEL_OFF = 0
+ VOLTAGELEVEL_TTL3V = 1
+ VOLTAGELEVEL_TTL3VR = 2
+ VOLTAGELEVEL_TTL5V = 3
+ VOLTAGELEVEL_TTL5VR = 4
+ VOLTAGELEVEL_RS232 = 5
+ VOLTAGELEVEL_RS485 = 6
+ VOLTAGELEVEL_INVALID = -1
+ SSPOLARITY_ACTIVE_LOW = 0
+ SSPOLARITY_ACTIVE_HIGH = 1
+ SSPOLARITY_INVALID = -1
+ SHITFTSAMPLING_OFF = 0
+ SHITFTSAMPLING_ON = 1
+ SHITFTSAMPLING_INVALID = -1
+ #--- (end of YSpiPort definitions)
+
+ def __init__(self, func):
+ super(YSpiPort, self).__init__(func)
+ self._className = 'SpiPort'
+ #--- (YSpiPort attributes)
+ self._callback = None
+ self._rxCount = YSpiPort.RXCOUNT_INVALID
+ self._txCount = YSpiPort.TXCOUNT_INVALID
+ self._errCount = YSpiPort.ERRCOUNT_INVALID
+ self._rxMsgCount = YSpiPort.RXMSGCOUNT_INVALID
+ self._txMsgCount = YSpiPort.TXMSGCOUNT_INVALID
+ self._lastMsg = YSpiPort.LASTMSG_INVALID
+ self._currentJob = YSpiPort.CURRENTJOB_INVALID
+ self._startupJob = YSpiPort.STARTUPJOB_INVALID
+ self._command = YSpiPort.COMMAND_INVALID
+ self._voltageLevel = YSpiPort.VOLTAGELEVEL_INVALID
+ self._protocol = YSpiPort.PROTOCOL_INVALID
+ self._spiMode = YSpiPort.SPIMODE_INVALID
+ self._ssPolarity = YSpiPort.SSPOLARITY_INVALID
+ self._shitftSampling = YSpiPort.SHITFTSAMPLING_INVALID
+ self._rxptr = 0
+ self._rxbuff = ''
+ self._rxbuffptr = 0
+ #--- (end of YSpiPort attributes)
+
+ #--- (YSpiPort implementation)
+ def _parseAttr(self, member):
+ if member.name == "rxCount":
+ self._rxCount = member.ivalue
+ return 1
+ if member.name == "txCount":
+ self._txCount = member.ivalue
+ return 1
+ if member.name == "errCount":
+ self._errCount = member.ivalue
+ return 1
+ if member.name == "rxMsgCount":
+ self._rxMsgCount = member.ivalue
+ return 1
+ if member.name == "txMsgCount":
+ self._txMsgCount = member.ivalue
+ return 1
+ if member.name == "lastMsg":
+ self._lastMsg = member.svalue
+ return 1
+ if member.name == "currentJob":
+ self._currentJob = member.svalue
+ return 1
+ if member.name == "startupJob":
+ self._startupJob = member.svalue
+ return 1
+ if member.name == "command":
+ self._command = member.svalue
+ return 1
+ if member.name == "voltageLevel":
+ self._voltageLevel = member.ivalue
+ return 1
+ if member.name == "protocol":
+ self._protocol = member.svalue
+ return 1
+ if member.name == "spiMode":
+ self._spiMode = member.svalue
+ return 1
+ if member.name == "ssPolarity":
+ self._ssPolarity = member.ivalue
+ return 1
+ if member.name == "shitftSampling":
+ self._shitftSampling = member.ivalue
+ return 1
+ super(YSpiPort, self)._parseAttr(member)
+
+ def get_rxCount(self):
+ """
+ Returns the total number of bytes received since last reset.
+
+ @return an integer corresponding to the total number of bytes received since last reset
+
+ On failure, throws an exception or returns YSpiPort.RXCOUNT_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YSpiPort.RXCOUNT_INVALID
+ return self._rxCount
+
+ def get_txCount(self):
+ """
+ Returns the total number of bytes transmitted since last reset.
+
+ @return an integer corresponding to the total number of bytes transmitted since last reset
+
+ On failure, throws an exception or returns YSpiPort.TXCOUNT_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YSpiPort.TXCOUNT_INVALID
+ return self._txCount
+
+ def get_errCount(self):
+ """
+ Returns the total number of communication errors detected since last reset.
+
+ @return an integer corresponding to the total number of communication errors detected since last reset
+
+ On failure, throws an exception or returns YSpiPort.ERRCOUNT_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YSpiPort.ERRCOUNT_INVALID
+ return self._errCount
+
+ def get_rxMsgCount(self):
+ """
+ Returns the total number of messages received since last reset.
+
+ @return an integer corresponding to the total number of messages received since last reset
+
+ On failure, throws an exception or returns YSpiPort.RXMSGCOUNT_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YSpiPort.RXMSGCOUNT_INVALID
+ return self._rxMsgCount
+
+ def get_txMsgCount(self):
+ """
+ Returns the total number of messages send since last reset.
+
+ @return an integer corresponding to the total number of messages send since last reset
+
+ On failure, throws an exception or returns YSpiPort.TXMSGCOUNT_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YSpiPort.TXMSGCOUNT_INVALID
+ return self._txMsgCount
+
+ def get_lastMsg(self):
+ """
+ Returns the latest message fully received (for Line and Frame protocols).
+
+ @return a string corresponding to the latest message fully received (for Line and Frame protocols)
+
+ On failure, throws an exception or returns YSpiPort.LASTMSG_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YSpiPort.LASTMSG_INVALID
+ return self._lastMsg
+
+ def get_currentJob(self):
+ """
+ Returns the name of the job file currently in use.
+
+ @return a string corresponding to the name of the job file currently in use
+
+ On failure, throws an exception or returns YSpiPort.CURRENTJOB_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YSpiPort.CURRENTJOB_INVALID
+ return self._currentJob
+
+ def set_currentJob(self, newval):
+ """
+ Changes the job to use when the device is powered on.
+ Remember to call the saveToFlash() method of the module if the
+ modification must be kept.
+
+ @param newval : a string corresponding to the job to use when the device is powered on
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = newval
+ return self._setAttr("currentJob", rest_val)
+
+ def get_startupJob(self):
+ """
+ Returns the job file to use when the device is powered on.
+
+ @return a string corresponding to the job file to use when the device is powered on
+
+ On failure, throws an exception or returns YSpiPort.STARTUPJOB_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YSpiPort.STARTUPJOB_INVALID
+ return self._startupJob
+
+ def set_startupJob(self, newval):
+ """
+ Changes the job to use when the device is powered on.
+ Remember to call the saveToFlash() method of the module if the
+ modification must be kept.
+
+ @param newval : a string corresponding to the job to use when the device is powered on
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = newval
+ return self._setAttr("startupJob", rest_val)
+
+ def get_command(self):
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YSpiPort.COMMAND_INVALID
+ return self._command
+
+ def set_command(self, newval):
+ rest_val = newval
+ return self._setAttr("command", rest_val)
+
+ def get_voltageLevel(self):
+ """
+ Returns the voltage level used on the serial line.
+
+ @return a value among YSpiPort.VOLTAGELEVEL_OFF, YSpiPort.VOLTAGELEVEL_TTL3V,
+ YSpiPort.VOLTAGELEVEL_TTL3VR, YSpiPort.VOLTAGELEVEL_TTL5V, YSpiPort.VOLTAGELEVEL_TTL5VR,
+ YSpiPort.VOLTAGELEVEL_RS232 and YSpiPort.VOLTAGELEVEL_RS485 corresponding to the voltage level used
+ on the serial line
+
+ On failure, throws an exception or returns YSpiPort.VOLTAGELEVEL_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YSpiPort.VOLTAGELEVEL_INVALID
+ return self._voltageLevel
+
+ def set_voltageLevel(self, newval):
+ """
+ Changes the voltage type used on the serial line. Valid
+ values will depend on the Yoctopuce device model featuring
+ the serial port feature. Check your device documentation
+ to find out which values are valid for that specific model.
+ Trying to set an invalid value will have no effect.
+
+ @param newval : a value among YSpiPort.VOLTAGELEVEL_OFF, YSpiPort.VOLTAGELEVEL_TTL3V,
+ YSpiPort.VOLTAGELEVEL_TTL3VR, YSpiPort.VOLTAGELEVEL_TTL5V, YSpiPort.VOLTAGELEVEL_TTL5VR,
+ YSpiPort.VOLTAGELEVEL_RS232 and YSpiPort.VOLTAGELEVEL_RS485 corresponding to the voltage type used
+ on the serial line
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("voltageLevel", rest_val)
+
+ def get_protocol(self):
+ """
+ Returns the type of protocol used over the serial line, as a string.
+ Possible values are "Line" for ASCII messages separated by CR and/or LF,
+ "Frame:[timeout]ms" for binary messages separated by a delay time,
+ "Char" for a continuous ASCII stream or
+ "Byte" for a continuous binary stream.
+
+ @return a string corresponding to the type of protocol used over the serial line, as a string
+
+ On failure, throws an exception or returns YSpiPort.PROTOCOL_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YSpiPort.PROTOCOL_INVALID
+ return self._protocol
+
+ def set_protocol(self, newval):
+ """
+ Changes the type of protocol used over the serial line.
+ Possible values are "Line" for ASCII messages separated by CR and/or LF,
+ "Frame:[timeout]ms" for binary messages separated by a delay time,
+ "Char" for a continuous ASCII stream or
+ "Byte" for a continuous binary stream.
+ The suffix "/[wait]ms" can be added to reduce the transmit rate so that there
+ is always at lest the specified number of milliseconds between each bytes sent.
+
+ @param newval : a string corresponding to the type of protocol used over the serial line
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = newval
+ return self._setAttr("protocol", rest_val)
+
+ def get_spiMode(self):
+ """
+ Returns the SPI port communication parameters, as a string such as
+ "125000,0,msb". The string includes the baud rate, the SPI mode (between
+ 0 and 3) and the bit order.
+
+ @return a string corresponding to the SPI port communication parameters, as a string such as
+ "125000,0,msb"
+
+ On failure, throws an exception or returns YSpiPort.SPIMODE_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YSpiPort.SPIMODE_INVALID
+ return self._spiMode
+
+ def set_spiMode(self, newval):
+ """
+ Changes the SPI port communication parameters, with a string such as
+ "125000,0,msb". The string includes the baud rate, the SPI mode (between
+ 0 and 3) and the bit order.
+
+ @param newval : a string corresponding to the SPI port communication parameters, with a string such as
+ "125000,0,msb"
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = newval
+ return self._setAttr("spiMode", rest_val)
+
+ def get_ssPolarity(self):
+ """
+ Returns the SS line polarity.
+
+ @return either YSpiPort.SSPOLARITY_ACTIVE_LOW or YSpiPort.SSPOLARITY_ACTIVE_HIGH, according to the
+ SS line polarity
+
+ On failure, throws an exception or returns YSpiPort.SSPOLARITY_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YSpiPort.SSPOLARITY_INVALID
+ return self._ssPolarity
+
+ def set_ssPolarity(self, newval):
+ """
+ Changes the SS line polarity.
+
+ @param newval : either YSpiPort.SSPOLARITY_ACTIVE_LOW or YSpiPort.SSPOLARITY_ACTIVE_HIGH, according
+ to the SS line polarity
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = "1" if newval > 0 else "0"
+ return self._setAttr("ssPolarity", rest_val)
+
+ def get_shitftSampling(self):
+ """
+ Returns true when the SDI line phase is shifted with regards to the SDO line.
+
+ @return either YSpiPort.SHITFTSAMPLING_OFF or YSpiPort.SHITFTSAMPLING_ON, according to true when
+ the SDI line phase is shifted with regards to the SDO line
+
+ On failure, throws an exception or returns YSpiPort.SHITFTSAMPLING_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YSpiPort.SHITFTSAMPLING_INVALID
+ return self._shitftSampling
+
+ def set_shitftSampling(self, newval):
+ """
+ Changes the SDI line sampling shift. When disabled, SDI line is
+ sampled in the middle of data output time. When enabled, SDI line is
+ samples at the end of data output time.
+
+ @param newval : either YSpiPort.SHITFTSAMPLING_OFF or YSpiPort.SHITFTSAMPLING_ON, according to the
+ SDI line sampling shift
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = "1" if newval > 0 else "0"
+ return self._setAttr("shitftSampling", rest_val)
+
+ @staticmethod
+ def FindSpiPort(func):
+ """
+ Retrieves a SPI port for a given identifier.
+ The identifier can be specified using several formats:
+ <ul>
+ <li>FunctionLogicalName</li>
+ <li>ModuleSerialNumber.FunctionIdentifier</li>
+ <li>ModuleSerialNumber.FunctionLogicalName</li>
+ <li>ModuleLogicalName.FunctionIdentifier</li>
+ <li>ModuleLogicalName.FunctionLogicalName</li>
+ </ul>
+
+ This function does not require that the SPI port is online at the time
+ it is invoked. The returned object is nevertheless valid.
+ Use the method YSpiPort.isOnline() to test if the SPI port is
+ indeed online at a given time. In case of ambiguity when looking for
+ a SPI port by logical name, no error is notified: the first instance
+ found is returned. The search is performed first by hardware name,
+ then by logical name.
+
+ @param func : a string that uniquely characterizes the SPI port
+
+ @return a YSpiPort object allowing you to drive the SPI port.
+ """
+ # obj
+ obj = YFunction._FindFromCache("SpiPort", func)
+ if obj is None:
+ obj = YSpiPort(func)
+ YFunction._AddToCache("SpiPort", func, obj)
+ return obj
+
+ def sendCommand(self, text):
+ # // may throw an exception
+ return self.set_command(text)
+
+ def reset(self):
+ """
+ Clears the serial port buffer and resets counters to zero.
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ self._rxptr = 0
+ self._rxbuffptr = 0
+ self._rxbuff = bytearray(0)
+ # // may throw an exception
+ return self.sendCommand("Z")
+
+ def writeByte(self, code):
+ """
+ Sends a single byte to the serial port.
+
+ @param code : the byte to send
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ # // may throw an exception
+ return self.sendCommand("$" + ("%02X" % code))
+
+ def writeStr(self, text):
+ """
+ Sends an ASCII string to the serial port, as is.
+
+ @param text : the text string to send
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ # buff
+ # bufflen
+ # idx
+ # ch
+ buff = YString2Byte(text)
+ bufflen = len(buff)
+ if bufflen < 100:
+ #
+ ch = 0x20
+ idx = 0
+ while (idx < bufflen) and (ch != 0):
+ ch = YGetByte(buff, idx)
+ if (ch >= 0x20) and (ch < 0x7f):
+ idx = idx + 1
+ else:
+ ch = 0
+ if idx >= bufflen:
+ #
+ return self.sendCommand("+" + text)
+ # // send string using file upload
+ return self._upload("txdata", buff)
+
+ def writeBin(self, buff):
+ """
+ Sends a binary buffer to the serial port, as is.
+
+ @param buff : the binary buffer to send
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ # // may throw an exception
+ return self._upload("txdata", buff)
+
+ def writeArray(self, byteList):
+ """
+ Sends a byte sequence (provided as a list of bytes) to the serial port.
+
+ @param byteList : a list of byte codes
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ # buff
+ # bufflen
+ # idx
+ # hexb
+ # res
+ bufflen = len(byteList)
+ buff = bytearray(bufflen)
+ idx = 0
+ while idx < bufflen:
+ hexb = byteList[idx]
+ buff[idx] = hexb
+ idx = idx + 1
+ # // may throw an exception
+ res = self._upload("txdata", buff)
+ return res
+
+ def writeHex(self, hexString):
+ """
+ Sends a byte sequence (provided as a hexadecimal string) to the serial port.
+
+ @param hexString : a string of hexadecimal byte codes
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ # buff
+ # bufflen
+ # idx
+ # hexb
+ # res
+ bufflen = len(hexString)
+ if bufflen < 100:
+ #
+ return self.sendCommand("$" + hexString)
+ bufflen = ((bufflen) >> (1))
+ buff = bytearray(bufflen)
+ idx = 0
+ while idx < bufflen:
+ hexb = int((hexString)[2 * idx: 2 * idx + 2], 16)
+ buff[idx] = hexb
+ idx = idx + 1
+ # // may throw an exception
+ res = self._upload("txdata", buff)
+ return res
+
+ def writeLine(self, text):
+ """
+ Sends an ASCII string to the serial port, followed by a line break (CR LF).
+
+ @param text : the text string to send
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ # buff
+ # bufflen
+ # idx
+ # ch
+ buff = YString2Byte("" + text + "\r\n")
+ bufflen = len(buff)-2
+ if bufflen < 100:
+ #
+ ch = 0x20
+ idx = 0
+ while (idx < bufflen) and (ch != 0):
+ ch = YGetByte(buff, idx)
+ if (ch >= 0x20) and (ch < 0x7f):
+ idx = idx + 1
+ else:
+ ch = 0
+ if idx >= bufflen:
+ #
+ return self.sendCommand("!" + text)
+ # // send string using file upload
+ return self._upload("txdata", buff)
+
+ def readByte(self):
+ """
+ Reads one byte from the receive buffer, starting at current stream position.
+ If data at current stream position is not available anymore in the receive buffer,
+ or if there is no data available yet, the function returns YAPI.NO_MORE_DATA.
+
+ @return the next byte
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ # currpos
+ # reqlen
+ # buff
+ # bufflen
+ # mult
+ # endpos
+ # res
+
+ # // first check if we have the requested character in the look-ahead buffer
+ bufflen = len(self._rxbuff)
+ if (self._rxptr >= self._rxbuffptr) and (self._rxptr < self._rxbuffptr+bufflen):
+ res = YGetByte(self._rxbuff, self._rxptr-self._rxbuffptr)
+ self._rxptr = self._rxptr + 1
+ return res
+
+ # // try to preload more than one byte to speed-up byte-per-byte access
+ currpos = self._rxptr
+ reqlen = 1024
+ buff = self.readBin(reqlen)
+ bufflen = len(buff)
+ if self._rxptr == currpos+bufflen:
+ res = YGetByte(buff, 0)
+ self._rxptr = currpos+1
+ self._rxbuffptr = currpos
+ self._rxbuff = buff
+ return res
+ # // mixed bidirectional data, retry with a smaller block
+ self._rxptr = currpos
+ reqlen = 16
+ buff = self.readBin(reqlen)
+ bufflen = len(buff)
+ if self._rxptr == currpos+bufflen:
+ res = YGetByte(buff, 0)
+ self._rxptr = currpos+1
+ self._rxbuffptr = currpos
+ self._rxbuff = buff
+ return res
+ # // still mixed, need to process character by character
+ self._rxptr = currpos
+
+ # // may throw an exception
+ buff = self._download("rxdata.bin?pos=" + str(int(self._rxptr)) + "&len=1")
+ bufflen = len(buff) - 1
+ endpos = 0
+ mult = 1
+ while (bufflen > 0) and (YGetByte(buff, bufflen) != 64):
+ endpos = endpos + mult * (YGetByte(buff, bufflen) - 48)
+ mult = mult * 10
+ bufflen = bufflen - 1
+ self._rxptr = endpos
+ if bufflen == 0:
+ return YAPI.NO_MORE_DATA
+ res = YGetByte(buff, 0)
+ return res
+
+ def readStr(self, nChars):
+ """
+ Reads data from the receive buffer as a string, starting at current stream position.
+ If data at current stream position is not available anymore in the receive buffer, the
+ function performs a short read.
+
+ @param nChars : the maximum number of characters to read
+
+ @return a string with receive buffer contents
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ # buff
+ # bufflen
+ # mult
+ # endpos
+ # res
+ if nChars > 65535:
+ nChars = 65535
+ # // may throw an exception
+ buff = self._download("rxdata.bin?pos=" + str(int(self._rxptr)) + "&len=" + str(int(nChars)))
+ bufflen = len(buff) - 1
+ endpos = 0
+ mult = 1
+ while (bufflen > 0) and (YGetByte(buff, bufflen) != 64):
+ endpos = endpos + mult * (YGetByte(buff, bufflen) - 48)
+ mult = mult * 10
+ bufflen = bufflen - 1
+ self._rxptr = endpos
+ res = (YByte2String(buff))[0: 0 + bufflen]
+ return res
+
+ def readBin(self, nChars):
+ """
+ Reads data from the receive buffer as a binary buffer, starting at current stream position.
+ If data at current stream position is not available anymore in the receive buffer, the
+ function performs a short read.
+
+ @param nChars : the maximum number of bytes to read
+
+ @return a binary object with receive buffer contents
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ # buff
+ # bufflen
+ # mult
+ # endpos
+ # idx
+ # res
+ if nChars > 65535:
+ nChars = 65535
+ # // may throw an exception
+ buff = self._download("rxdata.bin?pos=" + str(int(self._rxptr)) + "&len=" + str(int(nChars)))
+ bufflen = len(buff) - 1
+ endpos = 0
+ mult = 1
+ while (bufflen > 0) and (YGetByte(buff, bufflen) != 64):
+ endpos = endpos + mult * (YGetByte(buff, bufflen) - 48)
+ mult = mult * 10
+ bufflen = bufflen - 1
+ self._rxptr = endpos
+ res = bytearray(bufflen)
+ idx = 0
+ while idx < bufflen:
+ res[idx] = YGetByte(buff, idx)
+ idx = idx + 1
+ return res
+
+ def readArray(self, nChars):
+ """
+ Reads data from the receive buffer as a list of bytes, starting at current stream position.
+ If data at current stream position is not available anymore in the receive buffer, the
+ function performs a short read.
+
+ @param nChars : the maximum number of bytes to read
+
+ @return a sequence of bytes with receive buffer contents
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ # buff
+ # bufflen
+ # mult
+ # endpos
+ # idx
+ # b
+ res = []
+ if nChars > 65535:
+ nChars = 65535
+ # // may throw an exception
+ buff = self._download("rxdata.bin?pos=" + str(int(self._rxptr)) + "&len=" + str(int(nChars)))
+ bufflen = len(buff) - 1
+ endpos = 0
+ mult = 1
+ while (bufflen > 0) and (YGetByte(buff, bufflen) != 64):
+ endpos = endpos + mult * (YGetByte(buff, bufflen) - 48)
+ mult = mult * 10
+ bufflen = bufflen - 1
+ self._rxptr = endpos
+ del res[:]
+ idx = 0
+ while idx < bufflen:
+ b = YGetByte(buff, idx)
+ res.append(b)
+ idx = idx + 1
+
+ return res
+
+ def readHex(self, nBytes):
+ """
+ Reads data from the receive buffer as a hexadecimal string, starting at current stream position.
+ If data at current stream position is not available anymore in the receive buffer, the
+ function performs a short read.
+
+ @param nBytes : the maximum number of bytes to read
+
+ @return a string with receive buffer contents, encoded in hexadecimal
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ # buff
+ # bufflen
+ # mult
+ # endpos
+ # ofs
+ # res
+ if nBytes > 65535:
+ nBytes = 65535
+ # // may throw an exception
+ buff = self._download("rxdata.bin?pos=" + str(int(self._rxptr)) + "&len=" + str(int(nBytes)))
+ bufflen = len(buff) - 1
+ endpos = 0
+ mult = 1
+ while (bufflen > 0) and (YGetByte(buff, bufflen) != 64):
+ endpos = endpos + mult * (YGetByte(buff, bufflen) - 48)
+ mult = mult * 10
+ bufflen = bufflen - 1
+ self._rxptr = endpos
+ res = ""
+ ofs = 0
+ while ofs + 3 < bufflen:
+ res = "" + res + "" + ("%02X" % YGetByte(buff, ofs)) + "" + ("%02X" % YGetByte(buff, ofs + 1)) + "" + ("%02X" % YGetByte(buff, ofs + 2)) + "" + ("%02X" % YGetByte(buff, ofs + 3))
+ ofs = ofs + 4
+ while ofs < bufflen:
+ res = "" + res + "" + ("%02X" % YGetByte(buff, ofs))
+ ofs = ofs + 1
+ return res
+
+ def readLine(self):
+ """
+ Reads a single line (or message) from the receive buffer, starting at current stream position.
+ This function is intended to be used when the serial port is configured for a message protocol,
+ such as 'Line' mode or frame protocols.
+
+ If data at current stream position is not available anymore in the receive buffer,
+ the function returns the oldest available line and moves the stream position just after.
+ If no new full line is received, the function returns an empty line.
+
+ @return a string with a single line of text
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ # url
+ # msgbin
+ msgarr = []
+ # msglen
+ # res
+ # // may throw an exception
+ url = "rxmsg.json?pos=" + str(int(self._rxptr)) + "&len=1&maxw=1"
+ msgbin = self._download(url)
+ msgarr = self._json_get_array(msgbin)
+ msglen = len(msgarr)
+ if msglen == 0:
+ return ""
+ # // last element of array is the new position
+ msglen = msglen - 1
+ self._rxptr = YAPI._atoi(msgarr[msglen])
+ if msglen == 0:
+ return ""
+ res = self._json_get_string(YString2Byte(msgarr[0]))
+ return res
+
+ def readMessages(self, pattern, maxWait):
+ """
+ Searches for incoming messages in the serial port receive buffer matching a given pattern,
+ starting at current position. This function will only compare and return printable characters
+ in the message strings. Binary protocols are handled as hexadecimal strings.
+
+ The search returns all messages matching the expression provided as argument in the buffer.
+ If no matching message is found, the search waits for one up to the specified maximum timeout
+ (in milliseconds).
+
+ @param pattern : a limited regular expression describing the expected message format,
+ or an empty string if all messages should be returned (no filtering).
+ When using binary protocols, the format applies to the hexadecimal
+ representation of the message.
+ @param maxWait : the maximum number of milliseconds to wait for a message if none is found
+ in the receive buffer.
+
+ @return an array of strings containing the messages found, if any.
+ Binary messages are converted to hexadecimal representation.
+
+ On failure, throws an exception or returns an empty array.
+ """
+ # url
+ # msgbin
+ msgarr = []
+ # msglen
+ res = []
+ # idx
+ # // may throw an exception
+ url = "rxmsg.json?pos=" + str(int(self._rxptr)) + "&maxw=" + str(int(maxWait)) + "&pat=" + pattern
+ msgbin = self._download(url)
+ msgarr = self._json_get_array(msgbin)
+ msglen = len(msgarr)
+ if msglen == 0:
+ return res
+ # // last element of array is the new position
+ msglen = msglen - 1
+ self._rxptr = YAPI._atoi(msgarr[msglen])
+ idx = 0
+
+ while idx < msglen:
+ res.append(self._json_get_string(YString2Byte(msgarr[idx])))
+ idx = idx + 1
+
+ return res
+
+ def read_seek(self, absPos):
+ """
+ Changes the current internal stream position to the specified value. This function
+ does not affect the device, it only changes the value stored in the API object
+ for the next read operations.
+
+ @param absPos : the absolute position index for next read operations.
+
+ @return nothing.
+ """
+ self._rxptr = absPos
+ return YAPI.SUCCESS
+
+ def read_tell(self):
+ """
+ Returns the current absolute stream position pointer of the API object.
+
+ @return the absolute position index for next read operations.
+ """
+ return self._rxptr
+
+ def read_avail(self):
+ """
+ Returns the number of bytes available to read in the input buffer starting from the
+ current absolute stream position pointer of the API object.
+
+ @return the number of bytes available to read
+ """
+ # buff
+ # bufflen
+ # res
+ # // may throw an exception
+ buff = self._download("rxcnt.bin?pos=" + str(int(self._rxptr)))
+ bufflen = len(buff) - 1
+ while (bufflen > 0) and (YGetByte(buff, bufflen) != 64):
+ bufflen = bufflen - 1
+ res = YAPI._atoi((YByte2String(buff))[0: 0 + bufflen])
+ return res
+
+ def queryLine(self, query, maxWait):
+ """
+ Sends a text line query to the serial port, and reads the reply, if any.
+ This function is intended to be used when the serial port is configured for 'Line' protocol.
+
+ @param query : the line query to send (without CR/LF)
+ @param maxWait : the maximum number of milliseconds to wait for a reply.
+
+ @return the next text line received after sending the text query, as a string.
+ Additional lines can be obtained by calling readLine or readMessages.
+
+ On failure, throws an exception or returns an empty array.
+ """
+ # url
+ # msgbin
+ msgarr = []
+ # msglen
+ # res
+ # // may throw an exception
+ url = "rxmsg.json?len=1&maxw=" + str(int(maxWait)) + "&cmd=!" + query
+ msgbin = self._download(url)
+ msgarr = self._json_get_array(msgbin)
+ msglen = len(msgarr)
+ if msglen == 0:
+ return ""
+ # // last element of array is the new position
+ msglen = msglen - 1
+ self._rxptr = YAPI._atoi(msgarr[msglen])
+ if msglen == 0:
+ return ""
+ res = self._json_get_string(YString2Byte(msgarr[0]))
+ return res
+
+ def uploadJob(self, jobfile, jsonDef):
+ """
+ Saves the job definition string (JSON data) into a job file.
+ The job file can be later enabled using selectJob().
+
+ @param jobfile : name of the job file to save on the device filesystem
+ @param jsonDef : a string containing a JSON definition of the job
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ self._upload(jobfile, YString2Byte(jsonDef))
+ return YAPI.SUCCESS
+
+ def selectJob(self, jobfile):
+ """
+ Load and start processing the specified job file. The file must have
+ been previously created using the user interface or uploaded on the
+ device filesystem using the uploadJob() function.
+
+ @param jobfile : name of the job file (on the device filesystem)
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ # // may throw an exception
+ return self.set_currentJob(jobfile)
+
+ def set_SS(self, val):
+ """
+ Manually sets the state of the SS line. This function has no effect when
+ the SS line is handled automatically.
+
+ @param val : 1 to turn SS active, 0 to release SS.
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ # // may throw an exception
+ return self.sendCommand("S" + str(int(val)))
+
+ def nextSpiPort(self):
+ """
+ Continues the enumeration of SPI ports started using yFirstSpiPort().
+
+ @return a pointer to a YSpiPort object, corresponding to
+ a SPI port currently online, or a None pointer
+ if there are no more SPI ports to enumerate.
+ """
+ hwidRef = YRefParam()
+ if YAPI.YISERR(self._nextFunction(hwidRef)):
+ return None
+ if hwidRef.value == "":
+ return None
+ return YSpiPort.FindSpiPort(hwidRef.value)
+
+#--- (end of YSpiPort implementation)
+
+#--- (SpiPort functions)
+
+ @staticmethod
+ def FirstSpiPort():
+ """
+ Starts the enumeration of SPI ports currently accessible.
+ Use the method YSpiPort.nextSpiPort() to iterate on
+ next SPI ports.
+
+ @return a pointer to a YSpiPort object, corresponding to
+ the first SPI port currently online, or a None pointer
+ if there are none.
+ """
+ devRef = YRefParam()
+ neededsizeRef = YRefParam()
+ serialRef = YRefParam()
+ funcIdRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+ errmsgRef = YRefParam()
+ size = YAPI.C_INTSIZE
+ #noinspection PyTypeChecker,PyCallingNonCallable
+ p = (ctypes.c_int * 1)()
+ err = YAPI.apiGetFunctionsByClass("SpiPort", 0, p, size, neededsizeRef, errmsgRef)
+
+ if YAPI.YISERR(err) or not neededsizeRef.value:
+ return None
+
+ if YAPI.YISERR(
+ YAPI.yapiGetFunctionInfo(p[0], devRef, serialRef, funcIdRef, funcNameRef, funcValRef, errmsgRef)):
+ return None
+
+ return YSpiPort.FindSpiPort(serialRef.value + "." + funcIdRef.value)
+
+#--- (end of SpiPort functions)
diff --git a/yoctoLib.python.26380/Sources/yocto_steppermotor.py b/yoctoLib.python.26380/Sources/yocto_steppermotor.py
new file mode 100644
index 0000000..d071a06
--- /dev/null
+++ b/yoctoLib.python.26380/Sources/yocto_steppermotor.py
@@ -0,0 +1,675 @@
+#*********************************************************************
+#*
+#* $Id: yocto_steppermotor.py 26253 2017-01-03 17:41:07Z seb $
+#*
+#* Implements yFindStepperMotor(), the high-level API for StepperMotor functions
+#*
+#* - - - - - - - - - License information: - - - - - - - - -
+#*
+#* Copyright (C) 2011 and beyond by Yoctopuce Sarl, Switzerland.
+#*
+#* Yoctopuce Sarl (hereafter Licensor) grants to you a perpetual
+#* non-exclusive license to use, modify, copy and integrate this
+#* file into your software for the sole purpose of interfacing
+#* with Yoctopuce products.
+#*
+#* You may reproduce and distribute copies of this file in
+#* source or object form, as long as the sole purpose of this
+#* code is to interface with Yoctopuce products. You must retain
+#* this notice in the distributed source file.
+#*
+#* You should refer to Yoctopuce General Terms and Conditions
+#* for additional information regarding your rights and
+#* obligations.
+#*
+#* THE SOFTWARE AND DOCUMENTATION ARE PROVIDED 'AS IS' WITHOUT
+#* WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
+#* WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS
+#* FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO
+#* EVENT SHALL LICENSOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
+#* INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA,
+#* COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR
+#* SERVICES, ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT
+#* LIMITED TO ANY DEFENSE THEREOF), ANY CLAIMS FOR INDEMNITY OR
+#* CONTRIBUTION, OR OTHER SIMILAR COSTS, WHETHER ASSERTED ON THE
+#* BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE), BREACH OF
+#* WARRANTY, OR OTHERWISE.
+#*
+#*********************************************************************/
+
+
+__docformat__ = 'restructuredtext en'
+from yocto_api import *
+
+
+#--- (YStepperMotor class start)
+#noinspection PyProtectedMember
+class YStepperMotor(YFunction):
+ """
+ The Yoctopuce application programming interface allows you to drive a stepper motor.
+
+ """
+#--- (end of YStepperMotor class start)
+ #--- (YStepperMotor return codes)
+ #--- (end of YStepperMotor return codes)
+ #--- (YStepperMotor dlldef)
+ #--- (end of YStepperMotor dlldef)
+ #--- (YStepperMotor definitions)
+ DIAGS_INVALID = YAPI.INVALID_UINT
+ STEPPOS_INVALID = YAPI.INVALID_DOUBLE
+ SPEED_INVALID = YAPI.INVALID_DOUBLE
+ PULLINSPEED_INVALID = YAPI.INVALID_DOUBLE
+ MAXACCEL_INVALID = YAPI.INVALID_DOUBLE
+ MAXSPEED_INVALID = YAPI.INVALID_DOUBLE
+ OVERCURRENT_INVALID = YAPI.INVALID_UINT
+ TCURRSTOP_INVALID = YAPI.INVALID_UINT
+ TCURRRUN_INVALID = YAPI.INVALID_UINT
+ ALERTMODE_INVALID = YAPI.INVALID_STRING
+ AUXMODE_INVALID = YAPI.INVALID_STRING
+ AUXSIGNAL_INVALID = YAPI.INVALID_INT
+ COMMAND_INVALID = YAPI.INVALID_STRING
+ MOTORSTATE_ABSENT = 0
+ MOTORSTATE_ALERT = 1
+ MOTORSTATE_HI_Z = 2
+ MOTORSTATE_STOP = 3
+ MOTORSTATE_RUN = 4
+ MOTORSTATE_BATCH = 5
+ MOTORSTATE_INVALID = -1
+ STEPPING_MICROSTEP16 = 0
+ STEPPING_MICROSTEP8 = 1
+ STEPPING_MICROSTEP4 = 2
+ STEPPING_HALFSTEP = 3
+ STEPPING_FULLSTEP = 4
+ STEPPING_INVALID = -1
+ #--- (end of YStepperMotor definitions)
+
+ def __init__(self, func):
+ super(YStepperMotor, self).__init__(func)
+ self._className = 'StepperMotor'
+ #--- (YStepperMotor attributes)
+ self._callback = None
+ self._motorState = YStepperMotor.MOTORSTATE_INVALID
+ self._diags = YStepperMotor.DIAGS_INVALID
+ self._stepPos = YStepperMotor.STEPPOS_INVALID
+ self._speed = YStepperMotor.SPEED_INVALID
+ self._pullinSpeed = YStepperMotor.PULLINSPEED_INVALID
+ self._maxAccel = YStepperMotor.MAXACCEL_INVALID
+ self._maxSpeed = YStepperMotor.MAXSPEED_INVALID
+ self._stepping = YStepperMotor.STEPPING_INVALID
+ self._overcurrent = YStepperMotor.OVERCURRENT_INVALID
+ self._tCurrStop = YStepperMotor.TCURRSTOP_INVALID
+ self._tCurrRun = YStepperMotor.TCURRRUN_INVALID
+ self._alertMode = YStepperMotor.ALERTMODE_INVALID
+ self._auxMode = YStepperMotor.AUXMODE_INVALID
+ self._auxSignal = YStepperMotor.AUXSIGNAL_INVALID
+ self._command = YStepperMotor.COMMAND_INVALID
+ #--- (end of YStepperMotor attributes)
+
+ #--- (YStepperMotor implementation)
+ def _parseAttr(self, member):
+ if member.name == "motorState":
+ self._motorState = member.ivalue
+ return 1
+ if member.name == "diags":
+ self._diags = member.ivalue
+ return 1
+ if member.name == "stepPos":
+ self._stepPos = member.ivalue / 16.0
+ return 1
+ if member.name == "speed":
+ self._speed = round(member.ivalue * 1000.0 / 65536.0) / 1000.0
+ return 1
+ if member.name == "pullinSpeed":
+ self._pullinSpeed = round(member.ivalue * 1000.0 / 65536.0) / 1000.0
+ return 1
+ if member.name == "maxAccel":
+ self._maxAccel = round(member.ivalue * 1000.0 / 65536.0) / 1000.0
+ return 1
+ if member.name == "maxSpeed":
+ self._maxSpeed = round(member.ivalue * 1000.0 / 65536.0) / 1000.0
+ return 1
+ if member.name == "stepping":
+ self._stepping = member.ivalue
+ return 1
+ if member.name == "overcurrent":
+ self._overcurrent = member.ivalue
+ return 1
+ if member.name == "tCurrStop":
+ self._tCurrStop = member.ivalue
+ return 1
+ if member.name == "tCurrRun":
+ self._tCurrRun = member.ivalue
+ return 1
+ if member.name == "alertMode":
+ self._alertMode = member.svalue
+ return 1
+ if member.name == "auxMode":
+ self._auxMode = member.svalue
+ return 1
+ if member.name == "auxSignal":
+ self._auxSignal = member.ivalue
+ return 1
+ if member.name == "command":
+ self._command = member.svalue
+ return 1
+ super(YStepperMotor, self)._parseAttr(member)
+
+ def get_motorState(self):
+ """
+ Returns the motor working state.
+
+ @return a value among YStepperMotor.MOTORSTATE_ABSENT, YStepperMotor.MOTORSTATE_ALERT,
+ YStepperMotor.MOTORSTATE_HI_Z, YStepperMotor.MOTORSTATE_STOP, YStepperMotor.MOTORSTATE_RUN and
+ YStepperMotor.MOTORSTATE_BATCH corresponding to the motor working state
+
+ On failure, throws an exception or returns YStepperMotor.MOTORSTATE_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YStepperMotor.MOTORSTATE_INVALID
+ return self._motorState
+
+ def get_diags(self):
+ """
+ Returns the stepper motor controller diagnostics, as a bitmap.
+
+ @return an integer corresponding to the stepper motor controller diagnostics, as a bitmap
+
+ On failure, throws an exception or returns YStepperMotor.DIAGS_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YStepperMotor.DIAGS_INVALID
+ return self._diags
+
+ def set_stepPos(self, newval):
+ """
+ Changes the current logical motor position, measured in steps.
+ This command does not cause any motor move, as its purpose is only to setup
+ the origin of the position counter. The fractional part of the position,
+ that corresponds to the physical position of the rotor, is not changed.
+ To trigger a motor move, use methods moveTo() or moveRel()
+ instead.
+
+ @param newval : a floating point number corresponding to the current logical motor position, measured in steps
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = "%.2f" % (round(newval * 100.0, 1)/100.0)
+ return self._setAttr("stepPos", rest_val)
+
+ def get_stepPos(self):
+ """
+ Returns the current logical motor position, measured in steps.
+ The value may include a fractional part when micro-stepping is in use.
+
+ @return a floating point number corresponding to the current logical motor position, measured in steps
+
+ On failure, throws an exception or returns YStepperMotor.STEPPOS_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YStepperMotor.STEPPOS_INVALID
+ return self._stepPos
+
+ def get_speed(self):
+ """
+ Returns current motor speed, measured in steps per second.
+ To change speed, use method changeSpeed().
+
+ @return a floating point number corresponding to current motor speed, measured in steps per second
+
+ On failure, throws an exception or returns YStepperMotor.SPEED_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YStepperMotor.SPEED_INVALID
+ return self._speed
+
+ def set_pullinSpeed(self, newval):
+ """
+ Changes the motor speed immediately reachable from stop state, measured in steps per second.
+
+ @param newval : a floating point number corresponding to the motor speed immediately reachable from
+ stop state, measured in steps per second
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(int(round(newval * 65536.0, 1)))
+ return self._setAttr("pullinSpeed", rest_val)
+
+ def get_pullinSpeed(self):
+ """
+ Returns the motor speed immediately reachable from stop state, measured in steps per second.
+
+ @return a floating point number corresponding to the motor speed immediately reachable from stop
+ state, measured in steps per second
+
+ On failure, throws an exception or returns YStepperMotor.PULLINSPEED_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YStepperMotor.PULLINSPEED_INVALID
+ return self._pullinSpeed
+
+ def set_maxAccel(self, newval):
+ """
+ Changes the maximal motor acceleration, measured in steps per second^2.
+
+ @param newval : a floating point number corresponding to the maximal motor acceleration, measured
+ in steps per second^2
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(int(round(newval * 65536.0, 1)))
+ return self._setAttr("maxAccel", rest_val)
+
+ def get_maxAccel(self):
+ """
+ Returns the maximal motor acceleration, measured in steps per second^2.
+
+ @return a floating point number corresponding to the maximal motor acceleration, measured in steps per second^2
+
+ On failure, throws an exception or returns YStepperMotor.MAXACCEL_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YStepperMotor.MAXACCEL_INVALID
+ return self._maxAccel
+
+ def set_maxSpeed(self, newval):
+ """
+ Changes the maximal motor speed, measured in steps per second.
+
+ @param newval : a floating point number corresponding to the maximal motor speed, measured in steps per second
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(int(round(newval * 65536.0, 1)))
+ return self._setAttr("maxSpeed", rest_val)
+
+ def get_maxSpeed(self):
+ """
+ Returns the maximal motor speed, measured in steps per second.
+
+ @return a floating point number corresponding to the maximal motor speed, measured in steps per second
+
+ On failure, throws an exception or returns YStepperMotor.MAXSPEED_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YStepperMotor.MAXSPEED_INVALID
+ return self._maxSpeed
+
+ def get_stepping(self):
+ """
+ Returns the stepping mode used to drive the motor.
+
+ @return a value among YStepperMotor.STEPPING_MICROSTEP16, YStepperMotor.STEPPING_MICROSTEP8,
+ YStepperMotor.STEPPING_MICROSTEP4, YStepperMotor.STEPPING_HALFSTEP and
+ YStepperMotor.STEPPING_FULLSTEP corresponding to the stepping mode used to drive the motor
+
+ On failure, throws an exception or returns YStepperMotor.STEPPING_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YStepperMotor.STEPPING_INVALID
+ return self._stepping
+
+ def set_stepping(self, newval):
+ """
+ Changes the stepping mode used to drive the motor.
+
+ @param newval : a value among YStepperMotor.STEPPING_MICROSTEP16,
+ YStepperMotor.STEPPING_MICROSTEP8, YStepperMotor.STEPPING_MICROSTEP4,
+ YStepperMotor.STEPPING_HALFSTEP and YStepperMotor.STEPPING_FULLSTEP corresponding to the stepping
+ mode used to drive the motor
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("stepping", rest_val)
+
+ def get_overcurrent(self):
+ """
+ Returns the overcurrent alert and emergency stop threshold, measured in mA.
+
+ @return an integer corresponding to the overcurrent alert and emergency stop threshold, measured in mA
+
+ On failure, throws an exception or returns YStepperMotor.OVERCURRENT_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YStepperMotor.OVERCURRENT_INVALID
+ return self._overcurrent
+
+ def set_overcurrent(self, newval):
+ """
+ Changes the overcurrent alert and emergency stop threshold, measured in mA.
+
+ @param newval : an integer corresponding to the overcurrent alert and emergency stop threshold, measured in mA
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("overcurrent", rest_val)
+
+ def get_tCurrStop(self):
+ """
+ Returns the torque regulation current when the motor is stopped, measured in mA.
+
+ @return an integer corresponding to the torque regulation current when the motor is stopped, measured in mA
+
+ On failure, throws an exception or returns YStepperMotor.TCURRSTOP_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YStepperMotor.TCURRSTOP_INVALID
+ return self._tCurrStop
+
+ def set_tCurrStop(self, newval):
+ """
+ Changes the torque regulation current when the motor is stopped, measured in mA.
+
+ @param newval : an integer corresponding to the torque regulation current when the motor is
+ stopped, measured in mA
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("tCurrStop", rest_val)
+
+ def get_tCurrRun(self):
+ """
+ Returns the torque regulation current when the motor is running, measured in mA.
+
+ @return an integer corresponding to the torque regulation current when the motor is running, measured in mA
+
+ On failure, throws an exception or returns YStepperMotor.TCURRRUN_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YStepperMotor.TCURRRUN_INVALID
+ return self._tCurrRun
+
+ def set_tCurrRun(self, newval):
+ """
+ Changes the torque regulation current when the motor is running, measured in mA.
+
+ @param newval : an integer corresponding to the torque regulation current when the motor is
+ running, measured in mA
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("tCurrRun", rest_val)
+
+ def get_alertMode(self):
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YStepperMotor.ALERTMODE_INVALID
+ return self._alertMode
+
+ def set_alertMode(self, newval):
+ rest_val = newval
+ return self._setAttr("alertMode", rest_val)
+
+ def get_auxMode(self):
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YStepperMotor.AUXMODE_INVALID
+ return self._auxMode
+
+ def set_auxMode(self, newval):
+ rest_val = newval
+ return self._setAttr("auxMode", rest_val)
+
+ def get_auxSignal(self):
+ """
+ Returns the current value of the signal generated on the auxiliary output.
+
+ @return an integer corresponding to the current value of the signal generated on the auxiliary output
+
+ On failure, throws an exception or returns YStepperMotor.AUXSIGNAL_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YStepperMotor.AUXSIGNAL_INVALID
+ return self._auxSignal
+
+ def set_auxSignal(self, newval):
+ """
+ Changes the value of the signal generated on the auxiliary output.
+ Acceptable values depend on the auxiliary output signal type configured.
+
+ @param newval : an integer corresponding to the value of the signal generated on the auxiliary output
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("auxSignal", rest_val)
+
+ def get_command(self):
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YStepperMotor.COMMAND_INVALID
+ return self._command
+
+ def set_command(self, newval):
+ rest_val = newval
+ return self._setAttr("command", rest_val)
+
+ @staticmethod
+ def FindStepperMotor(func):
+ """
+ Retrieves a stepper motor for a given identifier.
+ The identifier can be specified using several formats:
+ <ul>
+ <li>FunctionLogicalName</li>
+ <li>ModuleSerialNumber.FunctionIdentifier</li>
+ <li>ModuleSerialNumber.FunctionLogicalName</li>
+ <li>ModuleLogicalName.FunctionIdentifier</li>
+ <li>ModuleLogicalName.FunctionLogicalName</li>
+ </ul>
+
+ This function does not require that the stepper motor is online at the time
+ it is invoked. The returned object is nevertheless valid.
+ Use the method YStepperMotor.isOnline() to test if the stepper motor is
+ indeed online at a given time. In case of ambiguity when looking for
+ a stepper motor by logical name, no error is notified: the first instance
+ found is returned. The search is performed first by hardware name,
+ then by logical name.
+
+ @param func : a string that uniquely characterizes the stepper motor
+
+ @return a YStepperMotor object allowing you to drive the stepper motor.
+ """
+ # obj
+ obj = YFunction._FindFromCache("StepperMotor", func)
+ if obj is None:
+ obj = YStepperMotor(func)
+ YFunction._AddToCache("StepperMotor", func, obj)
+ return obj
+
+ def sendCommand(self, command):
+ # //may throw an exception
+ return self.set_command(command)
+
+ def reset(self):
+ """
+ Reinitialize the controller and clear all alert flags.
+
+ @return YAPI.SUCCESS if the call succeeds.
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.sendCommand("Z")
+
+ def findHomePosition(self, speed):
+ """
+ Starts the motor backward at the specified speed, to search for the motor home position.
+
+ @param speed : desired speed, in steps per second.
+
+ @return YAPI.SUCCESS if the call succeeds.
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.sendCommand("H" + str(int(round(1000*speed))))
+
+ def changeSpeed(self, speed):
+ """
+ Starts the motor at a given speed. The time needed to reach the requested speed
+ will depend on the acceleration parameters configured for the motor.
+
+ @param speed : desired speed, in steps per second. The minimal non-zero speed
+ is 0.001 pulse per second.
+
+ @return YAPI.SUCCESS if the call succeeds.
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.sendCommand("R" + str(int(round(1000*speed))))
+
+ def moveTo(self, absPos):
+ """
+ Starts the motor to reach a given absolute position. The time needed to reach the requested
+ position will depend on the acceleration and max speed parameters configured for
+ the motor.
+
+ @param absPos : absolute position, measured in steps from the origin.
+
+ @return YAPI.SUCCESS if the call succeeds.
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.sendCommand("M" + str(int(round(16*absPos))))
+
+ def moveRel(self, relPos):
+ """
+ Starts the motor to reach a given relative position. The time needed to reach the requested
+ position will depend on the acceleration and max speed parameters configured for
+ the motor.
+
+ @param relPos : relative position, measured in steps from the current position.
+
+ @return YAPI.SUCCESS if the call succeeds.
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.sendCommand("m" + str(int(round(16*relPos))))
+
+ def pause(self, waitMs):
+ """
+ Keep the motor in the same state for the specified amount of time, before processing next command.
+
+ @param waitMs : wait time, specified in milliseconds.
+
+ @return YAPI.SUCCESS if the call succeeds.
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.sendCommand("_" + str(int(waitMs)))
+
+ def emergencyStop(self):
+ """
+ Stops the motor with an emergency alert, without taking any additional precaution.
+
+ @return YAPI.SUCCESS if the call succeeds.
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.sendCommand("!")
+
+ def alertStepOut(self):
+ """
+ Move one step in the direction opposite the direction set when the most recent alert was raised.
+ The move occures even if the system is still in alert mode (end switch depressed). Caution.
+ use this function with great care as it may cause mechanical damages !
+
+ @return YAPI.SUCCESS if the call succeeds.
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.sendCommand(".")
+
+ def abortAndBrake(self):
+ """
+ Stops the motor smoothly as soon as possible, without waiting for ongoing move completion.
+
+ @return YAPI.SUCCESS if the call succeeds.
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.sendCommand("B")
+
+ def abortAndHiZ(self):
+ """
+ Turn the controller into Hi-Z mode immediately, without waiting for ongoing move completion.
+
+ @return YAPI.SUCCESS if the call succeeds.
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.sendCommand("z")
+
+ def nextStepperMotor(self):
+ """
+ Continues the enumeration of stepper motors started using yFirstStepperMotor().
+
+ @return a pointer to a YStepperMotor object, corresponding to
+ a stepper motor currently online, or a None pointer
+ if there are no more stepper motors to enumerate.
+ """
+ hwidRef = YRefParam()
+ if YAPI.YISERR(self._nextFunction(hwidRef)):
+ return None
+ if hwidRef.value == "":
+ return None
+ return YStepperMotor.FindStepperMotor(hwidRef.value)
+
+#--- (end of YStepperMotor implementation)
+
+#--- (StepperMotor functions)
+
+ @staticmethod
+ def FirstStepperMotor():
+ """
+ Starts the enumeration of stepper motors currently accessible.
+ Use the method YStepperMotor.nextStepperMotor() to iterate on
+ next stepper motors.
+
+ @return a pointer to a YStepperMotor object, corresponding to
+ the first stepper motor currently online, or a None pointer
+ if there are none.
+ """
+ devRef = YRefParam()
+ neededsizeRef = YRefParam()
+ serialRef = YRefParam()
+ funcIdRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+ errmsgRef = YRefParam()
+ size = YAPI.C_INTSIZE
+ #noinspection PyTypeChecker,PyCallingNonCallable
+ p = (ctypes.c_int * 1)()
+ err = YAPI.apiGetFunctionsByClass("StepperMotor", 0, p, size, neededsizeRef, errmsgRef)
+
+ if YAPI.YISERR(err) or not neededsizeRef.value:
+ return None
+
+ if YAPI.YISERR(
+ YAPI.yapiGetFunctionInfo(p[0], devRef, serialRef, funcIdRef, funcNameRef, funcValRef, errmsgRef)):
+ return None
+
+ return YStepperMotor.FindStepperMotor(serialRef.value + "." + funcIdRef.value)
+
+#--- (end of StepperMotor functions)
diff --git a/yoctoLib.python.26380/Sources/yocto_temperature.py b/yoctoLib.python.26380/Sources/yocto_temperature.py
new file mode 100644
index 0000000..a8972bc
--- /dev/null
+++ b/yoctoLib.python.26380/Sources/yocto_temperature.py
@@ -0,0 +1,447 @@
+#*********************************************************************
+#*
+#* $Id: yocto_temperature.py 23527 2016-03-18 21:49:19Z mvuilleu $
+#*
+#* Implements yFindTemperature(), the high-level API for Temperature functions
+#*
+#* - - - - - - - - - License information: - - - - - - - - -
+#*
+#* Copyright (C) 2011 and beyond by Yoctopuce Sarl, Switzerland.
+#*
+#* Yoctopuce Sarl (hereafter Licensor) grants to you a perpetual
+#* non-exclusive license to use, modify, copy and integrate this
+#* file into your software for the sole purpose of interfacing
+#* with Yoctopuce products.
+#*
+#* You may reproduce and distribute copies of this file in
+#* source or object form, as long as the sole purpose of this
+#* code is to interface with Yoctopuce products. You must retain
+#* this notice in the distributed source file.
+#*
+#* You should refer to Yoctopuce General Terms and Conditions
+#* for additional information regarding your rights and
+#* obligations.
+#*
+#* THE SOFTWARE AND DOCUMENTATION ARE PROVIDED 'AS IS' WITHOUT
+#* WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
+#* WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS
+#* FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO
+#* EVENT SHALL LICENSOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
+#* INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA,
+#* COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR
+#* SERVICES, ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT
+#* LIMITED TO ANY DEFENSE THEREOF), ANY CLAIMS FOR INDEMNITY OR
+#* CONTRIBUTION, OR OTHER SIMILAR COSTS, WHETHER ASSERTED ON THE
+#* BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE), BREACH OF
+#* WARRANTY, OR OTHERWISE.
+#*
+#*********************************************************************/
+
+
+__docformat__ = 'restructuredtext en'
+from yocto_api import *
+
+
+#--- (YTemperature class start)
+#noinspection PyProtectedMember
+class YTemperature(YSensor):
+ """
+ The Yoctopuce class YTemperature allows you to read and configure Yoctopuce temperature
+ sensors. It inherits from YSensor class the core functions to read measurements,
+ register callback functions, access to the autonomous datalogger.
+ This class adds the ability to configure some specific parameters for some
+ sensors (connection type, temperature mapping table).
+
+ """
+#--- (end of YTemperature class start)
+ #--- (YTemperature return codes)
+ #--- (end of YTemperature return codes)
+ #--- (YTemperature dlldef)
+ #--- (end of YTemperature dlldef)
+ #--- (YTemperature definitions)
+ SIGNALVALUE_INVALID = YAPI.INVALID_DOUBLE
+ SIGNALUNIT_INVALID = YAPI.INVALID_STRING
+ COMMAND_INVALID = YAPI.INVALID_STRING
+ SENSORTYPE_DIGITAL = 0
+ SENSORTYPE_TYPE_K = 1
+ SENSORTYPE_TYPE_E = 2
+ SENSORTYPE_TYPE_J = 3
+ SENSORTYPE_TYPE_N = 4
+ SENSORTYPE_TYPE_R = 5
+ SENSORTYPE_TYPE_S = 6
+ SENSORTYPE_TYPE_T = 7
+ SENSORTYPE_PT100_4WIRES = 8
+ SENSORTYPE_PT100_3WIRES = 9
+ SENSORTYPE_PT100_2WIRES = 10
+ SENSORTYPE_RES_OHM = 11
+ SENSORTYPE_RES_NTC = 12
+ SENSORTYPE_RES_LINEAR = 13
+ SENSORTYPE_INVALID = -1
+ #--- (end of YTemperature definitions)
+
+ def __init__(self, func):
+ super(YTemperature, self).__init__(func)
+ self._className = 'Temperature'
+ #--- (YTemperature attributes)
+ self._callback = None
+ self._sensorType = YTemperature.SENSORTYPE_INVALID
+ self._signalValue = YTemperature.SIGNALVALUE_INVALID
+ self._signalUnit = YTemperature.SIGNALUNIT_INVALID
+ self._command = YTemperature.COMMAND_INVALID
+ #--- (end of YTemperature attributes)
+
+ #--- (YTemperature implementation)
+ def _parseAttr(self, member):
+ if member.name == "sensorType":
+ self._sensorType = member.ivalue
+ return 1
+ if member.name == "signalValue":
+ self._signalValue = round(member.ivalue * 1000.0 / 65536.0) / 1000.0
+ return 1
+ if member.name == "signalUnit":
+ self._signalUnit = member.svalue
+ return 1
+ if member.name == "command":
+ self._command = member.svalue
+ return 1
+ super(YTemperature, self)._parseAttr(member)
+
+ def set_unit(self, newval):
+ """
+ Changes the measuring unit for the measured temperature. That unit is a string.
+ If that strings end with the letter F all temperatures values will returned in
+ Fahrenheit degrees. If that String ends with the letter K all values will be
+ returned in Kelvin degrees. If that string ends with the letter C all values will be
+ returned in Celsius degrees. If the string ends with any other character the
+ change will be ignored. Remember to call the
+ saveToFlash() method of the module if the modification must be kept.
+ WARNING: if a specific calibration is defined for the temperature function, a
+ unit system change will probably break it.
+
+ @param newval : a string corresponding to the measuring unit for the measured temperature
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = newval
+ return self._setAttr("unit", rest_val)
+
+ def get_sensorType(self):
+ """
+ Returns the temperature sensor type.
+
+ @return a value among YTemperature.SENSORTYPE_DIGITAL, YTemperature.SENSORTYPE_TYPE_K,
+ YTemperature.SENSORTYPE_TYPE_E, YTemperature.SENSORTYPE_TYPE_J, YTemperature.SENSORTYPE_TYPE_N,
+ YTemperature.SENSORTYPE_TYPE_R, YTemperature.SENSORTYPE_TYPE_S, YTemperature.SENSORTYPE_TYPE_T,
+ YTemperature.SENSORTYPE_PT100_4WIRES, YTemperature.SENSORTYPE_PT100_3WIRES,
+ YTemperature.SENSORTYPE_PT100_2WIRES, YTemperature.SENSORTYPE_RES_OHM,
+ YTemperature.SENSORTYPE_RES_NTC and YTemperature.SENSORTYPE_RES_LINEAR corresponding to the
+ temperature sensor type
+
+ On failure, throws an exception or returns YTemperature.SENSORTYPE_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YTemperature.SENSORTYPE_INVALID
+ return self._sensorType
+
+ def set_sensorType(self, newval):
+ """
+ Modifies the temperature sensor type. This function is used
+ to define the type of thermocouple (K,E...) used with the device.
+ It has no effect if module is using a digital sensor or a thermistor.
+ Remember to call the saveToFlash() method of the module if the
+ modification must be kept.
+
+ @param newval : a value among YTemperature.SENSORTYPE_DIGITAL, YTemperature.SENSORTYPE_TYPE_K,
+ YTemperature.SENSORTYPE_TYPE_E, YTemperature.SENSORTYPE_TYPE_J, YTemperature.SENSORTYPE_TYPE_N,
+ YTemperature.SENSORTYPE_TYPE_R, YTemperature.SENSORTYPE_TYPE_S, YTemperature.SENSORTYPE_TYPE_T,
+ YTemperature.SENSORTYPE_PT100_4WIRES, YTemperature.SENSORTYPE_PT100_3WIRES,
+ YTemperature.SENSORTYPE_PT100_2WIRES, YTemperature.SENSORTYPE_RES_OHM,
+ YTemperature.SENSORTYPE_RES_NTC and YTemperature.SENSORTYPE_RES_LINEAR
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("sensorType", rest_val)
+
+ def get_signalValue(self):
+ """
+ Returns the current value of the electrical signal measured by the sensor.
+
+ @return a floating point number corresponding to the current value of the electrical signal
+ measured by the sensor
+
+ On failure, throws an exception or returns YTemperature.SIGNALVALUE_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YTemperature.SIGNALVALUE_INVALID
+ return round(self._signalValue * 1000) / 1000
+
+ def get_signalUnit(self):
+ """
+ Returns the measuring unit of the electrical signal used by the sensor.
+
+ @return a string corresponding to the measuring unit of the electrical signal used by the sensor
+
+ On failure, throws an exception or returns YTemperature.SIGNALUNIT_INVALID.
+ """
+ if self._cacheExpiration == datetime.datetime.fromtimestamp(0):
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YTemperature.SIGNALUNIT_INVALID
+ return self._signalUnit
+
+ def get_command(self):
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YTemperature.COMMAND_INVALID
+ return self._command
+
+ def set_command(self, newval):
+ rest_val = newval
+ return self._setAttr("command", rest_val)
+
+ @staticmethod
+ def FindTemperature(func):
+ """
+ Retrieves a temperature sensor for a given identifier.
+ The identifier can be specified using several formats:
+ <ul>
+ <li>FunctionLogicalName</li>
+ <li>ModuleSerialNumber.FunctionIdentifier</li>
+ <li>ModuleSerialNumber.FunctionLogicalName</li>
+ <li>ModuleLogicalName.FunctionIdentifier</li>
+ <li>ModuleLogicalName.FunctionLogicalName</li>
+ </ul>
+
+ This function does not require that the temperature sensor is online at the time
+ it is invoked. The returned object is nevertheless valid.
+ Use the method YTemperature.isOnline() to test if the temperature sensor is
+ indeed online at a given time. In case of ambiguity when looking for
+ a temperature sensor by logical name, no error is notified: the first instance
+ found is returned. The search is performed first by hardware name,
+ then by logical name.
+
+ @param func : a string that uniquely characterizes the temperature sensor
+
+ @return a YTemperature object allowing you to drive the temperature sensor.
+ """
+ # obj
+ obj = YFunction._FindFromCache("Temperature", func)
+ if obj is None:
+ obj = YTemperature(func)
+ YFunction._AddToCache("Temperature", func, obj)
+ return obj
+
+ def set_ntcParameters(self, res25, beta):
+ """
+ Configure NTC thermistor parameters in order to properly compute the temperature from
+ the measured resistance. For increased precision, you can enter a complete mapping
+ table using set_thermistorResponseTable. This function can only be used with a
+ temperature sensor based on thermistors.
+
+ @param res25 : thermistor resistance at 25 degrees Celsius
+ @param beta : Beta value
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ # t0
+ # t1
+ # res100
+ tempValues = []
+ resValues = []
+ t0 = 25.0+275.15
+ t1 = 100.0+275.15
+ res100 = res25 * exp(beta*(1.0/t1 - 1.0/t0))
+ del tempValues[:]
+ del resValues[:]
+ tempValues.append(25.0)
+ resValues.append(res25)
+ tempValues.append(100.0)
+ resValues.append(res100)
+
+
+ return self.set_thermistorResponseTable(tempValues, resValues)
+
+ def set_thermistorResponseTable(self, tempValues, resValues):
+ """
+ Records a thermistor response table, in order to interpolate the temperature from
+ the measured resistance. This function can only be used with a temperature
+ sensor based on thermistors.
+
+ @param tempValues : array of floating point numbers, corresponding to all
+ temperatures (in degrees Celcius) for which the resistance of the
+ thermistor is specified.
+ @param resValues : array of floating point numbers, corresponding to the resistance
+ values (in Ohms) for each of the temperature included in the first
+ argument, index by index.
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ # siz
+ # res
+ # idx
+ # found
+ # prev
+ # curr
+ # currTemp
+ # idxres
+ siz = len(tempValues)
+ if not (siz >= 2):
+ self._throw(YAPI.INVALID_ARGUMENT, "thermistor response table must have at least two points")
+ if not (siz == len(resValues)):
+ self._throw(YAPI.INVALID_ARGUMENT, "table sizes mismatch")
+ # // may throw an exception
+ res = self.set_command("Z")
+ if not (res==YAPI.SUCCESS):
+ self._throw(YAPI.IO_ERROR, "unable to reset thermistor parameters")
+ # // add records in growing resistance value
+ found = 1
+ prev = 0.0
+ while found > 0:
+ found = 0
+ curr = 99999999.0
+ currTemp = -999999.0
+ idx = 0
+ while idx < siz:
+ idxres = resValues[idx]
+ if (idxres > prev) and (idxres < curr):
+ curr = idxres
+ currTemp = tempValues[idx]
+ found = 1
+ idx = idx + 1
+ if found > 0:
+ res = self.set_command("m" + str(int(round(1000*curr))) + ":" + str(int(round(1000*currTemp))))
+ if not (res==YAPI.SUCCESS):
+ self._throw(YAPI.IO_ERROR, "unable to reset thermistor parameters")
+ prev = curr
+ return YAPI.SUCCESS
+
+ def loadThermistorResponseTable(self, tempValues, resValues):
+ """
+ Retrieves the thermistor response table previously configured using the
+ set_thermistorResponseTable function. This function can only be used with a
+ temperature sensor based on thermistors.
+
+ @param tempValues : array of floating point numbers, that is filled by the function
+ with all temperatures (in degrees Celcius) for which the resistance
+ of the thermistor is specified.
+ @param resValues : array of floating point numbers, that is filled by the function
+ with the value (in Ohms) for each of the temperature included in the
+ first argument, index by index.
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ # id
+ # bin_json
+ paramlist = []
+ templist = []
+ # siz
+ # idx
+ # temp
+ # found
+ # prev
+ # curr
+ # currRes
+ del tempValues[:]
+ del resValues[:]
+ # // may throw an exception
+ id = self.get_functionId()
+ id = (id)[11: 11 + len(id) - 11]
+ bin_json = self._download("extra.json?page=" + id)
+ paramlist = self._json_get_array(bin_json)
+ # // first convert all temperatures to float
+ siz = ((len(paramlist)) >> (1))
+ del templist[:]
+ idx = 0
+ while idx < siz:
+ temp = float(paramlist[2*idx+1])/1000.0
+ templist.append(temp)
+ idx = idx + 1
+ # // then add records in growing temperature value
+ del tempValues[:]
+ del resValues[:]
+ found = 1
+ prev = -999999.0
+ while found > 0:
+ found = 0
+ curr = 999999.0
+ currRes = -999999.0
+ idx = 0
+ while idx < siz:
+ temp = templist[idx]
+ if (temp > prev) and (temp < curr):
+ curr = temp
+ currRes = float(paramlist[2*idx])/1000.0
+ found = 1
+ idx = idx + 1
+ if found > 0:
+ tempValues.append(curr)
+ resValues.append(currRes)
+ prev = curr
+
+
+ return YAPI.SUCCESS
+
+ def nextTemperature(self):
+ """
+ Continues the enumeration of temperature sensors started using yFirstTemperature().
+
+ @return a pointer to a YTemperature object, corresponding to
+ a temperature sensor currently online, or a None pointer
+ if there are no more temperature sensors to enumerate.
+ """
+ hwidRef = YRefParam()
+ if YAPI.YISERR(self._nextFunction(hwidRef)):
+ return None
+ if hwidRef.value == "":
+ return None
+ return YTemperature.FindTemperature(hwidRef.value)
+
+#--- (end of YTemperature implementation)
+
+#--- (Temperature functions)
+
+ @staticmethod
+ def FirstTemperature():
+ """
+ Starts the enumeration of temperature sensors currently accessible.
+ Use the method YTemperature.nextTemperature() to iterate on
+ next temperature sensors.
+
+ @return a pointer to a YTemperature object, corresponding to
+ the first temperature sensor currently online, or a None pointer
+ if there are none.
+ """
+ devRef = YRefParam()
+ neededsizeRef = YRefParam()
+ serialRef = YRefParam()
+ funcIdRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+ errmsgRef = YRefParam()
+ size = YAPI.C_INTSIZE
+ #noinspection PyTypeChecker,PyCallingNonCallable
+ p = (ctypes.c_int * 1)()
+ err = YAPI.apiGetFunctionsByClass("Temperature", 0, p, size, neededsizeRef, errmsgRef)
+
+ if YAPI.YISERR(err) or not neededsizeRef.value:
+ return None
+
+ if YAPI.YISERR(
+ YAPI.yapiGetFunctionInfo(p[0], devRef, serialRef, funcIdRef, funcNameRef, funcValRef, errmsgRef)):
+ return None
+
+ return YTemperature.FindTemperature(serialRef.value + "." + funcIdRef.value)
+
+#--- (end of Temperature functions)
diff --git a/yoctoLib.python.26380/Sources/yocto_tilt.py b/yoctoLib.python.26380/Sources/yocto_tilt.py
new file mode 100644
index 0000000..6579be5
--- /dev/null
+++ b/yoctoLib.python.26380/Sources/yocto_tilt.py
@@ -0,0 +1,208 @@
+#*********************************************************************
+#*
+#* $Id: yocto_tilt.py 24934 2016-06-30 22:32:01Z mvuilleu $
+#*
+#* Implements yFindTilt(), the high-level API for Tilt functions
+#*
+#* - - - - - - - - - License information: - - - - - - - - -
+#*
+#* Copyright (C) 2011 and beyond by Yoctopuce Sarl, Switzerland.
+#*
+#* Yoctopuce Sarl (hereafter Licensor) grants to you a perpetual
+#* non-exclusive license to use, modify, copy and integrate this
+#* file into your software for the sole purpose of interfacing
+#* with Yoctopuce products.
+#*
+#* You may reproduce and distribute copies of this file in
+#* source or object form, as long as the sole purpose of this
+#* code is to interface with Yoctopuce products. You must retain
+#* this notice in the distributed source file.
+#*
+#* You should refer to Yoctopuce General Terms and Conditions
+#* for additional information regarding your rights and
+#* obligations.
+#*
+#* THE SOFTWARE AND DOCUMENTATION ARE PROVIDED 'AS IS' WITHOUT
+#* WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
+#* WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS
+#* FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO
+#* EVENT SHALL LICENSOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
+#* INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA,
+#* COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR
+#* SERVICES, ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT
+#* LIMITED TO ANY DEFENSE THEREOF), ANY CLAIMS FOR INDEMNITY OR
+#* CONTRIBUTION, OR OTHER SIMILAR COSTS, WHETHER ASSERTED ON THE
+#* BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE), BREACH OF
+#* WARRANTY, OR OTHERWISE.
+#*
+#*********************************************************************/
+
+
+__docformat__ = 'restructuredtext en'
+from yocto_api import *
+
+
+#--- (YTilt class start)
+#noinspection PyProtectedMember
+class YTilt(YSensor):
+ """
+ The YSensor class is the parent class for all Yoctopuce sensors. It can be
+ used to read the current value and unit of any sensor, read the min/max
+ value, configure autonomous recording frequency and access recorded data.
+ It also provide a function to register a callback invoked each time the
+ observed value changes, or at a predefined interval. Using this class rather
+ than a specific subclass makes it possible to create generic applications
+ that work with any Yoctopuce sensor, even those that do not yet exist.
+ Note: The YAnButton class is the only analog input which does not inherit
+ from YSensor.
+
+ """
+#--- (end of YTilt class start)
+ #--- (YTilt return codes)
+ #--- (end of YTilt return codes)
+ #--- (YTilt dlldef)
+ #--- (end of YTilt dlldef)
+ #--- (YTilt definitions)
+ BANDWIDTH_INVALID = YAPI.INVALID_INT
+ AXIS_X = 0
+ AXIS_Y = 1
+ AXIS_Z = 2
+ AXIS_INVALID = -1
+ #--- (end of YTilt definitions)
+
+ def __init__(self, func):
+ super(YTilt, self).__init__(func)
+ self._className = 'Tilt'
+ #--- (YTilt attributes)
+ self._callback = None
+ self._bandwidth = YTilt.BANDWIDTH_INVALID
+ self._axis = YTilt.AXIS_INVALID
+ #--- (end of YTilt attributes)
+
+ #--- (YTilt implementation)
+ def _parseAttr(self, member):
+ if member.name == "bandwidth":
+ self._bandwidth = member.ivalue
+ return 1
+ if member.name == "axis":
+ self._axis = member.ivalue
+ return 1
+ super(YTilt, self)._parseAttr(member)
+
+ def get_bandwidth(self):
+ """
+ Returns the measure update frequency, measured in Hz (Yocto-3D-V2 only).
+
+ @return an integer corresponding to the measure update frequency, measured in Hz (Yocto-3D-V2 only)
+
+ On failure, throws an exception or returns YTilt.BANDWIDTH_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YTilt.BANDWIDTH_INVALID
+ return self._bandwidth
+
+ def set_bandwidth(self, newval):
+ """
+ Changes the measure update frequency, measured in Hz (Yocto-3D-V2 only). When the
+ frequency is lower, the device performs averaging.
+
+ @param newval : an integer corresponding to the measure update frequency, measured in Hz (Yocto-3D-V2 only)
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("bandwidth", rest_val)
+
+ def get_axis(self):
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YTilt.AXIS_INVALID
+ return self._axis
+
+ @staticmethod
+ def FindTilt(func):
+ """
+ Retrieves a tilt sensor for a given identifier.
+ The identifier can be specified using several formats:
+ <ul>
+ <li>FunctionLogicalName</li>
+ <li>ModuleSerialNumber.FunctionIdentifier</li>
+ <li>ModuleSerialNumber.FunctionLogicalName</li>
+ <li>ModuleLogicalName.FunctionIdentifier</li>
+ <li>ModuleLogicalName.FunctionLogicalName</li>
+ </ul>
+
+ This function does not require that the tilt sensor is online at the time
+ it is invoked. The returned object is nevertheless valid.
+ Use the method YTilt.isOnline() to test if the tilt sensor is
+ indeed online at a given time. In case of ambiguity when looking for
+ a tilt sensor by logical name, no error is notified: the first instance
+ found is returned. The search is performed first by hardware name,
+ then by logical name.
+
+ @param func : a string that uniquely characterizes the tilt sensor
+
+ @return a YTilt object allowing you to drive the tilt sensor.
+ """
+ # obj
+ obj = YFunction._FindFromCache("Tilt", func)
+ if obj is None:
+ obj = YTilt(func)
+ YFunction._AddToCache("Tilt", func, obj)
+ return obj
+
+ def nextTilt(self):
+ """
+ Continues the enumeration of tilt sensors started using yFirstTilt().
+
+ @return a pointer to a YTilt object, corresponding to
+ a tilt sensor currently online, or a None pointer
+ if there are no more tilt sensors to enumerate.
+ """
+ hwidRef = YRefParam()
+ if YAPI.YISERR(self._nextFunction(hwidRef)):
+ return None
+ if hwidRef.value == "":
+ return None
+ return YTilt.FindTilt(hwidRef.value)
+
+#--- (end of YTilt implementation)
+
+#--- (Tilt functions)
+
+ @staticmethod
+ def FirstTilt():
+ """
+ Starts the enumeration of tilt sensors currently accessible.
+ Use the method YTilt.nextTilt() to iterate on
+ next tilt sensors.
+
+ @return a pointer to a YTilt object, corresponding to
+ the first tilt sensor currently online, or a None pointer
+ if there are none.
+ """
+ devRef = YRefParam()
+ neededsizeRef = YRefParam()
+ serialRef = YRefParam()
+ funcIdRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+ errmsgRef = YRefParam()
+ size = YAPI.C_INTSIZE
+ #noinspection PyTypeChecker,PyCallingNonCallable
+ p = (ctypes.c_int * 1)()
+ err = YAPI.apiGetFunctionsByClass("Tilt", 0, p, size, neededsizeRef, errmsgRef)
+
+ if YAPI.YISERR(err) or not neededsizeRef.value:
+ return None
+
+ if YAPI.YISERR(
+ YAPI.yapiGetFunctionInfo(p[0], devRef, serialRef, funcIdRef, funcNameRef, funcValRef, errmsgRef)):
+ return None
+
+ return YTilt.FindTilt(serialRef.value + "." + funcIdRef.value)
+
+#--- (end of Tilt functions)
diff --git a/yoctoLib.python.26380/Sources/yocto_voc.py b/yoctoLib.python.26380/Sources/yocto_voc.py
new file mode 100644
index 0000000..f0f4430
--- /dev/null
+++ b/yoctoLib.python.26380/Sources/yocto_voc.py
@@ -0,0 +1,156 @@
+#*********************************************************************
+#*
+#* $Id: yocto_voc.py 23243 2016-02-23 14:13:12Z seb $
+#*
+#* Implements yFindVoc(), the high-level API for Voc functions
+#*
+#* - - - - - - - - - License information: - - - - - - - - -
+#*
+#* Copyright (C) 2011 and beyond by Yoctopuce Sarl, Switzerland.
+#*
+#* Yoctopuce Sarl (hereafter Licensor) grants to you a perpetual
+#* non-exclusive license to use, modify, copy and integrate this
+#* file into your software for the sole purpose of interfacing
+#* with Yoctopuce products.
+#*
+#* You may reproduce and distribute copies of this file in
+#* source or object form, as long as the sole purpose of this
+#* code is to interface with Yoctopuce products. You must retain
+#* this notice in the distributed source file.
+#*
+#* You should refer to Yoctopuce General Terms and Conditions
+#* for additional information regarding your rights and
+#* obligations.
+#*
+#* THE SOFTWARE AND DOCUMENTATION ARE PROVIDED 'AS IS' WITHOUT
+#* WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
+#* WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS
+#* FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO
+#* EVENT SHALL LICENSOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
+#* INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA,
+#* COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR
+#* SERVICES, ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT
+#* LIMITED TO ANY DEFENSE THEREOF), ANY CLAIMS FOR INDEMNITY OR
+#* CONTRIBUTION, OR OTHER SIMILAR COSTS, WHETHER ASSERTED ON THE
+#* BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE), BREACH OF
+#* WARRANTY, OR OTHERWISE.
+#*
+#*********************************************************************/
+
+
+__docformat__ = 'restructuredtext en'
+from yocto_api import *
+
+
+#--- (YVoc class start)
+#noinspection PyProtectedMember
+class YVoc(YSensor):
+ """
+ The Yoctopuce class YVoc allows you to read and configure Yoctopuce Volatile Organic
+ Compound sensors. It inherits from YSensor class the core functions to read measurements,
+ register callback functions, access to the autonomous datalogger.
+
+ """
+#--- (end of YVoc class start)
+ #--- (YVoc return codes)
+ #--- (end of YVoc return codes)
+ #--- (YVoc dlldef)
+ #--- (end of YVoc dlldef)
+ #--- (YVoc definitions)
+ #--- (end of YVoc definitions)
+
+ def __init__(self, func):
+ super(YVoc, self).__init__(func)
+ self._className = 'Voc'
+ #--- (YVoc attributes)
+ self._callback = None
+ #--- (end of YVoc attributes)
+
+ #--- (YVoc implementation)
+ def _parseAttr(self, member):
+ super(YVoc, self)._parseAttr(member)
+
+ @staticmethod
+ def FindVoc(func):
+ """
+ Retrieves a Volatile Organic Compound sensor for a given identifier.
+ The identifier can be specified using several formats:
+ <ul>
+ <li>FunctionLogicalName</li>
+ <li>ModuleSerialNumber.FunctionIdentifier</li>
+ <li>ModuleSerialNumber.FunctionLogicalName</li>
+ <li>ModuleLogicalName.FunctionIdentifier</li>
+ <li>ModuleLogicalName.FunctionLogicalName</li>
+ </ul>
+
+ This function does not require that the Volatile Organic Compound sensor is online at the time
+ it is invoked. The returned object is nevertheless valid.
+ Use the method YVoc.isOnline() to test if the Volatile Organic Compound sensor is
+ indeed online at a given time. In case of ambiguity when looking for
+ a Volatile Organic Compound sensor by logical name, no error is notified: the first instance
+ found is returned. The search is performed first by hardware name,
+ then by logical name.
+
+ @param func : a string that uniquely characterizes the Volatile Organic Compound sensor
+
+ @return a YVoc object allowing you to drive the Volatile Organic Compound sensor.
+ """
+ # obj
+ obj = YFunction._FindFromCache("Voc", func)
+ if obj is None:
+ obj = YVoc(func)
+ YFunction._AddToCache("Voc", func, obj)
+ return obj
+
+ def nextVoc(self):
+ """
+ Continues the enumeration of Volatile Organic Compound sensors started using yFirstVoc().
+
+ @return a pointer to a YVoc object, corresponding to
+ a Volatile Organic Compound sensor currently online, or a None pointer
+ if there are no more Volatile Organic Compound sensors to enumerate.
+ """
+ hwidRef = YRefParam()
+ if YAPI.YISERR(self._nextFunction(hwidRef)):
+ return None
+ if hwidRef.value == "":
+ return None
+ return YVoc.FindVoc(hwidRef.value)
+
+#--- (end of YVoc implementation)
+
+#--- (Voc functions)
+
+ @staticmethod
+ def FirstVoc():
+ """
+ Starts the enumeration of Volatile Organic Compound sensors currently accessible.
+ Use the method YVoc.nextVoc() to iterate on
+ next Volatile Organic Compound sensors.
+
+ @return a pointer to a YVoc object, corresponding to
+ the first Volatile Organic Compound sensor currently online, or a None pointer
+ if there are none.
+ """
+ devRef = YRefParam()
+ neededsizeRef = YRefParam()
+ serialRef = YRefParam()
+ funcIdRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+ errmsgRef = YRefParam()
+ size = YAPI.C_INTSIZE
+ #noinspection PyTypeChecker,PyCallingNonCallable
+ p = (ctypes.c_int * 1)()
+ err = YAPI.apiGetFunctionsByClass("Voc", 0, p, size, neededsizeRef, errmsgRef)
+
+ if YAPI.YISERR(err) or not neededsizeRef.value:
+ return None
+
+ if YAPI.YISERR(
+ YAPI.yapiGetFunctionInfo(p[0], devRef, serialRef, funcIdRef, funcNameRef, funcValRef, errmsgRef)):
+ return None
+
+ return YVoc.FindVoc(serialRef.value + "." + funcIdRef.value)
+
+#--- (end of Voc functions)
diff --git a/yoctoLib.python.26380/Sources/yocto_voltage.py b/yoctoLib.python.26380/Sources/yocto_voltage.py
new file mode 100644
index 0000000..699c024
--- /dev/null
+++ b/yoctoLib.python.26380/Sources/yocto_voltage.py
@@ -0,0 +1,173 @@
+#*********************************************************************
+#*
+#* $Id: yocto_voltage.py 26183 2016-12-15 00:14:02Z mvuilleu $
+#*
+#* Implements yFindVoltage(), the high-level API for Voltage functions
+#*
+#* - - - - - - - - - License information: - - - - - - - - -
+#*
+#* Copyright (C) 2011 and beyond by Yoctopuce Sarl, Switzerland.
+#*
+#* Yoctopuce Sarl (hereafter Licensor) grants to you a perpetual
+#* non-exclusive license to use, modify, copy and integrate this
+#* file into your software for the sole purpose of interfacing
+#* with Yoctopuce products.
+#*
+#* You may reproduce and distribute copies of this file in
+#* source or object form, as long as the sole purpose of this
+#* code is to interface with Yoctopuce products. You must retain
+#* this notice in the distributed source file.
+#*
+#* You should refer to Yoctopuce General Terms and Conditions
+#* for additional information regarding your rights and
+#* obligations.
+#*
+#* THE SOFTWARE AND DOCUMENTATION ARE PROVIDED 'AS IS' WITHOUT
+#* WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
+#* WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS
+#* FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO
+#* EVENT SHALL LICENSOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
+#* INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA,
+#* COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR
+#* SERVICES, ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT
+#* LIMITED TO ANY DEFENSE THEREOF), ANY CLAIMS FOR INDEMNITY OR
+#* CONTRIBUTION, OR OTHER SIMILAR COSTS, WHETHER ASSERTED ON THE
+#* BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE), BREACH OF
+#* WARRANTY, OR OTHERWISE.
+#*
+#*********************************************************************/
+
+
+__docformat__ = 'restructuredtext en'
+from yocto_api import *
+
+
+#--- (YVoltage class start)
+#noinspection PyProtectedMember
+class YVoltage(YSensor):
+ """
+ The Yoctopuce class YVoltage allows you to read and configure Yoctopuce voltage
+ sensors. It inherits from YSensor class the core functions to read measurements,
+ register callback functions, access to the autonomous datalogger.
+
+ """
+#--- (end of YVoltage class start)
+ #--- (YVoltage return codes)
+ #--- (end of YVoltage return codes)
+ #--- (YVoltage dlldef)
+ #--- (end of YVoltage dlldef)
+ #--- (YVoltage definitions)
+ ENABLED_FALSE = 0
+ ENABLED_TRUE = 1
+ ENABLED_INVALID = -1
+ #--- (end of YVoltage definitions)
+
+ def __init__(self, func):
+ super(YVoltage, self).__init__(func)
+ self._className = 'Voltage'
+ #--- (YVoltage attributes)
+ self._callback = None
+ self._enabled = YVoltage.ENABLED_INVALID
+ #--- (end of YVoltage attributes)
+
+ #--- (YVoltage implementation)
+ def _parseAttr(self, member):
+ if member.name == "enabled":
+ self._enabled = member.ivalue
+ return 1
+ super(YVoltage, self)._parseAttr(member)
+
+ def get_enabled(self):
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YVoltage.ENABLED_INVALID
+ return self._enabled
+
+ def set_enabled(self, newval):
+ rest_val = "1" if newval > 0 else "0"
+ return self._setAttr("enabled", rest_val)
+
+ @staticmethod
+ def FindVoltage(func):
+ """
+ Retrieves a voltage sensor for a given identifier.
+ The identifier can be specified using several formats:
+ <ul>
+ <li>FunctionLogicalName</li>
+ <li>ModuleSerialNumber.FunctionIdentifier</li>
+ <li>ModuleSerialNumber.FunctionLogicalName</li>
+ <li>ModuleLogicalName.FunctionIdentifier</li>
+ <li>ModuleLogicalName.FunctionLogicalName</li>
+ </ul>
+
+ This function does not require that the voltage sensor is online at the time
+ it is invoked. The returned object is nevertheless valid.
+ Use the method YVoltage.isOnline() to test if the voltage sensor is
+ indeed online at a given time. In case of ambiguity when looking for
+ a voltage sensor by logical name, no error is notified: the first instance
+ found is returned. The search is performed first by hardware name,
+ then by logical name.
+
+ @param func : a string that uniquely characterizes the voltage sensor
+
+ @return a YVoltage object allowing you to drive the voltage sensor.
+ """
+ # obj
+ obj = YFunction._FindFromCache("Voltage", func)
+ if obj is None:
+ obj = YVoltage(func)
+ YFunction._AddToCache("Voltage", func, obj)
+ return obj
+
+ def nextVoltage(self):
+ """
+ Continues the enumeration of voltage sensors started using yFirstVoltage().
+
+ @return a pointer to a YVoltage object, corresponding to
+ a voltage sensor currently online, or a None pointer
+ if there are no more voltage sensors to enumerate.
+ """
+ hwidRef = YRefParam()
+ if YAPI.YISERR(self._nextFunction(hwidRef)):
+ return None
+ if hwidRef.value == "":
+ return None
+ return YVoltage.FindVoltage(hwidRef.value)
+
+#--- (end of YVoltage implementation)
+
+#--- (Voltage functions)
+
+ @staticmethod
+ def FirstVoltage():
+ """
+ Starts the enumeration of voltage sensors currently accessible.
+ Use the method YVoltage.nextVoltage() to iterate on
+ next voltage sensors.
+
+ @return a pointer to a YVoltage object, corresponding to
+ the first voltage sensor currently online, or a None pointer
+ if there are none.
+ """
+ devRef = YRefParam()
+ neededsizeRef = YRefParam()
+ serialRef = YRefParam()
+ funcIdRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+ errmsgRef = YRefParam()
+ size = YAPI.C_INTSIZE
+ #noinspection PyTypeChecker,PyCallingNonCallable
+ p = (ctypes.c_int * 1)()
+ err = YAPI.apiGetFunctionsByClass("Voltage", 0, p, size, neededsizeRef, errmsgRef)
+
+ if YAPI.YISERR(err) or not neededsizeRef.value:
+ return None
+
+ if YAPI.YISERR(
+ YAPI.yapiGetFunctionInfo(p[0], devRef, serialRef, funcIdRef, funcNameRef, funcValRef, errmsgRef)):
+ return None
+
+ return YVoltage.FindVoltage(serialRef.value + "." + funcIdRef.value)
+
+#--- (end of Voltage functions)
diff --git a/yoctoLib.python.26380/Sources/yocto_wakeupmonitor.py b/yoctoLib.python.26380/Sources/yocto_wakeupmonitor.py
new file mode 100644
index 0000000..cdc192b
--- /dev/null
+++ b/yoctoLib.python.26380/Sources/yocto_wakeupmonitor.py
@@ -0,0 +1,392 @@
+#*********************************************************************
+#*
+#* $Id: yocto_wakeupmonitor.py 23243 2016-02-23 14:13:12Z seb $
+#*
+#* Implements yFindWakeUpMonitor(), the high-level API for WakeUpMonitor functions
+#*
+#* - - - - - - - - - License information: - - - - - - - - -
+#*
+#* Copyright (C) 2011 and beyond by Yoctopuce Sarl, Switzerland.
+#*
+#* Yoctopuce Sarl (hereafter Licensor) grants to you a perpetual
+#* non-exclusive license to use, modify, copy and integrate this
+#* file into your software for the sole purpose of interfacing
+#* with Yoctopuce products.
+#*
+#* You may reproduce and distribute copies of this file in
+#* source or object form, as long as the sole purpose of this
+#* code is to interface with Yoctopuce products. You must retain
+#* this notice in the distributed source file.
+#*
+#* You should refer to Yoctopuce General Terms and Conditions
+#* for additional information regarding your rights and
+#* obligations.
+#*
+#* THE SOFTWARE AND DOCUMENTATION ARE PROVIDED 'AS IS' WITHOUT
+#* WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
+#* WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS
+#* FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO
+#* EVENT SHALL LICENSOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
+#* INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA,
+#* COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR
+#* SERVICES, ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT
+#* LIMITED TO ANY DEFENSE THEREOF), ANY CLAIMS FOR INDEMNITY OR
+#* CONTRIBUTION, OR OTHER SIMILAR COSTS, WHETHER ASSERTED ON THE
+#* BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE), BREACH OF
+#* WARRANTY, OR OTHERWISE.
+#*
+#*********************************************************************/
+
+
+__docformat__ = 'restructuredtext en'
+from yocto_api import *
+
+
+#--- (YWakeUpMonitor class start)
+#noinspection PyProtectedMember
+class YWakeUpMonitor(YFunction):
+ """
+ The WakeUpMonitor function handles globally all wake-up sources, as well
+ as automated sleep mode.
+
+ """
+#--- (end of YWakeUpMonitor class start)
+ #--- (YWakeUpMonitor return codes)
+ #--- (end of YWakeUpMonitor return codes)
+ #--- (YWakeUpMonitor dlldef)
+ #--- (end of YWakeUpMonitor dlldef)
+ #--- (YWakeUpMonitor definitions)
+ POWERDURATION_INVALID = YAPI.INVALID_INT
+ SLEEPCOUNTDOWN_INVALID = YAPI.INVALID_INT
+ NEXTWAKEUP_INVALID = YAPI.INVALID_LONG
+ RTCTIME_INVALID = YAPI.INVALID_LONG
+ WAKEUPREASON_USBPOWER = 0
+ WAKEUPREASON_EXTPOWER = 1
+ WAKEUPREASON_ENDOFSLEEP = 2
+ WAKEUPREASON_EXTSIG1 = 3
+ WAKEUPREASON_SCHEDULE1 = 4
+ WAKEUPREASON_SCHEDULE2 = 5
+ WAKEUPREASON_INVALID = -1
+ WAKEUPSTATE_SLEEPING = 0
+ WAKEUPSTATE_AWAKE = 1
+ WAKEUPSTATE_INVALID = -1
+ #--- (end of YWakeUpMonitor definitions)
+
+ def __init__(self, func):
+ super(YWakeUpMonitor, self).__init__(func)
+ self._className = 'WakeUpMonitor'
+ #--- (YWakeUpMonitor attributes)
+ self._callback = None
+ self._powerDuration = YWakeUpMonitor.POWERDURATION_INVALID
+ self._sleepCountdown = YWakeUpMonitor.SLEEPCOUNTDOWN_INVALID
+ self._nextWakeUp = YWakeUpMonitor.NEXTWAKEUP_INVALID
+ self._wakeUpReason = YWakeUpMonitor.WAKEUPREASON_INVALID
+ self._wakeUpState = YWakeUpMonitor.WAKEUPSTATE_INVALID
+ self._rtcTime = YWakeUpMonitor.RTCTIME_INVALID
+ self._endOfTime = 2145960000
+ #--- (end of YWakeUpMonitor attributes)
+
+ #--- (YWakeUpMonitor implementation)
+ def _parseAttr(self, member):
+ if member.name == "powerDuration":
+ self._powerDuration = member.ivalue
+ return 1
+ if member.name == "sleepCountdown":
+ self._sleepCountdown = member.ivalue
+ return 1
+ if member.name == "nextWakeUp":
+ self._nextWakeUp = member.ivalue
+ return 1
+ if member.name == "wakeUpReason":
+ self._wakeUpReason = member.ivalue
+ return 1
+ if member.name == "wakeUpState":
+ self._wakeUpState = member.ivalue
+ return 1
+ if member.name == "rtcTime":
+ self._rtcTime = member.ivalue
+ return 1
+ super(YWakeUpMonitor, self)._parseAttr(member)
+
+ def get_powerDuration(self):
+ """
+ Returns the maximal wake up time (in seconds) before automatically going to sleep.
+
+ @return an integer corresponding to the maximal wake up time (in seconds) before automatically going to sleep
+
+ On failure, throws an exception or returns YWakeUpMonitor.POWERDURATION_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YWakeUpMonitor.POWERDURATION_INVALID
+ return self._powerDuration
+
+ def set_powerDuration(self, newval):
+ """
+ Changes the maximal wake up time (seconds) before automatically going to sleep.
+
+ @param newval : an integer corresponding to the maximal wake up time (seconds) before automatically
+ going to sleep
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("powerDuration", rest_val)
+
+ def get_sleepCountdown(self):
+ """
+ Returns the delay before the next sleep period.
+
+ @return an integer corresponding to the delay before the next sleep period
+
+ On failure, throws an exception or returns YWakeUpMonitor.SLEEPCOUNTDOWN_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YWakeUpMonitor.SLEEPCOUNTDOWN_INVALID
+ return self._sleepCountdown
+
+ def set_sleepCountdown(self, newval):
+ """
+ Changes the delay before the next sleep period.
+
+ @param newval : an integer corresponding to the delay before the next sleep period
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("sleepCountdown", rest_val)
+
+ def get_nextWakeUp(self):
+ """
+ Returns the next scheduled wake up date/time (UNIX format).
+
+ @return an integer corresponding to the next scheduled wake up date/time (UNIX format)
+
+ On failure, throws an exception or returns YWakeUpMonitor.NEXTWAKEUP_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YWakeUpMonitor.NEXTWAKEUP_INVALID
+ return self._nextWakeUp
+
+ def set_nextWakeUp(self, newval):
+ """
+ Changes the days of the week when a wake up must take place.
+
+ @param newval : an integer corresponding to the days of the week when a wake up must take place
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("nextWakeUp", rest_val)
+
+ def get_wakeUpReason(self):
+ """
+ Returns the latest wake up reason.
+
+ @return a value among YWakeUpMonitor.WAKEUPREASON_USBPOWER, YWakeUpMonitor.WAKEUPREASON_EXTPOWER,
+ YWakeUpMonitor.WAKEUPREASON_ENDOFSLEEP, YWakeUpMonitor.WAKEUPREASON_EXTSIG1,
+ YWakeUpMonitor.WAKEUPREASON_SCHEDULE1 and YWakeUpMonitor.WAKEUPREASON_SCHEDULE2 corresponding to
+ the latest wake up reason
+
+ On failure, throws an exception or returns YWakeUpMonitor.WAKEUPREASON_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YWakeUpMonitor.WAKEUPREASON_INVALID
+ return self._wakeUpReason
+
+ def get_wakeUpState(self):
+ """
+ Returns the current state of the monitor.
+
+ @return either YWakeUpMonitor.WAKEUPSTATE_SLEEPING or YWakeUpMonitor.WAKEUPSTATE_AWAKE, according
+ to the current state of the monitor
+
+ On failure, throws an exception or returns YWakeUpMonitor.WAKEUPSTATE_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YWakeUpMonitor.WAKEUPSTATE_INVALID
+ return self._wakeUpState
+
+ def set_wakeUpState(self, newval):
+ rest_val = str(newval)
+ return self._setAttr("wakeUpState", rest_val)
+
+ def get_rtcTime(self):
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YWakeUpMonitor.RTCTIME_INVALID
+ return self._rtcTime
+
+ @staticmethod
+ def FindWakeUpMonitor(func):
+ """
+ Retrieves a monitor for a given identifier.
+ The identifier can be specified using several formats:
+ <ul>
+ <li>FunctionLogicalName</li>
+ <li>ModuleSerialNumber.FunctionIdentifier</li>
+ <li>ModuleSerialNumber.FunctionLogicalName</li>
+ <li>ModuleLogicalName.FunctionIdentifier</li>
+ <li>ModuleLogicalName.FunctionLogicalName</li>
+ </ul>
+
+ This function does not require that the monitor is online at the time
+ it is invoked. The returned object is nevertheless valid.
+ Use the method YWakeUpMonitor.isOnline() to test if the monitor is
+ indeed online at a given time. In case of ambiguity when looking for
+ a monitor by logical name, no error is notified: the first instance
+ found is returned. The search is performed first by hardware name,
+ then by logical name.
+
+ @param func : a string that uniquely characterizes the monitor
+
+ @return a YWakeUpMonitor object allowing you to drive the monitor.
+ """
+ # obj
+ obj = YFunction._FindFromCache("WakeUpMonitor", func)
+ if obj is None:
+ obj = YWakeUpMonitor(func)
+ YFunction._AddToCache("WakeUpMonitor", func, obj)
+ return obj
+
+ def wakeUp(self):
+ """
+ Forces a wake up.
+ """
+ # // may throw an exception
+ return self.set_wakeUpState(YWakeUpMonitor.WAKEUPSTATE_AWAKE)
+
+ def sleep(self, secBeforeSleep):
+ """
+ Goes to sleep until the next wake up condition is met, the
+ RTC time must have been set before calling this function.
+
+ @param secBeforeSleep : number of seconds before going into sleep mode,
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ # currTime
+ currTime = self.get_rtcTime()
+ if not (currTime != 0):
+ self._throw(YAPI.RTC_NOT_READY, "RTC time not set")
+ self.set_nextWakeUp(self._endOfTime)
+ self.set_sleepCountdown(secBeforeSleep)
+ return YAPI.SUCCESS
+
+ def sleepFor(self, secUntilWakeUp, secBeforeSleep):
+ """
+ Goes to sleep for a specific duration or until the next wake up condition is met, the
+ RTC time must have been set before calling this function. The count down before sleep
+ can be canceled with resetSleepCountDown.
+
+ @param secUntilWakeUp : number of seconds before next wake up
+ @param secBeforeSleep : number of seconds before going into sleep mode
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ # currTime
+ currTime = self.get_rtcTime()
+ if not (currTime != 0):
+ self._throw(YAPI.RTC_NOT_READY, "RTC time not set")
+ self.set_nextWakeUp(currTime+secUntilWakeUp)
+ self.set_sleepCountdown(secBeforeSleep)
+ return YAPI.SUCCESS
+
+ def sleepUntil(self, wakeUpTime, secBeforeSleep):
+ """
+ Go to sleep until a specific date is reached or until the next wake up condition is met, the
+ RTC time must have been set before calling this function. The count down before sleep
+ can be canceled with resetSleepCountDown.
+
+ @param wakeUpTime : wake-up datetime (UNIX format)
+ @param secBeforeSleep : number of seconds before going into sleep mode
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ # currTime
+ currTime = self.get_rtcTime()
+ if not (currTime != 0):
+ self._throw(YAPI.RTC_NOT_READY, "RTC time not set")
+ self.set_nextWakeUp(wakeUpTime)
+ self.set_sleepCountdown(secBeforeSleep)
+ return YAPI.SUCCESS
+
+ def resetSleepCountDown(self):
+ """
+ Resets the sleep countdown.
+
+ @return YAPI.SUCCESS if the call succeeds.
+ On failure, throws an exception or returns a negative error code.
+ """
+ self.set_sleepCountdown(0)
+ self.set_nextWakeUp(0)
+ return YAPI.SUCCESS
+
+ def nextWakeUpMonitor(self):
+ """
+ Continues the enumeration of monitors started using yFirstWakeUpMonitor().
+
+ @return a pointer to a YWakeUpMonitor object, corresponding to
+ a monitor currently online, or a None pointer
+ if there are no more monitors to enumerate.
+ """
+ hwidRef = YRefParam()
+ if YAPI.YISERR(self._nextFunction(hwidRef)):
+ return None
+ if hwidRef.value == "":
+ return None
+ return YWakeUpMonitor.FindWakeUpMonitor(hwidRef.value)
+
+#--- (end of YWakeUpMonitor implementation)
+
+#--- (WakeUpMonitor functions)
+
+ @staticmethod
+ def FirstWakeUpMonitor():
+ """
+ Starts the enumeration of monitors currently accessible.
+ Use the method YWakeUpMonitor.nextWakeUpMonitor() to iterate on
+ next monitors.
+
+ @return a pointer to a YWakeUpMonitor object, corresponding to
+ the first monitor currently online, or a None pointer
+ if there are none.
+ """
+ devRef = YRefParam()
+ neededsizeRef = YRefParam()
+ serialRef = YRefParam()
+ funcIdRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+ errmsgRef = YRefParam()
+ size = YAPI.C_INTSIZE
+ #noinspection PyTypeChecker,PyCallingNonCallable
+ p = (ctypes.c_int * 1)()
+ err = YAPI.apiGetFunctionsByClass("WakeUpMonitor", 0, p, size, neededsizeRef, errmsgRef)
+
+ if YAPI.YISERR(err) or not neededsizeRef.value:
+ return None
+
+ if YAPI.YISERR(
+ YAPI.yapiGetFunctionInfo(p[0], devRef, serialRef, funcIdRef, funcNameRef, funcValRef, errmsgRef)):
+ return None
+
+ return YWakeUpMonitor.FindWakeUpMonitor(serialRef.value + "." + funcIdRef.value)
+
+#--- (end of WakeUpMonitor functions)
diff --git a/yoctoLib.python.26380/Sources/yocto_wakeupschedule.py b/yoctoLib.python.26380/Sources/yocto_wakeupschedule.py
new file mode 100644
index 0000000..50e6f75
--- /dev/null
+++ b/yoctoLib.python.26380/Sources/yocto_wakeupschedule.py
@@ -0,0 +1,386 @@
+#*********************************************************************
+#*
+#* $Id: yocto_wakeupschedule.py 23243 2016-02-23 14:13:12Z seb $
+#*
+#* Implements yFindWakeUpSchedule(), the high-level API for WakeUpSchedule functions
+#*
+#* - - - - - - - - - License information: - - - - - - - - -
+#*
+#* Copyright (C) 2011 and beyond by Yoctopuce Sarl, Switzerland.
+#*
+#* Yoctopuce Sarl (hereafter Licensor) grants to you a perpetual
+#* non-exclusive license to use, modify, copy and integrate this
+#* file into your software for the sole purpose of interfacing
+#* with Yoctopuce products.
+#*
+#* You may reproduce and distribute copies of this file in
+#* source or object form, as long as the sole purpose of this
+#* code is to interface with Yoctopuce products. You must retain
+#* this notice in the distributed source file.
+#*
+#* You should refer to Yoctopuce General Terms and Conditions
+#* for additional information regarding your rights and
+#* obligations.
+#*
+#* THE SOFTWARE AND DOCUMENTATION ARE PROVIDED 'AS IS' WITHOUT
+#* WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
+#* WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS
+#* FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO
+#* EVENT SHALL LICENSOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
+#* INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA,
+#* COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR
+#* SERVICES, ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT
+#* LIMITED TO ANY DEFENSE THEREOF), ANY CLAIMS FOR INDEMNITY OR
+#* CONTRIBUTION, OR OTHER SIMILAR COSTS, WHETHER ASSERTED ON THE
+#* BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE), BREACH OF
+#* WARRANTY, OR OTHERWISE.
+#*
+#*********************************************************************/
+
+
+__docformat__ = 'restructuredtext en'
+from yocto_api import *
+
+
+#--- (YWakeUpSchedule class start)
+#noinspection PyProtectedMember
+class YWakeUpSchedule(YFunction):
+ """
+ The WakeUpSchedule function implements a wake up condition. The wake up time is
+ specified as a set of months and/or days and/or hours and/or minutes when the
+ wake up should happen.
+
+ """
+#--- (end of YWakeUpSchedule class start)
+ #--- (YWakeUpSchedule return codes)
+ #--- (end of YWakeUpSchedule return codes)
+ #--- (YWakeUpSchedule dlldef)
+ #--- (end of YWakeUpSchedule dlldef)
+ #--- (YWakeUpSchedule definitions)
+ MINUTESA_INVALID = YAPI.INVALID_UINT
+ MINUTESB_INVALID = YAPI.INVALID_UINT
+ HOURS_INVALID = YAPI.INVALID_UINT
+ WEEKDAYS_INVALID = YAPI.INVALID_UINT
+ MONTHDAYS_INVALID = YAPI.INVALID_UINT
+ MONTHS_INVALID = YAPI.INVALID_UINT
+ NEXTOCCURENCE_INVALID = YAPI.INVALID_LONG
+ #--- (end of YWakeUpSchedule definitions)
+
+ def __init__(self, func):
+ super(YWakeUpSchedule, self).__init__(func)
+ self._className = 'WakeUpSchedule'
+ #--- (YWakeUpSchedule attributes)
+ self._callback = None
+ self._minutesA = YWakeUpSchedule.MINUTESA_INVALID
+ self._minutesB = YWakeUpSchedule.MINUTESB_INVALID
+ self._hours = YWakeUpSchedule.HOURS_INVALID
+ self._weekDays = YWakeUpSchedule.WEEKDAYS_INVALID
+ self._monthDays = YWakeUpSchedule.MONTHDAYS_INVALID
+ self._months = YWakeUpSchedule.MONTHS_INVALID
+ self._nextOccurence = YWakeUpSchedule.NEXTOCCURENCE_INVALID
+ #--- (end of YWakeUpSchedule attributes)
+
+ #--- (YWakeUpSchedule implementation)
+ def _parseAttr(self, member):
+ if member.name == "minutesA":
+ self._minutesA = member.ivalue
+ return 1
+ if member.name == "minutesB":
+ self._minutesB = member.ivalue
+ return 1
+ if member.name == "hours":
+ self._hours = member.ivalue
+ return 1
+ if member.name == "weekDays":
+ self._weekDays = member.ivalue
+ return 1
+ if member.name == "monthDays":
+ self._monthDays = member.ivalue
+ return 1
+ if member.name == "months":
+ self._months = member.ivalue
+ return 1
+ if member.name == "nextOccurence":
+ self._nextOccurence = member.ivalue
+ return 1
+ super(YWakeUpSchedule, self)._parseAttr(member)
+
+ def get_minutesA(self):
+ """
+ Returns the minutes in the 00-29 interval of each hour scheduled for wake up.
+
+ @return an integer corresponding to the minutes in the 00-29 interval of each hour scheduled for wake up
+
+ On failure, throws an exception or returns YWakeUpSchedule.MINUTESA_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YWakeUpSchedule.MINUTESA_INVALID
+ return self._minutesA
+
+ def set_minutesA(self, newval):
+ """
+ Changes the minutes in the 00-29 interval when a wake up must take place.
+
+ @param newval : an integer corresponding to the minutes in the 00-29 interval when a wake up must take place
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("minutesA", rest_val)
+
+ def get_minutesB(self):
+ """
+ Returns the minutes in the 30-59 intervalof each hour scheduled for wake up.
+
+ @return an integer corresponding to the minutes in the 30-59 intervalof each hour scheduled for wake up
+
+ On failure, throws an exception or returns YWakeUpSchedule.MINUTESB_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YWakeUpSchedule.MINUTESB_INVALID
+ return self._minutesB
+
+ def set_minutesB(self, newval):
+ """
+ Changes the minutes in the 30-59 interval when a wake up must take place.
+
+ @param newval : an integer corresponding to the minutes in the 30-59 interval when a wake up must take place
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("minutesB", rest_val)
+
+ def get_hours(self):
+ """
+ Returns the hours scheduled for wake up.
+
+ @return an integer corresponding to the hours scheduled for wake up
+
+ On failure, throws an exception or returns YWakeUpSchedule.HOURS_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YWakeUpSchedule.HOURS_INVALID
+ return self._hours
+
+ def set_hours(self, newval):
+ """
+ Changes the hours when a wake up must take place.
+
+ @param newval : an integer corresponding to the hours when a wake up must take place
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("hours", rest_val)
+
+ def get_weekDays(self):
+ """
+ Returns the days of the week scheduled for wake up.
+
+ @return an integer corresponding to the days of the week scheduled for wake up
+
+ On failure, throws an exception or returns YWakeUpSchedule.WEEKDAYS_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YWakeUpSchedule.WEEKDAYS_INVALID
+ return self._weekDays
+
+ def set_weekDays(self, newval):
+ """
+ Changes the days of the week when a wake up must take place.
+
+ @param newval : an integer corresponding to the days of the week when a wake up must take place
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("weekDays", rest_val)
+
+ def get_monthDays(self):
+ """
+ Returns the days of the month scheduled for wake up.
+
+ @return an integer corresponding to the days of the month scheduled for wake up
+
+ On failure, throws an exception or returns YWakeUpSchedule.MONTHDAYS_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YWakeUpSchedule.MONTHDAYS_INVALID
+ return self._monthDays
+
+ def set_monthDays(self, newval):
+ """
+ Changes the days of the month when a wake up must take place.
+
+ @param newval : an integer corresponding to the days of the month when a wake up must take place
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("monthDays", rest_val)
+
+ def get_months(self):
+ """
+ Returns the months scheduled for wake up.
+
+ @return an integer corresponding to the months scheduled for wake up
+
+ On failure, throws an exception or returns YWakeUpSchedule.MONTHS_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YWakeUpSchedule.MONTHS_INVALID
+ return self._months
+
+ def set_months(self, newval):
+ """
+ Changes the months when a wake up must take place.
+
+ @param newval : an integer corresponding to the months when a wake up must take place
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("months", rest_val)
+
+ def get_nextOccurence(self):
+ """
+ Returns the date/time (seconds) of the next wake up occurence.
+
+ @return an integer corresponding to the date/time (seconds) of the next wake up occurence
+
+ On failure, throws an exception or returns YWakeUpSchedule.NEXTOCCURENCE_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YWakeUpSchedule.NEXTOCCURENCE_INVALID
+ return self._nextOccurence
+
+ @staticmethod
+ def FindWakeUpSchedule(func):
+ """
+ Retrieves a wake up schedule for a given identifier.
+ The identifier can be specified using several formats:
+ <ul>
+ <li>FunctionLogicalName</li>
+ <li>ModuleSerialNumber.FunctionIdentifier</li>
+ <li>ModuleSerialNumber.FunctionLogicalName</li>
+ <li>ModuleLogicalName.FunctionIdentifier</li>
+ <li>ModuleLogicalName.FunctionLogicalName</li>
+ </ul>
+
+ This function does not require that the wake up schedule is online at the time
+ it is invoked. The returned object is nevertheless valid.
+ Use the method YWakeUpSchedule.isOnline() to test if the wake up schedule is
+ indeed online at a given time. In case of ambiguity when looking for
+ a wake up schedule by logical name, no error is notified: the first instance
+ found is returned. The search is performed first by hardware name,
+ then by logical name.
+
+ @param func : a string that uniquely characterizes the wake up schedule
+
+ @return a YWakeUpSchedule object allowing you to drive the wake up schedule.
+ """
+ # obj
+ obj = YFunction._FindFromCache("WakeUpSchedule", func)
+ if obj is None:
+ obj = YWakeUpSchedule(func)
+ YFunction._AddToCache("WakeUpSchedule", func, obj)
+ return obj
+
+ def get_minutes(self):
+ """
+ Returns all the minutes of each hour that are scheduled for wake up.
+ """
+ # res
+ # // may throw an exception
+ res = self.get_minutesB()
+ res = ((res) << (30))
+ res = res + self.get_minutesA()
+ return res
+
+ def set_minutes(self, bitmap):
+ """
+ Changes all the minutes where a wake up must take place.
+
+ @param bitmap : Minutes 00-59 of each hour scheduled for wake up.
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ # // may throw an exception
+ self.set_minutesA(((bitmap) & (0x3fffffff)))
+ bitmap = ((bitmap) >> (30))
+ return self.set_minutesB(((bitmap) & (0x3fffffff)))
+
+ def nextWakeUpSchedule(self):
+ """
+ Continues the enumeration of wake up schedules started using yFirstWakeUpSchedule().
+
+ @return a pointer to a YWakeUpSchedule object, corresponding to
+ a wake up schedule currently online, or a None pointer
+ if there are no more wake up schedules to enumerate.
+ """
+ hwidRef = YRefParam()
+ if YAPI.YISERR(self._nextFunction(hwidRef)):
+ return None
+ if hwidRef.value == "":
+ return None
+ return YWakeUpSchedule.FindWakeUpSchedule(hwidRef.value)
+
+#--- (end of YWakeUpSchedule implementation)
+
+#--- (WakeUpSchedule functions)
+
+ @staticmethod
+ def FirstWakeUpSchedule():
+ """
+ Starts the enumeration of wake up schedules currently accessible.
+ Use the method YWakeUpSchedule.nextWakeUpSchedule() to iterate on
+ next wake up schedules.
+
+ @return a pointer to a YWakeUpSchedule object, corresponding to
+ the first wake up schedule currently online, or a None pointer
+ if there are none.
+ """
+ devRef = YRefParam()
+ neededsizeRef = YRefParam()
+ serialRef = YRefParam()
+ funcIdRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+ errmsgRef = YRefParam()
+ size = YAPI.C_INTSIZE
+ #noinspection PyTypeChecker,PyCallingNonCallable
+ p = (ctypes.c_int * 1)()
+ err = YAPI.apiGetFunctionsByClass("WakeUpSchedule", 0, p, size, neededsizeRef, errmsgRef)
+
+ if YAPI.YISERR(err) or not neededsizeRef.value:
+ return None
+
+ if YAPI.YISERR(
+ YAPI.yapiGetFunctionInfo(p[0], devRef, serialRef, funcIdRef, funcNameRef, funcValRef, errmsgRef)):
+ return None
+
+ return YWakeUpSchedule.FindWakeUpSchedule(serialRef.value + "." + funcIdRef.value)
+
+#--- (end of WakeUpSchedule functions)
diff --git a/yoctoLib.python.26380/Sources/yocto_watchdog.py b/yoctoLib.python.26380/Sources/yocto_watchdog.py
new file mode 100644
index 0000000..5d6bbac
--- /dev/null
+++ b/yoctoLib.python.26380/Sources/yocto_watchdog.py
@@ -0,0 +1,579 @@
+#*********************************************************************
+#*
+#* $Id: yocto_watchdog.py 23243 2016-02-23 14:13:12Z seb $
+#*
+#* Implements yFindWatchdog(), the high-level API for Watchdog functions
+#*
+#* - - - - - - - - - License information: - - - - - - - - -
+#*
+#* Copyright (C) 2011 and beyond by Yoctopuce Sarl, Switzerland.
+#*
+#* Yoctopuce Sarl (hereafter Licensor) grants to you a perpetual
+#* non-exclusive license to use, modify, copy and integrate this
+#* file into your software for the sole purpose of interfacing
+#* with Yoctopuce products.
+#*
+#* You may reproduce and distribute copies of this file in
+#* source or object form, as long as the sole purpose of this
+#* code is to interface with Yoctopuce products. You must retain
+#* this notice in the distributed source file.
+#*
+#* You should refer to Yoctopuce General Terms and Conditions
+#* for additional information regarding your rights and
+#* obligations.
+#*
+#* THE SOFTWARE AND DOCUMENTATION ARE PROVIDED 'AS IS' WITHOUT
+#* WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
+#* WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS
+#* FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO
+#* EVENT SHALL LICENSOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
+#* INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA,
+#* COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR
+#* SERVICES, ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT
+#* LIMITED TO ANY DEFENSE THEREOF), ANY CLAIMS FOR INDEMNITY OR
+#* CONTRIBUTION, OR OTHER SIMILAR COSTS, WHETHER ASSERTED ON THE
+#* BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE), BREACH OF
+#* WARRANTY, OR OTHERWISE.
+#*
+#*********************************************************************/
+
+
+__docformat__ = 'restructuredtext en'
+from yocto_api import *
+
+
+#--- (YWatchdog class start)
+#noinspection PyProtectedMember
+class YWatchdog(YFunction):
+ """
+ The watchog function works like a relay and can cause a brief power cut
+ to an appliance after a preset delay to force this appliance to
+ reset. The Watchdog must be called from time to time to reset the
+ timer and prevent the appliance reset.
+ The watchdog can be driven direcly with <i>pulse</i> and <i>delayedpulse</i> methods to switch
+ off an appliance for a given duration.
+
+ """
+#--- (end of YWatchdog class start)
+ #--- (YWatchdog return codes)
+ #--- (end of YWatchdog return codes)
+ #--- (YWatchdog dlldef)
+ #--- (end of YWatchdog dlldef)
+ #--- (YWatchdog definitions)
+ MAXTIMEONSTATEA_INVALID = YAPI.INVALID_LONG
+ MAXTIMEONSTATEB_INVALID = YAPI.INVALID_LONG
+ PULSETIMER_INVALID = YAPI.INVALID_LONG
+ DELAYEDPULSETIMER_INVALID = None
+ COUNTDOWN_INVALID = YAPI.INVALID_LONG
+ TRIGGERDELAY_INVALID = YAPI.INVALID_LONG
+ TRIGGERDURATION_INVALID = YAPI.INVALID_LONG
+ STATE_A = 0
+ STATE_B = 1
+ STATE_INVALID = -1
+ STATEATPOWERON_UNCHANGED = 0
+ STATEATPOWERON_A = 1
+ STATEATPOWERON_B = 2
+ STATEATPOWERON_INVALID = -1
+ OUTPUT_OFF = 0
+ OUTPUT_ON = 1
+ OUTPUT_INVALID = -1
+ AUTOSTART_OFF = 0
+ AUTOSTART_ON = 1
+ AUTOSTART_INVALID = -1
+ RUNNING_OFF = 0
+ RUNNING_ON = 1
+ RUNNING_INVALID = -1
+ #--- (end of YWatchdog definitions)
+
+ def __init__(self, func):
+ super(YWatchdog, self).__init__(func)
+ self._className = 'Watchdog'
+ #--- (YWatchdog attributes)
+ self._callback = None
+ self._state = YWatchdog.STATE_INVALID
+ self._stateAtPowerOn = YWatchdog.STATEATPOWERON_INVALID
+ self._maxTimeOnStateA = YWatchdog.MAXTIMEONSTATEA_INVALID
+ self._maxTimeOnStateB = YWatchdog.MAXTIMEONSTATEB_INVALID
+ self._output = YWatchdog.OUTPUT_INVALID
+ self._pulseTimer = YWatchdog.PULSETIMER_INVALID
+ self._delayedPulseTimer = YWatchdog.DELAYEDPULSETIMER_INVALID
+ self._countdown = YWatchdog.COUNTDOWN_INVALID
+ self._autoStart = YWatchdog.AUTOSTART_INVALID
+ self._running = YWatchdog.RUNNING_INVALID
+ self._triggerDelay = YWatchdog.TRIGGERDELAY_INVALID
+ self._triggerDuration = YWatchdog.TRIGGERDURATION_INVALID
+ #--- (end of YWatchdog attributes)
+
+ #--- (YWatchdog implementation)
+ def _parseAttr(self, member):
+ if member.name == "state":
+ self._state = member.ivalue
+ return 1
+ if member.name == "stateAtPowerOn":
+ self._stateAtPowerOn = member.ivalue
+ return 1
+ if member.name == "maxTimeOnStateA":
+ self._maxTimeOnStateA = member.ivalue
+ return 1
+ if member.name == "maxTimeOnStateB":
+ self._maxTimeOnStateB = member.ivalue
+ return 1
+ if member.name == "output":
+ self._output = member.ivalue
+ return 1
+ if member.name == "pulseTimer":
+ self._pulseTimer = member.ivalue
+ return 1
+ if member.name == "delayedPulseTimer":
+ if member.recordtype != YAPI.TJSONRECORDTYPE.JSON_STRUCT:
+ self._delayedPulseTimer = -1
+ self._delayedPulseTimer = {"moving": None, "target": None, "ms": None}
+ for submemb in member.members:
+ if submemb.name == "moving":
+ self._delayedPulseTimer["moving"] = submemb.ivalue
+ elif submemb.name == "target":
+ self._delayedPulseTimer["target"] = submemb.ivalue
+ elif submemb.name == "ms":
+ self._delayedPulseTimer["ms"] = submemb.ivalue
+ return 1
+ if member.name == "countdown":
+ self._countdown = member.ivalue
+ return 1
+ if member.name == "autoStart":
+ self._autoStart = member.ivalue
+ return 1
+ if member.name == "running":
+ self._running = member.ivalue
+ return 1
+ if member.name == "triggerDelay":
+ self._triggerDelay = member.ivalue
+ return 1
+ if member.name == "triggerDuration":
+ self._triggerDuration = member.ivalue
+ return 1
+ super(YWatchdog, self)._parseAttr(member)
+
+ def get_state(self):
+ """
+ Returns the state of the watchdog (A for the idle position, B for the active position).
+
+ @return either YWatchdog.STATE_A or YWatchdog.STATE_B, according to the state of the watchdog (A
+ for the idle position, B for the active position)
+
+ On failure, throws an exception or returns YWatchdog.STATE_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YWatchdog.STATE_INVALID
+ return self._state
+
+ def set_state(self, newval):
+ """
+ Changes the state of the watchdog (A for the idle position, B for the active position).
+
+ @param newval : either YWatchdog.STATE_A or YWatchdog.STATE_B, according to the state of the
+ watchdog (A for the idle position, B for the active position)
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = "1" if newval > 0 else "0"
+ return self._setAttr("state", rest_val)
+
+ def get_stateAtPowerOn(self):
+ """
+ Returns the state of the watchdog at device startup (A for the idle position, B for the active
+ position, UNCHANGED for no change).
+
+ @return a value among YWatchdog.STATEATPOWERON_UNCHANGED, YWatchdog.STATEATPOWERON_A and
+ YWatchdog.STATEATPOWERON_B corresponding to the state of the watchdog at device startup (A for the
+ idle position, B for the active position, UNCHANGED for no change)
+
+ On failure, throws an exception or returns YWatchdog.STATEATPOWERON_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YWatchdog.STATEATPOWERON_INVALID
+ return self._stateAtPowerOn
+
+ def set_stateAtPowerOn(self, newval):
+ """
+ Preset the state of the watchdog at device startup (A for the idle position,
+ B for the active position, UNCHANGED for no modification). Remember to call the matching module saveToFlash()
+ method, otherwise this call will have no effect.
+
+ @param newval : a value among YWatchdog.STATEATPOWERON_UNCHANGED, YWatchdog.STATEATPOWERON_A and
+ YWatchdog.STATEATPOWERON_B
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("stateAtPowerOn", rest_val)
+
+ def get_maxTimeOnStateA(self):
+ """
+ Retourne the maximum time (ms) allowed for $THEFUNCTIONS$ to stay in state A before automatically
+ switching back in to B state. Zero means no maximum time.
+
+ @return an integer
+
+ On failure, throws an exception or returns YWatchdog.MAXTIMEONSTATEA_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YWatchdog.MAXTIMEONSTATEA_INVALID
+ return self._maxTimeOnStateA
+
+ def set_maxTimeOnStateA(self, newval):
+ """
+ Sets the maximum time (ms) allowed for $THEFUNCTIONS$ to stay in state A before automatically
+ switching back in to B state. Use zero for no maximum time.
+
+ @param newval : an integer
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("maxTimeOnStateA", rest_val)
+
+ def get_maxTimeOnStateB(self):
+ """
+ Retourne the maximum time (ms) allowed for $THEFUNCTIONS$ to stay in state B before automatically
+ switching back in to A state. Zero means no maximum time.
+
+ @return an integer
+
+ On failure, throws an exception or returns YWatchdog.MAXTIMEONSTATEB_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YWatchdog.MAXTIMEONSTATEB_INVALID
+ return self._maxTimeOnStateB
+
+ def set_maxTimeOnStateB(self, newval):
+ """
+ Sets the maximum time (ms) allowed for $THEFUNCTIONS$ to stay in state B before automatically
+ switching back in to A state. Use zero for no maximum time.
+
+ @param newval : an integer
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("maxTimeOnStateB", rest_val)
+
+ def get_output(self):
+ """
+ Returns the output state of the watchdog, when used as a simple switch (single throw).
+
+ @return either YWatchdog.OUTPUT_OFF or YWatchdog.OUTPUT_ON, according to the output state of the
+ watchdog, when used as a simple switch (single throw)
+
+ On failure, throws an exception or returns YWatchdog.OUTPUT_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YWatchdog.OUTPUT_INVALID
+ return self._output
+
+ def set_output(self, newval):
+ """
+ Changes the output state of the watchdog, when used as a simple switch (single throw).
+
+ @param newval : either YWatchdog.OUTPUT_OFF or YWatchdog.OUTPUT_ON, according to the output state
+ of the watchdog, when used as a simple switch (single throw)
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = "1" if newval > 0 else "0"
+ return self._setAttr("output", rest_val)
+
+ def get_pulseTimer(self):
+ """
+ Returns the number of milliseconds remaining before the watchdog is returned to idle position
+ (state A), during a measured pulse generation. When there is no ongoing pulse, returns zero.
+
+ @return an integer corresponding to the number of milliseconds remaining before the watchdog is
+ returned to idle position
+ (state A), during a measured pulse generation
+
+ On failure, throws an exception or returns YWatchdog.PULSETIMER_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YWatchdog.PULSETIMER_INVALID
+ return self._pulseTimer
+
+ def set_pulseTimer(self, newval):
+ rest_val = str(newval)
+ return self._setAttr("pulseTimer", rest_val)
+
+ def pulse(self, ms_duration):
+ """
+ Sets the relay to output B (active) for a specified duration, then brings it
+ automatically back to output A (idle state).
+
+ @param ms_duration : pulse duration, in millisecondes
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(ms_duration)
+ return self._setAttr("pulseTimer", rest_val)
+
+ def get_delayedPulseTimer(self):
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YWatchdog.DELAYEDPULSETIMER_INVALID
+ return self._delayedPulseTimer
+
+ def set_delayedPulseTimer(self, newval):
+ rest_val = str(newval.target) + ":" + str(newval.ms)
+ return self._setAttr("delayedPulseTimer", rest_val)
+
+ def delayedPulse(self, ms_delay, ms_duration):
+ """
+ Schedules a pulse.
+
+ @param ms_delay : waiting time before the pulse, in millisecondes
+ @param ms_duration : pulse duration, in millisecondes
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(ms_delay) + ":" + str(ms_duration)
+ return self._setAttr("delayedPulseTimer", rest_val)
+
+ def get_countdown(self):
+ """
+ Returns the number of milliseconds remaining before a pulse (delayedPulse() call)
+ When there is no scheduled pulse, returns zero.
+
+ @return an integer corresponding to the number of milliseconds remaining before a pulse (delayedPulse() call)
+ When there is no scheduled pulse, returns zero
+
+ On failure, throws an exception or returns YWatchdog.COUNTDOWN_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YWatchdog.COUNTDOWN_INVALID
+ return self._countdown
+
+ def get_autoStart(self):
+ """
+ Returns the watchdog runing state at module power on.
+
+ @return either YWatchdog.AUTOSTART_OFF or YWatchdog.AUTOSTART_ON, according to the watchdog runing
+ state at module power on
+
+ On failure, throws an exception or returns YWatchdog.AUTOSTART_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YWatchdog.AUTOSTART_INVALID
+ return self._autoStart
+
+ def set_autoStart(self, newval):
+ """
+ Changes the watchdog runningsttae at module power on. Remember to call the
+ saveToFlash() method and then to reboot the module to apply this setting.
+
+ @param newval : either YWatchdog.AUTOSTART_OFF or YWatchdog.AUTOSTART_ON, according to the watchdog
+ runningsttae at module power on
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = "1" if newval > 0 else "0"
+ return self._setAttr("autoStart", rest_val)
+
+ def get_running(self):
+ """
+ Returns the watchdog running state.
+
+ @return either YWatchdog.RUNNING_OFF or YWatchdog.RUNNING_ON, according to the watchdog running state
+
+ On failure, throws an exception or returns YWatchdog.RUNNING_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YWatchdog.RUNNING_INVALID
+ return self._running
+
+ def set_running(self, newval):
+ """
+ Changes the running state of the watchdog.
+
+ @param newval : either YWatchdog.RUNNING_OFF or YWatchdog.RUNNING_ON, according to the running
+ state of the watchdog
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = "1" if newval > 0 else "0"
+ return self._setAttr("running", rest_val)
+
+ def resetWatchdog(self):
+ """
+ Resets the watchdog. When the watchdog is running, this function
+ must be called on a regular basis to prevent the watchog to
+ trigger
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = "1"
+ return self._setAttr("running", rest_val)
+
+ def get_triggerDelay(self):
+ """
+ Returns the waiting duration before a reset is automatically triggered by the watchdog, in milliseconds.
+
+ @return an integer corresponding to the waiting duration before a reset is automatically triggered
+ by the watchdog, in milliseconds
+
+ On failure, throws an exception or returns YWatchdog.TRIGGERDELAY_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YWatchdog.TRIGGERDELAY_INVALID
+ return self._triggerDelay
+
+ def set_triggerDelay(self, newval):
+ """
+ Changes the waiting delay before a reset is triggered by the watchdog, in milliseconds.
+
+ @param newval : an integer corresponding to the waiting delay before a reset is triggered by the
+ watchdog, in milliseconds
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("triggerDelay", rest_val)
+
+ def get_triggerDuration(self):
+ """
+ Returns the duration of resets caused by the watchdog, in milliseconds.
+
+ @return an integer corresponding to the duration of resets caused by the watchdog, in milliseconds
+
+ On failure, throws an exception or returns YWatchdog.TRIGGERDURATION_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YWatchdog.TRIGGERDURATION_INVALID
+ return self._triggerDuration
+
+ def set_triggerDuration(self, newval):
+ """
+ Changes the duration of resets caused by the watchdog, in milliseconds.
+
+ @param newval : an integer corresponding to the duration of resets caused by the watchdog, in milliseconds
+
+ @return YAPI.SUCCESS if the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ rest_val = str(newval)
+ return self._setAttr("triggerDuration", rest_val)
+
+ @staticmethod
+ def FindWatchdog(func):
+ """
+ Retrieves a watchdog for a given identifier.
+ The identifier can be specified using several formats:
+ <ul>
+ <li>FunctionLogicalName</li>
+ <li>ModuleSerialNumber.FunctionIdentifier</li>
+ <li>ModuleSerialNumber.FunctionLogicalName</li>
+ <li>ModuleLogicalName.FunctionIdentifier</li>
+ <li>ModuleLogicalName.FunctionLogicalName</li>
+ </ul>
+
+ This function does not require that the watchdog is online at the time
+ it is invoked. The returned object is nevertheless valid.
+ Use the method YWatchdog.isOnline() to test if the watchdog is
+ indeed online at a given time. In case of ambiguity when looking for
+ a watchdog by logical name, no error is notified: the first instance
+ found is returned. The search is performed first by hardware name,
+ then by logical name.
+
+ @param func : a string that uniquely characterizes the watchdog
+
+ @return a YWatchdog object allowing you to drive the watchdog.
+ """
+ # obj
+ obj = YFunction._FindFromCache("Watchdog", func)
+ if obj is None:
+ obj = YWatchdog(func)
+ YFunction._AddToCache("Watchdog", func, obj)
+ return obj
+
+ def nextWatchdog(self):
+ """
+ Continues the enumeration of watchdog started using yFirstWatchdog().
+
+ @return a pointer to a YWatchdog object, corresponding to
+ a watchdog currently online, or a None pointer
+ if there are no more watchdog to enumerate.
+ """
+ hwidRef = YRefParam()
+ if YAPI.YISERR(self._nextFunction(hwidRef)):
+ return None
+ if hwidRef.value == "":
+ return None
+ return YWatchdog.FindWatchdog(hwidRef.value)
+
+#--- (end of YWatchdog implementation)
+
+#--- (Watchdog functions)
+
+ @staticmethod
+ def FirstWatchdog():
+ """
+ Starts the enumeration of watchdog currently accessible.
+ Use the method YWatchdog.nextWatchdog() to iterate on
+ next watchdog.
+
+ @return a pointer to a YWatchdog object, corresponding to
+ the first watchdog currently online, or a None pointer
+ if there are none.
+ """
+ devRef = YRefParam()
+ neededsizeRef = YRefParam()
+ serialRef = YRefParam()
+ funcIdRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+ errmsgRef = YRefParam()
+ size = YAPI.C_INTSIZE
+ #noinspection PyTypeChecker,PyCallingNonCallable
+ p = (ctypes.c_int * 1)()
+ err = YAPI.apiGetFunctionsByClass("Watchdog", 0, p, size, neededsizeRef, errmsgRef)
+
+ if YAPI.YISERR(err) or not neededsizeRef.value:
+ return None
+
+ if YAPI.YISERR(
+ YAPI.yapiGetFunctionInfo(p[0], devRef, serialRef, funcIdRef, funcNameRef, funcValRef, errmsgRef)):
+ return None
+
+ return YWatchdog.FindWatchdog(serialRef.value + "." + funcIdRef.value)
+
+#--- (end of Watchdog functions)
diff --git a/yoctoLib.python.26380/Sources/yocto_wireless.py b/yoctoLib.python.26380/Sources/yocto_wireless.py
new file mode 100644
index 0000000..5b2db1a
--- /dev/null
+++ b/yoctoLib.python.26380/Sources/yocto_wireless.py
@@ -0,0 +1,393 @@
+#*********************************************************************
+#*
+#* $Id: yocto_wireless.py 19610 2015-03-05 10:39:47Z seb $
+#*
+#* Implements yFindWireless(), the high-level API for Wireless functions
+#*
+#* - - - - - - - - - License information: - - - - - - - - -
+#*
+#* Copyright (C) 2011 and beyond by Yoctopuce Sarl, Switzerland.
+#*
+#* Yoctopuce Sarl (hereafter Licensor) grants to you a perpetual
+#* non-exclusive license to use, modify, copy and integrate this
+#* file into your software for the sole purpose of interfacing
+#* with Yoctopuce products.
+#*
+#* You may reproduce and distribute copies of this file in
+#* source or object form, as long as the sole purpose of this
+#* code is to interface with Yoctopuce products. You must retain
+#* this notice in the distributed source file.
+#*
+#* You should refer to Yoctopuce General Terms and Conditions
+#* for additional information regarding your rights and
+#* obligations.
+#*
+#* THE SOFTWARE AND DOCUMENTATION ARE PROVIDED 'AS IS' WITHOUT
+#* WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
+#* WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS
+#* FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO
+#* EVENT SHALL LICENSOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
+#* INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA,
+#* COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR
+#* SERVICES, ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT
+#* LIMITED TO ANY DEFENSE THEREOF), ANY CLAIMS FOR INDEMNITY OR
+#* CONTRIBUTION, OR OTHER SIMILAR COSTS, WHETHER ASSERTED ON THE
+#* BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE), BREACH OF
+#* WARRANTY, OR OTHERWISE.
+#*
+#*********************************************************************/
+
+
+__docformat__ = 'restructuredtext en'
+from yocto_api import *
+
+
+#--- (generated code: YWlanRecord class start)
+#noinspection PyProtectedMember
+class YWlanRecord(object):
+#--- (end of generated code: YWlanRecord class start)
+ #--- (generated code: YWlanRecord definitions)
+ #--- (end of generated code: YWlanRecord definitions)
+
+ def __init__(self, json):
+ #--- (generated code: YWlanRecord attributes)
+ self._ssid = ''
+ self._channel = 0
+ self._sec = ''
+ self._rssi = 0
+ #--- (end of generated code: YWlanRecord attributes)
+ self._channel = -1
+ self._rssi = -1
+ j = YAPI.TJsonParser(json, False)
+ node = j.GetRootNode()
+ for member in node.members:
+ if member.name == "ssid":
+ self._ssid = member.svalue
+ if member.name == "sec":
+ self._sec = member.svalue
+ elif member.name == "channel":
+ self._channel = member.ivalue
+ elif member.name == "rssi":
+ self._rssi = member.ivalue
+
+ #--- (generated code: YWlanRecord implementation)
+ def get_ssid(self):
+ return self._ssid
+
+ def get_channel(self):
+ return self._channel
+
+ def get_security(self):
+ return self._sec
+
+ def get_linkQuality(self):
+ return self._rssi
+
+#--- (end of generated code: YWlanRecord implementation)
+
+#--- (WlanRecord generated code: functions)
+#--- (end of WlanRecord generated code: functions)
+
+
+#--- (generated code: YWireless class start)
+#noinspection PyProtectedMember
+class YWireless(YFunction):
+ """
+ YWireless functions provides control over wireless network parameters
+ and status for devices that are wireless-enabled.
+
+ """
+#--- (end of generated code: YWireless class start)
+ #--- (generated code: YWireless definitions)
+ LINKQUALITY_INVALID = YAPI.INVALID_UINT
+ SSID_INVALID = YAPI.INVALID_STRING
+ CHANNEL_INVALID = YAPI.INVALID_UINT
+ MESSAGE_INVALID = YAPI.INVALID_STRING
+ WLANCONFIG_INVALID = YAPI.INVALID_STRING
+ SECURITY_UNKNOWN = 0
+ SECURITY_OPEN = 1
+ SECURITY_WEP = 2
+ SECURITY_WPA = 3
+ SECURITY_WPA2 = 4
+ SECURITY_INVALID = -1
+ #--- (end of generated code: YWireless definitions)
+
+ def __init__(self, func):
+ super(YWireless, self).__init__(func)
+ self._className = "Wireless"
+ #--- (generated code: YWireless attributes)
+ self._callback = None
+ self._linkQuality = YWireless.LINKQUALITY_INVALID
+ self._ssid = YWireless.SSID_INVALID
+ self._channel = YWireless.CHANNEL_INVALID
+ self._security = YWireless.SECURITY_INVALID
+ self._message = YWireless.MESSAGE_INVALID
+ self._wlanConfig = YWireless.WLANCONFIG_INVALID
+ #--- (end of generated code: YWireless attributes)
+
+ #--- (generated code: YWireless implementation)
+ def _parseAttr(self, member):
+ if member.name == "linkQuality":
+ self._linkQuality = member.ivalue
+ return 1
+ if member.name == "ssid":
+ self._ssid = member.svalue
+ return 1
+ if member.name == "channel":
+ self._channel = member.ivalue
+ return 1
+ if member.name == "security":
+ self._security = member.ivalue
+ return 1
+ if member.name == "message":
+ self._message = member.svalue
+ return 1
+ if member.name == "wlanConfig":
+ self._wlanConfig = member.svalue
+ return 1
+ super(YWireless, self)._parseAttr(member)
+
+ def get_linkQuality(self):
+ """
+ Returns the link quality, expressed in percent.
+
+ @return an integer corresponding to the link quality, expressed in percent
+
+ On failure, throws an exception or returns YWireless.LINKQUALITY_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YWireless.LINKQUALITY_INVALID
+ return self._linkQuality
+
+ def get_ssid(self):
+ """
+ Returns the wireless network name (SSID).
+
+ @return a string corresponding to the wireless network name (SSID)
+
+ On failure, throws an exception or returns YWireless.SSID_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YWireless.SSID_INVALID
+ return self._ssid
+
+ def get_channel(self):
+ """
+ Returns the 802.11 channel currently used, or 0 when the selected network has not been found.
+
+ @return an integer corresponding to the 802.11 channel currently used, or 0 when the selected
+ network has not been found
+
+ On failure, throws an exception or returns YWireless.CHANNEL_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YWireless.CHANNEL_INVALID
+ return self._channel
+
+ def get_security(self):
+ """
+ Returns the security algorithm used by the selected wireless network.
+
+ @return a value among YWireless.SECURITY_UNKNOWN, YWireless.SECURITY_OPEN, YWireless.SECURITY_WEP,
+ YWireless.SECURITY_WPA and YWireless.SECURITY_WPA2 corresponding to the security algorithm used by
+ the selected wireless network
+
+ On failure, throws an exception or returns YWireless.SECURITY_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YWireless.SECURITY_INVALID
+ return self._security
+
+ def get_message(self):
+ """
+ Returns the latest status message from the wireless interface.
+
+ @return a string corresponding to the latest status message from the wireless interface
+
+ On failure, throws an exception or returns YWireless.MESSAGE_INVALID.
+ """
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YWireless.MESSAGE_INVALID
+ return self._message
+
+ def get_wlanConfig(self):
+ if self._cacheExpiration <= YAPI.GetTickCount():
+ if self.load(YAPI.DefaultCacheValidity) != YAPI.SUCCESS:
+ return YWireless.WLANCONFIG_INVALID
+ return self._wlanConfig
+
+ def set_wlanConfig(self, newval):
+ rest_val = newval
+ return self._setAttr("wlanConfig", rest_val)
+
+ @staticmethod
+ def FindWireless(func):
+ """
+ Retrieves a wireless lan interface for a given identifier.
+ The identifier can be specified using several formats:
+ <ul>
+ <li>FunctionLogicalName</li>
+ <li>ModuleSerialNumber.FunctionIdentifier</li>
+ <li>ModuleSerialNumber.FunctionLogicalName</li>
+ <li>ModuleLogicalName.FunctionIdentifier</li>
+ <li>ModuleLogicalName.FunctionLogicalName</li>
+ </ul>
+
+ This function does not require that the wireless lan interface is online at the time
+ it is invoked. The returned object is nevertheless valid.
+ Use the method YWireless.isOnline() to test if the wireless lan interface is
+ indeed online at a given time. In case of ambiguity when looking for
+ a wireless lan interface by logical name, no error is notified: the first instance
+ found is returned. The search is performed first by hardware name,
+ then by logical name.
+
+ @param func : a string that uniquely characterizes the wireless lan interface
+
+ @return a YWireless object allowing you to drive the wireless lan interface.
+ """
+ # obj
+ obj = YFunction._FindFromCache("Wireless", func)
+ if obj is None:
+ obj = YWireless(func)
+ YFunction._AddToCache("Wireless", func, obj)
+ return obj
+
+ def joinNetwork(self, ssid, securityKey):
+ """
+ Changes the configuration of the wireless lan interface to connect to an existing
+ access point (infrastructure mode).
+ Remember to call the saveToFlash() method and then to reboot the module to apply this setting.
+
+ @param ssid : the name of the network to connect to
+ @param securityKey : the network key, as a character string
+
+ @return YAPI.SUCCESS when the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.set_wlanConfig("INFRA:" + ssid + "\\" + securityKey)
+
+ def adhocNetwork(self, ssid, securityKey):
+ """
+ Changes the configuration of the wireless lan interface to create an ad-hoc
+ wireless network, without using an access point. On the YoctoHub-Wireless-g,
+ it is best to use softAPNetworkInstead(), which emulates an access point
+ (Soft AP) which is more efficient and more widely supported than ad-hoc networks.
+
+ When a security key is specified for an ad-hoc network, the network is protected
+ by a WEP40 key (5 characters or 10 hexadecimal digits) or WEP128 key (13 characters
+ or 26 hexadecimal digits). It is recommended to use a well-randomized WEP128 key
+ using 26 hexadecimal digits to maximize security.
+ Remember to call the saveToFlash() method and then to reboot the module
+ to apply this setting.
+
+ @param ssid : the name of the network to connect to
+ @param securityKey : the network key, as a character string
+
+ @return YAPI.SUCCESS when the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.set_wlanConfig("ADHOC:" + ssid + "\\" + securityKey)
+
+ def softAPNetwork(self, ssid, securityKey):
+ """
+ Changes the configuration of the wireless lan interface to create a new wireless
+ network by emulating a WiFi access point (Soft AP). This function can only be
+ used with the YoctoHub-Wireless-g.
+
+ When a security key is specified for a SoftAP network, the network is protected
+ by a WEP40 key (5 characters or 10 hexadecimal digits) or WEP128 key (13 characters
+ or 26 hexadecimal digits). It is recommended to use a well-randomized WEP128 key
+ using 26 hexadecimal digits to maximize security.
+ Remember to call the saveToFlash() method and then to reboot the module to apply this setting.
+
+ @param ssid : the name of the network to connect to
+ @param securityKey : the network key, as a character string
+
+ @return YAPI.SUCCESS when the call succeeds.
+
+ On failure, throws an exception or returns a negative error code.
+ """
+ return self.set_wlanConfig("SOFTAP:" + ssid + "\\" + securityKey)
+
+ def get_detectedWlans(self):
+ """
+ Returns a list of YWlanRecord objects that describe detected Wireless networks.
+ This list is not updated when the module is already connected to an acces point (infrastructure mode).
+ To force an update of this list, adhocNetwork() must be called to disconnect
+ the module from the current network. The returned list must be unallocated by the caller.
+
+ @return a list of YWlanRecord objects, containing the SSID, channel,
+ link quality and the type of security of the wireless network.
+
+ On failure, throws an exception or returns an empty list.
+ """
+ # json
+ wlanlist = []
+ res = []
+ # // may throw an exception
+ json = self._download("wlan.json?by=name")
+ wlanlist = self._json_get_array(json)
+ del res[:]
+ for y in wlanlist:
+ res.append(YWlanRecord(y))
+ return res
+
+ def nextWireless(self):
+ """
+ Continues the enumeration of wireless lan interfaces started using yFirstWireless().
+
+ @return a pointer to a YWireless object, corresponding to
+ a wireless lan interface currently online, or a None pointer
+ if there are no more wireless lan interfaces to enumerate.
+ """
+ hwidRef = YRefParam()
+ if YAPI.YISERR(self._nextFunction(hwidRef)):
+ return None
+ if hwidRef.value == "":
+ return None
+ return YWireless.FindWireless(hwidRef.value)
+
+#--- (end of generated code: YWireless implementation)
+
+#--- (generated code: Wireless functions)
+
+ @staticmethod
+ def FirstWireless():
+ """
+ Starts the enumeration of wireless lan interfaces currently accessible.
+ Use the method YWireless.nextWireless() to iterate on
+ next wireless lan interfaces.
+
+ @return a pointer to a YWireless object, corresponding to
+ the first wireless lan interface currently online, or a None pointer
+ if there are none.
+ """
+ devRef = YRefParam()
+ neededsizeRef = YRefParam()
+ serialRef = YRefParam()
+ funcIdRef = YRefParam()
+ funcNameRef = YRefParam()
+ funcValRef = YRefParam()
+ errmsgRef = YRefParam()
+ size = YAPI.C_INTSIZE
+ #noinspection PyTypeChecker,PyCallingNonCallable
+ p = (ctypes.c_int * 1)()
+ err = YAPI.apiGetFunctionsByClass("Wireless", 0, p, size, neededsizeRef, errmsgRef)
+
+ if YAPI.YISERR(err) or not neededsizeRef.value:
+ return None
+
+ if YAPI.YISERR(
+ YAPI.yapiGetFunctionInfo(p[0], devRef, serialRef, funcIdRef, funcNameRef, funcValRef, errmsgRef)):
+ return None
+
+ return YWireless.FindWireless(serialRef.value + "." + funcIdRef.value)
+
+#--- (end of generated code: Wireless functions)

Event Timeline