etherlab/etherlab_ext.c
changeset 2165 02a2b5dee5e3
parent 2086 8e4992e0f147
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/etherlab/etherlab_ext.c	Sat Jun 23 09:08:13 2018 +0200
@@ -0,0 +1,56 @@
+/*
+
+Template C code used to produce target Ethercat C code.
+
+Copyright (C) 2011-2014: Laurent BESSARD, Edouard TISSERANT
+
+Distributed under the terms of the GNU Lesser General Public License as
+published by the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+See COPYING file for copyrights details.
+
+*/
+
+#include "iec_types_all.h"
+
+#define FREE 0
+#define ACQUIRED 1
+#define ANSWERED 2
+
+long SDOLock = FREE;
+extern long AtomicCompareExchange(long* atomicvar,long compared, long exchange);
+
+int AcquireSDOLock() {
+	return AtomicCompareExchange(&SDOLock, FREE, ACQUIRED) == FREE;
+}
+
+void SDOAnswered() {
+	AtomicCompareExchange(&SDOLock, ACQUIRED, ANSWERED);
+}
+
+int HasAnswer() {
+	return SDOLock == ANSWERED;
+}
+
+void ReleaseSDOLock() {
+	AtomicCompareExchange(&SDOLock, ANSWERED, FREE);
+}
+
+int __init_etherlab_ext()
+{
+    SDOLock = FREE;
+    return 0;
+}
+
+void __cleanup_etherlab_ext()
+{
+}
+
+void __retrieve_etherlab_ext()
+{
+}
+
+void __publish_etherlab_ext()
+{
+}