targets/plc_debug.c
changeset 477 f66a092b6e74
parent 458 dfc6164e4022
child 483 bc26c42d2eec
equal deleted inserted replaced
476:92f449479084 477:f66a092b6e74
   144     }
   144     }
   145 }
   145 }
   146 
   146 
   147 #define __RegisterDebugVariable_case_t(TYPENAME) \
   147 #define __RegisterDebugVariable_case_t(TYPENAME) \
   148         case TYPENAME##_ENUM :\
   148         case TYPENAME##_ENUM :\
   149             ((__IEC_##TYPENAME##_t *)varp)->flags |= __IEC_DEBUG_FLAG;\
   149             ((__IEC_##TYPENAME##_t *)varp)->flags |= flags;\
       
   150             if(force)\
       
   151              ((__IEC_##TYPENAME##_t *)varp)->value = *((TYPENAME *)force);\
   150             break;
   152             break;
   151 #define __RegisterDebugVariable_case_p(TYPENAME)\
   153 #define __RegisterDebugVariable_case_p(TYPENAME)\
   152         case TYPENAME##_P_ENUM :\
   154         case TYPENAME##_P_ENUM :\
   153             ((__IEC_##TYPENAME##_p *)varp)->flags |= __IEC_DEBUG_FLAG;\
   155             ((__IEC_##TYPENAME##_p *)varp)->flags |= flags;\
   154             break;
   156             if(force)\
   155 void RegisterDebugVariable(int idx)
   157              ((__IEC_##TYPENAME##_p *)varp)->fvalue = *((TYPENAME *)force);\
       
   158             break;
       
   159 void RegisterDebugVariable(int idx, void* force)
   156 {
   160 {
   157     void *varp = NULL;
   161     void *varp = NULL;
       
   162     unsigned char flags = force ? __IEC_DEBUG_FLAG | __IEC_FORCE_FLAG : __IEC_DEBUG_FLAG;
   158     switch(__find_variable(idx, &varp)){
   163     switch(__find_variable(idx, &varp)){
   159         ANY(__RegisterDebugVariable_case_t)
   164         ANY(__RegisterDebugVariable_case_t)
   160         ANY(__RegisterDebugVariable_case_p)
   165         ANY(__RegisterDebugVariable_case_p)
   161     default:
   166     default:
   162         break;
   167         break;
   163     }
   168     }
   164 }
   169 }
   165 
   170 
   166 #define __ResetDebugVariablesIterator_case_t(TYPENAME) \
   171 #define __ResetDebugVariablesIterator_case_t(TYPENAME) \
   167         case TYPENAME##_ENUM :\
   172         case TYPENAME##_ENUM :\
   168             ((__IEC_##TYPENAME##_t *)varp)->flags &= ~__IEC_DEBUG_FLAG;\
   173             ((__IEC_##TYPENAME##_t *)varp)->flags &= ~(__IEC_DEBUG_FLAG|__IEC_FORCE_FLAG);\
   169             break;
   174             break;
   170 
   175 
   171 #define __ResetDebugVariablesIterator_case_p(TYPENAME)\
   176 #define __ResetDebugVariablesIterator_case_p(TYPENAME)\
   172         case TYPENAME##_P_ENUM :\
   177         case TYPENAME##_P_ENUM :\
   173             ((__IEC_##TYPENAME##_p *)varp)->flags &= ~__IEC_DEBUG_FLAG;\
   178             ((__IEC_##TYPENAME##_p *)varp)->flags &= ~(__IEC_DEBUG_FLAG|__IEC_FORCE_FLAG);\
   174             break;
   179             break;
   175 
   180 
   176 void ResetDebugVariablesIterator(void* varp, __IEC_types_enum vartype)
   181 void ResetDebugVariablesIterator(void* varp, __IEC_types_enum vartype)
   177 {
   182 {
   178     /* force debug flag to 0*/
   183     /* force debug flag to 0*/