Commits

Ginés Martínez Sánchez committed f1ff6e0 Draft

Removing ghtml. Moved to the new project ghtml.

Comments (0)

Files changed (44)

 ==================
 
 Refactoring doc, examples, ... all.
+
+0.3.1 (2012-07-04)
+==================
+
+Removing ghtml. Moved to the new project ghtml.
 ============
 
 - Incorporate multiple wsgi applications, as paste.urlmap, but dinamically!
-- Create scaffold templates.
+- pintar recorrido completo de flechas de eventos out from broadcast...
+- globals.py !! BAD NAME!!! change it!
Add a comment to this file

docs/_static/CONNEX_FSM.svg

Removed
Old image
-<?xml version="1.0" encoding="utf-8" ?>
-<svg baseProfile="tiny" height="864" version="1.2" width="743" xmlns="http://www.w3.org/2000/svg" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:inkspace="http://www.inkscape.org/namespaces/inkscape" xmlns:xlink="http://www.w3.org/1999/xlink"><title /><desc>Graph of a FSM</desc><defs><filter height="1.504" id="filter_blur" inkspace:collect="always" width="1.1575" x="-0.0788" y="-0.252"><feGaussianBlur id="feGaussianBlur3780" in="SourceGraphic" inkspace:collect="always" stdDeviation="4.2" /></filter></defs><g font-family="DejaVu Sans" font-size="14"><rect fill="#f8f8f8" height="564" rx="10" ry="10" stroke="#888a85" stroke-width="2" width="653" x="30" y="150" /><g transform="translate(230,200)"><g transform="translate(0,0)"><rect fill="black" height="80" rx="10" ry="10" stroke="black" stroke-width="1" style="filter:url(#filter_blur);opacity:0.7;fill-opacity:1" width="228" x="0" y="0" /><rect fill="#faf1e8" height="80" rx="10" ry="10" stroke="black" stroke-width="1" width="228" x="0" y="0" /><text x="18" y="21">ST_DISCONNECTED</text><path d="m 0 28 228 0" stroke="black" stroke-width="1" /><text x="18" y="45">ac_enqueue_tx_data</text><line fill="black" stroke="black" stroke-width="1" x1="0" x2="9" y1="40" y2="40" /><circle cx="9" cy="40" fill="black" r="3" stroke="black" stroke-width="1" /><rect fill="black" height="4" stroke="black" stroke-width="1" width="4" x="226" y="40" /><text x="18" y="69">ac_timeout_disconnected</text><line fill="black" stroke="black" stroke-width="1" x1="0" x2="9" y1="64" y2="64" /><circle cx="9" cy="64" fill="black" r="3" stroke="black" stroke-width="1" /><rect fill="black" height="4" stroke="black" stroke-width="1" width="4" x="226" y="64" /></g><g transform="translate(0,120)"><rect fill="black" height="128" rx="10" ry="10" stroke="black" stroke-width="1" style="filter:url(#filter_blur);opacity:0.7;fill-opacity:1" width="228" x="0" y="0" /><rect fill="#faf1e8" height="128" rx="10" ry="10" stroke="black" stroke-width="1" width="228" x="0" y="0" /><text x="18" y="21">ST_WAIT_CONNECTED</text><path d="m 0 28 228 0" stroke="black" stroke-width="1" /><text x="18" y="45">ac_enqueue_tx_data</text><line fill="black" stroke="black" stroke-width="1" x1="0" x2="9" y1="40" y2="40" /><circle cx="9" cy="40" fill="black" r="3" stroke="black" stroke-width="1" /><rect fill="black" height="4" stroke="black" stroke-width="1" width="4" x="226" y="40" /><text x="18" y="69">ac_connected</text><line fill="black" stroke="black" stroke-width="1" x1="0" x2="9" y1="64" y2="64" /><circle cx="9" cy="64" fill="black" r="3" stroke="black" stroke-width="1" /><rect fill="black" height="4" stroke="black" stroke-width="1" width="4" x="226" y="64" /><text x="18" y="93">ac_disconnected</text><line fill="black" stroke="black" stroke-width="1" x1="0" x2="9" y1="88" y2="88" /><circle cx="9" cy="88" fill="black" r="3" stroke="black" stroke-width="1" /><rect fill="black" height="4" stroke="black" stroke-width="1" width="4" x="226" y="88" /><text x="18" y="117">ac_timeout_wait_connected</text><line fill="black" stroke="black" stroke-width="1" x1="0" x2="9" y1="112" y2="112" /><circle cx="9" cy="112" fill="black" r="3" stroke="black" stroke-width="1" /><rect fill="black" height="4" stroke="black" stroke-width="1" width="4" x="226" y="112" /></g><g transform="translate(0,288)"><rect fill="black" height="176" rx="10" ry="10" stroke="black" stroke-width="1" style="filter:url(#filter_blur);opacity:0.7;fill-opacity:1" width="228" x="0" y="0" /><rect fill="#faf1e8" height="176" rx="10" ry="10" stroke="black" stroke-width="1" width="228" x="0" y="0" /><text x="18" y="21">ST_CONNECTED</text><path d="m 0 28 228 0" stroke="black" stroke-width="1" /><text x="18" y="45">ac_drop</text><line fill="black" stroke="black" stroke-width="1" x1="0" x2="9" y1="40" y2="40" /><circle cx="9" cy="40" fill="black" r="3" stroke="black" stroke-width="1" /><rect fill="black" height="4" stroke="black" stroke-width="1" width="4" x="226" y="40" /><text x="18" y="69">ac_tx_data</text><line fill="black" stroke="black" stroke-width="1" x1="0" x2="9" y1="64" y2="64" /><circle cx="9" cy="64" fill="black" r="3" stroke="black" stroke-width="1" /><rect fill="black" height="4" stroke="black" stroke-width="1" width="4" x="226" y="64" /><text x="18" y="93">ac_disconnected</text><line fill="black" stroke="black" stroke-width="1" x1="0" x2="9" y1="88" y2="88" /><circle cx="9" cy="88" fill="black" r="3" stroke="black" stroke-width="1" /><rect fill="black" height="4" stroke="black" stroke-width="1" width="4" x="226" y="88" /><text x="18" y="117">ac_timeout_data</text><line fill="black" stroke="black" stroke-width="1" x1="0" x2="9" y1="112" y2="112" /><circle cx="9" cy="112" fill="black" r="3" stroke="black" stroke-width="1" /><rect fill="black" height="4" stroke="black" stroke-width="1" width="4" x="226" y="112" /><text x="18" y="141">ac_rx_data</text><line fill="black" stroke="black" stroke-width="1" x1="0" x2="9" y1="136" y2="136" /><circle cx="9" cy="136" fill="black" r="3" stroke="black" stroke-width="1" /><rect fill="black" height="4" stroke="black" stroke-width="1" width="4" x="226" y="136" /><text x="18" y="165">ac_transmit_ready</text><line fill="black" stroke="black" stroke-width="1" x1="0" x2="9" y1="160" y2="160" /><circle cx="9" cy="160" fill="black" r="3" stroke="black" stroke-width="1" /><rect fill="black" height="4" stroke="black" stroke-width="1" width="4" x="226" y="160" /></g></g><text font-size="28" x="230" y="30">CONNEX_FSM</text><g fill="none" stroke="#edd400" stroke-width="4"><path d="M 55 130 L 55 508 Q 55 528 75 528 L 228 528" /><path d="m 220 528 4 0 0 -4 4 4 -4 4 0 -4 z" /></g><text transform="rotate(-45,55,130)" x="55" y="126">EV_DROP</text><g fill="none" stroke="#73d216" stroke-width="4"><path d="M 80 130 L 80 220 Q 80 240 100 240 L 228 240" /><path d="m 220 240 4 0 0 -4 4 4 -4 4 0 -4 z" /><path d="M 80 130 L 80 340 Q 80 360 100 360 L 228 360" /><path d="m 220 360 4 0 0 -4 4 4 -4 4 0 -4 z" /><path d="M 80 130 L 80 532 Q 80 552 100 552 L 228 552" /><path d="m 220 552 4 0 0 -4 4 4 -4 4 0 -4 z" /></g><text transform="rotate(-45,80,130)" x="80" y="126">EV_TX_DATA</text><g fill="none" stroke="#ef2929" stroke-width="4"><path d="M 105 734 L 105 668 Q 105 648 125 648 L 228 648" /><path d="m 220 648 4 0 0 -4 4 4 -4 4 0 -4 z" /></g><text transform="rotate(45,105,734)" x="105" y="747">EV_TRANSMIT_READY</text><g fill="none" stroke="#729fcf" stroke-width="4"><path d="M 130 734 L 130 428 Q 130 408 150 408 L 228 408" /><path d="m 220 408 4 0 0 -4 4 4 -4 4 0 -4 z" /><path d="M 130 734 L 130 596 Q 130 576 150 576 L 228 576" /><path d="m 220 576 4 0 0 -4 4 4 -4 4 0 -4 z" /></g><text transform="rotate(45,130,734)" x="130" y="747">EV_DISCONNECTED</text><g fill="none" stroke="#e9b96e" stroke-width="4"><path d="M 155 734 L 155 644 Q 155 624 175 624 L 228 624" /><path d="m 220 624 4 0 0 -4 4 4 -4 4 0 -4 z" /></g><text transform="rotate(45,155,734)" x="155" y="747">EV_RX_DATA</text><g fill="none" stroke="#fcaf3e" stroke-width="4"><path d="M 180 734 L 180 404 Q 180 384 200 384 L 228 384" /><path d="m 220 384 4 0 0 -4 4 4 -4 4 0 -4 z" /></g><text transform="rotate(45,180,734)" x="180" y="747">EV_CONNECTED</text><g fill="none" stroke="#ad7fa8" stroke-width="4"><path d="M 205 734 L 205 284 Q 205 264 225 264 L 228 264" /><path d="m 220 264 4 0 0 -4 4 4 -4 4 0 -4 z" /><path d="M 205 734 L 205 452 Q 205 432 225 432 L 228 432" /><path d="m 220 432 4 0 0 -4 4 4 -4 4 0 -4 z" /><path d="M 205 734 L 205 620 Q 205 600 225 600 L 228 600" /><path d="m 220 600 4 0 0 -4 4 4 -4 4 0 -4 z" /></g><text transform="rotate(45,205,734)" x="205" y="747">EV_TIMEOUT</text><g fill="none" stroke="#ef2929" stroke-width="4"><path d="M 460 650 L 513 650 Q 533 650 533 630 L 533 130" /><path d="m 533 138 0 -4 -4 0 4 -4 4 4 -4 0 z" /></g><text transform="rotate(-45,533,130)" x="535" y="126">EV_TRANSMIT_READY</text><g fill="none" stroke="#729fcf" stroke-width="4"><path d="M 460 410 L 538 410 Q 558 410 558 390 L 558 130" /><path d="m 558 138 0 -4 -4 0 4 -4 4 4 -4 0 z" /><path d="M 460 578 L 538 578 Q 558 578 558 558 L 558 130" /><path d="m 558 138 0 -4 -4 0 4 -4 4 4 -4 0 z" /></g><text transform="rotate(-45,558,130)" x="560" y="126">EV_DISCONNECTED</text><g fill="none" stroke="#e9b96e" stroke-width="4"><path d="M 460 626 L 563 626 Q 583 626 583 606 L 583 130" /><path d="m 583 138 0 -4 -4 0 4 -4 4 4 -4 0 z" /></g><text transform="rotate(-45,583,130)" x="585" y="126">EV_RX_DATA</text><g fill="none" stroke="#fcaf3e" stroke-width="4"><path d="M 460 386 L 588 386 Q 608 386 608 366 L 608 130" /><path d="m 608 138 0 -4 -4 0 4 -4 4 4 -4 0 z" /></g><text transform="rotate(-45,608,130)" x="610" y="126">EV_CONNECTED</text><g fill="none" stroke="#edd400" stroke-width="4"><path d="M 460 530 L 613 530 Q 633 530 633 550 L 633 734" /><path d="m 633 726 0 4 4 0 -4 4 -4 -4 4 0 z" /></g><text transform="rotate(45,633,734)" x="637" y="742">EV_DROP</text><g fill="none" stroke="#73d216" stroke-width="4"><path d="M 460 554 L 638 554 Q 658 554 658 574 L 658 734" /><path d="m 658 726 0 4 4 0 -4 4 -4 -4 4 0 z" /></g><text transform="rotate(45,658,734)" x="662" y="742">EV_TX_DATA</text><g fill="none" stroke="black" stroke-width="1"><path d="M 460 410 L 468 410 Q 478 410 478 400 L 478 223 Q 478 213 468 213 L 458 213" /><path d="m 474 213 -8 0 0 8 -8 -8 8 -8 0 8 z" fill="black" /></g><g fill="none" stroke="black" stroke-width="1"><path d="M 460 434 L 478 434 Q 488 434 488 424 L 488 223 Q 488 213 478 213 L 458 213" /><path d="m 474 213 -8 0 0 8 -8 -8 8 -8 0 8 z" fill="black" /></g><g fill="none" stroke="black" stroke-width="1"><path d="M 460 386 L 488 386 Q 498 386 498 396 L 498 491 Q 498 501 488 501 L 458 501" /><path d="m 474 501 -8 0 0 8 -8 -8 8 -8 0 8 z" fill="black" /></g><g fill="none" stroke="black" stroke-width="1"><path d="M 460 578 L 498 578 Q 508 578 508 568 L 508 223 Q 508 213 498 213 L 458 213" /><path d="m 474 213 -8 0 0 8 -8 -8 8 -8 0 8 z" fill="black" /></g></g></svg>
Add a comment to this file

docs/_static/CONNEX_FSM.svg.png

Removed
Old image
Add a comment to this file

docs/_static/TIMER_FSM.svg

Removed
Old image
-<?xml version="1.0" encoding="utf-8" ?>
-<svg baseProfile="full" height="600" version="1.1" width="600" xmlns="http://www.w3.org/2000/svg" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:inkspace="http://www.inkscape.org/namespaces/inkscape" xmlns:xlink="http://www.w3.org/1999/xlink"><title /><desc>Graph of a FSM</desc><defs><filter height="1.504" id="filter_blur" inkspace:collect="always" width="1.1575" x="-0.07875" y="-0.252"><feGaussianBlur id="feGaussianBlur3780" in="SourceGraphic" inkspace:collect="always" stdDeviation="4.2" /></filter></defs><g font-family="DejaVu Sans" font-size="14"><g transform="translate(100,100)"><g transform="translate(0,0)"><rect fill="black" height="56" rx="10" ry="10" stroke="black" stroke-width="1" style="filter:url(#filter_blur);opacity:0.7;fill-opacity:1" width="123" x="0" y="0" /><rect fill="#faf1e8" height="56" rx="10" ry="10" stroke="black" stroke-width="1" width="123" x="0" y="0" /><text x="18" y="21">ST_IDLE</text><path d="m 0 28 123 0" stroke="black" stroke-width="1" /><text x="18" y="45">ac_set_timer</text><line fill="black" stroke="black" stroke-width="1" x1="0" x2="9" y1="40" y2="40" /><circle cx="9" cy="40" fill="black" r="3" stroke="black" stroke-width="1" />
-
-<set attributeName="opacity" from="1" to="0.5" begin="mouseover" end="mouseout"/>
-
-
-<rect fill="black" height="4" stroke="black" stroke-width="1" width="4" x="121" y="40" /></g></g></g></svg>
Add a comment to this file

docs/_static/TIMER_FSM.svg.png

Removed
Old image
Add a comment to this file

docs/_static/layout.png

Removed
Old image
Add a comment to this file

docs/_static/sample.png

Removed
Old image
Add a comment to this file

docs/_static/sample.svg

Removed
Old image
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="572.44055"
-   height="591.34308"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.48.2 r9819"
-   sodipodi:docname="sample.svg">
-  <defs
-     id="defs4">
-    <marker
-       inkscape:stockid="Arrow2Lend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow2Lend"
-       style="overflow:visible">
-      <path
-         id="path3817"
-         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow2Mend"
-       style="overflow:visible">
-      <path
-         id="path3823"
-         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(-0.6,-0.6)"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="DotL"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="DotL"
-       style="overflow:visible">
-      <path
-         id="path3858"
-         d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z"
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none;marker-end:none"
-         transform="matrix(0.8,0,0,0.8,5.92,0.8)"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="DotM"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="DotM"
-       style="overflow:visible">
-      <path
-         id="path3861"
-         d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z"
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none;marker-end:none"
-         transform="matrix(0.4,0,0,0.4,2.96,0.4)"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="DotM"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="DotM-4"
-       style="overflow:visible">
-      <path
-         inkscape:connector-curvature="0"
-         id="path3861-0"
-         d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z"
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none;marker-end:none"
-         transform="matrix(0.4,0,0,0.4,2.96,0.4)" />
-    </marker>
-    <marker
-       inkscape:stockid="DotM"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="marker5012"
-       style="overflow:visible">
-      <path
-         inkscape:connector-curvature="0"
-         id="path5014"
-         d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z"
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none;marker-end:none"
-         transform="matrix(0.4,0,0,0.4,2.96,0.4)" />
-    </marker>
-    <marker
-       inkscape:stockid="DotM"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="DotM-49"
-       style="overflow:visible">
-      <path
-         inkscape:connector-curvature="0"
-         id="path3861-8"
-         d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z"
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none;marker-end:none"
-         transform="matrix(0.4,0,0,0.4,2.96,0.4)" />
-    </marker>
-    <marker
-       inkscape:stockid="DotM"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="DotM-2"
-       style="overflow:visible">
-      <path
-         inkscape:connector-curvature="0"
-         id="path3861-1"
-         d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z"
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none;marker-end:none"
-         transform="matrix(0.4,0,0,0.4,2.96,0.4)" />
-    </marker>
-    <marker
-       inkscape:stockid="DotM"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="DotM-0"
-       style="overflow:visible">
-      <path
-         inkscape:connector-curvature="0"
-         id="path3861-5"
-         d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z"
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none;marker-end:none"
-         transform="matrix(0.4,0,0,0.4,2.96,0.4)" />
-    </marker>
-    <marker
-       inkscape:stockid="DotM"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="DotM-43"
-       style="overflow:visible">
-      <path
-         inkscape:connector-curvature="0"
-         id="path3861-3"
-         d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z"
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none;marker-end:none"
-         transform="matrix(0.4,0,0,0.4,2.96,0.4)" />
-    </marker>
-    <marker
-       inkscape:stockid="DotM"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="marker5221"
-       style="overflow:visible">
-      <path
-         inkscape:connector-curvature="0"
-         id="path5223"
-         d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z"
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none;marker-end:none"
-         transform="matrix(0.4,0,0,0.4,2.96,0.4)" />
-    </marker>
-    <marker
-       inkscape:stockid="DotM"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="marker5225"
-       style="overflow:visible">
-      <path
-         inkscape:connector-curvature="0"
-         id="path5227"
-         d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z"
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none;marker-end:none"
-         transform="matrix(0.4,0,0,0.4,2.96,0.4)" />
-    </marker>
-    <marker
-       inkscape:stockid="DotM"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="marker5229"
-       style="overflow:visible">
-      <path
-         inkscape:connector-curvature="0"
-         id="path5231"
-         d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z"
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none;marker-end:none"
-         transform="matrix(0.4,0,0,0.4,2.96,0.4)" />
-    </marker>
-    <marker
-       inkscape:stockid="DotM"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="DotM-8"
-       style="overflow:visible">
-      <path
-         inkscape:connector-curvature="0"
-         id="path3861-31"
-         d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z"
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none;marker-end:none"
-         transform="matrix(0.4,0,0,0.4,2.96,0.4)" />
-    </marker>
-    <marker
-       inkscape:stockid="DotM"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="DotM-7"
-       style="overflow:visible">
-      <path
-         inkscape:connector-curvature="0"
-         id="path3861-9"
-         d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z"
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none;marker-end:none"
-         transform="matrix(0.4,0,0,0.4,2.96,0.4)" />
-    </marker>
-    <marker
-       inkscape:stockid="DotL"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="DotL-9"
-       style="overflow:visible">
-      <path
-         inkscape:connector-curvature="0"
-         id="path3858-5"
-         d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z"
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none;marker-end:none"
-         transform="matrix(0.8,0,0,0.8,5.92,0.8)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Lend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow2Lend-9"
-       style="overflow:visible">
-      <path
-         inkscape:connector-curvature="0"
-         id="path3817-9"
-         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
-    </marker>
-    <marker
-       inkscape:stockid="DotL"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="DotL-3"
-       style="overflow:visible">
-      <path
-         inkscape:connector-curvature="0"
-         id="path3858-4"
-         d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z"
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none;marker-end:none"
-         transform="matrix(0.8,0,0,0.8,5.92,0.8)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Lend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow2Lend-1"
-       style="overflow:visible">
-      <path
-         inkscape:connector-curvature="0"
-         id="path3817-93"
-         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
-    </marker>
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="1.762"
-     inkscape:cx="318.81667"
-     inkscape:cy="469.2786"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="true"
-     showborder="true"
-     borderlayer="false"
-     inkscape:window-width="1366"
-     inkscape:window-height="685"
-     inkscape:window-x="0"
-     inkscape:window-y="30"
-     inkscape:window-maximized="1"
-     showguides="true"
-     inkscape:guide-bbox="true"
-     fit-margin-top="0"
-     fit-margin-left="0"
-     fit-margin-right="0"
-     fit-margin-bottom="0">
-    <inkscape:grid
-       type="xygrid"
-       id="grid2985"
-       empspacing="5"
-       visible="true"
-       enabled="true"
-       snapvisiblegridlinesonly="true" />
-    <sodipodi:guide
-       orientation="0,1"
-       position="548.94189,508.31819"
-       id="guide12013" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(98.941895,-499.33728)">
-    <text
-       xml:space="preserve"
-       style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono"
-       x="220.35715"
-       y="80"
-       id="text3769"
-       sodipodi:linespacing="125%"
-       transform="translate(0,552.36215)"><tspan
-         sodipodi:role="line"
-         id="tspan3771"
-         x="220.35715"
-         y="80"></tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono"
-       x="205.06097"
-       y="115.68746"
-       id="text3785"
-       sodipodi:linespacing="125%"
-       transform="translate(0,552.36215)"><tspan
-         sodipodi:role="line"
-         id="tspan3787"
-         x="205.06097"
-         y="115.68746" /></text>
-    <g
-       id="g5438"
-       transform="translate(-14,0)">
-      <rect
-         y="612.82648"
-         x="169.99998"
-         height="59.535652"
-         width="190"
-         id="rect3755"
-         style="opacity:0.7;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.30916202;stroke-opacity:1" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path3763"
-         d="m 169.99999,629.05148 190.00001,0"
-         style="fill:none;stroke:#000000;stroke-width:1.2541256px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
-      <text
-         transform="scale(0.97424461,1.0264363)"
-         sodipodi:linespacing="125%"
-         id="text3773"
-         y="607.30725"
-         x="200.15506"
-         style="font-size:11.29079914px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono"
-         xml:space="preserve"><tspan
-           y="607.30725"
-           x="200.15506"
-           id="tspan3775"
-           sodipodi:role="line">ST_DISCONNECTED</tspan></text>
-      <text
-         transform="scale(0.97424461,1.0264363)"
-         sodipodi:linespacing="125%"
-         id="text3777"
-         y="624.75665"
-         x="193.99644"
-         style="font-size:11.29079914px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono"
-         xml:space="preserve"><tspan
-           y="624.75665"
-           x="193.99644"
-           id="tspan3779"
-           sodipodi:role="line">ac_timeout_disconnected()</tspan></text>
-      <text
-         transform="scale(0.97424461,1.0264363)"
-         sodipodi:linespacing="125%"
-         id="text3781"
-         y="640.28784"
-         x="193.69612"
-         style="font-size:11.29079914px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono"
-         xml:space="preserve"><tspan
-           y="640.28784"
-           x="193.69612"
-           id="tspan3783"
-           sodipodi:role="line">ac_enqueue_tx_data()</tspan></text>
-      <path
-         inkscape:connector-curvature="0"
-         id="path3789"
-         d="m 169.99998,639.16577 10,0"
-         style="fill:none;stroke:#000000;stroke-width:1.02643621px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#DotM)" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path3791"
-         d="m 169.99998,654.96934 10,0"
-         style="fill:none;stroke:#000000;stroke-width:1.02643621px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#DotM)" />
-    </g>
-    <text
-       xml:space="preserve"
-       style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono"
-       x="179.60512"
-       y="175.08443"
-       id="text5150"
-       sodipodi:linespacing="125%"
-       transform="translate(0,552.36215)"><tspan
-         sodipodi:role="line"
-         id="tspan5152"
-         x="179.60512"
-         y="175.08443"></tspan></text>
-    <g
-       id="g5450"
-       transform="translate(0.49537659,-0.23518372)">
-      <rect
-         y="701.82642"
-         x="155.00002"
-         height="90.535728"
-         width="205"
-         id="rect3755-8"
-         style="opacity:0.7;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.67693007;stroke-opacity:1" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path3763-1"
-         d="m 155.00001,718.05146 204.99999,0"
-         style="fill:none;stroke:#000000;stroke-width:1.30269015px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path3789-1"
-         d="m 155,730.16575 10,0"
-         style="fill:none;stroke:#000000;stroke-width:1.02643621px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#DotM)" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path3791-3"
-         d="m 155,744.36215 10,0"
-         style="fill:none;stroke:#000000;stroke-width:1.02643621px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#DotM)" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path3791-3-4"
-         d="m 155,759.36215 10,0"
-         style="fill:none;stroke:#000000;stroke-width:1.02643621px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#DotM)" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path3791-3-4-9"
-         d="m 155,774.36215 10,0"
-         style="fill:none;stroke:#000000;stroke-width:1.02643621px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#DotM)" />
-      <text
-         sodipodi:linespacing="125%"
-         id="text5154"
-         y="732.36212"
-         x="170"
-         style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono"
-         xml:space="preserve"><tspan
-           y="732.36212"
-           x="170"
-           id="tspan5156"
-           sodipodi:role="line">ac_connected()</tspan></text>
-      <text
-         sodipodi:linespacing="125%"
-         id="text5158"
-         y="747.36212"
-         x="170"
-         style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono"
-         xml:space="preserve"><tspan
-           y="747.36212"
-           x="170"
-           id="tspan5160"
-           sodipodi:role="line">ac_disconnected()</tspan></text>
-      <text
-         sodipodi:linespacing="125%"
-         id="text5162"
-         y="762.36212"
-         x="170"
-         style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono"
-         xml:space="preserve"><tspan
-           y="762.36212"
-           x="170"
-           id="tspan5164"
-           sodipodi:role="line">ac_timeout_wait_connected()</tspan></text>
-      <text
-         sodipodi:linespacing="125%"
-         id="text5166"
-         y="777.36212"
-         x="170"
-         style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono"
-         xml:space="preserve"><tspan
-           y="777.36212"
-           x="170"
-           id="tspan5168"
-           sodipodi:role="line">ac_enqueue_tx_data()</tspan></text>
-      <text
-         transform="translate(0,552.36215)"
-         sodipodi:linespacing="125%"
-         id="text5313"
-         y="160.23518"
-         x="189.50462"
-         style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono"
-         xml:space="preserve"><tspan
-           y="160.23518"
-           x="189.50462"
-           id="tspan5315"
-           sodipodi:role="line">ST_WAIT_CONNECTED</tspan></text>
-    </g>
-    <g
-       id="g5468"
-       transform="translate(0,6)">
-      <rect
-         y="816.82642"
-         x="155.00002"
-         height="120.53575"
-         width="205"
-         id="rect3755-8-8"
-         style="opacity:0.7;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.93491948;stroke-opacity:1" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path3763-1-0"
-         d="m 155.00001,833.05149 204.99999,0"
-         style="fill:none;stroke:#000000;stroke-width:1.30269015px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path3789-1-5"
-         d="m 155,845.16578 10,0"
-         style="fill:none;stroke:#000000;stroke-width:1.02643621px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#DotM)" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path3791-3-7"
-         d="m 155,859.36218 10,0"
-         style="fill:none;stroke:#000000;stroke-width:1.02643621px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#DotM)" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path3791-3-4-0"
-         d="m 155,874.36218 10,0"
-         style="fill:none;stroke:#000000;stroke-width:1.02643621px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#DotM)" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path3791-3-4-9-7"
-         d="m 155,889.36218 10,0"
-         style="fill:none;stroke:#000000;stroke-width:1.02643621px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#DotM)" />
-      <text
-         sodipodi:linespacing="125%"
-         id="text5154-7"
-         y="847.36212"
-         x="170"
-         style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono"
-         xml:space="preserve"><tspan
-           y="847.36212"
-           x="170"
-           id="tspan5156-7"
-           sodipodi:role="line">ac_disconnected()</tspan></text>
-      <text
-         sodipodi:linespacing="125%"
-         id="text5158-3"
-         y="862.36212"
-         x="170"
-         style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono"
-         xml:space="preserve"><tspan
-           y="862.36212"
-           x="170"
-           id="tspan5160-9"
-           sodipodi:role="line">ac_drop()</tspan></text>
-      <text
-         sodipodi:linespacing="125%"
-         id="text5162-9"
-         y="877.36212"
-         x="170"
-         style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono"
-         xml:space="preserve"><tspan
-           y="877.36212"
-           x="170"
-           id="tspan5164-5"
-           sodipodi:role="line">ac_timeout_data()</tspan></text>
-      <text
-         sodipodi:linespacing="125%"
-         id="text5166-2"
-         y="892.36212"
-         x="170"
-         style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono"
-         xml:space="preserve"><tspan
-           y="892.36212"
-           x="170"
-           id="tspan5168-3"
-           sodipodi:role="line">ac_rx_data()</tspan></text>
-      <text
-         transform="translate(0,552.36215)"
-         sodipodi:linespacing="125%"
-         id="text5317"
-         y="275.14005"
-         x="189.50462"
-         style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono"
-         xml:space="preserve"><tspan
-           y="275.14005"
-           x="189.50462"
-           id="tspan5319"
-           sodipodi:role="line">ST_CONNECTED</tspan></text>
-      <path
-         inkscape:connector-curvature="0"
-         id="path3791-3-4-9-7-3"
-         d="m 155,904.36215 10,0"
-         style="fill:none;stroke:#000000;stroke-width:1.02643621px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#DotM)" />
-      <text
-         sodipodi:linespacing="125%"
-         id="text5166-2-7"
-         y="907.36212"
-         x="170"
-         style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono"
-         xml:space="preserve"><tspan
-           y="907.36212"
-           x="170"
-           id="tspan5168-3-4"
-           sodipodi:role="line">ac_tx_data()</tspan></text>
-      <text
-         sodipodi:linespacing="125%"
-         id="text5166-2-7-3"
-         y="922.36212"
-         x="170"
-         style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono"
-         xml:space="preserve"><tspan
-           y="922.36212"
-           x="170"
-           id="tspan5168-3-4-8"
-           sodipodi:role="line">ac_transmit_ready()</tspan></text>
-      <path
-         inkscape:connector-curvature="0"
-         id="path3791-3-4-9-7-3-6"
-         d="m 155,919.36215 10,0"
-         style="fill:none;stroke:#000000;stroke-width:1.02643621px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#DotM)" />
-    </g>
-    <path
-       style="fill:none;stroke:#000000;stroke-width:4.88108253;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 4,579.36215 467.05811,0"
-       id="path5494"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:4.85009003;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 10,981.3622 461.0581,0"
-       id="path5494-7"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.98408383px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#DotL);marker-mid:url(#DotM-7);marker-end:url(#Arrow2Lend)"
-       d="m 135,562.36215 0,92 20,0"
-       id="path5514"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:none;marker-mid:url(#DotM-7);marker-end:url(#Arrow2Lend)"
-       d="m 135,100 0,120 20,0 0,0 0,0"
-       id="path6558"
-       inkscape:connector-curvature="0"
-       transform="translate(0,552.36215)" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.00738013px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
-       d="m 135,772.36215 0,137 20,0"
-       id="path6980"
-       inkscape:connector-curvature="0" />
-    <text
-       xml:space="preserve"
-       style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono"
-       x="141.05811"
-       y="661.77686"
-       id="text7192"
-       sodipodi:linespacing="125%"
-       transform="matrix(1,-0.74586098,0,1,0,0)"><tspan
-         sodipodi:role="line"
-         id="tspan7194"
-         x="141.05811"
-         y="661.77686">EV_TX_DATA</tspan></text>
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.95472515px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#DotL);marker-end:url(#Arrow2Lend)"
-       d="m 115,561.56714 0,300.79501 40,0"
-       id="path7196"
-       inkscape:connector-curvature="0" />
-    <text
-       xml:space="preserve"
-       style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono"
-       x="116.05811"
-       y="650.57245"
-       id="text7618"
-       sodipodi:linespacing="125%"
-       transform="matrix(1,-0.85306675,0,1,0,0)"><tspan
-         sodipodi:role="line"
-         id="tspan7620"
-         x="116.05811"
-         y="650.57245">EV_DROP</tspan></text>
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.83937204px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#DotL);marker-end:url(#Arrow2Lend)"
-       d="m 95,1002.3621 0,-154.99995 60,0"
-       id="path8042"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#DotM-7);marker-end:url(#Arrow2Lend)"
-       d="m 95,295 0,-105 60,0"
-       id="path8044"
-       inkscape:connector-curvature="0"
-       transform="translate(0,552.36215)" />
-    <text
-       xml:space="preserve"
-       style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono"
-       x="101.05811"
-       y="938.95752"
-       id="text9308"
-       sodipodi:linespacing="125%"
-       transform="matrix(1,0.71849349,0,1,0,0)"><tspan
-         sodipodi:role="line"
-         id="tspan9310"
-         x="101.05811"
-         y="938.95752">EV_DISCONNECTED</tspan></text>
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.87886781px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#DotL);marker-end:url(#Arrow2Lend)"
-       d="m 75,1001.5671 0,-274.20495 80,0"
-       id="path9312"
-       inkscape:connector-curvature="0" />
-    <text
-       xml:space="preserve"
-       style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono"
-       x="81.058105"
-       y="951.02814"
-       id="text9734"
-       sodipodi:linespacing="125%"
-       transform="matrix(1,0.74685903,0,1,0,0)"><tspan
-         sodipodi:role="line"
-         id="tspan9736"
-         x="81.058105"
-         y="951.02814">EV_CONNECTED</tspan></text>
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.72182047px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#DotL);marker-end:url(#Arrow2Lend)"
-       d="m 55,1001.5671 0,-104.20495 100,0"
-       id="path9738"
-       inkscape:connector-curvature="0" />
-    <text
-       xml:space="preserve"
-       style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono"
-       x="61.058105"
-       y="973.02863"
-       id="text10160"
-       sodipodi:linespacing="125%"
-       transform="matrix(1,0.63117757,0,1,0,0)"><tspan
-         sodipodi:role="line"
-         id="tspan10162"
-         x="61.058105"
-         y="973.02863">EV_RX_DATA</tspan></text>
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.63333082px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#DotL);marker-end:url(#Arrow2Lend)"
-       d="m 35,1001.5671 0,-74.20495 120,0"
-       id="path10164"
-       inkscape:connector-curvature="0" />
-    <text
-       xml:space="preserve"
-       style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono"
-       x="31.058105"
-       y="996.06989"
-       id="text10586"
-       sodipodi:linespacing="125%"
-       transform="matrix(1,0.65996425,0,1,0,0)"
-       inkscape:transform-center-x="-15.9683"
-       inkscape:transform-center-y="8.396219"><tspan
-         sodipodi:role="line"
-         id="tspan10588"
-         x="31.058105"
-         y="996.06989">EV_TRANSMIT_READY</tspan></text>
-    <path
-       style="fill:none;stroke:#000000;stroke-width:4.5175395;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 6,582.36215 0,400 0,-8.16326"
-       id="path10590"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:4.5175395;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 468,582.36215 0,400 0,-8.16326"
-       id="path10590-0"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.93808311px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#DotL);marker-end:url(#Arrow2Lend)"
-       d="m -20,640.36215 176,0"
-       id="path10614"
-       inkscape:connector-curvature="0" />
-    <text
-       xml:space="preserve"
-       style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono"
-       x="-100"
-       y="642.36212"
-       id="text11081"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         id="tspan11083"
-         x="-100"
-         y="642.36212">EV_TIMEOUT</tspan></text>
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#DotM-7);marker-end:url(#Arrow2Lend-1)"
-       d="m 360,762.36215 c 120,-80 -10,-140 -10,-140"
-       id="path11135"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cc" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#DotM-7)"
-       d="m 360,190 c 40,-60 0,-114 0,-114"
-       id="path11573"
-       inkscape:connector-curvature="0"
-       transform="translate(0,552.36215)"
-       sodipodi:nodetypes="cc" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#DotM-7)"
-       d="M 360,300 C 550,110 358,76 358,76"
-       id="path11793"
-       inkscape:connector-curvature="0"
-       transform="translate(0,552.36215)"
-       sodipodi:nodetypes="cc" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#DotM-7);marker-end:url(#Arrow2Lend-1)"
-       d="m 360,170 c 70,50 0,100 0,100"
-       id="path12015"
-       inkscape:connector-curvature="0"
-       transform="translate(0,552.36215)"
-       sodipodi:nodetypes="cc" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.02691066px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#DotM-7);marker-end:url(#Arrow2Lend-1)"
-       d="m 40,640.36215 0,120 116,0"
-       id="path12453"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.04364157px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#DotM-7);marker-end:url(#Arrow2Lend-1)"
-       d="m 40.173567,760.36215 0,120 109.826433,0"
-       id="path12891"
-       inkscape:connector-curvature="0" />
-  </g>
-</svg>

docs/_static/test.py

-#! /home/gines/env_ginsfsm/bin/python
-
-from ginsfsm.fsmdraw.fsm2image import fsm2image
-#from ginsfsm.c_timer import TIMER_FSM  # , TIMER_GCONFIG
-from ginsfsm.c_connex import CONNEX_FSM  # , TIMER_GCONFIG
-
-
-if __name__ == '__main__':
-    svgfile = 'xxx'
-    fsm2image('./', svgfile, CONNEX_FSM, 'svg',
-              font_name='./DejaVuSans.ttf', font_size=14)
Add a comment to this file

docs/_static/test.svg

Removed
Old image
-<?xml version="1.0" encoding="utf-8" ?>
-<svg baseProfile="full" height="100%" version="1.1" width="100%" xmlns="http://www.w3.org/2000/svg" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:xlink="http://www.w3.org/1999/xlink"><defs /><line stroke="rgb(10%,10%,16%)" x1="0" x2="10" y1="0" y2="0" /><text x="0" y="10">Test</text></svg>
Add a comment to this file

docs/_static/xxx.svg

Old
Old image
New
New image
 <?xml version="1.0" encoding="utf-8" ?>
-<svg baseProfile="tiny" height="864" version="1.2" width="793" xmlns="http://www.w3.org/2000/svg" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:inkspace="http://www.inkscape.org/namespaces/inkscape" xmlns:xlink="http://www.w3.org/1999/xlink"><title /><desc>Graph of a FSM</desc><defs><filter height="1.504" id="filter_blur" inkspace:collect="always" width="1.1575" x="-0.0788" y="-0.252"><feGaussianBlur id="feGaussianBlur3780" in="SourceGraphic" inkspace:collect="always" stdDeviation="4.2" /></filter></defs><g font-family="DejaVu Sans" font-size="14"><rect fill="#f8f8f8" height="564" rx="10" ry="10" stroke="#888a85" stroke-width="2" width="703" x="30" y="150" /><g transform="translate(230,200)"><g transform="translate(0,0)"><rect fill="black" height="80" rx="10" ry="10" stroke="black" stroke-width="1" style="filter:url(#filter_blur);opacity:0.7;fill-opacity:1" width="228" x="0" y="0" /><rect fill="#faf1e8" height="80" rx="10" ry="10" stroke="black" stroke-width="1" width="228" x="0" y="0" /><text x="18" y="21">ST_DISCONNECTED</text><path d="m 0 28 228 0" stroke="black" stroke-width="1" /><text x="18" y="45">ac_enqueue_tx_data</text><line fill="black" stroke="black" stroke-width="1" x1="0" x2="9" y1="40" y2="40" /><circle cx="9" cy="40" fill="black" r="3" stroke="black" stroke-width="1" /><rect fill="black" height="4" stroke="black" stroke-width="1" width="4" x="226" y="40" /><text x="18" y="69">ac_timeout_disconnected</text><line fill="black" stroke="black" stroke-width="1" x1="0" x2="9" y1="64" y2="64" /><circle cx="9" cy="64" fill="black" r="3" stroke="black" stroke-width="1" /><rect fill="black" height="4" stroke="black" stroke-width="1" width="4" x="226" y="64" /></g><g transform="translate(0,120)"><rect fill="black" height="128" rx="10" ry="10" stroke="black" stroke-width="1" style="filter:url(#filter_blur);opacity:0.7;fill-opacity:1" width="228" x="0" y="0" /><rect fill="#faf1e8" height="128" rx="10" ry="10" stroke="black" stroke-width="1" width="228" x="0" y="0" /><text x="18" y="21">ST_WAIT_CONNECTED</text><path d="m 0 28 228 0" stroke="black" stroke-width="1" /><text x="18" y="45">ac_enqueue_tx_data</text><line fill="black" stroke="black" stroke-width="1" x1="0" x2="9" y1="40" y2="40" /><circle cx="9" cy="40" fill="black" r="3" stroke="black" stroke-width="1" /><rect fill="black" height="4" stroke="black" stroke-width="1" width="4" x="226" y="40" /><text x="18" y="69">ac_connected</text><line fill="black" stroke="black" stroke-width="1" x1="0" x2="9" y1="64" y2="64" /><circle cx="9" cy="64" fill="black" r="3" stroke="black" stroke-width="1" /><rect fill="black" height="4" stroke="black" stroke-width="1" width="4" x="226" y="64" /><text x="18" y="93">ac_disconnected</text><line fill="black" stroke="black" stroke-width="1" x1="0" x2="9" y1="88" y2="88" /><circle cx="9" cy="88" fill="black" r="3" stroke="black" stroke-width="1" /><rect fill="black" height="4" stroke="black" stroke-width="1" width="4" x="226" y="88" /><text x="18" y="117">ac_timeout_wait_connected</text><line fill="black" stroke="black" stroke-width="1" x1="0" x2="9" y1="112" y2="112" /><circle cx="9" cy="112" fill="black" r="3" stroke="black" stroke-width="1" /><rect fill="black" height="4" stroke="black" stroke-width="1" width="4" x="226" y="112" /></g><g transform="translate(0,288)"><rect fill="black" height="176" rx="10" ry="10" stroke="black" stroke-width="1" style="filter:url(#filter_blur);opacity:0.7;fill-opacity:1" width="228" x="0" y="0" /><rect fill="#faf1e8" height="176" rx="10" ry="10" stroke="black" stroke-width="1" width="228" x="0" y="0" /><text x="18" y="21">ST_CONNECTED</text><path d="m 0 28 228 0" stroke="black" stroke-width="1" /><text x="18" y="45">ac_drop</text><line fill="black" stroke="black" stroke-width="1" x1="0" x2="9" y1="40" y2="40" /><circle cx="9" cy="40" fill="black" r="3" stroke="black" stroke-width="1" /><rect fill="black" height="4" stroke="black" stroke-width="1" width="4" x="226" y="40" /><text x="18" y="69">ac_tx_data</text><line fill="black" stroke="black" stroke-width="1" x1="0" x2="9" y1="64" y2="64" /><circle cx="9" cy="64" fill="black" r="3" stroke="black" stroke-width="1" /><rect fill="black" height="4" stroke="black" stroke-width="1" width="4" x="226" y="64" /><text x="18" y="93">ac_disconnected</text><line fill="black" stroke="black" stroke-width="1" x1="0" x2="9" y1="88" y2="88" /><circle cx="9" cy="88" fill="black" r="3" stroke="black" stroke-width="1" /><rect fill="black" height="4" stroke="black" stroke-width="1" width="4" x="226" y="88" /><text x="18" y="117">ac_timeout_data</text><line fill="black" stroke="black" stroke-width="1" x1="0" x2="9" y1="112" y2="112" /><circle cx="9" cy="112" fill="black" r="3" stroke="black" stroke-width="1" /><rect fill="black" height="4" stroke="black" stroke-width="1" width="4" x="226" y="112" /><text x="18" y="141">ac_rx_data</text><line fill="black" stroke="black" stroke-width="1" x1="0" x2="9" y1="136" y2="136" /><circle cx="9" cy="136" fill="black" r="3" stroke="black" stroke-width="1" /><rect fill="black" height="4" stroke="black" stroke-width="1" width="4" x="226" y="136" /><text x="18" y="165">ac_transmit_ready</text><line fill="black" stroke="black" stroke-width="1" x1="0" x2="9" y1="160" y2="160" /><circle cx="9" cy="160" fill="black" r="3" stroke="black" stroke-width="1" /><rect fill="black" height="4" stroke="black" stroke-width="1" width="4" x="226" y="160" /></g></g><text font-size="28" x="230" y="30">xxx</text><g fill="none" stroke="#edd400" stroke-width="4"><path d="M 55 130 L 55 508 Q 55 528 75 528 L 228 528" /><path d="m 220 528 4 0 0 -4 4 4 -4 4 0 -4 z" /></g><text transform="rotate(-45,55,130)" x="55" y="126">EV_DROP</text><g fill="none" stroke="#73d216" stroke-width="4"><path d="M 80 130 L 80 220 Q 80 240 100 240 L 228 240" /><path d="m 220 240 4 0 0 -4 4 4 -4 4 0 -4 z" /><path d="M 80 130 L 80 340 Q 80 360 100 360 L 228 360" /><path d="m 220 360 4 0 0 -4 4 4 -4 4 0 -4 z" /><path d="M 80 130 L 80 532 Q 80 552 100 552 L 228 552" /><path d="m 220 552 4 0 0 -4 4 4 -4 4 0 -4 z" /></g><text transform="rotate(-45,80,130)" x="80" y="126">EV_TX_DATA</text><g fill="none" stroke="#ef2929" stroke-width="4"><path d="M 105 734 L 105 668 Q 105 648 125 648 L 228 648" /><path d="m 220 648 4 0 0 -4 4 4 -4 4 0 -4 z" /></g><text transform="rotate(45,105,734)" x="105" y="747">EV_TRANSMIT_READY</text><g fill="none" stroke="#729fcf" stroke-width="4"><path d="M 130 734 L 130 428 Q 130 408 150 408 L 228 408" /><path d="m 220 408 4 0 0 -4 4 4 -4 4 0 -4 z" /><path d="M 130 734 L 130 596 Q 130 576 150 576 L 228 576" /><path d="m 220 576 4 0 0 -4 4 4 -4 4 0 -4 z" /></g><text transform="rotate(45,130,734)" x="130" y="747">EV_DISCONNECTED</text><g fill="none" stroke="#e9b96e" stroke-width="4"><path d="M 155 734 L 155 644 Q 155 624 175 624 L 228 624" /><path d="m 220 624 4 0 0 -4 4 4 -4 4 0 -4 z" /></g><text transform="rotate(45,155,734)" x="155" y="747">EV_RX_DATA</text><g fill="none" stroke="#fcaf3e" stroke-width="4"><path d="M 180 734 L 180 404 Q 180 384 200 384 L 228 384" /><path d="m 220 384 4 0 0 -4 4 4 -4 4 0 -4 z" /></g><text transform="rotate(45,180,734)" x="180" y="747">EV_CONNECTED</text><g fill="none" stroke="#ad7fa8" stroke-width="4"><path d="M 205 734 L 205 284 Q 205 264 225 264 L 228 264" /><path d="m 220 264 4 0 0 -4 4 4 -4 4 0 -4 z" /><path d="M 205 734 L 205 452 Q 205 432 225 432 L 228 432" /><path d="m 220 432 4 0 0 -4 4 4 -4 4 0 -4 z" /><path d="M 205 734 L 205 620 Q 205 600 225 600 L 228 600" /><path d="m 220 600 4 0 0 -4 4 4 -4 4 0 -4 z" /></g><text transform="rotate(45,205,734)" x="205" y="747">EV_TIMEOUT</text><g fill="none" stroke="#ad7fa8" stroke-width="4"><path d="M 460 410 L 438 410 Q 458 410 458 390 L 458 200" /><path d="m 458 208 0 -4 -4 0 4 -4 4 4 -4 0 z" /></g><g fill="none" stroke="#ad7fa8" stroke-width="4"><path d="M 460 434 L 438 434 Q 458 434 458 414 L 458 200" /><path d="m 458 208 0 -4 -4 0 4 -4 4 4 -4 0 z" /></g><g fill="none" stroke="#ad7fa8" stroke-width="4"><path d="M 460 386 L 438 386 Q 458 386 458 366 L 458 488" /><path d="m 458 496 0 -4 -4 0 4 -4 4 4 -4 0 z" /></g><g fill="none" stroke="#ad7fa8" stroke-width="4"><path d="M 460 578 L 438 578 Q 458 578 458 558 L 458 200" /><path d="m 458 208 0 -4 -4 0 4 -4 4 4 -4 0 z" /></g><g fill="none" stroke="#ef2929" stroke-width="4"><path d="M 460 650 L 563 650 Q 583 650 583 630 L 583 130" /><path d="m 583 138 0 -4 -4 0 4 -4 4 4 -4 0 z" /></g><text transform="rotate(-45,583,130)" x="585" y="126">EV_TRANSMIT_READY</text><g fill="none" stroke="#729fcf" stroke-width="4"><path d="M 460 410 L 588 410 Q 608 410 608 390 L 608 130" /><path d="m 608 138 0 -4 -4 0 4 -4 4 4 -4 0 z" /><path d="M 460 578 L 588 578 Q 608 578 608 558 L 608 130" /><path d="m 608 138 0 -4 -4 0 4 -4 4 4 -4 0 z" /></g><text transform="rotate(-45,608,130)" x="610" y="126">EV_DISCONNECTED</text><g fill="none" stroke="#e9b96e" stroke-width="4"><path d="M 460 626 L 613 626 Q 633 626 633 606 L 633 130" /><path d="m 633 138 0 -4 -4 0 4 -4 4 4 -4 0 z" /></g><text transform="rotate(-45,633,130)" x="635" y="126">EV_RX_DATA</text><g fill="none" stroke="#fcaf3e" stroke-width="4"><path d="M 460 386 L 638 386 Q 658 386 658 366 L 658 130" /><path d="m 658 138 0 -4 -4 0 4 -4 4 4 -4 0 z" /></g><text transform="rotate(-45,658,130)" x="660" y="126">EV_CONNECTED</text><g fill="none" stroke="#edd400" stroke-width="4"><path d="M 460 530 L 663 530 Q 683 530 683 550 L 683 734" /><path d="m 683 726 0 4 4 0 -4 4 -4 -4 4 0 z" /></g><text transform="rotate(45,683,734)" x="687" y="742">EV_DROP</text><g fill="none" stroke="#73d216" stroke-width="4"><path d="M 460 554 L 688 554 Q 708 554 708 574 L 708 734" /><path d="m 708 726 0 4 4 0 -4 4 -4 -4 4 0 z" /></g><text transform="rotate(45,708,734)" x="712" y="742">EV_TX_DATA</text></g></svg>
+<svg baseProfile="tiny" height="864" version="1.2" width="743" xmlns="http://www.w3.org/2000/svg" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:inkspace="http://www.inkscape.org/namespaces/inkscape" xmlns:xlink="http://www.w3.org/1999/xlink"><title /><desc>Graph of a FSM</desc><defs><filter height="1.504" id="filter_blur" inkspace:collect="always" width="1.1575" x="-0.0788" y="-0.252"><feGaussianBlur id="feGaussianBlur3780" in="SourceGraphic" inkspace:collect="always" stdDeviation="4.2" /></filter></defs><g font-family="DejaVu Sans" font-size="14"><rect fill="#f8f8f8" height="564" rx="10" ry="10" stroke="#888a85" stroke-width="2" width="653" x="30" y="150" /><g transform="translate(230,200)"><g transform="translate(0,0)"><rect fill="black" height="80" rx="10" ry="10" stroke="black" stroke-width="1" style="filter:url(#filter_blur);opacity:0.7;fill-opacity:1" width="228" x="0" y="0" /><rect fill="#faf1e8" height="80" rx="10" ry="10" stroke="black" stroke-width="1" width="228" x="0" y="0" /><text x="18" y="21">ST_DISCONNECTED</text><path d="m 0 28 228 0" stroke="black" stroke-width="1" /><text x="18" y="45">ac_enqueue_tx_data</text><line fill="black" stroke="black" stroke-width="1" x1="0" x2="9" y1="40" y2="40" /><circle cx="9" cy="40" fill="black" r="3" stroke="black" stroke-width="1" /><rect fill="black" height="4" stroke="black" stroke-width="1" width="4" x="226" y="40" /><text x="18" y="69">ac_timeout_disconnected</text><line fill="black" stroke="black" stroke-width="1" x1="0" x2="9" y1="64" y2="64" /><circle cx="9" cy="64" fill="black" r="3" stroke="black" stroke-width="1" /><rect fill="black" height="4" stroke="black" stroke-width="1" width="4" x="226" y="64" /></g><g transform="translate(0,120)"><rect fill="black" height="128" rx="10" ry="10" stroke="black" stroke-width="1" style="filter:url(#filter_blur);opacity:0.7;fill-opacity:1" width="228" x="0" y="0" /><rect fill="#faf1e8" height="128" rx="10" ry="10" stroke="black" stroke-width="1" width="228" x="0" y="0" /><text x="18" y="21">ST_WAIT_CONNECTED</text><path d="m 0 28 228 0" stroke="black" stroke-width="1" /><text x="18" y="45">ac_enqueue_tx_data</text><line fill="black" stroke="black" stroke-width="1" x1="0" x2="9" y1="40" y2="40" /><circle cx="9" cy="40" fill="black" r="3" stroke="black" stroke-width="1" /><rect fill="black" height="4" stroke="black" stroke-width="1" width="4" x="226" y="40" /><text x="18" y="69">ac_connected</text><line fill="black" stroke="black" stroke-width="1" x1="0" x2="9" y1="64" y2="64" /><circle cx="9" cy="64" fill="black" r="3" stroke="black" stroke-width="1" /><rect fill="black" height="4" stroke="black" stroke-width="1" width="4" x="226" y="64" /><text x="18" y="93">ac_disconnected</text><line fill="black" stroke="black" stroke-width="1" x1="0" x2="9" y1="88" y2="88" /><circle cx="9" cy="88" fill="black" r="3" stroke="black" stroke-width="1" /><rect fill="black" height="4" stroke="black" stroke-width="1" width="4" x="226" y="88" /><text x="18" y="117">ac_timeout_wait_connected</text><line fill="black" stroke="black" stroke-width="1" x1="0" x2="9" y1="112" y2="112" /><circle cx="9" cy="112" fill="black" r="3" stroke="black" stroke-width="1" /><rect fill="black" height="4" stroke="black" stroke-width="1" width="4" x="226" y="112" /></g><g transform="translate(0,288)"><rect fill="black" height="176" rx="10" ry="10" stroke="black" stroke-width="1" style="filter:url(#filter_blur);opacity:0.7;fill-opacity:1" width="228" x="0" y="0" /><rect fill="#faf1e8" height="176" rx="10" ry="10" stroke="black" stroke-width="1" width="228" x="0" y="0" /><text x="18" y="21">ST_CONNECTED</text><path d="m 0 28 228 0" stroke="black" stroke-width="1" /><text x="18" y="45">ac_drop</text><line fill="black" stroke="black" stroke-width="1" x1="0" x2="9" y1="40" y2="40" /><circle cx="9" cy="40" fill="black" r="3" stroke="black" stroke-width="1" /><rect fill="black" height="4" stroke="black" stroke-width="1" width="4" x="226" y="40" /><text x="18" y="69">ac_tx_data</text><line fill="black" stroke="black" stroke-width="1" x1="0" x2="9" y1="64" y2="64" /><circle cx="9" cy="64" fill="black" r="3" stroke="black" stroke-width="1" /><rect fill="black" height="4" stroke="black" stroke-width="1" width="4" x="226" y="64" /><text x="18" y="93">ac_disconnected</text><line fill="black" stroke="black" stroke-width="1" x1="0" x2="9" y1="88" y2="88" /><circle cx="9" cy="88" fill="black" r="3" stroke="black" stroke-width="1" /><rect fill="black" height="4" stroke="black" stroke-width="1" width="4" x="226" y="88" /><text x="18" y="117">ac_timeout_data</text><line fill="black" stroke="black" stroke-width="1" x1="0" x2="9" y1="112" y2="112" /><circle cx="9" cy="112" fill="black" r="3" stroke="black" stroke-width="1" /><rect fill="black" height="4" stroke="black" stroke-width="1" width="4" x="226" y="112" /><text x="18" y="141">ac_rx_data</text><line fill="black" stroke="black" stroke-width="1" x1="0" x2="9" y1="136" y2="136" /><circle cx="9" cy="136" fill="black" r="3" stroke="black" stroke-width="1" /><rect fill="black" height="4" stroke="black" stroke-width="1" width="4" x="226" y="136" /><text x="18" y="165">ac_transmit_ready</text><line fill="black" stroke="black" stroke-width="1" x1="0" x2="9" y1="160" y2="160" /><circle cx="9" cy="160" fill="black" r="3" stroke="black" stroke-width="1" /><rect fill="black" height="4" stroke="black" stroke-width="1" width="4" x="226" y="160" /></g></g><text font-size="28" x="230" y="30">xxx</text><g fill="none" stroke="#edd400" stroke-width="4"><path d="M 55 130 L 55 508 Q 55 528 75 528 L 228 528" /><path d="m 220 528 4 0 0 -4 4 4 -4 4 0 -4 z" /></g><text transform="rotate(-45,55,130)" x="55" y="126">EV_DROP</text><g fill="none" stroke="#73d216" stroke-width="4"><path d="M 80 130 L 80 220 Q 80 240 100 240 L 228 240" /><path d="m 220 240 4 0 0 -4 4 4 -4 4 0 -4 z" /><path d="M 80 130 L 80 340 Q 80 360 100 360 L 228 360" /><path d="m 220 360 4 0 0 -4 4 4 -4 4 0 -4 z" /><path d="M 80 130 L 80 532 Q 80 552 100 552 L 228 552" /><path d="m 220 552 4 0 0 -4 4 4 -4 4 0 -4 z" /></g><text transform="rotate(-45,80,130)" x="80" y="126">EV_TX_DATA</text><g fill="none" stroke="#ef2929" stroke-width="4"><path d="M 105 734 L 105 668 Q 105 648 125 648 L 228 648" /><path d="m 220 648 4 0 0 -4 4 4 -4 4 0 -4 z" /></g><text transform="rotate(45,105,734)" x="105" y="747">EV_TRANSMIT_READY</text><g fill="none" stroke="#729fcf" stroke-width="4"><path d="M 130 734 L 130 428 Q 130 408 150 408 L 228 408" /><path d="m 220 408 4 0 0 -4 4 4 -4 4 0 -4 z" /><path d="M 130 734 L 130 596 Q 130 576 150 576 L 228 576" /><path d="m 220 576 4 0 0 -4 4 4 -4 4 0 -4 z" /></g><text transform="rotate(45,130,734)" x="130" y="747">EV_DISCONNECTED</text><g fill="none" stroke="#e9b96e" stroke-width="4"><path d="M 155 734 L 155 644 Q 155 624 175 624 L 228 624" /><path d="m 220 624 4 0 0 -4 4 4 -4 4 0 -4 z" /></g><text transform="rotate(45,155,734)" x="155" y="747">EV_RX_DATA</text><g fill="none" stroke="#fcaf3e" stroke-width="4"><path d="M 180 734 L 180 404 Q 180 384 200 384 L 228 384" /><path d="m 220 384 4 0 0 -4 4 4 -4 4 0 -4 z" /></g><text transform="rotate(45,180,734)" x="180" y="747">EV_CONNECTED</text><g fill="none" stroke="#ad7fa8" stroke-width="4"><path d="M 205 734 L 205 284 Q 205 264 225 264 L 228 264" /><path d="m 220 264 4 0 0 -4 4 4 -4 4 0 -4 z" /><path d="M 205 734 L 205 452 Q 205 432 225 432 L 228 432" /><path d="m 220 432 4 0 0 -4 4 4 -4 4 0 -4 z" /><path d="M 205 734 L 205 620 Q 205 600 225 600 L 228 600" /><path d="m 220 600 4 0 0 -4 4 4 -4 4 0 -4 z" /></g><text transform="rotate(45,205,734)" x="205" y="747">EV_TIMEOUT</text><g fill="none" stroke="#ef2929" stroke-width="4"><path d="M 460 650 L 513 650 Q 533 650 533 630 L 533 130" /><path d="m 533 138 0 -4 -4 0 4 -4 4 4 -4 0 z" /></g><text transform="rotate(-45,533,130)" x="535" y="126">EV_TRANSMIT_READY</text><g fill="none" stroke="#729fcf" stroke-width="4"><path d="M 460 410 L 538 410 Q 558 410 558 390 L 558 130" /><path d="m 558 138 0 -4 -4 0 4 -4 4 4 -4 0 z" /><path d="M 460 578 L 538 578 Q 558 578 558 558 L 558 130" /><path d="m 558 138 0 -4 -4 0 4 -4 4 4 -4 0 z" /></g><text transform="rotate(-45,558,130)" x="560" y="126">EV_DISCONNECTED</text><g fill="none" stroke="#e9b96e" stroke-width="4"><path d="M 460 626 L 563 626 Q 583 626 583 606 L 583 130" /><path d="m 583 138 0 -4 -4 0 4 -4 4 4 -4 0 z" /></g><text transform="rotate(-45,583,130)" x="585" y="126">EV_RX_DATA</text><g fill="none" stroke="#fcaf3e" stroke-width="4"><path d="M 460 386 L 588 386 Q 608 386 608 366 L 608 130" /><path d="m 608 138 0 -4 -4 0 4 -4 4 4 -4 0 z" /></g><text transform="rotate(-45,608,130)" x="610" y="126">EV_CONNECTED</text><g fill="none" stroke="#edd400" stroke-width="4"><path d="M 460 530 L 613 530 Q 633 530 633 550 L 633 734" /><path d="m 633 726 0 4 4 0 -4 4 -4 -4 4 0 z" /></g><text transform="rotate(45,633,734)" x="637" y="742">EV_DROP</text><g fill="none" stroke="#73d216" stroke-width="4"><path d="M 460 554 L 638 554 Q 658 554 658 574 L 658 734" /><path d="m 658 726 0 4 4 0 -4 4 -4 -4 4 0 z" /></g><text transform="rotate(45,658,734)" x="662" y="742">EV_TX_DATA</text><g fill="none" stroke="black" stroke-width="1"><path d="M 460 410 L 468 410 Q 478 410 478 400 L 478 223 Q 478 213 468 213 L 458 213" /><path d="m 474 213 -8 0 0 8 -8 -8 8 -8 0 8 z" fill="black" /></g><g fill="none" stroke="black" stroke-width="1"><path d="M 460 434 L 478 434 Q 488 434 488 424 L 488 223 Q 488 213 478 213 L 458 213" /><path d="m 474 213 -8 0 0 8 -8 -8 8 -8 0 8 z" fill="black" /></g><g fill="none" stroke="black" stroke-width="1"><path d="M 460 386 L 488 386 Q 498 386 498 396 L 498 491 Q 498 501 488 501 L 458 501" /><path d="m 474 501 -8 0 0 8 -8 -8 8 -8 0 8 z" fill="black" /></g><g fill="none" stroke="black" stroke-width="1"><path d="M 460 578 L 498 578 Q 508 578 508 568 L 508 223 Q 508 213 498 213 L 458 213" /><path d="m 474 213 -8 0 0 8 -8 -8 8 -8 0 8 z" fill="black" /></g></g></svg>
Add a comment to this file

docs/_static/xxx.svg.png

Old
Old image
New
New image
 # coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
 extensions = ['sphinx.ext.autodoc', 'sphinx.ext.viewcode', 'ginsfsm.sphinxext']
 
-
 # Add any paths that contain templates here, relative to this directory.
 templates_path = ['_templates']
 
 
 # General information about the project.
 project = u'GinsFSM'
-copyright = u'2012, Ginés Martínez Sánchez alias "ginsmar"'
+copyright = u'2012, Ginés Martínez Sánchez "ginsmar"'
 
 # The version info for the project you're documenting, acts as replacement for
 # |version| and |release|, also used in various other places throughout the

ginsfsm/__init__.py

 """
 A python library to do development based in Finite State Machines.
 """
-__version__ = '0.3.0'
+__version__ = '0.3.1'

ginsfsm/fsmdraw/layout.py

                 points.append(point)
             else:
                 # this is only a output event.
-                # it's orphan, I don't know who action broadcast it.
+                # it's orphan, I don't know who action is broadcasting them.
+                # TODO: analize the function source code and search
+                # the output-events: broadcast, post_event, send_event
                 pass
+
         return points
 
     def get_next_state_points(self):

ginsfsm/ghtml.py

-# -*- encoding: utf-8 -*-
-""" A gobj that generates html.
-"""
-from mako.template import Template
-from mako.runtime import Context
-
-from ginsfsm.gobj import (
-    GObj,
-)
-
-from ginsfsm.compat import (
-    NativeIO,
-    tostr,
-    iteritems_,
-)
-
-void_elements = [
-    'area',
-    'base',
-    'br',
-    'col',
-    'command',
-    'embed',
-    'hr',
-    'img',
-    'input',
-    'keygen',
-    'link',
-    'meta',
-    'param',
-    'source',
-    'track',
-    'wbr',
-]
-
-# Supported attributes.
-GHTML_GCONFIG = {
-    'debug': [bool, False, 0, None, 'Debugging mode'],
-    'template': [str, '', 0, None, "Template name."],
-
-    'tag': [str, '', 0, None, "The element type."],
-    'attrib': [dict, {}, 0, None,
-        "A dictionary containing the element's attributes."
-    ],
-    'text': [str, '', 0, None, "Data associated with the element."],
-}
-
-
-class GHtml(GObj):
-    """ GObj that generates html in XML syntax.
-
-    :param fsm: FSM :term:`simple-machine`.
-    :param gconfig: GCONFIG :term:`gconfig-template`.
-
-    """
-    def __init__(self, fsm={}, gconfig=None):
-        if gconfig is not None:
-            if isinstance(gconfig, (list, tuple)):
-                gconfig = list(gconfig)
-                gconfig.append(GHTML_GCONFIG)
-            else:
-                gconfig = [gconfig, GHTML_GCONFIG]
-        else:
-            gconfig = [GHTML_GCONFIG]
-
-        super(GHtml, self).__init__(fsm, gconfig)
-
-    def __repr__(self):
-        return self.render()
-
-    def write_attribs(self, buf):
-        for key, value in iteritems_(self.attrib):
-            buf.write(' %s="%s"' % (key, value))
-
-    def render_template(self, buf, **kw):
-        template = Template(self.template)
-        ctx = Context(buf, **kw)
-        template.render_context(ctx)
-
-    def render(self, buf=None, **kw):
-        buf_is_mine = False
-        if buf is None:
-            buf = NativeIO()
-            buf_is_mine = True
-
-        if self.tag:
-            buf.write('<%s' % self.tag)
-            self.write_attribs(buf)
-            buf.write('>')
-
-            if not self.tag in void_elements:
-                # by the moment, the order is: self.text, template, childs
-                if self.text:
-                    buf.write(self.text)
-                if self.template:
-                    self.render_template(buf, **kw)
-                for child in self:
-                    child.render(buf)
-            buf.write('</%s>' % self.tag)
-
-        elif self.template:
-            childs_buf = NativeIO()
-            s = childs_buf.getvalue()
-            for child in self:
-                child.render(childs_buf)
-            childs_buf.close()
-            rendered_childs = tostr(s)
-            kw.update(rendered_childs=rendered_childs)
-            self.render_template(buf, **kw)
-
-        s = buf.getvalue()
-        if buf_is_mine:
-            buf.close()
-        return tostr(s)
 """
 import threading
 import logging
+import ginsfsm.globals  # made it import available
+
 from ginsfsm.compat import string_types
 
 from ginsfsm.smachine import (

ginsfsm/scaffolds/__init__.py

         print(msg)
 
 
-class SimpleGClassTemplate(GinsFSMTemplate):
-    _template_dir = 'simple_gclass'
-    summary = 'Create a simple gclass proyect.'
+class SimpleGObjTemplate(GinsFSMTemplate):
+    _template_dir = 'simple_gobj'
+    summary = 'Create a simple GObj proyect.'

ginsfsm/scaffolds/simple_gclass/+package+/__init__.py_tmpl

-# -*- encoding: utf-8 -*-
-""" {{project}} GClass
-
-.. autoclass:: {{project}}
-    :members: start_up
-
-"""
-
-from ginsfsm.gobj import GObj
-
-
-def ac_sample(self, event):
-    pass
-
-
-{{project}}_FSM = {
-    'event_list': (
-        'EV_INPUT_EVENT:top input',
-        'EV_OUTPUT_EVENT:top output',
-    ),
-    'state_list': (
-        'ST_IDLE',
-    ),
-    'machine': {
-        'ST_IDLE':
-        (
-            ('EV_INPUT_EVENT',      ac_sample,      None),
-        ),
-    }
-}
-
-{{project}}_GCONFIG = {
-    'subscriber': [None, None, 0, None,
-        "subcriber of all output-events."
-        "Default is ``None``, i.e., the parent"
-        ],
-
-    # If some name is None then parent don't want receive it.
-    'output_event_name': [str, 'EV_OUTPUT_EVENT', 0, None,
-        "Name of the *sample output* event."
-        " ``None`` if you want ignore the event"
-        ],
-}
-
-
-class {{project}}(GObj):
-    """  {{project}} GClass.
-    A Simple gclass.
-
-    .. ginsfsm::
-       :fsm: {{project}}_FSM
-       :gconfig: {{project}}_GCONFIG
-
-    *Input-Events:*
-        * :attr:`'EV_INPUT_EVENT'`: sample input event.
-
-          Event attributes:
-
-              * ``data``: sample event attribute.
-
-    *Output-Events:*
-        * :attr:`'EV_OUTPUT_EVENT'`: sample output event.
-
-          Event attributes:
-
-              * ``data``: sample event attribute.
-
-    """
-    def __init__(self):
-        GObj.__init__(self, {{project}}_FSM, {{project}}_GCONFIG)
-
-    def start_up(self):
-        """ Initialization zone.
-        """
-        self.subscribe_event(None, self.subscriber)

ginsfsm/scaffolds/simple_gclass/CHANGES.txt_tmpl

-0.0.0
------
-
--  Initial version

ginsfsm/scaffolds/simple_gclass/MANIFEST.in_tmpl

-prune .hg
-exclude push.sh
-include *.txt *.ini *.cfg *.rst
-recursive-include {{package}} *.ico *.png *.css *.gif *.jpg *.pt *.txt *.mak *.mako *.js *.html *.xml

ginsfsm/scaffolds/simple_gclass/README.rst_tmpl

-{{project}}
-{{len(project)*'='}}
-
-License
--------
-
-Copyright (c) 2012
-
-{{project}} is released under terms of The MIT
-License MIT <http://www.opensource.org/licenses/mit-license>.
-
-Authors
--------
-
-Your name
Add a comment to this file

ginsfsm/scaffolds/simple_gclass/docs/DejaVuSans.ttf

Binary file removed.

ginsfsm/scaffolds/simple_gclass/docs/README.txt

-Create a sphinx project
-=======================
-
-To build the documentation you must create a sphinx project in this directory
-with the 'sphinx-quickstart' command, with 'autodoc' extension enabled.
-I like the 'viewcode' extension too.
-
-
-Include the sphinx extensions
-=============================
-
-In order to build the ginsfsm documentation with svg graphics of smachine
-you must too add the extension 'ginsfsm.sphinxext' to the created conf.py file.
-
-The final result can be:
-
-extensions = ['sphinx.ext.autodoc', 'sphinx.ext.viewcode', 'ginsfsm.sphinxext']
-
-
-Include the generated rst file
-==============================
-
-You must include the generated api_xxx.rst in the Contents of index.rst:
-
-.. toctree::
-   :maxdepth: 2
-
-   api_xxx
-
-being xxx the name of the created project.
-
-
-Don't compile sphinx?
-=====================
-
-If make html fails with the message:
-
-   "Could not import extension ginsfsm.sphinxext"
-
-check if the next modules are installed:
-
-   * docutils
-   * svgwrite
-   * PIL (in virtualenv install with pip)

ginsfsm/scaffolds/simple_gclass/docs/api_+package+.rst_tmpl

-{{package}}
-{{len(package)*'='}}
-
-This is the main index page of your documentation. It should be written in
-`reStructuredText format <http://docutils.sourceforge.net/rst.html>`_.
-
-
-{{(len(package) + 7) * '-'}}
-:mod:`{{package}}`
-{{(len(package) + 7) * '-'}}
-
-.. automodule:: {{package}}

ginsfsm/scaffolds/simple_gclass/setup.cfg_tmpl

-[nosetests]
-match = ^test
-nocapture = 1
-cover-package = {{package}}
-with-coverage = 1
-cover-erase = 1
-
-[egg_info]
-tag_build =
-tag_svn_revision = false
-tag_date = 0
-
-[easy_install]
-zip_ok = false

ginsfsm/scaffolds/simple_gclass/setup.py_tmpl

-# -*- encoding: utf-8 -*-
-
-import os
-import sys
-
-from setuptools import setup, find_packages
-
-if sys.version_info[:2] < (2, 6):
-    raise RuntimeError('Requires Python 2.6 or better')
-
-here = os.path.abspath(os.path.dirname(__file__))
-try:
-    README = open(os.path.join(here, 'README.rst')).read()
-    CHANGES = open(os.path.join(here, 'CHANGES.txt')).read()
-except IOError:
-    README = CHANGES = ''
-
-version = '0.0.0'
-
-requires = ['ginsfsm']
-
-setup(name='{{project}}',
-    version=version,
-    description='{{project}}',
-    long_description=README + '\n\n' + CHANGES,
-    classifiers=[
-        "Programming Language :: Python",
-    ],
-    author='',
-    author_email='',
-    url='',
-    license='MIT License',
-    keywords='gclass gobj ginsfsm finite state machine fsm',
-    packages=find_packages(),
-    include_package_data=True,
-    zip_safe=False,
-    install_requires=requires,
-    tests_require=requires,
-    test_suite="{{package}}",
-    entry_points="""\
-    """,
-)

ginsfsm/scaffolds/simple_gobj/+package+/__init__.py_tmpl

+# -*- encoding: utf-8 -*-
+""" GSample GObj
+
+.. autoclass:: GSample
+    :members: start_up
+
+"""
+
+from ginsfsm.gobj import GObj
+
+
+def ac_sample(self, event):
+    self.broadcast_event('EV_OUTPUT_EVENT', data=event.data)  # echo data
+
+
+GSAMPLE_FSM = {
+    'event_list': (
+        'EV_INPUT_EVENT:top input',
+        'EV_OUTPUT_EVENT:top output',
+    ),
+    'state_list': (
+        'ST_IDLE',
+    ),
+    'machine': {
+        'ST_IDLE':
+        (
+            ('EV_INPUT_EVENT',      ac_sample,      None),
+        ),
+    }
+}
+
+GSAMPLE_GCONFIG = {
+    'subscriber': [None, None, 0, None,
+        "subcriber of all output-events."
+        "Default is ``None``, i.e., the parent"
+        ],
+
+    # If some name is None then parent don't want receive it.
+    'output_event_name': [str, 'EV_OUTPUT_EVENT', 0, None,
+        "Name of the *sample output* event."
+        " ``None`` if you want ignore the event"
+        ],
+}
+
+
+class GSample(GObj):
+    """  GSample GObj.
+    A Simple gobj.
+
+    .. ginsfsm::
+       :fsm: GSAMPLE_FSM
+       :gconfig: GSAMPLE_GCONFIG
+
+    *Input-Events:*
+        * :attr:`'EV_INPUT_EVENT'`: sample input event.
+
+          Event attributes:
+
+              * ``data``: sample event attribute.
+
+    *Output-Events:*
+        * :attr:`'EV_OUTPUT_EVENT'`: sample output event.
+
+          Event attributes:
+
+              * ``data``: sample event attribute.
+
+    """
+    def __init__(self):
+        GObj.__init__(self, GSAMPLE_FSM, GSAMPLE_GCONFIG)
+
+    def start_up(self):
+        """ Initialization zone.
+        """
+        self.subscribe_event(None, self.subscriber)

ginsfsm/scaffolds/simple_gobj/+package+/tests/__init__.py

+#

ginsfsm/scaffolds/simple_gobj/+package+/tests/test_+package+.py_tmpl

+import unittest
+
+from ginsfsm.gobj import GObj
+
+from {{package}} import GSample
+
+import logging
+logging.basicConfig(level=logging.DEBUG)
+
+
+########################################################
+#       Root GObj
+########################################################
+
+def ac_response(self, event):
+    assert(event.data == 'XXX')
+
+
+ROOT_FSM = {
+    'event_list': (
+        'EV_INPUT_EVENT:bottom output',
+        'EV_OUTPUT_EVENT:bottom input',
+    ),
+    'state_list': (
+        'ST_IDLE',
+    ),
+    'machine': {
+        'ST_IDLE':
+        (
+            ('EV_OUTPUT_EVENT', ac_response, None),
+        ),
+    }
+}
+
+
+class RootGObj(GObj):
+    def __init__(self):
+        GObj.__init__(self, ROOT_FSM)
+        self.start_up()
+
+    def start_up(self):
+        ''' Create gobj childs, initialize something...
+        '''
+        self.child = self.create_gobj(None, GSample, self)
+
+
+########################################################
+#       Tests
+########################################################
+
+class Test_GSample(unittest.TestCase):
+    def setUp(self):
+        self.gobj_parent = RootGObj()
+        settings = {
+            'GObj.trace_mach': True,
+            'GObj.logger': logging,
+        }
+        self.gobj_parent.overwrite_parameters(-1, **settings)
+
+    def test_broadcast(self):
+        self.gobj_parent.send_event(
+            self.gobj_parent.child,
+            'EV_INPUT_EVENT',
+            data='XXX',
+        )

ginsfsm/scaffolds/simple_gobj/CHANGES.txt_tmpl

+0.0.0
+-----
+
+-  Initial version

ginsfsm/scaffolds/simple_gobj/MANIFEST.in_tmpl

+prune .hg
+exclude push.sh
+include *.txt *.ini *.cfg *.rst
+recursive-include {{package}} *.ico *.png *.css *.gif *.jpg *.pt *.txt *.mak *.mako *.js *.html *.xml

ginsfsm/scaffolds/simple_gobj/README.rst_tmpl

+{{project}}
+{{len(project)*'='}}
+
+License
+-------
+
+Copyright (c) 2012
+
+{{project}} is released under terms of The MIT
+License MIT <http://www.opensource.org/licenses/mit-license>.
+
+Authors
+-------
+
+Your name
Add a comment to this file

ginsfsm/scaffolds/simple_gobj/docs/DejaVuSans.ttf

Binary file added.

ginsfsm/scaffolds/simple_gobj/docs/README.txt

+Create a sphinx project
+=======================
+
+To build the documentation you must create a sphinx project in this directory
+with the 'sphinx-quickstart' command, with 'autodoc' extension enabled.
+I like the 'viewcode' extension too.
+
+
+Include the sphinx extensions
+=============================
+
+In order to build the ginsfsm documentation with svg graphics of smachine
+you must too add the extension 'ginsfsm.sphinxext' to the created conf.py file.
+
+The final result can be:
+
+extensions = ['sphinx.ext.autodoc', 'sphinx.ext.viewcode', 'ginsfsm.sphinxext']
+
+
+Include the generated rst file
+==============================
+
+You must include the generated api_xxx.rst in the Contents of index.rst:
+
+.. toctree::
+   :maxdepth: 2
+
+   api_xxx
+
+being xxx the name of the created project.
+
+
+Don't compile sphinx?
+=====================
+
+If make html fails with the message:
+
+   "Could not import extension ginsfsm.sphinxext"
+
+check if the next modules are installed:
+
+   * docutils
+   * svgwrite
+   * PIL (in virtualenv install with pip)

ginsfsm/scaffolds/simple_gobj/docs/api_+package+.rst_tmpl

+{{package}}
+{{len(package)*'='}}
+
+This is the main index page of your documentation. It should be written in
+`reStructuredText format <http://docutils.sourceforge.net/rst.html>`_.
+
+
+:mod:`{{package}}`
+{{(len(package) + 7) * '-'}}
+
+.. automodule:: {{package}}

ginsfsm/scaffolds/simple_gobj/setup.cfg_tmpl

+[nosetests]
+match = ^test
+nocapture = 1
+cover-package = {{package}}
+with-coverage = 1
+cover-erase = 1
+
+[egg_info]
+tag_build =
+tag_svn_revision = false
+tag_date = 0
+
+[easy_install]
+zip_ok = false

ginsfsm/scaffolds/simple_gobj/setup.py_tmpl

+# -*- encoding: utf-8 -*-
+
+import os
+import sys
+
+from setuptools import setup, find_packages
+
+if sys.version_info[:2] < (2, 6):
+    raise RuntimeError('Requires Python 2.6 or better')
+
+here = os.path.abspath(os.path.dirname(__file__))
+try:
+    README = open(os.path.join(here, 'README.rst')).read()
+    CHANGES = open(os.path.join(here, 'CHANGES.txt')).read()
+except IOError:
+    README = CHANGES = ''
+
+version = '0.0.0'
+
+requires = ['ginsfsm']
+
+setup(name='{{project}}',
+    version=version,
+    description='{{project}}',
+    long_description=README + '\n\n' + CHANGES,
+    classifiers=[
+        "Programming Language :: Python",
+    ],
+    author='',
+    author_email='',
+    url='',
+    license='MIT License',
+    keywords='gobj ginsfsm finite state machine fsm',
+    packages=find_packages(),
+    include_package_data=True,
+    zip_safe=False,
+    install_requires=requires,
+    tests_require=requires,
+    test_suite="{{package}}.tests",
+    entry_points="""\
+    """,
+)

ginsfsm/scaffolds/template.py

 
     def check_vars(self, vars, other):
         raise RuntimeError(
-            'Under Pyramid 1.3, you should use the "pcreate" command rather '
+            'Under ginsFSM, you should use the "gcreate" command rather '
             'than "paster create"')
 
 

ginsfsm/tests/test_ghtml.py

-import unittest
-
-from ginsfsm.gobj import (
-    GObj,
-    )
-from ginsfsm.ghtml import GHtml
-
-import logging
-logging.basicConfig(level=logging.DEBUG)
-
-
-class Root(GObj):
-    def __init__(self):
-        super(Root, self).__init__({})
-        self.start_up()
-
-    def start_up(self):
-        """ Setup area
-        """
-
-
-class Page1(GHtml):
-    def __init__(self):
-        super(Page1, self).__init__()
-
-    def start_up(self):
-        """ Setup area
-        """
-        settings = {
-            'tag': 'div',
-        }
-        self.overwrite_parameters(1, **settings)
-
-
-class Page2(GHtml):
-    def __init__(self):
-        super(Page2, self).__init__()
-
-    def start_up(self):
-        """ Setup area
-        """
-
-
-########################################################
-#       Tests
-########################################################
-class TestGHtml(unittest.TestCase):
-    def setUp(self):
-        self.gobj_root = Root()
-        settings = {
-            'GObj.trace_mach': True,
-            'GObj.logger': logging,
-        }
-        self.gobj_root.overwrite_parameters(-1, **settings)
-
-    def test_page1(self):
-        page = self.gobj_root.create_gobj(None, Page1, self.gobj_root)
-        response = page.render()
-        self.assertEqual(response, "<div></div>")
-
-    def test_page2(self):
-        page = self.gobj_root.create_gobj(
-            None,
-            Page2,
-            self.gobj_root,
-            tag='div')
-        response = page.render()
-        self.assertEqual(response, "<div></div>")
-
-    def test_page3(self):
-        page = self.gobj_root.create_gobj(
-            None,
-            Page2,
-            self.gobj_root,
-            template="<div></div>")
-        response = page.render()
-        self.assertEqual(response, "<div></div>")
-
-    def test_page4(self):
-        page = self.gobj_root.create_gobj(
-            None,
-            Page2,
-            self.gobj_root,
-            template="<div>${name}</div>")
-        response = page.render(name='Hello')
-        self.assertEqual(response, "<div>Hello</div>")

ginsfsm/wsgi/__init__.py

-""" Code stolen from waitress 0.8.1
-"""
-
-
 def profile(cmd, globals, locals, sort_order, callers):  # pragma: no cover
     # runs a command under the profiler and print profiling output at shutdown
     import os

ginsfsm/wsgi/utilities.py

 ##############################################################################
 """Utility functions
 """
+
+import asyncore
+import logging
 import re
 import time
 import calendar
 
+logger = logging.getLogger('waitress')
 
 def find_double_newline(s):
     """Returns the position just after a double newline in the given string."""
     else:
         return pos2
 
-
 def concat(*args):
     return ''.join(args)
 
-
 def join(seq, field=' '):
     return field.join(seq)
 
-
 def group(s):
     return '(' + s + ')'
 
-
-short_days = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat']
-long_days = ['sunday', 'monday', 'tuesday', 'wednesday',
-             'thursday', 'friday', 'saturday']
+short_days = ['sun','mon','tue','wed','thu','fri','sat']
+long_days = ['sunday','monday','tuesday','wednesday',
+             'thursday','friday','saturday']
 
 short_day_reg = group(join(short_days, '|'))
 long_day_reg = group(join(long_days, '|'))
 
 hms_reg = join(3 * [group('[0-9][0-9]')], ':')
 
-months = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul',
-          'aug', 'sep', 'oct', 'nov', 'dec']
+months = ['jan','feb','mar','apr','may','jun','jul',
+          'aug','sep','oct','nov','dec']
 
 monmap = {}
 for i in range(12):
 
 # rfc822 format
 rfc822_date = join(
-        [concat(short_day_reg, ','),            # day
+        [concat (short_day_reg,','),            # day
          group('[0-9][0-9]?'),                  # date
          months_reg,                            # month
          group('[0-9]+'),                       # year
 
 rfc822_reg = re.compile(rfc822_date)
 
-
 def unpack_rfc822(m):
     g = m.group
     return (
 
     # rfc850 format
 rfc850_date = join(
-        [concat(long_day_reg, ','),
+        [concat(long_day_reg,','),
          join(
-                 [group('[0-9][0-9]?'),
+                 [group ('[0-9][0-9]?'),
                   months_reg,
-                  group('[0-9]+')
+                  group ('[0-9]+')
                   ],
                  '-'
                  ),
         )
 
 rfc850_reg = re.compile(rfc850_date)
-
-
 # they actually unpack the same way
 def unpack_rfc850(m):
     g = m.group
     yr = g(4)
     if len(yr) == 2:
-        yr = '19' + yr
+        yr = '19'+yr
     return (
             int(yr),           # year
             monmap[g(3)],        # month
 monthname = [None, 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
              'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
 
-
 def build_http_date(when):
     year, month, day, hh, mm, ss, wd, y, z = time.gmtime(when)
     return "%s, %02d %3s %4d %02d:%02d:%02d GMT" % (
             day, monthname[month], year,
             hh, mm, ss)
 
-
 def parse_http_date(d):
     d = d.lower()
     m = rfc850_reg.match(d)
             return 0
     return retval
 
+class logging_dispatcher(asyncore.dispatcher):
+    logger = logger
+    def log_info(self, message, type='info'):
+        severity = {
+            'info': logging.INFO,
+            'warning': logging.WARN,
+            'error': logging.ERROR,
+            }
+        self.logger.log(severity.get(type, logging.INFO), message)
 
 class Error(object):
     def __init__(self, body):
         self.body = body
 
-
 class BadRequest(Error):
     code = 400
     reason = 'Bad Request'
 
-
 class RequestHeaderFieldsTooLarge(BadRequest):
     code = 431
     reason = 'Request Header Fields Too Large'
 
-
 class RequestEntityTooLarge(BadRequest):
     code = 413
     reason = 'Request Entity Too Large'
 
-
 class InternalServerError(Error):