@@ -1 +1,2 @@ | |||||
include README.rst | include README.rst | ||||
include docs/_build/html/* |
@@ -1,4 +1,4 @@ | |||||
# Sphinx build info version 1 | # Sphinx build info version 1 | ||||
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. | # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. | ||||
config: 0c889eb1b3df3f34fd7989e7aaada34f | |||||
config: bfabfef1f3b1f181eaa7d666d13e81ec | |||||
tags: a205e9ed8462ae86fdd2f73488852ba9 | tags: a205e9ed8462ae86fdd2f73488852ba9 |
@@ -6,7 +6,7 @@ | |||||
<head> | <head> | ||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> | <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> | ||||
<title>Overview: module code — pyad2usb documentation</title> | |||||
<title>Overview: module code — pyad2 documentation</title> | |||||
<link rel="stylesheet" href="../_static/default.css" type="text/css" /> | <link rel="stylesheet" href="../_static/default.css" type="text/css" /> | ||||
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> | <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> | ||||
@@ -23,7 +23,7 @@ | |||||
<script type="text/javascript" src="../_static/jquery.js"></script> | <script type="text/javascript" src="../_static/jquery.js"></script> | ||||
<script type="text/javascript" src="../_static/underscore.js"></script> | <script type="text/javascript" src="../_static/underscore.js"></script> | ||||
<script type="text/javascript" src="../_static/doctools.js"></script> | <script type="text/javascript" src="../_static/doctools.js"></script> | ||||
<link rel="top" title="pyad2usb documentation" href="../index.html" /> | |||||
<link rel="top" title="pyad2 documentation" href="../index.html" /> | |||||
</head> | </head> | ||||
<body> | <body> | ||||
<div class="related"> | <div class="related"> | ||||
@@ -35,7 +35,7 @@ | |||||
<li class="right" > | <li class="right" > | ||||
<a href="../py-modindex.html" title="Python Module Index" | <a href="../py-modindex.html" title="Python Module Index" | ||||
>modules</a> |</li> | >modules</a> |</li> | ||||
<li><a href="../index.html">pyad2usb documentation</a> »</li> | |||||
<li><a href="../index.html">pyad2 documentation</a> »</li> | |||||
</ul> | </ul> | ||||
</div> | </div> | ||||
@@ -45,12 +45,12 @@ | |||||
<div class="body"> | <div class="body"> | ||||
<h1>All modules for which code is available</h1> | <h1>All modules for which code is available</h1> | ||||
<ul><li><a href="pyad2usb/ad2usb.html">pyad2usb.ad2usb</a></li> | |||||
<li><a href="pyad2usb/devices.html">pyad2usb.devices</a></li> | |||||
<li><a href="pyad2usb/event/event.html">pyad2usb.event.event</a></li> | |||||
<li><a href="pyad2usb/messages.html">pyad2usb.messages</a></li> | |||||
<li><a href="pyad2usb/util.html">pyad2usb.util</a></li> | |||||
<li><a href="pyad2usb/zonetracking.html">pyad2usb.zonetracking</a></li> | |||||
<ul><li><a href="pyad2/ad2.html">pyad2.ad2</a></li> | |||||
<li><a href="pyad2/devices.html">pyad2.devices</a></li> | |||||
<li><a href="pyad2/event/event.html">pyad2.event.event</a></li> | |||||
<li><a href="pyad2/messages.html">pyad2.messages</a></li> | |||||
<li><a href="pyad2/util.html">pyad2.util</a></li> | |||||
<li><a href="pyad2/zonetracking.html">pyad2.zonetracking</a></li> | |||||
</ul> | </ul> | ||||
</div> | </div> | ||||
@@ -84,7 +84,7 @@ | |||||
<li class="right" > | <li class="right" > | ||||
<a href="../py-modindex.html" title="Python Module Index" | <a href="../py-modindex.html" title="Python Module Index" | ||||
>modules</a> |</li> | >modules</a> |</li> | ||||
<li><a href="../index.html">pyad2usb documentation</a> »</li> | |||||
<li><a href="../index.html">pyad2 documentation</a> »</li> | |||||
</ul> | </ul> | ||||
</div> | </div> | ||||
<div class="footer"> | <div class="footer"> | ||||
@@ -0,0 +1,669 @@ | |||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" | |||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> | |||||
<html xmlns="http://www.w3.org/1999/xhtml"> | |||||
<head> | |||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> | |||||
<title>pyad2.ad2 — pyad2 documentation</title> | |||||
<link rel="stylesheet" href="../../_static/default.css" type="text/css" /> | |||||
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> | |||||
<script type="text/javascript"> | |||||
var DOCUMENTATION_OPTIONS = { | |||||
URL_ROOT: '../../', | |||||
VERSION: '', | |||||
COLLAPSE_INDEX: false, | |||||
FILE_SUFFIX: '.html', | |||||
HAS_SOURCE: true | |||||
}; | |||||
</script> | |||||
<script type="text/javascript" src="../../_static/jquery.js"></script> | |||||
<script type="text/javascript" src="../../_static/underscore.js"></script> | |||||
<script type="text/javascript" src="../../_static/doctools.js"></script> | |||||
<link rel="top" title="pyad2 documentation" href="../../index.html" /> | |||||
<link rel="up" title="Module code" href="../index.html" /> | |||||
</head> | |||||
<body> | |||||
<div class="related"> | |||||
<h3>Navigation</h3> | |||||
<ul> | |||||
<li class="right" style="margin-right: 10px"> | |||||
<a href="../../genindex.html" title="General Index" | |||||
accesskey="I">index</a></li> | |||||
<li class="right" > | |||||
<a href="../../py-modindex.html" title="Python Module Index" | |||||
>modules</a> |</li> | |||||
<li><a href="../../index.html">pyad2 documentation</a> »</li> | |||||
<li><a href="../index.html" accesskey="U">Module code</a> »</li> | |||||
</ul> | |||||
</div> | |||||
<div class="document"> | |||||
<div class="documentwrapper"> | |||||
<div class="bodywrapper"> | |||||
<div class="body"> | |||||
<h1>Source code for pyad2.ad2</h1><div class="highlight"><pre> | |||||
<span class="sd">"""</span> | |||||
<span class="sd">Provides the full AD2USB class and factory.</span> | |||||
<span class="sd">.. moduleauthor:: Scott Petersen <scott@nutech.com></span> | |||||
<span class="sd">"""</span> | |||||
<span class="kn">import</span> <span class="nn">time</span> | |||||
<span class="kn">import</span> <span class="nn">threading</span> | |||||
<span class="kn">import</span> <span class="nn">re</span> | |||||
<span class="kn">from</span> <span class="nn">.event</span> <span class="kn">import</span> <span class="n">event</span> | |||||
<span class="kn">from</span> <span class="nn">.</span> <span class="kn">import</span> <span class="n">devices</span> | |||||
<span class="kn">from</span> <span class="nn">.</span> <span class="kn">import</span> <span class="n">util</span> | |||||
<span class="kn">from</span> <span class="nn">.</span> <span class="kn">import</span> <span class="n">messages</span> | |||||
<span class="kn">from</span> <span class="nn">.</span> <span class="kn">import</span> <span class="n">zonetracking</span> | |||||
<div class="viewcode-block" id="Overseer"><a class="viewcode-back" href="../../pyad2.html#pyad2.ad2.Overseer">[docs]</a><span class="k">class</span> <span class="nc">Overseer</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Factory for creation of AD2USB devices as well as provides attach/detach events."</span> | |||||
<span class="sd"> """</span> | |||||
<span class="c"># Factory events</span> | |||||
<span class="n">on_attached</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">Event</span><span class="p">(</span><span class="s">'Called when an AD2USB device has been detected.'</span><span class="p">)</span> | |||||
<span class="n">on_detached</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">Event</span><span class="p">(</span><span class="s">'Called when an AD2USB device has been removed.'</span><span class="p">)</span> | |||||
<span class="n">__devices</span> <span class="o">=</span> <span class="p">[]</span> | |||||
<span class="nd">@classmethod</span> | |||||
<div class="viewcode-block" id="Overseer.find_all"><a class="viewcode-back" href="../../pyad2.html#pyad2.ad2.Overseer.find_all">[docs]</a> <span class="k">def</span> <span class="nf">find_all</span><span class="p">(</span><span class="n">cls</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Returns all AD2USB devices located on the system.</span> | |||||
<span class="sd"> :returns: list of devices found</span> | |||||
<span class="sd"> :raises: util.CommError</span> | |||||
<span class="sd"> """</span> | |||||
<span class="n">cls</span><span class="o">.</span><span class="n">__devices</span> <span class="o">=</span> <span class="n">devices</span><span class="o">.</span><span class="n">USBDevice</span><span class="o">.</span><span class="n">find_all</span><span class="p">()</span> | |||||
<span class="k">return</span> <span class="n">cls</span><span class="o">.</span><span class="n">__devices</span> | |||||
</div> | |||||
<span class="nd">@classmethod</span> | |||||
<div class="viewcode-block" id="Overseer.devices"><a class="viewcode-back" href="../../pyad2.html#pyad2.ad2.Overseer.devices">[docs]</a> <span class="k">def</span> <span class="nf">devices</span><span class="p">(</span><span class="n">cls</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Returns a cached list of AD2USB devices located on the system.</span> | |||||
<span class="sd"> :returns: cached list of devices found.</span> | |||||
<span class="sd"> """</span> | |||||
<span class="k">return</span> <span class="n">cls</span><span class="o">.</span><span class="n">__devices</span> | |||||
</div> | |||||
<span class="nd">@classmethod</span> | |||||
<div class="viewcode-block" id="Overseer.create"><a class="viewcode-back" href="../../pyad2.html#pyad2.ad2.Overseer.create">[docs]</a> <span class="k">def</span> <span class="nf">create</span><span class="p">(</span><span class="n">cls</span><span class="p">,</span> <span class="n">device</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Factory method that returns the requested AD2USB device, or the first device.</span> | |||||
<span class="sd"> :param device: Tuple describing the USB device to open, as returned by find_all().</span> | |||||
<span class="sd"> :type device: tuple</span> | |||||
<span class="sd"> :returns: AD2USB object utilizing the specified device.</span> | |||||
<span class="sd"> :raises: util.NoDeviceError</span> | |||||
<span class="sd"> """</span> | |||||
<span class="n">cls</span><span class="o">.</span><span class="n">find_all</span><span class="p">()</span> | |||||
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">cls</span><span class="o">.</span><span class="n">__devices</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> | |||||
<span class="k">raise</span> <span class="n">util</span><span class="o">.</span><span class="n">NoDeviceError</span><span class="p">(</span><span class="s">'No AD2USB devices present.'</span><span class="p">)</span> | |||||
<span class="k">if</span> <span class="n">device</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> | |||||
<span class="n">device</span> <span class="o">=</span> <span class="n">cls</span><span class="o">.</span><span class="n">__devices</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> | |||||
<span class="n">vendor</span><span class="p">,</span> <span class="n">product</span><span class="p">,</span> <span class="n">sernum</span><span class="p">,</span> <span class="n">ifcount</span><span class="p">,</span> <span class="n">description</span> <span class="o">=</span> <span class="n">device</span> | |||||
<span class="n">device</span> <span class="o">=</span> <span class="n">devices</span><span class="o">.</span><span class="n">USBDevice</span><span class="p">((</span><span class="n">sernum</span><span class="p">,</span> <span class="n">ifcount</span> <span class="o">-</span> <span class="mi">1</span><span class="p">))</span> | |||||
<span class="k">return</span> <span class="n">AD2</span><span class="p">(</span><span class="n">device</span><span class="p">)</span> | |||||
</div> | |||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">attached_event</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">detached_event</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Constructor</span> | |||||
<span class="sd"> :param attached_event: Event to trigger when a device is attached.</span> | |||||
<span class="sd"> :type attached_event: function</span> | |||||
<span class="sd"> :param detached_event: Event to trigger when a device is detached.</span> | |||||
<span class="sd"> :type detached_event: function</span> | |||||
<span class="sd"> """</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_detect_thread</span> <span class="o">=</span> <span class="n">Overseer</span><span class="o">.</span><span class="n">DetectThread</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> | |||||
<span class="k">if</span> <span class="n">attached_event</span><span class="p">:</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">on_attached</span> <span class="o">+=</span> <span class="n">attached_event</span> | |||||
<span class="k">if</span> <span class="n">detached_event</span><span class="p">:</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">on_detached</span> <span class="o">+=</span> <span class="n">detached_event</span> | |||||
<span class="n">Overseer</span><span class="o">.</span><span class="n">find_all</span><span class="p">()</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">start</span><span class="p">()</span> | |||||
<div class="viewcode-block" id="Overseer.close"><a class="viewcode-back" href="../../pyad2.html#pyad2.ad2.Overseer.close">[docs]</a> <span class="k">def</span> <span class="nf">close</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Clean up and shut down.</span> | |||||
<span class="sd"> """</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">stop</span><span class="p">()</span> | |||||
</div> | |||||
<div class="viewcode-block" id="Overseer.start"><a class="viewcode-back" href="../../pyad2.html#pyad2.ad2.Overseer.start">[docs]</a> <span class="k">def</span> <span class="nf">start</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Starts the detection thread, if not already running.</span> | |||||
<span class="sd"> """</span> | |||||
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_detect_thread</span><span class="o">.</span><span class="n">is_alive</span><span class="p">():</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_detect_thread</span><span class="o">.</span><span class="n">start</span><span class="p">()</span> | |||||
</div> | |||||
<div class="viewcode-block" id="Overseer.stop"><a class="viewcode-back" href="../../pyad2.html#pyad2.ad2.Overseer.stop">[docs]</a> <span class="k">def</span> <span class="nf">stop</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Stops the detection thread.</span> | |||||
<span class="sd"> """</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_detect_thread</span><span class="o">.</span><span class="n">stop</span><span class="p">()</span> | |||||
</div> | |||||
<div class="viewcode-block" id="Overseer.get_device"><a class="viewcode-back" href="../../pyad2.html#pyad2.ad2.Overseer.get_device">[docs]</a> <span class="k">def</span> <span class="nf">get_device</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">device</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Factory method that returns the requested AD2USB device, or the first device.</span> | |||||
<span class="sd"> :param device: Tuple describing the USB device to open, as returned by find_all().</span> | |||||
<span class="sd"> :type device: tuple</span> | |||||
<span class="sd"> """</span> | |||||
<span class="k">return</span> <span class="n">Overseer</span><span class="o">.</span><span class="n">create</span><span class="p">(</span><span class="n">device</span><span class="p">)</span> | |||||
</div> | |||||
<div class="viewcode-block" id="Overseer.DetectThread"><a class="viewcode-back" href="../../pyad2.html#pyad2.ad2.Overseer.DetectThread">[docs]</a> <span class="k">class</span> <span class="nc">DetectThread</span><span class="p">(</span><span class="n">threading</span><span class="o">.</span><span class="n">Thread</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Thread that handles detection of added/removed devices.</span> | |||||
<span class="sd"> """</span> | |||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">overseer</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Constructor</span> | |||||
<span class="sd"> :param overseer: Overseer object to use with the thread.</span> | |||||
<span class="sd"> :type overseer: Overseer</span> | |||||
<span class="sd"> """</span> | |||||
<span class="n">threading</span><span class="o">.</span><span class="n">Thread</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_overseer</span> <span class="o">=</span> <span class="n">overseer</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_running</span> <span class="o">=</span> <span class="bp">False</span> | |||||
<div class="viewcode-block" id="Overseer.DetectThread.stop"><a class="viewcode-back" href="../../pyad2.html#pyad2.ad2.Overseer.DetectThread.stop">[docs]</a> <span class="k">def</span> <span class="nf">stop</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Stops the thread.</span> | |||||
<span class="sd"> """</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_running</span> <span class="o">=</span> <span class="bp">False</span> | |||||
</div> | |||||
<div class="viewcode-block" id="Overseer.DetectThread.run"><a class="viewcode-back" href="../../pyad2.html#pyad2.ad2.Overseer.DetectThread.run">[docs]</a> <span class="k">def</span> <span class="nf">run</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> The actual detection process.</span> | |||||
<span class="sd"> """</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_running</span> <span class="o">=</span> <span class="bp">True</span> | |||||
<span class="n">last_devices</span> <span class="o">=</span> <span class="nb">set</span><span class="p">()</span> | |||||
<span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_running</span><span class="p">:</span> | |||||
<span class="k">try</span><span class="p">:</span> | |||||
<span class="n">Overseer</span><span class="o">.</span><span class="n">find_all</span><span class="p">()</span> | |||||
<span class="n">current_devices</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="n">Overseer</span><span class="o">.</span><span class="n">devices</span><span class="p">())</span> | |||||
<span class="n">new_devices</span> <span class="o">=</span> <span class="p">[</span><span class="n">d</span> <span class="k">for</span> <span class="n">d</span> <span class="ow">in</span> <span class="n">current_devices</span> <span class="k">if</span> <span class="n">d</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">last_devices</span><span class="p">]</span> | |||||
<span class="n">removed_devices</span> <span class="o">=</span> <span class="p">[</span><span class="n">d</span> <span class="k">for</span> <span class="n">d</span> <span class="ow">in</span> <span class="n">last_devices</span> <span class="k">if</span> <span class="n">d</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">current_devices</span><span class="p">]</span> | |||||
<span class="n">last_devices</span> <span class="o">=</span> <span class="n">current_devices</span> | |||||
<span class="k">for</span> <span class="n">d</span> <span class="ow">in</span> <span class="n">new_devices</span><span class="p">:</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_overseer</span><span class="o">.</span><span class="n">on_attached</span><span class="p">(</span><span class="n">d</span><span class="p">)</span> | |||||
<span class="k">for</span> <span class="n">d</span> <span class="ow">in</span> <span class="n">removed_devices</span><span class="p">:</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_overseer</span><span class="o">.</span><span class="n">on_detached</span><span class="p">(</span><span class="n">d</span><span class="p">)</span> | |||||
<span class="k">except</span> <span class="n">util</span><span class="o">.</span><span class="n">CommError</span><span class="p">,</span> <span class="n">err</span><span class="p">:</span> | |||||
<span class="k">pass</span> | |||||
<span class="n">time</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mf">0.25</span><span class="p">)</span> | |||||
</div></div></div> | |||||
<div class="viewcode-block" id="AD2"><a class="viewcode-back" href="../../pyad2.html#pyad2.ad2.AD2">[docs]</a><span class="k">class</span> <span class="nc">AD2</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> High-level wrapper around AD2USB/AD2SERIAL devices.</span> | |||||
<span class="sd"> """</span> | |||||
<span class="c"># High-level Events</span> | |||||
<span class="n">on_arm</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">Event</span><span class="p">(</span><span class="s">'Called when the panel is armed.'</span><span class="p">)</span> | |||||
<span class="n">on_disarm</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">Event</span><span class="p">(</span><span class="s">'Called when the panel is disarmed.'</span><span class="p">)</span> | |||||
<span class="n">on_power_changed</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">Event</span><span class="p">(</span><span class="s">'Called when panel power switches between AC and DC.'</span><span class="p">)</span> | |||||
<span class="n">on_alarm</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">Event</span><span class="p">(</span><span class="s">'Called when the alarm is triggered.'</span><span class="p">)</span> | |||||
<span class="n">on_fire</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">Event</span><span class="p">(</span><span class="s">'Called when a fire is detected.'</span><span class="p">)</span> | |||||
<span class="n">on_bypass</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">Event</span><span class="p">(</span><span class="s">'Called when a zone is bypassed.'</span><span class="p">)</span> | |||||
<span class="n">on_boot</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">Event</span><span class="p">(</span><span class="s">'Called when the device finishes bootings.'</span><span class="p">)</span> | |||||
<span class="n">on_config_received</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">Event</span><span class="p">(</span><span class="s">'Called when the device receives its configuration.'</span><span class="p">)</span> | |||||
<span class="n">on_zone_fault</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">Event</span><span class="p">(</span><span class="s">'Called when the device detects a zone fault.'</span><span class="p">)</span> | |||||
<span class="n">on_zone_restore</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">Event</span><span class="p">(</span><span class="s">'Called when the device detects that a fault is restored.'</span><span class="p">)</span> | |||||
<span class="n">on_low_battery</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">Event</span><span class="p">(</span><span class="s">'Called when the device detects a low battery.'</span><span class="p">)</span> | |||||
<span class="n">on_panic</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">Event</span><span class="p">(</span><span class="s">'Called when the device detects a panic.'</span><span class="p">)</span> | |||||
<span class="n">on_relay_changed</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">Event</span><span class="p">(</span><span class="s">'Called when a relay is opened or closed on an expander board.'</span><span class="p">)</span> | |||||
<span class="c"># Mid-level Events</span> | |||||
<span class="n">on_message</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">Event</span><span class="p">(</span><span class="s">'Called when a message has been received from the device.'</span><span class="p">)</span> | |||||
<span class="n">on_lrr_message</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">Event</span><span class="p">(</span><span class="s">'Called when an LRR message is received.'</span><span class="p">)</span> | |||||
<span class="n">on_rfx_message</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">Event</span><span class="p">(</span><span class="s">'Called when an RFX message is received.'</span><span class="p">)</span> | |||||
<span class="c"># Low-level Events</span> | |||||
<span class="n">on_open</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">Event</span><span class="p">(</span><span class="s">'Called when the device has been opened.'</span><span class="p">)</span> | |||||
<span class="n">on_close</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">Event</span><span class="p">(</span><span class="s">'Called when the device has been closed.'</span><span class="p">)</span> | |||||
<span class="n">on_read</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">Event</span><span class="p">(</span><span class="s">'Called when a line has been read from the device.'</span><span class="p">)</span> | |||||
<span class="n">on_write</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">Event</span><span class="p">(</span><span class="s">'Called when data has been written to the device.'</span><span class="p">)</span> | |||||
<span class="c"># Constants</span> | |||||
<span class="n">F1</span> <span class="o">=</span> <span class="nb">unichr</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> <span class="o">+</span> <span class="nb">unichr</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> <span class="o">+</span> <span class="nb">unichr</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> | |||||
<span class="sd">"""Represents panel function key #1"""</span> | |||||
<span class="n">F2</span> <span class="o">=</span> <span class="nb">unichr</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span> <span class="o">+</span> <span class="nb">unichr</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span> <span class="o">+</span> <span class="nb">unichr</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span> | |||||
<span class="sd">"""Represents panel function key #2"""</span> | |||||
<span class="n">F3</span> <span class="o">=</span> <span class="nb">unichr</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span> <span class="o">+</span> <span class="nb">unichr</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span> <span class="o">+</span> <span class="nb">unichr</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span> | |||||
<span class="sd">"""Represents panel function key #3"""</span> | |||||
<span class="n">F4</span> <span class="o">=</span> <span class="nb">unichr</span><span class="p">(</span><span class="mi">4</span><span class="p">)</span> <span class="o">+</span> <span class="nb">unichr</span><span class="p">(</span><span class="mi">4</span><span class="p">)</span> <span class="o">+</span> <span class="nb">unichr</span><span class="p">(</span><span class="mi">4</span><span class="p">)</span> | |||||
<span class="sd">"""Represents panel function key #4"""</span> | |||||
<span class="n">BATTERY_TIMEOUT</span> <span class="o">=</span> <span class="mi">30</span> | |||||
<span class="sd">"""Timeout before the battery status reverts."""</span> | |||||
<span class="n">FIRE_TIMEOUT</span> <span class="o">=</span> <span class="mi">30</span> | |||||
<span class="sd">"""Timeout before the fire status reverts."""</span> | |||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">device</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Constructor</span> | |||||
<span class="sd"> :param device: The low-level device used for this AD2USB interface.</span> | |||||
<span class="sd"> :type device: devices.Device</span> | |||||
<span class="sd"> """</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_device</span> <span class="o">=</span> <span class="n">device</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_zonetracker</span> <span class="o">=</span> <span class="n">zonetracking</span><span class="o">.</span><span class="n">Zonetracker</span><span class="p">()</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_power_status</span> <span class="o">=</span> <span class="bp">None</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_alarm_status</span> <span class="o">=</span> <span class="bp">None</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_bypass_status</span> <span class="o">=</span> <span class="bp">None</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_armed_status</span> <span class="o">=</span> <span class="bp">None</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_fire_status</span> <span class="o">=</span> <span class="p">(</span><span class="bp">False</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_battery_status</span> <span class="o">=</span> <span class="p">(</span><span class="bp">False</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_panic_status</span> <span class="o">=</span> <span class="bp">None</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_relay_status</span> <span class="o">=</span> <span class="p">{}</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">address</span> <span class="o">=</span> <span class="mi">18</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">configbits</span> <span class="o">=</span> <span class="mh">0xFF00</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">address_mask</span> <span class="o">=</span> <span class="mh">0x00000000</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">emulate_zone</span> <span class="o">=</span> <span class="p">[</span><span class="bp">False</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">5</span><span class="p">)]</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">emulate_relay</span> <span class="o">=</span> <span class="p">[</span><span class="bp">False</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">4</span><span class="p">)]</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">emulate_lrr</span> <span class="o">=</span> <span class="bp">False</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">deduplicate</span> <span class="o">=</span> <span class="bp">False</span> | |||||
<span class="nd">@property</span> | |||||
<div class="viewcode-block" id="AD2.id"><a class="viewcode-back" href="../../pyad2.html#pyad2.ad2.AD2.id">[docs]</a> <span class="k">def</span> <span class="nf">id</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> The ID of the AD2USB device.</span> | |||||
<span class="sd"> :returns: The identification string for the device.</span> | |||||
<span class="sd"> """</span> | |||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_device</span><span class="o">.</span><span class="n">id</span> | |||||
</div> | |||||
<div class="viewcode-block" id="AD2.open"><a class="viewcode-back" href="../../pyad2.html#pyad2.ad2.AD2.open">[docs]</a> <span class="k">def</span> <span class="nf">open</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">baudrate</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">no_reader_thread</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Opens the device.</span> | |||||
<span class="sd"> :param baudrate: The baudrate used for the device.</span> | |||||
<span class="sd"> :type baudrate: int</span> | |||||
<span class="sd"> :param interface: The interface used for the device.</span> | |||||
<span class="sd"> :type interface: varies depends on device type.. FIXME</span> | |||||
<span class="sd"> :param index: Interface index.. can probably remove. FIXME</span> | |||||
<span class="sd"> :type index: int</span> | |||||
<span class="sd"> :param no_reader_thread: Specifies whether or not the automatic reader thread should be started or not</span> | |||||
<span class="sd"> :type no_reader_thread: bool</span> | |||||
<span class="sd"> """</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_wire_events</span><span class="p">()</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_device</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="n">baudrate</span><span class="o">=</span><span class="n">baudrate</span><span class="p">,</span> <span class="n">no_reader_thread</span><span class="o">=</span><span class="n">no_reader_thread</span><span class="p">)</span> | |||||
</div> | |||||
<div class="viewcode-block" id="AD2.close"><a class="viewcode-back" href="../../pyad2.html#pyad2.ad2.AD2.close">[docs]</a> <span class="k">def</span> <span class="nf">close</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Closes the device.</span> | |||||
<span class="sd"> """</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_device</span><span class="o">.</span><span class="n">close</span><span class="p">()</span> | |||||
<span class="k">del</span> <span class="bp">self</span><span class="o">.</span><span class="n">_device</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_device</span> <span class="o">=</span> <span class="bp">None</span> | |||||
</div> | |||||
<div class="viewcode-block" id="AD2.send"><a class="viewcode-back" href="../../pyad2.html#pyad2.ad2.AD2.send">[docs]</a> <span class="k">def</span> <span class="nf">send</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span> | |||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_device</span><span class="p">:</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_device</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> | |||||
</div> | |||||
<div class="viewcode-block" id="AD2.get_config"><a class="viewcode-back" href="../../pyad2.html#pyad2.ad2.AD2.get_config">[docs]</a> <span class="k">def</span> <span class="nf">get_config</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Retrieves the configuration from the device.</span> | |||||
<span class="sd"> """</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_device</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s">"C</span><span class="se">\r</span><span class="s">"</span><span class="p">)</span> | |||||
</div> | |||||
<div class="viewcode-block" id="AD2.save_config"><a class="viewcode-back" href="../../pyad2.html#pyad2.ad2.AD2.save_config">[docs]</a> <span class="k">def</span> <span class="nf">save_config</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Sets configuration entries on the device.</span> | |||||
<span class="sd"> """</span> | |||||
<span class="n">config_string</span> <span class="o">=</span> <span class="s">''</span> | |||||
<span class="c"># HACK: Both of these methods are ugly.. but I can't think of an elegant way of doing it.</span> | |||||
<span class="c">#config_string += 'ADDRESS={0}&'.format(self.address)</span> | |||||
<span class="c">#config_string += 'CONFIGBITS={0:x}&'.format(self.configbits)</span> | |||||
<span class="c">#config_string += 'MASK={0:x}&'.format(self.address_mask)</span> | |||||
<span class="c">#config_string += 'EXP={0}&'.format(''.join(['Y' if z else 'N' for z in self.emulate_zone]))</span> | |||||
<span class="c">#config_string += 'REL={0}&'.format(''.join(['Y' if r else 'N' for r in self.emulate_relay]))</span> | |||||
<span class="c">#config_string += 'LRR={0}&'.format('Y' if self.emulate_lrr else 'N')</span> | |||||
<span class="c">#config_string += 'DEDUPLICATE={0}'.format('Y' if self.deduplicate else 'N')</span> | |||||
<span class="n">config_entries</span> <span class="o">=</span> <span class="p">[]</span> | |||||
<span class="n">config_entries</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="s">'ADDRESS'</span><span class="p">,</span> <span class="s">'{0}'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">address</span><span class="p">)))</span> | |||||
<span class="n">config_entries</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="s">'CONFIGBITS'</span><span class="p">,</span> <span class="s">'{0:x}'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">configbits</span><span class="p">)))</span> | |||||
<span class="n">config_entries</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="s">'MASK'</span><span class="p">,</span> <span class="s">'{0:x}'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">address_mask</span><span class="p">)))</span> | |||||
<span class="n">config_entries</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="s">'EXP'</span><span class="p">,</span> <span class="s">''</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="s">'Y'</span> <span class="k">if</span> <span class="n">z</span> <span class="k">else</span> <span class="s">'N'</span> <span class="k">for</span> <span class="n">z</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">emulate_zone</span><span class="p">])))</span> | |||||
<span class="n">config_entries</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="s">'REL'</span><span class="p">,</span> <span class="s">''</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="s">'Y'</span> <span class="k">if</span> <span class="n">r</span> <span class="k">else</span> <span class="s">'N'</span> <span class="k">for</span> <span class="n">r</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">emulate_relay</span><span class="p">])))</span> | |||||
<span class="n">config_entries</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="s">'LRR'</span><span class="p">,</span> <span class="s">'Y'</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">emulate_lrr</span> <span class="k">else</span> <span class="s">'N'</span><span class="p">))</span> | |||||
<span class="n">config_entries</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="s">'DEDUPLICATE'</span><span class="p">,</span> <span class="s">'Y'</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">deduplicate</span> <span class="k">else</span> <span class="s">'N'</span><span class="p">))</span> | |||||
<span class="n">config_string</span> <span class="o">=</span> <span class="s">'&'</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="s">'='</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">t</span><span class="p">)</span> <span class="k">for</span> <span class="n">t</span> <span class="ow">in</span> <span class="n">config_entries</span><span class="p">])</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_device</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s">"C{0}</span><span class="se">\r</span><span class="s">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">config_string</span><span class="p">))</span> | |||||
</div> | |||||
<div class="viewcode-block" id="AD2.reboot"><a class="viewcode-back" href="../../pyad2.html#pyad2.ad2.AD2.reboot">[docs]</a> <span class="k">def</span> <span class="nf">reboot</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Reboots the device.</span> | |||||
<span class="sd"> """</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_device</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s">'='</span><span class="p">)</span> | |||||
</div> | |||||
<div class="viewcode-block" id="AD2.fault_zone"><a class="viewcode-back" href="../../pyad2.html#pyad2.ad2.AD2.fault_zone">[docs]</a> <span class="k">def</span> <span class="nf">fault_zone</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">zone</span><span class="p">,</span> <span class="n">simulate_wire_problem</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Faults a zone if we are emulating a zone expander.</span> | |||||
<span class="sd"> :param zone: The zone to fault.</span> | |||||
<span class="sd"> :type zone: int</span> | |||||
<span class="sd"> :param simulate_wire_problem: Whether or not to simulate a wire fault.</span> | |||||
<span class="sd"> :type simulate_wire_problem: bool</span> | |||||
<span class="sd"> """</span> | |||||
<span class="c"># Allow ourselves to also be passed an address/channel combination</span> | |||||
<span class="c"># for zone expanders.</span> | |||||
<span class="c">#</span> | |||||
<span class="c"># Format (expander index, channel)</span> | |||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">zone</span><span class="p">,</span> <span class="nb">tuple</span><span class="p">):</span> | |||||
<span class="n">zone</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_zonetracker</span><span class="o">.</span><span class="n">_expander_to_zone</span><span class="p">(</span><span class="o">*</span><span class="n">zone</span><span class="p">)</span> | |||||
<span class="n">status</span> <span class="o">=</span> <span class="mi">2</span> <span class="k">if</span> <span class="n">simulate_wire_problem</span> <span class="k">else</span> <span class="mi">1</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_device</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s">"L{0:02}{1}</span><span class="se">\r</span><span class="s">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">zone</span><span class="p">,</span> <span class="n">status</span><span class="p">))</span> | |||||
</div> | |||||
<div class="viewcode-block" id="AD2.clear_zone"><a class="viewcode-back" href="../../pyad2.html#pyad2.ad2.AD2.clear_zone">[docs]</a> <span class="k">def</span> <span class="nf">clear_zone</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">zone</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Clears a zone if we are emulating a zone expander.</span> | |||||
<span class="sd"> :param zone: The zone to clear.</span> | |||||
<span class="sd"> :type zone: int</span> | |||||
<span class="sd"> """</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_device</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s">"L{0:02}0</span><span class="se">\r</span><span class="s">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">zone</span><span class="p">))</span> | |||||
</div> | |||||
<span class="k">def</span> <span class="nf">_wire_events</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Wires up the internal device events.</span> | |||||
<span class="sd"> """</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_device</span><span class="o">.</span><span class="n">on_open</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_on_open</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_device</span><span class="o">.</span><span class="n">on_close</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_on_close</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_device</span><span class="o">.</span><span class="n">on_read</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_on_read</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_device</span><span class="o">.</span><span class="n">on_write</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_on_write</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_zonetracker</span><span class="o">.</span><span class="n">on_fault</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_on_zone_fault</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_zonetracker</span><span class="o">.</span><span class="n">on_restore</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_on_zone_restore</span> | |||||
<span class="k">def</span> <span class="nf">_handle_message</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Parses messages from the panel.</span> | |||||
<span class="sd"> :param data: Panel data to parse.</span> | |||||
<span class="sd"> :type data: str</span> | |||||
<span class="sd"> :returns: An object representing the message.</span> | |||||
<span class="sd"> """</span> | |||||
<span class="k">if</span> <span class="n">data</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> | |||||
<span class="k">return</span> <span class="bp">None</span> | |||||
<span class="n">msg</span> <span class="o">=</span> <span class="bp">None</span> | |||||
<span class="n">header</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">:</span><span class="mi">4</span><span class="p">]</span> | |||||
<span class="k">if</span> <span class="n">header</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="s">'!'</span> <span class="ow">or</span> <span class="n">header</span> <span class="o">==</span> <span class="s">'!KPE'</span><span class="p">:</span> | |||||
<span class="n">msg</span> <span class="o">=</span> <span class="n">messages</span><span class="o">.</span><span class="n">Message</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> | |||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">address_mask</span> <span class="o">&</span> <span class="n">msg</span><span class="o">.</span><span class="n">mask</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_update_internal_states</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span> | |||||
<span class="k">elif</span> <span class="n">header</span> <span class="o">==</span> <span class="s">'!EXP'</span> <span class="ow">or</span> <span class="n">header</span> <span class="o">==</span> <span class="s">'!REL'</span><span class="p">:</span> | |||||
<span class="n">msg</span> <span class="o">=</span> <span class="n">messages</span><span class="o">.</span><span class="n">ExpanderMessage</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_update_internal_states</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span> | |||||
<span class="k">elif</span> <span class="n">header</span> <span class="o">==</span> <span class="s">'!RFX'</span><span class="p">:</span> | |||||
<span class="n">msg</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_handle_rfx</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> | |||||
<span class="k">elif</span> <span class="n">header</span> <span class="o">==</span> <span class="s">'!LRR'</span><span class="p">:</span> | |||||
<span class="n">msg</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_handle_lrr</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> | |||||
<span class="k">elif</span> <span class="n">data</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s">'!Ready'</span><span class="p">):</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">on_boot</span><span class="p">()</span> | |||||
<span class="k">elif</span> <span class="n">data</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s">'!CONFIG'</span><span class="p">):</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_handle_config</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> | |||||
<span class="k">return</span> <span class="n">msg</span> | |||||
<span class="k">def</span> <span class="nf">_handle_rfx</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span> | |||||
<span class="n">msg</span> <span class="o">=</span> <span class="n">messages</span><span class="o">.</span><span class="n">RFMessage</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">on_rfx_message</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span> | |||||
<span class="k">return</span> <span class="n">msg</span> | |||||
<span class="k">def</span> <span class="nf">_handle_lrr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Handle Long Range Radio messages.</span> | |||||
<span class="sd"> :param data: LRR message to parse.</span> | |||||
<span class="sd"> :type data: str</span> | |||||
<span class="sd"> :returns: An object representing the LRR message.</span> | |||||
<span class="sd"> """</span> | |||||
<span class="n">msg</span> <span class="o">=</span> <span class="n">messages</span><span class="o">.</span><span class="n">LRRMessage</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> | |||||
<span class="k">if</span> <span class="n">msg</span><span class="o">.</span><span class="n">event_type</span> <span class="o">==</span> <span class="s">'ALARM_PANIC'</span><span class="p">:</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_panic_status</span> <span class="o">=</span> <span class="bp">True</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">on_panic</span><span class="p">(</span><span class="bp">True</span><span class="p">)</span> | |||||
<span class="k">elif</span> <span class="n">msg</span><span class="o">.</span><span class="n">event_type</span> <span class="o">==</span> <span class="s">'CANCEL'</span><span class="p">:</span> | |||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_panic_status</span> <span class="o">==</span> <span class="bp">True</span><span class="p">:</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_panic_status</span> <span class="o">=</span> <span class="bp">False</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">on_panic</span><span class="p">(</span><span class="bp">False</span><span class="p">)</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">on_lrr_message</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span> | |||||
<span class="k">return</span> <span class="n">msg</span> | |||||
<span class="k">def</span> <span class="nf">_handle_config</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Handles received configuration data.</span> | |||||
<span class="sd"> :param data: Configuration string to parse.</span> | |||||
<span class="sd"> :type data: str</span> | |||||
<span class="sd"> """</span> | |||||
<span class="n">_</span><span class="p">,</span> <span class="n">config_string</span> <span class="o">=</span> <span class="n">data</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">'>'</span><span class="p">)</span> | |||||
<span class="k">for</span> <span class="n">setting</span> <span class="ow">in</span> <span class="n">config_string</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">'&'</span><span class="p">):</span> | |||||
<span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="o">=</span> <span class="n">setting</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">'='</span><span class="p">)</span> | |||||
<span class="k">if</span> <span class="n">k</span> <span class="o">==</span> <span class="s">'ADDRESS'</span><span class="p">:</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">address</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">v</span><span class="p">)</span> | |||||
<span class="k">elif</span> <span class="n">k</span> <span class="o">==</span> <span class="s">'CONFIGBITS'</span><span class="p">:</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">configbits</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="mi">16</span><span class="p">)</span> | |||||
<span class="k">elif</span> <span class="n">k</span> <span class="o">==</span> <span class="s">'MASK'</span><span class="p">:</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">address_mask</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="mi">16</span><span class="p">)</span> | |||||
<span class="k">elif</span> <span class="n">k</span> <span class="o">==</span> <span class="s">'EXP'</span><span class="p">:</span> | |||||
<span class="k">for</span> <span class="n">z</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">5</span><span class="p">):</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">emulate_zone</span><span class="p">[</span><span class="n">z</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="n">v</span><span class="p">[</span><span class="n">z</span><span class="p">]</span> <span class="o">==</span> <span class="s">'Y'</span><span class="p">)</span> | |||||
<span class="k">elif</span> <span class="n">k</span> <span class="o">==</span> <span class="s">'REL'</span><span class="p">:</span> | |||||
<span class="k">for</span> <span class="n">r</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">4</span><span class="p">):</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">emulate_relay</span><span class="p">[</span><span class="n">r</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="n">v</span><span class="p">[</span><span class="n">r</span><span class="p">]</span> <span class="o">==</span> <span class="s">'Y'</span><span class="p">)</span> | |||||
<span class="k">elif</span> <span class="n">k</span> <span class="o">==</span> <span class="s">'LRR'</span><span class="p">:</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">emulate_lrr</span> <span class="o">=</span> <span class="p">(</span><span class="n">v</span> <span class="o">==</span> <span class="s">'Y'</span><span class="p">)</span> | |||||
<span class="k">elif</span> <span class="n">k</span> <span class="o">==</span> <span class="s">'DEDUPLICATE'</span><span class="p">:</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">deduplicate</span> <span class="o">=</span> <span class="p">(</span><span class="n">v</span> <span class="o">==</span> <span class="s">'Y'</span><span class="p">)</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">on_config_received</span><span class="p">()</span> | |||||
<span class="k">def</span> <span class="nf">_update_internal_states</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">message</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Updates internal device states.</span> | |||||
<span class="sd"> :param message: Message to update internal states with.</span> | |||||
<span class="sd"> :type message: Message, ExpanderMessage, LRRMessage, or RFMessage</span> | |||||
<span class="sd"> """</span> | |||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">message</span><span class="p">,</span> <span class="n">messages</span><span class="o">.</span><span class="n">Message</span><span class="p">):</span> | |||||
<span class="k">if</span> <span class="n">message</span><span class="o">.</span><span class="n">ac_power</span> <span class="o">!=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_power_status</span><span class="p">:</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_power_status</span><span class="p">,</span> <span class="n">old_status</span> <span class="o">=</span> <span class="n">message</span><span class="o">.</span><span class="n">ac_power</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_power_status</span> | |||||
<span class="k">if</span> <span class="n">old_status</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">on_power_changed</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_power_status</span><span class="p">)</span> | |||||
<span class="k">if</span> <span class="n">message</span><span class="o">.</span><span class="n">alarm_sounding</span> <span class="o">!=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_alarm_status</span><span class="p">:</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_alarm_status</span><span class="p">,</span> <span class="n">old_status</span> <span class="o">=</span> <span class="n">message</span><span class="o">.</span><span class="n">alarm_sounding</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_alarm_status</span> | |||||
<span class="k">if</span> <span class="n">old_status</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">on_alarm</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_alarm_status</span><span class="p">)</span> | |||||
<span class="k">if</span> <span class="n">message</span><span class="o">.</span><span class="n">zone_bypassed</span> <span class="o">!=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_bypass_status</span><span class="p">:</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_bypass_status</span><span class="p">,</span> <span class="n">old_status</span> <span class="o">=</span> <span class="n">message</span><span class="o">.</span><span class="n">zone_bypassed</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_bypass_status</span> | |||||
<span class="k">if</span> <span class="n">old_status</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">on_bypass</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_bypass_status</span><span class="p">)</span> | |||||
<span class="k">if</span> <span class="p">(</span><span class="n">message</span><span class="o">.</span><span class="n">armed_away</span> <span class="o">|</span> <span class="n">message</span><span class="o">.</span><span class="n">armed_home</span><span class="p">)</span> <span class="o">!=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_armed_status</span><span class="p">:</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_armed_status</span><span class="p">,</span> <span class="n">old_status</span> <span class="o">=</span> <span class="n">message</span><span class="o">.</span><span class="n">armed_away</span> <span class="o">|</span> <span class="n">message</span><span class="o">.</span><span class="n">armed_home</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_armed_status</span> | |||||
<span class="k">if</span> <span class="n">old_status</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span> | |||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_armed_status</span><span class="p">:</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">on_arm</span><span class="p">()</span> | |||||
<span class="k">else</span><span class="p">:</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">on_disarm</span><span class="p">()</span> | |||||
<span class="k">if</span> <span class="n">message</span><span class="o">.</span><span class="n">battery_low</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">_battery_status</span><span class="p">[</span><span class="mi">0</span><span class="p">]:</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_battery_status</span> <span class="o">=</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_battery_status</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">())</span> | |||||
<span class="k">else</span><span class="p">:</span> | |||||
<span class="k">if</span> <span class="n">message</span><span class="o">.</span><span class="n">battery_low</span> <span class="o">==</span> <span class="bp">True</span> <span class="ow">or</span> <span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span> <span class="o">></span> <span class="bp">self</span><span class="o">.</span><span class="n">_battery_status</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">+</span> <span class="n">AD2</span><span class="o">.</span><span class="n">BATTERY_TIMEOUT</span><span class="p">:</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_battery_status</span> <span class="o">=</span> <span class="p">(</span><span class="n">message</span><span class="o">.</span><span class="n">battery_low</span><span class="p">,</span> <span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">())</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">on_low_battery</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_battery_status</span><span class="p">)</span> | |||||
<span class="k">if</span> <span class="n">message</span><span class="o">.</span><span class="n">fire_alarm</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">_fire_status</span><span class="p">[</span><span class="mi">0</span><span class="p">]:</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_fire_status</span> <span class="o">=</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_fire_status</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">())</span> | |||||
<span class="k">else</span><span class="p">:</span> | |||||
<span class="k">if</span> <span class="n">message</span><span class="o">.</span><span class="n">fire_alarm</span> <span class="o">==</span> <span class="bp">True</span> <span class="ow">or</span> <span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span> <span class="o">></span> <span class="bp">self</span><span class="o">.</span><span class="n">_fire_status</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">+</span> <span class="n">AD2</span><span class="o">.</span><span class="n">FIRE_TIMEOUT</span><span class="p">:</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_fire_status</span> <span class="o">=</span> <span class="p">(</span><span class="n">message</span><span class="o">.</span><span class="n">fire_alarm</span><span class="p">,</span> <span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">())</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">on_fire</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_fire_status</span><span class="p">)</span> | |||||
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">message</span><span class="p">,</span> <span class="n">messages</span><span class="o">.</span><span class="n">ExpanderMessage</span><span class="p">):</span> | |||||
<span class="k">if</span> <span class="n">message</span><span class="o">.</span><span class="n">type</span> <span class="o">==</span> <span class="n">messages</span><span class="o">.</span><span class="n">ExpanderMessage</span><span class="o">.</span><span class="n">RELAY</span><span class="p">:</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_relay_status</span><span class="p">[(</span><span class="n">message</span><span class="o">.</span><span class="n">address</span><span class="p">,</span> <span class="n">message</span><span class="o">.</span><span class="n">channel</span><span class="p">)]</span> <span class="o">=</span> <span class="n">message</span><span class="o">.</span><span class="n">value</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">on_relay_changed</span><span class="p">(</span><span class="n">message</span><span class="p">)</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_update_zone_tracker</span><span class="p">(</span><span class="n">message</span><span class="p">)</span> | |||||
<span class="k">def</span> <span class="nf">_update_zone_tracker</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">message</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Trigger an update of the zonetracker.</span> | |||||
<span class="sd"> :param message: The message to update the zonetracker with.</span> | |||||
<span class="sd"> :type message: Message, ExpanderMessage, LRRMessage, or RFMessage</span> | |||||
<span class="sd"> """</span> | |||||
<span class="c"># Retrieve a list of faults.</span> | |||||
<span class="c"># NOTE: This only happens on first boot or after exiting programming mode.</span> | |||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">message</span><span class="p">,</span> <span class="n">messages</span><span class="o">.</span><span class="n">Message</span><span class="p">):</span> | |||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">message</span><span class="o">.</span><span class="n">ready</span> <span class="ow">and</span> <span class="s">"Hit * for faults"</span> <span class="ow">in</span> <span class="n">message</span><span class="o">.</span><span class="n">text</span><span class="p">:</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_device</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s">'*'</span><span class="p">)</span> | |||||
<span class="k">return</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_zonetracker</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">message</span><span class="p">)</span> | |||||
<span class="k">def</span> <span class="nf">_on_open</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sender</span><span class="p">,</span> <span class="n">args</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Internal handler for opening the device.</span> | |||||
<span class="sd"> """</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">on_open</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> | |||||
<span class="k">def</span> <span class="nf">_on_close</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sender</span><span class="p">,</span> <span class="n">args</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Internal handler for closing the device.</span> | |||||
<span class="sd"> """</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">on_close</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> | |||||
<span class="k">def</span> <span class="nf">_on_read</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sender</span><span class="p">,</span> <span class="n">args</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Internal handler for reading from the device.</span> | |||||
<span class="sd"> """</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">on_read</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> | |||||
<span class="n">msg</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_handle_message</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> | |||||
<span class="k">if</span> <span class="n">msg</span><span class="p">:</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">on_message</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span> | |||||
<span class="k">def</span> <span class="nf">_on_write</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sender</span><span class="p">,</span> <span class="n">args</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Internal handler for writing to the device.</span> | |||||
<span class="sd"> """</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">on_write</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> | |||||
<span class="k">def</span> <span class="nf">_on_zone_fault</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sender</span><span class="p">,</span> <span class="n">args</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Internal handler for zone faults.</span> | |||||
<span class="sd"> """</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">on_zone_fault</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> | |||||
<span class="k">def</span> <span class="nf">_on_zone_restore</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sender</span><span class="p">,</span> <span class="n">args</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Internal handler for zone restoration.</span> | |||||
<span class="sd"> """</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">on_zone_restore</span><span class="p">(</span><span class="n">args</span><span class="p">)</span></div> | |||||
</pre></div> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<div class="sphinxsidebar"> | |||||
<div class="sphinxsidebarwrapper"> | |||||
<div id="searchbox" style="display: none"> | |||||
<h3>Quick search</h3> | |||||
<form class="search" action="../../search.html" method="get"> | |||||
<input type="text" name="q" /> | |||||
<input type="submit" value="Go" /> | |||||
<input type="hidden" name="check_keywords" value="yes" /> | |||||
<input type="hidden" name="area" value="default" /> | |||||
</form> | |||||
<p class="searchtip" style="font-size: 90%"> | |||||
Enter search terms or a module, class or function name. | |||||
</p> | |||||
</div> | |||||
<script type="text/javascript">$('#searchbox').show(0);</script> | |||||
</div> | |||||
</div> | |||||
<div class="clearer"></div> | |||||
</div> | |||||
<div class="related"> | |||||
<h3>Navigation</h3> | |||||
<ul> | |||||
<li class="right" style="margin-right: 10px"> | |||||
<a href="../../genindex.html" title="General Index" | |||||
>index</a></li> | |||||
<li class="right" > | |||||
<a href="../../py-modindex.html" title="Python Module Index" | |||||
>modules</a> |</li> | |||||
<li><a href="../../index.html">pyad2 documentation</a> »</li> | |||||
<li><a href="../index.html" >Module code</a> »</li> | |||||
</ul> | |||||
</div> | |||||
<div class="footer"> | |||||
© Copyright 2013, Author. | |||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2b1. | |||||
</div> | |||||
</body> | |||||
</html> |
@@ -6,7 +6,7 @@ | |||||
<head> | <head> | ||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> | <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> | ||||
<title>pyad2usb.devices — pyad2usb documentation</title> | |||||
<title>pyad2.devices — pyad2 documentation</title> | |||||
<link rel="stylesheet" href="../../_static/default.css" type="text/css" /> | <link rel="stylesheet" href="../../_static/default.css" type="text/css" /> | ||||
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> | <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> | ||||
@@ -23,7 +23,7 @@ | |||||
<script type="text/javascript" src="../../_static/jquery.js"></script> | <script type="text/javascript" src="../../_static/jquery.js"></script> | ||||
<script type="text/javascript" src="../../_static/underscore.js"></script> | <script type="text/javascript" src="../../_static/underscore.js"></script> | ||||
<script type="text/javascript" src="../../_static/doctools.js"></script> | <script type="text/javascript" src="../../_static/doctools.js"></script> | ||||
<link rel="top" title="pyad2usb documentation" href="../../index.html" /> | |||||
<link rel="top" title="pyad2 documentation" href="../../index.html" /> | |||||
<link rel="up" title="Module code" href="../index.html" /> | <link rel="up" title="Module code" href="../index.html" /> | ||||
</head> | </head> | ||||
<body> | <body> | ||||
@@ -36,7 +36,7 @@ | |||||
<li class="right" > | <li class="right" > | ||||
<a href="../../py-modindex.html" title="Python Module Index" | <a href="../../py-modindex.html" title="Python Module Index" | ||||
>modules</a> |</li> | >modules</a> |</li> | ||||
<li><a href="../../index.html">pyad2usb documentation</a> »</li> | |||||
<li><a href="../../index.html">pyad2 documentation</a> »</li> | |||||
<li><a href="../index.html" accesskey="U">Module code</a> »</li> | <li><a href="../index.html" accesskey="U">Module code</a> »</li> | ||||
</ul> | </ul> | ||||
</div> | </div> | ||||
@@ -46,24 +46,25 @@ | |||||
<div class="bodywrapper"> | <div class="bodywrapper"> | ||||
<div class="body"> | <div class="body"> | ||||
<h1>Source code for pyad2usb.devices</h1><div class="highlight"><pre> | |||||
<h1>Source code for pyad2.devices</h1><div class="highlight"><pre> | |||||
<span class="sd">"""</span> | <span class="sd">"""</span> | ||||
<span class="sd">Contains different types of devices belonging to the AD2USB family.</span> | <span class="sd">Contains different types of devices belonging to the AD2USB family.</span> | ||||
<span class="sd">.. moduleauthor:: Scott Petersen <scott@nutech.com></span> | |||||
<span class="sd">"""</span> | <span class="sd">"""</span> | ||||
<span class="kn">import</span> <span class="nn">usb.core</span> | |||||
<span class="kn">import</span> <span class="nn">usb.util</span> | |||||
<span class="kn">import</span> <span class="nn">usb.core</span><span class="o">,</span> <span class="nn">usb.util</span> | |||||
<span class="kn">import</span> <span class="nn">time</span> | <span class="kn">import</span> <span class="nn">time</span> | ||||
<span class="kn">import</span> <span class="nn">threading</span> | <span class="kn">import</span> <span class="nn">threading</span> | ||||
<span class="kn">import</span> <span class="nn">serial</span> | |||||
<span class="kn">import</span> <span class="nn">serial.tools.list_ports</span> | |||||
<span class="kn">import</span> <span class="nn">serial</span><span class="o">,</span> <span class="nn">serial.tools.list_ports</span> | |||||
<span class="kn">import</span> <span class="nn">socket</span> | <span class="kn">import</span> <span class="nn">socket</span> | ||||
<span class="kn">from</span> <span class="nn">OpenSSL</span> <span class="kn">import</span> <span class="n">SSL</span><span class="p">,</span> <span class="n">crypto</span> | |||||
<span class="kn">from</span> <span class="nn">pyftdi.pyftdi.ftdi</span> <span class="kn">import</span> <span class="o">*</span> | <span class="kn">from</span> <span class="nn">pyftdi.pyftdi.ftdi</span> <span class="kn">import</span> <span class="o">*</span> | ||||
<span class="kn">from</span> <span class="nn">pyftdi.pyftdi.usbtools</span> <span class="kn">import</span> <span class="o">*</span> | <span class="kn">from</span> <span class="nn">pyftdi.pyftdi.usbtools</span> <span class="kn">import</span> <span class="o">*</span> | ||||
<span class="kn">from</span> <span class="nn">.</span> <span class="kn">import</span> <span class="n">util</span> | <span class="kn">from</span> <span class="nn">.</span> <span class="kn">import</span> <span class="n">util</span> | ||||
<span class="kn">from</span> <span class="nn">.event</span> <span class="kn">import</span> <span class="n">event</span> | <span class="kn">from</span> <span class="nn">.event</span> <span class="kn">import</span> <span class="n">event</span> | ||||
<div class="viewcode-block" id="Device"><a class="viewcode-back" href="../../pyad2usb.html#pyad2usb.devices.Device">[docs]</a><span class="k">class</span> <span class="nc">Device</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span> | |||||
<div class="viewcode-block" id="Device"><a class="viewcode-back" href="../../pyad2.html#pyad2.devices.Device">[docs]</a><span class="k">class</span> <span class="nc">Device</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | <span class="sd">"""</span> | ||||
<span class="sd"> Generic parent device to all AD2USB products.</span> | <span class="sd"> Generic parent device to all AD2USB products.</span> | ||||
<span class="sd"> """</span> | <span class="sd"> """</span> | ||||
@@ -75,58 +76,88 @@ | |||||
<span class="n">on_write</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">Event</span><span class="p">(</span><span class="s">'Called when data has been written to the device'</span><span class="p">)</span> | <span class="n">on_write</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">Event</span><span class="p">(</span><span class="s">'Called when data has been written to the device'</span><span class="p">)</span> | ||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | ||||
<span class="sd">"""</span> | |||||
<span class="sd"> Constructor</span> | |||||
<span class="sd"> """</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_id</span> <span class="o">=</span> <span class="s">''</span> | <span class="bp">self</span><span class="o">.</span><span class="n">_id</span> <span class="o">=</span> <span class="s">''</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span> <span class="o">=</span> <span class="s">''</span> | <span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span> <span class="o">=</span> <span class="s">''</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">_interface</span> <span class="o">=</span> <span class="bp">None</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_device</span> <span class="o">=</span> <span class="bp">None</span> | <span class="bp">self</span><span class="o">.</span><span class="n">_device</span> <span class="o">=</span> <span class="bp">None</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">_running</span> <span class="o">=</span> <span class="bp">False</span> | <span class="bp">self</span><span class="o">.</span><span class="n">_running</span> <span class="o">=</span> <span class="bp">False</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">_read_thread</span> <span class="o">=</span> <span class="n">Device</span><span class="o">.</span><span class="n">ReadThread</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="c"># NOTE: not sure this is going to work..</span> | |||||
<span class="k">def</span> <span class="nf">__del__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | |||||
<span class="k">pass</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_read_thread</span> <span class="o">=</span> <span class="n">Device</span><span class="o">.</span><span class="n">ReadThread</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> | |||||
<span class="nd">@property</span> | <span class="nd">@property</span> | ||||
<span class="k">def</span> <span class="nf">id</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | <span class="k">def</span> <span class="nf">id</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | ||||
<span class="sd">"""</span> | |||||
<span class="sd"> Retrieve the device ID.</span> | |||||
<span class="sd"> :returns: The identification string for the device.</span> | |||||
<span class="sd"> """</span> | |||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_id</span> | <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_id</span> | ||||
<span class="nd">@id.setter</span> | <span class="nd">@id.setter</span> | ||||
<div class="viewcode-block" id="Device.id"><a class="viewcode-back" href="../../pyad2usb.html#pyad2usb.devices.Device.id">[docs]</a> <span class="k">def</span> <span class="nf">id</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span> | |||||
<div class="viewcode-block" id="Device.id"><a class="viewcode-back" href="../../pyad2.html#pyad2.devices.Device.id">[docs]</a> <span class="k">def</span> <span class="nf">id</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Sets the device ID.</span> | |||||
<span class="sd"> :param value: The device identification.</span> | |||||
<span class="sd"> :type value: str</span> | |||||
<span class="sd"> """</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_id</span> <span class="o">=</span> <span class="n">value</span> | <span class="bp">self</span><span class="o">.</span><span class="n">_id</span> <span class="o">=</span> <span class="n">value</span> | ||||
</div> | </div> | ||||
<div class="viewcode-block" id="Device.is_reader_alive"><a class="viewcode-back" href="../../pyad2usb.html#pyad2usb.devices.Device.is_reader_alive">[docs]</a> <span class="k">def</span> <span class="nf">is_reader_alive</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | |||||
<div class="viewcode-block" id="Device.is_reader_alive"><a class="viewcode-back" href="../../pyad2.html#pyad2.devices.Device.is_reader_alive">[docs]</a> <span class="k">def</span> <span class="nf">is_reader_alive</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | <span class="sd">"""</span> | ||||
<span class="sd"> Indicates whether or not the reader thread is alive.</span> | <span class="sd"> Indicates whether or not the reader thread is alive.</span> | ||||
<span class="sd"> :returns: Whether or not the reader thread is alive.</span> | |||||
<span class="sd"> """</span> | <span class="sd"> """</span> | ||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_read_thread</span><span class="o">.</span><span class="n">is_alive</span><span class="p">()</span> | <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_read_thread</span><span class="o">.</span><span class="n">is_alive</span><span class="p">()</span> | ||||
</div> | </div> | ||||
<div class="viewcode-block" id="Device.stop_reader"><a class="viewcode-back" href="../../pyad2usb.html#pyad2usb.devices.Device.stop_reader">[docs]</a> <span class="k">def</span> <span class="nf">stop_reader</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | |||||
<div class="viewcode-block" id="Device.stop_reader"><a class="viewcode-back" href="../../pyad2.html#pyad2.devices.Device.stop_reader">[docs]</a> <span class="k">def</span> <span class="nf">stop_reader</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | <span class="sd">"""</span> | ||||
<span class="sd"> Stops the reader thread.</span> | <span class="sd"> Stops the reader thread.</span> | ||||
<span class="sd"> """</span> | <span class="sd"> """</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">_read_thread</span><span class="o">.</span><span class="n">stop</span><span class="p">()</span> | <span class="bp">self</span><span class="o">.</span><span class="n">_read_thread</span><span class="o">.</span><span class="n">stop</span><span class="p">()</span> | ||||
</div> | </div> | ||||
<div class="viewcode-block" id="Device.ReadThread"><a class="viewcode-back" href="../../pyad2usb.html#pyad2usb.devices.Device.ReadThread">[docs]</a> <span class="k">class</span> <span class="nc">ReadThread</span><span class="p">(</span><span class="n">threading</span><span class="o">.</span><span class="n">Thread</span><span class="p">):</span> | |||||
<div class="viewcode-block" id="Device.close"><a class="viewcode-back" href="../../pyad2.html#pyad2.devices.Device.close">[docs]</a> <span class="k">def</span> <span class="nf">close</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Closes the device.</span> | |||||
<span class="sd"> """</span> | |||||
<span class="k">try</span><span class="p">:</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_running</span> <span class="o">=</span> <span class="bp">False</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_read_thread</span><span class="o">.</span><span class="n">stop</span><span class="p">()</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_device</span><span class="o">.</span><span class="n">close</span><span class="p">()</span> | |||||
<span class="k">except</span><span class="p">:</span> | |||||
<span class="k">pass</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">on_close</span><span class="p">()</span> | |||||
</div> | |||||
<div class="viewcode-block" id="Device.ReadThread"><a class="viewcode-back" href="../../pyad2.html#pyad2.devices.Device.ReadThread">[docs]</a> <span class="k">class</span> <span class="nc">ReadThread</span><span class="p">(</span><span class="n">threading</span><span class="o">.</span><span class="n">Thread</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | <span class="sd">"""</span> | ||||
<span class="sd"> Reader thread which processes messages from the device.</span> | <span class="sd"> Reader thread which processes messages from the device.</span> | ||||
<span class="sd"> """</span> | <span class="sd"> """</span> | ||||
<span class="n">READ_TIMEOUT</span> <span class="o">=</span> <span class="mi">10</span> | <span class="n">READ_TIMEOUT</span> <span class="o">=</span> <span class="mi">10</span> | ||||
<span class="sd">"""Timeout for the reader thread."""</span> | |||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">device</span><span class="p">):</span> | <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">device</span><span class="p">):</span> | ||||
<span class="sd">"""</span> | <span class="sd">"""</span> | ||||
<span class="sd"> Constructor</span> | <span class="sd"> Constructor</span> | ||||
<span class="sd"> :param device: The device used by the reader thread.</span> | |||||
<span class="sd"> :type device: devices.Device</span> | |||||
<span class="sd"> """</span> | <span class="sd"> """</span> | ||||
<span class="n">threading</span><span class="o">.</span><span class="n">Thread</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> | <span class="n">threading</span><span class="o">.</span><span class="n">Thread</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">_device</span> <span class="o">=</span> <span class="n">device</span> | <span class="bp">self</span><span class="o">.</span><span class="n">_device</span> <span class="o">=</span> <span class="n">device</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">_running</span> <span class="o">=</span> <span class="bp">False</span> | <span class="bp">self</span><span class="o">.</span><span class="n">_running</span> <span class="o">=</span> <span class="bp">False</span> | ||||
<div class="viewcode-block" id="Device.ReadThread.stop"><a class="viewcode-back" href="../../pyad2usb.html#pyad2usb.devices.Device.ReadThread.stop">[docs]</a> <span class="k">def</span> <span class="nf">stop</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | |||||
<div class="viewcode-block" id="Device.ReadThread.stop"><a class="viewcode-back" href="../../pyad2.html#pyad2.devices.Device.ReadThread.stop">[docs]</a> <span class="k">def</span> <span class="nf">stop</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | <span class="sd">"""</span> | ||||
<span class="sd"> Stops the running thread.</span> | <span class="sd"> Stops the running thread.</span> | ||||
<span class="sd"> """</span> | <span class="sd"> """</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">_running</span> <span class="o">=</span> <span class="bp">False</span> | <span class="bp">self</span><span class="o">.</span><span class="n">_running</span> <span class="o">=</span> <span class="bp">False</span> | ||||
</div> | </div> | ||||
<div class="viewcode-block" id="Device.ReadThread.run"><a class="viewcode-back" href="../../pyad2usb.html#pyad2usb.devices.Device.ReadThread.run">[docs]</a> <span class="k">def</span> <span class="nf">run</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | |||||
<div class="viewcode-block" id="Device.ReadThread.run"><a class="viewcode-back" href="../../pyad2.html#pyad2.devices.Device.ReadThread.run">[docs]</a> <span class="k">def</span> <span class="nf">run</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | <span class="sd">"""</span> | ||||
<span class="sd"> The actual read process.</span> | <span class="sd"> The actual read process.</span> | ||||
<span class="sd"> """</span> | <span class="sd"> """</span> | ||||
@@ -135,126 +166,225 @@ | |||||
<span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_running</span><span class="p">:</span> | <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_running</span><span class="p">:</span> | ||||
<span class="k">try</span><span class="p">:</span> | <span class="k">try</span><span class="p">:</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">_device</span><span class="o">.</span><span class="n">read_line</span><span class="p">(</span><span class="n">timeout</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">READ_TIMEOUT</span><span class="p">)</span> | <span class="bp">self</span><span class="o">.</span><span class="n">_device</span><span class="o">.</span><span class="n">read_line</span><span class="p">(</span><span class="n">timeout</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">READ_TIMEOUT</span><span class="p">)</span> | ||||
<span class="k">except</span> <span class="n">util</span><span class="o">.</span><span class="n">TimeoutError</span><span class="p">,</span> <span class="n">err</span><span class="p">:</span> | <span class="k">except</span> <span class="n">util</span><span class="o">.</span><span class="n">TimeoutError</span><span class="p">,</span> <span class="n">err</span><span class="p">:</span> | ||||
<span class="k">pass</span> | <span class="k">pass</span> | ||||
<span class="k">except</span> <span class="ne">Exception</span><span class="p">,</span> <span class="n">err</span><span class="p">:</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_running</span> <span class="o">=</span> <span class="bp">False</span> | |||||
<span class="c">#raise err</span> | |||||
<span class="n">time</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mf">0.01</span><span class="p">)</span> | <span class="n">time</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mf">0.01</span><span class="p">)</span> | ||||
</div></div></div> | </div></div></div> | ||||
<div class="viewcode-block" id="USBDevice"><a class="viewcode-back" href="../../pyad2usb.html#pyad2usb.devices.USBDevice">[docs]</a><span class="k">class</span> <span class="nc">USBDevice</span><span class="p">(</span><span class="n">Device</span><span class="p">):</span> | |||||
<div class="viewcode-block" id="USBDevice"><a class="viewcode-back" href="../../pyad2.html#pyad2.devices.USBDevice">[docs]</a><span class="k">class</span> <span class="nc">USBDevice</span><span class="p">(</span><span class="n">Device</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | <span class="sd">"""</span> | ||||
<span class="sd"> AD2USB device exposed with PyFTDI's interface.</span> | <span class="sd"> AD2USB device exposed with PyFTDI's interface.</span> | ||||
<span class="sd"> """</span> | <span class="sd"> """</span> | ||||
<span class="c"># Constants</span> | <span class="c"># Constants</span> | ||||
<span class="n">FTDI_VENDOR_ID</span> <span class="o">=</span> <span class="mh">0x0403</span> | <span class="n">FTDI_VENDOR_ID</span> <span class="o">=</span> <span class="mh">0x0403</span> | ||||
<span class="sd">"""Vendor ID used to recognize AD2USB devices."""</span> | |||||
<span class="n">FTDI_PRODUCT_ID</span> <span class="o">=</span> <span class="mh">0x6001</span> | <span class="n">FTDI_PRODUCT_ID</span> <span class="o">=</span> <span class="mh">0x6001</span> | ||||
<span class="sd">"""Product ID used to recognize AD2USB devices."""</span> | |||||
<span class="n">BAUDRATE</span> <span class="o">=</span> <span class="mi">115200</span> | <span class="n">BAUDRATE</span> <span class="o">=</span> <span class="mi">115200</span> | ||||
<span class="sd">"""Default baudrate for AD2USB devices."""</span> | |||||
<span class="nd">@staticmethod</span> | <span class="nd">@staticmethod</span> | ||||
<div class="viewcode-block" id="USBDevice.find_all"><a class="viewcode-back" href="../../pyad2usb.html#pyad2usb.devices.USBDevice.find_all">[docs]</a> <span class="k">def</span> <span class="nf">find_all</span><span class="p">():</span> | |||||
<div class="viewcode-block" id="USBDevice.find_all"><a class="viewcode-back" href="../../pyad2.html#pyad2.devices.USBDevice.find_all">[docs]</a> <span class="k">def</span> <span class="nf">find_all</span><span class="p">():</span> | |||||
<span class="sd">"""</span> | <span class="sd">"""</span> | ||||
<span class="sd"> Returns all FTDI devices matching our vendor and product IDs.</span> | <span class="sd"> Returns all FTDI devices matching our vendor and product IDs.</span> | ||||
<span class="sd"> :returns: list of devices</span> | |||||
<span class="sd"> :raises: util.CommError</span> | |||||
<span class="sd"> """</span> | <span class="sd"> """</span> | ||||
<span class="n">devices</span> <span class="o">=</span> <span class="p">[]</span> | <span class="n">devices</span> <span class="o">=</span> <span class="p">[]</span> | ||||
<span class="k">try</span><span class="p">:</span> | <span class="k">try</span><span class="p">:</span> | ||||
<span class="n">devices</span> <span class="o">=</span> <span class="n">Ftdi</span><span class="o">.</span><span class="n">find_all</span><span class="p">([(</span><span class="n">USBDevice</span><span class="o">.</span><span class="n">FTDI_VENDOR_ID</span><span class="p">,</span> <span class="n">USBDevice</span><span class="o">.</span><span class="n">FTDI_PRODUCT_ID</span><span class="p">)],</span> <span class="n">nocache</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span> | <span class="n">devices</span> <span class="o">=</span> <span class="n">Ftdi</span><span class="o">.</span><span class="n">find_all</span><span class="p">([(</span><span class="n">USBDevice</span><span class="o">.</span><span class="n">FTDI_VENDOR_ID</span><span class="p">,</span> <span class="n">USBDevice</span><span class="o">.</span><span class="n">FTDI_PRODUCT_ID</span><span class="p">)],</span> <span class="n">nocache</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span> | ||||
<span class="k">except</span> <span class="p">(</span><span class="n">usb</span><span class="o">.</span><span class="n">core</span><span class="o">.</span><span class="n">USBError</span><span class="p">,</span> <span class="n">FtdiError</span><span class="p">),</span> <span class="n">err</span><span class="p">:</span> | <span class="k">except</span> <span class="p">(</span><span class="n">usb</span><span class="o">.</span><span class="n">core</span><span class="o">.</span><span class="n">USBError</span><span class="p">,</span> <span class="n">FtdiError</span><span class="p">),</span> <span class="n">err</span><span class="p">:</span> | ||||
<span class="k">raise</span> <span class="n">util</span><span class="o">.</span><span class="n">CommError</span><span class="p">(</span><span class="s">'Error enumerating AD2USB devices: {0}'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">err</span><span class="p">)))</span> | |||||
<span class="k">raise</span> <span class="n">util</span><span class="o">.</span><span class="n">CommError</span><span class="p">(</span><span class="s">'Error enumerating AD2USB devices: {0}'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">err</span><span class="p">)),</span> <span class="n">err</span><span class="p">)</span> | |||||
<span class="k">return</span> <span class="n">devices</span> | <span class="k">return</span> <span class="n">devices</span> | ||||
</div> | </div> | ||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">vid</span><span class="o">=</span><span class="n">FTDI_VENDOR_ID</span><span class="p">,</span> <span class="n">pid</span><span class="o">=</span><span class="n">FTDI_PRODUCT_ID</span><span class="p">,</span> <span class="n">serial</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">description</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">interface</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span> | |||||
<span class="nd">@property</span> | |||||
<span class="k">def</span> <span class="nf">interface</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Retrieves the interface used to connect to the device.</span> | |||||
<span class="sd"> :returns: the interface used to connect to the device.</span> | |||||
<span class="sd"> """</span> | |||||
<span class="k">return</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_serial_number</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_endpoint</span><span class="p">)</span> | |||||
<span class="nd">@interface.setter</span> | |||||
<div class="viewcode-block" id="USBDevice.interface"><a class="viewcode-back" href="../../pyad2.html#pyad2.devices.USBDevice.interface">[docs]</a> <span class="k">def</span> <span class="nf">interface</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Sets the interface used to connect to the device.</span> | |||||
<span class="sd"> :param value: Tuple containing the serial number and endpoint number to use.</span> | |||||
<span class="sd"> :type value: tuple</span> | |||||
<span class="sd"> """</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_serial_number</span> <span class="o">=</span> <span class="n">value</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_endpoint</span> <span class="o">=</span> <span class="n">value</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> | |||||
</div> | |||||
<span class="nd">@property</span> | |||||
<span class="k">def</span> <span class="nf">serial_number</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Retrieves the serial number of the device.</span> | |||||
<span class="sd"> :returns: The serial number of the device.</span> | |||||
<span class="sd"> """</span> | |||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_serial_number</span> | |||||
<span class="nd">@serial_number.setter</span> | |||||
<div class="viewcode-block" id="USBDevice.serial_number"><a class="viewcode-back" href="../../pyad2.html#pyad2.devices.USBDevice.serial_number">[docs]</a> <span class="k">def</span> <span class="nf">serial_number</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Sets the serial number of the device.</span> | |||||
<span class="sd"> :param value: The serial number of the device.</span> | |||||
<span class="sd"> :type value: string</span> | |||||
<span class="sd"> """</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_serial_number</span> <span class="o">=</span> <span class="n">value</span> | |||||
</div> | |||||
<span class="nd">@property</span> | |||||
<span class="k">def</span> <span class="nf">description</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Retrieves the description of the device.</span> | |||||
<span class="sd"> :returns: The description of the device.</span> | |||||
<span class="sd"> """</span> | |||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_description</span> | |||||
<span class="nd">@description.setter</span> | |||||
<div class="viewcode-block" id="USBDevice.description"><a class="viewcode-back" href="../../pyad2.html#pyad2.devices.USBDevice.description">[docs]</a> <span class="k">def</span> <span class="nf">description</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Sets the description of the device.</span> | |||||
<span class="sd"> :param value: The description of the device.</span> | |||||
<span class="sd"> :type value: string</span> | |||||
<span class="sd"> """</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_description</span> <span class="o">=</span> <span class="n">value</span> | |||||
</div> | |||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">interface</span><span class="o">=</span><span class="p">(</span><span class="bp">None</span><span class="p">,</span> <span class="mi">0</span><span class="p">)):</span> | |||||
<span class="sd">"""</span> | <span class="sd">"""</span> | ||||
<span class="sd"> Constructor</span> | <span class="sd"> Constructor</span> | ||||
<span class="sd"> :param interface: Tuple containing the device number and endpoint number to use.</span> | |||||
<span class="sd"> :type interface: tuple</span> | |||||
<span class="sd"> """</span> | <span class="sd"> """</span> | ||||
<span class="n">Device</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> | <span class="n">Device</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">_device</span> <span class="o">=</span> <span class="n">Ftdi</span><span class="p">()</span> | <span class="bp">self</span><span class="o">.</span><span class="n">_device</span> <span class="o">=</span> <span class="n">Ftdi</span><span class="p">()</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">_interface</span> <span class="o">=</span> <span class="n">interface</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_vendor_id</span> <span class="o">=</span> <span class="n">vid</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_product_id</span> <span class="o">=</span> <span class="n">pid</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_serial_number</span> <span class="o">=</span> <span class="n">serial</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_description</span> <span class="o">=</span> <span class="n">description</span> | |||||
<div class="viewcode-block" id="USBDevice.open"><a class="viewcode-back" href="../../pyad2usb.html#pyad2usb.devices.USBDevice.open">[docs]</a> <span class="k">def</span> <span class="nf">open</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">baudrate</span><span class="o">=</span><span class="n">BAUDRATE</span><span class="p">,</span> <span class="n">interface</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">index</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">no_reader_thread</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_serial_number</span> <span class="o">=</span> <span class="n">interface</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_endpoint</span> <span class="o">=</span> <span class="n">interface</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_vendor_id</span> <span class="o">=</span> <span class="n">USBDevice</span><span class="o">.</span><span class="n">FTDI_VENDOR_ID</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_product_id</span> <span class="o">=</span> <span class="n">USBDevice</span><span class="o">.</span><span class="n">FTDI_PRODUCT_ID</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_device_number</span> <span class="o">=</span> <span class="bp">None</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_description</span> <span class="o">=</span> <span class="bp">None</span> | |||||
<div class="viewcode-block" id="USBDevice.open"><a class="viewcode-back" href="../../pyad2.html#pyad2.devices.USBDevice.open">[docs]</a> <span class="k">def</span> <span class="nf">open</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">baudrate</span><span class="o">=</span><span class="n">BAUDRATE</span><span class="p">,</span> <span class="n">no_reader_thread</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | <span class="sd">"""</span> | ||||
<span class="sd"> Opens the device.</span> | <span class="sd"> Opens the device.</span> | ||||
<span class="sd"> :param baudrate: The baudrate to use.</span> | |||||
<span class="sd"> :type baudrate: int</span> | |||||
<span class="sd"> :param no_reader_thread: Whether or not to automatically start the reader thread.</span> | |||||
<span class="sd"> :type no_reader_thread: bool</span> | |||||
<span class="sd"> :raises: util.NoDeviceError</span> | |||||
<span class="sd"> """</span> | <span class="sd"> """</span> | ||||
<span class="c"># Set up defaults</span> | <span class="c"># Set up defaults</span> | ||||
<span class="k">if</span> <span class="n">baudrate</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> | <span class="k">if</span> <span class="n">baudrate</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> | ||||
<span class="n">baudrate</span> <span class="o">=</span> <span class="n">USBDevice</span><span class="o">.</span><span class="n">BAUDRATE</span> | <span class="n">baudrate</span> <span class="o">=</span> <span class="n">USBDevice</span><span class="o">.</span><span class="n">BAUDRATE</span> | ||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_interface</span> <span class="ow">is</span> <span class="bp">None</span> <span class="ow">and</span> <span class="n">interface</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_interface</span> <span class="o">=</span> <span class="mi">0</span> | |||||
<span class="k">if</span> <span class="n">interface</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_interface</span> <span class="o">=</span> <span class="n">interface</span> | |||||
<span class="k">if</span> <span class="n">index</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> | |||||
<span class="n">index</span> <span class="o">=</span> <span class="mi">0</span> | |||||
<span class="c"># Open the device and start up the thread.</span> | <span class="c"># Open the device and start up the thread.</span> | ||||
<span class="k">try</span><span class="p">:</span> | <span class="k">try</span><span class="p">:</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">_device</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_vendor_id</span><span class="p">,</span> | <span class="bp">self</span><span class="o">.</span><span class="n">_device</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_vendor_id</span><span class="p">,</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">_product_id</span><span class="p">,</span> | <span class="bp">self</span><span class="o">.</span><span class="n">_product_id</span><span class="p">,</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">_interface</span><span class="p">,</span> | |||||
<span class="n">index</span><span class="p">,</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_endpoint</span><span class="p">,</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_device_number</span><span class="p">,</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_serial_number</span><span class="p">,</span> | <span class="bp">self</span><span class="o">.</span><span class="n">_serial_number</span><span class="p">,</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">_description</span><span class="p">)</span> | <span class="bp">self</span><span class="o">.</span><span class="n">_description</span><span class="p">)</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">_device</span><span class="o">.</span><span class="n">set_baudrate</span><span class="p">(</span><span class="n">baudrate</span><span class="p">)</span> | <span class="bp">self</span><span class="o">.</span><span class="n">_device</span><span class="o">.</span><span class="n">set_baudrate</span><span class="p">(</span><span class="n">baudrate</span><span class="p">)</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">_id</span> <span class="o">=</span> <span class="s">'USB {0}:{1}'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_device</span><span class="o">.</span><span class="n">usb_dev</span><span class="o">.</span><span class="n">bus</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_device</span><span class="o">.</span><span class="n">usb_dev</span><span class="o">.</span><span class="n">address</span><span class="p">)</span> | <span class="bp">self</span><span class="o">.</span><span class="n">_id</span> <span class="o">=</span> <span class="s">'USB {0}:{1}'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_device</span><span class="o">.</span><span class="n">usb_dev</span><span class="o">.</span><span class="n">bus</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_device</span><span class="o">.</span><span class="n">usb_dev</span><span class="o">.</span><span class="n">address</span><span class="p">)</span> | ||||
<span class="k">except</span> <span class="p">(</span><span class="n">usb</span><span class="o">.</span><span class="n">core</span><span class="o">.</span><span class="n">USBError</span><span class="p">,</span> <span class="n">FtdiError</span><span class="p">),</span> <span class="n">err</span><span class="p">:</span> | <span class="k">except</span> <span class="p">(</span><span class="n">usb</span><span class="o">.</span><span class="n">core</span><span class="o">.</span><span class="n">USBError</span><span class="p">,</span> <span class="n">FtdiError</span><span class="p">),</span> <span class="n">err</span><span class="p">:</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">on_close</span><span class="p">()</span> | |||||
<span class="k">raise</span> <span class="n">util</span><span class="o">.</span><span class="n">NoDeviceError</span><span class="p">(</span><span class="s">'Error opening device: {0}'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">err</span><span class="p">)),</span> <span class="n">err</span><span class="p">)</span> | |||||
<span class="k">raise</span> <span class="n">util</span><span class="o">.</span><span class="n">NoDeviceError</span><span class="p">(</span><span class="s">'Error opening AD2USB device: {0}'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">err</span><span class="p">)))</span> | |||||
<span class="k">else</span><span class="p">:</span> | <span class="k">else</span><span class="p">:</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">_running</span> <span class="o">=</span> <span class="bp">True</span> | <span class="bp">self</span><span class="o">.</span><span class="n">_running</span> <span class="o">=</span> <span class="bp">True</span> | ||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">no_reader_thread</span><span class="p">:</span> | <span class="k">if</span> <span class="ow">not</span> <span class="n">no_reader_thread</span><span class="p">:</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">_read_thread</span><span class="o">.</span><span class="n">start</span><span class="p">()</span> | <span class="bp">self</span><span class="o">.</span><span class="n">_read_thread</span><span class="o">.</span><span class="n">start</span><span class="p">()</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">on_open</span><span class="p">((</span><span class="bp">self</span><span class="o">.</span><span class="n">_serial_number</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_description</span><span class="p">))</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">on_open</span><span class="p">()</span> | |||||
</div> | </div> | ||||
<div class="viewcode-block" id="USBDevice.close"><a class="viewcode-back" href="../../pyad2usb.html#pyad2usb.devices.USBDevice.close">[docs]</a> <span class="k">def</span> <span class="nf">close</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | |||||
<div class="viewcode-block" id="USBDevice.close"><a class="viewcode-back" href="../../pyad2.html#pyad2.devices.USBDevice.close">[docs]</a> <span class="k">def</span> <span class="nf">close</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | <span class="sd">"""</span> | ||||
<span class="sd"> Closes the device.</span> | <span class="sd"> Closes the device.</span> | ||||
<span class="sd"> """</span> | <span class="sd"> """</span> | ||||
<span class="k">try</span><span class="p">:</span> | <span class="k">try</span><span class="p">:</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">_running</span> <span class="o">=</span> <span class="bp">False</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_read_thread</span><span class="o">.</span><span class="n">stop</span><span class="p">()</span> | |||||
<span class="c"># HACK: Probably should fork pyftdi and make this call in .close().</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_device</span><span class="o">.</span><span class="n">usb_dev</span><span class="o">.</span><span class="n">attach_kernel_driver</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_device_number</span><span class="p">)</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_device</span><span class="o">.</span><span class="n">close</span><span class="p">()</span> | |||||
<span class="n">Device</span><span class="o">.</span><span class="n">close</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> | |||||
<span class="c"># HACK: Probably should fork pyftdi and make this call in .close().</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_device</span><span class="o">.</span><span class="n">usb_dev</span><span class="o">.</span><span class="n">attach_kernel_driver</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_interface</span><span class="p">)</span> | |||||
<span class="k">except</span> <span class="p">(</span><span class="n">FtdiError</span><span class="p">,</span> <span class="n">usb</span><span class="o">.</span><span class="n">core</span><span class="o">.</span><span class="n">USBError</span><span class="p">):</span> | |||||
<span class="k">except</span><span class="p">:</span> | |||||
<span class="k">pass</span> | <span class="k">pass</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">on_close</span><span class="p">()</span> | |||||
</div> | </div> | ||||
<div class="viewcode-block" id="USBDevice.write"><a class="viewcode-back" href="../../pyad2usb.html#pyad2usb.devices.USBDevice.write">[docs]</a> <span class="k">def</span> <span class="nf">write</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span> | |||||
<div class="viewcode-block" id="USBDevice.write"><a class="viewcode-back" href="../../pyad2.html#pyad2.devices.USBDevice.write">[docs]</a> <span class="k">def</span> <span class="nf">write</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | <span class="sd">"""</span> | ||||
<span class="sd"> Writes data to the device.</span> | <span class="sd"> Writes data to the device.</span> | ||||
<span class="sd"> :param data: Data to write</span> | |||||
<span class="sd"> :type data: str</span> | |||||
<span class="sd"> :raises: util.CommError</span> | |||||
<span class="sd"> """</span> | <span class="sd"> """</span> | ||||
<span class="k">try</span><span class="p">:</span> | <span class="k">try</span><span class="p">:</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">_device</span><span class="o">.</span><span class="n">write_data</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> | <span class="bp">self</span><span class="o">.</span><span class="n">_device</span><span class="o">.</span><span class="n">write_data</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">on_write</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> | <span class="bp">self</span><span class="o">.</span><span class="n">on_write</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> | ||||
<span class="k">except</span> <span class="n">FtdiError</span><span class="p">,</span> <span class="n">err</span><span class="p">:</span> | <span class="k">except</span> <span class="n">FtdiError</span><span class="p">,</span> <span class="n">err</span><span class="p">:</span> | ||||
<span class="k">raise</span> <span class="n">util</span><span class="o">.</span><span class="n">CommError</span><span class="p">(</span><span class="s">'Error writing to AD2USB device.'</span><span class="p">)</span> | |||||
<span class="k">raise</span> <span class="n">util</span><span class="o">.</span><span class="n">CommError</span><span class="p">(</span><span class="s">'Error writing to device: {0}'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">err</span><span class="p">)),</span> <span class="n">err</span><span class="p">)</span> | |||||
</div> | </div> | ||||
<div class="viewcode-block" id="USBDevice.read"><a class="viewcode-back" href="../../pyad2usb.html#pyad2usb.devices.USBDevice.read">[docs]</a> <span class="k">def</span> <span class="nf">read</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | |||||
<div class="viewcode-block" id="USBDevice.read"><a class="viewcode-back" href="../../pyad2.html#pyad2.devices.USBDevice.read">[docs]</a> <span class="k">def</span> <span class="nf">read</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | <span class="sd">"""</span> | ||||
<span class="sd"> Reads a single character from the device.</span> | <span class="sd"> Reads a single character from the device.</span> | ||||
<span class="sd"> :returns: The character read from the device.</span> | |||||
<span class="sd"> :raises: util.CommError</span> | |||||
<span class="sd"> """</span> | <span class="sd"> """</span> | ||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_device</span><span class="o">.</span><span class="n">read_data</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> | |||||
<span class="n">ret</span> <span class="o">=</span> <span class="bp">None</span> | |||||
<span class="k">try</span><span class="p">:</span> | |||||
<span class="n">ret</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_device</span><span class="o">.</span><span class="n">read_data</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> | |||||
<span class="k">except</span> <span class="p">(</span><span class="n">usb</span><span class="o">.</span><span class="n">core</span><span class="o">.</span><span class="n">USBError</span><span class="p">,</span> <span class="n">FtdiError</span><span class="p">),</span> <span class="n">err</span><span class="p">:</span> | |||||
<span class="k">raise</span> <span class="n">util</span><span class="o">.</span><span class="n">CommError</span><span class="p">(</span><span class="s">'Error reading from device: {0}'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">err</span><span class="p">)),</span> <span class="n">err</span><span class="p">)</span> | |||||
<span class="k">return</span> <span class="n">ret</span> | |||||
</div> | </div> | ||||
<div class="viewcode-block" id="USBDevice.read_line"><a class="viewcode-back" href="../../pyad2usb.html#pyad2usb.devices.USBDevice.read_line">[docs]</a> <span class="k">def</span> <span class="nf">read_line</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">timeout</span><span class="o">=</span><span class="mf">0.0</span><span class="p">):</span> | |||||
<div class="viewcode-block" id="USBDevice.read_line"><a class="viewcode-back" href="../../pyad2.html#pyad2.devices.USBDevice.read_line">[docs]</a> <span class="k">def</span> <span class="nf">read_line</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">timeout</span><span class="o">=</span><span class="mf">0.0</span><span class="p">,</span> <span class="n">purge_buffer</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | <span class="sd">"""</span> | ||||
<span class="sd"> Reads a line from the device.</span> | <span class="sd"> Reads a line from the device.</span> | ||||
<span class="sd"> :param timeout: Read timeout</span> | |||||
<span class="sd"> :type timeout: float</span> | |||||
<span class="sd"> :param purge_buffer: Indicates whether to purge the buffer prior to reading.</span> | |||||
<span class="sd"> :type purge_buffer: bool</span> | |||||
<span class="sd"> :returns: The line that was read.</span> | |||||
<span class="sd"> :raises: util.CommError, util.TimeoutError</span> | |||||
<span class="sd"> """</span> | <span class="sd"> """</span> | ||||
<span class="k">if</span> <span class="n">purge_buffer</span><span class="p">:</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span> <span class="o">=</span> <span class="s">''</span> | |||||
<span class="k">def</span> <span class="nf">timeout_event</span><span class="p">():</span> | <span class="k">def</span> <span class="nf">timeout_event</span><span class="p">():</span> | ||||
<span class="n">timeout_event</span><span class="o">.</span><span class="n">reading</span> <span class="o">=</span> <span class="bp">False</span> | <span class="n">timeout_event</span><span class="o">.</span><span class="n">reading</span> <span class="o">=</span> <span class="bp">False</span> | ||||
@@ -287,12 +417,12 @@ | |||||
<span class="k">else</span><span class="p">:</span> | <span class="k">else</span><span class="p">:</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> | <span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> | ||||
<span class="n">time</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mf">0.001</span><span class="p">)</span> | |||||
<span class="k">except</span> <span class="p">(</span><span class="n">usb</span><span class="o">.</span><span class="n">core</span><span class="o">.</span><span class="n">USBError</span><span class="p">,</span> <span class="n">FtdiError</span><span class="p">),</span> <span class="n">err</span><span class="p">:</span> | <span class="k">except</span> <span class="p">(</span><span class="n">usb</span><span class="o">.</span><span class="n">core</span><span class="o">.</span><span class="n">USBError</span><span class="p">,</span> <span class="n">FtdiError</span><span class="p">),</span> <span class="n">err</span><span class="p">:</span> | ||||
<span class="n">timer</span><span class="o">.</span><span class="n">cancel</span><span class="p">()</span> | |||||
<span class="k">if</span> <span class="n">timer</span><span class="p">:</span> | |||||
<span class="n">timer</span><span class="o">.</span><span class="n">cancel</span><span class="p">()</span> | |||||
<span class="k">raise</span> <span class="n">util</span><span class="o">.</span><span class="n">CommError</span><span class="p">(</span><span class="s">'Error reading from device: {0}'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">err</span><span class="p">)),</span> <span class="n">err</span><span class="p">)</span> | |||||
<span class="k">raise</span> <span class="n">util</span><span class="o">.</span><span class="n">CommError</span><span class="p">(</span><span class="s">'Error reading from AD2USB device: {0}'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">err</span><span class="p">)))</span> | |||||
<span class="k">else</span><span class="p">:</span> | <span class="k">else</span><span class="p">:</span> | ||||
<span class="k">if</span> <span class="n">got_line</span><span class="p">:</span> | <span class="k">if</span> <span class="n">got_line</span><span class="p">:</span> | ||||
<span class="n">ret</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span> | <span class="n">ret</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span> | ||||
@@ -309,18 +439,25 @@ | |||||
<span class="k">return</span> <span class="n">ret</span> | <span class="k">return</span> <span class="n">ret</span> | ||||
</div></div> | </div></div> | ||||
<div class="viewcode-block" id="SerialDevice"><a class="viewcode-back" href="../../pyad2usb.html#pyad2usb.devices.SerialDevice">[docs]</a><span class="k">class</span> <span class="nc">SerialDevice</span><span class="p">(</span><span class="n">Device</span><span class="p">):</span> | |||||
<div class="viewcode-block" id="SerialDevice"><a class="viewcode-back" href="../../pyad2.html#pyad2.devices.SerialDevice">[docs]</a><span class="k">class</span> <span class="nc">SerialDevice</span><span class="p">(</span><span class="n">Device</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | <span class="sd">"""</span> | ||||
<span class="sd"> AD2USB or AD2SERIAL device exposed with the pyserial interface.</span> | <span class="sd"> AD2USB or AD2SERIAL device exposed with the pyserial interface.</span> | ||||
<span class="sd"> """</span> | <span class="sd"> """</span> | ||||
<span class="c"># Constants</span> | <span class="c"># Constants</span> | ||||
<span class="n">BAUDRATE</span> <span class="o">=</span> <span class="mi">19200</span> | <span class="n">BAUDRATE</span> <span class="o">=</span> <span class="mi">19200</span> | ||||
<span class="sd">"""Default baudrate for Serial devices."""</span> | |||||
<span class="nd">@staticmethod</span> | <span class="nd">@staticmethod</span> | ||||
<div class="viewcode-block" id="SerialDevice.find_all"><a class="viewcode-back" href="../../pyad2usb.html#pyad2usb.devices.SerialDevice.find_all">[docs]</a> <span class="k">def</span> <span class="nf">find_all</span><span class="p">(</span><span class="n">pattern</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span> | |||||
<div class="viewcode-block" id="SerialDevice.find_all"><a class="viewcode-back" href="../../pyad2.html#pyad2.devices.SerialDevice.find_all">[docs]</a> <span class="k">def</span> <span class="nf">find_all</span><span class="p">(</span><span class="n">pattern</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | <span class="sd">"""</span> | ||||
<span class="sd"> Returns all serial ports present.</span> | <span class="sd"> Returns all serial ports present.</span> | ||||
<span class="sd"> :param pattern: Pattern to search for when retrieving serial ports.</span> | |||||
<span class="sd"> :type pattern: str</span> | |||||
<span class="sd"> :returns: list of devices</span> | |||||
<span class="sd"> :raises: util.CommError</span> | |||||
<span class="sd"> """</span> | <span class="sd"> """</span> | ||||
<span class="n">devices</span> <span class="o">=</span> <span class="p">[]</span> | <span class="n">devices</span> <span class="o">=</span> <span class="p">[]</span> | ||||
@@ -329,36 +466,63 @@ | |||||
<span class="n">devices</span> <span class="o">=</span> <span class="n">serial</span><span class="o">.</span><span class="n">tools</span><span class="o">.</span><span class="n">list_ports</span><span class="o">.</span><span class="n">grep</span><span class="p">(</span><span class="n">pattern</span><span class="p">)</span> | <span class="n">devices</span> <span class="o">=</span> <span class="n">serial</span><span class="o">.</span><span class="n">tools</span><span class="o">.</span><span class="n">list_ports</span><span class="o">.</span><span class="n">grep</span><span class="p">(</span><span class="n">pattern</span><span class="p">)</span> | ||||
<span class="k">else</span><span class="p">:</span> | <span class="k">else</span><span class="p">:</span> | ||||
<span class="n">devices</span> <span class="o">=</span> <span class="n">serial</span><span class="o">.</span><span class="n">tools</span><span class="o">.</span><span class="n">list_ports</span><span class="o">.</span><span class="n">comports</span><span class="p">()</span> | <span class="n">devices</span> <span class="o">=</span> <span class="n">serial</span><span class="o">.</span><span class="n">tools</span><span class="o">.</span><span class="n">list_ports</span><span class="o">.</span><span class="n">comports</span><span class="p">()</span> | ||||
<span class="k">except</span> <span class="ne">Exception</span><span class="p">,</span> <span class="n">err</span><span class="p">:</span> | |||||
<span class="k">raise</span> <span class="n">util</span><span class="o">.</span><span class="n">CommError</span><span class="p">(</span><span class="s">'Error enumerating AD2SERIAL devices: {0}'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">err</span><span class="p">)))</span> | |||||
<span class="k">except</span> <span class="n">SerialException</span><span class="p">,</span> <span class="n">err</span><span class="p">:</span> | |||||
<span class="k">raise</span> <span class="n">util</span><span class="o">.</span><span class="n">CommError</span><span class="p">(</span><span class="s">'Error enumerating serial devices: {0}'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">err</span><span class="p">)),</span> <span class="n">err</span><span class="p">)</span> | |||||
<span class="k">return</span> <span class="n">devices</span> | <span class="k">return</span> <span class="n">devices</span> | ||||
</div> | |||||
<span class="nd">@property</span> | |||||
<span class="k">def</span> <span class="nf">interface</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Retrieves the interface used to connect to the device.</span> | |||||
<span class="sd"> :returns: the interface used to connect to the device.</span> | |||||
<span class="sd"> """</span> | |||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_port</span> | |||||
<span class="nd">@interface.setter</span> | |||||
<div class="viewcode-block" id="SerialDevice.interface"><a class="viewcode-back" href="../../pyad2.html#pyad2.devices.SerialDevice.interface">[docs]</a> <span class="k">def</span> <span class="nf">interface</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Sets the interface used to connect to the device.</span> | |||||
<span class="sd"> :param value: The name of the serial device.</span> | |||||
<span class="sd"> :type value: string</span> | |||||
<span class="sd"> """</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_port</span> <span class="o">=</span> <span class="n">value</span> | |||||
</div> | </div> | ||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">interface</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span> | <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">interface</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span> | ||||
<span class="sd">"""</span> | <span class="sd">"""</span> | ||||
<span class="sd"> Constructor</span> | <span class="sd"> Constructor</span> | ||||
<span class="sd"> :param interface: The device to open.</span> | |||||
<span class="sd"> :type interface: str</span> | |||||
<span class="sd"> """</span> | <span class="sd"> """</span> | ||||
<span class="n">Device</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> | <span class="n">Device</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">_interface</span> <span class="o">=</span> <span class="n">interface</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_port</span> <span class="o">=</span> <span class="n">interface</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_id</span> <span class="o">=</span> <span class="n">interface</span> | <span class="bp">self</span><span class="o">.</span><span class="n">_id</span> <span class="o">=</span> <span class="n">interface</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">_device</span> <span class="o">=</span> <span class="n">serial</span><span class="o">.</span><span class="n">Serial</span><span class="p">(</span><span class="n">timeout</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">writeTimeout</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span> <span class="c"># Timeout = non-blocking to match pyftdi.</span> | <span class="bp">self</span><span class="o">.</span><span class="n">_device</span> <span class="o">=</span> <span class="n">serial</span><span class="o">.</span><span class="n">Serial</span><span class="p">(</span><span class="n">timeout</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">writeTimeout</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span> <span class="c"># Timeout = non-blocking to match pyftdi.</span> | ||||
<div class="viewcode-block" id="SerialDevice.open"><a class="viewcode-back" href="../../pyad2usb.html#pyad2usb.devices.SerialDevice.open">[docs]</a> <span class="k">def</span> <span class="nf">open</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">baudrate</span><span class="o">=</span><span class="n">BAUDRATE</span><span class="p">,</span> <span class="n">interface</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">index</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">no_reader_thread</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span> | |||||
<div class="viewcode-block" id="SerialDevice.open"><a class="viewcode-back" href="../../pyad2.html#pyad2.devices.SerialDevice.open">[docs]</a> <span class="k">def</span> <span class="nf">open</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">baudrate</span><span class="o">=</span><span class="n">BAUDRATE</span><span class="p">,</span> <span class="n">no_reader_thread</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | <span class="sd">"""</span> | ||||
<span class="sd"> Opens the device.</span> | <span class="sd"> Opens the device.</span> | ||||
<span class="sd"> :param baudrate: The baudrate to use with the device.</span> | |||||
<span class="sd"> :type baudrate: int</span> | |||||
<span class="sd"> :param no_reader_thread: Whether or not to automatically start the reader thread.</span> | |||||
<span class="sd"> :type no_reader_thread: bool</span> | |||||
<span class="sd"> :raises: util.NoDeviceError</span> | |||||
<span class="sd"> """</span> | <span class="sd"> """</span> | ||||
<span class="c"># Set up the defaults</span> | <span class="c"># Set up the defaults</span> | ||||
<span class="k">if</span> <span class="n">baudrate</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> | <span class="k">if</span> <span class="n">baudrate</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> | ||||
<span class="n">baudrate</span> <span class="o">=</span> <span class="n">SerialDevice</span><span class="o">.</span><span class="n">BAUDRATE</span> | <span class="n">baudrate</span> <span class="o">=</span> <span class="n">SerialDevice</span><span class="o">.</span><span class="n">BAUDRATE</span> | ||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_interface</span> <span class="ow">is</span> <span class="bp">None</span> <span class="ow">and</span> <span class="n">interface</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> | |||||
<span class="k">raise</span> <span class="n">util</span><span class="o">.</span><span class="n">NoDeviceError</span><span class="p">(</span><span class="s">'No AD2SERIAL device interface specified.'</span><span class="p">)</span> | |||||
<span class="k">if</span> <span class="n">interface</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_interface</span> <span class="o">=</span> <span class="n">interface</span> | |||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_port</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> | |||||
<span class="k">raise</span> <span class="n">util</span><span class="o">.</span><span class="n">NoDeviceError</span><span class="p">(</span><span class="s">'No device interface specified.'</span><span class="p">)</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_device</span><span class="o">.</span><span class="n">port</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_interface</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_device</span><span class="o">.</span><span class="n">port</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_port</span> | |||||
<span class="c"># Open the device and start up the reader thread.</span> | <span class="c"># Open the device and start up the reader thread.</span> | ||||
<span class="k">try</span><span class="p">:</span> | <span class="k">try</span><span class="p">:</span> | ||||
@@ -371,52 +535,74 @@ | |||||
<span class="c"># all issues with it.</span> | <span class="c"># all issues with it.</span> | ||||
<span class="k">except</span> <span class="p">(</span><span class="n">serial</span><span class="o">.</span><span class="n">SerialException</span><span class="p">,</span> <span class="ne">ValueError</span><span class="p">),</span> <span class="n">err</span><span class="p">:</span> | <span class="k">except</span> <span class="p">(</span><span class="n">serial</span><span class="o">.</span><span class="n">SerialException</span><span class="p">,</span> <span class="ne">ValueError</span><span class="p">),</span> <span class="n">err</span><span class="p">:</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">on_close</span><span class="p">()</span> | |||||
<span class="k">raise</span> <span class="n">util</span><span class="o">.</span><span class="n">NoDeviceError</span><span class="p">(</span><span class="s">'Error opening device on port {0}.'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_port</span><span class="p">),</span> <span class="n">err</span><span class="p">)</span> | |||||
<span class="k">raise</span> <span class="n">util</span><span class="o">.</span><span class="n">NoDeviceError</span><span class="p">(</span><span class="s">'Error opening AD2SERIAL device on port {0}.'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">interface</span><span class="p">))</span> | |||||
<span class="k">else</span><span class="p">:</span> | <span class="k">else</span><span class="p">:</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">_running</span> <span class="o">=</span> <span class="bp">True</span> | <span class="bp">self</span><span class="o">.</span><span class="n">_running</span> <span class="o">=</span> <span class="bp">True</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">on_open</span><span class="p">((</span><span class="s">'N/A'</span><span class="p">,</span> <span class="s">"AD2SERIAL"</span><span class="p">))</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">on_open</span><span class="p">()</span> | |||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">no_reader_thread</span><span class="p">:</span> | <span class="k">if</span> <span class="ow">not</span> <span class="n">no_reader_thread</span><span class="p">:</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">_read_thread</span><span class="o">.</span><span class="n">start</span><span class="p">()</span> | <span class="bp">self</span><span class="o">.</span><span class="n">_read_thread</span><span class="o">.</span><span class="n">start</span><span class="p">()</span> | ||||
</div> | </div> | ||||
<div class="viewcode-block" id="SerialDevice.close"><a class="viewcode-back" href="../../pyad2usb.html#pyad2usb.devices.SerialDevice.close">[docs]</a> <span class="k">def</span> <span class="nf">close</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | |||||
<div class="viewcode-block" id="SerialDevice.close"><a class="viewcode-back" href="../../pyad2.html#pyad2.devices.SerialDevice.close">[docs]</a> <span class="k">def</span> <span class="nf">close</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | <span class="sd">"""</span> | ||||
<span class="sd"> Closes the device.</span> | <span class="sd"> Closes the device.</span> | ||||
<span class="sd"> """</span> | <span class="sd"> """</span> | ||||
<span class="k">try</span><span class="p">:</span> | <span class="k">try</span><span class="p">:</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">_running</span> <span class="o">=</span> <span class="bp">False</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_read_thread</span><span class="o">.</span><span class="n">stop</span><span class="p">()</span> | |||||
<span class="n">Device</span><span class="o">.</span><span class="n">close</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_device</span><span class="o">.</span><span class="n">close</span><span class="p">()</span> | |||||
<span class="k">except</span> <span class="ne">Exception</span><span class="p">,</span> <span class="n">err</span><span class="p">:</span> | |||||
<span class="k">except</span><span class="p">:</span> | |||||
<span class="k">pass</span> | <span class="k">pass</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">on_close</span><span class="p">()</span> | |||||
</div> | </div> | ||||
<div class="viewcode-block" id="SerialDevice.write"><a class="viewcode-back" href="../../pyad2usb.html#pyad2usb.devices.SerialDevice.write">[docs]</a> <span class="k">def</span> <span class="nf">write</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span> | |||||
<div class="viewcode-block" id="SerialDevice.write"><a class="viewcode-back" href="../../pyad2.html#pyad2.devices.SerialDevice.write">[docs]</a> <span class="k">def</span> <span class="nf">write</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | <span class="sd">"""</span> | ||||
<span class="sd"> Writes data to the device.</span> | <span class="sd"> Writes data to the device.</span> | ||||
<span class="sd"> :param data: The data to write.</span> | |||||
<span class="sd"> :type data: str</span> | |||||
<span class="sd"> :raises: util.CommError</span> | |||||
<span class="sd"> """</span> | <span class="sd"> """</span> | ||||
<span class="k">try</span><span class="p">:</span> | <span class="k">try</span><span class="p">:</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">_device</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> | <span class="bp">self</span><span class="o">.</span><span class="n">_device</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> | ||||
<span class="k">except</span> <span class="n">serial</span><span class="o">.</span><span class="n">SerialTimeoutException</span><span class="p">,</span> <span class="n">err</span><span class="p">:</span> | <span class="k">except</span> <span class="n">serial</span><span class="o">.</span><span class="n">SerialTimeoutException</span><span class="p">,</span> <span class="n">err</span><span class="p">:</span> | ||||
<span class="k">pass</span> | <span class="k">pass</span> | ||||
<span class="k">except</span> <span class="n">serial</span><span class="o">.</span><span class="n">SerialException</span><span class="p">,</span> <span class="n">err</span><span class="p">:</span> | <span class="k">except</span> <span class="n">serial</span><span class="o">.</span><span class="n">SerialException</span><span class="p">,</span> <span class="n">err</span><span class="p">:</span> | ||||
<span class="k">raise</span> <span class="n">util</span><span class="o">.</span><span class="n">CommError</span><span class="p">(</span><span class="s">'Error writing to serial device.'</span><span class="p">)</span> | |||||
<span class="k">raise</span> <span class="n">util</span><span class="o">.</span><span class="n">CommError</span><span class="p">(</span><span class="s">'Error writing to device.'</span><span class="p">,</span> <span class="n">err</span><span class="p">)</span> | |||||
<span class="k">else</span><span class="p">:</span> | <span class="k">else</span><span class="p">:</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">on_write</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> | <span class="bp">self</span><span class="o">.</span><span class="n">on_write</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> | ||||
</div> | </div> | ||||
<div class="viewcode-block" id="SerialDevice.read"><a class="viewcode-back" href="../../pyad2usb.html#pyad2usb.devices.SerialDevice.read">[docs]</a> <span class="k">def</span> <span class="nf">read</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | |||||
<div class="viewcode-block" id="SerialDevice.read"><a class="viewcode-back" href="../../pyad2.html#pyad2.devices.SerialDevice.read">[docs]</a> <span class="k">def</span> <span class="nf">read</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | <span class="sd">"""</span> | ||||
<span class="sd"> Reads a single character from the device.</span> | <span class="sd"> Reads a single character from the device.</span> | ||||
<span class="sd"> :returns: The character read from the device.</span> | |||||
<span class="sd"> :raises: util.CommError</span> | |||||
<span class="sd"> """</span> | <span class="sd"> """</span> | ||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_device</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> | |||||
<span class="n">ret</span> <span class="o">=</span> <span class="bp">None</span> | |||||
<span class="k">try</span><span class="p">:</span> | |||||
<span class="n">ret</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_device</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> | |||||
<span class="k">except</span> <span class="n">serial</span><span class="o">.</span><span class="n">SerialException</span><span class="p">,</span> <span class="n">err</span><span class="p">:</span> | |||||
<span class="k">raise</span> <span class="n">util</span><span class="o">.</span><span class="n">CommError</span><span class="p">(</span><span class="s">'Error reading from device: {0}'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">err</span><span class="p">)),</span> <span class="n">err</span><span class="p">)</span> | |||||
<span class="k">return</span> <span class="n">ret</span> | |||||
</div> | </div> | ||||
<div class="viewcode-block" id="SerialDevice.read_line"><a class="viewcode-back" href="../../pyad2usb.html#pyad2usb.devices.SerialDevice.read_line">[docs]</a> <span class="k">def</span> <span class="nf">read_line</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">timeout</span><span class="o">=</span><span class="mf">0.0</span><span class="p">):</span> | |||||
<div class="viewcode-block" id="SerialDevice.read_line"><a class="viewcode-back" href="../../pyad2.html#pyad2.devices.SerialDevice.read_line">[docs]</a> <span class="k">def</span> <span class="nf">read_line</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">timeout</span><span class="o">=</span><span class="mf">0.0</span><span class="p">,</span> <span class="n">purge_buffer</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | <span class="sd">"""</span> | ||||
<span class="sd"> Reads a line from the device.</span> | <span class="sd"> Reads a line from the device.</span> | ||||
<span class="sd"> :param timeout: The read timeout.</span> | |||||
<span class="sd"> :type timeout: float</span> | |||||
<span class="sd"> :param purge_buffer: Indicates whether to purge the buffer prior to reading.</span> | |||||
<span class="sd"> :type purge_buffer: bool</span> | |||||
<span class="sd"> :returns: The line read.</span> | |||||
<span class="sd"> :raises: util.CommError, util.TimeoutError</span> | |||||
<span class="sd"> """</span> | <span class="sd"> """</span> | ||||
<span class="k">def</span> <span class="nf">timeout_event</span><span class="p">():</span> | <span class="k">def</span> <span class="nf">timeout_event</span><span class="p">():</span> | ||||
<span class="n">timeout_event</span><span class="o">.</span><span class="n">reading</span> <span class="o">=</span> <span class="bp">False</span> | <span class="n">timeout_event</span><span class="o">.</span><span class="n">reading</span> <span class="o">=</span> <span class="bp">False</span> | ||||
@@ -450,12 +636,12 @@ | |||||
<span class="k">else</span><span class="p">:</span> | <span class="k">else</span><span class="p">:</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> | <span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> | ||||
<span class="n">time</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mf">0.001</span><span class="p">)</span> | |||||
<span class="k">except</span> <span class="p">(</span><span class="ne">OSError</span><span class="p">,</span> <span class="n">serial</span><span class="o">.</span><span class="n">SerialException</span><span class="p">),</span> <span class="n">err</span><span class="p">:</span> | <span class="k">except</span> <span class="p">(</span><span class="ne">OSError</span><span class="p">,</span> <span class="n">serial</span><span class="o">.</span><span class="n">SerialException</span><span class="p">),</span> <span class="n">err</span><span class="p">:</span> | ||||
<span class="n">timer</span><span class="o">.</span><span class="n">cancel</span><span class="p">()</span> | |||||
<span class="k">if</span> <span class="n">timer</span><span class="p">:</span> | |||||
<span class="n">timer</span><span class="o">.</span><span class="n">cancel</span><span class="p">()</span> | |||||
<span class="k">raise</span> <span class="n">util</span><span class="o">.</span><span class="n">CommError</span><span class="p">(</span><span class="s">'Error reading from device: {0}'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">err</span><span class="p">)),</span> <span class="n">err</span><span class="p">)</span> | |||||
<span class="k">raise</span> <span class="n">util</span><span class="o">.</span><span class="n">CommError</span><span class="p">(</span><span class="s">'Error reading from AD2SERIAL device: {0}'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">err</span><span class="p">)))</span> | |||||
<span class="k">else</span><span class="p">:</span> | <span class="k">else</span><span class="p">:</span> | ||||
<span class="k">if</span> <span class="n">got_line</span><span class="p">:</span> | <span class="k">if</span> <span class="n">got_line</span><span class="p">:</span> | ||||
<span class="n">ret</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span> | <span class="n">ret</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span> | ||||
@@ -471,90 +657,229 @@ | |||||
<span class="k">return</span> <span class="n">ret</span> | <span class="k">return</span> <span class="n">ret</span> | ||||
</div></div> | </div></div> | ||||
<div class="viewcode-block" id="SocketDevice"><a class="viewcode-back" href="../../pyad2usb.html#pyad2usb.devices.SocketDevice">[docs]</a><span class="k">class</span> <span class="nc">SocketDevice</span><span class="p">(</span><span class="n">Device</span><span class="p">):</span> | |||||
<div class="viewcode-block" id="SocketDevice"><a class="viewcode-back" href="../../pyad2.html#pyad2.devices.SocketDevice">[docs]</a><span class="k">class</span> <span class="nc">SocketDevice</span><span class="p">(</span><span class="n">Device</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | <span class="sd">"""</span> | ||||
<span class="sd"> Device that supports communication with an AD2USB that is exposed via ser2sock or another</span> | <span class="sd"> Device that supports communication with an AD2USB that is exposed via ser2sock or another</span> | ||||
<span class="sd"> Serial to IP interface.</span> | <span class="sd"> Serial to IP interface.</span> | ||||
<span class="sd"> """</span> | <span class="sd"> """</span> | ||||
<span class="nd">@property</span> | |||||
<span class="k">def</span> <span class="nf">interface</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Retrieves the interface used to connect to the device.</span> | |||||
<span class="sd"> :returns: the interface used to connect to the device.</span> | |||||
<span class="sd"> """</span> | |||||
<span class="k">return</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_host</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_port</span><span class="p">)</span> | |||||
<span class="nd">@interface.setter</span> | |||||
<div class="viewcode-block" id="SocketDevice.interface"><a class="viewcode-back" href="../../pyad2.html#pyad2.devices.SocketDevice.interface">[docs]</a> <span class="k">def</span> <span class="nf">interface</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Sets the interface used to connect to the device.</span> | |||||
<span class="sd"> :param value: Tuple containing the device number and endpoint number to use.</span> | |||||
<span class="sd"> :type value: tuple</span> | |||||
<span class="sd"> """</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_host</span> <span class="o">=</span> <span class="n">value</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_port</span> <span class="o">=</span> <span class="n">value</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> | |||||
</div> | |||||
<span class="nd">@property</span> | |||||
<span class="k">def</span> <span class="nf">ssl</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Retrieves whether or not the device is using SSL.</span> | |||||
<span class="sd"> :returns: Whether or not the device is using SSL.</span> | |||||
<span class="sd"> """</span> | |||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_use_ssl</span> | |||||
<span class="nd">@ssl.setter</span> | |||||
<div class="viewcode-block" id="SocketDevice.ssl"><a class="viewcode-back" href="../../pyad2.html#pyad2.devices.SocketDevice.ssl">[docs]</a> <span class="k">def</span> <span class="nf">ssl</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Sets whether or not SSL communication is in use.</span> | |||||
<span class="sd"> :param value: Whether or not SSL communication is in use.</span> | |||||
<span class="sd"> :type value: bool</span> | |||||
<span class="sd"> """</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_use_ssl</span> <span class="o">=</span> <span class="n">value</span> | |||||
</div> | |||||
<span class="nd">@property</span> | |||||
<span class="k">def</span> <span class="nf">ssl_certificate</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Retrieves the SSL client certificate path used for authentication.</span> | |||||
<span class="sd"> :returns: The certificate path</span> | |||||
<span class="sd"> """</span> | |||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ssl_certificate</span> | |||||
<span class="nd">@ssl_certificate.setter</span> | |||||
<div class="viewcode-block" id="SocketDevice.ssl_certificate"><a class="viewcode-back" href="../../pyad2.html#pyad2.devices.SocketDevice.ssl_certificate">[docs]</a> <span class="k">def</span> <span class="nf">ssl_certificate</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Sets the SSL client certificate to use for authentication.</span> | |||||
<span class="sd"> :param value: The path to the SSL certificate.</span> | |||||
<span class="sd"> :type value: str</span> | |||||
<span class="sd"> """</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_ssl_certificate</span> <span class="o">=</span> <span class="n">value</span> | |||||
</div> | |||||
<span class="nd">@property</span> | |||||
<span class="k">def</span> <span class="nf">ssl_key</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Retrieves the SSL client certificate key used for authentication.</span> | |||||
<span class="sd"> :returns: The key path</span> | |||||
<span class="sd"> """</span> | |||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ssl_key</span> | |||||
<span class="nd">@ssl_key.setter</span> | |||||
<div class="viewcode-block" id="SocketDevice.ssl_key"><a class="viewcode-back" href="../../pyad2.html#pyad2.devices.SocketDevice.ssl_key">[docs]</a> <span class="k">def</span> <span class="nf">ssl_key</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Sets the SSL client certificate key to use for authentication.</span> | |||||
<span class="sd"> :param value: The path to the SSL key.</span> | |||||
<span class="sd"> :type value: str</span> | |||||
<span class="sd"> """</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_ssl_key</span> <span class="o">=</span> <span class="n">value</span> | |||||
</div> | |||||
<span class="nd">@property</span> | |||||
<span class="k">def</span> <span class="nf">ssl_ca</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Retrieves the SSL Certificate Authority certificate used for authentication.</span> | |||||
<span class="sd"> :returns: The CA path</span> | |||||
<span class="sd"> """</span> | |||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ssl_ca</span> | |||||
<span class="nd">@ssl_ca.setter</span> | |||||
<div class="viewcode-block" id="SocketDevice.ssl_ca"><a class="viewcode-back" href="../../pyad2.html#pyad2.devices.SocketDevice.ssl_ca">[docs]</a> <span class="k">def</span> <span class="nf">ssl_ca</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Sets the SSL Certificate Authority certificate used for authentication.</span> | |||||
<span class="sd"> :param value: The path to the SSL CA certificate.</span> | |||||
<span class="sd"> :type value: str</span> | |||||
<span class="sd"> """</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_ssl_ca</span> <span class="o">=</span> <span class="n">value</span> | |||||
</div> | |||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">interface</span><span class="o">=</span><span class="p">(</span><span class="s">"localhost"</span><span class="p">,</span> <span class="mi">10000</span><span class="p">)):</span> | <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">interface</span><span class="o">=</span><span class="p">(</span><span class="s">"localhost"</span><span class="p">,</span> <span class="mi">10000</span><span class="p">)):</span> | ||||
<span class="sd">"""</span> | <span class="sd">"""</span> | ||||
<span class="sd"> Constructor</span> | <span class="sd"> Constructor</span> | ||||
<span class="sd"> :param interface: Tuple containing the hostname and port of our target.</span> | |||||
<span class="sd"> :type interface: tuple</span> | |||||
<span class="sd"> """</span> | <span class="sd"> """</span> | ||||
<span class="n">Device</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> | <span class="n">Device</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">_interface</span> <span class="o">=</span> <span class="n">interface</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_host</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_port</span> <span class="o">=</span> <span class="n">interface</span> | <span class="bp">self</span><span class="o">.</span><span class="n">_host</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_port</span> <span class="o">=</span> <span class="n">interface</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">_use_ssl</span> <span class="o">=</span> <span class="bp">False</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_ssl_certificate</span> <span class="o">=</span> <span class="bp">None</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_ssl_key</span> <span class="o">=</span> <span class="bp">None</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_ssl_ca</span> <span class="o">=</span> <span class="bp">None</span> | |||||
<div class="viewcode-block" id="SocketDevice.open"><a class="viewcode-back" href="../../pyad2usb.html#pyad2usb.devices.SocketDevice.open">[docs]</a> <span class="k">def</span> <span class="nf">open</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">baudrate</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">interface</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">index</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">no_reader_thread</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span> | |||||
<div class="viewcode-block" id="SocketDevice.open"><a class="viewcode-back" href="../../pyad2.html#pyad2.devices.SocketDevice.open">[docs]</a> <span class="k">def</span> <span class="nf">open</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">baudrate</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">no_reader_thread</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | <span class="sd">"""</span> | ||||
<span class="sd"> Opens the device.</span> | <span class="sd"> Opens the device.</span> | ||||
<span class="sd"> :param baudrate: The baudrate to use</span> | |||||
<span class="sd"> :type baudrate: int</span> | |||||
<span class="sd"> :param no_reader_thread: Whether or not to automatically open the reader thread.</span> | |||||
<span class="sd"> :type no_reader_thread: bool</span> | |||||
<span class="sd"> :raises: util.NoDeviceError, util.CommError</span> | |||||
<span class="sd"> """</span> | <span class="sd"> """</span> | ||||
<span class="k">if</span> <span class="n">interface</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_interface</span> <span class="o">=</span> <span class="n">interface</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_host</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_port</span> <span class="o">=</span> <span class="n">interface</span> | |||||
<span class="k">try</span><span class="p">:</span> | <span class="k">try</span><span class="p">:</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">_device</span> <span class="o">=</span> <span class="n">socket</span><span class="o">.</span><span class="n">socket</span><span class="p">(</span><span class="n">socket</span><span class="o">.</span><span class="n">AF_INET</span><span class="p">,</span> <span class="n">socket</span><span class="o">.</span><span class="n">SOCK_STREAM</span><span class="p">)</span> | <span class="bp">self</span><span class="o">.</span><span class="n">_device</span> <span class="o">=</span> <span class="n">socket</span><span class="o">.</span><span class="n">socket</span><span class="p">(</span><span class="n">socket</span><span class="o">.</span><span class="n">AF_INET</span><span class="p">,</span> <span class="n">socket</span><span class="o">.</span><span class="n">SOCK_STREAM</span><span class="p">)</span> | ||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_use_ssl</span><span class="p">:</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_init_ssl</span><span class="p">()</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_device</span><span class="o">.</span><span class="n">connect</span><span class="p">((</span><span class="bp">self</span><span class="o">.</span><span class="n">_host</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_port</span><span class="p">))</span> | <span class="bp">self</span><span class="o">.</span><span class="n">_device</span><span class="o">.</span><span class="n">connect</span><span class="p">((</span><span class="bp">self</span><span class="o">.</span><span class="n">_host</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_port</span><span class="p">))</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">_id</span> <span class="o">=</span> <span class="s">'{0}:{1}'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_host</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_port</span><span class="p">)</span> | <span class="bp">self</span><span class="o">.</span><span class="n">_id</span> <span class="o">=</span> <span class="s">'{0}:{1}'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_host</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_port</span><span class="p">)</span> | ||||
<span class="k">except</span> <span class="n">socket</span><span class="o">.</span><span class="n">error</span><span class="p">,</span> <span class="n">err</span><span class="p">:</span> | <span class="k">except</span> <span class="n">socket</span><span class="o">.</span><span class="n">error</span><span class="p">,</span> <span class="n">err</span><span class="p">:</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">on_close</span><span class="p">()</span> | |||||
<span class="k">raise</span> <span class="n">util</span><span class="o">.</span><span class="n">NoDeviceError</span><span class="p">(</span><span class="s">'Error opening device at {0}:{1}'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_host</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_port</span><span class="p">),</span> <span class="n">err</span><span class="p">)</span> | |||||
<span class="k">raise</span> <span class="n">util</span><span class="o">.</span><span class="n">NoDeviceError</span><span class="p">(</span><span class="s">'Error opening AD2SOCKET device at {0}:{1}'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_host</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_port</span><span class="p">))</span> | |||||
<span class="k">else</span><span class="p">:</span> | <span class="k">else</span><span class="p">:</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">_running</span> <span class="o">=</span> <span class="bp">True</span> | <span class="bp">self</span><span class="o">.</span><span class="n">_running</span> <span class="o">=</span> <span class="bp">True</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">on_open</span><span class="p">((</span><span class="s">'N/A'</span><span class="p">,</span> <span class="s">"AD2SOCKET"</span><span class="p">))</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">on_open</span><span class="p">()</span> | |||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">no_reader_thread</span><span class="p">:</span> | <span class="k">if</span> <span class="ow">not</span> <span class="n">no_reader_thread</span><span class="p">:</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">_read_thread</span><span class="o">.</span><span class="n">start</span><span class="p">()</span> | <span class="bp">self</span><span class="o">.</span><span class="n">_read_thread</span><span class="o">.</span><span class="n">start</span><span class="p">()</span> | ||||
</div> | </div> | ||||
<div class="viewcode-block" id="SocketDevice.close"><a class="viewcode-back" href="../../pyad2usb.html#pyad2usb.devices.SocketDevice.close">[docs]</a> <span class="k">def</span> <span class="nf">close</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | |||||
<div class="viewcode-block" id="SocketDevice.close"><a class="viewcode-back" href="../../pyad2.html#pyad2.devices.SocketDevice.close">[docs]</a> <span class="k">def</span> <span class="nf">close</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | <span class="sd">"""</span> | ||||
<span class="sd"> Closes the device.</span> | <span class="sd"> Closes the device.</span> | ||||
<span class="sd"> """</span> | <span class="sd"> """</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">_running</span> <span class="o">=</span> <span class="bp">False</span> | |||||
<span class="k">try</span><span class="p">:</span> | <span class="k">try</span><span class="p">:</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">_read_thread</span><span class="o">.</span><span class="n">stop</span><span class="p">()</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_device</span><span class="o">.</span><span class="n">shutdown</span><span class="p">(</span><span class="n">socket</span><span class="o">.</span><span class="n">SHUT_RDWR</span><span class="p">)</span> <span class="c"># Make sure that it closes immediately.</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_device</span><span class="o">.</span><span class="n">close</span><span class="p">()</span> | |||||
<span class="k">except</span><span class="p">:</span> | |||||
<span class="k">pass</span> | |||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">ssl</span><span class="p">:</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_device</span><span class="o">.</span><span class="n">shutdown</span><span class="p">()</span> | |||||
<span class="k">else</span><span class="p">:</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_device</span><span class="o">.</span><span class="n">shutdown</span><span class="p">(</span><span class="n">socket</span><span class="o">.</span><span class="n">SHUT_RDWR</span><span class="p">)</span> <span class="c"># Make sure that it closes immediately.</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">on_close</span><span class="p">()</span> | |||||
<span class="n">Device</span><span class="o">.</span><span class="n">close</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> | |||||
<span class="k">except</span> <span class="ne">Exception</span><span class="p">,</span> <span class="n">ex</span><span class="p">:</span> | |||||
<span class="k">pass</span> | |||||
</div> | </div> | ||||
<div class="viewcode-block" id="SocketDevice.write"><a class="viewcode-back" href="../../pyad2usb.html#pyad2usb.devices.SocketDevice.write">[docs]</a> <span class="k">def</span> <span class="nf">write</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span> | |||||
<div class="viewcode-block" id="SocketDevice.write"><a class="viewcode-back" href="../../pyad2.html#pyad2.devices.SocketDevice.write">[docs]</a> <span class="k">def</span> <span class="nf">write</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | <span class="sd">"""</span> | ||||
<span class="sd"> Writes data to the device.</span> | <span class="sd"> Writes data to the device.</span> | ||||
<span class="sd"> :param data: The data to write.</span> | |||||
<span class="sd"> :type data: str</span> | |||||
<span class="sd"> :returns: The number of bytes sent.</span> | |||||
<span class="sd"> :raises: util.CommError</span> | |||||
<span class="sd"> """</span> | <span class="sd"> """</span> | ||||
<span class="n">data_sent</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_device</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> | |||||
<span class="n">data_sent</span> <span class="o">=</span> <span class="bp">None</span> | |||||
<span class="k">try</span><span class="p">:</span> | |||||
<span class="n">data_sent</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_device</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> | |||||
<span class="k">if</span> <span class="n">data_sent</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> | |||||
<span class="k">raise</span> <span class="n">util</span><span class="o">.</span><span class="n">CommError</span><span class="p">(</span><span class="s">'Error writing to device.'</span><span class="p">)</span> | |||||
<span class="k">if</span> <span class="n">data_sent</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> | |||||
<span class="k">raise</span> <span class="n">util</span><span class="o">.</span><span class="n">CommError</span><span class="p">(</span><span class="s">'Error while sending data.'</span><span class="p">)</span> | |||||
<span class="k">else</span><span class="p">:</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">on_write</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> | <span class="bp">self</span><span class="o">.</span><span class="n">on_write</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> | ||||
<span class="k">except</span> <span class="p">(</span><span class="n">SSL</span><span class="o">.</span><span class="n">Error</span><span class="p">,</span> <span class="n">socket</span><span class="o">.</span><span class="n">error</span><span class="p">),</span> <span class="n">err</span><span class="p">:</span> | |||||
<span class="k">raise</span> <span class="n">util</span><span class="o">.</span><span class="n">CommError</span><span class="p">(</span><span class="s">'Error writing to device.'</span><span class="p">,</span> <span class="n">err</span><span class="p">)</span> | |||||
<span class="k">return</span> <span class="n">data_sent</span> | <span class="k">return</span> <span class="n">data_sent</span> | ||||
</div> | </div> | ||||
<div class="viewcode-block" id="SocketDevice.read"><a class="viewcode-back" href="../../pyad2usb.html#pyad2usb.devices.SocketDevice.read">[docs]</a> <span class="k">def</span> <span class="nf">read</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | |||||
<div class="viewcode-block" id="SocketDevice.read"><a class="viewcode-back" href="../../pyad2.html#pyad2.devices.SocketDevice.read">[docs]</a> <span class="k">def</span> <span class="nf">read</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | <span class="sd">"""</span> | ||||
<span class="sd"> Reads a single character from the device.</span> | <span class="sd"> Reads a single character from the device.</span> | ||||
<span class="sd"> :returns: The character read from the device.</span> | |||||
<span class="sd"> :raises: util.CommError</span> | |||||
<span class="sd"> """</span> | <span class="sd"> """</span> | ||||
<span class="n">data</span> <span class="o">=</span> <span class="bp">None</span> | |||||
<span class="k">try</span><span class="p">:</span> | <span class="k">try</span><span class="p">:</span> | ||||
<span class="n">data</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_device</span><span class="o">.</span><span class="n">recv</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> | <span class="n">data</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_device</span><span class="o">.</span><span class="n">recv</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> | ||||
<span class="k">except</span> <span class="n">socket</span><span class="o">.</span><span class="n">error</span><span class="p">,</span> <span class="n">err</span><span class="p">:</span> | <span class="k">except</span> <span class="n">socket</span><span class="o">.</span><span class="n">error</span><span class="p">,</span> <span class="n">err</span><span class="p">:</span> | ||||
<span class="k">raise</span> <span class="n">util</span><span class="o">.</span><span class="n">CommError</span><span class="p">(</span><span class="s">'Error while reading from device: {0}'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">err</span><span class="p">)))</span> | |||||
<span class="k">raise</span> <span class="n">util</span><span class="o">.</span><span class="n">CommError</span><span class="p">(</span><span class="s">'Error while reading from device: {0}'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">err</span><span class="p">)),</span> <span class="n">err</span><span class="p">)</span> | |||||
<span class="k">return</span> <span class="n">data</span> | <span class="k">return</span> <span class="n">data</span> | ||||
</div> | </div> | ||||
<div class="viewcode-block" id="SocketDevice.read_line"><a class="viewcode-back" href="../../pyad2usb.html#pyad2usb.devices.SocketDevice.read_line">[docs]</a> <span class="k">def</span> <span class="nf">read_line</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">timeout</span><span class="o">=</span><span class="mf">0.0</span><span class="p">):</span> | |||||
<div class="viewcode-block" id="SocketDevice.read_line"><a class="viewcode-back" href="../../pyad2.html#pyad2.devices.SocketDevice.read_line">[docs]</a> <span class="k">def</span> <span class="nf">read_line</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">timeout</span><span class="o">=</span><span class="mf">0.0</span><span class="p">,</span> <span class="n">purge_buffer</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | <span class="sd">"""</span> | ||||
<span class="sd"> Reads a line from the device.</span> | <span class="sd"> Reads a line from the device.</span> | ||||
<span class="sd"> :param timeout: The read timeout.</span> | |||||
<span class="sd"> :type timeout: float</span> | |||||
<span class="sd"> :param purge_buffer: Indicates whether to purge the buffer prior to reading.</span> | |||||
<span class="sd"> :type purge_buffer: bool</span> | |||||
<span class="sd"> :returns: The line read from the device.</span> | |||||
<span class="sd"> :raises: util.CommError, util.TimeoutError</span> | |||||
<span class="sd"> """</span> | <span class="sd"> """</span> | ||||
<span class="k">if</span> <span class="n">purge_buffer</span><span class="p">:</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span> <span class="o">=</span> <span class="s">''</span> | |||||
<span class="k">def</span> <span class="nf">timeout_event</span><span class="p">():</span> | <span class="k">def</span> <span class="nf">timeout_event</span><span class="p">():</span> | ||||
<span class="n">timeout_event</span><span class="o">.</span><span class="n">reading</span> <span class="o">=</span> <span class="bp">False</span> | <span class="n">timeout_event</span><span class="o">.</span><span class="n">reading</span> <span class="o">=</span> <span class="bp">False</span> | ||||
@@ -587,12 +912,12 @@ | |||||
<span class="k">else</span><span class="p">:</span> | <span class="k">else</span><span class="p">:</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> | <span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> | ||||
<span class="n">time</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mf">0.001</span><span class="p">)</span> | |||||
<span class="k">except</span> <span class="n">socket</span><span class="o">.</span><span class="n">error</span><span class="p">,</span> <span class="n">err</span><span class="p">:</span> | <span class="k">except</span> <span class="n">socket</span><span class="o">.</span><span class="n">error</span><span class="p">,</span> <span class="n">err</span><span class="p">:</span> | ||||
<span class="n">timer</span><span class="o">.</span><span class="n">cancel</span><span class="p">()</span> | |||||
<span class="k">if</span> <span class="n">timer</span><span class="p">:</span> | |||||
<span class="n">timer</span><span class="o">.</span><span class="n">cancel</span><span class="p">()</span> | |||||
<span class="k">raise</span> <span class="n">util</span><span class="o">.</span><span class="n">CommError</span><span class="p">(</span><span class="s">'Error reading from device: {0}'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">err</span><span class="p">)),</span> <span class="n">err</span><span class="p">)</span> | |||||
<span class="k">raise</span> <span class="n">util</span><span class="o">.</span><span class="n">CommError</span><span class="p">(</span><span class="s">'Error reading from Socket device: {0}'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">err</span><span class="p">)))</span> | |||||
<span class="k">else</span><span class="p">:</span> | <span class="k">else</span><span class="p">:</span> | ||||
<span class="k">if</span> <span class="n">got_line</span><span class="p">:</span> | <span class="k">if</span> <span class="n">got_line</span><span class="p">:</span> | ||||
<span class="n">ret</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span> | <span class="n">ret</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span> | ||||
@@ -606,7 +931,38 @@ | |||||
<span class="k">else</span><span class="p">:</span> | <span class="k">else</span><span class="p">:</span> | ||||
<span class="k">raise</span> <span class="n">util</span><span class="o">.</span><span class="n">TimeoutError</span><span class="p">(</span><span class="s">'Timeout while waiting for line terminator.'</span><span class="p">)</span> | <span class="k">raise</span> <span class="n">util</span><span class="o">.</span><span class="n">TimeoutError</span><span class="p">(</span><span class="s">'Timeout while waiting for line terminator.'</span><span class="p">)</span> | ||||
<span class="k">return</span> <span class="n">ret</span></div></div> | |||||
<span class="k">return</span> <span class="n">ret</span> | |||||
</div> | |||||
<span class="k">def</span> <span class="nf">_init_ssl</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | |||||
<span class="k">try</span><span class="p">:</span> | |||||
<span class="n">ctx</span> <span class="o">=</span> <span class="n">SSL</span><span class="o">.</span><span class="n">Context</span><span class="p">(</span><span class="n">SSL</span><span class="o">.</span><span class="n">TLSv1_METHOD</span><span class="p">)</span> | |||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl_key</span><span class="p">,</span> <span class="n">crypto</span><span class="o">.</span><span class="n">PKey</span><span class="p">):</span> | |||||
<span class="n">ctx</span><span class="o">.</span><span class="n">use_privatekey</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl_key</span><span class="p">)</span> | |||||
<span class="k">else</span><span class="p">:</span> | |||||
<span class="n">ctx</span><span class="o">.</span><span class="n">use_privatekey_file</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl_key</span><span class="p">)</span> | |||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl_certificate</span><span class="p">,</span> <span class="n">crypto</span><span class="o">.</span><span class="n">X509</span><span class="p">):</span> | |||||
<span class="n">ctx</span><span class="o">.</span><span class="n">use_certificate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl_certificate</span><span class="p">)</span> | |||||
<span class="k">else</span><span class="p">:</span> | |||||
<span class="n">ctx</span><span class="o">.</span><span class="n">use_certificate_file</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl_certificate</span><span class="p">)</span> | |||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl_ca</span><span class="p">,</span> <span class="n">crypto</span><span class="o">.</span><span class="n">X509</span><span class="p">):</span> | |||||
<span class="n">store</span> <span class="o">=</span> <span class="n">ctx</span><span class="o">.</span><span class="n">get_cert_store</span><span class="p">()</span> | |||||
<span class="n">store</span><span class="o">.</span><span class="n">add_cert</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl_ca</span><span class="p">)</span> | |||||
<span class="k">else</span><span class="p">:</span> | |||||
<span class="n">ctx</span><span class="o">.</span><span class="n">load_verify_locations</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl_ca</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span> | |||||
<span class="n">ctx</span><span class="o">.</span><span class="n">set_verify</span><span class="p">(</span><span class="n">SSL</span><span class="o">.</span><span class="n">VERIFY_PEER</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_verify_ssl_callback</span><span class="p">)</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_device</span> <span class="o">=</span> <span class="n">SSL</span><span class="o">.</span><span class="n">Connection</span><span class="p">(</span><span class="n">ctx</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_device</span><span class="p">)</span> | |||||
<span class="k">except</span> <span class="n">SSL</span><span class="o">.</span><span class="n">Error</span><span class="p">,</span> <span class="n">err</span><span class="p">:</span> | |||||
<span class="k">raise</span> <span class="n">util</span><span class="o">.</span><span class="n">CommError</span><span class="p">(</span><span class="s">'Error setting up SSL connection.'</span><span class="p">,</span> <span class="n">err</span><span class="p">)</span> | |||||
<span class="k">def</span> <span class="nf">_verify_ssl_callback</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">connection</span><span class="p">,</span> <span class="n">x509</span><span class="p">,</span> <span class="n">errnum</span><span class="p">,</span> <span class="n">errdepth</span><span class="p">,</span> <span class="n">ok</span><span class="p">):</span> | |||||
<span class="c">#print ok</span> | |||||
<span class="k">return</span> <span class="n">ok</span></div> | |||||
</pre></div> | </pre></div> | ||||
</div> | </div> | ||||
@@ -640,7 +996,7 @@ | |||||
<li class="right" > | <li class="right" > | ||||
<a href="../../py-modindex.html" title="Python Module Index" | <a href="../../py-modindex.html" title="Python Module Index" | ||||
>modules</a> |</li> | >modules</a> |</li> | ||||
<li><a href="../../index.html">pyad2usb documentation</a> »</li> | |||||
<li><a href="../../index.html">pyad2 documentation</a> »</li> | |||||
<li><a href="../index.html" >Module code</a> »</li> | <li><a href="../index.html" >Module code</a> »</li> | ||||
</ul> | </ul> | ||||
</div> | </div> |
@@ -6,7 +6,7 @@ | |||||
<head> | <head> | ||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> | <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> | ||||
<title>pyad2usb.event.event — pyad2usb documentation</title> | |||||
<title>pyad2.event.event — pyad2 documentation</title> | |||||
<link rel="stylesheet" href="../../../_static/default.css" type="text/css" /> | <link rel="stylesheet" href="../../../_static/default.css" type="text/css" /> | ||||
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" /> | <link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" /> | ||||
@@ -23,7 +23,7 @@ | |||||
<script type="text/javascript" src="../../../_static/jquery.js"></script> | <script type="text/javascript" src="../../../_static/jquery.js"></script> | ||||
<script type="text/javascript" src="../../../_static/underscore.js"></script> | <script type="text/javascript" src="../../../_static/underscore.js"></script> | ||||
<script type="text/javascript" src="../../../_static/doctools.js"></script> | <script type="text/javascript" src="../../../_static/doctools.js"></script> | ||||
<link rel="top" title="pyad2usb documentation" href="../../../index.html" /> | |||||
<link rel="top" title="pyad2 documentation" href="../../../index.html" /> | |||||
<link rel="up" title="Module code" href="../../index.html" /> | <link rel="up" title="Module code" href="../../index.html" /> | ||||
</head> | </head> | ||||
<body> | <body> | ||||
@@ -36,7 +36,7 @@ | |||||
<li class="right" > | <li class="right" > | ||||
<a href="../../../py-modindex.html" title="Python Module Index" | <a href="../../../py-modindex.html" title="Python Module Index" | ||||
>modules</a> |</li> | >modules</a> |</li> | ||||
<li><a href="../../../index.html">pyad2usb documentation</a> »</li> | |||||
<li><a href="../../../index.html">pyad2 documentation</a> »</li> | |||||
<li><a href="../../index.html" accesskey="U">Module code</a> »</li> | <li><a href="../../index.html" accesskey="U">Module code</a> »</li> | ||||
</ul> | </ul> | ||||
</div> | </div> | ||||
@@ -46,10 +46,10 @@ | |||||
<div class="bodywrapper"> | <div class="bodywrapper"> | ||||
<div class="body"> | <div class="body"> | ||||
<h1>Source code for pyad2usb.event.event</h1><div class="highlight"><pre> | |||||
<h1>Source code for pyad2.event.event</h1><div class="highlight"><pre> | |||||
<span class="c"># event.py (improved)</span> | <span class="c"># event.py (improved)</span> | ||||
<div class="viewcode-block" id="Event"><a class="viewcode-back" href="../../../pyad2usb.event.html#pyad2usb.event.event.Event">[docs]</a><span class="k">class</span> <span class="nc">Event</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span> | |||||
<div class="viewcode-block" id="Event"><a class="viewcode-back" href="../../../pyad2.event.html#pyad2.event.event.Event">[docs]</a><span class="k">class</span> <span class="nc">Event</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span> | |||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">doc</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span> | <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">doc</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">__doc__</span> <span class="o">=</span> <span class="n">doc</span> | <span class="bp">self</span><span class="o">.</span><span class="n">__doc__</span> <span class="o">=</span> <span class="n">doc</span> | ||||
@@ -63,7 +63,7 @@ | |||||
<span class="k">pass</span> | <span class="k">pass</span> | ||||
</div> | </div> | ||||
<div class="viewcode-block" id="EventHandler"><a class="viewcode-back" href="../../../pyad2usb.event.html#pyad2usb.event.event.EventHandler">[docs]</a><span class="k">class</span> <span class="nc">EventHandler</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span> | |||||
<div class="viewcode-block" id="EventHandler"><a class="viewcode-back" href="../../../pyad2.event.html#pyad2.event.event.EventHandler">[docs]</a><span class="k">class</span> <span class="nc">EventHandler</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span> | |||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">,</span> <span class="n">obj</span><span class="p">):</span> | <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">,</span> <span class="n">obj</span><span class="p">):</span> | ||||
@@ -80,7 +80,7 @@ | |||||
<span class="n">eventhandler</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">obj</span><span class="o">.</span><span class="n">__eventhandler__</span> <span class="o">=</span> <span class="p">{}</span> | <span class="n">eventhandler</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">obj</span><span class="o">.</span><span class="n">__eventhandler__</span> <span class="o">=</span> <span class="p">{}</span> | ||||
<span class="k">return</span> <span class="n">eventhandler</span><span class="o">.</span><span class="n">setdefault</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">event</span><span class="p">,</span> <span class="p">[])</span> | <span class="k">return</span> <span class="n">eventhandler</span><span class="o">.</span><span class="n">setdefault</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">event</span><span class="p">,</span> <span class="p">[])</span> | ||||
<div class="viewcode-block" id="EventHandler.add"><a class="viewcode-back" href="../../../pyad2usb.event.html#pyad2usb.event.event.EventHandler.add">[docs]</a> <span class="k">def</span> <span class="nf">add</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">func</span><span class="p">):</span> | |||||
<div class="viewcode-block" id="EventHandler.add"><a class="viewcode-back" href="../../../pyad2.event.html#pyad2.event.event.EventHandler.add">[docs]</a> <span class="k">def</span> <span class="nf">add</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">func</span><span class="p">):</span> | |||||
<span class="sd">"""Add new event handler function.</span> | <span class="sd">"""Add new event handler function.</span> | ||||
@@ -91,7 +91,7 @@ | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_getfunctionlist</span><span class="p">()</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">func</span><span class="p">)</span> | <span class="bp">self</span><span class="o">.</span><span class="n">_getfunctionlist</span><span class="p">()</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">func</span><span class="p">)</span> | ||||
<span class="k">return</span> <span class="bp">self</span> | <span class="k">return</span> <span class="bp">self</span> | ||||
</div> | </div> | ||||
<div class="viewcode-block" id="EventHandler.remove"><a class="viewcode-back" href="../../../pyad2usb.event.html#pyad2usb.event.event.EventHandler.remove">[docs]</a> <span class="k">def</span> <span class="nf">remove</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">func</span><span class="p">):</span> | |||||
<div class="viewcode-block" id="EventHandler.remove"><a class="viewcode-back" href="../../../pyad2.event.html#pyad2.event.event.EventHandler.remove">[docs]</a> <span class="k">def</span> <span class="nf">remove</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">func</span><span class="p">):</span> | |||||
<span class="sd">"""Remove existing event handler function.</span> | <span class="sd">"""Remove existing event handler function.</span> | ||||
@@ -101,7 +101,7 @@ | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_getfunctionlist</span><span class="p">()</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">func</span><span class="p">)</span> | <span class="bp">self</span><span class="o">.</span><span class="n">_getfunctionlist</span><span class="p">()</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">func</span><span class="p">)</span> | ||||
<span class="k">return</span> <span class="bp">self</span> | <span class="k">return</span> <span class="bp">self</span> | ||||
</div> | </div> | ||||
<div class="viewcode-block" id="EventHandler.fire"><a class="viewcode-back" href="../../../pyad2usb.event.html#pyad2usb.event.event.EventHandler.fire">[docs]</a> <span class="k">def</span> <span class="nf">fire</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">earg</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span> | |||||
<div class="viewcode-block" id="EventHandler.fire"><a class="viewcode-back" href="../../../pyad2.event.html#pyad2.event.event.EventHandler.fire">[docs]</a> <span class="k">def</span> <span class="nf">fire</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">earg</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span> | |||||
<span class="sd">"""Fire event and call all handler functions</span> | <span class="sd">"""Fire event and call all handler functions</span> | ||||
@@ -151,7 +151,7 @@ | |||||
<li class="right" > | <li class="right" > | ||||
<a href="../../../py-modindex.html" title="Python Module Index" | <a href="../../../py-modindex.html" title="Python Module Index" | ||||
>modules</a> |</li> | >modules</a> |</li> | ||||
<li><a href="../../../index.html">pyad2usb documentation</a> »</li> | |||||
<li><a href="../../../index.html">pyad2 documentation</a> »</li> | |||||
<li><a href="../../index.html" >Module code</a> »</li> | <li><a href="../../index.html" >Module code</a> »</li> | ||||
</ul> | </ul> | ||||
</div> | </div> |
@@ -6,7 +6,7 @@ | |||||
<head> | <head> | ||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> | <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> | ||||
<title>pyad2usb.messages — pyad2usb documentation</title> | |||||
<title>pyad2.messages — pyad2 documentation</title> | |||||
<link rel="stylesheet" href="../../_static/default.css" type="text/css" /> | <link rel="stylesheet" href="../../_static/default.css" type="text/css" /> | ||||
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> | <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> | ||||
@@ -23,7 +23,7 @@ | |||||
<script type="text/javascript" src="../../_static/jquery.js"></script> | <script type="text/javascript" src="../../_static/jquery.js"></script> | ||||
<script type="text/javascript" src="../../_static/underscore.js"></script> | <script type="text/javascript" src="../../_static/underscore.js"></script> | ||||
<script type="text/javascript" src="../../_static/doctools.js"></script> | <script type="text/javascript" src="../../_static/doctools.js"></script> | ||||
<link rel="top" title="pyad2usb documentation" href="../../index.html" /> | |||||
<link rel="top" title="pyad2 documentation" href="../../index.html" /> | |||||
<link rel="up" title="Module code" href="../index.html" /> | <link rel="up" title="Module code" href="../index.html" /> | ||||
</head> | </head> | ||||
<body> | <body> | ||||
@@ -36,7 +36,7 @@ | |||||
<li class="right" > | <li class="right" > | ||||
<a href="../../py-modindex.html" title="Python Module Index" | <a href="../../py-modindex.html" title="Python Module Index" | ||||
>modules</a> |</li> | >modules</a> |</li> | ||||
<li><a href="../../index.html">pyad2usb documentation</a> »</li> | |||||
<li><a href="../../index.html">pyad2 documentation</a> »</li> | |||||
<li><a href="../index.html" accesskey="U">Module code</a> »</li> | <li><a href="../index.html" accesskey="U">Module code</a> »</li> | ||||
</ul> | </ul> | ||||
</div> | </div> | ||||
@@ -46,14 +46,24 @@ | |||||
<div class="bodywrapper"> | <div class="bodywrapper"> | ||||
<div class="body"> | <div class="body"> | ||||
<h1>Source code for pyad2usb.messages</h1><div class="highlight"><pre> | |||||
<h1>Source code for pyad2.messages</h1><div class="highlight"><pre> | |||||
<span class="sd">"""</span> | <span class="sd">"""</span> | ||||
<span class="sd">Message representations received from the panel through the AD2USB.</span> | <span class="sd">Message representations received from the panel through the AD2USB.</span> | ||||
<span class="sd">.. moduleauthor:: Scott Petersen <scott@nutech.com></span> | |||||
<span class="sd">"""</span> | <span class="sd">"""</span> | ||||
<span class="kn">import</span> <span class="nn">re</span> | <span class="kn">import</span> <span class="nn">re</span> | ||||
<span class="kn">from</span> <span class="nn">.</span> <span class="kn">import</span> <span class="n">util</span> | |||||
<div class="viewcode-block" id="Message"><a class="viewcode-back" href="../../pyad2usb.html#pyad2usb.messages.Message">[docs]</a><span class="k">class</span> <span class="nc">Message</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span> | |||||
<div class="viewcode-block" id="BaseMessage"><a class="viewcode-back" href="../../pyad2.html#pyad2.messages.BaseMessage">[docs]</a><span class="k">class</span> <span class="nc">BaseMessage</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Base class for messages.</span> | |||||
<span class="sd"> """</span> | |||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">raw</span> <span class="o">=</span> <span class="bp">None</span> | |||||
</div> | |||||
<div class="viewcode-block" id="Message"><a class="viewcode-back" href="../../pyad2.html#pyad2.messages.Message">[docs]</a><span class="k">class</span> <span class="nc">Message</span><span class="p">(</span><span class="n">BaseMessage</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | <span class="sd">"""</span> | ||||
<span class="sd"> Represents a message from the alarm panel.</span> | <span class="sd"> Represents a message from the alarm panel.</span> | ||||
<span class="sd"> """</span> | <span class="sd"> """</span> | ||||
@@ -61,6 +71,9 @@ | |||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span> | <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span> | ||||
<span class="sd">"""</span> | <span class="sd">"""</span> | ||||
<span class="sd"> Constructor</span> | <span class="sd"> Constructor</span> | ||||
<span class="sd"> :param data: Message data to parse.</span> | |||||
<span class="sd"> :type data: str</span> | |||||
<span class="sd"> """</span> | <span class="sd"> """</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">ready</span> <span class="o">=</span> <span class="bp">False</span> | <span class="bp">self</span><span class="o">.</span><span class="n">ready</span> <span class="o">=</span> <span class="bp">False</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">armed_away</span> <span class="o">=</span> <span class="bp">False</span> | <span class="bp">self</span><span class="o">.</span><span class="n">armed_away</span> <span class="o">=</span> <span class="bp">False</span> | ||||
@@ -94,6 +107,11 @@ | |||||
<span class="k">def</span> <span class="nf">_parse_message</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span> | <span class="k">def</span> <span class="nf">_parse_message</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span> | ||||
<span class="sd">"""</span> | <span class="sd">"""</span> | ||||
<span class="sd"> Parse the message from the device.</span> | <span class="sd"> Parse the message from the device.</span> | ||||
<span class="sd"> :param data: The message data.</span> | |||||
<span class="sd"> :type data: str</span> | |||||
<span class="sd"> :raises: util.InvalidMessageError</span> | |||||
<span class="sd"> """</span> | <span class="sd"> """</span> | ||||
<span class="n">m</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_regex</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> | <span class="n">m</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_regex</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> | ||||
@@ -103,23 +121,25 @@ | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">bitfield</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">numeric_code</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">panel_data</span><span class="p">,</span> <span class="n">alpha</span> <span class="o">=</span> <span class="n">m</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">4</span><span class="p">)</span> | <span class="bp">self</span><span class="o">.</span><span class="n">bitfield</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">numeric_code</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">panel_data</span><span class="p">,</span> <span class="n">alpha</span> <span class="o">=</span> <span class="n">m</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">4</span><span class="p">)</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">mask</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">panel_data</span><span class="p">[</span><span class="mi">3</span><span class="p">:</span><span class="mi">3</span><span class="o">+</span><span class="mi">8</span><span class="p">],</span> <span class="mi">16</span><span class="p">)</span> | <span class="bp">self</span><span class="o">.</span><span class="n">mask</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">panel_data</span><span class="p">[</span><span class="mi">3</span><span class="p">:</span><span class="mi">3</span><span class="o">+</span><span class="mi">8</span><span class="p">],</span> <span class="mi">16</span><span class="p">)</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">data</span> <span class="o">=</span> <span class="n">data</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">ready</span> <span class="o">=</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">bitfield</span><span class="p">[</span><span class="mi">1</span><span class="p">:</span><span class="mi">2</span><span class="p">]</span> <span class="o">==</span> <span class="s">"0"</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">armed_away</span> <span class="o">=</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">bitfield</span><span class="p">[</span><span class="mi">2</span><span class="p">:</span><span class="mi">3</span><span class="p">]</span> <span class="o">==</span> <span class="s">"0"</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">armed_home</span> <span class="o">=</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">bitfield</span><span class="p">[</span><span class="mi">3</span><span class="p">:</span><span class="mi">4</span><span class="p">]</span> <span class="o">==</span> <span class="s">"0"</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">backlight_on</span> <span class="o">=</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">bitfield</span><span class="p">[</span><span class="mi">4</span><span class="p">:</span><span class="mi">5</span><span class="p">]</span> <span class="o">==</span> <span class="s">"0"</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">programming_mode</span> <span class="o">=</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">bitfield</span><span class="p">[</span><span class="mi">5</span><span class="p">:</span><span class="mi">6</span><span class="p">]</span> <span class="o">==</span> <span class="s">"0"</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">beeps</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">bitfield</span><span class="p">[</span><span class="mi">6</span><span class="p">:</span><span class="mi">7</span><span class="p">],</span> <span class="mi">16</span><span class="p">)</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">zone_bypassed</span> <span class="o">=</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">bitfield</span><span class="p">[</span><span class="mi">7</span><span class="p">:</span><span class="mi">8</span><span class="p">]</span> <span class="o">==</span> <span class="s">"0"</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">ac_power</span> <span class="o">=</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">bitfield</span><span class="p">[</span><span class="mi">8</span><span class="p">:</span><span class="mi">9</span><span class="p">]</span> <span class="o">==</span> <span class="s">"0"</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">chime_on</span> <span class="o">=</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">bitfield</span><span class="p">[</span><span class="mi">9</span><span class="p">:</span><span class="mi">10</span><span class="p">]</span> <span class="o">==</span> <span class="s">"0"</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">alarm_event_occurred</span> <span class="o">=</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">bitfield</span><span class="p">[</span><span class="mi">10</span><span class="p">:</span><span class="mi">11</span><span class="p">]</span> <span class="o">==</span> <span class="s">"0"</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">alarm_sounding</span> <span class="o">=</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">bitfield</span><span class="p">[</span><span class="mi">11</span><span class="p">:</span><span class="mi">12</span><span class="p">]</span> <span class="o">==</span> <span class="s">"0"</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">battery_low</span> <span class="o">=</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">bitfield</span><span class="p">[</span><span class="mi">12</span><span class="p">:</span><span class="mi">13</span><span class="p">]</span> <span class="o">==</span> <span class="s">"0"</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">entry_delay_off</span> <span class="o">=</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">bitfield</span><span class="p">[</span><span class="mi">13</span><span class="p">:</span><span class="mi">14</span><span class="p">]</span> <span class="o">==</span> <span class="s">"0"</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">fire_alarm</span> <span class="o">=</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">bitfield</span><span class="p">[</span><span class="mi">14</span><span class="p">:</span><span class="mi">15</span><span class="p">]</span> <span class="o">==</span> <span class="s">"0"</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">check_zone</span> <span class="o">=</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">bitfield</span><span class="p">[</span><span class="mi">15</span><span class="p">:</span><span class="mi">16</span><span class="p">]</span> <span class="o">==</span> <span class="s">"0"</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">perimeter_only</span> <span class="o">=</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">bitfield</span><span class="p">[</span><span class="mi">16</span><span class="p">:</span><span class="mi">17</span><span class="p">]</span> <span class="o">==</span> <span class="s">"0"</span> | |||||
<span class="n">is_bit_set</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">bit</span><span class="p">:</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">bitfield</span><span class="p">[</span><span class="n">bit</span><span class="p">]</span> <span class="o">==</span> <span class="s">"0"</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">raw</span> <span class="o">=</span> <span class="n">data</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">ready</span> <span class="o">=</span> <span class="n">is_bit_set</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">armed_away</span> <span class="o">=</span> <span class="n">is_bit_set</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">armed_home</span> <span class="o">=</span> <span class="n">is_bit_set</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">backlight_on</span> <span class="o">=</span> <span class="n">is_bit_set</span><span class="p">(</span><span class="mi">4</span><span class="p">)</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">programming_mode</span> <span class="o">=</span> <span class="n">is_bit_set</span><span class="p">(</span><span class="mi">5</span><span class="p">)</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">beeps</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">bitfield</span><span class="p">[</span><span class="mi">6</span><span class="p">],</span> <span class="mi">16</span><span class="p">)</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">zone_bypassed</span> <span class="o">=</span> <span class="n">is_bit_set</span><span class="p">(</span><span class="mi">7</span><span class="p">)</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">ac_power</span> <span class="o">=</span> <span class="n">is_bit_set</span><span class="p">(</span><span class="mi">8</span><span class="p">)</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">chime_on</span> <span class="o">=</span> <span class="n">is_bit_set</span><span class="p">(</span><span class="mi">9</span><span class="p">)</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">alarm_event_occurred</span> <span class="o">=</span> <span class="n">is_bit_set</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">alarm_sounding</span> <span class="o">=</span> <span class="n">is_bit_set</span><span class="p">(</span><span class="mi">11</span><span class="p">)</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">battery_low</span> <span class="o">=</span> <span class="n">is_bit_set</span><span class="p">(</span><span class="mi">12</span><span class="p">)</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">entry_delay_off</span> <span class="o">=</span> <span class="n">is_bit_set</span><span class="p">(</span><span class="mi">13</span><span class="p">)</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">fire_alarm</span> <span class="o">=</span> <span class="n">is_bit_set</span><span class="p">(</span><span class="mi">14</span><span class="p">)</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">check_zone</span> <span class="o">=</span> <span class="n">is_bit_set</span><span class="p">(</span><span class="mi">15</span><span class="p">)</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">perimeter_only</span> <span class="o">=</span> <span class="n">is_bit_set</span><span class="p">(</span><span class="mi">16</span><span class="p">)</span> | |||||
<span class="c"># bits 17-20 unused.</span> | <span class="c"># bits 17-20 unused.</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">text</span> <span class="o">=</span> <span class="n">alpha</span><span class="o">.</span><span class="n">strip</span><span class="p">(</span><span class="s">'"'</span><span class="p">)</span> | <span class="bp">self</span><span class="o">.</span><span class="n">text</span> <span class="o">=</span> <span class="n">alpha</span><span class="o">.</span><span class="n">strip</span><span class="p">(</span><span class="s">'"'</span><span class="p">)</span> | ||||
@@ -132,7 +152,7 @@ | |||||
<span class="sd"> """</span> | <span class="sd"> """</span> | ||||
<span class="k">return</span> <span class="s">'msg > {0:0<9} [{1}{2}{3}] -- ({4}) {5}'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">hex</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mask</span><span class="p">),</span> <span class="mi">1</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">ready</span> <span class="k">else</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">armed_away</span> <span class="k">else</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">armed_home</span> <span class="k">else</span> <span class="mi">0</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">numeric_code</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> | <span class="k">return</span> <span class="s">'msg > {0:0<9} [{1}{2}{3}] -- ({4}) {5}'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">hex</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mask</span><span class="p">),</span> <span class="mi">1</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">ready</span> <span class="k">else</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">armed_away</span> <span class="k">else</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">armed_home</span> <span class="k">else</span> <span class="mi">0</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">numeric_code</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> | ||||
</div> | </div> | ||||
<div class="viewcode-block" id="ExpanderMessage"><a class="viewcode-back" href="../../pyad2usb.html#pyad2usb.messages.ExpanderMessage">[docs]</a><span class="k">class</span> <span class="nc">ExpanderMessage</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span> | |||||
<div class="viewcode-block" id="ExpanderMessage"><a class="viewcode-back" href="../../pyad2.html#pyad2.messages.ExpanderMessage">[docs]</a><span class="k">class</span> <span class="nc">ExpanderMessage</span><span class="p">(</span><span class="n">BaseMessage</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | <span class="sd">"""</span> | ||||
<span class="sd"> Represents a message from a zone or relay expansion module.</span> | <span class="sd"> Represents a message from a zone or relay expansion module.</span> | ||||
<span class="sd"> """</span> | <span class="sd"> """</span> | ||||
@@ -143,6 +163,9 @@ | |||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span> | <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span> | ||||
<span class="sd">"""</span> | <span class="sd">"""</span> | ||||
<span class="sd"> Constructor</span> | <span class="sd"> Constructor</span> | ||||
<span class="sd"> :param data: The message data to parse.</span> | |||||
<span class="sd"> :type data: str</span> | |||||
<span class="sd"> """</span> | <span class="sd"> """</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">type</span> <span class="o">=</span> <span class="bp">None</span> | <span class="bp">self</span><span class="o">.</span><span class="n">type</span> <span class="o">=</span> <span class="bp">None</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">address</span> <span class="o">=</span> <span class="bp">None</span> | <span class="bp">self</span><span class="o">.</span><span class="n">address</span> <span class="o">=</span> <span class="bp">None</span> | ||||
@@ -168,21 +191,28 @@ | |||||
<span class="k">def</span> <span class="nf">_parse_message</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span> | <span class="k">def</span> <span class="nf">_parse_message</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span> | ||||
<span class="sd">"""</span> | <span class="sd">"""</span> | ||||
<span class="sd"> Parse the raw message from the device.</span> | <span class="sd"> Parse the raw message from the device.</span> | ||||
<span class="sd"> :param data: The message data</span> | |||||
<span class="sd"> :type data: str</span> | |||||
<span class="sd"> """</span> | <span class="sd"> """</span> | ||||
<span class="n">header</span><span class="p">,</span> <span class="n">values</span> <span class="o">=</span> <span class="n">data</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">':'</span><span class="p">)</span> | |||||
<span class="n">address</span><span class="p">,</span> <span class="n">channel</span><span class="p">,</span> <span class="n">value</span> <span class="o">=</span> <span class="n">values</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">','</span><span class="p">)</span> | |||||
<span class="k">try</span><span class="p">:</span> | |||||
<span class="n">header</span><span class="p">,</span> <span class="n">values</span> <span class="o">=</span> <span class="n">data</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">':'</span><span class="p">)</span> | |||||
<span class="n">address</span><span class="p">,</span> <span class="n">channel</span><span class="p">,</span> <span class="n">value</span> <span class="o">=</span> <span class="n">values</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">','</span><span class="p">)</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">raw</span> <span class="o">=</span> <span class="n">data</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">address</span> <span class="o">=</span> <span class="n">address</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">channel</span> <span class="o">=</span> <span class="n">channel</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">value</span> <span class="o">=</span> <span class="n">value</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">raw</span> <span class="o">=</span> <span class="n">data</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">address</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">address</span><span class="p">)</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">channel</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">channel</span><span class="p">)</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">value</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> | |||||
<span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span> | |||||
<span class="k">raise</span> <span class="n">util</span><span class="o">.</span><span class="n">InvalidMessageError</span><span class="p">(</span><span class="s">'Received invalid message: {0}'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">data</span><span class="p">))</span> | |||||
<span class="k">if</span> <span class="n">header</span> <span class="o">==</span> <span class="s">'!EXP'</span><span class="p">:</span> | <span class="k">if</span> <span class="n">header</span> <span class="o">==</span> <span class="s">'!EXP'</span><span class="p">:</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">type</span> <span class="o">=</span> <span class="n">ExpanderMessage</span><span class="o">.</span><span class="n">ZONE</span> | <span class="bp">self</span><span class="o">.</span><span class="n">type</span> <span class="o">=</span> <span class="n">ExpanderMessage</span><span class="o">.</span><span class="n">ZONE</span> | ||||
<span class="k">elif</span> <span class="n">header</span> <span class="o">==</span> <span class="s">'!REL'</span><span class="p">:</span> | <span class="k">elif</span> <span class="n">header</span> <span class="o">==</span> <span class="s">'!REL'</span><span class="p">:</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">type</span> <span class="o">=</span> <span class="n">ExpanderMessage</span><span class="o">.</span><span class="n">RELAY</span> | <span class="bp">self</span><span class="o">.</span><span class="n">type</span> <span class="o">=</span> <span class="n">ExpanderMessage</span><span class="o">.</span><span class="n">RELAY</span> | ||||
</div> | </div> | ||||
<div class="viewcode-block" id="RFMessage"><a class="viewcode-back" href="../../pyad2usb.html#pyad2usb.messages.RFMessage">[docs]</a><span class="k">class</span> <span class="nc">RFMessage</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span> | |||||
<div class="viewcode-block" id="RFMessage"><a class="viewcode-back" href="../../pyad2.html#pyad2.messages.RFMessage">[docs]</a><span class="k">class</span> <span class="nc">RFMessage</span><span class="p">(</span><span class="n">BaseMessage</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | <span class="sd">"""</span> | ||||
<span class="sd"> Represents a message from an RF receiver.</span> | <span class="sd"> Represents a message from an RF receiver.</span> | ||||
<span class="sd"> """</span> | <span class="sd"> """</span> | ||||
@@ -190,10 +220,16 @@ | |||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span> | <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span> | ||||
<span class="sd">"""</span> | <span class="sd">"""</span> | ||||
<span class="sd"> Constructor</span> | <span class="sd"> Constructor</span> | ||||
<span class="sd"> :param data: The message data to parse</span> | |||||
<span class="sd"> :type data: str</span> | |||||
<span class="sd"> """</span> | <span class="sd"> """</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">raw</span> <span class="o">=</span> <span class="bp">None</span> | <span class="bp">self</span><span class="o">.</span><span class="n">raw</span> <span class="o">=</span> <span class="bp">None</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">serial_number</span> <span class="o">=</span> <span class="bp">None</span> | <span class="bp">self</span><span class="o">.</span><span class="n">serial_number</span> <span class="o">=</span> <span class="bp">None</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">value</span> <span class="o">=</span> <span class="bp">None</span> | <span class="bp">self</span><span class="o">.</span><span class="n">value</span> <span class="o">=</span> <span class="bp">None</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">battery</span> <span class="o">=</span> <span class="bp">None</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">supervision</span> <span class="o">=</span> <span class="bp">None</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">loop</span> <span class="o">=</span> <span class="p">{}</span> | |||||
<span class="k">if</span> <span class="n">data</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span> | <span class="k">if</span> <span class="n">data</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">_parse_message</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> | <span class="bp">self</span><span class="o">.</span><span class="n">_parse_message</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> | ||||
@@ -202,18 +238,38 @@ | |||||
<span class="sd">"""</span> | <span class="sd">"""</span> | ||||
<span class="sd"> String conversion operator.</span> | <span class="sd"> String conversion operator.</span> | ||||
<span class="sd"> """</span> | <span class="sd"> """</span> | ||||
<span class="k">return</span> <span class="s">'rf > {0}: {1}'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">serial_number</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">)</span> | |||||
<span class="k">return</span> <span class="s">'rf > {0}: {1:x}'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">serial_number</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">)</span> | |||||
<span class="k">def</span> <span class="nf">_parse_message</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span> | <span class="k">def</span> <span class="nf">_parse_message</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span> | ||||
<span class="sd">"""</span> | <span class="sd">"""</span> | ||||
<span class="sd"> Parses the raw message from the device.</span> | <span class="sd"> Parses the raw message from the device.</span> | ||||
<span class="sd"> :param data: The message data.</span> | |||||
<span class="sd"> :type data: str</span> | |||||
<span class="sd"> """</span> | <span class="sd"> """</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">raw</span> <span class="o">=</span> <span class="n">data</span> | |||||
<span class="k">try</span><span class="p">:</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">raw</span> <span class="o">=</span> <span class="n">data</span> | |||||
<span class="n">_</span><span class="p">,</span> <span class="n">values</span> <span class="o">=</span> <span class="n">data</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">':'</span><span class="p">)</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">serial_number</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">value</span> <span class="o">=</span> <span class="n">values</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">','</span><span class="p">)</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">value</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">,</span> <span class="mi">16</span><span class="p">)</span> | |||||
<span class="n">is_bit_set</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">b</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">value</span> <span class="o">&</span> <span class="p">(</span><span class="mi">1</span> <span class="o"><<</span> <span class="n">b</span><span class="p">)</span> <span class="o">></span> <span class="mi">0</span> | |||||
<span class="c"># Bit 1 = unknown</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">battery</span> <span class="o">=</span> <span class="n">is_bit_set</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">supervision</span> <span class="o">=</span> <span class="n">is_bit_set</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span> | |||||
<span class="c"># Bit 8 = unknown</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">loop</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">is_bit_set</span><span class="p">(</span><span class="mi">5</span><span class="p">)</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">loop</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">is_bit_set</span><span class="p">(</span><span class="mi">6</span><span class="p">)</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">loop</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="n">is_bit_set</span><span class="p">(</span><span class="mi">7</span><span class="p">)</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">loop</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="o">=</span> <span class="n">is_bit_set</span><span class="p">(</span><span class="mi">8</span><span class="p">)</span> | |||||
<span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span> | |||||
<span class="k">raise</span> <span class="n">util</span><span class="o">.</span><span class="n">InvalidMessageError</span><span class="p">(</span><span class="s">'Received invalid message: {0}'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">data</span><span class="p">))</span> | |||||
<span class="n">_</span><span class="p">,</span> <span class="n">values</span> <span class="o">=</span> <span class="n">data</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">':'</span><span class="p">)</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">serial_number</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">value</span> <span class="o">=</span> <span class="n">values</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">','</span><span class="p">)</span> | |||||
</div> | </div> | ||||
<div class="viewcode-block" id="LRRMessage"><a class="viewcode-back" href="../../pyad2usb.html#pyad2usb.messages.LRRMessage">[docs]</a><span class="k">class</span> <span class="nc">LRRMessage</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span> | |||||
<div class="viewcode-block" id="LRRMessage"><a class="viewcode-back" href="../../pyad2.html#pyad2.messages.LRRMessage">[docs]</a><span class="k">class</span> <span class="nc">LRRMessage</span><span class="p">(</span><span class="n">BaseMessage</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | <span class="sd">"""</span> | ||||
<span class="sd"> Represent a message from a Long Range Radio.</span> | <span class="sd"> Represent a message from a Long Range Radio.</span> | ||||
<span class="sd"> """</span> | <span class="sd"> """</span> | ||||
@@ -221,11 +277,14 @@ | |||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span> | <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span> | ||||
<span class="sd">"""</span> | <span class="sd">"""</span> | ||||
<span class="sd"> Constructor</span> | <span class="sd"> Constructor</span> | ||||
<span class="sd"> :param data: The message data to parse.</span> | |||||
<span class="sd"> :type data: str</span> | |||||
<span class="sd"> """</span> | <span class="sd"> """</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">raw</span> <span class="o">=</span> <span class="bp">None</span> | <span class="bp">self</span><span class="o">.</span><span class="n">raw</span> <span class="o">=</span> <span class="bp">None</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">_event_data</span> <span class="o">=</span> <span class="bp">None</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_partition</span> <span class="o">=</span> <span class="bp">None</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_event_type</span> <span class="o">=</span> <span class="bp">None</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">event_data</span> <span class="o">=</span> <span class="bp">None</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">partition</span> <span class="o">=</span> <span class="bp">None</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">event_type</span> <span class="o">=</span> <span class="bp">None</span> | |||||
<span class="k">if</span> <span class="n">data</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span> | <span class="k">if</span> <span class="n">data</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">_parse_message</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> | <span class="bp">self</span><span class="o">.</span><span class="n">_parse_message</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> | ||||
@@ -234,16 +293,23 @@ | |||||
<span class="sd">"""</span> | <span class="sd">"""</span> | ||||
<span class="sd"> String conversion operator.</span> | <span class="sd"> String conversion operator.</span> | ||||
<span class="sd"> """</span> | <span class="sd"> """</span> | ||||
<span class="k">return</span> <span class="s">'lrr > {0} @ {1} -- {2}'</span><span class="o">.</span><span class="n">format</span><span class="p">()</span> | |||||
<span class="k">return</span> <span class="s">'lrr > {0} @ {1} -- {2}'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">event_data</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">partition</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">event_type</span><span class="p">)</span> | |||||
<span class="k">def</span> <span class="nf">_parse_message</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span> | <span class="k">def</span> <span class="nf">_parse_message</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span> | ||||
<span class="sd">"""</span> | <span class="sd">"""</span> | ||||
<span class="sd"> Parses the raw message from the device.</span> | <span class="sd"> Parses the raw message from the device.</span> | ||||
<span class="sd"> :param data: The message data.</span> | |||||
<span class="sd"> :type data: str</span> | |||||
<span class="sd"> """</span> | <span class="sd"> """</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">raw</span> <span class="o">=</span> <span class="n">data</span> | |||||
<span class="k">try</span><span class="p">:</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">raw</span> <span class="o">=</span> <span class="n">data</span> | |||||
<span class="n">_</span><span class="p">,</span> <span class="n">values</span> <span class="o">=</span> <span class="n">data</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">':'</span><span class="p">)</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">event_data</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">partition</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">event_type</span> <span class="o">=</span> <span class="n">values</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">','</span><span class="p">)</span> | |||||
<span class="n">_</span><span class="p">,</span> <span class="n">values</span> <span class="o">=</span> <span class="n">data</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">':'</span><span class="p">)</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_event_data</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_partition</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_event_type</span> <span class="o">=</span> <span class="n">values</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">','</span><span class="p">)</span></div> | |||||
<span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span> | |||||
<span class="k">raise</span> <span class="n">util</span><span class="o">.</span><span class="n">InvalidMessageError</span><span class="p">(</span><span class="s">'Received invalid message: {0}'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">data</span><span class="p">))</span></div> | |||||
</pre></div> | </pre></div> | ||||
</div> | </div> | ||||
@@ -277,7 +343,7 @@ | |||||
<li class="right" > | <li class="right" > | ||||
<a href="../../py-modindex.html" title="Python Module Index" | <a href="../../py-modindex.html" title="Python Module Index" | ||||
>modules</a> |</li> | >modules</a> |</li> | ||||
<li><a href="../../index.html">pyad2usb documentation</a> »</li> | |||||
<li><a href="../../index.html">pyad2 documentation</a> »</li> | |||||
<li><a href="../index.html" >Module code</a> »</li> | <li><a href="../index.html" >Module code</a> »</li> | ||||
</ul> | </ul> | ||||
</div> | </div> |
@@ -6,7 +6,7 @@ | |||||
<head> | <head> | ||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> | <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> | ||||
<title>pyad2usb.util — pyad2usb documentation</title> | |||||
<title>pyad2.util — pyad2 documentation</title> | |||||
<link rel="stylesheet" href="../../_static/default.css" type="text/css" /> | <link rel="stylesheet" href="../../_static/default.css" type="text/css" /> | ||||
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> | <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> | ||||
@@ -23,7 +23,7 @@ | |||||
<script type="text/javascript" src="../../_static/jquery.js"></script> | <script type="text/javascript" src="../../_static/jquery.js"></script> | ||||
<script type="text/javascript" src="../../_static/underscore.js"></script> | <script type="text/javascript" src="../../_static/underscore.js"></script> | ||||
<script type="text/javascript" src="../../_static/doctools.js"></script> | <script type="text/javascript" src="../../_static/doctools.js"></script> | ||||
<link rel="top" title="pyad2usb documentation" href="../../index.html" /> | |||||
<link rel="top" title="pyad2 documentation" href="../../index.html" /> | |||||
<link rel="up" title="Module code" href="../index.html" /> | <link rel="up" title="Module code" href="../index.html" /> | ||||
</head> | </head> | ||||
<body> | <body> | ||||
@@ -36,7 +36,7 @@ | |||||
<li class="right" > | <li class="right" > | ||||
<a href="../../py-modindex.html" title="Python Module Index" | <a href="../../py-modindex.html" title="Python Module Index" | ||||
>modules</a> |</li> | >modules</a> |</li> | ||||
<li><a href="../../index.html">pyad2usb documentation</a> »</li> | |||||
<li><a href="../../index.html">pyad2 documentation</a> »</li> | |||||
<li><a href="../index.html" accesskey="U">Module code</a> »</li> | <li><a href="../index.html" accesskey="U">Module code</a> »</li> | ||||
</ul> | </ul> | ||||
</div> | </div> | ||||
@@ -46,41 +46,43 @@ | |||||
<div class="bodywrapper"> | <div class="bodywrapper"> | ||||
<div class="body"> | <div class="body"> | ||||
<h1>Source code for pyad2usb.util</h1><div class="highlight"><pre> | |||||
<h1>Source code for pyad2.util</h1><div class="highlight"><pre> | |||||
<span class="sd">"""</span> | <span class="sd">"""</span> | ||||
<span class="sd">Provides utility classes for the AD2USB devices.</span> | <span class="sd">Provides utility classes for the AD2USB devices.</span> | ||||
<span class="sd">.. moduleauthor:: Scott Petersen <scott@nutech.com></span> | |||||
<span class="sd">"""</span> | <span class="sd">"""</span> | ||||
<span class="kn">import</span> <span class="nn">ad2usb</span> | |||||
<span class="kn">import</span> <span class="nn">ad2</span> | |||||
<span class="kn">import</span> <span class="nn">time</span> | <span class="kn">import</span> <span class="nn">time</span> | ||||
<span class="kn">import</span> <span class="nn">traceback</span> | <span class="kn">import</span> <span class="nn">traceback</span> | ||||
<span class="kn">import</span> <span class="nn">threading</span> | <span class="kn">import</span> <span class="nn">threading</span> | ||||
<div class="viewcode-block" id="NoDeviceError"><a class="viewcode-back" href="../../pyad2usb.html#pyad2usb.util.NoDeviceError">[docs]</a><span class="k">class</span> <span class="nc">NoDeviceError</span><span class="p">(</span><span class="ne">Exception</span><span class="p">):</span> | |||||
<div class="viewcode-block" id="NoDeviceError"><a class="viewcode-back" href="../../pyad2.html#pyad2.util.NoDeviceError">[docs]</a><span class="k">class</span> <span class="nc">NoDeviceError</span><span class="p">(</span><span class="ne">Exception</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | <span class="sd">"""</span> | ||||
<span class="sd"> No devices found.</span> | <span class="sd"> No devices found.</span> | ||||
<span class="sd"> """</span> | <span class="sd"> """</span> | ||||
<span class="k">pass</span> | <span class="k">pass</span> | ||||
</div> | </div> | ||||
<div class="viewcode-block" id="CommError"><a class="viewcode-back" href="../../pyad2usb.html#pyad2usb.util.CommError">[docs]</a><span class="k">class</span> <span class="nc">CommError</span><span class="p">(</span><span class="ne">Exception</span><span class="p">):</span> | |||||
<div class="viewcode-block" id="CommError"><a class="viewcode-back" href="../../pyad2.html#pyad2.util.CommError">[docs]</a><span class="k">class</span> <span class="nc">CommError</span><span class="p">(</span><span class="ne">Exception</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | <span class="sd">"""</span> | ||||
<span class="sd"> There was an error communicating with the device.</span> | <span class="sd"> There was an error communicating with the device.</span> | ||||
<span class="sd"> """</span> | <span class="sd"> """</span> | ||||
<span class="k">pass</span> | <span class="k">pass</span> | ||||
</div> | </div> | ||||
<div class="viewcode-block" id="TimeoutError"><a class="viewcode-back" href="../../pyad2usb.html#pyad2usb.util.TimeoutError">[docs]</a><span class="k">class</span> <span class="nc">TimeoutError</span><span class="p">(</span><span class="ne">Exception</span><span class="p">):</span> | |||||
<div class="viewcode-block" id="TimeoutError"><a class="viewcode-back" href="../../pyad2.html#pyad2.util.TimeoutError">[docs]</a><span class="k">class</span> <span class="nc">TimeoutError</span><span class="p">(</span><span class="ne">Exception</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | <span class="sd">"""</span> | ||||
<span class="sd"> There was a timeout while trying to communicate with the device.</span> | <span class="sd"> There was a timeout while trying to communicate with the device.</span> | ||||
<span class="sd"> """</span> | <span class="sd"> """</span> | ||||
<span class="k">pass</span> | <span class="k">pass</span> | ||||
</div> | </div> | ||||
<div class="viewcode-block" id="InvalidMessageError"><a class="viewcode-back" href="../../pyad2usb.html#pyad2usb.util.InvalidMessageError">[docs]</a><span class="k">class</span> <span class="nc">InvalidMessageError</span><span class="p">(</span><span class="ne">Exception</span><span class="p">):</span> | |||||
<div class="viewcode-block" id="InvalidMessageError"><a class="viewcode-back" href="../../pyad2.html#pyad2.util.InvalidMessageError">[docs]</a><span class="k">class</span> <span class="nc">InvalidMessageError</span><span class="p">(</span><span class="ne">Exception</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | <span class="sd">"""</span> | ||||
<span class="sd"> The format of the panel message was invalid.</span> | <span class="sd"> The format of the panel message was invalid.</span> | ||||
<span class="sd"> """</span> | <span class="sd"> """</span> | ||||
<span class="k">pass</span> | <span class="k">pass</span> | ||||
</div> | </div> | ||||
<div class="viewcode-block" id="Firmware"><a class="viewcode-back" href="../../pyad2usb.html#pyad2usb.util.Firmware">[docs]</a><span class="k">class</span> <span class="nc">Firmware</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span> | |||||
<div class="viewcode-block" id="Firmware"><a class="viewcode-back" href="../../pyad2.html#pyad2.util.Firmware">[docs]</a><span class="k">class</span> <span class="nc">Firmware</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | <span class="sd">"""</span> | ||||
<span class="sd"> Represents firmware for the AD2USB/AD2SERIAL devices.</span> | <span class="sd"> Represents firmware for the AD2USB/AD2SERIAL devices.</span> | ||||
<span class="sd"> """</span> | <span class="sd"> """</span> | ||||
@@ -94,9 +96,16 @@ | |||||
<span class="n">STAGE_DONE</span> <span class="o">=</span> <span class="mi">5</span> | <span class="n">STAGE_DONE</span> <span class="o">=</span> <span class="mi">5</span> | ||||
<span class="nd">@staticmethod</span> | <span class="nd">@staticmethod</span> | ||||
<div class="viewcode-block" id="Firmware.upload"><a class="viewcode-back" href="../../pyad2usb.html#pyad2usb.util.Firmware.upload">[docs]</a> <span class="k">def</span> <span class="nf">upload</span><span class="p">(</span><span class="n">dev</span><span class="p">,</span> <span class="n">filename</span><span class="p">,</span> <span class="n">progress_callback</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span> | |||||
<div class="viewcode-block" id="Firmware.upload"><a class="viewcode-back" href="../../pyad2.html#pyad2.util.Firmware.upload">[docs]</a> <span class="k">def</span> <span class="nf">upload</span><span class="p">(</span><span class="n">dev</span><span class="p">,</span> <span class="n">filename</span><span class="p">,</span> <span class="n">progress_callback</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | <span class="sd">"""</span> | ||||
<span class="sd"> Uploads firmware to an AD2USB/AD2SERIAL device.</span> | <span class="sd"> Uploads firmware to an AD2USB/AD2SERIAL device.</span> | ||||
<span class="sd"> :param filename: The firmware filename</span> | |||||
<span class="sd"> :type filename: str</span> | |||||
<span class="sd"> :param progress_callback: Callback function used to report progress.</span> | |||||
<span class="sd"> :type progress_callback: function</span> | |||||
<span class="sd"> :raises: util.NoDeviceError, util.TimeoutError</span> | |||||
<span class="sd"> """</span> | <span class="sd"> """</span> | ||||
<span class="k">def</span> <span class="nf">do_upload</span><span class="p">():</span> | <span class="k">def</span> <span class="nf">do_upload</span><span class="p">():</span> | ||||
@@ -114,7 +123,7 @@ | |||||
<span class="k">if</span> <span class="n">progress_callback</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span> | <span class="k">if</span> <span class="n">progress_callback</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span> | ||||
<span class="n">progress_callback</span><span class="p">(</span><span class="n">Firmware</span><span class="o">.</span><span class="n">STAGE_UPLOADING</span><span class="p">)</span> | <span class="n">progress_callback</span><span class="p">(</span><span class="n">Firmware</span><span class="o">.</span><span class="n">STAGE_UPLOADING</span><span class="p">)</span> | ||||
<span class="n">time</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mf">0.05</span><span class="p">)</span> | |||||
<span class="n">time</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mf">0.0</span><span class="p">)</span> | |||||
<span class="k">def</span> <span class="nf">read_until</span><span class="p">(</span><span class="n">pattern</span><span class="p">,</span> <span class="n">timeout</span><span class="o">=</span><span class="mf">0.0</span><span class="p">):</span> | <span class="k">def</span> <span class="nf">read_until</span><span class="p">(</span><span class="n">pattern</span><span class="p">,</span> <span class="n">timeout</span><span class="o">=</span><span class="mf">0.0</span><span class="p">):</span> | ||||
<span class="sd">"""</span> | <span class="sd">"""</span> | ||||
@@ -171,10 +180,12 @@ | |||||
<span class="n">stage_callback</span><span class="p">(</span><span class="n">Firmware</span><span class="o">.</span><span class="n">STAGE_WAITING</span><span class="p">)</span> | <span class="n">stage_callback</span><span class="p">(</span><span class="n">Firmware</span><span class="o">.</span><span class="n">STAGE_WAITING</span><span class="p">)</span> | ||||
<span class="n">time</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> | <span class="n">time</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> | ||||
<span class="n">time</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span> | |||||
<span class="c"># Reboot the device and wait for the boot loader.</span> | <span class="c"># Reboot the device and wait for the boot loader.</span> | ||||
<span class="n">stage_callback</span><span class="p">(</span><span class="n">Firmware</span><span class="o">.</span><span class="n">STAGE_BOOT</span><span class="p">)</span> | <span class="n">stage_callback</span><span class="p">(</span><span class="n">Firmware</span><span class="o">.</span><span class="n">STAGE_BOOT</span><span class="p">)</span> | ||||
<span class="n">dev</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s">"="</span><span class="p">)</span> | <span class="n">dev</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s">"="</span><span class="p">)</span> | ||||
<span class="n">read_until</span><span class="p">(</span><span class="s">'!boot'</span><span class="p">,</span> <span class="n">timeout</span><span class="o">=</span><span class="mf">15.0</span><span class="p">)</span> | |||||
<span class="n">read_until</span><span class="p">(</span><span class="s">'......'</span><span class="p">,</span> <span class="n">timeout</span><span class="o">=</span><span class="mf">15.0</span><span class="p">)</span> | |||||
<span class="c"># Get ourselves into the boot loader and wait for indication</span> | <span class="c"># Get ourselves into the boot loader and wait for indication</span> | ||||
<span class="c"># that it's ready for the firmware upload.</span> | <span class="c"># that it's ready for the firmware upload.</span> | ||||
@@ -218,7 +229,7 @@ | |||||
<li class="right" > | <li class="right" > | ||||
<a href="../../py-modindex.html" title="Python Module Index" | <a href="../../py-modindex.html" title="Python Module Index" | ||||
>modules</a> |</li> | >modules</a> |</li> | ||||
<li><a href="../../index.html">pyad2usb documentation</a> »</li> | |||||
<li><a href="../../index.html">pyad2 documentation</a> »</li> | |||||
<li><a href="../index.html" >Module code</a> »</li> | <li><a href="../index.html" >Module code</a> »</li> | ||||
</ul> | </ul> | ||||
</div> | </div> |
@@ -6,7 +6,7 @@ | |||||
<head> | <head> | ||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> | <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> | ||||
<title>pyad2usb.zonetracking — pyad2usb documentation</title> | |||||
<title>pyad2.zonetracking — pyad2 documentation</title> | |||||
<link rel="stylesheet" href="../../_static/default.css" type="text/css" /> | <link rel="stylesheet" href="../../_static/default.css" type="text/css" /> | ||||
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> | <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> | ||||
@@ -23,7 +23,7 @@ | |||||
<script type="text/javascript" src="../../_static/jquery.js"></script> | <script type="text/javascript" src="../../_static/jquery.js"></script> | ||||
<script type="text/javascript" src="../../_static/underscore.js"></script> | <script type="text/javascript" src="../../_static/underscore.js"></script> | ||||
<script type="text/javascript" src="../../_static/doctools.js"></script> | <script type="text/javascript" src="../../_static/doctools.js"></script> | ||||
<link rel="top" title="pyad2usb documentation" href="../../index.html" /> | |||||
<link rel="top" title="pyad2 documentation" href="../../index.html" /> | |||||
<link rel="up" title="Module code" href="../index.html" /> | <link rel="up" title="Module code" href="../index.html" /> | ||||
</head> | </head> | ||||
<body> | <body> | ||||
@@ -36,7 +36,7 @@ | |||||
<li class="right" > | <li class="right" > | ||||
<a href="../../py-modindex.html" title="Python Module Index" | <a href="../../py-modindex.html" title="Python Module Index" | ||||
>modules</a> |</li> | >modules</a> |</li> | ||||
<li><a href="../../index.html">pyad2usb documentation</a> »</li> | |||||
<li><a href="../../index.html">pyad2 documentation</a> »</li> | |||||
<li><a href="../index.html" accesskey="U">Module code</a> »</li> | <li><a href="../index.html" accesskey="U">Module code</a> »</li> | ||||
</ul> | </ul> | ||||
</div> | </div> | ||||
@@ -46,16 +46,19 @@ | |||||
<div class="bodywrapper"> | <div class="bodywrapper"> | ||||
<div class="body"> | <div class="body"> | ||||
<h1>Source code for pyad2usb.zonetracking</h1><div class="highlight"><pre> | |||||
<h1>Source code for pyad2.zonetracking</h1><div class="highlight"><pre> | |||||
<span class="sd">"""</span> | <span class="sd">"""</span> | ||||
<span class="sd">Provides zone tracking functionality for the AD2USB device family.</span> | <span class="sd">Provides zone tracking functionality for the AD2USB device family.</span> | ||||
<span class="sd">.. moduleauthor:: Scott Petersen <scott@nutech.com></span> | |||||
<span class="sd">"""</span> | <span class="sd">"""</span> | ||||
<span class="kn">import</span> <span class="nn">re</span> | |||||
<span class="kn">import</span> <span class="nn">time</span> | <span class="kn">import</span> <span class="nn">time</span> | ||||
<span class="kn">from</span> <span class="nn">.event</span> <span class="kn">import</span> <span class="n">event</span> | <span class="kn">from</span> <span class="nn">.event</span> <span class="kn">import</span> <span class="n">event</span> | ||||
<span class="kn">from</span> <span class="nn">.</span> <span class="kn">import</span> <span class="n">messages</span> | <span class="kn">from</span> <span class="nn">.</span> <span class="kn">import</span> <span class="n">messages</span> | ||||
<div class="viewcode-block" id="Zone"><a class="viewcode-back" href="../../pyad2usb.html#pyad2usb.zonetracking.Zone">[docs]</a><span class="k">class</span> <span class="nc">Zone</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span> | |||||
<div class="viewcode-block" id="Zone"><a class="viewcode-back" href="../../pyad2.html#pyad2.zonetracking.Zone">[docs]</a><span class="k">class</span> <span class="nc">Zone</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | <span class="sd">"""</span> | ||||
<span class="sd"> Representation of a panel zone.</span> | <span class="sd"> Representation of a panel zone.</span> | ||||
<span class="sd"> """</span> | <span class="sd"> """</span> | ||||
@@ -97,7 +100,7 @@ | |||||
<span class="sd"> """</span> | <span class="sd"> """</span> | ||||
<span class="k">return</span> <span class="s">'Zone({0}, {1}, ts {2})'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">zone</span><span class="p">,</span> <span class="n">Zone</span><span class="o">.</span><span class="n">STATUS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">status</span><span class="p">],</span> <span class="bp">self</span><span class="o">.</span><span class="n">timestamp</span><span class="p">)</span> | <span class="k">return</span> <span class="s">'Zone({0}, {1}, ts {2})'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">zone</span><span class="p">,</span> <span class="n">Zone</span><span class="o">.</span><span class="n">STATUS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">status</span><span class="p">],</span> <span class="bp">self</span><span class="o">.</span><span class="n">timestamp</span><span class="p">)</span> | ||||
</div> | </div> | ||||
<div class="viewcode-block" id="Zonetracker"><a class="viewcode-back" href="../../pyad2usb.html#pyad2usb.zonetracking.Zonetracker">[docs]</a><span class="k">class</span> <span class="nc">Zonetracker</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span> | |||||
<div class="viewcode-block" id="Zonetracker"><a class="viewcode-back" href="../../pyad2.html#pyad2.zonetracking.Zonetracker">[docs]</a><span class="k">class</span> <span class="nc">Zonetracker</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | <span class="sd">"""</span> | ||||
<span class="sd"> Handles tracking of zone and their statuses.</span> | <span class="sd"> Handles tracking of zone and their statuses.</span> | ||||
<span class="sd"> """</span> | <span class="sd"> """</span> | ||||
@@ -116,7 +119,7 @@ | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_zones_faulted</span> <span class="o">=</span> <span class="p">[]</span> | <span class="bp">self</span><span class="o">.</span><span class="n">_zones_faulted</span> <span class="o">=</span> <span class="p">[]</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">_last_zone_fault</span> <span class="o">=</span> <span class="mi">0</span> | <span class="bp">self</span><span class="o">.</span><span class="n">_last_zone_fault</span> <span class="o">=</span> <span class="mi">0</span> | ||||
<div class="viewcode-block" id="Zonetracker.update"><a class="viewcode-back" href="../../pyad2usb.html#pyad2usb.zonetracking.Zonetracker.update">[docs]</a> <span class="k">def</span> <span class="nf">update</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">message</span><span class="p">):</span> | |||||
<div class="viewcode-block" id="Zonetracker.update"><a class="viewcode-back" href="../../pyad2.html#pyad2.zonetracking.Zonetracker.update">[docs]</a> <span class="k">def</span> <span class="nf">update</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">message</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | <span class="sd">"""</span> | ||||
<span class="sd"> Update zone statuses based on the current message.</span> | <span class="sd"> Update zone statuses based on the current message.</span> | ||||
@@ -127,23 +130,24 @@ | |||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">message</span><span class="p">,</span> <span class="n">messages</span><span class="o">.</span><span class="n">ExpanderMessage</span><span class="p">):</span> | <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">message</span><span class="p">,</span> <span class="n">messages</span><span class="o">.</span><span class="n">ExpanderMessage</span><span class="p">):</span> | ||||
<span class="k">if</span> <span class="n">message</span><span class="o">.</span><span class="n">type</span> <span class="o">==</span> <span class="n">messages</span><span class="o">.</span><span class="n">ExpanderMessage</span><span class="o">.</span><span class="n">ZONE</span><span class="p">:</span> | <span class="k">if</span> <span class="n">message</span><span class="o">.</span><span class="n">type</span> <span class="o">==</span> <span class="n">messages</span><span class="o">.</span><span class="n">ExpanderMessage</span><span class="o">.</span><span class="n">ZONE</span><span class="p">:</span> | ||||
<span class="n">zone</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_expander_to_zone</span><span class="p">(</span><span class="nb">int</span><span class="p">(</span><span class="n">message</span><span class="o">.</span><span class="n">address</span><span class="p">),</span> <span class="nb">int</span><span class="p">(</span><span class="n">message</span><span class="o">.</span><span class="n">channel</span><span class="p">))</span> | |||||
<span class="n">zone</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_expander_to_zone</span><span class="p">(</span><span class="n">message</span><span class="o">.</span><span class="n">address</span><span class="p">,</span> <span class="n">message</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span> | |||||
<span class="n">status</span> <span class="o">=</span> <span class="n">Zone</span><span class="o">.</span><span class="n">CLEAR</span> | <span class="n">status</span> <span class="o">=</span> <span class="n">Zone</span><span class="o">.</span><span class="n">CLEAR</span> | ||||
<span class="k">if</span> <span class="nb">int</span><span class="p">(</span><span class="n">message</span><span class="o">.</span><span class="n">value</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> | |||||
<span class="k">if</span> <span class="n">message</span><span class="o">.</span><span class="n">value</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> | |||||
<span class="n">status</span> <span class="o">=</span> <span class="n">Zone</span><span class="o">.</span><span class="n">FAULT</span> | <span class="n">status</span> <span class="o">=</span> <span class="n">Zone</span><span class="o">.</span><span class="n">FAULT</span> | ||||
<span class="k">elif</span> <span class="nb">int</span><span class="p">(</span><span class="n">message</span><span class="o">.</span><span class="n">value</span><span class="p">)</span> <span class="o">==</span> <span class="mi">2</span><span class="p">:</span> | |||||
<span class="k">elif</span> <span class="n">message</span><span class="o">.</span><span class="n">value</span> <span class="o">==</span> <span class="mi">2</span><span class="p">:</span> | |||||
<span class="n">status</span> <span class="o">=</span> <span class="n">Zone</span><span class="o">.</span><span class="n">CHECK</span> | <span class="n">status</span> <span class="o">=</span> <span class="n">Zone</span><span class="o">.</span><span class="n">CHECK</span> | ||||
<span class="k">try</span><span class="p">:</span> | <span class="k">try</span><span class="p">:</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">_update_zone</span><span class="p">(</span><span class="n">zone</span><span class="p">,</span> <span class="n">status</span><span class="o">=</span><span class="n">status</span><span class="p">)</span> | <span class="bp">self</span><span class="o">.</span><span class="n">_update_zone</span><span class="p">(</span><span class="n">zone</span><span class="p">,</span> <span class="n">status</span><span class="o">=</span><span class="n">status</span><span class="p">)</span> | ||||
<span class="k">except</span> <span class="ne">IndexError</span><span class="p">:</span> | <span class="k">except</span> <span class="ne">IndexError</span><span class="p">:</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">_add_zone</span><span class="p">(</span><span class="n">zone</span><span class="p">,</span> <span class="n">status</span><span class="o">=</span><span class="n">status</span><span class="p">)</span> | <span class="bp">self</span><span class="o">.</span><span class="n">_add_zone</span><span class="p">(</span><span class="n">zone</span><span class="p">,</span> <span class="n">status</span><span class="o">=</span><span class="n">status</span><span class="p">)</span> | ||||
<span class="k">else</span><span class="p">:</span> | <span class="k">else</span><span class="p">:</span> | ||||
<span class="c"># Panel is ready, restore all zones.</span> | <span class="c"># Panel is ready, restore all zones.</span> | ||||
<span class="k">if</span> <span class="n">message</span><span class="o">.</span><span class="n">ready</span><span class="p">:</span> | <span class="k">if</span> <span class="n">message</span><span class="o">.</span><span class="n">ready</span><span class="p">:</span> | ||||
<span class="k">for</span> <span class="n">idx</span><span class="p">,</span> <span class="n">z</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_zones_faulted</span><span class="p">):</span> | |||||
<span class="k">for</span> <span class="n">z</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_zones_faulted</span><span class="p">:</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_update_zone</span><span class="p">(</span><span class="n">z</span><span class="p">,</span> <span class="n">Zone</span><span class="o">.</span><span class="n">CLEAR</span><span class="p">)</span> | <span class="bp">self</span><span class="o">.</span><span class="n">_update_zone</span><span class="p">(</span><span class="n">z</span><span class="p">,</span> <span class="n">Zone</span><span class="o">.</span><span class="n">CLEAR</span><span class="p">)</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">_last_zone_fault</span> <span class="o">=</span> <span class="mi">0</span> | <span class="bp">self</span><span class="o">.</span><span class="n">_last_zone_fault</span> <span class="o">=</span> <span class="mi">0</span> | ||||
@@ -158,10 +162,23 @@ | |||||
<span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span> | <span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span> | ||||
<span class="n">zone</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">message</span><span class="o">.</span><span class="n">numeric_code</span><span class="p">,</span> <span class="mi">16</span><span class="p">)</span> | <span class="n">zone</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">message</span><span class="o">.</span><span class="n">numeric_code</span><span class="p">,</span> <span class="mi">16</span><span class="p">)</span> | ||||
<span class="c"># NOTE: Odd case for ECP failures. Apparently they report as zone 191 (0xBF) regardless</span> | |||||
<span class="c"># of whether or not the 3-digit mode is enabled... so we have to pull it out of the</span> | |||||
<span class="c"># alpha message.</span> | |||||
<span class="k">if</span> <span class="n">zone</span> <span class="o">==</span> <span class="mi">191</span><span class="p">:</span> | |||||
<span class="n">zone_regex</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="s">'^CHECK (\d+).*$'</span><span class="p">)</span> | |||||
<span class="n">m</span> <span class="o">=</span> <span class="n">zone_regex</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">message</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> | |||||
<span class="k">if</span> <span class="n">m</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> | |||||
<span class="k">return</span> | |||||
<span class="n">zone</span> <span class="o">=</span> <span class="n">m</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> | |||||
<span class="c"># Add new zones and clear expired ones.</span> | <span class="c"># Add new zones and clear expired ones.</span> | ||||
<span class="k">if</span> <span class="n">zone</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_zones_faulted</span><span class="p">:</span> | <span class="k">if</span> <span class="n">zone</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_zones_faulted</span><span class="p">:</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">_update_zone</span><span class="p">(</span><span class="n">zone</span><span class="p">)</span> | <span class="bp">self</span><span class="o">.</span><span class="n">_update_zone</span><span class="p">(</span><span class="n">zone</span><span class="p">)</span> | ||||
<span class="bp">self</span><span class="o">.</span><span class="n">_clear_zones</span><span class="p">(</span><span class="n">zone</span><span class="p">)</span> | <span class="bp">self</span><span class="o">.</span><span class="n">_clear_zones</span><span class="p">(</span><span class="n">zone</span><span class="p">)</span> | ||||
<span class="k">else</span><span class="p">:</span> | <span class="k">else</span><span class="p">:</span> | ||||
<span class="n">status</span> <span class="o">=</span> <span class="n">Zone</span><span class="o">.</span><span class="n">FAULT</span> | <span class="n">status</span> <span class="o">=</span> <span class="n">Zone</span><span class="o">.</span><span class="n">FAULT</span> | ||||
<span class="k">if</span> <span class="n">message</span><span class="o">.</span><span class="n">check_zone</span><span class="p">:</span> | <span class="k">if</span> <span class="n">message</span><span class="o">.</span><span class="n">check_zone</span><span class="p">:</span> | ||||
@@ -184,16 +201,16 @@ | |||||
<span class="sd"> :type zone: int</span> | <span class="sd"> :type zone: int</span> | ||||
<span class="sd"> """</span> | <span class="sd"> """</span> | ||||
<span class="n">cleared_zones</span> <span class="o">=</span> <span class="p">[]</span> | <span class="n">cleared_zones</span> <span class="o">=</span> <span class="p">[]</span> | ||||
<span class="n">found_last</span> <span class="o">=</span> <span class="n">found_new</span> <span class="o">=</span> <span class="n">at_end</span> <span class="o">=</span> <span class="bp">False</span> | |||||
<span class="n">found_last_faulted</span> <span class="o">=</span> <span class="n">found_current</span> <span class="o">=</span> <span class="n">at_end</span> <span class="o">=</span> <span class="bp">False</span> | |||||
<span class="c"># First pass: Find our start spot.</span> | <span class="c"># First pass: Find our start spot.</span> | ||||
<span class="n">it</span> <span class="o">=</span> <span class="nb">iter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_zones_faulted</span><span class="p">)</span> | <span class="n">it</span> <span class="o">=</span> <span class="nb">iter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_zones_faulted</span><span class="p">)</span> | ||||
<span class="k">try</span><span class="p">:</span> | <span class="k">try</span><span class="p">:</span> | ||||
<span class="k">while</span> <span class="ow">not</span> <span class="n">found_last</span><span class="p">:</span> | |||||
<span class="k">while</span> <span class="ow">not</span> <span class="n">found_last_faulted</span><span class="p">:</span> | |||||
<span class="n">z</span> <span class="o">=</span> <span class="n">it</span><span class="o">.</span><span class="n">next</span><span class="p">()</span> | <span class="n">z</span> <span class="o">=</span> <span class="n">it</span><span class="o">.</span><span class="n">next</span><span class="p">()</span> | ||||
<span class="k">if</span> <span class="n">z</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">_last_zone_fault</span><span class="p">:</span> | <span class="k">if</span> <span class="n">z</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">_last_zone_fault</span><span class="p">:</span> | ||||
<span class="n">found_last</span> <span class="o">=</span> <span class="bp">True</span> | |||||
<span class="n">found_last_faulted</span> <span class="o">=</span> <span class="bp">True</span> | |||||
<span class="k">break</span> | <span class="k">break</span> | ||||
<span class="k">except</span> <span class="ne">StopIteration</span><span class="p">:</span> | <span class="k">except</span> <span class="ne">StopIteration</span><span class="p">:</span> | ||||
@@ -202,11 +219,11 @@ | |||||
<span class="c"># Continue until we find our end point and add zones in</span> | <span class="c"># Continue until we find our end point and add zones in</span> | ||||
<span class="c"># between to our clear list.</span> | <span class="c"># between to our clear list.</span> | ||||
<span class="k">try</span><span class="p">:</span> | <span class="k">try</span><span class="p">:</span> | ||||
<span class="k">while</span> <span class="ow">not</span> <span class="n">at_end</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">found_new</span><span class="p">:</span> | |||||
<span class="k">while</span> <span class="ow">not</span> <span class="n">at_end</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">found_current</span><span class="p">:</span> | |||||
<span class="n">z</span> <span class="o">=</span> <span class="n">it</span><span class="o">.</span><span class="n">next</span><span class="p">()</span> | <span class="n">z</span> <span class="o">=</span> <span class="n">it</span><span class="o">.</span><span class="n">next</span><span class="p">()</span> | ||||
<span class="k">if</span> <span class="n">z</span> <span class="o">==</span> <span class="n">zone</span><span class="p">:</span> | <span class="k">if</span> <span class="n">z</span> <span class="o">==</span> <span class="n">zone</span><span class="p">:</span> | ||||
<span class="n">found_new</span> <span class="o">=</span> <span class="bp">True</span> | |||||
<span class="n">found_current</span> <span class="o">=</span> <span class="bp">True</span> | |||||
<span class="k">break</span> | <span class="k">break</span> | ||||
<span class="k">else</span><span class="p">:</span> | <span class="k">else</span><span class="p">:</span> | ||||
<span class="n">cleared_zones</span> <span class="o">+=</span> <span class="p">[</span><span class="n">z</span><span class="p">]</span> | <span class="n">cleared_zones</span> <span class="o">+=</span> <span class="p">[</span><span class="n">z</span><span class="p">]</span> | ||||
@@ -216,15 +233,15 @@ | |||||
<span class="c"># Second pass: roll through the list again if we didn't find</span> | <span class="c"># Second pass: roll through the list again if we didn't find</span> | ||||
<span class="c"># our end point and remove everything until we do.</span> | <span class="c"># our end point and remove everything until we do.</span> | ||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">found_new</span><span class="p">:</span> | |||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">found_current</span><span class="p">:</span> | |||||
<span class="n">it</span> <span class="o">=</span> <span class="nb">iter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_zones_faulted</span><span class="p">)</span> | <span class="n">it</span> <span class="o">=</span> <span class="nb">iter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_zones_faulted</span><span class="p">)</span> | ||||
<span class="k">try</span><span class="p">:</span> | <span class="k">try</span><span class="p">:</span> | ||||
<span class="k">while</span> <span class="ow">not</span> <span class="n">found_new</span><span class="p">:</span> | |||||
<span class="k">while</span> <span class="ow">not</span> <span class="n">found_current</span><span class="p">:</span> | |||||
<span class="n">z</span> <span class="o">=</span> <span class="n">it</span><span class="o">.</span><span class="n">next</span><span class="p">()</span> | <span class="n">z</span> <span class="o">=</span> <span class="n">it</span><span class="o">.</span><span class="n">next</span><span class="p">()</span> | ||||
<span class="k">if</span> <span class="n">z</span> <span class="o">==</span> <span class="n">zone</span><span class="p">:</span> | <span class="k">if</span> <span class="n">z</span> <span class="o">==</span> <span class="n">zone</span><span class="p">:</span> | ||||
<span class="n">found_new</span> <span class="o">=</span> <span class="bp">True</span> | |||||
<span class="n">found_current</span> <span class="o">=</span> <span class="bp">True</span> | |||||
<span class="k">break</span> | <span class="k">break</span> | ||||
<span class="k">else</span><span class="p">:</span> | <span class="k">else</span><span class="p">:</span> | ||||
<span class="n">cleared_zones</span> <span class="o">+=</span> <span class="p">[</span><span class="n">z</span><span class="p">]</span> | <span class="n">cleared_zones</span> <span class="o">+=</span> <span class="p">[</span><span class="n">z</span><span class="p">]</span> | ||||
@@ -233,7 +250,7 @@ | |||||
<span class="k">pass</span> | <span class="k">pass</span> | ||||
<span class="c"># Actually remove the zones and trigger the restores.</span> | <span class="c"># Actually remove the zones and trigger the restores.</span> | ||||
<span class="k">for</span> <span class="n">idx</span><span class="p">,</span> <span class="n">z</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">cleared_zones</span><span class="p">):</span> | |||||
<span class="k">for</span> <span class="n">z</span> <span class="ow">in</span> <span class="n">cleared_zones</span><span class="p">:</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_update_zone</span><span class="p">(</span><span class="n">z</span><span class="p">,</span> <span class="n">Zone</span><span class="o">.</span><span class="n">CLEAR</span><span class="p">)</span> | <span class="bp">self</span><span class="o">.</span><span class="n">_update_zone</span><span class="p">(</span><span class="n">z</span><span class="p">,</span> <span class="n">Zone</span><span class="o">.</span><span class="n">CLEAR</span><span class="p">)</span> | ||||
<span class="k">def</span> <span class="nf">_clear_expired_zones</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | <span class="k">def</span> <span class="nf">_clear_expired_zones</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | ||||
@@ -356,7 +373,7 @@ | |||||
<li class="right" > | <li class="right" > | ||||
<a href="../../py-modindex.html" title="Python Module Index" | <a href="../../py-modindex.html" title="Python Module Index" | ||||
>modules</a> |</li> | >modules</a> |</li> | ||||
<li><a href="../../index.html">pyad2usb documentation</a> »</li> | |||||
<li><a href="../../index.html">pyad2 documentation</a> »</li> | |||||
<li><a href="../index.html" >Module code</a> »</li> | <li><a href="../index.html" >Module code</a> »</li> | ||||
</ul> | </ul> | ||||
</div> | </div> |
@@ -1,588 +0,0 @@ | |||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" | |||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> | |||||
<html xmlns="http://www.w3.org/1999/xhtml"> | |||||
<head> | |||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> | |||||
<title>pyad2usb.ad2usb — pyad2usb documentation</title> | |||||
<link rel="stylesheet" href="../../_static/default.css" type="text/css" /> | |||||
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> | |||||
<script type="text/javascript"> | |||||
var DOCUMENTATION_OPTIONS = { | |||||
URL_ROOT: '../../', | |||||
VERSION: '', | |||||
COLLAPSE_INDEX: false, | |||||
FILE_SUFFIX: '.html', | |||||
HAS_SOURCE: true | |||||
}; | |||||
</script> | |||||
<script type="text/javascript" src="../../_static/jquery.js"></script> | |||||
<script type="text/javascript" src="../../_static/underscore.js"></script> | |||||
<script type="text/javascript" src="../../_static/doctools.js"></script> | |||||
<link rel="top" title="pyad2usb documentation" href="../../index.html" /> | |||||
<link rel="up" title="Module code" href="../index.html" /> | |||||
</head> | |||||
<body> | |||||
<div class="related"> | |||||
<h3>Navigation</h3> | |||||
<ul> | |||||
<li class="right" style="margin-right: 10px"> | |||||
<a href="../../genindex.html" title="General Index" | |||||
accesskey="I">index</a></li> | |||||
<li class="right" > | |||||
<a href="../../py-modindex.html" title="Python Module Index" | |||||
>modules</a> |</li> | |||||
<li><a href="../../index.html">pyad2usb documentation</a> »</li> | |||||
<li><a href="../index.html" accesskey="U">Module code</a> »</li> | |||||
</ul> | |||||
</div> | |||||
<div class="document"> | |||||
<div class="documentwrapper"> | |||||
<div class="bodywrapper"> | |||||
<div class="body"> | |||||
<h1>Source code for pyad2usb.ad2usb</h1><div class="highlight"><pre> | |||||
<span class="sd">"""</span> | |||||
<span class="sd">Provides the full AD2USB class and factory.</span> | |||||
<span class="sd">"""</span> | |||||
<span class="kn">import</span> <span class="nn">time</span> | |||||
<span class="kn">import</span> <span class="nn">threading</span> | |||||
<span class="kn">import</span> <span class="nn">re</span> | |||||
<span class="kn">from</span> <span class="nn">.event</span> <span class="kn">import</span> <span class="n">event</span> | |||||
<span class="kn">from</span> <span class="nn">.</span> <span class="kn">import</span> <span class="n">devices</span> | |||||
<span class="kn">from</span> <span class="nn">.</span> <span class="kn">import</span> <span class="n">util</span> | |||||
<div class="viewcode-block" id="Overseer"><a class="viewcode-back" href="../../pyad2usb.html#pyad2usb.ad2usb.Overseer">[docs]</a><span class="k">class</span> <span class="nc">Overseer</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Factory for creation of AD2USB devices as well as provide4s attach/detach events."</span> | |||||
<span class="sd"> """</span> | |||||
<span class="c"># Factory events</span> | |||||
<span class="n">on_attached</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">Event</span><span class="p">(</span><span class="s">'Called when an AD2USB device has been detected.'</span><span class="p">)</span> | |||||
<span class="n">on_detached</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">Event</span><span class="p">(</span><span class="s">'Called when an AD2USB device has been removed.'</span><span class="p">)</span> | |||||
<span class="n">__devices</span> <span class="o">=</span> <span class="p">[]</span> | |||||
<span class="nd">@classmethod</span> | |||||
<div class="viewcode-block" id="Overseer.find_all"><a class="viewcode-back" href="../../pyad2usb.html#pyad2usb.ad2usb.Overseer.find_all">[docs]</a> <span class="k">def</span> <span class="nf">find_all</span><span class="p">(</span><span class="n">cls</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Returns all AD2USB devices located on the system.</span> | |||||
<span class="sd"> """</span> | |||||
<span class="n">cls</span><span class="o">.</span><span class="n">__devices</span> <span class="o">=</span> <span class="n">devices</span><span class="o">.</span><span class="n">USBDevice</span><span class="o">.</span><span class="n">find_all</span><span class="p">()</span> | |||||
<span class="k">return</span> <span class="n">cls</span><span class="o">.</span><span class="n">__devices</span> | |||||
</div> | |||||
<span class="nd">@classmethod</span> | |||||
<div class="viewcode-block" id="Overseer.devices"><a class="viewcode-back" href="../../pyad2usb.html#pyad2usb.ad2usb.Overseer.devices">[docs]</a> <span class="k">def</span> <span class="nf">devices</span><span class="p">(</span><span class="n">cls</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Returns a cached list of AD2USB devices located on the system.</span> | |||||
<span class="sd"> """</span> | |||||
<span class="k">return</span> <span class="n">cls</span><span class="o">.</span><span class="n">__devices</span> | |||||
</div> | |||||
<span class="nd">@classmethod</span> | |||||
<div class="viewcode-block" id="Overseer.create"><a class="viewcode-back" href="../../pyad2usb.html#pyad2usb.ad2usb.Overseer.create">[docs]</a> <span class="k">def</span> <span class="nf">create</span><span class="p">(</span><span class="n">cls</span><span class="p">,</span> <span class="n">device</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Factory method that returns the requested AD2USB device, or the first device.</span> | |||||
<span class="sd"> """</span> | |||||
<span class="n">cls</span><span class="o">.</span><span class="n">find_all</span><span class="p">()</span> | |||||
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">cls</span><span class="o">.</span><span class="n">__devices</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> | |||||
<span class="k">raise</span> <span class="n">util</span><span class="o">.</span><span class="n">NoDeviceError</span><span class="p">(</span><span class="s">'No AD2USB devices present.'</span><span class="p">)</span> | |||||
<span class="k">if</span> <span class="n">device</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> | |||||
<span class="n">device</span> <span class="o">=</span> <span class="n">cls</span><span class="o">.</span><span class="n">__devices</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> | |||||
<span class="n">vendor</span><span class="p">,</span> <span class="n">product</span><span class="p">,</span> <span class="n">sernum</span><span class="p">,</span> <span class="n">ifcount</span><span class="p">,</span> <span class="n">description</span> <span class="o">=</span> <span class="n">device</span> | |||||
<span class="n">device</span> <span class="o">=</span> <span class="n">devices</span><span class="o">.</span><span class="n">USBDevice</span><span class="p">(</span><span class="n">serial</span><span class="o">=</span><span class="n">sernum</span><span class="p">,</span> <span class="n">description</span><span class="o">=</span><span class="n">description</span><span class="p">)</span> | |||||
<span class="k">return</span> <span class="n">AD2USB</span><span class="p">(</span><span class="n">device</span><span class="p">)</span> | |||||
</div> | |||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">attached_event</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">detached_event</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Constructor</span> | |||||
<span class="sd"> """</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_detect_thread</span> <span class="o">=</span> <span class="n">Overseer</span><span class="o">.</span><span class="n">DetectThread</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> | |||||
<span class="k">if</span> <span class="n">attached_event</span><span class="p">:</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">on_attached</span> <span class="o">+=</span> <span class="n">attached_event</span> | |||||
<span class="k">if</span> <span class="n">detached_event</span><span class="p">:</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">on_detached</span> <span class="o">+=</span> <span class="n">detached_event</span> | |||||
<span class="n">Overseer</span><span class="o">.</span><span class="n">find_all</span><span class="p">()</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">start</span><span class="p">()</span> | |||||
<div class="viewcode-block" id="Overseer.close"><a class="viewcode-back" href="../../pyad2usb.html#pyad2usb.ad2usb.Overseer.close">[docs]</a> <span class="k">def</span> <span class="nf">close</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Clean up and shut down.</span> | |||||
<span class="sd"> """</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">stop</span><span class="p">()</span> | |||||
</div> | |||||
<div class="viewcode-block" id="Overseer.start"><a class="viewcode-back" href="../../pyad2usb.html#pyad2usb.ad2usb.Overseer.start">[docs]</a> <span class="k">def</span> <span class="nf">start</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Starts the detection thread, if not already running.</span> | |||||
<span class="sd"> """</span> | |||||
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_detect_thread</span><span class="o">.</span><span class="n">is_alive</span><span class="p">():</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_detect_thread</span><span class="o">.</span><span class="n">start</span><span class="p">()</span> | |||||
</div> | |||||
<div class="viewcode-block" id="Overseer.stop"><a class="viewcode-back" href="../../pyad2usb.html#pyad2usb.ad2usb.Overseer.stop">[docs]</a> <span class="k">def</span> <span class="nf">stop</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Stops the detection thread.</span> | |||||
<span class="sd"> """</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_detect_thread</span><span class="o">.</span><span class="n">stop</span><span class="p">()</span> | |||||
</div> | |||||
<div class="viewcode-block" id="Overseer.get_device"><a class="viewcode-back" href="../../pyad2usb.html#pyad2usb.ad2usb.Overseer.get_device">[docs]</a> <span class="k">def</span> <span class="nf">get_device</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">device</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Factory method that returns the requested AD2USB device, or the first device.</span> | |||||
<span class="sd"> """</span> | |||||
<span class="k">return</span> <span class="n">Overseer</span><span class="o">.</span><span class="n">create</span><span class="p">(</span><span class="n">device</span><span class="p">)</span> | |||||
</div> | |||||
<div class="viewcode-block" id="Overseer.DetectThread"><a class="viewcode-back" href="../../pyad2usb.html#pyad2usb.ad2usb.Overseer.DetectThread">[docs]</a> <span class="k">class</span> <span class="nc">DetectThread</span><span class="p">(</span><span class="n">threading</span><span class="o">.</span><span class="n">Thread</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Thread that handles detection of added/removed devices.</span> | |||||
<span class="sd"> """</span> | |||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">overseer</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Constructor</span> | |||||
<span class="sd"> """</span> | |||||
<span class="n">threading</span><span class="o">.</span><span class="n">Thread</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_overseer</span> <span class="o">=</span> <span class="n">overseer</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_running</span> <span class="o">=</span> <span class="bp">False</span> | |||||
<div class="viewcode-block" id="Overseer.DetectThread.stop"><a class="viewcode-back" href="../../pyad2usb.html#pyad2usb.ad2usb.Overseer.DetectThread.stop">[docs]</a> <span class="k">def</span> <span class="nf">stop</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Stops the thread.</span> | |||||
<span class="sd"> """</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_running</span> <span class="o">=</span> <span class="bp">False</span> | |||||
</div> | |||||
<div class="viewcode-block" id="Overseer.DetectThread.run"><a class="viewcode-back" href="../../pyad2usb.html#pyad2usb.ad2usb.Overseer.DetectThread.run">[docs]</a> <span class="k">def</span> <span class="nf">run</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> The actual detection process.</span> | |||||
<span class="sd"> """</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_running</span> <span class="o">=</span> <span class="bp">True</span> | |||||
<span class="n">last_devices</span> <span class="o">=</span> <span class="nb">set</span><span class="p">()</span> | |||||
<span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_running</span><span class="p">:</span> | |||||
<span class="k">try</span><span class="p">:</span> | |||||
<span class="n">Overseer</span><span class="o">.</span><span class="n">find_all</span><span class="p">()</span> | |||||
<span class="n">current_devices</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="n">Overseer</span><span class="o">.</span><span class="n">devices</span><span class="p">())</span> | |||||
<span class="n">new_devices</span> <span class="o">=</span> <span class="p">[</span><span class="n">d</span> <span class="k">for</span> <span class="n">d</span> <span class="ow">in</span> <span class="n">current_devices</span> <span class="k">if</span> <span class="n">d</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">last_devices</span><span class="p">]</span> | |||||
<span class="n">removed_devices</span> <span class="o">=</span> <span class="p">[</span><span class="n">d</span> <span class="k">for</span> <span class="n">d</span> <span class="ow">in</span> <span class="n">last_devices</span> <span class="k">if</span> <span class="n">d</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">current_devices</span><span class="p">]</span> | |||||
<span class="n">last_devices</span> <span class="o">=</span> <span class="n">current_devices</span> | |||||
<span class="k">for</span> <span class="n">d</span> <span class="ow">in</span> <span class="n">new_devices</span><span class="p">:</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_overseer</span><span class="o">.</span><span class="n">on_attached</span><span class="p">(</span><span class="n">d</span><span class="p">)</span> | |||||
<span class="k">for</span> <span class="n">d</span> <span class="ow">in</span> <span class="n">removed_devices</span><span class="p">:</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_overseer</span><span class="o">.</span><span class="n">on_detached</span><span class="p">(</span><span class="n">d</span><span class="p">)</span> | |||||
<span class="k">except</span> <span class="n">util</span><span class="o">.</span><span class="n">CommError</span><span class="p">,</span> <span class="n">err</span><span class="p">:</span> | |||||
<span class="k">pass</span> | |||||
<span class="n">time</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mf">0.25</span><span class="p">)</span> | |||||
</div></div></div> | |||||
<div class="viewcode-block" id="AD2USB"><a class="viewcode-back" href="../../pyad2usb.html#pyad2usb.ad2usb.AD2USB">[docs]</a><span class="k">class</span> <span class="nc">AD2USB</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> High-level wrapper around AD2USB/AD2SERIAL devices.</span> | |||||
<span class="sd"> """</span> | |||||
<span class="c"># High-level Events</span> | |||||
<span class="n">on_status_changed</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">Event</span><span class="p">(</span><span class="s">'Called when the panel status changes.'</span><span class="p">)</span> | |||||
<span class="n">on_power_changed</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">Event</span><span class="p">(</span><span class="s">'Called when panel power switches between AC and DC.'</span><span class="p">)</span> | |||||
<span class="n">on_alarm</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">Event</span><span class="p">(</span><span class="s">'Called when the alarm is triggered.'</span><span class="p">)</span> | |||||
<span class="n">on_bypass</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">Event</span><span class="p">(</span><span class="s">'Called when a zone is bypassed.'</span><span class="p">)</span> | |||||
<span class="n">on_boot</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">Event</span><span class="p">(</span><span class="s">'Called when the device finishes bootings.'</span><span class="p">)</span> | |||||
<span class="n">on_config_received</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">Event</span><span class="p">(</span><span class="s">'Called when the device receives its configuration.'</span><span class="p">)</span> | |||||
<span class="c"># Mid-level Events</span> | |||||
<span class="n">on_message</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">Event</span><span class="p">(</span><span class="s">'Called when a message has been received from the device.'</span><span class="p">)</span> | |||||
<span class="c"># Low-level Events</span> | |||||
<span class="n">on_open</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">Event</span><span class="p">(</span><span class="s">'Called when the device has been opened.'</span><span class="p">)</span> | |||||
<span class="n">on_close</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">Event</span><span class="p">(</span><span class="s">'Called when the device has been closed.'</span><span class="p">)</span> | |||||
<span class="n">on_read</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">Event</span><span class="p">(</span><span class="s">'Called when a line has been read from the device.'</span><span class="p">)</span> | |||||
<span class="n">on_write</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">Event</span><span class="p">(</span><span class="s">'Called when data has been written to the device.'</span><span class="p">)</span> | |||||
<span class="c"># Constants</span> | |||||
<span class="n">F1</span> <span class="o">=</span> <span class="nb">unichr</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> <span class="o">+</span> <span class="nb">unichr</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> <span class="o">+</span> <span class="nb">unichr</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> | |||||
<span class="n">F2</span> <span class="o">=</span> <span class="nb">unichr</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span> <span class="o">+</span> <span class="nb">unichr</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span> <span class="o">+</span> <span class="nb">unichr</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span> | |||||
<span class="n">F3</span> <span class="o">=</span> <span class="nb">unichr</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span> <span class="o">+</span> <span class="nb">unichr</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span> <span class="o">+</span> <span class="nb">unichr</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span> | |||||
<span class="n">F4</span> <span class="o">=</span> <span class="nb">unichr</span><span class="p">(</span><span class="mi">4</span><span class="p">)</span> <span class="o">+</span> <span class="nb">unichr</span><span class="p">(</span><span class="mi">4</span><span class="p">)</span> <span class="o">+</span> <span class="nb">unichr</span><span class="p">(</span><span class="mi">4</span><span class="p">)</span> | |||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">device</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Constructor</span> | |||||
<span class="sd"> """</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_device</span> <span class="o">=</span> <span class="n">device</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_power_status</span> <span class="o">=</span> <span class="bp">None</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_alarm_status</span> <span class="o">=</span> <span class="bp">None</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_bypass_status</span> <span class="o">=</span> <span class="bp">None</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_settings</span> <span class="o">=</span> <span class="p">{}</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_address_mask</span> <span class="o">=</span> <span class="mh">0xFF80</span> <span class="c"># TEMP</span> | |||||
<div class="viewcode-block" id="AD2USB.open"><a class="viewcode-back" href="../../pyad2usb.html#pyad2usb.ad2usb.AD2USB.open">[docs]</a> <span class="k">def</span> <span class="nf">open</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">baudrate</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">interface</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">index</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">no_reader_thread</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Opens the device.</span> | |||||
<span class="sd"> """</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_wire_events</span><span class="p">()</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_device</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="n">baudrate</span><span class="o">=</span><span class="n">baudrate</span><span class="p">,</span> <span class="n">interface</span><span class="o">=</span><span class="n">interface</span><span class="p">,</span> <span class="n">index</span><span class="o">=</span><span class="n">index</span><span class="p">,</span> <span class="n">no_reader_thread</span><span class="o">=</span><span class="n">no_reader_thread</span><span class="p">)</span> | |||||
</div> | |||||
<div class="viewcode-block" id="AD2USB.close"><a class="viewcode-back" href="../../pyad2usb.html#pyad2usb.ad2usb.AD2USB.close">[docs]</a> <span class="k">def</span> <span class="nf">close</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Closes the device.</span> | |||||
<span class="sd"> """</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_device</span><span class="o">.</span><span class="n">close</span><span class="p">()</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_device</span> <span class="o">=</span> <span class="bp">None</span> | |||||
</div> | |||||
<div class="viewcode-block" id="AD2USB.get_config"><a class="viewcode-back" href="../../pyad2usb.html#pyad2usb.ad2usb.AD2USB.get_config">[docs]</a> <span class="k">def</span> <span class="nf">get_config</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Retrieves the configuration from the device.</span> | |||||
<span class="sd"> """</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_device</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s">"C</span><span class="se">\r</span><span class="s">"</span><span class="p">)</span> | |||||
</div> | |||||
<div class="viewcode-block" id="AD2USB.set_config"><a class="viewcode-back" href="../../pyad2usb.html#pyad2usb.ad2usb.AD2USB.set_config">[docs]</a> <span class="k">def</span> <span class="nf">set_config</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">settings</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Sets configuration entries on the device.</span> | |||||
<span class="sd"> """</span> | |||||
<span class="k">pass</span> | |||||
</div> | |||||
<div class="viewcode-block" id="AD2USB.reboot"><a class="viewcode-back" href="../../pyad2usb.html#pyad2usb.ad2usb.AD2USB.reboot">[docs]</a> <span class="k">def</span> <span class="nf">reboot</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Reboots the device.</span> | |||||
<span class="sd"> """</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_device</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s">'='</span><span class="p">)</span> | |||||
</div> | |||||
<span class="nd">@property</span> | |||||
<div class="viewcode-block" id="AD2USB.id"><a class="viewcode-back" href="../../pyad2usb.html#pyad2usb.ad2usb.AD2USB.id">[docs]</a> <span class="k">def</span> <span class="nf">id</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | |||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_device</span><span class="o">.</span><span class="n">id</span> | |||||
</div> | |||||
<span class="k">def</span> <span class="nf">_wire_events</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Wires up the internal device events.</span> | |||||
<span class="sd"> """</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_device</span><span class="o">.</span><span class="n">on_open</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_on_open</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_device</span><span class="o">.</span><span class="n">on_close</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_on_close</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_device</span><span class="o">.</span><span class="n">on_read</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_on_read</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_device</span><span class="o">.</span><span class="n">on_write</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_on_write</span> | |||||
<span class="k">def</span> <span class="nf">_handle_message</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Parses messages from the panel.</span> | |||||
<span class="sd"> """</span> | |||||
<span class="k">if</span> <span class="n">data</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> | |||||
<span class="k">return</span> <span class="bp">None</span> | |||||
<span class="n">msg</span> <span class="o">=</span> <span class="bp">None</span> | |||||
<span class="k">if</span> <span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="s">'!'</span><span class="p">:</span> | |||||
<span class="n">msg</span> <span class="o">=</span> <span class="n">Message</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> | |||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_address_mask</span> <span class="o">&</span> <span class="n">msg</span><span class="o">.</span><span class="n">mask</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_update_internal_states</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span> | |||||
<span class="k">else</span><span class="p">:</span> <span class="c"># specialty messages</span> | |||||
<span class="n">header</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">:</span><span class="mi">4</span><span class="p">]</span> | |||||
<span class="k">if</span> <span class="n">header</span> <span class="o">==</span> <span class="s">'!EXP'</span> <span class="ow">or</span> <span class="n">header</span> <span class="o">==</span> <span class="s">'!REL'</span><span class="p">:</span> | |||||
<span class="n">msg</span> <span class="o">=</span> <span class="n">ExpanderMessage</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> | |||||
<span class="k">elif</span> <span class="n">header</span> <span class="o">==</span> <span class="s">'!RFX'</span><span class="p">:</span> | |||||
<span class="n">msg</span> <span class="o">=</span> <span class="n">RFMessage</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> | |||||
<span class="k">elif</span> <span class="n">header</span> <span class="o">==</span> <span class="s">'!LRR'</span><span class="p">:</span> | |||||
<span class="n">msg</span> <span class="o">=</span> <span class="n">LRRMessage</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> | |||||
<span class="k">elif</span> <span class="n">data</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s">'!Ready'</span><span class="p">):</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">on_boot</span><span class="p">()</span> | |||||
<span class="k">elif</span> <span class="n">data</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s">'!CONFIG'</span><span class="p">):</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_handle_config</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> | |||||
<span class="k">return</span> <span class="n">msg</span> | |||||
<span class="k">def</span> <span class="nf">_handle_config</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span> | |||||
<span class="n">_</span><span class="p">,</span> <span class="n">config_string</span> <span class="o">=</span> <span class="n">data</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">'>'</span><span class="p">)</span> | |||||
<span class="k">for</span> <span class="n">setting</span> <span class="ow">in</span> <span class="n">config_string</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">'&'</span><span class="p">):</span> | |||||
<span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="o">=</span> <span class="n">setting</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">'='</span><span class="p">)</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_settings</span><span class="p">[</span><span class="n">k</span><span class="p">]</span> <span class="o">=</span> <span class="n">v</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">on_config_received</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_settings</span><span class="p">)</span> | |||||
<span class="k">def</span> <span class="nf">_update_internal_states</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">message</span><span class="p">):</span> | |||||
<span class="k">if</span> <span class="n">message</span><span class="o">.</span><span class="n">ac_power</span> <span class="o">!=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_power_status</span><span class="p">:</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_power_status</span><span class="p">,</span> <span class="n">old_status</span> <span class="o">=</span> <span class="n">message</span><span class="o">.</span><span class="n">ac_power</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_power_status</span> | |||||
<span class="k">if</span> <span class="n">old_status</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">on_power_changed</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_power_status</span><span class="p">)</span> | |||||
<span class="k">if</span> <span class="n">message</span><span class="o">.</span><span class="n">alarm_sounding</span> <span class="o">!=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_alarm_status</span><span class="p">:</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_alarm_status</span><span class="p">,</span> <span class="n">old_status</span> <span class="o">=</span> <span class="n">message</span><span class="o">.</span><span class="n">alarm_sounding</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_alarm_status</span> | |||||
<span class="k">if</span> <span class="n">old_status</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">on_alarm</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_alarm_status</span><span class="p">)</span> | |||||
<span class="k">if</span> <span class="n">message</span><span class="o">.</span><span class="n">zone_bypassed</span> <span class="o">!=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_bypass_status</span><span class="p">:</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_bypass_status</span><span class="p">,</span> <span class="n">old_status</span> <span class="o">=</span> <span class="n">message</span><span class="o">.</span><span class="n">zone_bypassed</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_bypass_status</span> | |||||
<span class="k">if</span> <span class="n">old_status</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">on_bypass</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_bypass_status</span><span class="p">)</span> | |||||
<span class="k">def</span> <span class="nf">_on_open</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sender</span><span class="p">,</span> <span class="n">args</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Internal handler for opening the device.</span> | |||||
<span class="sd"> """</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">on_open</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> | |||||
<span class="k">def</span> <span class="nf">_on_close</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sender</span><span class="p">,</span> <span class="n">args</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Internal handler for closing the device.</span> | |||||
<span class="sd"> """</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">on_close</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> | |||||
<span class="k">def</span> <span class="nf">_on_read</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sender</span><span class="p">,</span> <span class="n">args</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Internal handler for reading from the device.</span> | |||||
<span class="sd"> """</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">on_read</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> | |||||
<span class="n">msg</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_handle_message</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> | |||||
<span class="k">if</span> <span class="n">msg</span><span class="p">:</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">on_message</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span> | |||||
<span class="k">def</span> <span class="nf">_on_write</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sender</span><span class="p">,</span> <span class="n">args</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Internal handler for writing to the device.</span> | |||||
<span class="sd"> """</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">on_write</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> | |||||
</div> | |||||
<div class="viewcode-block" id="Message"><a class="viewcode-back" href="../../pyad2usb.html#pyad2usb.ad2usb.Message">[docs]</a><span class="k">class</span> <span class="nc">Message</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Represents a message from the alarm panel.</span> | |||||
<span class="sd"> """</span> | |||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Constructor</span> | |||||
<span class="sd"> """</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">ready</span> <span class="o">=</span> <span class="bp">False</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">armed_away</span> <span class="o">=</span> <span class="bp">False</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">armed_home</span> <span class="o">=</span> <span class="bp">False</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">backlight_on</span> <span class="o">=</span> <span class="bp">False</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">programming_mode</span> <span class="o">=</span> <span class="bp">False</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">beeps</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">zone_bypassed</span> <span class="o">=</span> <span class="bp">False</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">ac_power</span> <span class="o">=</span> <span class="bp">False</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">chime_on</span> <span class="o">=</span> <span class="bp">False</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">alarm_event_occurred</span> <span class="o">=</span> <span class="bp">False</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">alarm_sounding</span> <span class="o">=</span> <span class="bp">False</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">numeric_code</span> <span class="o">=</span> <span class="s">""</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">text</span> <span class="o">=</span> <span class="s">""</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">cursor_location</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">data</span> <span class="o">=</span> <span class="s">""</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">mask</span> <span class="o">=</span> <span class="s">""</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">bitfield</span> <span class="o">=</span> <span class="s">""</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">panel_data</span> <span class="o">=</span> <span class="s">""</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_regex</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="s">'("(?:[^"]|"")*"|[^,]*),("(?:[^"]|"")*"|[^,]*),("(?:[^"]|"")*"|[^,]*),("(?:[^"]|"")*"|[^,]*)'</span><span class="p">)</span> | |||||
<span class="k">if</span> <span class="n">data</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_parse_message</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> | |||||
<span class="k">def</span> <span class="nf">_parse_message</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Parse the message from the device.</span> | |||||
<span class="sd"> """</span> | |||||
<span class="n">m</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_regex</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> | |||||
<span class="k">if</span> <span class="n">m</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> | |||||
<span class="k">raise</span> <span class="n">util</span><span class="o">.</span><span class="n">InvalidMessageError</span><span class="p">(</span><span class="s">'Received invalid message: {0}'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">data</span><span class="p">))</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">bitfield</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">numeric_code</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">panel_data</span><span class="p">,</span> <span class="n">alpha</span> <span class="o">=</span> <span class="n">m</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">4</span><span class="p">)</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">mask</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">panel_data</span><span class="p">[</span><span class="mi">3</span><span class="p">:</span><span class="mi">3</span><span class="o">+</span><span class="mi">8</span><span class="p">],</span> <span class="mi">16</span><span class="p">)</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">data</span> <span class="o">=</span> <span class="n">data</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">ready</span> <span class="o">=</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">bitfield</span><span class="p">[</span><span class="mi">1</span><span class="p">:</span><span class="mi">2</span><span class="p">]</span> <span class="o">==</span> <span class="s">"0"</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">armed_away</span> <span class="o">=</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">bitfield</span><span class="p">[</span><span class="mi">2</span><span class="p">:</span><span class="mi">3</span><span class="p">]</span> <span class="o">==</span> <span class="s">"0"</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">armed_home</span> <span class="o">=</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">bitfield</span><span class="p">[</span><span class="mi">3</span><span class="p">:</span><span class="mi">4</span><span class="p">]</span> <span class="o">==</span> <span class="s">"0"</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">backlight_on</span> <span class="o">=</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">bitfield</span><span class="p">[</span><span class="mi">4</span><span class="p">:</span><span class="mi">5</span><span class="p">]</span> <span class="o">==</span> <span class="s">"0"</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">programming_mode</span> <span class="o">=</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">bitfield</span><span class="p">[</span><span class="mi">5</span><span class="p">:</span><span class="mi">6</span><span class="p">]</span> <span class="o">==</span> <span class="s">"0"</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">beeps</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">bitfield</span><span class="p">[</span><span class="mi">6</span><span class="p">:</span><span class="mi">7</span><span class="p">],</span> <span class="mi">16</span><span class="p">)</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">zone_bypassed</span> <span class="o">=</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">bitfield</span><span class="p">[</span><span class="mi">7</span><span class="p">:</span><span class="mi">8</span><span class="p">]</span> <span class="o">==</span> <span class="s">"0"</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">ac_power</span> <span class="o">=</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">bitfield</span><span class="p">[</span><span class="mi">8</span><span class="p">:</span><span class="mi">9</span><span class="p">]</span> <span class="o">==</span> <span class="s">"0"</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">chime_on</span> <span class="o">=</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">bitfield</span><span class="p">[</span><span class="mi">9</span><span class="p">:</span><span class="mi">10</span><span class="p">]</span> <span class="o">==</span> <span class="s">"0"</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">alarm_event_occurred</span> <span class="o">=</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">bitfield</span><span class="p">[</span><span class="mi">10</span><span class="p">:</span><span class="mi">11</span><span class="p">]</span> <span class="o">==</span> <span class="s">"0"</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">alarm_sounding</span> <span class="o">=</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">bitfield</span><span class="p">[</span><span class="mi">11</span><span class="p">:</span><span class="mi">12</span><span class="p">]</span> <span class="o">==</span> <span class="s">"0"</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">text</span> <span class="o">=</span> <span class="n">alpha</span><span class="o">.</span><span class="n">strip</span><span class="p">(</span><span class="s">'"'</span><span class="p">)</span> | |||||
<span class="k">if</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">panel_data</span><span class="p">[</span><span class="mi">19</span><span class="p">:</span><span class="mi">21</span><span class="p">],</span> <span class="mi">16</span><span class="p">)</span> <span class="o">&</span> <span class="mh">0x01</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">cursor_location</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">bitfield</span><span class="p">[</span><span class="mi">21</span><span class="p">:</span><span class="mi">23</span><span class="p">],</span> <span class="mi">16</span><span class="p">)</span> <span class="c"># Alpha character index that the cursor is on.</span> | |||||
<span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> String conversion operator.</span> | |||||
<span class="sd"> """</span> | |||||
<span class="k">return</span> <span class="s">'msg > {0:0<9} [{1}{2}{3}] -- ({4}) {5}'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">hex</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mask</span><span class="p">),</span> <span class="mi">1</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">ready</span> <span class="k">else</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">armed_away</span> <span class="k">else</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">armed_home</span> <span class="k">else</span> <span class="mi">0</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">numeric_code</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> | |||||
</div> | |||||
<div class="viewcode-block" id="ExpanderMessage"><a class="viewcode-back" href="../../pyad2usb.html#pyad2usb.ad2usb.ExpanderMessage">[docs]</a><span class="k">class</span> <span class="nc">ExpanderMessage</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Represents a message from a zone or relay expansion module.</span> | |||||
<span class="sd"> """</span> | |||||
<span class="n">ZONE</span> <span class="o">=</span> <span class="mi">0</span> | |||||
<span class="n">RELAY</span> <span class="o">=</span> <span class="mi">1</span> | |||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Constructor</span> | |||||
<span class="sd"> """</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">type</span> <span class="o">=</span> <span class="bp">None</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">address</span> <span class="o">=</span> <span class="bp">None</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">channel</span> <span class="o">=</span> <span class="bp">None</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">value</span> <span class="o">=</span> <span class="bp">None</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">raw</span> <span class="o">=</span> <span class="bp">None</span> | |||||
<span class="k">if</span> <span class="n">data</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_parse_message</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> | |||||
<span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> String conversion operator.</span> | |||||
<span class="sd"> """</span> | |||||
<span class="n">expander_type</span> <span class="o">=</span> <span class="s">'UNKWN'</span> | |||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">type</span> <span class="o">==</span> <span class="n">ExpanderMessage</span><span class="o">.</span><span class="n">ZONE</span><span class="p">:</span> | |||||
<span class="n">expander_type</span> <span class="o">=</span> <span class="s">'ZONE'</span> | |||||
<span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">type</span> <span class="o">==</span> <span class="n">ExpanderMessage</span><span class="o">.</span><span class="n">RELAY</span><span class="p">:</span> | |||||
<span class="n">expander_type</span> <span class="o">=</span> <span class="s">'RELAY'</span> | |||||
<span class="k">return</span> <span class="s">'exp > [{0: <5}] {1}/{2} -- {3}'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">expander_type</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">address</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">)</span> | |||||
<span class="k">def</span> <span class="nf">_parse_message</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Parse the raw message from the device.</span> | |||||
<span class="sd"> """</span> | |||||
<span class="n">header</span><span class="p">,</span> <span class="n">values</span> <span class="o">=</span> <span class="n">data</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">':'</span><span class="p">)</span> | |||||
<span class="n">address</span><span class="p">,</span> <span class="n">channel</span><span class="p">,</span> <span class="n">value</span> <span class="o">=</span> <span class="n">values</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">','</span><span class="p">)</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">raw</span> <span class="o">=</span> <span class="n">data</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">address</span> <span class="o">=</span> <span class="n">address</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">channel</span> <span class="o">=</span> <span class="n">channel</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">value</span> <span class="o">=</span> <span class="n">value</span> | |||||
<span class="k">if</span> <span class="n">header</span> <span class="o">==</span> <span class="s">'!EXP'</span><span class="p">:</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">type</span> <span class="o">=</span> <span class="n">ExpanderMessage</span><span class="o">.</span><span class="n">ZONE</span> | |||||
<span class="k">elif</span> <span class="n">header</span> <span class="o">==</span> <span class="s">'!REL'</span><span class="p">:</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">type</span> <span class="o">=</span> <span class="n">ExpanderMessage</span><span class="o">.</span><span class="n">RELAY</span> | |||||
</div> | |||||
<div class="viewcode-block" id="RFMessage"><a class="viewcode-back" href="../../pyad2usb.html#pyad2usb.ad2usb.RFMessage">[docs]</a><span class="k">class</span> <span class="nc">RFMessage</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Represents a message from an RF receiver.</span> | |||||
<span class="sd"> """</span> | |||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Constructor</span> | |||||
<span class="sd"> """</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">raw</span> <span class="o">=</span> <span class="bp">None</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">serial_number</span> <span class="o">=</span> <span class="bp">None</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">value</span> <span class="o">=</span> <span class="bp">None</span> | |||||
<span class="k">if</span> <span class="n">data</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_parse_message</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> | |||||
<span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> String conversion operator.</span> | |||||
<span class="sd"> """</span> | |||||
<span class="k">return</span> <span class="s">'rf > {0}: {1}'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">serial_number</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">)</span> | |||||
<span class="k">def</span> <span class="nf">_parse_message</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Parses the raw message from the device.</span> | |||||
<span class="sd"> """</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">raw</span> <span class="o">=</span> <span class="n">data</span> | |||||
<span class="n">_</span><span class="p">,</span> <span class="n">values</span> <span class="o">=</span> <span class="n">data</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">':'</span><span class="p">)</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">serial_number</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">value</span> <span class="o">=</span> <span class="n">values</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">','</span><span class="p">)</span> | |||||
</div> | |||||
<div class="viewcode-block" id="LRRMessage"><a class="viewcode-back" href="../../pyad2usb.html#pyad2usb.ad2usb.LRRMessage">[docs]</a><span class="k">class</span> <span class="nc">LRRMessage</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Represent a message from a Long Range Radio.</span> | |||||
<span class="sd"> """</span> | |||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Constructor</span> | |||||
<span class="sd"> """</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">raw</span> <span class="o">=</span> <span class="bp">None</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_event_data</span> <span class="o">=</span> <span class="bp">None</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_partition</span> <span class="o">=</span> <span class="bp">None</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_event_type</span> <span class="o">=</span> <span class="bp">None</span> | |||||
<span class="k">if</span> <span class="n">data</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_parse_message</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> | |||||
<span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> String conversion operator.</span> | |||||
<span class="sd"> """</span> | |||||
<span class="k">return</span> <span class="s">'lrr > {0} @ {1} -- {2}'</span><span class="o">.</span><span class="n">format</span><span class="p">()</span> | |||||
<span class="k">def</span> <span class="nf">_parse_message</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span> | |||||
<span class="sd">"""</span> | |||||
<span class="sd"> Parses the raw message from the device.</span> | |||||
<span class="sd"> """</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">raw</span> <span class="o">=</span> <span class="n">data</span> | |||||
<span class="n">_</span><span class="p">,</span> <span class="n">values</span> <span class="o">=</span> <span class="n">data</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">':'</span><span class="p">)</span> | |||||
<span class="bp">self</span><span class="o">.</span><span class="n">_event_data</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_partition</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_event_type</span> <span class="o">=</span> <span class="n">values</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">','</span><span class="p">)</span></div> | |||||
</pre></div> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<div class="sphinxsidebar"> | |||||
<div class="sphinxsidebarwrapper"> | |||||
<div id="searchbox" style="display: none"> | |||||
<h3>Quick search</h3> | |||||
<form class="search" action="../../search.html" method="get"> | |||||
<input type="text" name="q" /> | |||||
<input type="submit" value="Go" /> | |||||
<input type="hidden" name="check_keywords" value="yes" /> | |||||
<input type="hidden" name="area" value="default" /> | |||||
</form> | |||||
<p class="searchtip" style="font-size: 90%"> | |||||
Enter search terms or a module, class or function name. | |||||
</p> | |||||
</div> | |||||
<script type="text/javascript">$('#searchbox').show(0);</script> | |||||
</div> | |||||
</div> | |||||
<div class="clearer"></div> | |||||
</div> | |||||
<div class="related"> | |||||
<h3>Navigation</h3> | |||||
<ul> | |||||
<li class="right" style="margin-right: 10px"> | |||||
<a href="../../genindex.html" title="General Index" | |||||
>index</a></li> | |||||
<li class="right" > | |||||
<a href="../../py-modindex.html" title="Python Module Index" | |||||
>modules</a> |</li> | |||||
<li><a href="../../index.html">pyad2usb documentation</a> »</li> | |||||
<li><a href="../index.html" >Module code</a> »</li> | |||||
</ul> | |||||
</div> | |||||
<div class="footer"> | |||||
© Copyright 2013, Author. | |||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2b1. | |||||
</div> | |||||
</body> | |||||
</html> |
@@ -3,7 +3,7 @@ | |||||
You can adapt this file completely to your liking, but it should at least | You can adapt this file completely to your liking, but it should at least | ||||
contain the root `toctree` directive. | contain the root `toctree` directive. | ||||
Welcome to pyad2usb's documentation! | |||||
Welcome to pyad2's documentation! | |||||
==================================== | ==================================== | ||||
Contents: | Contents: | ||||
@@ -11,7 +11,7 @@ Contents: | |||||
.. toctree:: | .. toctree:: | ||||
:maxdepth: 4 | :maxdepth: 4 | ||||
pyad2usb | |||||
pyad2 | |||||
Indices and tables | Indices and tables | ||||
@@ -1,7 +1,7 @@ | |||||
pyad2usb | |||||
pyad2 | |||||
======== | ======== | ||||
.. toctree:: | .. toctree:: | ||||
:maxdepth: 4 | :maxdepth: 4 | ||||
pyad2usb | |||||
pyad2 |
@@ -4,7 +4,7 @@ event Package | |||||
:mod:`event` Package | :mod:`event` Package | ||||
-------------------- | -------------------- | ||||
.. automodule:: pyad2usb.event | |||||
.. automodule:: pyad2.event | |||||
:members: | :members: | ||||
:undoc-members: | :undoc-members: | ||||
:show-inheritance: | :show-inheritance: | ||||
@@ -12,7 +12,7 @@ event Package | |||||
:mod:`event` Module | :mod:`event` Module | ||||
------------------- | ------------------- | ||||
.. automodule:: pyad2usb.event.event | |||||
.. automodule:: pyad2.event.event | |||||
:members: | :members: | ||||
:undoc-members: | :undoc-members: | ||||
:show-inheritance: | :show-inheritance: |
@@ -1,10 +1,10 @@ | |||||
pyad2usb Package | |||||
pyad2 Package | |||||
================ | ================ | ||||
:mod:`ad2usb` Module | |||||
:mod:`ad2` Module | |||||
-------------------- | -------------------- | ||||
.. automodule:: pyad2usb.ad2usb | |||||
.. automodule:: pyad2.ad2 | |||||
:members: | :members: | ||||
:undoc-members: | :undoc-members: | ||||
:show-inheritance: | :show-inheritance: | ||||
@@ -12,7 +12,7 @@ pyad2usb Package | |||||
:mod:`devices` Module | :mod:`devices` Module | ||||
--------------------- | --------------------- | ||||
.. automodule:: pyad2usb.devices | |||||
.. automodule:: pyad2.devices | |||||
:members: | :members: | ||||
:undoc-members: | :undoc-members: | ||||
:show-inheritance: | :show-inheritance: | ||||
@@ -20,7 +20,7 @@ pyad2usb Package | |||||
:mod:`util` Module | :mod:`util` Module | ||||
------------------ | ------------------ | ||||
.. automodule:: pyad2usb.util | |||||
.. automodule:: pyad2.util | |||||
:members: | :members: | ||||
:undoc-members: | :undoc-members: | ||||
:show-inheritance: | :show-inheritance: | ||||
@@ -28,7 +28,7 @@ pyad2usb Package | |||||
:mod:`zonetracking` Module | :mod:`zonetracking` Module | ||||
-------------------------- | -------------------------- | ||||
.. automodule:: pyad2usb.zonetracking | |||||
.. automodule:: pyad2.zonetracking | |||||
:members: | :members: | ||||
:undoc-members: | :undoc-members: | ||||
:show-inheritance: | :show-inheritance: | ||||
@@ -36,7 +36,7 @@ pyad2usb Package | |||||
:mod:`panels` Module | :mod:`panels` Module | ||||
-------------------- | -------------------- | ||||
.. automodule:: pyad2usb.panels | |||||
.. automodule:: pyad2.panels | |||||
:members: | :members: | ||||
:undoc-members: | :undoc-members: | ||||
:show-inheritance: | :show-inheritance: | ||||
@@ -44,7 +44,7 @@ pyad2usb Package | |||||
:mod:`messages` Module | :mod:`messages` Module | ||||
---------------------- | ---------------------- | ||||
.. automodule:: pyad2usb.messages | |||||
.. automodule:: pyad2.messages | |||||
:members: | :members: | ||||
:undoc-members: | :undoc-members: | ||||
:show-inheritance: | :show-inheritance: | ||||
@@ -54,5 +54,5 @@ Subpackages | |||||
.. toctree:: | .. toctree:: | ||||
pyad2usb.event | |||||
pyad2.event | |||||
@@ -4,7 +4,7 @@ event Package | |||||
:mod:`event` Package | :mod:`event` Package | ||||
-------------------- | -------------------- | ||||
.. automodule:: pyad2usb.event | |||||
.. automodule:: pyad2.event | |||||
:members: | :members: | ||||
:undoc-members: | :undoc-members: | ||||
:show-inheritance: | :show-inheritance: | ||||
@@ -12,7 +12,7 @@ event Package | |||||
:mod:`event` Module | :mod:`event` Module | ||||
------------------- | ------------------- | ||||
.. automodule:: pyad2usb.event.event | |||||
.. automodule:: pyad2.event.event | |||||
:members: | :members: | ||||
:undoc-members: | :undoc-members: | ||||
:show-inheritance: | :show-inheritance: | ||||
@@ -1,10 +1,10 @@ | |||||
pyad2usb Package | pyad2usb Package | ||||
================ | ================ | ||||
:mod:`ad2usb` Module | |||||
:mod:`ad2` Module | |||||
-------------------- | -------------------- | ||||
.. automodule:: pyad2usb.ad2usb | |||||
.. automodule:: pyad2.ad2 | |||||
:members: | :members: | ||||
:undoc-members: | :undoc-members: | ||||
:show-inheritance: | :show-inheritance: | ||||
@@ -12,7 +12,7 @@ pyad2usb Package | |||||
:mod:`devices` Module | :mod:`devices` Module | ||||
--------------------- | --------------------- | ||||
.. automodule:: pyad2usb.devices | |||||
.. automodule:: pyad2.devices | |||||
:members: | :members: | ||||
:undoc-members: | :undoc-members: | ||||
:show-inheritance: | :show-inheritance: | ||||
@@ -20,7 +20,7 @@ pyad2usb Package | |||||
:mod:`util` Module | :mod:`util` Module | ||||
------------------ | ------------------ | ||||
.. automodule:: pyad2usb.util | |||||
.. automodule:: pyad2.util | |||||
:members: | :members: | ||||
:undoc-members: | :undoc-members: | ||||
:show-inheritance: | :show-inheritance: | ||||
@@ -28,7 +28,7 @@ pyad2usb Package | |||||
:mod:`zonetracking` Module | :mod:`zonetracking` Module | ||||
-------------------------- | -------------------------- | ||||
.. automodule:: pyad2usb.zonetracking | |||||
.. automodule:: pyad2.zonetracking | |||||
:members: | :members: | ||||
:undoc-members: | :undoc-members: | ||||
:show-inheritance: | :show-inheritance: | ||||
@@ -36,7 +36,7 @@ pyad2usb Package | |||||
:mod:`panels` Module | :mod:`panels` Module | ||||
-------------------- | -------------------- | ||||
.. automodule:: pyad2usb.panels | |||||
.. automodule:: pyad2.panels | |||||
:members: | :members: | ||||
:undoc-members: | :undoc-members: | ||||
:show-inheritance: | :show-inheritance: | ||||
@@ -44,7 +44,7 @@ pyad2usb Package | |||||
:mod:`messages` Module | :mod:`messages` Module | ||||
---------------------- | ---------------------- | ||||
.. automodule:: pyad2usb.messages | |||||
.. automodule:: pyad2.messages | |||||
:members: | :members: | ||||
:undoc-members: | :undoc-members: | ||||
:show-inheritance: | :show-inheritance: | ||||
@@ -7,7 +7,7 @@ | |||||
<head> | <head> | ||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> | <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> | ||||
<title>Index — pyad2usb documentation</title> | |||||
<title>Index — pyad2 documentation</title> | |||||
<link rel="stylesheet" href="_static/default.css" type="text/css" /> | <link rel="stylesheet" href="_static/default.css" type="text/css" /> | ||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" /> | <link rel="stylesheet" href="_static/pygments.css" type="text/css" /> | ||||
@@ -24,7 +24,7 @@ | |||||
<script type="text/javascript" src="_static/jquery.js"></script> | <script type="text/javascript" src="_static/jquery.js"></script> | ||||
<script type="text/javascript" src="_static/underscore.js"></script> | <script type="text/javascript" src="_static/underscore.js"></script> | ||||
<script type="text/javascript" src="_static/doctools.js"></script> | <script type="text/javascript" src="_static/doctools.js"></script> | ||||
<link rel="top" title="pyad2usb documentation" href="index.html" /> | |||||
<link rel="top" title="pyad2 documentation" href="index.html" /> | |||||
</head> | </head> | ||||
<body> | <body> | ||||
<div class="related"> | <div class="related"> | ||||
@@ -36,7 +36,7 @@ | |||||
<li class="right" > | <li class="right" > | ||||
<a href="py-modindex.html" title="Python Module Index" | <a href="py-modindex.html" title="Python Module Index" | ||||
>modules</a> |</li> | >modules</a> |</li> | ||||
<li><a href="index.html">pyad2usb documentation</a> »</li> | |||||
<li><a href="index.html">pyad2 documentation</a> »</li> | |||||
</ul> | </ul> | ||||
</div> | </div> | ||||
@@ -74,13 +74,13 @@ | |||||
<table style="width: 100%" class="indextable genindextable"><tr> | <table style="width: 100%" class="indextable genindextable"><tr> | ||||
<td style="width: 33%" valign="top"><dl> | <td style="width: 33%" valign="top"><dl> | ||||
<dt><a href="pyad2usb.html#pyad2usb.ad2usb.AD2USB">AD2USB (class in pyad2usb.ad2usb)</a> | |||||
<dt><a href="pyad2.html#pyad2.ad2.AD2">AD2 (class in pyad2.ad2)</a> | |||||
</dt> | </dt> | ||||
</dl></td> | </dl></td> | ||||
<td style="width: 33%" valign="top"><dl> | <td style="width: 33%" valign="top"><dl> | ||||
<dt><a href="pyad2usb.event.html#pyad2usb.event.event.EventHandler.add">add() (pyad2usb.event.event.EventHandler method)</a> | |||||
<dt><a href="pyad2.event.html#pyad2.event.event.EventHandler.add">add() (pyad2.event.event.EventHandler method)</a> | |||||
</dt> | </dt> | ||||
</dl></td> | </dl></td> | ||||
@@ -90,18 +90,22 @@ | |||||
<table style="width: 100%" class="indextable genindextable"><tr> | <table style="width: 100%" class="indextable genindextable"><tr> | ||||
<td style="width: 33%" valign="top"><dl> | <td style="width: 33%" valign="top"><dl> | ||||
<dt><a href="pyad2usb.html#pyad2usb.ad2usb.AD2USB.BATTERY_TIMEOUT">BATTERY_TIMEOUT (pyad2usb.ad2usb.AD2USB attribute)</a> | |||||
<dt><a href="pyad2.html#pyad2.messages.BaseMessage">BaseMessage (class in pyad2.messages)</a> | |||||
</dt> | |||||
<dt><a href="pyad2.html#pyad2.ad2.AD2.BATTERY_TIMEOUT">BATTERY_TIMEOUT (pyad2.ad2.AD2 attribute)</a> | |||||
</dt> | </dt> | ||||
</dl></td> | </dl></td> | ||||
<td style="width: 33%" valign="top"><dl> | <td style="width: 33%" valign="top"><dl> | ||||
<dt><a href="pyad2usb.html#pyad2usb.devices.SerialDevice.BAUDRATE">BAUDRATE (pyad2usb.devices.SerialDevice attribute)</a> | |||||
<dt><a href="pyad2.html#pyad2.devices.SerialDevice.BAUDRATE">BAUDRATE (pyad2.devices.SerialDevice attribute)</a> | |||||
</dt> | </dt> | ||||
<dd><dl> | <dd><dl> | ||||
<dt><a href="pyad2usb.html#pyad2usb.devices.USBDevice.BAUDRATE">(pyad2usb.devices.USBDevice attribute)</a> | |||||
<dt><a href="pyad2.html#pyad2.devices.USBDevice.BAUDRATE">(pyad2.devices.USBDevice attribute)</a> | |||||
</dt> | </dt> | ||||
</dl></dd> | </dl></dd> | ||||
@@ -112,47 +116,51 @@ | |||||
<table style="width: 100%" class="indextable genindextable"><tr> | <table style="width: 100%" class="indextable genindextable"><tr> | ||||
<td style="width: 33%" valign="top"><dl> | <td style="width: 33%" valign="top"><dl> | ||||
<dt><a href="pyad2usb.html#pyad2usb.zonetracking.Zone.CHECK">CHECK (pyad2usb.zonetracking.Zone attribute)</a> | |||||
<dt><a href="pyad2.html#pyad2.zonetracking.Zone.CHECK">CHECK (pyad2.zonetracking.Zone attribute)</a> | |||||
</dt> | </dt> | ||||
<dt><a href="pyad2usb.html#pyad2usb.zonetracking.Zone.CLEAR">CLEAR (pyad2usb.zonetracking.Zone attribute)</a> | |||||
<dt><a href="pyad2.html#pyad2.zonetracking.Zone.CLEAR">CLEAR (pyad2.zonetracking.Zone attribute)</a> | |||||
</dt> | </dt> | ||||
<dt><a href="pyad2usb.html#pyad2usb.ad2usb.AD2USB.clear_zone">clear_zone() (pyad2usb.ad2usb.AD2USB method)</a> | |||||
<dt><a href="pyad2.html#pyad2.ad2.AD2.clear_zone">clear_zone() (pyad2.ad2.AD2 method)</a> | |||||
</dt> | </dt> | ||||
</dl></td> | </dl></td> | ||||
<td style="width: 33%" valign="top"><dl> | <td style="width: 33%" valign="top"><dl> | ||||
<dt><a href="pyad2usb.html#pyad2usb.ad2usb.AD2USB.close">close() (pyad2usb.ad2usb.AD2USB method)</a> | |||||
<dt><a href="pyad2.html#pyad2.ad2.AD2.close">close() (pyad2.ad2.AD2 method)</a> | |||||
</dt> | </dt> | ||||
<dd><dl> | <dd><dl> | ||||
<dt><a href="pyad2usb.html#pyad2usb.ad2usb.Overseer.close">(pyad2usb.ad2usb.Overseer method)</a> | |||||
<dt><a href="pyad2.html#pyad2.ad2.Overseer.close">(pyad2.ad2.Overseer method)</a> | |||||
</dt> | |||||
<dt><a href="pyad2.html#pyad2.devices.Device.close">(pyad2.devices.Device method)</a> | |||||
</dt> | </dt> | ||||
<dt><a href="pyad2usb.html#pyad2usb.devices.SerialDevice.close">(pyad2usb.devices.SerialDevice method)</a> | |||||
<dt><a href="pyad2.html#pyad2.devices.SerialDevice.close">(pyad2.devices.SerialDevice method)</a> | |||||
</dt> | </dt> | ||||
<dt><a href="pyad2usb.html#pyad2usb.devices.SocketDevice.close">(pyad2usb.devices.SocketDevice method)</a> | |||||
<dt><a href="pyad2.html#pyad2.devices.SocketDevice.close">(pyad2.devices.SocketDevice method)</a> | |||||
</dt> | </dt> | ||||
<dt><a href="pyad2usb.html#pyad2usb.devices.USBDevice.close">(pyad2usb.devices.USBDevice method)</a> | |||||
<dt><a href="pyad2.html#pyad2.devices.USBDevice.close">(pyad2.devices.USBDevice method)</a> | |||||
</dt> | </dt> | ||||
</dl></dd> | </dl></dd> | ||||
<dt><a href="pyad2usb.html#pyad2usb.util.CommError">CommError</a> | |||||
<dt><a href="pyad2.html#pyad2.util.CommError">CommError</a> | |||||
</dt> | </dt> | ||||
<dt><a href="pyad2usb.html#pyad2usb.ad2usb.Overseer.create">create() (pyad2usb.ad2usb.Overseer class method)</a> | |||||
<dt><a href="pyad2.html#pyad2.ad2.Overseer.create">create() (pyad2.ad2.Overseer class method)</a> | |||||
</dt> | </dt> | ||||
</dl></td> | </dl></td> | ||||
@@ -162,17 +170,21 @@ | |||||
<table style="width: 100%" class="indextable genindextable"><tr> | <table style="width: 100%" class="indextable genindextable"><tr> | ||||
<td style="width: 33%" valign="top"><dl> | <td style="width: 33%" valign="top"><dl> | ||||
<dt><a href="pyad2usb.html#pyad2usb.devices.Device">Device (class in pyad2usb.devices)</a> | |||||
<dt><a href="pyad2.html#pyad2.devices.USBDevice.description">description (pyad2.devices.USBDevice attribute)</a> | |||||
</dt> | </dt> | ||||
<dt><a href="pyad2usb.html#pyad2usb.devices.Device.ReadThread">Device.ReadThread (class in pyad2usb.devices)</a> | |||||
<dt><a href="pyad2.html#pyad2.devices.Device">Device (class in pyad2.devices)</a> | |||||
</dt> | </dt> | ||||
</dl></td> | </dl></td> | ||||
<td style="width: 33%" valign="top"><dl> | <td style="width: 33%" valign="top"><dl> | ||||
<dt><a href="pyad2usb.html#pyad2usb.ad2usb.Overseer.devices">devices() (pyad2usb.ad2usb.Overseer class method)</a> | |||||
<dt><a href="pyad2.html#pyad2.devices.Device.ReadThread">Device.ReadThread (class in pyad2.devices)</a> | |||||
</dt> | |||||
<dt><a href="pyad2.html#pyad2.ad2.Overseer.devices">devices() (pyad2.ad2.Overseer class method)</a> | |||||
</dt> | </dt> | ||||
</dl></td> | </dl></td> | ||||
@@ -182,21 +194,21 @@ | |||||
<table style="width: 100%" class="indextable genindextable"><tr> | <table style="width: 100%" class="indextable genindextable"><tr> | ||||
<td style="width: 33%" valign="top"><dl> | <td style="width: 33%" valign="top"><dl> | ||||
<dt><a href="pyad2usb.event.html#pyad2usb.event.event.Event">Event (class in pyad2usb.event.event)</a> | |||||
<dt><a href="pyad2.event.html#pyad2.event.event.Event">Event (class in pyad2.event.event)</a> | |||||
</dt> | </dt> | ||||
<dt><a href="pyad2usb.event.html#pyad2usb.event.event.EventHandler">EventHandler (class in pyad2usb.event.event)</a> | |||||
<dt><a href="pyad2.event.html#pyad2.event.event.EventHandler">EventHandler (class in pyad2.event.event)</a> | |||||
</dt> | </dt> | ||||
</dl></td> | </dl></td> | ||||
<td style="width: 33%" valign="top"><dl> | <td style="width: 33%" valign="top"><dl> | ||||
<dt><a href="pyad2usb.html#pyad2usb.messages.ExpanderMessage">ExpanderMessage (class in pyad2usb.messages)</a> | |||||
<dt><a href="pyad2.html#pyad2.messages.ExpanderMessage">ExpanderMessage (class in pyad2.messages)</a> | |||||
</dt> | </dt> | ||||
<dt><a href="pyad2usb.html#pyad2usb.zonetracking.Zonetracker.EXPIRE">EXPIRE (pyad2usb.zonetracking.Zonetracker attribute)</a> | |||||
<dt><a href="pyad2.html#pyad2.zonetracking.Zonetracker.EXPIRE">EXPIRE (pyad2.zonetracking.Zonetracker attribute)</a> | |||||
</dt> | </dt> | ||||
</dl></td> | </dl></td> | ||||
@@ -206,63 +218,63 @@ | |||||
<table style="width: 100%" class="indextable genindextable"><tr> | <table style="width: 100%" class="indextable genindextable"><tr> | ||||
<td style="width: 33%" valign="top"><dl> | <td style="width: 33%" valign="top"><dl> | ||||
<dt><a href="pyad2usb.html#pyad2usb.ad2usb.AD2USB.F1">F1 (pyad2usb.ad2usb.AD2USB attribute)</a> | |||||
<dt><a href="pyad2.html#pyad2.ad2.AD2.F1">F1 (pyad2.ad2.AD2 attribute)</a> | |||||
</dt> | </dt> | ||||
<dt><a href="pyad2usb.html#pyad2usb.ad2usb.AD2USB.F2">F2 (pyad2usb.ad2usb.AD2USB attribute)</a> | |||||
<dt><a href="pyad2.html#pyad2.ad2.AD2.F2">F2 (pyad2.ad2.AD2 attribute)</a> | |||||
</dt> | </dt> | ||||
<dt><a href="pyad2usb.html#pyad2usb.ad2usb.AD2USB.F3">F3 (pyad2usb.ad2usb.AD2USB attribute)</a> | |||||
<dt><a href="pyad2.html#pyad2.ad2.AD2.F3">F3 (pyad2.ad2.AD2 attribute)</a> | |||||
</dt> | </dt> | ||||
<dt><a href="pyad2usb.html#pyad2usb.ad2usb.AD2USB.F4">F4 (pyad2usb.ad2usb.AD2USB attribute)</a> | |||||
<dt><a href="pyad2.html#pyad2.ad2.AD2.F4">F4 (pyad2.ad2.AD2 attribute)</a> | |||||
</dt> | </dt> | ||||
<dt><a href="pyad2usb.html#pyad2usb.zonetracking.Zone.FAULT">FAULT (pyad2usb.zonetracking.Zone attribute)</a> | |||||
<dt><a href="pyad2.html#pyad2.zonetracking.Zone.FAULT">FAULT (pyad2.zonetracking.Zone attribute)</a> | |||||
</dt> | </dt> | ||||
<dt><a href="pyad2usb.html#pyad2usb.ad2usb.AD2USB.fault_zone">fault_zone() (pyad2usb.ad2usb.AD2USB method)</a> | |||||
<dt><a href="pyad2.html#pyad2.ad2.AD2.fault_zone">fault_zone() (pyad2.ad2.AD2 method)</a> | |||||
</dt> | </dt> | ||||
</dl></td> | </dl></td> | ||||
<td style="width: 33%" valign="top"><dl> | <td style="width: 33%" valign="top"><dl> | ||||
<dt><a href="pyad2usb.html#pyad2usb.ad2usb.Overseer.find_all">find_all() (pyad2usb.ad2usb.Overseer class method)</a> | |||||
<dt><a href="pyad2.html#pyad2.ad2.Overseer.find_all">find_all() (pyad2.ad2.Overseer class method)</a> | |||||
</dt> | </dt> | ||||
<dd><dl> | <dd><dl> | ||||
<dt><a href="pyad2usb.html#pyad2usb.devices.SerialDevice.find_all">(pyad2usb.devices.SerialDevice static method)</a> | |||||
<dt><a href="pyad2.html#pyad2.devices.SerialDevice.find_all">(pyad2.devices.SerialDevice static method)</a> | |||||
</dt> | </dt> | ||||
<dt><a href="pyad2usb.html#pyad2usb.devices.USBDevice.find_all">(pyad2usb.devices.USBDevice static method)</a> | |||||
<dt><a href="pyad2.html#pyad2.devices.USBDevice.find_all">(pyad2.devices.USBDevice static method)</a> | |||||
</dt> | </dt> | ||||
</dl></dd> | </dl></dd> | ||||
<dt><a href="pyad2usb.event.html#pyad2usb.event.event.EventHandler.fire">fire() (pyad2usb.event.event.EventHandler method)</a> | |||||
<dt><a href="pyad2.event.html#pyad2.event.event.EventHandler.fire">fire() (pyad2.event.event.EventHandler method)</a> | |||||
</dt> | </dt> | ||||
<dt><a href="pyad2usb.html#pyad2usb.ad2usb.AD2USB.FIRE_TIMEOUT">FIRE_TIMEOUT (pyad2usb.ad2usb.AD2USB attribute)</a> | |||||
<dt><a href="pyad2.html#pyad2.ad2.AD2.FIRE_TIMEOUT">FIRE_TIMEOUT (pyad2.ad2.AD2 attribute)</a> | |||||
</dt> | </dt> | ||||
<dt><a href="pyad2usb.html#pyad2usb.util.Firmware">Firmware (class in pyad2usb.util)</a> | |||||
<dt><a href="pyad2.html#pyad2.util.Firmware">Firmware (class in pyad2.util)</a> | |||||
</dt> | </dt> | ||||
<dt><a href="pyad2usb.html#pyad2usb.devices.USBDevice.FTDI_PRODUCT_ID">FTDI_PRODUCT_ID (pyad2usb.devices.USBDevice attribute)</a> | |||||
<dt><a href="pyad2.html#pyad2.devices.USBDevice.FTDI_PRODUCT_ID">FTDI_PRODUCT_ID (pyad2.devices.USBDevice attribute)</a> | |||||
</dt> | </dt> | ||||
<dt><a href="pyad2usb.html#pyad2usb.devices.USBDevice.FTDI_VENDOR_ID">FTDI_VENDOR_ID (pyad2usb.devices.USBDevice attribute)</a> | |||||
<dt><a href="pyad2.html#pyad2.devices.USBDevice.FTDI_VENDOR_ID">FTDI_VENDOR_ID (pyad2.devices.USBDevice attribute)</a> | |||||
</dt> | </dt> | ||||
</dl></td> | </dl></td> | ||||
@@ -272,13 +284,13 @@ | |||||
<table style="width: 100%" class="indextable genindextable"><tr> | <table style="width: 100%" class="indextable genindextable"><tr> | ||||
<td style="width: 33%" valign="top"><dl> | <td style="width: 33%" valign="top"><dl> | ||||
<dt><a href="pyad2usb.html#pyad2usb.ad2usb.AD2USB.get_config">get_config() (pyad2usb.ad2usb.AD2USB method)</a> | |||||
<dt><a href="pyad2.html#pyad2.ad2.AD2.get_config">get_config() (pyad2.ad2.AD2 method)</a> | |||||
</dt> | </dt> | ||||
</dl></td> | </dl></td> | ||||
<td style="width: 33%" valign="top"><dl> | <td style="width: 33%" valign="top"><dl> | ||||
<dt><a href="pyad2usb.html#pyad2usb.ad2usb.Overseer.get_device">get_device() (pyad2usb.ad2usb.Overseer method)</a> | |||||
<dt><a href="pyad2.html#pyad2.ad2.Overseer.get_device">get_device() (pyad2.ad2.Overseer method)</a> | |||||
</dt> | </dt> | ||||
</dl></td> | </dl></td> | ||||
@@ -288,23 +300,37 @@ | |||||
<table style="width: 100%" class="indextable genindextable"><tr> | <table style="width: 100%" class="indextable genindextable"><tr> | ||||
<td style="width: 33%" valign="top"><dl> | <td style="width: 33%" valign="top"><dl> | ||||
<dt><a href="pyad2usb.html#pyad2usb.ad2usb.AD2USB.id">id (pyad2usb.ad2usb.AD2USB attribute)</a> | |||||
<dt><a href="pyad2.html#pyad2.ad2.AD2.id">id (pyad2.ad2.AD2 attribute)</a> | |||||
</dt> | </dt> | ||||
<dd><dl> | <dd><dl> | ||||
<dt><a href="pyad2usb.html#pyad2usb.devices.Device.id">(pyad2usb.devices.Device attribute)</a> | |||||
<dt><a href="pyad2.html#pyad2.devices.Device.id">(pyad2.devices.Device attribute)</a> | |||||
</dt> | </dt> | ||||
</dl></dd> | </dl></dd> | ||||
<dt><a href="pyad2usb.html#pyad2usb.util.InvalidMessageError">InvalidMessageError</a> | |||||
<dt><a href="pyad2.html#pyad2.devices.SerialDevice.interface">interface (pyad2.devices.SerialDevice attribute)</a> | |||||
</dt> | |||||
<dd><dl> | |||||
<dt><a href="pyad2.html#pyad2.devices.SocketDevice.interface">(pyad2.devices.SocketDevice attribute)</a> | |||||
</dt> | |||||
<dt><a href="pyad2.html#pyad2.devices.USBDevice.interface">(pyad2.devices.USBDevice attribute)</a> | |||||
</dt> | </dt> | ||||
</dl></dd> | |||||
</dl></td> | </dl></td> | ||||
<td style="width: 33%" valign="top"><dl> | <td style="width: 33%" valign="top"><dl> | ||||
<dt><a href="pyad2usb.html#pyad2usb.devices.Device.is_reader_alive">is_reader_alive() (pyad2usb.devices.Device method)</a> | |||||
<dt><a href="pyad2.html#pyad2.util.InvalidMessageError">InvalidMessageError</a> | |||||
</dt> | |||||
<dt><a href="pyad2.html#pyad2.devices.Device.is_reader_alive">is_reader_alive() (pyad2.devices.Device method)</a> | |||||
</dt> | </dt> | ||||
</dl></td> | </dl></td> | ||||
@@ -314,7 +340,7 @@ | |||||
<table style="width: 100%" class="indextable genindextable"><tr> | <table style="width: 100%" class="indextable genindextable"><tr> | ||||
<td style="width: 33%" valign="top"><dl> | <td style="width: 33%" valign="top"><dl> | ||||
<dt><a href="pyad2usb.html#pyad2usb.messages.LRRMessage">LRRMessage (class in pyad2usb.messages)</a> | |||||
<dt><a href="pyad2.html#pyad2.messages.LRRMessage">LRRMessage (class in pyad2.messages)</a> | |||||
</dt> | </dt> | ||||
</dl></td> | </dl></td> | ||||
@@ -324,7 +350,7 @@ | |||||
<table style="width: 100%" class="indextable genindextable"><tr> | <table style="width: 100%" class="indextable genindextable"><tr> | ||||
<td style="width: 33%" valign="top"><dl> | <td style="width: 33%" valign="top"><dl> | ||||
<dt><a href="pyad2usb.html#pyad2usb.messages.Message">Message (class in pyad2usb.messages)</a> | |||||
<dt><a href="pyad2.html#pyad2.messages.Message">Message (class in pyad2.messages)</a> | |||||
</dt> | </dt> | ||||
</dl></td> | </dl></td> | ||||
@@ -334,7 +360,7 @@ | |||||
<table style="width: 100%" class="indextable genindextable"><tr> | <table style="width: 100%" class="indextable genindextable"><tr> | ||||
<td style="width: 33%" valign="top"><dl> | <td style="width: 33%" valign="top"><dl> | ||||
<dt><a href="pyad2usb.html#pyad2usb.util.NoDeviceError">NoDeviceError</a> | |||||
<dt><a href="pyad2.html#pyad2.util.NoDeviceError">NoDeviceError</a> | |||||
</dt> | </dt> | ||||
</dl></td> | </dl></td> | ||||
@@ -344,143 +370,151 @@ | |||||
<table style="width: 100%" class="indextable genindextable"><tr> | <table style="width: 100%" class="indextable genindextable"><tr> | ||||
<td style="width: 33%" valign="top"><dl> | <td style="width: 33%" valign="top"><dl> | ||||
<dt><a href="pyad2usb.html#pyad2usb.ad2usb.AD2USB.on_alarm">on_alarm (pyad2usb.ad2usb.AD2USB attribute)</a> | |||||
<dt><a href="pyad2.html#pyad2.ad2.AD2.on_alarm">on_alarm (pyad2.ad2.AD2 attribute)</a> | |||||
</dt> | </dt> | ||||
<dt><a href="pyad2usb.html#pyad2usb.ad2usb.AD2USB.on_arm">on_arm (pyad2usb.ad2usb.AD2USB attribute)</a> | |||||
<dt><a href="pyad2.html#pyad2.ad2.AD2.on_arm">on_arm (pyad2.ad2.AD2 attribute)</a> | |||||
</dt> | </dt> | ||||
<dt><a href="pyad2usb.html#pyad2usb.ad2usb.Overseer.on_attached">on_attached (pyad2usb.ad2usb.Overseer attribute)</a> | |||||
<dt><a href="pyad2.html#pyad2.ad2.Overseer.on_attached">on_attached (pyad2.ad2.Overseer attribute)</a> | |||||
</dt> | </dt> | ||||
<dt><a href="pyad2usb.html#pyad2usb.ad2usb.AD2USB.on_boot">on_boot (pyad2usb.ad2usb.AD2USB attribute)</a> | |||||
<dt><a href="pyad2.html#pyad2.ad2.AD2.on_boot">on_boot (pyad2.ad2.AD2 attribute)</a> | |||||
</dt> | </dt> | ||||
<dt><a href="pyad2usb.html#pyad2usb.ad2usb.AD2USB.on_bypass">on_bypass (pyad2usb.ad2usb.AD2USB attribute)</a> | |||||
<dt><a href="pyad2.html#pyad2.ad2.AD2.on_bypass">on_bypass (pyad2.ad2.AD2 attribute)</a> | |||||
</dt> | </dt> | ||||
<dt><a href="pyad2usb.html#pyad2usb.ad2usb.AD2USB.on_close">on_close (pyad2usb.ad2usb.AD2USB attribute)</a> | |||||
<dt><a href="pyad2.html#pyad2.ad2.AD2.on_close">on_close (pyad2.ad2.AD2 attribute)</a> | |||||
</dt> | </dt> | ||||
<dd><dl> | <dd><dl> | ||||
<dt><a href="pyad2usb.html#pyad2usb.devices.Device.on_close">(pyad2usb.devices.Device attribute)</a> | |||||
<dt><a href="pyad2.html#pyad2.devices.Device.on_close">(pyad2.devices.Device attribute)</a> | |||||
</dt> | </dt> | ||||
</dl></dd> | </dl></dd> | ||||
<dt><a href="pyad2usb.html#pyad2usb.ad2usb.AD2USB.on_config_received">on_config_received (pyad2usb.ad2usb.AD2USB attribute)</a> | |||||
<dt><a href="pyad2.html#pyad2.ad2.AD2.on_config_received">on_config_received (pyad2.ad2.AD2 attribute)</a> | |||||
</dt> | </dt> | ||||
<dt><a href="pyad2usb.html#pyad2usb.ad2usb.Overseer.on_detached">on_detached (pyad2usb.ad2usb.Overseer attribute)</a> | |||||
<dt><a href="pyad2.html#pyad2.ad2.Overseer.on_detached">on_detached (pyad2.ad2.Overseer attribute)</a> | |||||
</dt> | </dt> | ||||
<dt><a href="pyad2usb.html#pyad2usb.ad2usb.AD2USB.on_disarm">on_disarm (pyad2usb.ad2usb.AD2USB attribute)</a> | |||||
<dt><a href="pyad2.html#pyad2.ad2.AD2.on_disarm">on_disarm (pyad2.ad2.AD2 attribute)</a> | |||||
</dt> | </dt> | ||||
<dt><a href="pyad2usb.html#pyad2usb.zonetracking.Zonetracker.on_fault">on_fault (pyad2usb.zonetracking.Zonetracker attribute)</a> | |||||
<dt><a href="pyad2.html#pyad2.zonetracking.Zonetracker.on_fault">on_fault (pyad2.zonetracking.Zonetracker attribute)</a> | |||||
</dt> | </dt> | ||||
<dt><a href="pyad2usb.html#pyad2usb.ad2usb.AD2USB.on_fire">on_fire (pyad2usb.ad2usb.AD2USB attribute)</a> | |||||
<dt><a href="pyad2.html#pyad2.ad2.AD2.on_fire">on_fire (pyad2.ad2.AD2 attribute)</a> | |||||
</dt> | </dt> | ||||
<dt><a href="pyad2usb.html#pyad2usb.ad2usb.AD2USB.on_low_battery">on_low_battery (pyad2usb.ad2usb.AD2USB attribute)</a> | |||||
<dt><a href="pyad2.html#pyad2.ad2.AD2.on_low_battery">on_low_battery (pyad2.ad2.AD2 attribute)</a> | |||||
</dt> | </dt> | ||||
<dt><a href="pyad2usb.html#pyad2usb.ad2usb.AD2USB.on_lrr_message">on_lrr_message (pyad2usb.ad2usb.AD2USB attribute)</a> | |||||
<dt><a href="pyad2.html#pyad2.ad2.AD2.on_lrr_message">on_lrr_message (pyad2.ad2.AD2 attribute)</a> | |||||
</dt> | </dt> | ||||
</dl></td> | |||||
<td style="width: 33%" valign="top"><dl> | |||||
<dt><a href="pyad2usb.html#pyad2usb.ad2usb.AD2USB.on_message">on_message (pyad2usb.ad2usb.AD2USB attribute)</a> | |||||
<dt><a href="pyad2.html#pyad2.ad2.AD2.on_message">on_message (pyad2.ad2.AD2 attribute)</a> | |||||
</dt> | </dt> | ||||
</dl></td> | |||||
<td style="width: 33%" valign="top"><dl> | |||||
<dt><a href="pyad2usb.html#pyad2usb.ad2usb.AD2USB.on_open">on_open (pyad2usb.ad2usb.AD2USB attribute)</a> | |||||
<dt><a href="pyad2.html#pyad2.ad2.AD2.on_open">on_open (pyad2.ad2.AD2 attribute)</a> | |||||
</dt> | </dt> | ||||
<dd><dl> | <dd><dl> | ||||
<dt><a href="pyad2usb.html#pyad2usb.devices.Device.on_open">(pyad2usb.devices.Device attribute)</a> | |||||
<dt><a href="pyad2.html#pyad2.devices.Device.on_open">(pyad2.devices.Device attribute)</a> | |||||
</dt> | </dt> | ||||
</dl></dd> | </dl></dd> | ||||
<dt><a href="pyad2usb.html#pyad2usb.ad2usb.AD2USB.on_panic">on_panic (pyad2usb.ad2usb.AD2USB attribute)</a> | |||||
<dt><a href="pyad2.html#pyad2.ad2.AD2.on_panic">on_panic (pyad2.ad2.AD2 attribute)</a> | |||||
</dt> | </dt> | ||||
<dt><a href="pyad2usb.html#pyad2usb.ad2usb.AD2USB.on_power_changed">on_power_changed (pyad2usb.ad2usb.AD2USB attribute)</a> | |||||
<dt><a href="pyad2.html#pyad2.ad2.AD2.on_power_changed">on_power_changed (pyad2.ad2.AD2 attribute)</a> | |||||
</dt> | </dt> | ||||
<dt><a href="pyad2usb.html#pyad2usb.ad2usb.AD2USB.on_read">on_read (pyad2usb.ad2usb.AD2USB attribute)</a> | |||||
<dt><a href="pyad2.html#pyad2.ad2.AD2.on_read">on_read (pyad2.ad2.AD2 attribute)</a> | |||||
</dt> | </dt> | ||||
<dd><dl> | <dd><dl> | ||||
<dt><a href="pyad2usb.html#pyad2usb.devices.Device.on_read">(pyad2usb.devices.Device attribute)</a> | |||||
<dt><a href="pyad2.html#pyad2.devices.Device.on_read">(pyad2.devices.Device attribute)</a> | |||||
</dt> | </dt> | ||||
</dl></dd> | </dl></dd> | ||||
<dt><a href="pyad2usb.html#pyad2usb.zonetracking.Zonetracker.on_restore">on_restore (pyad2usb.zonetracking.Zonetracker attribute)</a> | |||||
<dt><a href="pyad2.html#pyad2.ad2.AD2.on_relay_changed">on_relay_changed (pyad2.ad2.AD2 attribute)</a> | |||||
</dt> | </dt> | ||||
<dt><a href="pyad2usb.html#pyad2usb.ad2usb.AD2USB.on_write">on_write (pyad2usb.ad2usb.AD2USB attribute)</a> | |||||
<dt><a href="pyad2.html#pyad2.zonetracking.Zonetracker.on_restore">on_restore (pyad2.zonetracking.Zonetracker attribute)</a> | |||||
</dt> | |||||
<dt><a href="pyad2.html#pyad2.ad2.AD2.on_rfx_message">on_rfx_message (pyad2.ad2.AD2 attribute)</a> | |||||
</dt> | |||||
<dt><a href="pyad2.html#pyad2.ad2.AD2.on_write">on_write (pyad2.ad2.AD2 attribute)</a> | |||||
</dt> | </dt> | ||||
<dd><dl> | <dd><dl> | ||||
<dt><a href="pyad2usb.html#pyad2usb.devices.Device.on_write">(pyad2usb.devices.Device attribute)</a> | |||||
<dt><a href="pyad2.html#pyad2.devices.Device.on_write">(pyad2.devices.Device attribute)</a> | |||||
</dt> | </dt> | ||||
</dl></dd> | </dl></dd> | ||||
<dt><a href="pyad2usb.html#pyad2usb.ad2usb.AD2USB.on_zone_fault">on_zone_fault (pyad2usb.ad2usb.AD2USB attribute)</a> | |||||
<dt><a href="pyad2.html#pyad2.ad2.AD2.on_zone_fault">on_zone_fault (pyad2.ad2.AD2 attribute)</a> | |||||
</dt> | </dt> | ||||
<dt><a href="pyad2usb.html#pyad2usb.ad2usb.AD2USB.on_zone_restore">on_zone_restore (pyad2usb.ad2usb.AD2USB attribute)</a> | |||||
<dt><a href="pyad2.html#pyad2.ad2.AD2.on_zone_restore">on_zone_restore (pyad2.ad2.AD2 attribute)</a> | |||||
</dt> | </dt> | ||||
<dt><a href="pyad2usb.html#pyad2usb.ad2usb.AD2USB.open">open() (pyad2usb.ad2usb.AD2USB method)</a> | |||||
<dt><a href="pyad2.html#pyad2.ad2.AD2.open">open() (pyad2.ad2.AD2 method)</a> | |||||
</dt> | </dt> | ||||
<dd><dl> | <dd><dl> | ||||
<dt><a href="pyad2usb.html#pyad2usb.devices.SerialDevice.open">(pyad2usb.devices.SerialDevice method)</a> | |||||
<dt><a href="pyad2.html#pyad2.devices.SerialDevice.open">(pyad2.devices.SerialDevice method)</a> | |||||
</dt> | </dt> | ||||
<dt><a href="pyad2usb.html#pyad2usb.devices.SocketDevice.open">(pyad2usb.devices.SocketDevice method)</a> | |||||
<dt><a href="pyad2.html#pyad2.devices.SocketDevice.open">(pyad2.devices.SocketDevice method)</a> | |||||
</dt> | </dt> | ||||
<dt><a href="pyad2usb.html#pyad2usb.devices.USBDevice.open">(pyad2usb.devices.USBDevice method)</a> | |||||
<dt><a href="pyad2.html#pyad2.devices.USBDevice.open">(pyad2.devices.USBDevice method)</a> | |||||
</dt> | </dt> | ||||
</dl></dd> | </dl></dd> | ||||
<dt><a href="pyad2usb.html#pyad2usb.ad2usb.Overseer">Overseer (class in pyad2usb.ad2usb)</a> | |||||
<dt><a href="pyad2.html#pyad2.ad2.Overseer">Overseer (class in pyad2.ad2)</a> | |||||
</dt> | </dt> | ||||
<dt><a href="pyad2usb.html#pyad2usb.ad2usb.Overseer.DetectThread">Overseer.DetectThread (class in pyad2usb.ad2usb)</a> | |||||
<dt><a href="pyad2.html#pyad2.ad2.Overseer.DetectThread">Overseer.DetectThread (class in pyad2.ad2)</a> | |||||
</dt> | </dt> | ||||
</dl></td> | </dl></td> | ||||
@@ -490,37 +524,37 @@ | |||||
<table style="width: 100%" class="indextable genindextable"><tr> | <table style="width: 100%" class="indextable genindextable"><tr> | ||||
<td style="width: 33%" valign="top"><dl> | <td style="width: 33%" valign="top"><dl> | ||||
<dt><a href="pyad2usb.html#module-pyad2usb.ad2usb">pyad2usb.ad2usb (module)</a> | |||||
<dt><a href="pyad2.html#module-pyad2.ad2">pyad2.ad2 (module)</a> | |||||
</dt> | </dt> | ||||
<dt><a href="pyad2usb.html#module-pyad2usb.devices">pyad2usb.devices (module)</a> | |||||
<dt><a href="pyad2.html#module-pyad2.devices">pyad2.devices (module)</a> | |||||
</dt> | </dt> | ||||
<dt><a href="pyad2usb.event.html#module-pyad2usb.event">pyad2usb.event (module)</a> | |||||
<dt><a href="pyad2.event.html#module-pyad2.event">pyad2.event (module)</a> | |||||
</dt> | </dt> | ||||
<dt><a href="pyad2usb.event.html#module-pyad2usb.event.event">pyad2usb.event.event (module)</a> | |||||
<dt><a href="pyad2.event.html#module-pyad2.event.event">pyad2.event.event (module)</a> | |||||
</dt> | </dt> | ||||
</dl></td> | </dl></td> | ||||
<td style="width: 33%" valign="top"><dl> | <td style="width: 33%" valign="top"><dl> | ||||
<dt><a href="pyad2usb.html#module-pyad2usb.messages">pyad2usb.messages (module)</a> | |||||
<dt><a href="pyad2.html#module-pyad2.messages">pyad2.messages (module)</a> | |||||
</dt> | </dt> | ||||
<dt><a href="pyad2usb.html#module-pyad2usb.panels">pyad2usb.panels (module)</a> | |||||
<dt><a href="pyad2.html#module-pyad2.panels">pyad2.panels (module)</a> | |||||
</dt> | </dt> | ||||
<dt><a href="pyad2usb.html#module-pyad2usb.util">pyad2usb.util (module)</a> | |||||
<dt><a href="pyad2.html#module-pyad2.util">pyad2.util (module)</a> | |||||
</dt> | </dt> | ||||
<dt><a href="pyad2usb.html#module-pyad2usb.zonetracking">pyad2usb.zonetracking (module)</a> | |||||
<dt><a href="pyad2.html#module-pyad2.zonetracking">pyad2.zonetracking (module)</a> | |||||
</dt> | </dt> | ||||
</dl></td> | </dl></td> | ||||
@@ -530,62 +564,62 @@ | |||||
<table style="width: 100%" class="indextable genindextable"><tr> | <table style="width: 100%" class="indextable genindextable"><tr> | ||||
<td style="width: 33%" valign="top"><dl> | <td style="width: 33%" valign="top"><dl> | ||||
<dt><a href="pyad2usb.html#pyad2usb.devices.SerialDevice.read">read() (pyad2usb.devices.SerialDevice method)</a> | |||||
<dt><a href="pyad2.html#pyad2.devices.SerialDevice.read">read() (pyad2.devices.SerialDevice method)</a> | |||||
</dt> | </dt> | ||||
<dd><dl> | <dd><dl> | ||||
<dt><a href="pyad2usb.html#pyad2usb.devices.SocketDevice.read">(pyad2usb.devices.SocketDevice method)</a> | |||||
<dt><a href="pyad2.html#pyad2.devices.SocketDevice.read">(pyad2.devices.SocketDevice method)</a> | |||||
</dt> | </dt> | ||||
<dt><a href="pyad2usb.html#pyad2usb.devices.USBDevice.read">(pyad2usb.devices.USBDevice method)</a> | |||||
<dt><a href="pyad2.html#pyad2.devices.USBDevice.read">(pyad2.devices.USBDevice method)</a> | |||||
</dt> | </dt> | ||||
</dl></dd> | </dl></dd> | ||||
<dt><a href="pyad2usb.html#pyad2usb.devices.SerialDevice.read_line">read_line() (pyad2usb.devices.SerialDevice method)</a> | |||||
<dt><a href="pyad2.html#pyad2.devices.SerialDevice.read_line">read_line() (pyad2.devices.SerialDevice method)</a> | |||||
</dt> | </dt> | ||||
<dd><dl> | <dd><dl> | ||||
<dt><a href="pyad2usb.html#pyad2usb.devices.SocketDevice.read_line">(pyad2usb.devices.SocketDevice method)</a> | |||||
<dt><a href="pyad2.html#pyad2.devices.SocketDevice.read_line">(pyad2.devices.SocketDevice method)</a> | |||||
</dt> | </dt> | ||||
<dt><a href="pyad2usb.html#pyad2usb.devices.USBDevice.read_line">(pyad2usb.devices.USBDevice method)</a> | |||||
<dt><a href="pyad2.html#pyad2.devices.USBDevice.read_line">(pyad2.devices.USBDevice method)</a> | |||||
</dt> | </dt> | ||||
</dl></dd> | </dl></dd> | ||||
<dt><a href="pyad2usb.html#pyad2usb.devices.Device.ReadThread.READ_TIMEOUT">READ_TIMEOUT (pyad2usb.devices.Device.ReadThread attribute)</a> | |||||
<dt><a href="pyad2.html#pyad2.devices.Device.ReadThread.READ_TIMEOUT">READ_TIMEOUT (pyad2.devices.Device.ReadThread attribute)</a> | |||||
</dt> | </dt> | ||||
<dt><a href="pyad2usb.html#pyad2usb.ad2usb.AD2USB.reboot">reboot() (pyad2usb.ad2usb.AD2USB method)</a> | |||||
<dt><a href="pyad2.html#pyad2.ad2.AD2.reboot">reboot() (pyad2.ad2.AD2 method)</a> | |||||
</dt> | </dt> | ||||
</dl></td> | </dl></td> | ||||
<td style="width: 33%" valign="top"><dl> | <td style="width: 33%" valign="top"><dl> | ||||
<dt><a href="pyad2usb.html#pyad2usb.messages.ExpanderMessage.RELAY">RELAY (pyad2usb.messages.ExpanderMessage attribute)</a> | |||||
<dt><a href="pyad2.html#pyad2.messages.ExpanderMessage.RELAY">RELAY (pyad2.messages.ExpanderMessage attribute)</a> | |||||
</dt> | </dt> | ||||
<dt><a href="pyad2usb.event.html#pyad2usb.event.event.EventHandler.remove">remove() (pyad2usb.event.event.EventHandler method)</a> | |||||
<dt><a href="pyad2.event.html#pyad2.event.event.EventHandler.remove">remove() (pyad2.event.event.EventHandler method)</a> | |||||
</dt> | </dt> | ||||
<dt><a href="pyad2usb.html#pyad2usb.messages.RFMessage">RFMessage (class in pyad2usb.messages)</a> | |||||
<dt><a href="pyad2.html#pyad2.messages.RFMessage">RFMessage (class in pyad2.messages)</a> | |||||
</dt> | </dt> | ||||
<dt><a href="pyad2usb.html#pyad2usb.ad2usb.Overseer.DetectThread.run">run() (pyad2usb.ad2usb.Overseer.DetectThread method)</a> | |||||
<dt><a href="pyad2.html#pyad2.ad2.Overseer.DetectThread.run">run() (pyad2.ad2.Overseer.DetectThread method)</a> | |||||
</dt> | </dt> | ||||
<dd><dl> | <dd><dl> | ||||
<dt><a href="pyad2usb.html#pyad2usb.devices.Device.ReadThread.run">(pyad2usb.devices.Device.ReadThread method)</a> | |||||
<dt><a href="pyad2.html#pyad2.devices.Device.ReadThread.run">(pyad2.devices.Device.ReadThread method)</a> | |||||
</dt> | </dt> | ||||
</dl></dd> | </dl></dd> | ||||
@@ -596,67 +630,91 @@ | |||||
<table style="width: 100%" class="indextable genindextable"><tr> | <table style="width: 100%" class="indextable genindextable"><tr> | ||||
<td style="width: 33%" valign="top"><dl> | <td style="width: 33%" valign="top"><dl> | ||||
<dt><a href="pyad2usb.html#pyad2usb.ad2usb.AD2USB.save_config">save_config() (pyad2usb.ad2usb.AD2USB method)</a> | |||||
<dt><a href="pyad2.html#pyad2.ad2.AD2.save_config">save_config() (pyad2.ad2.AD2 method)</a> | |||||
</dt> | |||||
<dt><a href="pyad2.html#pyad2.ad2.AD2.send">send() (pyad2.ad2.AD2 method)</a> | |||||
</dt> | |||||
<dt><a href="pyad2.html#pyad2.devices.USBDevice.serial_number">serial_number (pyad2.devices.USBDevice attribute)</a> | |||||
</dt> | </dt> | ||||
<dt><a href="pyad2usb.html#pyad2usb.devices.SerialDevice">SerialDevice (class in pyad2usb.devices)</a> | |||||
<dt><a href="pyad2.html#pyad2.devices.SerialDevice">SerialDevice (class in pyad2.devices)</a> | |||||
</dt> | </dt> | ||||
<dt><a href="pyad2usb.html#pyad2usb.devices.SocketDevice">SocketDevice (class in pyad2usb.devices)</a> | |||||
<dt><a href="pyad2.html#pyad2.devices.SocketDevice">SocketDevice (class in pyad2.devices)</a> | |||||
</dt> | </dt> | ||||
<dt><a href="pyad2usb.html#pyad2usb.util.Firmware.STAGE_BOOT">STAGE_BOOT (pyad2usb.util.Firmware attribute)</a> | |||||
<dt><a href="pyad2.html#pyad2.devices.SocketDevice.ssl">ssl (pyad2.devices.SocketDevice attribute)</a> | |||||
</dt> | </dt> | ||||
<dt><a href="pyad2usb.html#pyad2usb.util.Firmware.STAGE_DONE">STAGE_DONE (pyad2usb.util.Firmware attribute)</a> | |||||
<dt><a href="pyad2.html#pyad2.devices.SocketDevice.ssl_ca">ssl_ca (pyad2.devices.SocketDevice attribute)</a> | |||||
</dt> | </dt> | ||||
<dt><a href="pyad2usb.html#pyad2usb.util.Firmware.STAGE_LOAD">STAGE_LOAD (pyad2usb.util.Firmware attribute)</a> | |||||
<dt><a href="pyad2.html#pyad2.devices.SocketDevice.ssl_certificate">ssl_certificate (pyad2.devices.SocketDevice attribute)</a> | |||||
</dt> | </dt> | ||||
<dt><a href="pyad2usb.html#pyad2usb.util.Firmware.STAGE_START">STAGE_START (pyad2usb.util.Firmware attribute)</a> | |||||
<dt><a href="pyad2.html#pyad2.devices.SocketDevice.ssl_key">ssl_key (pyad2.devices.SocketDevice attribute)</a> | |||||
</dt> | |||||
<dt><a href="pyad2.html#pyad2.util.Firmware.STAGE_BOOT">STAGE_BOOT (pyad2.util.Firmware attribute)</a> | |||||
</dt> | </dt> | ||||
</dl></td> | </dl></td> | ||||
<td style="width: 33%" valign="top"><dl> | <td style="width: 33%" valign="top"><dl> | ||||
<dt><a href="pyad2usb.html#pyad2usb.util.Firmware.STAGE_UPLOADING">STAGE_UPLOADING (pyad2usb.util.Firmware attribute)</a> | |||||
<dt><a href="pyad2.html#pyad2.util.Firmware.STAGE_DONE">STAGE_DONE (pyad2.util.Firmware attribute)</a> | |||||
</dt> | |||||
<dt><a href="pyad2.html#pyad2.util.Firmware.STAGE_LOAD">STAGE_LOAD (pyad2.util.Firmware attribute)</a> | |||||
</dt> | |||||
<dt><a href="pyad2.html#pyad2.util.Firmware.STAGE_START">STAGE_START (pyad2.util.Firmware attribute)</a> | |||||
</dt> | |||||
<dt><a href="pyad2.html#pyad2.util.Firmware.STAGE_UPLOADING">STAGE_UPLOADING (pyad2.util.Firmware attribute)</a> | |||||
</dt> | </dt> | ||||
<dt><a href="pyad2usb.html#pyad2usb.util.Firmware.STAGE_WAITING">STAGE_WAITING (pyad2usb.util.Firmware attribute)</a> | |||||
<dt><a href="pyad2.html#pyad2.util.Firmware.STAGE_WAITING">STAGE_WAITING (pyad2.util.Firmware attribute)</a> | |||||
</dt> | </dt> | ||||
<dt><a href="pyad2usb.html#pyad2usb.ad2usb.Overseer.start">start() (pyad2usb.ad2usb.Overseer method)</a> | |||||
<dt><a href="pyad2.html#pyad2.ad2.Overseer.start">start() (pyad2.ad2.Overseer method)</a> | |||||
</dt> | </dt> | ||||
<dt><a href="pyad2usb.html#pyad2usb.zonetracking.Zone.STATUS">STATUS (pyad2usb.zonetracking.Zone attribute)</a> | |||||
<dt><a href="pyad2.html#pyad2.zonetracking.Zone.STATUS">STATUS (pyad2.zonetracking.Zone attribute)</a> | |||||
</dt> | </dt> | ||||
<dt><a href="pyad2usb.html#pyad2usb.ad2usb.Overseer.stop">stop() (pyad2usb.ad2usb.Overseer method)</a> | |||||
<dt><a href="pyad2.html#pyad2.ad2.Overseer.stop">stop() (pyad2.ad2.Overseer method)</a> | |||||
</dt> | </dt> | ||||
<dd><dl> | <dd><dl> | ||||
<dt><a href="pyad2usb.html#pyad2usb.ad2usb.Overseer.DetectThread.stop">(pyad2usb.ad2usb.Overseer.DetectThread method)</a> | |||||
<dt><a href="pyad2.html#pyad2.ad2.Overseer.DetectThread.stop">(pyad2.ad2.Overseer.DetectThread method)</a> | |||||
</dt> | </dt> | ||||
<dt><a href="pyad2usb.html#pyad2usb.devices.Device.ReadThread.stop">(pyad2usb.devices.Device.ReadThread method)</a> | |||||
<dt><a href="pyad2.html#pyad2.devices.Device.ReadThread.stop">(pyad2.devices.Device.ReadThread method)</a> | |||||
</dt> | </dt> | ||||
</dl></dd> | </dl></dd> | ||||
<dt><a href="pyad2usb.html#pyad2usb.devices.Device.stop_reader">stop_reader() (pyad2usb.devices.Device method)</a> | |||||
<dt><a href="pyad2.html#pyad2.devices.Device.stop_reader">stop_reader() (pyad2.devices.Device method)</a> | |||||
</dt> | </dt> | ||||
</dl></td> | </dl></td> | ||||
@@ -666,7 +724,7 @@ | |||||
<table style="width: 100%" class="indextable genindextable"><tr> | <table style="width: 100%" class="indextable genindextable"><tr> | ||||
<td style="width: 33%" valign="top"><dl> | <td style="width: 33%" valign="top"><dl> | ||||
<dt><a href="pyad2usb.html#pyad2usb.util.TimeoutError">TimeoutError</a> | |||||
<dt><a href="pyad2.html#pyad2.util.TimeoutError">TimeoutError</a> | |||||
</dt> | </dt> | ||||
</dl></td> | </dl></td> | ||||
@@ -676,17 +734,17 @@ | |||||
<table style="width: 100%" class="indextable genindextable"><tr> | <table style="width: 100%" class="indextable genindextable"><tr> | ||||
<td style="width: 33%" valign="top"><dl> | <td style="width: 33%" valign="top"><dl> | ||||
<dt><a href="pyad2usb.html#pyad2usb.zonetracking.Zonetracker.update">update() (pyad2usb.zonetracking.Zonetracker method)</a> | |||||
<dt><a href="pyad2.html#pyad2.zonetracking.Zonetracker.update">update() (pyad2.zonetracking.Zonetracker method)</a> | |||||
</dt> | </dt> | ||||
<dt><a href="pyad2usb.html#pyad2usb.util.Firmware.upload">upload() (pyad2usb.util.Firmware static method)</a> | |||||
<dt><a href="pyad2.html#pyad2.util.Firmware.upload">upload() (pyad2.util.Firmware static method)</a> | |||||
</dt> | </dt> | ||||
</dl></td> | </dl></td> | ||||
<td style="width: 33%" valign="top"><dl> | <td style="width: 33%" valign="top"><dl> | ||||
<dt><a href="pyad2usb.html#pyad2usb.devices.USBDevice">USBDevice (class in pyad2usb.devices)</a> | |||||
<dt><a href="pyad2.html#pyad2.devices.USBDevice">USBDevice (class in pyad2.devices)</a> | |||||
</dt> | </dt> | ||||
</dl></td> | </dl></td> | ||||
@@ -696,16 +754,16 @@ | |||||
<table style="width: 100%" class="indextable genindextable"><tr> | <table style="width: 100%" class="indextable genindextable"><tr> | ||||
<td style="width: 33%" valign="top"><dl> | <td style="width: 33%" valign="top"><dl> | ||||
<dt><a href="pyad2usb.html#pyad2usb.devices.SerialDevice.write">write() (pyad2usb.devices.SerialDevice method)</a> | |||||
<dt><a href="pyad2.html#pyad2.devices.SerialDevice.write">write() (pyad2.devices.SerialDevice method)</a> | |||||
</dt> | </dt> | ||||
<dd><dl> | <dd><dl> | ||||
<dt><a href="pyad2usb.html#pyad2usb.devices.SocketDevice.write">(pyad2usb.devices.SocketDevice method)</a> | |||||
<dt><a href="pyad2.html#pyad2.devices.SocketDevice.write">(pyad2.devices.SocketDevice method)</a> | |||||
</dt> | </dt> | ||||
<dt><a href="pyad2usb.html#pyad2usb.devices.USBDevice.write">(pyad2usb.devices.USBDevice method)</a> | |||||
<dt><a href="pyad2.html#pyad2.devices.USBDevice.write">(pyad2.devices.USBDevice method)</a> | |||||
</dt> | </dt> | ||||
</dl></dd> | </dl></dd> | ||||
@@ -716,17 +774,17 @@ | |||||
<table style="width: 100%" class="indextable genindextable"><tr> | <table style="width: 100%" class="indextable genindextable"><tr> | ||||
<td style="width: 33%" valign="top"><dl> | <td style="width: 33%" valign="top"><dl> | ||||
<dt><a href="pyad2usb.html#pyad2usb.zonetracking.Zone">Zone (class in pyad2usb.zonetracking)</a> | |||||
<dt><a href="pyad2.html#pyad2.zonetracking.Zone">Zone (class in pyad2.zonetracking)</a> | |||||
</dt> | </dt> | ||||
<dt><a href="pyad2usb.html#pyad2usb.messages.ExpanderMessage.ZONE">ZONE (pyad2usb.messages.ExpanderMessage attribute)</a> | |||||
<dt><a href="pyad2.html#pyad2.messages.ExpanderMessage.ZONE">ZONE (pyad2.messages.ExpanderMessage attribute)</a> | |||||
</dt> | </dt> | ||||
</dl></td> | </dl></td> | ||||
<td style="width: 33%" valign="top"><dl> | <td style="width: 33%" valign="top"><dl> | ||||
<dt><a href="pyad2usb.html#pyad2usb.zonetracking.Zonetracker">Zonetracker (class in pyad2usb.zonetracking)</a> | |||||
<dt><a href="pyad2.html#pyad2.zonetracking.Zonetracker">Zonetracker (class in pyad2.zonetracking)</a> | |||||
</dt> | </dt> | ||||
</dl></td> | </dl></td> | ||||
@@ -768,7 +826,7 @@ | |||||
<li class="right" > | <li class="right" > | ||||
<a href="py-modindex.html" title="Python Module Index" | <a href="py-modindex.html" title="Python Module Index" | ||||
>modules</a> |</li> | >modules</a> |</li> | ||||
<li><a href="index.html">pyad2usb documentation</a> »</li> | |||||
<li><a href="index.html">pyad2 documentation</a> »</li> | |||||
</ul> | </ul> | ||||
</div> | </div> | ||||
<div class="footer"> | <div class="footer"> | ||||
@@ -6,7 +6,7 @@ | |||||
<head> | <head> | ||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> | <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> | ||||
<title>Welcome to pyad2usb’s documentation! — pyad2usb documentation</title> | |||||
<title>Welcome to pyad2’s documentation! — pyad2 documentation</title> | |||||
<link rel="stylesheet" href="_static/default.css" type="text/css" /> | <link rel="stylesheet" href="_static/default.css" type="text/css" /> | ||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" /> | <link rel="stylesheet" href="_static/pygments.css" type="text/css" /> | ||||
@@ -23,8 +23,8 @@ | |||||
<script type="text/javascript" src="_static/jquery.js"></script> | <script type="text/javascript" src="_static/jquery.js"></script> | ||||
<script type="text/javascript" src="_static/underscore.js"></script> | <script type="text/javascript" src="_static/underscore.js"></script> | ||||
<script type="text/javascript" src="_static/doctools.js"></script> | <script type="text/javascript" src="_static/doctools.js"></script> | ||||
<link rel="top" title="pyad2usb documentation" href="#" /> | |||||
<link rel="next" title="pyad2usb Package" href="pyad2usb.html" /> | |||||
<link rel="top" title="pyad2 documentation" href="#" /> | |||||
<link rel="next" title="pyad2 Package" href="pyad2.html" /> | |||||
</head> | </head> | ||||
<body> | <body> | ||||
<div class="related"> | <div class="related"> | ||||
@@ -37,9 +37,9 @@ | |||||
<a href="py-modindex.html" title="Python Module Index" | <a href="py-modindex.html" title="Python Module Index" | ||||
>modules</a> |</li> | >modules</a> |</li> | ||||
<li class="right" > | <li class="right" > | ||||
<a href="pyad2usb.html" title="pyad2usb Package" | |||||
<a href="pyad2.html" title="pyad2 Package" | |||||
accesskey="N">next</a> |</li> | accesskey="N">next</a> |</li> | ||||
<li><a href="#">pyad2usb documentation</a> »</li> | |||||
<li><a href="#">pyad2 documentation</a> »</li> | |||||
</ul> | </ul> | ||||
</div> | </div> | ||||
@@ -48,22 +48,22 @@ | |||||
<div class="bodywrapper"> | <div class="bodywrapper"> | ||||
<div class="body"> | <div class="body"> | ||||
<div class="section" id="welcome-to-pyad2usb-s-documentation"> | |||||
<h1>Welcome to pyad2usb’s documentation!<a class="headerlink" href="#welcome-to-pyad2usb-s-documentation" title="Permalink to this headline">¶</a></h1> | |||||
<div class="section" id="welcome-to-pyad2-s-documentation"> | |||||
<h1>Welcome to pyad2’s documentation!<a class="headerlink" href="#welcome-to-pyad2-s-documentation" title="Permalink to this headline">¶</a></h1> | |||||
<p>Contents:</p> | <p>Contents:</p> | ||||
<div class="toctree-wrapper compound"> | <div class="toctree-wrapper compound"> | ||||
<ul> | <ul> | ||||
<li class="toctree-l1"><a class="reference internal" href="pyad2usb.html">pyad2usb Package</a><ul> | |||||
<li class="toctree-l2"><a class="reference internal" href="pyad2usb.html#module-pyad2usb.ad2usb"><tt class="docutils literal"><span class="pre">ad2usb</span></tt> Module</a></li> | |||||
<li class="toctree-l2"><a class="reference internal" href="pyad2usb.html#module-pyad2usb.devices"><tt class="docutils literal"><span class="pre">devices</span></tt> Module</a></li> | |||||
<li class="toctree-l2"><a class="reference internal" href="pyad2usb.html#module-pyad2usb.util"><tt class="docutils literal"><span class="pre">util</span></tt> Module</a></li> | |||||
<li class="toctree-l2"><a class="reference internal" href="pyad2usb.html#module-pyad2usb.zonetracking"><tt class="docutils literal"><span class="pre">zonetracking</span></tt> Module</a></li> | |||||
<li class="toctree-l2"><a class="reference internal" href="pyad2usb.html#module-pyad2usb.panels"><tt class="docutils literal"><span class="pre">panels</span></tt> Module</a></li> | |||||
<li class="toctree-l2"><a class="reference internal" href="pyad2usb.html#module-pyad2usb.messages"><tt class="docutils literal"><span class="pre">messages</span></tt> Module</a></li> | |||||
<li class="toctree-l2"><a class="reference internal" href="pyad2usb.html#subpackages">Subpackages</a><ul> | |||||
<li class="toctree-l3"><a class="reference internal" href="pyad2usb.event.html">event Package</a><ul> | |||||
<li class="toctree-l4"><a class="reference internal" href="pyad2usb.event.html#id1"><tt class="docutils literal"><span class="pre">event</span></tt> Package</a></li> | |||||
<li class="toctree-l4"><a class="reference internal" href="pyad2usb.event.html#module-pyad2usb.event.event"><tt class="docutils literal"><span class="pre">event</span></tt> Module</a></li> | |||||
<li class="toctree-l1"><a class="reference internal" href="pyad2.html">pyad2 Package</a><ul> | |||||
<li class="toctree-l2"><a class="reference internal" href="pyad2.html#module-pyad2.ad2"><tt class="docutils literal"><span class="pre">ad2</span></tt> Module</a></li> | |||||
<li class="toctree-l2"><a class="reference internal" href="pyad2.html#module-pyad2.devices"><tt class="docutils literal"><span class="pre">devices</span></tt> Module</a></li> | |||||
<li class="toctree-l2"><a class="reference internal" href="pyad2.html#module-pyad2.util"><tt class="docutils literal"><span class="pre">util</span></tt> Module</a></li> | |||||
<li class="toctree-l2"><a class="reference internal" href="pyad2.html#module-pyad2.zonetracking"><tt class="docutils literal"><span class="pre">zonetracking</span></tt> Module</a></li> | |||||
<li class="toctree-l2"><a class="reference internal" href="pyad2.html#module-pyad2.panels"><tt class="docutils literal"><span class="pre">panels</span></tt> Module</a></li> | |||||
<li class="toctree-l2"><a class="reference internal" href="pyad2.html#module-pyad2.messages"><tt class="docutils literal"><span class="pre">messages</span></tt> Module</a></li> | |||||
<li class="toctree-l2"><a class="reference internal" href="pyad2.html#subpackages">Subpackages</a><ul> | |||||
<li class="toctree-l3"><a class="reference internal" href="pyad2.event.html">event Package</a><ul> | |||||
<li class="toctree-l4"><a class="reference internal" href="pyad2.event.html#id1"><tt class="docutils literal"><span class="pre">event</span></tt> Package</a></li> | |||||
<li class="toctree-l4"><a class="reference internal" href="pyad2.event.html#module-pyad2.event.event"><tt class="docutils literal"><span class="pre">event</span></tt> Module</a></li> | |||||
</ul> | </ul> | ||||
</li> | </li> | ||||
</ul> | </ul> | ||||
@@ -90,15 +90,15 @@ | |||||
<div class="sphinxsidebarwrapper"> | <div class="sphinxsidebarwrapper"> | ||||
<h3><a href="#">Table Of Contents</a></h3> | <h3><a href="#">Table Of Contents</a></h3> | ||||
<ul> | <ul> | ||||
<li><a class="reference internal" href="#">Welcome to pyad2usb’s documentation!</a><ul> | |||||
<li><a class="reference internal" href="#">Welcome to pyad2’s documentation!</a><ul> | |||||
</ul> | </ul> | ||||
</li> | </li> | ||||
<li><a class="reference internal" href="#indices-and-tables">Indices and tables</a></li> | <li><a class="reference internal" href="#indices-and-tables">Indices and tables</a></li> | ||||
</ul> | </ul> | ||||
<h4>Next topic</h4> | <h4>Next topic</h4> | ||||
<p class="topless"><a href="pyad2usb.html" | |||||
title="next chapter">pyad2usb Package</a></p> | |||||
<p class="topless"><a href="pyad2.html" | |||||
title="next chapter">pyad2 Package</a></p> | |||||
<h3>This Page</h3> | <h3>This Page</h3> | ||||
<ul class="this-page-menu"> | <ul class="this-page-menu"> | ||||
<li><a href="_sources/index.txt" | <li><a href="_sources/index.txt" | ||||
@@ -131,9 +131,9 @@ | |||||
<a href="py-modindex.html" title="Python Module Index" | <a href="py-modindex.html" title="Python Module Index" | ||||
>modules</a> |</li> | >modules</a> |</li> | ||||
<li class="right" > | <li class="right" > | ||||
<a href="pyad2usb.html" title="pyad2usb Package" | |||||
<a href="pyad2.html" title="pyad2 Package" | |||||
>next</a> |</li> | >next</a> |</li> | ||||
<li><a href="#">pyad2usb documentation</a> »</li> | |||||
<li><a href="#">pyad2 documentation</a> »</li> | |||||
</ul> | </ul> | ||||
</div> | </div> | ||||
<div class="footer"> | <div class="footer"> | ||||
@@ -6,7 +6,7 @@ | |||||
<head> | <head> | ||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> | <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> | ||||
<title>pyad2usb — pyad2usb documentation</title> | |||||
<title>pyad2 — pyad2 documentation</title> | |||||
<link rel="stylesheet" href="_static/default.css" type="text/css" /> | <link rel="stylesheet" href="_static/default.css" type="text/css" /> | ||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" /> | <link rel="stylesheet" href="_static/pygments.css" type="text/css" /> | ||||
@@ -23,7 +23,7 @@ | |||||
<script type="text/javascript" src="_static/jquery.js"></script> | <script type="text/javascript" src="_static/jquery.js"></script> | ||||
<script type="text/javascript" src="_static/underscore.js"></script> | <script type="text/javascript" src="_static/underscore.js"></script> | ||||
<script type="text/javascript" src="_static/doctools.js"></script> | <script type="text/javascript" src="_static/doctools.js"></script> | ||||
<link rel="top" title="pyad2usb documentation" href="index.html" /> | |||||
<link rel="top" title="pyad2 documentation" href="index.html" /> | |||||
</head> | </head> | ||||
<body> | <body> | ||||
<div class="related"> | <div class="related"> | ||||
@@ -35,7 +35,7 @@ | |||||
<li class="right" > | <li class="right" > | ||||
<a href="py-modindex.html" title="Python Module Index" | <a href="py-modindex.html" title="Python Module Index" | ||||
>modules</a> |</li> | >modules</a> |</li> | ||||
<li><a href="index.html">pyad2usb documentation</a> »</li> | |||||
<li><a href="index.html">pyad2 documentation</a> »</li> | |||||
</ul> | </ul> | ||||
</div> | </div> | ||||
@@ -44,21 +44,21 @@ | |||||
<div class="bodywrapper"> | <div class="bodywrapper"> | ||||
<div class="body"> | <div class="body"> | ||||
<div class="section" id="pyad2usb"> | |||||
<h1>pyad2usb<a class="headerlink" href="#pyad2usb" title="Permalink to this headline">¶</a></h1> | |||||
<div class="section" id="pyad2"> | |||||
<h1>pyad2<a class="headerlink" href="#pyad2" title="Permalink to this headline">¶</a></h1> | |||||
<div class="toctree-wrapper compound"> | <div class="toctree-wrapper compound"> | ||||
<ul> | <ul> | ||||
<li class="toctree-l1"><a class="reference internal" href="pyad2usb.html">pyad2usb Package</a><ul> | |||||
<li class="toctree-l2"><a class="reference internal" href="pyad2usb.html#module-pyad2usb.ad2usb"><tt class="docutils literal"><span class="pre">ad2usb</span></tt> Module</a></li> | |||||
<li class="toctree-l2"><a class="reference internal" href="pyad2usb.html#module-pyad2usb.devices"><tt class="docutils literal"><span class="pre">devices</span></tt> Module</a></li> | |||||
<li class="toctree-l2"><a class="reference internal" href="pyad2usb.html#module-pyad2usb.util"><tt class="docutils literal"><span class="pre">util</span></tt> Module</a></li> | |||||
<li class="toctree-l2"><a class="reference internal" href="pyad2usb.html#module-pyad2usb.zonetracking"><tt class="docutils literal"><span class="pre">zonetracking</span></tt> Module</a></li> | |||||
<li class="toctree-l2"><a class="reference internal" href="pyad2usb.html#module-pyad2usb.panels"><tt class="docutils literal"><span class="pre">panels</span></tt> Module</a></li> | |||||
<li class="toctree-l2"><a class="reference internal" href="pyad2usb.html#module-pyad2usb.messages"><tt class="docutils literal"><span class="pre">messages</span></tt> Module</a></li> | |||||
<li class="toctree-l2"><a class="reference internal" href="pyad2usb.html#subpackages">Subpackages</a><ul> | |||||
<li class="toctree-l3"><a class="reference internal" href="pyad2usb.event.html">event Package</a><ul> | |||||
<li class="toctree-l4"><a class="reference internal" href="pyad2usb.event.html#id1"><tt class="docutils literal"><span class="pre">event</span></tt> Package</a></li> | |||||
<li class="toctree-l4"><a class="reference internal" href="pyad2usb.event.html#module-pyad2usb.event.event"><tt class="docutils literal"><span class="pre">event</span></tt> Module</a></li> | |||||
<li class="toctree-l1"><a class="reference internal" href="pyad2.html">pyad2 Package</a><ul> | |||||
<li class="toctree-l2"><a class="reference internal" href="pyad2.html#module-pyad2.ad2"><tt class="docutils literal"><span class="pre">ad2</span></tt> Module</a></li> | |||||
<li class="toctree-l2"><a class="reference internal" href="pyad2.html#module-pyad2.devices"><tt class="docutils literal"><span class="pre">devices</span></tt> Module</a></li> | |||||
<li class="toctree-l2"><a class="reference internal" href="pyad2.html#module-pyad2.util"><tt class="docutils literal"><span class="pre">util</span></tt> Module</a></li> | |||||
<li class="toctree-l2"><a class="reference internal" href="pyad2.html#module-pyad2.zonetracking"><tt class="docutils literal"><span class="pre">zonetracking</span></tt> Module</a></li> | |||||
<li class="toctree-l2"><a class="reference internal" href="pyad2.html#module-pyad2.panels"><tt class="docutils literal"><span class="pre">panels</span></tt> Module</a></li> | |||||
<li class="toctree-l2"><a class="reference internal" href="pyad2.html#module-pyad2.messages"><tt class="docutils literal"><span class="pre">messages</span></tt> Module</a></li> | |||||
<li class="toctree-l2"><a class="reference internal" href="pyad2.html#subpackages">Subpackages</a><ul> | |||||
<li class="toctree-l3"><a class="reference internal" href="pyad2.event.html">event Package</a><ul> | |||||
<li class="toctree-l4"><a class="reference internal" href="pyad2.event.html#id1"><tt class="docutils literal"><span class="pre">event</span></tt> Package</a></li> | |||||
<li class="toctree-l4"><a class="reference internal" href="pyad2.event.html#module-pyad2.event.event"><tt class="docutils literal"><span class="pre">event</span></tt> Module</a></li> | |||||
</ul> | </ul> | ||||
</li> | </li> | ||||
</ul> | </ul> | ||||
@@ -106,7 +106,7 @@ | |||||
<li class="right" > | <li class="right" > | ||||
<a href="py-modindex.html" title="Python Module Index" | <a href="py-modindex.html" title="Python Module Index" | ||||
>modules</a> |</li> | >modules</a> |</li> | ||||
<li><a href="index.html">pyad2usb documentation</a> »</li> | |||||
<li><a href="index.html">pyad2 documentation</a> »</li> | |||||
</ul> | </ul> | ||||
</div> | </div> | ||||
<div class="footer"> | <div class="footer"> | ||||
@@ -6,7 +6,7 @@ | |||||
<head> | <head> | ||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> | <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> | ||||
<title>Python Module Index — pyad2usb documentation</title> | |||||
<title>Python Module Index — pyad2 documentation</title> | |||||
<link rel="stylesheet" href="_static/default.css" type="text/css" /> | <link rel="stylesheet" href="_static/default.css" type="text/css" /> | ||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" /> | <link rel="stylesheet" href="_static/pygments.css" type="text/css" /> | ||||
@@ -23,7 +23,7 @@ | |||||
<script type="text/javascript" src="_static/jquery.js"></script> | <script type="text/javascript" src="_static/jquery.js"></script> | ||||
<script type="text/javascript" src="_static/underscore.js"></script> | <script type="text/javascript" src="_static/underscore.js"></script> | ||||
<script type="text/javascript" src="_static/doctools.js"></script> | <script type="text/javascript" src="_static/doctools.js"></script> | ||||
<link rel="top" title="pyad2usb documentation" href="index.html" /> | |||||
<link rel="top" title="pyad2 documentation" href="index.html" /> | |||||
@@ -38,7 +38,7 @@ | |||||
<li class="right" > | <li class="right" > | ||||
<a href="#" title="Python Module Index" | <a href="#" title="Python Module Index" | ||||
>modules</a> |</li> | >modules</a> |</li> | ||||
<li><a href="index.html">pyad2usb documentation</a> »</li> | |||||
<li><a href="index.html">pyad2 documentation</a> »</li> | |||||
</ul> | </ul> | ||||
</div> | </div> | ||||
@@ -62,47 +62,47 @@ | |||||
<td><img src="_static/minus.png" class="toggler" | <td><img src="_static/minus.png" class="toggler" | ||||
id="toggle-1" style="display: none" alt="-" /></td> | id="toggle-1" style="display: none" alt="-" /></td> | ||||
<td> | <td> | ||||
<tt class="xref">pyad2usb</tt></td><td> | |||||
<tt class="xref">pyad2</tt></td><td> | |||||
<em></em></td></tr> | <em></em></td></tr> | ||||
<tr class="cg-1"> | <tr class="cg-1"> | ||||
<td></td> | <td></td> | ||||
<td> | <td> | ||||
<a href="pyad2usb.html#module-pyad2usb.ad2usb"><tt class="xref">pyad2usb.ad2usb</tt></a></td><td> | |||||
<a href="pyad2.html#module-pyad2.ad2"><tt class="xref">pyad2.ad2</tt></a></td><td> | |||||
<em></em></td></tr> | <em></em></td></tr> | ||||
<tr class="cg-1"> | <tr class="cg-1"> | ||||
<td></td> | <td></td> | ||||
<td> | <td> | ||||
<a href="pyad2usb.html#module-pyad2usb.devices"><tt class="xref">pyad2usb.devices</tt></a></td><td> | |||||
<a href="pyad2.html#module-pyad2.devices"><tt class="xref">pyad2.devices</tt></a></td><td> | |||||
<em></em></td></tr> | <em></em></td></tr> | ||||
<tr class="cg-1"> | <tr class="cg-1"> | ||||
<td></td> | <td></td> | ||||
<td> | <td> | ||||
<a href="pyad2usb.event.html#module-pyad2usb.event"><tt class="xref">pyad2usb.event</tt></a></td><td> | |||||
<a href="pyad2.event.html#module-pyad2.event"><tt class="xref">pyad2.event</tt></a></td><td> | |||||
<em></em></td></tr> | <em></em></td></tr> | ||||
<tr class="cg-1"> | <tr class="cg-1"> | ||||
<td></td> | <td></td> | ||||
<td> | <td> | ||||
<a href="pyad2usb.event.html#module-pyad2usb.event.event"><tt class="xref">pyad2usb.event.event</tt></a></td><td> | |||||
<a href="pyad2.event.html#module-pyad2.event.event"><tt class="xref">pyad2.event.event</tt></a></td><td> | |||||
<em></em></td></tr> | <em></em></td></tr> | ||||
<tr class="cg-1"> | <tr class="cg-1"> | ||||
<td></td> | <td></td> | ||||
<td> | <td> | ||||
<a href="pyad2usb.html#module-pyad2usb.messages"><tt class="xref">pyad2usb.messages</tt></a></td><td> | |||||
<a href="pyad2.html#module-pyad2.messages"><tt class="xref">pyad2.messages</tt></a></td><td> | |||||
<em></em></td></tr> | <em></em></td></tr> | ||||
<tr class="cg-1"> | <tr class="cg-1"> | ||||
<td></td> | <td></td> | ||||
<td> | <td> | ||||
<a href="pyad2usb.html#module-pyad2usb.panels"><tt class="xref">pyad2usb.panels</tt></a></td><td> | |||||
<a href="pyad2.html#module-pyad2.panels"><tt class="xref">pyad2.panels</tt></a></td><td> | |||||
<em></em></td></tr> | <em></em></td></tr> | ||||
<tr class="cg-1"> | <tr class="cg-1"> | ||||
<td></td> | <td></td> | ||||
<td> | <td> | ||||
<a href="pyad2usb.html#module-pyad2usb.util"><tt class="xref">pyad2usb.util</tt></a></td><td> | |||||
<a href="pyad2.html#module-pyad2.util"><tt class="xref">pyad2.util</tt></a></td><td> | |||||
<em></em></td></tr> | <em></em></td></tr> | ||||
<tr class="cg-1"> | <tr class="cg-1"> | ||||
<td></td> | <td></td> | ||||
<td> | <td> | ||||
<a href="pyad2usb.html#module-pyad2usb.zonetracking"><tt class="xref">pyad2usb.zonetracking</tt></a></td><td> | |||||
<a href="pyad2.html#module-pyad2.zonetracking"><tt class="xref">pyad2.zonetracking</tt></a></td><td> | |||||
<em></em></td></tr> | <em></em></td></tr> | ||||
</table> | </table> | ||||
@@ -138,7 +138,7 @@ | |||||
<li class="right" > | <li class="right" > | ||||
<a href="#" title="Python Module Index" | <a href="#" title="Python Module Index" | ||||
>modules</a> |</li> | >modules</a> |</li> | ||||
<li><a href="index.html">pyad2usb documentation</a> »</li> | |||||
<li><a href="index.html">pyad2 documentation</a> »</li> | |||||
</ul> | </ul> | ||||
</div> | </div> | ||||
<div class="footer"> | <div class="footer"> | ||||
@@ -0,0 +1,146 @@ | |||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" | |||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> | |||||
<html xmlns="http://www.w3.org/1999/xhtml"> | |||||
<head> | |||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> | |||||
<title>event Package — pyad2 documentation</title> | |||||
<link rel="stylesheet" href="_static/default.css" type="text/css" /> | |||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" /> | |||||
<script type="text/javascript"> | |||||
var DOCUMENTATION_OPTIONS = { | |||||
URL_ROOT: './', | |||||
VERSION: '', | |||||
COLLAPSE_INDEX: false, | |||||
FILE_SUFFIX: '.html', | |||||
HAS_SOURCE: true | |||||
}; | |||||
</script> | |||||
<script type="text/javascript" src="_static/jquery.js"></script> | |||||
<script type="text/javascript" src="_static/underscore.js"></script> | |||||
<script type="text/javascript" src="_static/doctools.js"></script> | |||||
<link rel="top" title="pyad2 documentation" href="index.html" /> | |||||
</head> | |||||
<body> | |||||
<div class="related"> | |||||
<h3>Navigation</h3> | |||||
<ul> | |||||
<li class="right" style="margin-right: 10px"> | |||||
<a href="genindex.html" title="General Index" | |||||
accesskey="I">index</a></li> | |||||
<li class="right" > | |||||
<a href="py-modindex.html" title="Python Module Index" | |||||
>modules</a> |</li> | |||||
<li><a href="index.html">pyad2 documentation</a> »</li> | |||||
</ul> | |||||
</div> | |||||
<div class="document"> | |||||
<div class="documentwrapper"> | |||||
<div class="bodywrapper"> | |||||
<div class="body"> | |||||
<div class="section" id="event-package"> | |||||
<h1>event Package<a class="headerlink" href="#event-package" title="Permalink to this headline">¶</a></h1> | |||||
<div class="section" id="id1"> | |||||
<h2><tt class="xref py py-mod docutils literal"><span class="pre">event</span></tt> Package<a class="headerlink" href="#id1" title="Permalink to this headline">¶</a></h2> | |||||
<span class="target" id="module-pyad2.event"></span></div> | |||||
<div class="section" id="module-pyad2.event.event"> | |||||
<span id="event-module"></span><h2><tt class="xref py py-mod docutils literal"><span class="pre">event</span></tt> Module<a class="headerlink" href="#module-pyad2.event.event" title="Permalink to this headline">¶</a></h2> | |||||
<dl class="class"> | |||||
<dt id="pyad2.event.event.Event"> | |||||
<em class="property">class </em><tt class="descclassname">pyad2.event.event.</tt><tt class="descname">Event</tt><big>(</big><em>doc=None</em><big>)</big><a class="reference internal" href="_modules/pyad2/event/event.html#Event"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pyad2.event.event.Event" title="Permalink to this definition">¶</a></dt> | |||||
<dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">object</span></tt></p> | |||||
</dd></dl> | |||||
<dl class="class"> | |||||
<dt id="pyad2.event.event.EventHandler"> | |||||
<em class="property">class </em><tt class="descclassname">pyad2.event.event.</tt><tt class="descname">EventHandler</tt><big>(</big><em>event</em>, <em>obj</em><big>)</big><a class="reference internal" href="_modules/pyad2/event/event.html#EventHandler"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pyad2.event.event.EventHandler" title="Permalink to this definition">¶</a></dt> | |||||
<dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">object</span></tt></p> | |||||
<dl class="method"> | |||||
<dt id="pyad2.event.event.EventHandler.add"> | |||||
<tt class="descname">add</tt><big>(</big><em>func</em><big>)</big><a class="reference internal" href="_modules/pyad2/event/event.html#EventHandler.add"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pyad2.event.event.EventHandler.add" title="Permalink to this definition">¶</a></dt> | |||||
<dd><p>Add new event handler function.</p> | |||||
<p>Event handler function must be defined like func(sender, earg). | |||||
You can add handler also by using ‘+=’ operator.</p> | |||||
</dd></dl> | |||||
<dl class="method"> | |||||
<dt id="pyad2.event.event.EventHandler.remove"> | |||||
<tt class="descname">remove</tt><big>(</big><em>func</em><big>)</big><a class="reference internal" href="_modules/pyad2/event/event.html#EventHandler.remove"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pyad2.event.event.EventHandler.remove" title="Permalink to this definition">¶</a></dt> | |||||
<dd><p>Remove existing event handler function.</p> | |||||
<p>You can remove handler also by using ‘-=’ operator.</p> | |||||
</dd></dl> | |||||
<dl class="method"> | |||||
<dt id="pyad2.event.event.EventHandler.fire"> | |||||
<tt class="descname">fire</tt><big>(</big><em>earg=None</em><big>)</big><a class="reference internal" href="_modules/pyad2/event/event.html#EventHandler.fire"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pyad2.event.event.EventHandler.fire" title="Permalink to this definition">¶</a></dt> | |||||
<dd><p>Fire event and call all handler functions</p> | |||||
<p>You can call EventHandler object itself like e(earg) instead of | |||||
e.fire(earg).</p> | |||||
</dd></dl> | |||||
</dd></dl> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<div class="sphinxsidebar"> | |||||
<div class="sphinxsidebarwrapper"> | |||||
<h3><a href="index.html">Table Of Contents</a></h3> | |||||
<ul> | |||||
<li><a class="reference internal" href="#">event Package</a><ul> | |||||
<li><a class="reference internal" href="#id1"><tt class="docutils literal"><span class="pre">event</span></tt> Package</a></li> | |||||
<li><a class="reference internal" href="#module-pyad2.event.event"><tt class="docutils literal"><span class="pre">event</span></tt> Module</a></li> | |||||
</ul> | |||||
</li> | |||||
</ul> | |||||
<h3>This Page</h3> | |||||
<ul class="this-page-menu"> | |||||
<li><a href="_sources/pyad2.event.txt" | |||||
rel="nofollow">Show Source</a></li> | |||||
</ul> | |||||
<div id="searchbox" style="display: none"> | |||||
<h3>Quick search</h3> | |||||
<form class="search" action="search.html" method="get"> | |||||
<input type="text" name="q" /> | |||||
<input type="submit" value="Go" /> | |||||
<input type="hidden" name="check_keywords" value="yes" /> | |||||
<input type="hidden" name="area" value="default" /> | |||||
</form> | |||||
<p class="searchtip" style="font-size: 90%"> | |||||
Enter search terms or a module, class or function name. | |||||
</p> | |||||
</div> | |||||
<script type="text/javascript">$('#searchbox').show(0);</script> | |||||
</div> | |||||
</div> | |||||
<div class="clearer"></div> | |||||
</div> | |||||
<div class="related"> | |||||
<h3>Navigation</h3> | |||||
<ul> | |||||
<li class="right" style="margin-right: 10px"> | |||||
<a href="genindex.html" title="General Index" | |||||
>index</a></li> | |||||
<li class="right" > | |||||
<a href="py-modindex.html" title="Python Module Index" | |||||
>modules</a> |</li> | |||||
<li><a href="index.html">pyad2 documentation</a> »</li> | |||||
</ul> | |||||
</div> | |||||
<div class="footer"> | |||||
© Copyright 2013, Author. | |||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2b1. | |||||
</div> | |||||
</body> | |||||
</html> |
@@ -6,7 +6,7 @@ | |||||
<head> | <head> | ||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> | <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> | ||||
<title>event Package — pyad2usb documentation</title> | |||||
<title>event Package — pyad2 documentation</title> | |||||
<link rel="stylesheet" href="_static/default.css" type="text/css" /> | <link rel="stylesheet" href="_static/default.css" type="text/css" /> | ||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" /> | <link rel="stylesheet" href="_static/pygments.css" type="text/css" /> | ||||
@@ -23,9 +23,7 @@ | |||||
<script type="text/javascript" src="_static/jquery.js"></script> | <script type="text/javascript" src="_static/jquery.js"></script> | ||||
<script type="text/javascript" src="_static/underscore.js"></script> | <script type="text/javascript" src="_static/underscore.js"></script> | ||||
<script type="text/javascript" src="_static/doctools.js"></script> | <script type="text/javascript" src="_static/doctools.js"></script> | ||||
<link rel="top" title="pyad2usb documentation" href="index.html" /> | |||||
<link rel="up" title="pyad2usb Package" href="pyad2usb.html" /> | |||||
<link rel="prev" title="pyad2usb Package" href="pyad2usb.html" /> | |||||
<link rel="top" title="pyad2 documentation" href="index.html" /> | |||||
</head> | </head> | ||||
<body> | <body> | ||||
<div class="related"> | <div class="related"> | ||||
@@ -37,11 +35,7 @@ | |||||
<li class="right" > | <li class="right" > | ||||
<a href="py-modindex.html" title="Python Module Index" | <a href="py-modindex.html" title="Python Module Index" | ||||
>modules</a> |</li> | >modules</a> |</li> | ||||
<li class="right" > | |||||
<a href="pyad2usb.html" title="pyad2usb Package" | |||||
accesskey="P">previous</a> |</li> | |||||
<li><a href="index.html">pyad2usb documentation</a> »</li> | |||||
<li><a href="pyad2usb.html" accesskey="U">pyad2usb Package</a> »</li> | |||||
<li><a href="index.html">pyad2 documentation</a> »</li> | |||||
</ul> | </ul> | ||||
</div> | </div> | ||||
@@ -54,37 +48,37 @@ | |||||
<h1>event Package<a class="headerlink" href="#event-package" title="Permalink to this headline">¶</a></h1> | <h1>event Package<a class="headerlink" href="#event-package" title="Permalink to this headline">¶</a></h1> | ||||
<div class="section" id="id1"> | <div class="section" id="id1"> | ||||
<h2><tt class="xref py py-mod docutils literal"><span class="pre">event</span></tt> Package<a class="headerlink" href="#id1" title="Permalink to this headline">¶</a></h2> | <h2><tt class="xref py py-mod docutils literal"><span class="pre">event</span></tt> Package<a class="headerlink" href="#id1" title="Permalink to this headline">¶</a></h2> | ||||
<span class="target" id="module-pyad2usb.event"></span></div> | |||||
<div class="section" id="module-pyad2usb.event.event"> | |||||
<span id="event-module"></span><h2><tt class="xref py py-mod docutils literal"><span class="pre">event</span></tt> Module<a class="headerlink" href="#module-pyad2usb.event.event" title="Permalink to this headline">¶</a></h2> | |||||
<span class="target" id="module-pyad2.event"></span></div> | |||||
<div class="section" id="module-pyad2.event.event"> | |||||
<span id="event-module"></span><h2><tt class="xref py py-mod docutils literal"><span class="pre">event</span></tt> Module<a class="headerlink" href="#module-pyad2.event.event" title="Permalink to this headline">¶</a></h2> | |||||
<dl class="class"> | <dl class="class"> | ||||
<dt id="pyad2usb.event.event.Event"> | |||||
<em class="property">class </em><tt class="descclassname">pyad2usb.event.event.</tt><tt class="descname">Event</tt><big>(</big><em>doc=None</em><big>)</big><a class="reference internal" href="_modules/pyad2usb/event/event.html#Event"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pyad2usb.event.event.Event" title="Permalink to this definition">¶</a></dt> | |||||
<dt id="pyad2.event.event.Event"> | |||||
<em class="property">class </em><tt class="descclassname">pyad2.event.event.</tt><tt class="descname">Event</tt><big>(</big><em>doc=None</em><big>)</big><a class="reference internal" href="_modules/pyad2/event/event.html#Event"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pyad2.event.event.Event" title="Permalink to this definition">¶</a></dt> | |||||
<dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">object</span></tt></p> | <dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">object</span></tt></p> | ||||
</dd></dl> | </dd></dl> | ||||
<dl class="class"> | <dl class="class"> | ||||
<dt id="pyad2usb.event.event.EventHandler"> | |||||
<em class="property">class </em><tt class="descclassname">pyad2usb.event.event.</tt><tt class="descname">EventHandler</tt><big>(</big><em>event</em>, <em>obj</em><big>)</big><a class="reference internal" href="_modules/pyad2usb/event/event.html#EventHandler"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pyad2usb.event.event.EventHandler" title="Permalink to this definition">¶</a></dt> | |||||
<dt id="pyad2.event.event.EventHandler"> | |||||
<em class="property">class </em><tt class="descclassname">pyad2.event.event.</tt><tt class="descname">EventHandler</tt><big>(</big><em>event</em>, <em>obj</em><big>)</big><a class="reference internal" href="_modules/pyad2/event/event.html#EventHandler"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pyad2.event.event.EventHandler" title="Permalink to this definition">¶</a></dt> | |||||
<dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">object</span></tt></p> | <dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">object</span></tt></p> | ||||
<dl class="method"> | <dl class="method"> | ||||
<dt id="pyad2usb.event.event.EventHandler.add"> | |||||
<tt class="descname">add</tt><big>(</big><em>func</em><big>)</big><a class="reference internal" href="_modules/pyad2usb/event/event.html#EventHandler.add"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pyad2usb.event.event.EventHandler.add" title="Permalink to this definition">¶</a></dt> | |||||
<dt id="pyad2.event.event.EventHandler.add"> | |||||
<tt class="descname">add</tt><big>(</big><em>func</em><big>)</big><a class="reference internal" href="_modules/pyad2/event/event.html#EventHandler.add"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pyad2.event.event.EventHandler.add" title="Permalink to this definition">¶</a></dt> | |||||
<dd><p>Add new event handler function.</p> | <dd><p>Add new event handler function.</p> | ||||
<p>Event handler function must be defined like func(sender, earg). | <p>Event handler function must be defined like func(sender, earg). | ||||
You can add handler also by using ‘+=’ operator.</p> | You can add handler also by using ‘+=’ operator.</p> | ||||
</dd></dl> | </dd></dl> | ||||
<dl class="method"> | <dl class="method"> | ||||
<dt id="pyad2usb.event.event.EventHandler.remove"> | |||||
<tt class="descname">remove</tt><big>(</big><em>func</em><big>)</big><a class="reference internal" href="_modules/pyad2usb/event/event.html#EventHandler.remove"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pyad2usb.event.event.EventHandler.remove" title="Permalink to this definition">¶</a></dt> | |||||
<dt id="pyad2.event.event.EventHandler.remove"> | |||||
<tt class="descname">remove</tt><big>(</big><em>func</em><big>)</big><a class="reference internal" href="_modules/pyad2/event/event.html#EventHandler.remove"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pyad2.event.event.EventHandler.remove" title="Permalink to this definition">¶</a></dt> | |||||
<dd><p>Remove existing event handler function.</p> | <dd><p>Remove existing event handler function.</p> | ||||
<p>You can remove handler also by using ‘-=’ operator.</p> | <p>You can remove handler also by using ‘-=’ operator.</p> | ||||
</dd></dl> | </dd></dl> | ||||
<dl class="method"> | <dl class="method"> | ||||
<dt id="pyad2usb.event.event.EventHandler.fire"> | |||||
<tt class="descname">fire</tt><big>(</big><em>earg=None</em><big>)</big><a class="reference internal" href="_modules/pyad2usb/event/event.html#EventHandler.fire"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pyad2usb.event.event.EventHandler.fire" title="Permalink to this definition">¶</a></dt> | |||||
<dt id="pyad2.event.event.EventHandler.fire"> | |||||
<tt class="descname">fire</tt><big>(</big><em>earg=None</em><big>)</big><a class="reference internal" href="_modules/pyad2/event/event.html#EventHandler.fire"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pyad2.event.event.EventHandler.fire" title="Permalink to this definition">¶</a></dt> | |||||
<dd><p>Fire event and call all handler functions</p> | <dd><p>Fire event and call all handler functions</p> | ||||
<p>You can call EventHandler object itself like e(earg) instead of | <p>You can call EventHandler object itself like e(earg) instead of | ||||
e.fire(earg).</p> | e.fire(earg).</p> | ||||
@@ -105,14 +99,11 @@ e.fire(earg).</p> | |||||
<ul> | <ul> | ||||
<li><a class="reference internal" href="#">event Package</a><ul> | <li><a class="reference internal" href="#">event Package</a><ul> | ||||
<li><a class="reference internal" href="#id1"><tt class="docutils literal"><span class="pre">event</span></tt> Package</a></li> | <li><a class="reference internal" href="#id1"><tt class="docutils literal"><span class="pre">event</span></tt> Package</a></li> | ||||
<li><a class="reference internal" href="#module-pyad2usb.event.event"><tt class="docutils literal"><span class="pre">event</span></tt> Module</a></li> | |||||
<li><a class="reference internal" href="#module-pyad2.event.event"><tt class="docutils literal"><span class="pre">event</span></tt> Module</a></li> | |||||
</ul> | </ul> | ||||
</li> | </li> | ||||
</ul> | </ul> | ||||
<h4>Previous topic</h4> | |||||
<p class="topless"><a href="pyad2usb.html" | |||||
title="previous chapter">pyad2usb Package</a></p> | |||||
<h3>This Page</h3> | <h3>This Page</h3> | ||||
<ul class="this-page-menu"> | <ul class="this-page-menu"> | ||||
<li><a href="_sources/pyad2usb.event.txt" | <li><a href="_sources/pyad2usb.event.txt" | ||||
@@ -144,11 +135,7 @@ e.fire(earg).</p> | |||||
<li class="right" > | <li class="right" > | ||||
<a href="py-modindex.html" title="Python Module Index" | <a href="py-modindex.html" title="Python Module Index" | ||||
>modules</a> |</li> | >modules</a> |</li> | ||||
<li class="right" > | |||||
<a href="pyad2usb.html" title="pyad2usb Package" | |||||
>previous</a> |</li> | |||||
<li><a href="index.html">pyad2usb documentation</a> »</li> | |||||
<li><a href="pyad2usb.html" >pyad2usb Package</a> »</li> | |||||
<li><a href="index.html">pyad2 documentation</a> »</li> | |||||
</ul> | </ul> | ||||
</div> | </div> | ||||
<div class="footer"> | <div class="footer"> | ||||
@@ -6,7 +6,7 @@ | |||||
<head> | <head> | ||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> | <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> | ||||
<title>Search — pyad2usb documentation</title> | |||||
<title>Search — pyad2 documentation</title> | |||||
<link rel="stylesheet" href="_static/default.css" type="text/css" /> | <link rel="stylesheet" href="_static/default.css" type="text/css" /> | ||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" /> | <link rel="stylesheet" href="_static/pygments.css" type="text/css" /> | ||||
@@ -24,7 +24,7 @@ | |||||
<script type="text/javascript" src="_static/underscore.js"></script> | <script type="text/javascript" src="_static/underscore.js"></script> | ||||
<script type="text/javascript" src="_static/doctools.js"></script> | <script type="text/javascript" src="_static/doctools.js"></script> | ||||
<script type="text/javascript" src="_static/searchtools.js"></script> | <script type="text/javascript" src="_static/searchtools.js"></script> | ||||
<link rel="top" title="pyad2usb documentation" href="index.html" /> | |||||
<link rel="top" title="pyad2 documentation" href="index.html" /> | |||||
<script type="text/javascript"> | <script type="text/javascript"> | ||||
jQuery(function() { Search.loadIndex("searchindex.js"); }); | jQuery(function() { Search.loadIndex("searchindex.js"); }); | ||||
</script> | </script> | ||||
@@ -43,7 +43,7 @@ | |||||
<li class="right" > | <li class="right" > | ||||
<a href="py-modindex.html" title="Python Module Index" | <a href="py-modindex.html" title="Python Module Index" | ||||
>modules</a> |</li> | >modules</a> |</li> | ||||
<li><a href="index.html">pyad2usb documentation</a> »</li> | |||||
<li><a href="index.html">pyad2 documentation</a> »</li> | |||||
</ul> | </ul> | ||||
</div> | </div> | ||||
@@ -94,7 +94,7 @@ | |||||
<li class="right" > | <li class="right" > | ||||
<a href="py-modindex.html" title="Python Module Index" | <a href="py-modindex.html" title="Python Module Index" | ||||
>modules</a> |</li> | >modules</a> |</li> | ||||
<li><a href="index.html">pyad2usb documentation</a> »</li> | |||||
<li><a href="index.html">pyad2 documentation</a> »</li> | |||||
</ul> | </ul> | ||||
</div> | </div> | ||||
<div class="footer"> | <div class="footer"> | ||||
@@ -0,0 +1,37 @@ | |||||
Welcome to pyad2's documentation! | |||||
********************************* | |||||
Contents: | |||||
* pyad2 Package | |||||
* "ad2" Module | |||||
* "devices" Module | |||||
* "util" Module | |||||
* "zonetracking" Module | |||||
* "panels" Module | |||||
* "messages" Module | |||||
* Subpackages | |||||
* event Package | |||||
* "event" Package | |||||
* "event" Module | |||||
Indices and tables | |||||
****************** | |||||
* *Index* | |||||
* *Module Index* | |||||
* *Search Page* |
@@ -0,0 +1,25 @@ | |||||
pyad2 | |||||
***** | |||||
* pyad2 Package | |||||
* "ad2" Module | |||||
* "devices" Module | |||||
* "util" Module | |||||
* "zonetracking" Module | |||||
* "panels" Module | |||||
* "messages" Module | |||||
* Subpackages | |||||
* event Package | |||||
* "event" Package | |||||
* "event" Module |
@@ -0,0 +1,39 @@ | |||||
event Package | |||||
************* | |||||
"event" Package | |||||
=============== | |||||
"event" Module | |||||
============== | |||||
class class pyad2.event.event.Event(doc=None) | |||||
Bases: "object" | |||||
class class pyad2.event.event.EventHandler(event, obj) | |||||
Bases: "object" | |||||
add(func) | |||||
Add new event handler function. | |||||
Event handler function must be defined like func(sender, earg). | |||||
You can add handler also by using '+=' operator. | |||||
remove(func) | |||||
Remove existing event handler function. | |||||
You can remove handler also by using '-=' operator. | |||||
fire(earg=None) | |||||
Fire event and call all handler functions | |||||
You can call EventHandler object itself like e(earg) instead of | |||||
e.fire(earg). |
@@ -0,0 +1,784 @@ | |||||
pyad2 Package | |||||
************* | |||||
"ad2" Module | |||||
============ | |||||
Provides the full AD2USB class and factory. | |||||
class class pyad2.ad2.Overseer(attached_event=None, detached_event=None) | |||||
Bases: "object" | |||||
Factory for creation of AD2USB devices as well as provides | |||||
attach/detach events." | |||||
on_attached | |||||
Called when an AD2USB device has been detected. | |||||
on_detached | |||||
Called when an AD2USB device has been removed. | |||||
classmethod find_all() | |||||
Returns all AD2USB devices located on the system. | |||||
Returns: | |||||
list of devices found | |||||
Raises : | |||||
util.CommError | |||||
classmethod devices() | |||||
Returns a cached list of AD2USB devices located on the system. | |||||
Returns: | |||||
cached list of devices found. | |||||
classmethod create(device=None) | |||||
Factory method that returns the requested AD2USB device, or the | |||||
first device. | |||||
Parameters: | |||||
**device** (*tuple*) -- Tuple describing the USB device to | |||||
open, as returned by find_all(). | |||||
Returns: | |||||
AD2USB object utilizing the specified device. | |||||
Raises : | |||||
util.NoDeviceError | |||||
close() | |||||
Clean up and shut down. | |||||
start() | |||||
Starts the detection thread, if not already running. | |||||
stop() | |||||
Stops the detection thread. | |||||
get_device(device=None) | |||||
Factory method that returns the requested AD2USB device, or the | |||||
first device. | |||||
Parameters: | |||||
**device** (*tuple*) -- Tuple describing the USB device to | |||||
open, as returned by find_all(). | |||||
class class DetectThread(overseer) | |||||
Bases: "threading.Thread" | |||||
Thread that handles detection of added/removed devices. | |||||
stop() | |||||
Stops the thread. | |||||
run() | |||||
The actual detection process. | |||||
class class pyad2.ad2.AD2(device) | |||||
Bases: "object" | |||||
High-level wrapper around AD2USB/AD2SERIAL devices. | |||||
on_arm | |||||
Called when the panel is armed. | |||||
on_disarm | |||||
Called when the panel is disarmed. | |||||
on_power_changed | |||||
Called when panel power switches between AC and DC. | |||||
on_alarm | |||||
Called when the alarm is triggered. | |||||
on_fire | |||||
Called when a fire is detected. | |||||
on_bypass | |||||
Called when a zone is bypassed. | |||||
on_boot | |||||
Called when the device finishes bootings. | |||||
on_config_received | |||||
Called when the device receives its configuration. | |||||
on_zone_fault | |||||
Called when the device detects a zone fault. | |||||
on_zone_restore | |||||
Called when the device detects that a fault is restored. | |||||
on_low_battery | |||||
Called when the device detects a low battery. | |||||
on_panic | |||||
Called when the device detects a panic. | |||||
on_relay_changed | |||||
Called when a relay is opened or closed on an expander board. | |||||
on_message | |||||
Called when a message has been received from the device. | |||||
on_lrr_message | |||||
Called when an LRR message is received. | |||||
on_rfx_message | |||||
Called when an RFX message is received. | |||||
on_open | |||||
Called when the device has been opened. | |||||
on_close | |||||
Called when the device has been closed. | |||||
on_read | |||||
Called when a line has been read from the device. | |||||
on_write | |||||
Called when data has been written to the device. | |||||
F1 = u'\x01\x01\x01' | |||||
Represents panel function key #1 | |||||
F2 = u'\x02\x02\x02' | |||||
Represents panel function key #2 | |||||
F3 = u'\x03\x03\x03' | |||||
Represents panel function key #3 | |||||
F4 = u'\x04\x04\x04' | |||||
Represents panel function key #4 | |||||
BATTERY_TIMEOUT = 30 | |||||
Timeout before the battery status reverts. | |||||
FIRE_TIMEOUT = 30 | |||||
Timeout before the fire status reverts. | |||||
id | |||||
The ID of the AD2USB device. | |||||
Returns: | |||||
The identification string for the device. | |||||
open(baudrate=None, no_reader_thread=False) | |||||
Opens the device. | |||||
Parameters: | |||||
* **baudrate** (*int*) -- The baudrate used for the device. | |||||
* **interface** (*varies depends on device type.. FIXME*) | |||||
-- The interface used for the device. | |||||
* **index** (*int*) -- Interface index.. can probably | |||||
remove. FIXME | |||||
* **no_reader_thread** (*bool*) -- Specifies whether or not | |||||
the automatic reader thread should be started or not | |||||
close() | |||||
Closes the device. | |||||
send(data) | |||||
get_config() | |||||
Retrieves the configuration from the device. | |||||
save_config() | |||||
Sets configuration entries on the device. | |||||
reboot() | |||||
Reboots the device. | |||||
fault_zone(zone, simulate_wire_problem=False) | |||||
Faults a zone if we are emulating a zone expander. | |||||
Parameters: | |||||
* **zone** (*int*) -- The zone to fault. | |||||
* **simulate_wire_problem** (*bool*) -- Whether or not to | |||||
simulate a wire fault. | |||||
clear_zone(zone) | |||||
Clears a zone if we are emulating a zone expander. | |||||
Parameters: | |||||
**zone** (*int*) -- The zone to clear. | |||||
"devices" Module | |||||
================ | |||||
Contains different types of devices belonging to the AD2USB family. | |||||
class class pyad2.devices.Device | |||||
Bases: "object" | |||||
Generic parent device to all AD2USB products. | |||||
on_open | |||||
Called when the device has been opened | |||||
on_close | |||||
Called when the device has been closed | |||||
on_read | |||||
Called when a line has been read from the device | |||||
on_write | |||||
Called when data has been written to the device | |||||
id | |||||
Retrieve the device ID. | |||||
Returns: | |||||
The identification string for the device. | |||||
is_reader_alive() | |||||
Indicates whether or not the reader thread is alive. | |||||
Returns: | |||||
Whether or not the reader thread is alive. | |||||
stop_reader() | |||||
Stops the reader thread. | |||||
close() | |||||
Closes the device. | |||||
class class ReadThread(device) | |||||
Bases: "threading.Thread" | |||||
Reader thread which processes messages from the device. | |||||
READ_TIMEOUT = 10 | |||||
Timeout for the reader thread. | |||||
stop() | |||||
Stops the running thread. | |||||
run() | |||||
The actual read process. | |||||
class class pyad2.devices.USBDevice(interface=(None, 0)) | |||||
Bases: "pyad2.devices.Device" | |||||
AD2USB device exposed with PyFTDI's interface. | |||||
FTDI_VENDOR_ID = 1027 | |||||
Vendor ID used to recognize AD2USB devices. | |||||
FTDI_PRODUCT_ID = 24577 | |||||
Product ID used to recognize AD2USB devices. | |||||
BAUDRATE = 115200 | |||||
Default baudrate for AD2USB devices. | |||||
static find_all() | |||||
Returns all FTDI devices matching our vendor and product IDs. | |||||
Returns: | |||||
list of devices | |||||
Raises : | |||||
util.CommError | |||||
interface | |||||
Retrieves the interface used to connect to the device. | |||||
Returns: | |||||
the interface used to connect to the device. | |||||
serial_number | |||||
Retrieves the serial number of the device. | |||||
Returns: | |||||
The serial number of the device. | |||||
description | |||||
Retrieves the description of the device. | |||||
Returns: | |||||
The description of the device. | |||||
open(baudrate=115200, no_reader_thread=False) | |||||
Opens the device. | |||||
Parameters: | |||||
* **baudrate** (*int*) -- The baudrate to use. | |||||
* **no_reader_thread** (*bool*) -- Whether or not to | |||||
automatically start the reader thread. | |||||
Raises : | |||||
util.NoDeviceError | |||||
close() | |||||
Closes the device. | |||||
write(data) | |||||
Writes data to the device. | |||||
Parameters: | |||||
**data** (*str*) -- Data to write | |||||
Raises : | |||||
util.CommError | |||||
read() | |||||
Reads a single character from the device. | |||||
Returns: | |||||
The character read from the device. | |||||
Raises : | |||||
util.CommError | |||||
read_line(timeout=0.0, purge_buffer=False) | |||||
Reads a line from the device. | |||||
Parameters: | |||||
* **timeout** (*float*) -- Read timeout | |||||
* **purge_buffer** (*bool*) -- Indicates whether to purge | |||||
the buffer prior to reading. | |||||
Returns: | |||||
The line that was read. | |||||
Raises : | |||||
util.CommError, util.TimeoutError | |||||
class class pyad2.devices.SerialDevice(interface=None) | |||||
Bases: "pyad2.devices.Device" | |||||
AD2USB or AD2SERIAL device exposed with the pyserial interface. | |||||
BAUDRATE = 19200 | |||||
Default baudrate for Serial devices. | |||||
static find_all(pattern=None) | |||||
Returns all serial ports present. | |||||
Parameters: | |||||
**pattern** (*str*) -- Pattern to search for when retrieving | |||||
serial ports. | |||||
Returns: | |||||
list of devices | |||||
Raises : | |||||
util.CommError | |||||
interface | |||||
Retrieves the interface used to connect to the device. | |||||
Returns: | |||||
the interface used to connect to the device. | |||||
open(baudrate=19200, no_reader_thread=False) | |||||
Opens the device. | |||||
Parameters: | |||||
* **baudrate** (*int*) -- The baudrate to use with the | |||||
device. | |||||
* **no_reader_thread** (*bool*) -- Whether or not to | |||||
automatically start the reader thread. | |||||
Raises : | |||||
util.NoDeviceError | |||||
close() | |||||
Closes the device. | |||||
write(data) | |||||
Writes data to the device. | |||||
Parameters: | |||||
**data** (*str*) -- The data to write. | |||||
Raises : | |||||
util.CommError | |||||
read() | |||||
Reads a single character from the device. | |||||
Returns: | |||||
The character read from the device. | |||||
Raises : | |||||
util.CommError | |||||
read_line(timeout=0.0, purge_buffer=False) | |||||
Reads a line from the device. | |||||
Parameters: | |||||
* **timeout** (*float*) -- The read timeout. | |||||
* **purge_buffer** (*bool*) -- Indicates whether to purge | |||||
the buffer prior to reading. | |||||
Returns: | |||||
The line read. | |||||
Raises : | |||||
util.CommError, util.TimeoutError | |||||
class class pyad2.devices.SocketDevice(interface=('localhost', 10000)) | |||||
Bases: "pyad2.devices.Device" | |||||
Device that supports communication with an AD2USB that is exposed | |||||
via ser2sock or another Serial to IP interface. | |||||
interface | |||||
Retrieves the interface used to connect to the device. | |||||
Returns: | |||||
the interface used to connect to the device. | |||||
ssl | |||||
Retrieves whether or not the device is using SSL. | |||||
Returns: | |||||
Whether or not the device is using SSL. | |||||
ssl_certificate | |||||
Retrieves the SSL client certificate path used for | |||||
authentication. | |||||
Returns: | |||||
The certificate path | |||||
ssl_key | |||||
Retrieves the SSL client certificate key used for | |||||
authentication. | |||||
Returns: | |||||
The key path | |||||
ssl_ca | |||||
Retrieves the SSL Certificate Authority certificate used for | |||||
authentication. | |||||
Returns: | |||||
The CA path | |||||
open(baudrate=None, no_reader_thread=False) | |||||
Opens the device. | |||||
Parameters: | |||||
* **baudrate** (*int*) -- The baudrate to use | |||||
* **no_reader_thread** (*bool*) -- Whether or not to | |||||
automatically open the reader thread. | |||||
Raises : | |||||
util.NoDeviceError, util.CommError | |||||
close() | |||||
Closes the device. | |||||
write(data) | |||||
Writes data to the device. | |||||
Parameters: | |||||
**data** (*str*) -- The data to write. | |||||
Returns: | |||||
The number of bytes sent. | |||||
Raises : | |||||
util.CommError | |||||
read() | |||||
Reads a single character from the device. | |||||
Returns: | |||||
The character read from the device. | |||||
Raises : | |||||
util.CommError | |||||
read_line(timeout=0.0, purge_buffer=False) | |||||
Reads a line from the device. | |||||
Parameters: | |||||
* **timeout** (*float*) -- The read timeout. | |||||
* **purge_buffer** (*bool*) -- Indicates whether to purge | |||||
the buffer prior to reading. | |||||
Returns: | |||||
The line read from the device. | |||||
Raises : | |||||
util.CommError, util.TimeoutError | |||||
"util" Module | |||||
============= | |||||
Provides utility classes for the AD2USB devices. | |||||
exception exception pyad2.util.NoDeviceError | |||||
Bases: "exceptions.Exception" | |||||
No devices found. | |||||
exception exception pyad2.util.CommError | |||||
Bases: "exceptions.Exception" | |||||
There was an error communicating with the device. | |||||
exception exception pyad2.util.TimeoutError | |||||
Bases: "exceptions.Exception" | |||||
There was a timeout while trying to communicate with the device. | |||||
exception exception pyad2.util.InvalidMessageError | |||||
Bases: "exceptions.Exception" | |||||
The format of the panel message was invalid. | |||||
class class pyad2.util.Firmware | |||||
Bases: "object" | |||||
Represents firmware for the AD2USB/AD2SERIAL devices. | |||||
STAGE_START = 0 | |||||
STAGE_WAITING = 1 | |||||
STAGE_BOOT = 2 | |||||
STAGE_LOAD = 3 | |||||
STAGE_UPLOADING = 4 | |||||
STAGE_DONE = 5 | |||||
static upload(dev, filename, progress_callback=None) | |||||
Uploads firmware to an AD2USB/AD2SERIAL device. | |||||
Parameters: | |||||
* **filename** (*str*) -- The firmware filename | |||||
* **progress_callback** (*function*) -- Callback function | |||||
used to report progress. | |||||
Raises : | |||||
util.NoDeviceError, util.TimeoutError | |||||
"zonetracking" Module | |||||
===================== | |||||
Provides zone tracking functionality for the AD2USB device family. | |||||
class class pyad2.zonetracking.Zone(zone=0, name='', status=0) | |||||
Bases: "object" | |||||
Representation of a panel zone. | |||||
CLEAR = 0 | |||||
Status indicating that the zone is cleared. | |||||
FAULT = 1 | |||||
Status indicating that the zone is faulted. | |||||
CHECK = 2 | |||||
Status indicating that there is a wiring issue with the zone. | |||||
STATUS = {0: 'CLEAR', 1: 'FAULT', 2: 'CHECK'} | |||||
class class pyad2.zonetracking.Zonetracker | |||||
Bases: "object" | |||||
Handles tracking of zone and their statuses. | |||||
on_fault | |||||
Called when the device detects a zone fault. | |||||
on_restore | |||||
Called when the device detects that a fault is restored. | |||||
EXPIRE = 30 | |||||
Zone expiration timeout. | |||||
update(message) | |||||
Update zone statuses based on the current message. | |||||
Parameters: | |||||
**message** (*Message or ExpanderMessage*) -- Message to use | |||||
to update the zone tracking. | |||||
"panels" Module | |||||
=============== | |||||
Representations of Panels and their templates. | |||||
"messages" Module | |||||
================= | |||||
Message representations received from the panel through the AD2USB. | |||||
class class pyad2.messages.BaseMessage | |||||
Bases: "object" | |||||
Base class for messages. | |||||
class class pyad2.messages.Message(data=None) | |||||
Bases: "pyad2.messages.BaseMessage" | |||||
Represents a message from the alarm panel. | |||||
class class pyad2.messages.ExpanderMessage(data=None) | |||||
Bases: "pyad2.messages.BaseMessage" | |||||
Represents a message from a zone or relay expansion module. | |||||
ZONE = 0 | |||||
RELAY = 1 | |||||
class class pyad2.messages.RFMessage(data=None) | |||||
Bases: "pyad2.messages.BaseMessage" | |||||
Represents a message from an RF receiver. | |||||
class class pyad2.messages.LRRMessage(data=None) | |||||
Bases: "pyad2.messages.BaseMessage" | |||||
Represent a message from a Long Range Radio. | |||||
Subpackages | |||||
=========== | |||||
* event Package | |||||
* "event" Package | |||||
* "event" Module |
@@ -1,6 +1,6 @@ | |||||
# -*- coding: utf-8 -*- | # -*- coding: utf-8 -*- | ||||
# | # | ||||
# pyad2usb documentation build configuration file, created by | |||||
# pyad2 documentation build configuration file, created by | |||||
# sphinx-quickstart on Sat Jun 8 14:38:46 2013. | # sphinx-quickstart on Sat Jun 8 14:38:46 2013. | ||||
# | # | ||||
# This file is execfile()d with the current directory set to its containing dir. | # This file is execfile()d with the current directory set to its containing dir. | ||||
@@ -40,7 +40,7 @@ source_suffix = '.rst' | |||||
master_doc = 'index' | master_doc = 'index' | ||||
# General information about the project. | # General information about the project. | ||||
project = u'pyad2usb' | |||||
project = u'pyad2' | |||||
copyright = u'2013, Author' | copyright = u'2013, Author' | ||||
# The version info for the project you're documenting, acts as replacement for | # The version info for the project you're documenting, acts as replacement for | ||||
@@ -167,7 +167,7 @@ html_static_path = ['_static'] | |||||
#html_file_suffix = None | #html_file_suffix = None | ||||
# Output file base name for HTML help builder. | # Output file base name for HTML help builder. | ||||
htmlhelp_basename = 'pyad2usbdoc' | |||||
htmlhelp_basename = 'pyad2doc' | |||||
# -- Options for LaTeX output -------------------------------------------------- | # -- Options for LaTeX output -------------------------------------------------- | ||||
@@ -186,7 +186,7 @@ latex_elements = { | |||||
# Grouping the document tree into LaTeX files. List of tuples | # Grouping the document tree into LaTeX files. List of tuples | ||||
# (source start file, target name, title, author, documentclass [howto/manual]). | # (source start file, target name, title, author, documentclass [howto/manual]). | ||||
latex_documents = [ | latex_documents = [ | ||||
('index', 'pyad2usb.tex', u'pyad2usb Documentation', | |||||
('index', 'pyad2.tex', u'pyad2 Documentation', | |||||
u'Author', 'manual'), | u'Author', 'manual'), | ||||
] | ] | ||||
@@ -216,7 +216,7 @@ latex_documents = [ | |||||
# One entry per manual page. List of tuples | # One entry per manual page. List of tuples | ||||
# (source start file, name, description, authors, manual section). | # (source start file, name, description, authors, manual section). | ||||
man_pages = [ | man_pages = [ | ||||
('index', 'pyad2usb', u'pyad2usb Documentation', | |||||
('index', 'pyad2', u'pyad2 Documentation', | |||||
[u'Author'], 1) | [u'Author'], 1) | ||||
] | ] | ||||
@@ -230,8 +230,8 @@ man_pages = [ | |||||
# (source start file, target name, title, author, | # (source start file, target name, title, author, | ||||
# dir menu entry, description, category) | # dir menu entry, description, category) | ||||
texinfo_documents = [ | texinfo_documents = [ | ||||
('index', 'pyad2usb', u'pyad2usb Documentation', | |||||
u'Author', 'pyad2usb', 'One line description of project.', | |||||
('index', 'pyad2', u'pyad2 Documentation', | |||||
u'Author', 'pyad2', 'One line description of project.', | |||||
'Miscellaneous'), | 'Miscellaneous'), | ||||
] | ] | ||||
@@ -251,7 +251,7 @@ texinfo_documents = [ | |||||
# -- Options for Epub output --------------------------------------------------- | # -- Options for Epub output --------------------------------------------------- | ||||
# Bibliographic Dublin Core info. | # Bibliographic Dublin Core info. | ||||
epub_title = u'pyad2usb' | |||||
epub_title = u'pyad2' | |||||
epub_author = u'Author' | epub_author = u'Author' | ||||
epub_publisher = u'Author' | epub_publisher = u'Author' | ||||
epub_copyright = u'2013, Author' | epub_copyright = u'2013, Author' | ||||
@@ -3,7 +3,7 @@ | |||||
You can adapt this file completely to your liking, but it should at least | You can adapt this file completely to your liking, but it should at least | ||||
contain the root `toctree` directive. | contain the root `toctree` directive. | ||||
Welcome to pyad2usb's documentation! | |||||
Welcome to pyad2's documentation! | |||||
==================================== | ==================================== | ||||
Contents: | Contents: | ||||
@@ -11,7 +11,7 @@ Contents: | |||||
.. toctree:: | .. toctree:: | ||||
:maxdepth: 4 | :maxdepth: 4 | ||||
pyad2usb | |||||
pyad2 | |||||
Indices and tables | Indices and tables | ||||
@@ -1,7 +1,7 @@ | |||||
pyad2usb | |||||
pyad2 | |||||
======== | ======== | ||||
.. toctree:: | .. toctree:: | ||||
:maxdepth: 4 | :maxdepth: 4 | ||||
pyad2usb | |||||
pyad2 |
@@ -0,0 +1,19 @@ | |||||
event Package | |||||
============= | |||||
:mod:`event` Package | |||||
-------------------- | |||||
.. automodule:: pyad2.event | |||||
:members: | |||||
:undoc-members: | |||||
:show-inheritance: | |||||
:mod:`event` Module | |||||
------------------- | |||||
.. automodule:: pyad2.event.event | |||||
:members: | |||||
:undoc-members: | |||||
:show-inheritance: | |||||
@@ -0,0 +1,58 @@ | |||||
pyad2 Package | |||||
================ | |||||
:mod:`ad2` Module | |||||
-------------------- | |||||
.. automodule:: pyad2.ad2 | |||||
:members: | |||||
:undoc-members: | |||||
:show-inheritance: | |||||
:mod:`devices` Module | |||||
--------------------- | |||||
.. automodule:: pyad2.devices | |||||
:members: | |||||
:undoc-members: | |||||
:show-inheritance: | |||||
:mod:`util` Module | |||||
------------------ | |||||
.. automodule:: pyad2.util | |||||
:members: | |||||
:undoc-members: | |||||
:show-inheritance: | |||||
:mod:`zonetracking` Module | |||||
-------------------------- | |||||
.. automodule:: pyad2.zonetracking | |||||
:members: | |||||
:undoc-members: | |||||
:show-inheritance: | |||||
:mod:`panels` Module | |||||
-------------------- | |||||
.. automodule:: pyad2.panels | |||||
:members: | |||||
:undoc-members: | |||||
:show-inheritance: | |||||
:mod:`messages` Module | |||||
---------------------- | |||||
.. automodule:: pyad2.messages | |||||
:members: | |||||
:undoc-members: | |||||
:show-inheritance: | |||||
Subpackages | |||||
----------- | |||||
.. toctree:: | |||||
pyad2.event | |||||