targets/plc_debug.c
changeset 3887 2df45e4bd500
parent 3735 c9a1a8ede8d9
equal deleted inserted replaced
3886:2adfa4c60bff 3887:2df45e4bd500
   346 #ifndef TARGET_ONLINE_DEBUG_DISABLE
   346 #ifndef TARGET_ONLINE_DEBUG_DISABLE
   347 
   347 
   348 #define TRACE_LIST_OVERFLOW    1
   348 #define TRACE_LIST_OVERFLOW    1
   349 #define FORCE_LIST_OVERFLOW    2
   349 #define FORCE_LIST_OVERFLOW    2
   350 #define FORCE_BUFFER_OVERFLOW  3
   350 #define FORCE_BUFFER_OVERFLOW  3
       
   351 #define FORCE_INVALID  4
       
   352 
       
   353 #define __ForceVariable_checksize(TYPENAME)                                             \
       
   354     if(sizeof(TYPENAME) != force_size) {                                                \
       
   355         error_code = FORCE_BUFFER_OVERFLOW;                                             \
       
   356         goto error_cleanup;                                                             \
       
   357     }
   351 
   358 
   352 #define __ForceVariable_case_t(TYPENAME)                                                \
   359 #define __ForceVariable_case_t(TYPENAME)                                                \
   353         case TYPENAME##_ENUM :                                                          \
   360         case TYPENAME##_ENUM :                                                          \
       
   361             __ForceVariable_checksize(TYPENAME)                                         \
   354             /* add to force_list*/                                                      \
   362             /* add to force_list*/                                                      \
   355             force_list_addvar_cursor->dbgvardsc_index = idx;                            \
   363             force_list_addvar_cursor->dbgvardsc_index = idx;                            \
   356             ((__IEC_##TYPENAME##_t *)varp)->flags |= __IEC_FORCE_FLAG;                  \
   364             ((__IEC_##TYPENAME##_t *)varp)->flags |= __IEC_FORCE_FLAG;                  \
   357             ((__IEC_##TYPENAME##_t *)varp)->value = *((TYPENAME *)force);               \
   365             ((__IEC_##TYPENAME##_t *)varp)->value = *((TYPENAME *)force);               \
   358             break;
   366             break;
   359 #define __ForceVariable_case_p(TYPENAME)                                                \
   367 #define __ForceVariable_case_p(TYPENAME)                                                \
   360         case TYPENAME##_P_ENUM :                                                        \
   368         case TYPENAME##_P_ENUM :                                                        \
   361         case TYPENAME##_O_ENUM :                                                        \
   369         case TYPENAME##_O_ENUM :                                                        \
       
   370             __ForceVariable_checksize(TYPENAME)                                         \
   362             {                                                                           \
   371             {                                                                           \
   363                 char *next_cursor = force_buffer_cursor + sizeof(TYPENAME);             \
   372                 char *next_cursor = force_buffer_cursor + sizeof(TYPENAME);             \
   364                 if(next_cursor <= force_buffer_end ){                                   \
   373                 if(next_cursor <= force_buffer_end ){                                   \
   365                     /* add to force_list*/                                              \
   374                     /* add to force_list*/                                              \
   366                     force_list_addvar_cursor->dbgvardsc_index = idx;                    \
   375                     force_list_addvar_cursor->dbgvardsc_index = idx;                    \
   387             break;
   396             break;
   388 
   397 
   389 
   398 
   390 void ResetDebugVariables(void);
   399 void ResetDebugVariables(void);
   391 
   400 
   392 int RegisterDebugVariable(dbgvardsc_index_t idx, void* force)
   401 int RegisterDebugVariable(dbgvardsc_index_t idx, void* force, size_t force_size)
   393 {
   402 {
   394     int error_code = 0;
   403     int error_code = 0;
   395     if(idx < sizeof(dbgvardsc)/sizeof(dbgvardsc_t)){
   404     if(idx < sizeof(dbgvardsc)/sizeof(dbgvardsc_t)){
   396         /* add to trace_list, inc trace_list_addvar_cursor*/
   405         /* add to trace_list, inc trace_list_addvar_cursor*/
   397         if(trace_list_addvar_cursor <= trace_list_end){
   406         if(trace_list_addvar_cursor <= trace_list_end){