targets/plc_debug.c
branchsvghmi
changeset 2767 302347f48193
parent 2501 eba2bbb2dd9a
child 2710 aaa1dc426213
equal deleted inserted replaced
2766:3f3b1b8ccba4 2767:302347f48193
    69         if(dsc->type != UNKNOWN_ENUM) 
    69         if(dsc->type != UNKNOWN_ENUM) 
    70             (*fp)(dsc);
    70             (*fp)(dsc);
    71     }
    71     }
    72 }
    72 }
    73 
    73 
    74 #define __Unpack_case_t(TYPENAME) \
    74 #define __Unpack_desc_type dbgvardsc_t
    75         case TYPENAME##_ENUM :\
    75 
    76             *flags = ((__IEC_##TYPENAME##_t *)varp)->flags;\
    76 %(var_access_code)s
    77             forced_value_p = *real_value_p = &((__IEC_##TYPENAME##_t *)varp)->value;\
       
    78             break;
       
    79 
       
    80 #define __Unpack_case_p(TYPENAME)\
       
    81         case TYPENAME##_O_ENUM :\
       
    82             *flags = __IEC_OUTPUT_FLAG;\
       
    83         case TYPENAME##_P_ENUM :\
       
    84             *flags |= ((__IEC_##TYPENAME##_p *)varp)->flags;\
       
    85             *real_value_p = ((__IEC_##TYPENAME##_p *)varp)->value;\
       
    86             forced_value_p = &((__IEC_##TYPENAME##_p *)varp)->fvalue;\
       
    87             break;
       
    88 
       
    89 void* UnpackVar(dbgvardsc_t *dsc, void **real_value_p, char *flags)
       
    90 {
       
    91     void *varp = dsc->ptr;
       
    92     void *forced_value_p = NULL;
       
    93     *flags = 0;
       
    94     /* find data to copy*/
       
    95     switch(dsc->type){
       
    96         __ANY(__Unpack_case_t)
       
    97         __ANY(__Unpack_case_p)
       
    98     default:
       
    99         break;
       
   100     }
       
   101     if (*flags & __IEC_FORCE_FLAG)
       
   102         return forced_value_p;
       
   103     return *real_value_p;
       
   104 }
       
   105 
    77 
   106 void Remind(unsigned int offset, unsigned int count, void * p);
    78 void Remind(unsigned int offset, unsigned int count, void * p);
   107 
    79 
   108 void RemindIterator(dbgvardsc_t *dsc)
    80 void RemindIterator(dbgvardsc_t *dsc)
   109 {
    81 {