--- 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)