targets/plc_debug.c
changeset 477 f66a092b6e74
parent 458 dfc6164e4022
child 483 bc26c42d2eec
--- a/targets/plc_debug.c	Mon Dec 07 21:27:23 2009 +0100
+++ b/targets/plc_debug.c	Mon Dec 07 22:04:43 2009 +0100
@@ -146,15 +146,20 @@
 
 #define __RegisterDebugVariable_case_t(TYPENAME) \
         case TYPENAME##_ENUM :\
-            ((__IEC_##TYPENAME##_t *)varp)->flags |= __IEC_DEBUG_FLAG;\
+            ((__IEC_##TYPENAME##_t *)varp)->flags |= flags;\
+            if(force)\
+             ((__IEC_##TYPENAME##_t *)varp)->value = *((TYPENAME *)force);\
             break;
 #define __RegisterDebugVariable_case_p(TYPENAME)\
         case TYPENAME##_P_ENUM :\
-            ((__IEC_##TYPENAME##_p *)varp)->flags |= __IEC_DEBUG_FLAG;\
-            break;
-void RegisterDebugVariable(int idx)
+            ((__IEC_##TYPENAME##_p *)varp)->flags |= flags;\
+            if(force)\
+             ((__IEC_##TYPENAME##_p *)varp)->fvalue = *((TYPENAME *)force);\
+            break;
+void RegisterDebugVariable(int idx, void* force)
 {
     void *varp = NULL;
+    unsigned char flags = force ? __IEC_DEBUG_FLAG | __IEC_FORCE_FLAG : __IEC_DEBUG_FLAG;
     switch(__find_variable(idx, &varp)){
         ANY(__RegisterDebugVariable_case_t)
         ANY(__RegisterDebugVariable_case_p)
@@ -165,12 +170,12 @@
 
 #define __ResetDebugVariablesIterator_case_t(TYPENAME) \
         case TYPENAME##_ENUM :\
-            ((__IEC_##TYPENAME##_t *)varp)->flags &= ~__IEC_DEBUG_FLAG;\
+            ((__IEC_##TYPENAME##_t *)varp)->flags &= ~(__IEC_DEBUG_FLAG|__IEC_FORCE_FLAG);\
             break;
 
 #define __ResetDebugVariablesIterator_case_p(TYPENAME)\
         case TYPENAME##_P_ENUM :\
-            ((__IEC_##TYPENAME##_p *)varp)->flags &= ~__IEC_DEBUG_FLAG;\
+            ((__IEC_##TYPENAME##_p *)varp)->flags &= ~(__IEC_DEBUG_FLAG|__IEC_FORCE_FLAG);\
             break;
 
 void ResetDebugVariablesIterator(void* varp, __IEC_types_enum vartype)