--- a/tests/python/c_code@c_ext/cfile.xml Thu May 02 09:42:14 2013 +0200
+++ b/tests/python/c_code@c_ext/cfile.xml Thu May 02 10:45:07 2013 +0200
@@ -11,6 +11,8 @@
<![CDATA[volatile long Lock=0;
volatile char PtoC=1,CtoP=2;
+extern long AtomicCompareExchange(long*,long, long);
+
int Simple_C_Call(int val){
return val+1;
}
@@ -23,10 +25,10 @@
beremiz' runtime implementation */
int res = 0;
- if(!AtomicCompareExchange(&Lock, 0, 1)){
+ if(!AtomicCompareExchange((long*)&Lock, 0, 1)){
PtoC=toC;
*fromC=CtoP;
- AtomicCompareExchange(&Lock, 1, 0);
+ AtomicCompareExchange((long*)&Lock, 1, 0);
res=1;
}
printf("C code called by Python: toC %d fromC %d\n",toC,*fromC);
@@ -36,11 +38,10 @@
int PLC_C_Call(char fromPLC, char *toPLC){
/* PLC also have to be realy carefull not to
conflict with asynchronous python access */
- int res;
- if(!AtomicCompareExchange(&Lock, 0, 1)){
+ if(!AtomicCompareExchange((long*)&Lock, 0, 1)){
CtoP = fromPLC;
*toPLC = PtoC;
- AtomicCompareExchange(&Lock, 1, 0);
+ AtomicCompareExchange((long*)&Lock, 1, 0);
return 1;
}
return 0;
@@ -56,9 +57,9 @@
<![CDATA[]]>
</retrieveFunction>
<publishFunction>
-<![CDATA[if(!AtomicCompareExchange(&Lock, 0, 1)){
+<![CDATA[if(!AtomicCompareExchange((long*)&Lock, 0, 1)){
TestInput = CtoP + PtoC + TestOutput;
- AtomicCompareExchange(&Lock, 1, 0);
+ AtomicCompareExchange((long*)&Lock, 1, 0);
}]]>
</publishFunction>
</CFile>
--- a/tests/python/plc.xml Thu May 02 09:42:14 2013 +0200
+++ b/tests/python/plc.xml Thu May 02 10:45:07 2013 +0200
@@ -8,7 +8,7 @@
productVersion="0.0"
creationDateTime="2008-12-14T16:21:19"/>
<contentHeader name="Beremiz Python Support Tests"
- modificationDateTime="2013-04-25T11:47:30">
+ modificationDateTime="2013-05-02T10:44:19">
<coordinateInfo>
<pageSize x="1024" y="1024"/>
<fbd>
@@ -1161,6 +1161,7 @@
{{
char toPLC;
char fromPLC = GetFbVar(IN);
+ extern int PLC_C_Call(char, char *);
if(PLC_C_Call(fromPLC, &toPLC)){
SetFbVar(OUT, toPLC);
}