# HG changeset patch
# User Edouqrd Tisserant <edouard.tisserant@gmail.com>
# Date 1301162031 -3600
# Node ID 5e7457efbb8fe7916ae9fd08aa45d7e123dd8b17
# Parent  5d2927300e2c93e3ba9a3294141f4e5936d9d045
Added dumb SEMA?implementation

diff -r 5d2927300e2c -r 5e7457efbb8f lib/ieclib.txt
--- a/lib/ieclib.txt	Wed Mar 16 10:31:50 2011 +0100
+++ b/lib/ieclib.txt	Sat Mar 26 18:53:51 2011 +0100
@@ -36,3 +36,4 @@
 {#include "integral_st.txt" }
 {#include "pid_st.txt" }
 {#include "ramp_st.txt" }
+{#include "sema.txt" }
diff -r 5d2927300e2c -r 5e7457efbb8f lib/sema.txt
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/sema.txt	Sat Mar 26 18:53:51 2011 +0100
@@ -0,0 +1,25 @@
+(*
+ * (c) 2011 Edouard Tisserant
+ *
+ * Fake semaphore support, for non preemptive implementation.
+ *
+ *)
+
+
+FUNCTION_BLOCK SEMA
+  VAR_INPUT
+    CLAIM : BOOL;
+    RELEASE : BOOL;
+  END_VAR
+  VAR_OUTPUT
+    BUSY : BOOL;
+  END_VAR
+  VAR
+    Q_INTERNAL : BOOL;
+  END_VAR
+
+  Q_INTERNAL := CLAIM OR ( Q_INTERNAL AND (NOT RELEASE));
+  BUSY := Q_INTERNAL;
+
+END_FUNCTION_BLOCK
+