py_ext/PythonFileCTNMixin.py
changeset 1160 e9e9d3193894
parent 1154 da9ccfceff31
child 1315 ff14a66bbd12
equal deleted inserted replaced
1159:950787298c96 1160:e9e9d3193894
   125 IEC_%(IECtype)s __%(name)s_wbuffer;
   125 IEC_%(IECtype)s __%(name)s_wbuffer;
   126 long __%(name)s_rlock = 0;
   126 long __%(name)s_rlock = 0;
   127 long __%(name)s_wlock = 0;
   127 long __%(name)s_wlock = 0;
   128 int __%(name)s_wbuffer_written = 0;
   128 int __%(name)s_wbuffer_written = 0;
   129 void __SafeGetPLCGlob_%(name)s(IEC_%(IECtype)s *pvalue){
   129 void __SafeGetPLCGlob_%(name)s(IEC_%(IECtype)s *pvalue){
   130     IEC_%(IECtype)s res;
       
   131     while(AtomicCompareExchange(&__%(name)s_rlock, 0, 1));
   130     while(AtomicCompareExchange(&__%(name)s_rlock, 0, 1));
   132     *pvalue = __%(name)s_rbuffer;
   131     *pvalue = __%(name)s_rbuffer;
   133     AtomicCompareExchange((long*)&__%(name)s_rlock, 1, 0);
   132     AtomicCompareExchange((long*)&__%(name)s_rlock, 1, 0);
   134 }
   133 }
   135 __SafeSetPLCGlob_%(name)s(IEC_%(IECtype)s *value){
   134 void __SafeSetPLCGlob_%(name)s(IEC_%(IECtype)s *value){
   136     while(AtomicCompareExchange(&__%(name)s_wlock, 0, 1));
   135     while(AtomicCompareExchange(&__%(name)s_wlock, 0, 1));
   137     __%(name)s_wbuffer = *value;
   136     __%(name)s_wbuffer = *value;
   138     __%(name)s_wbuffer_written = 1;
   137     __%(name)s_wbuffer_written = 1;
   139     AtomicCompareExchange((long*)&__%(name)s_wlock, 1, 0);
   138     AtomicCompareExchange((long*)&__%(name)s_wlock, 1, 0);
   140 }
   139 }