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*/ |