targets/plc_debug.c
changeset 2501 eba2bbb2dd9a
parent 2190 b7d803fc44db
child 2632 534387caf43d
--- a/targets/plc_debug.c	Sun Jan 06 02:00:07 2019 +0300
+++ b/targets/plc_debug.c	Sun Jan 06 03:11:39 2019 +0300
@@ -10,8 +10,7 @@
  *  
  * 
  * */
-
-#ifdef TARGET_DEBUG_DISABLE
+#ifdef TARGET_DEBUG_AND_RETAIN_DISABLE
 
 void __init_debug    (void){}
 void __cleanup_debug (void){}
@@ -26,6 +25,7 @@
 #include <string.h>
 #include <stdio.h>
 
+#ifndef TARGET_ONLINE_DEBUG_DISABLE
 #define BUFFER_SIZE %(buffer_size)d
 
 /* Atomically accessed variable for buffer state */
@@ -38,6 +38,8 @@
 
 /* Buffer's cursor*/
 static char* buffer_cursor = debug_buffer;
+#endif
+
 static unsigned int retain_offset = 0;
 /***
  * Declare programs 
@@ -126,9 +128,12 @@
 void __init_debug(void)
 {
     /* init local static vars */
+#ifndef TARGET_ONLINE_DEBUG_DISABLE	
     buffer_cursor = debug_buffer;
+    buffer_state = BUFFER_FREE;
+#endif
+
     retain_offset = 0;
-    buffer_state = BUFFER_FREE;
     InitRetain();
     /* Iterate over all variables to fill debug buffer */
     if(CheckRetainBuffer()){
@@ -147,8 +152,11 @@
 
 void __cleanup_debug(void)
 {
+#ifndef TARGET_ONLINE_DEBUG_DISABLE	
     buffer_cursor = debug_buffer;
     InitiateDebugTransfer();
+#endif    
+
     CleanupRetain();
 }
 
@@ -169,6 +177,8 @@
 
     if(flags & ( __IEC_DEBUG_FLAG | __IEC_RETAIN_FLAG)){
         USINT size = __get_type_enum_size(dsc->type);
+
+#ifndef TARGET_ONLINE_DEBUG_DISABLE	
         if(flags & __IEC_DEBUG_FLAG){
             /* copy visible variable to buffer */;
             if(do_debug){
@@ -192,6 +202,8 @@
                 memcpy(real_value_p, visible_value_p, size);
             }
         }
+#endif	
+
         if(flags & __IEC_RETAIN_FLAG){
             /* compute next cursor positon*/
             unsigned int next_retain_offset = retain_offset + size;
@@ -248,6 +260,8 @@
 {
     retain_offset = 0;
     InValidateRetainBuffer();
+    
+#ifndef TARGET_ONLINE_DEBUG_DISABLE 
     /* Check there is no running debugger re-configuration */
     if(TryEnterDebugSection()){
         /* Lock buffer */
@@ -273,13 +287,16 @@
             __for_each_variable_do(RetainIterator);
         }
         LeaveDebugSection();
-    }else{
+    }else
+#endif
+    {
         /* when not debugging, do only retain */
         __for_each_variable_do(RetainIterator);
     }
     ValidateRetainBuffer();
 }
 
+#ifndef TARGET_ONLINE_DEBUG_DISABLE
 #define __RegisterDebugVariable_case_t(TYPENAME) \
         case TYPENAME##_ENUM :\
             ((__IEC_##TYPENAME##_t *)varp)->flags |= flags;\
@@ -362,6 +379,6 @@
     }
     return wait_error;
 }
-
-#endif
-
+#endif
+#endif
+