etherlab/etherlab_ext.c
author Andrey Skvortsov <andrej.skvortzov@gmail.com>
Wed, 29 Aug 2018 18:58:51 +0300
changeset 2302 69fefac5760e
parent 2165 02a2b5dee5e3
permissions -rw-r--r--
Fix non-usable toolbar on wxPython with GTK3+ in PLCOpenEditor

this problem is related to 'Fix non-usable toolbar on wxPython with
GTK3+' (5927710b). This problem does not happen in Beremiz because
additional necessary self.AUIManager.Update() is called
BeremizIDE. Therefore minimal change in the mentioned commit was
enough for Beremiz, but is not enough for PLCOpenEditor.
/*

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()
{
}