Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:Ledest:erlang:20
erlang
2184-Improve-doc-change-images-to-.svg.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 2184-Improve-doc-change-images-to-.svg.patch of Package erlang
From 2699cd204f8cc2b3a4f457ff6d25651508db42b3 Mon Sep 17 00:00:00 2001 From: Raimo Niskanen <raimo@erlang.org> Date: Tue, 27 Mar 2018 10:22:07 +0200 Subject: [PATCH] Improve doc, change images to .svg --- system/doc/design_principles/Makefile | 12 +- system/doc/design_principles/code_lock.dia | Bin 2945 -> 2605 bytes system/doc/design_principles/code_lock.png | Bin 59827 -> 0 bytes system/doc/design_principles/code_lock.svg | 132 +++++++ system/doc/design_principles/code_lock_2.dia | Bin 2956 -> 2854 bytes system/doc/design_principles/code_lock_2.png | Bin 55553 -> 0 bytes system/doc/design_principles/code_lock_2.svg | 140 +++++++ system/doc/design_principles/statem.xml | 550 ++++++++++++++++----------- 8 files changed, 610 insertions(+), 224 deletions(-) delete mode 100644 system/doc/design_principles/code_lock.png create mode 100644 system/doc/design_principles/code_lock.svg delete mode 100644 system/doc/design_principles/code_lock_2.png create mode 100644 system/doc/design_principles/code_lock_2.svg diff --git a/system/doc/design_principles/Makefile b/system/doc/design_principles/Makefile index 5743a50b47..1f570f5271 100644 --- a/system/doc/design_principles/Makefile +++ b/system/doc/design_principles/Makefile @@ -1,7 +1,7 @@ # # %CopyrightBegin% # -# Copyright Ericsson AB 1997-2016. All Rights Reserved. +# Copyright Ericsson AB 1997-2018. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -57,11 +57,11 @@ GIF_FILES = \ sup5.gif \ sup6.gif -PNG_FILES = \ - code_lock.png \ - code_lock_2.png +SVG_FILES = \ + code_lock.svg \ + code_lock_2.svg -IMAGE_FILES = $(GIF_FILES) $(PNG_FILES) +IMAGE_FILES = $(GIF_FILES) $(SVG_FILES) XML_FILES = \ $(BOOK_FILES) $(XML_CHAPTER_FILES) \ @@ -90,7 +90,7 @@ _create_dirs := $(shell mkdir -p $(HTMLDIR)) $(HTMLDIR)/%.gif: %.gif $(INSTALL_DATA) $< $@ -$(HTMLDIR)/%.png: %.png +$(HTMLDIR)/%.svg: %.svg $(INSTALL_DATA) $< $@ docs: html diff --git a/system/doc/design_principles/code_lock.dia b/system/doc/design_principles/code_lock.dia index eaa2aca5b0cb487999116bd581b53ad9c6632726..fe43d6da2c93ef36c0fcf6a5e4737d8c26743997 100644 GIT binary patch literal 2605 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 PtF!+Df^lI85Ul_J%<vHn literal 2945 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 diff --git a/system/doc/design_principles/code_lock.png b/system/doc/design_principles/code_lock.png deleted file mode 100644 index 40bd35fc74abeeb8beefc6360b78b346c845e3fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 59827 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%0A#c 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 Hb@TrN!Z-X5 diff --git a/system/doc/design_principles/code_lock.svg b/system/doc/design_principles/code_lock.svg new file mode 100644 index 0000000000..223e121486 --- /dev/null +++ b/system/doc/design_principles/code_lock.svg @@ -0,0 +1,132 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/PR-SVG-20010719/DTD/svg10.dtd"> +<svg width="41cm" height="52cm" viewBox="-2 -2 806 1023" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <polyline style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="492.782,860 600,860 600,900 "/> + <polyline style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="380,900 380,900 380,931.6 "/> + <polyline style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="640,560 640,580 640,580 640,600 "/> + <polyline style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="492.782,300 640,300 640,340 "/> + <g> + <path style="fill: #d5d5f7" d="M 289.774 260 L 470.226,260 C 492.782,276 500,284 500,300 C 500,316 492.782,324 470.226,340 L 289.774,340 C 267.218,324 260,316 260,300 C 260,284 267.218,276 289.774,260z"/> + <path style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" d="M 289.774 260 L 470.226,260 C 492.782,276 500,284 500,300 C 500,316 492.782,324 470.226,340 L 289.774,340 C 267.218,324 260,316 260,300 C 260,284 267.218,276 289.774,260"/> + <text font-size="27.0933" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:700" x="380" y="308.467"> + <tspan x="380" y="308.467">locked</tspan> + </text> + </g> + <g> + <path style="fill: #d5d5f7" d="M 289.774 820 L 470.226,820 C 492.782,836 500,844 500,860 C 500,876 492.782,884 470.226,900 L 289.774,900 C 267.218,884 260,876 260,860 C 260,844 267.218,836 289.774,820z"/> + <path style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" d="M 289.774 820 L 470.226,820 C 492.782,836 500,844 500,860 C 500,876 492.782,884 470.226,900 L 289.774,900 C 267.218,884 260,876 260,860 C 260,844 267.218,836 289.774,820"/> + <text font-size="27.0933" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:700" x="380" y="868.467"> + <tspan x="380" y="868.467">open</tspan> + </text> + </g> + <g> + <polygon style="fill: #aad7aa" points="520,340 760,340 736,360 760,380 520,380 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="520,340 760,340 736,360 760,380 520,380 "/> + <text font-size="20.32" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:italic;font-weight:normal" x="546" y="366.35"> + <tspan x="546" y="366.35">{button,Button}</tspan> + </text> + </g> + <g> + <polygon style="fill: #f3cccc" points="640,480 800,520 640,560 480,520 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="640,480 800,520 640,560 480,520 "/> + <text font-size="20.32" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="643.2" y="527.15"> + <tspan x="643.2" y="527.15">Correct Code?</tspan> + </text> + </g> + <g> + <polygon style="fill: #ffff8f" points="0,940 160,940 160,980 0,980 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="0,940 160,940 160,980 0,980 "/> + <text font-size="20.32" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="80" y="966.35"> + <tspan x="80" y="966.35">do_lock()</tspan> + </text> + </g> + <g> + <polygon style="fill: #aad7aa" points="280,931.6 480,931.6 460,960 480,988.4 280,988.4 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="280,931.6 480,931.6 460,960 480,988.4 280,988.4 "/> + <text font-size="20.32" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:italic;font-weight:normal" x="380" y="966.35"> + <tspan x="380" y="966.35">state_timeout</tspan> + </text> + </g> + <g> + <ellipse style="fill: #d5d5f7" cx="380" cy="40" rx="40" ry="40"/> + <ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="380" cy="40" rx="40" ry="40"/> + <text font-size="27.0933" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="380" y="48.4667"> + <tspan x="380" y="48.4667">init</tspan> + </text> + </g> + <g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="380.719" y1="180" x2="380.087" y2="250.264"/> + <polygon style="fill: #000000" points="380.02,257.764 375.11,247.72 380.087,250.264 385.11,247.809 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="380.02,257.764 375.11,247.72 380.087,250.264 385.11,247.809 "/> + </g> + <g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="640.438" y1="440" x2="640.106" y2="470.265"/> + <polygon style="fill: #000000" points="640.024,477.764 635.134,467.71 640.106,470.265 645.134,467.819 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="640.024,477.764 635.134,467.71 640.106,470.265 645.134,467.819 "/> + </g> + <polyline style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="640,700 640,740 380,740 380,740 "/> + <text font-size="20.32" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="640" y="578.9"> + <tspan x="640" y="578.9">Y</tspan> + </text> + <text font-size="20.32" style="fill: #000000;text-anchor:end;font-family:sans-serif;font-style:normal;font-weight:normal" x="480" y="538.9"> + <tspan x="480" y="538.9">N</tspan> + </text> + <g> + <polyline style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="80,940 80,220 370.623,220 "/> + <polygon style="fill: #000000" points="378.123,220 368.123,225 370.623,220 368.123,215 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="378.123,220 368.123,225 370.623,220 368.123,215 "/> + </g> + <g> + <polygon style="fill: #aad7aa" points="500,900 700,900 680,920 700,940 500,940 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="500,900 700,900 680,920 700,940 500,940 "/> + <text font-size="20.32" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:italic;font-weight:normal" x="522" y="926.35"> + <tspan x="522" y="926.35">{button,Digit}</tspan> + </text> + </g> + <g> + <polyline style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="600,940 600,980 760,980 760,780 389.736,780 "/> + <polygon style="fill: #000000" points="382.236,780 392.236,775 389.736,780 392.236,785 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="382.236,780 392.236,775 389.736,780 392.236,785 "/> + </g> + <g> + <polygon style="fill: #ffff8f" points="260,120 501.438,120 501.438,180 260,180 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="260,120 501.438,120 501.438,180 260,180 "/> + <text font-size="20.32" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="286.144" y="143.65"> + <tspan x="286.144" y="143.65">do_lock()</tspan> + <tspan x="286.144" y="169.05">Clear Buttons</tspan> + </text> + </g> + <g> + <polygon style="fill: #ffff8f" points="500,600 780,600 780,700 500,700 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="500,600 780,600 780,700 500,700 "/> + <text font-size="20.32" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="530" y="630.95"> + <tspan x="530" y="630.95">do_unlock()</tspan> + <tspan x="530" y="656.35">Clear Buttons</tspan> + <tspan x="530" y="681.75">state_timeout 10 s</tspan> + </text> + </g> + <g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="380" y1="80" x2="380.544" y2="110.266"/> + <polygon style="fill: #000000" points="380.679,117.764 375.5,107.856 380.544,110.266 385.498,107.676 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="380.679,117.764 375.5,107.856 380.544,110.266 385.498,107.676 "/> + </g> + <g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="380" y1="740" x2="380" y2="810.264"/> + <polygon style="fill: #000000" points="380,817.764 375,807.764 380,810.264 385,807.764 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="380,817.764 375,807.764 380,810.264 385,807.764 "/> + </g> + <polyline style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="380,988.4 380,1020 80,1020 80,980 "/> + <g> + <polygon style="fill: #ffff8f" points="540,400 740.875,400 740.875,440 540,440 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="540,400 740.875,400 740.875,440 540,440 "/> + <text font-size="20.32" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="640.438" y="426.35"> + <tspan x="640.438" y="426.35">Collect Buttons</tspan> + </text> + </g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="640" y1="380" x2="640.438" y2="400"/> + <g> + <polyline style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="480,520 380,520 380,351 "/> + <polygon style="fill: #000000" points="385,351 380,341 375,351 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="385,351 380,341 375,351 "/> + </g> +</svg> diff --git a/system/doc/design_principles/code_lock_2.dia b/system/doc/design_principles/code_lock_2.dia index 3b9ba554d875d4ded6dba0424fdab8047cebfbc3..31eb0fb6eb463d2013cb873c0a383469d9046f8f 100644 GIT binary patch literal 2854 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 E08R3Y-2eap literal 2956 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 C*0_EE diff --git a/system/doc/design_principles/code_lock_2.png b/system/doc/design_principles/code_lock_2.png deleted file mode 100644 index 3aca9dd5aac2db64af8b3f0d8c1c49e4b9c67bcd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55553 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 diff --git a/system/doc/design_principles/code_lock_2.svg b/system/doc/design_principles/code_lock_2.svg new file mode 100644 index 0000000000..d3e15e7577 --- /dev/null +++ b/system/doc/design_principles/code_lock_2.svg @@ -0,0 +1,140 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/PR-SVG-20010719/DTD/svg10.dtd"> +<svg width="41cm" height="52cm" viewBox="-1 0 806 1021" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <polyline style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="380,300.55 380,300 140,300 140,360 "/> + <polyline style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="412.782,900 412.782,900 560,900 560,940 "/> + <g> + <polyline style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="560,980 560,1020 0,1020 0,120.55 370.264,120.55 "/> + <polygon style="fill: #000000" points="377.764,120.55 367.764,125.55 370.264,120.55 367.764,115.55 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="377.764,120.55 367.764,125.55 370.264,120.55 367.764,115.55 "/> + </g> + <polyline style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="640,680 640,720 300,720 300,760 "/> + <polyline style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="492.782,300.55 492.782,300 640,300 640,360 "/> + <g> + <path style="fill: #d5d5f7" d="M 289.774 261.1 L 470.226,261.1 C 492.782,276.88 500,284.77 500,300.55 C 500,316.33 492.782,324.22 470.226,340 L 289.774,340 C 267.218,324.22 260,316.33 260,300.55 C 260,284.77 267.218,276.88 289.774,261.1z"/> + <path style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" d="M 289.774 261.1 L 470.226,261.1 C 492.782,276.88 500,284.77 500,300.55 C 500,316.33 492.782,324.22 470.226,340 L 289.774,340 C 267.218,324.22 260,316.33 260,300.55 C 260,284.77 267.218,276.88 289.774,261.1"/> + <text font-size="27.0933" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:700" x="380" y="309.017"> + <tspan x="380" y="309.017">locked</tspan> + </text> + </g> + <g> + <path style="fill: #d5d5f7" d="M 209.774 860 L 390.226,860 C 412.782,876 420,884 420,900 C 420,916 412.782,924 390.226,940 L 209.774,940 C 187.218,924 180,916 180,900 C 180,884 187.218,876 209.774,860z"/> + <path style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" d="M 209.774 860 L 390.226,860 C 412.782,876 420,884 420,900 C 420,916 412.782,924 390.226,940 L 209.774,940 C 187.218,924 180,916 180,900 C 180,884 187.218,876 209.774,860"/> + <text font-size="27.0933" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:700" x="300" y="908.467"> + <tspan x="300" y="908.467">open</tspan> + </text> + </g> + <g> + <polygon style="fill: #aad7aa" points="520,360 760,360 736,380 760,400 520,400 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="520,360 760,360 736,380 760,400 520,400 "/> + <text font-size="20.32" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:italic;font-weight:normal" x="546" y="386.35"> + <tspan x="546" y="386.35">{button,Button}</tspan> + </text> + </g> + <g> + <polygon style="fill: #ffff8f" points="140,760 460,760 460,816.8 140,816.8 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="140,760 460,760 460,816.8 140,816.8 "/> + <text font-size="20.32" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="174" y="782.05"> + <tspan x="174" y="782.05">do_unlock()</tspan> + <tspan x="174" y="807.45">state_timeout 10 s</tspan> + </text> + </g> + <g> + <polygon style="fill: #ffff8f" points="260,160 500,160 500,222.2 260,222.2 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="260,160 500,160 500,222.2 260,222.2 "/> + <text font-size="20.32" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="380" y="184.75"> + <tspan x="380" y="184.75">do_lock()</tspan> + <tspan x="380" y="210.15">Clear Buttons</tspan> + </text> + </g> + <g> + <polygon style="fill: #aad7aa" points="460,940 660,940 640,960 660,980 460,980 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="460,940 660,940 640,960 660,980 460,980 "/> + <text font-size="20.32" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:italic;font-weight:normal" x="560" y="966.35"> + <tspan x="560" y="966.35">state_timeout</tspan> + </text> + </g> + <g> + <ellipse style="fill: #d5d5f7" cx="380" cy="41.1" rx="40" ry="40"/> + <ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="380" cy="41.1" rx="40" ry="40"/> + <text font-size="27.0933" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="380" y="49.5667"> + <tspan x="380" y="49.5667">init</tspan> + </text> + </g> + <g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="380" y1="81.1" x2="380" y2="150.264"/> + <polygon style="fill: #000000" points="380,157.764 375,147.764 380,150.264 385,147.764 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="380,157.764 375,147.764 380,150.264 385,147.764 "/> + </g> + <g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="380" y1="222.2" x2="380" y2="251.364"/> + <polygon style="fill: #000000" points="380,258.864 375,248.864 380,251.364 385,248.864 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="380,258.864 375,248.864 380,251.364 385,248.864 "/> + </g> + <g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="300" y1="816.8" x2="300" y2="850.264"/> + <polygon style="fill: #000000" points="300,857.764 295,847.764 300,850.264 305,847.764 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="300,857.764 295,847.764 300,850.264 305,847.764 "/> + </g> + <g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="380" y1="560" x2="380" y2="349.736"/> + <polygon style="fill: #000000" points="380,342.236 385,352.236 380,349.736 375,352.236 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="380,342.236 385,352.236 380,349.736 375,352.236 "/> + </g> + <g> + <polygon style="fill: #ffff8f" points="240,560 520,560 520,600 240,600 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="240,560 520,560 520,600 240,600 "/> + <text font-size="20.32" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="380" y="586.35"> + <tspan x="380" y="586.35">state_timeout 30 s</tspan> + </text> + </g> + <g> + <polygon style="fill: #aad7aa" points="40,360 240,360 220,380 240,400 40,400 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="40,360 240,360 220,380 240,400 40,400 "/> + <text font-size="20.32" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:italic;font-weight:normal" x="62" y="386.35"> + <tspan x="62" y="386.35">state_timeout</tspan> + </text> + </g> + <g> + <polygon style="fill: #ffff8f" points="540,440 741.438,440 741.438,480 540,480 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="540,440 741.438,440 741.438,480 540,480 "/> + <text font-size="20.32" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="640.719" y="466.35"> + <tspan x="640.719" y="466.35">Collect Buttons</tspan> + </text> + </g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="640" y1="400" x2="640.719" y2="440"/> + <g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="640.611" y1="480.995" x2="640.056" y2="589"/> + <polygon style="fill: #000000" points="635.057,588.974 640.005,599 645.056,589.026 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="635.057,588.974 640.005,599 645.056,589.026 "/> + </g> + <g> + <polygon style="fill: #ffff8f" points="40,440 240,440 240,480 40,480 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="40,440 240,440 240,480 40,480 "/> + <text font-size="20.32" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="140" y="466.35"> + <tspan x="140" y="466.35">Clear Buttons</tspan> + </text> + </g> + <polyline style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="480,640 380,640 380,600 "/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="140" y1="400" x2="140" y2="440"/> + <g> + <g> + <polygon style="fill: #f3cccc" points="640,600 800,640 640,680 480,640 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="640,600 800,640 640,680 480,640 "/> + <text font-size="20.32" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="643.2" y="647.15"> + <tspan x="643.2" y="647.15">Correct Code?</tspan> + </text> + </g> + <text font-size="20.32" style="fill: #000000;text-anchor:end;font-family:sans-serif;font-style:normal;font-weight:normal" x="480" y="658.9"> + <tspan x="480" y="658.9">N</tspan> + </text> + <text font-size="20.32" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="640" y="698.9"> + <tspan x="640" y="698.9">Y</tspan> + </text> + </g> + <g> + <polyline style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="140,480 140,516 369,516 "/> + <polygon style="fill: #000000" points="369,521 379,516 369,511 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="369,521 379,516 369,511 "/> + </g> +</svg> diff --git a/system/doc/design_principles/statem.xml b/system/doc/design_principles/statem.xml index 16f6ce8348..5269d23487 100644 --- a/system/doc/design_principles/statem.xml +++ b/system/doc/design_principles/statem.xml @@ -356,8 +356,8 @@ State(S) x Event(E) -> Actions(A), State(S')</pre> </p> </item> <tag> - <c>{stop_and_reply, Reason, NewData, Actions}</c><br /> - <c>{stop_and_reply, Reason, Actions}</c> + <c>{stop_and_reply, Reason, NewData, ReplyActions}</c><br /> + <c>{stop_and_reply, Reason, ReplyActions}</c> </tag> <item> <p> @@ -377,7 +377,7 @@ State(S) x Event(E) -> Actions(A), State(S')</pre> </seealso> callback function is called before any <seealso marker="#Event Handler">event handler</seealso> - is called. This function behaves exactly as an event handler + is called. This function behaves like an event handler function, but gets its only argument <c>Args</c> from the <c>gen_statem</c> <seealso marker="stdlib:gen_statem#start/3"> @@ -678,13 +678,14 @@ StateName(EventType, EventContent, Data) -> A door with a code lock can be seen as a state machine. Initially, the door is locked. When someone presses a button, an event is generated. - Depending on what buttons have been pressed before, - the sequence so far can be correct, incomplete, or wrong. + The pressed buttons are collected, up to the number of buttons + in the correct code. If correct, the door is unlocked for 10 seconds (10,000 milliseconds). - If incomplete, we wait for another button to be pressed. If - wrong, we start all over, waiting for a new button sequence. + If not correct, we wait for a new button to be pressed. </p> - <image file="../design_principles/code_lock.png"> + <!-- The image is edited with dia in a .dia file, + then exported to Scalable Vector Graphics. --> + <image file="../design_principles/code_lock.svg" width="80%"> <icaption>Code Lock State Diagram</icaption> </image> <p> @@ -698,37 +699,44 @@ StateName(EventType, EventContent, Data) -> -export([start_link/1]). -export([button/1]). --export([init/1,callback_mode/0,terminate/3,code_change/4]). +-export([init/1,callback_mode/0,terminate/3]). -export([locked/3,open/3]). start_link(Code) -> gen_statem:start_link({local,?NAME}, ?MODULE, Code, []). -button(Digit) -> - gen_statem:cast(?NAME, {button,Digit}). +button(Button) -> + gen_statem:cast(?NAME, {button,Button}). init(Code) -> do_lock(), - Data = #{code => Code, remaining => Code}, + Data = #{code => Code, length => length(Code), buttons => []}, {ok, locked, Data}. callback_mode() -> state_functions. - + ]]></code> + <code type="erl"><![CDATA[ locked( - cast, {button,Digit}, - #{code := Code, remaining := Remaining} = Data) -> - case Remaining of - [Digit] -> + cast, {button,Button}, + #{code := Code, length := Length, buttons := Buttons} = Data) -> + NewButtons = + if + length(Buttons) < Length -> + Buttons; + true -> + tl(Buttons) + end ++ [Button], + if + NewButtons =:= Code -> % Correct do_unlock(), - {next_state, open, Data#{remaining := Code}, + {next_state, open, Data#{buttons := []}, [{state_timeout,10000,lock}]}; - [Digit|Rest] -> % Incomplete - {next_state, locked, Data#{remaining := Rest}}; - _Wrong -> - {next_state, locked, Data#{remaining := Code}} + true -> % Incomplete | Incorrect + {next_state, locked, Data#{buttons := NewButtons}} end. - + ]]></code> + <code type="erl"><![CDATA[ open(state_timeout, lock, Data) -> do_lock(), {next_state, locked, Data}; @@ -743,8 +751,6 @@ do_unlock() -> terminate(_Reason, State, _Data) -> State =/= locked andalso do_lock(), ok. -code_change(_Vsn, State, Data, _Extra) -> - {ok, State, Data}. ]]></code> <p>The code is explained in the next sections.</p> </section> @@ -820,17 +826,17 @@ start_link(Code) -> in this case <c>locked</c>; assuming that the door is locked to begin with. <c>Data</c> is the internal server data of the <c>gen_statem</c>. Here the server data is a <seealso marker="stdlib:maps">map</seealso> - with key <c>code</c> that stores - the correct button sequence, and key <c>remaining</c> - that stores the remaining correct button sequence - (the same as the <c>code</c> to begin with). + with key <c>code</c> that stores the correct button sequence, + key <c>length</c> store its length, + and key <c>buttons</c> that stores the collected buttons + up to the same length. </p> <code type="erl"><![CDATA[ init(Code) -> do_lock(), - Data = #{code => Code, remaining => Code}, - {ok,locked,Data}. + Data = #{code => Code, length => length(Code), buttons => []}, + {ok, locked, Data}. ]]></code> <p>Function <seealso marker="stdlib:gen_statem#start_link/3"><c>gen_statem:start_link</c></seealso> @@ -848,10 +854,6 @@ init(Code) -> a <c>gen_statem</c> that is not part of a supervision tree. </p> - <code type="erl"><![CDATA[ -callback_mode() -> - state_functions. - ]]></code> <p> Function <seealso marker="stdlib:gen_statem#Module:callback_mode/0"><c>Module:callback_mode/0</c></seealso> @@ -859,8 +861,12 @@ callback_mode() -> <seealso marker="#Callback Modes"><c>CallbackMode</c></seealso> for the callback module, in this case <seealso marker="stdlib:gen_statem#type-callback_mode"><c>state_functions</c></seealso>. - That is, each state has got its own handler function. + That is, each state has got its own handler function: </p> + <code type="erl"><![CDATA[ +callback_mode() -> + state_functions. + ]]></code> </section> @@ -884,7 +890,7 @@ button(Digit) -> <c>{button,Digit}</c> is the event content. </p> <p> - The event is made into a message and sent to the <c>gen_statem</c>. + The event is sent to the <c>gen_statem</c>. When the event is received, the <c>gen_statem</c> calls <c>StateName(cast, Event, Data)</c>, which is expected to return a tuple <c>{next_state, NewStateName, NewData}</c>, @@ -893,44 +899,48 @@ button(Digit) -> <c>NewStateName</c> is the name of the next state to go to. <c>NewData</c> is a new value for the server data of the <c>gen_statem</c>, and <c>Actions</c> is a list of - actions on the <c>gen_statem</c> engine. + actions to be performed by the <c>gen_statem</c> engine. </p> + <code type="erl"><![CDATA[ locked( - cast, {button,Digit}, - #{code := Code, remaining := Remaining} = Data) -> - case Remaining of - [Digit] -> % Complete + cast, {button,Button}, + #{code := Code, length := Length, buttons := Buttons} = Data) -> + NewButtons = + if + length(Buttons) < Length -> + Buttons; + true -> + tl(Buttons) + end ++ [Button], + if + NewButtons =:= Code -> % Correct do_unlock(), - {next_state, open, Data#{remaining := Code}, + {next_state, open, Data#{buttons := []}, [{state_timeout,10000,lock}]}; - [Digit|Rest] -> % Incomplete - {next_state, locked, Data#{remaining := Rest}}; - [_|_] -> % Wrong - {next_state, locked, Data#{remaining := Code}} + true -> % Incomplete | Incorrect + {next_state, locked, Data#{buttons := NewButtons}} end. - -open(state_timeout, lock, Data) -> - do_lock(), - {next_state, locked, Data}; -open(cast, {button,_}, Data) -> - {next_state, open, Data}. ]]></code> <p> - If the door is locked and a button is pressed, the pressed - button is compared with the next correct button. + In state <c>locked</c>, when a button is pressed, + it is collected with the last pressed buttons + up to the length of the correct dode, + and compared with the correct code. Depending on the result, the door is either unlocked and the <c>gen_statem</c> goes to state <c>open</c>, or the door remains in state <c>locked</c>. </p> <p> - If the pressed button is incorrect, the server data - restarts from the start of the code sequence. - </p> - <p> - If the whole code is correct, the server changes states - to <c>open</c>. + When changing to state <c>open</c>, the collected + buttons are reset, the lock unlocked, and a state timer + for 10 s is started. </p> + + <code type="erl"><![CDATA[ +open(cast, {button,_}, Data) -> + {next_state, open, Data}. + ]]></code> <p> In state <c>open</c>, a button event is ignored by staying in the same state. This can also be done @@ -948,7 +958,7 @@ open(cast, {button,_}, Data) -> the following tuple is returned from <c>locked/2</c>: </p> <code type="erl"><![CDATA[ -{next_state, open, Data#{remaining := Code}, +{next_state, open, Data#{buttons := []}, [{state_timeout,10000,lock}]}; ]]></code> <p> @@ -986,9 +996,9 @@ open(state_timeout, lock, Data) -> <p> Consider a <c>code_length/0</c> function that returns the length of the correct code - (that should not be sensitive to reveal). + (that should not be too sensitive to reveal). We dispatch all events that are not state-specific - to the common function <c>handle_event/3</c>: + to the common function <c>handle_common/3</c>: </p> <code type="erl"><![CDATA[ ... @@ -1001,16 +1011,44 @@ code_length() -> ... locked(...) -> ... ; locked(EventType, EventContent, Data) -> - handle_event(EventType, EventContent, Data). + handle_common(EventType, EventContent, Data). ... open(...) -> ... ; open(EventType, EventContent, Data) -> - handle_event(EventType, EventContent, Data). + handle_common(EventType, EventContent, Data). -handle_event({call,From}, code_length, #{code := Code} = Data) -> +handle_common({call,From}, code_length, #{code := Code} = Data) -> {keep_state, Data, [{reply,From,length(Code)}]}. ]]></code> + + <p> + Another way to do it is through a convenience macro + <c>?HANDLE_COMMON/3</c>: + </p> + <code type="erl"><![CDATA[ +... +-export([button/1,code_length/0]). +... + +code_length() -> + gen_statem:call(?NAME, code_length). + +-define(HANDLE_COMMON(T, C, D), + ?FUNCTION_NAME(T, C, D) -> handle_common((T), (C), (D))). +%% +handle_common({call,From}, code_length, #{code := Code} = Data) -> + {keep_state, Data, [{reply,From,length(Code)}]}. + +... +locked(...) -> ... ; +?HANDLE_COMMON. + +... +open(...) -> ... ; +?HANDLE_COMMON. + ]]></code> + <p> This example uses <seealso marker="stdlib:gen_statem#call/2"><c>gen_statem:call/2</c></seealso>, @@ -1047,16 +1085,22 @@ callback_mode() -> handle_event(cast, {button,Digit}, State, #{code := Code} = Data) -> case State of locked -> - case maps:get(remaining, Data) of - [Digit] -> % Complete - do_unlock(), - {next_state, open, Data#{remaining := Code}, + #{length := Length, buttons := Buttons} = Data, + NewButtons = + if + length(Buttons) < Length -> + Buttons; + true -> + tl(Buttons) + end ++ [Button], + if + NewButtons =:= Code -> % Correct + do_unlock(), + {next_state, open, Data#{buttons := []}, [{state_timeout,10000,lock}]}; - [Digit|Rest] -> % Incomplete - {keep_state, Data#{remaining := Rest}}; - [_|_] -> % Wrong - {keep_state, Data#{remaining := Code}} - end; + true -> % Incomplete | Incorrect + {keep_state, Data#{buttons := NewButtons}} + end; open -> keep_state_and_data end; @@ -1165,16 +1209,15 @@ stop() -> <code type="erl"><![CDATA[ ... -locked( - timeout, _, - #{code := Code, remaining := Remaining} = Data) -> - {next_state, locked, Data#{remaining := Code}}; +locked(timeout, _, Data) -> + {next_state, locked, Data#{buttons := []}}; locked( cast, {button,Digit}, - #{code := Code, remaining := Remaining} = Data) -> + #{code := Code, length := Length, buttons := Buttons} = Data) -> ... - [Digit|Rest] -> % Incomplete - {next_state, locked, Data#{remaining := Rest}, 30000}; + true -> % Incomplete | Incorrect + {next_state, locked, Data#{buttons := NewButtons}, + 30000} ... ]]></code> <p> @@ -1189,6 +1232,13 @@ locked( Whatever event you act on has already cancelled the event time-out... </p> + <p> + Note that an event time-out does not work well with + when you have for example a status call as in + <seealso marker="#All State Events">All State Events</seealso>, + or handle unknown events, since all kinds of events + will cancel the event time-out. + </p> </section> <!-- =================================================================== --> @@ -1222,12 +1272,13 @@ locked( ... locked( cast, {button,Digit}, - #{code := Code, remaining := Remaining} = Data) -> - case Remaining of - [Digit] -> + #{code := Code, length := Length, buttons := Buttons} = Data) -> +... + if + NewButtons =:= Code -> % Correct do_unlock(), - {next_state, open, Data#{remaining := Code}, - [{{timeout,open_tm},10000,lock}]}; + {next_state, open, Data#{buttons := []}, + [{{timeout,open_tm},10000,lock}]}; ... open({timeout,open_tm}, lock, Data) -> @@ -1273,12 +1324,13 @@ open(cast, {button,_}, Data) -> ... locked( cast, {button,Digit}, - #{code := Code, remaining := Remaining} = Data) -> - case Remaining of - [Digit] -> + #{code := Code, length := Length, buttons := Buttons} = Data) -> +... + if + NewButtons =:= Code -> % Correct do_unlock(), Tref = erlang:start_timer(10000, self(), lock), - {next_state, open, Data#{remaining := Code, timer => Tref}}; + {next_state, open, Data#{buttons := [], timer => Tref}}; ... open(info, {timeout,Tref,lock}, #{timer := Tref} = Data) -> @@ -1398,28 +1450,38 @@ start_link(Code) -> fun () -> true = register(?NAME, self()), do_lock(), - locked(Code, Code) + locked(Code, length(Code), []) end). -button(Digit) -> - ?NAME ! {button,Digit}. - -locked(Code, [Digit|Remaining]) -> +button(Button) -> + ?NAME ! {button,Button}. + ]]></code> + <code type="erl"><![CDATA[ +locked(Code, Length, Buttons) -> receive - {button,Digit} when Remaining =:= [] -> - do_unlock(), - open(Code); - {button,Digit} -> - locked(Code, Remaining); - {button,_} -> - locked(Code, Code) + {button,Button} -> + NewButtons = + if + length(Buttons) < Length -> + Buttons; + true -> + tl(Buttons) + end ++ [Button], + if + NewButtons =:= Code -> % Correct + do_unlock(), + open(Code, Length); + true -> % Incomplete | Incorrect + locked(Code, Length, NewButtons) + end end. - -open(Code) -> + ]]></code> + <code type="erl"><![CDATA[ +open(Code, Length) -> receive after 10000 -> do_lock(), - locked(Code, Code) + locked(Code, Length, []) end. do_lock() -> @@ -1483,7 +1545,7 @@ do_unlock() -> ... init(Code) -> process_flag(trap_exit, true), - Data = #{code => Code}, + Data = #{code => Code, length = length(Code)}, {ok, locked, Data}. callback_mode() -> @@ -1491,13 +1553,14 @@ callback_mode() -> locked(enter, _OldState, Data) -> do_lock(), - {keep_state,Data#{remaining => Code}}; + {keep_state,Data#{buttons => []}}; locked( cast, {button,Digit}, - #{code := Code, remaining := Remaining} = Data) -> - case Remaining of - [Digit] -> - {next_state, open, Data}; + #{code := Code, length := Length, buttons := Buttons} = Data) -> +... + if + NewButtons =:= Code -> % Correct + {next_state, open, Data}; ... open(enter, _OldState, _Data) -> @@ -1557,48 +1620,50 @@ open(state_timeout, lock, Data) -> to synchronize the state machines. </p> <p> - The following example uses an input model where you give the lock - characters with <c>put_chars(Chars)</c> and then call - <c>enter()</c> to finish the input. + The following example uses an input model where the buttons + generate up/down events and the lock responds to an up + event after the corresponding down event. </p> <code type="erl"><![CDATA[ ... --export(put_chars/1, enter/0). +-export(down/1, up/1). ... -put_chars(Chars) when is_binary(Chars) -> - gen_statem:call(?NAME, {chars,Chars}). +down(button) -> + gen_statem:cast(?NAME, {down,Button}). -enter() -> - gen_statem:call(?NAME, enter). +up(button) -> + gen_statem:cast(?NAME, {up,Button}). ... locked(enter, _OldState, Data) -> do_lock(), {keep_state,Data#{remaining => Code, buf => []}}; +locked( + internal, {button,Digit}, + #{code := Code, length := Length, buttons := Buttons} = Data) -> ... - -handle_event({call,From}, {chars,Chars}, #{buf := Buf} = Data) -> - {keep_state, Data#{buf := [Chars|Buf], - [{reply,From,ok}]}; -handle_event({call,From}, enter, #{buf := Buf} = Data) -> - Chars = unicode:characters_to_binary(lists:reverse(Buf)), - try binary_to_integer(Chars) of - Digit -> - {keep_state, Data#{buf := []}, - [{reply,From,ok}, - {next_event,internal,{button,Chars}}]} - catch - error:badarg -> - {keep_state, Data#{buf := []}, - [{reply,From,{error,not_an_integer}}]} + ]]></code> + <code type="erl"><![CDATA[ +handle_common(cast, {down,Button}, Data) -> + {keep_state, Data#{button := Button}; +handle_common(cast, {up,Button}, Data) -> + case Data of + #{button := Button} -> + {keep_state,maps:remove(button, Data), + [{next_event,internal,{button,Button}}]}; + #{} -> + keep_state_and_data end; ... + +open(internal, {button,_}, Data) -> + {keep_state,Data,[postpone]}; +... ]]></code> <p> If you start this program with <c>code_lock:start([17])</c> - you can unlock with <c>code_lock:put_chars(<<"001">>), - code_lock:put_chars(<<"7">>), code_lock:enter()</c>. + you can unlock with <c>code_lock:down(17), code_lock:up(17).</c> </p> </section> @@ -1612,13 +1677,15 @@ handle_event({call,From}, enter, #{buf := Buf} = Data) -> modifications and some more using state enter calls, which deserves a new state diagram: </p> - <image file="../design_principles/code_lock_2.png"> + <!-- The image is edited with dia in a .dia file, + then exported to Scalable Vector Graphics. --> + <image file="../design_principles/code_lock_2.svg" width="80%"> <icaption>Code Lock State Diagram Revisited</icaption> </image> <p> Notice that this state diagram does not specify how to handle a button event in the state <c>open</c>. So, you need to - read somewhere else that unspecified events + read here that unspecified events must be ignored as in not consumed but handled in some other state. Also, the state diagram does not show that the <c>code_length/0</c> call must be handled in every state. @@ -1636,8 +1703,8 @@ handle_event({call,From}, enter, #{buf := Buf} = Data) -> -define(NAME, code_lock_2). -export([start_link/1,stop/0]). --export([button/1,code_length/0]). --export([init/1,callback_mode/0,terminate/3,code_change/4]). +-export([down/1,up/1,code_length/0]). +-export([init/1,callback_mode/0,terminate/3]). -export([locked/3,open/3]). start_link(Code) -> @@ -1645,52 +1712,74 @@ start_link(Code) -> stop() -> gen_statem:stop(?NAME). -button(Digit) -> - gen_statem:cast(?NAME, {button,Digit}). +down(Digit) -> + gen_statem:cast(?NAME, {down,Digit}). +up(Digit) -> + gen_statem:cast(?NAME, {up,Digit}). code_length() -> gen_statem:call(?NAME, code_length). - + ]]></code> + <code type="erl"><![CDATA[ init(Code) -> process_flag(trap_exit, true), - Data = #{code => Code}, + Data = #{code => Code, length => Length, buttons => []}, {ok, locked, Data}. callback_mode() -> [state_functions,state_enter]. -locked(enter, _OldState, #{code := Code} = Data) -> +-define(HANDLE_COMMON, + ?FUNCTION_NAME(T, C, D) -> handle_common((T), (C), (D))). +%% +handle_common(cast, {down,Button}, Data) -> + {keep_state, Data#{button => Button}}; +handle_common(cast, {up,Button}, Data) -> + case Data of + #{button := Button} -> + {keep_state, maps:remove(button, Data), + [{next_event,internal,{button,Data}}]}; + #{} -> + keep_state_and_data + end; +handle_common({call,From}, code_length, #{code := Code}) -> + {keep_state_and_data, [{reply,From,length(Code)}]}. + ]]></code> + <code type="erl"><![CDATA[ +locked(enter, _OldState, Data) -> do_lock(), - {keep_state, Data#{remaining => Code}}; -locked( - timeout, _, - #{code := Code, remaining := Remaining} = Data) -> - {keep_state, Data#{remaining := Code}}; + {keep_state, Data#{buttons := []}}; +locked(state_timeout, button, Data) -> + {keep_state, Data#{buttons := []}}; locked( - cast, {button,Digit}, - #{code := Code, remaining := Remaining} = Data) -> - case Remaining of - [Digit] -> % Complete - {next_state, open, Data}; - [Digit|Rest] -> % Incomplete - {keep_state, Data#{remaining := Rest}, 30000}; - [_|_] -> % Wrong - {keep_state, Data#{remaining := Code}} + internal, {button,Digit}, + #{code := Code, length := Length, buttons := Buttons} = Data) -> + NewButtons = + if + length(Buttons) < Length -> + Buttons; + true -> + tl(Buttons) + end ++ [Button], + if + NewButtons =:= Code -> % Correct + do_unlock(), + {next_state, open, Data, + [{state_timeout,10000,lock}]}; + true -> % Incomplete | Incorrect + {keep_state, Data#{buttons := NewButtons}, + [{state_timeout,30000,button}]} end; -locked(EventType, EventContent, Data) -> - handle_event(EventType, EventContent, Data). - +?HANDLE_COMMON. + ]]></code> + <code type="erl"><![CDATA[ open(enter, _OldState, _Data) -> do_unlock(), {keep_state_and_data, [{state_timeout,10000,lock}]}; open(state_timeout, lock, Data) -> {next_state, locked, Data}; -open(cast, {button,_}, _) -> +open(internal, {button,_}, _) -> {keep_state_and_data, [postpone]}; -open(EventType, EventContent, Data) -> - handle_event(EventType, EventContent, Data). - -handle_event({call,From}, code_length, #{code := Code}) -> - {keep_state_and_data, [{reply,From,length(Code)}]}. +?HANDLE_COMMON. do_lock() -> io:format("Locked~n", []). @@ -1700,8 +1789,6 @@ do_unlock() -> terminate(_Reason, State, _Data) -> State =/= locked andalso do_lock(), ok. -code_change(_Vsn, State, Data, _Extra) -> - {ok,State,Data}. ]]></code> </section> @@ -1724,26 +1811,32 @@ callback_mode() -> [handle_event_function,state_enter]. %% State: locked -handle_event( - enter, _OldState, locked, - #{code := Code} = Data) -> +handle_event(enter, _OldState, locked, Data) -> do_lock(), - {keep_state, Data#{remaining => Code}}; + {keep_state, Data#{buttons := []}}; +handle_event(state_timeout, button, locked, Data) -> + {keep_state, Data#{buttons := []}}; handle_event( - timeout, _, locked, - #{code := Code, remaining := Remaining} = Data) -> - {keep_state, Data#{remaining := Code}}; -handle_event( - cast, {button,Digit}, locked, - #{code := Code, remaining := Remaining} = Data) -> - case Remaining of - [Digit] -> % Complete - {next_state, open, Data}; - [Digit|Rest] -> % Incomplete - {keep_state, Data#{remaining := Rest}, 30000}; - [_|_] -> % Wrong - {keep_state, Data#{remaining := Code}} + internal, {button,Digit}, locked, + #{code := Code, length := Length, buttons := Buttons} = Data) -> + NewButtons = + if + length(Buttons) < Length -> + Buttons; + true -> + tl(Buttons) + end ++ [Button], + if + NewButtons =:= Code -> % Correct + do_unlock(), + {next_state, open, Data, + [{state_timeout,10000,lock}]}; + true -> % Incomplete | Incorrect + {keep_state, Data#{buttons := NewButtons}, + [{state_timeout,30000,button}]} end; + ]]></code> + <code type="erl"><![CDATA[ %% %% State: open handle_event(enter, _OldState, open, _Data) -> @@ -1753,10 +1846,22 @@ handle_event(state_timeout, lock, open, Data) -> {next_state, locked, Data}; handle_event(cast, {button,_}, open, _) -> {keep_state_and_data,[postpone]}; + ]]></code> + <code type="erl"><![CDATA[ %% %% Any state -handle_event({call,From}, code_length, _State, #{code := Code}) -> - {keep_state_and_data, [{reply,From,length(Code)}]}. +handle_event(cast, {down,Button}, _State, Data) -> + {keep_state, Data#{button => Button}}; +handle_event(cast, {up,Button}, _State, Data) -> + case Data of + #{button := Button} -> + {keep_state, maps:remove(button, Data), + [{state_timeout,30000,button}]}; + #{} -> + keep_state_and_data + end; +handle_event({call,From}, code_length, _State, #{length := Length}) -> + {keep_state_and_data, [{reply,From,Length}]}. ... ]]></code> @@ -1800,7 +1905,7 @@ handle_event({call,From}, code_length, _State, #{code := Code}) -> </p> <code type="erl"><![CDATA[ ... --export([init/1,terminate/3,code_change/4,format_status/2]). +-export([init/1,terminate/3,format_status/2]). ... format_status(Opt, [_PDict,State,Data]) -> @@ -1808,7 +1913,6 @@ format_status(Opt, [_PDict,State,Data]) -> {State, maps:filter( fun (code, _) -> false; - (remaining, _) -> false; (_, _) -> true end, Data)}, @@ -1896,7 +2000,7 @@ format_status(Opt, [_PDict,State,Data]) -> -export([start_link/2,stop/0]). -export([button/1,code_length/0,set_lock_button/1]). --export([init/1,callback_mode/0,terminate/3,code_change/4,format_status/2]). +-export([init/1,callback_mode/0,terminate/3,format_status/2]). -export([handle_event/4]). start_link(Code, LockButton) -> @@ -1911,10 +2015,11 @@ code_length() -> gen_statem:call(?NAME, code_length). set_lock_button(LockButton) -> gen_statem:call(?NAME, {set_lock_button,LockButton}). - + ]]></code> + <code type="erl"><![CDATA[ init({Code,LockButton}) -> process_flag(trap_exit, true), - Data = #{code => Code, remaining => undefined}, + Data = #{code => Code, length => length(Code), buttons => []}, {ok, {locked,LockButton}, Data}. callback_mode() -> @@ -1927,33 +2032,41 @@ handle_event( [{reply,From,OldLockButton}]}; handle_event( {call,From}, code_length, - {_StateName,_LockButton}, #{code := Code}) -> + {_StateName,_LockButton}, #{length := Length}) -> {keep_state_and_data, - [{reply,From,length(Code)}]}; + [{reply,From,Length}]}; + ]]></code> + <code type="erl"><![CDATA[ %% %% State: locked -handle_event( - EventType, EventContent, - {locked,LockButton}, #{code := Code, remaining := Remaining} = Data) -> +handle_event(EventType, EventContent, {locked,LockButton}, Data) -> case {EventType, EventContent} of {enter, _OldState} -> do_lock(), - {keep_state, Data#{remaining := Code}}; - {timeout, _} -> - {keep_state, Data#{remaining := Code}}; + {keep_state, Data#{buttons := []}}; + {state_timeout, button} -> + {keep_state, Data#{buttons := []}}; {{call,From}, {button,Digit}} -> - case Remaining of - [Digit] -> % Complete + #{length := Length, buttons := Buttons} = Data, + NewButtons = + if + length(Buttons) < Length -> + Buttons; + true -> + tl(Buttons) + end ++ [Button], + case Data of + #{code := NewButtons} -> {next_state, {open,LockButton}, Data, [{reply,From,ok}]}; - [Digit|Rest] -> % Incomplete - {keep_state, Data#{remaining := Rest}, - [{reply,From,ok}, 30000]}; - [_|_] -> % Wrong - {keep_state, Data#{remaining := Code}, - [{reply,From,ok}]} - end + #{} -> + {keep_state, Data#{buttons := NewButtons}, + [{reply,From,ok}, + {state_timeout,30000,button}]} + end end; + ]]></code> + <code type="erl"><![CDATA[ %% %% State: open handle_event( @@ -1962,7 +2075,8 @@ handle_event( case {EventType, EventContent} of {enter, _OldState} -> do_unlock(), - {keep_state_and_data, [{state_timeout,10000,lock}]}; + {keep_state_and_data, + [{state_timeout,10000,lock}]}; {state_timeout, lock} -> {next_state, {locked,LockButton}, Data}; {{call,From}, {button,Digit}} -> @@ -1975,7 +2089,8 @@ handle_event( [postpone]} end end. - + ]]></code> + <code type="erl"><![CDATA[ do_lock() -> io:format("Locked~n", []). do_unlock() -> @@ -1984,8 +2099,6 @@ do_unlock() -> terminate(_Reason, State, _Data) -> State =/= locked andalso do_lock(), ok. -code_change(_Vsn, State, Data, _Extra) -> - {ok,State,Data}. format_status(Opt, [_PDict,State,Data]) -> StateData = {State, @@ -2046,7 +2159,8 @@ handle_event( {enter, _OldState} -> do_unlock(), {keep_state_and_data, - [{state_timeout,10000,lock},hibernate]}; + [{state_timeout,10000,lock}, + hibernate]}; ... ]]></code> <p> -- 2.16.4
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor