mqtt/mqtt_template.c
changeset 4019 ad2b84071881
parent 4018 fa60dde482ca
child 4020 205d5379b35e
equal deleted inserted replaced
4018:fa60dde482ca 4019:ad2b84071881
    67 #define printf_fmt_LREAL  "%Lf"
    67 #define printf_fmt_LREAL  "%Lf"
    68 #define printf_fmt_STRING "%.*Q"
    68 #define printf_fmt_STRING "%.*Q"
    69 
    69 
    70 #define printf_fmt_separator ", "
    70 #define printf_fmt_separator ", "
    71 
    71 
    72 #define printf_fmt_SIMPLE(C_type, name, _A) #name " : " printf_fmt_##C_type
    72 #define printf_fmt_SIMPLE(C_type, C_name, name, _A) #name " : " printf_fmt_##C_type
    73 #define printf_fmt_OBJECT(C_type, name, _A) #name " : {{ " TYPE_##C_type(printf_fmt, _A) " }}"
    73 #define printf_fmt_OBJECT(C_type, C_name, name, _A) #name " : {{ " TYPE_##C_type(printf_fmt, _A) " }}"
    74 
    74 
    75 #define scanf_fmt_BOOL   "%B"
    75 #define scanf_fmt_BOOL   "%B"
    76 #define scanf_fmt_SINT   "%hhd"
    76 #define scanf_fmt_SINT   "%hhd"
    77 #define scanf_fmt_USINT  "%uhhd"
    77 #define scanf_fmt_USINT  "%uhhd"
    78 #define scanf_fmt_INT    "%hd" 
    78 #define scanf_fmt_INT    "%hd" 
    85 #define scanf_fmt_LREAL  "%Lf"
    85 #define scanf_fmt_LREAL  "%Lf"
    86 #define scanf_fmt_STRING "%M"
    86 #define scanf_fmt_STRING "%M"
    87 
    87 
    88 #define scanf_fmt_separator ", "
    88 #define scanf_fmt_separator ", "
    89 
    89 
    90 #define scanf_fmt_SIMPLE(C_type, name, _A) #name " : " scanf_fmt_##C_type
    90 #define scanf_fmt_SIMPLE(C_type, C_name, name, _A) #name " : " scanf_fmt_##C_type
    91 #define scanf_fmt_OBJECT(C_type, name, _A) #name " : {{ " TYPE_##C_type(scanf_fmt, _A) " }}"
    91 #define scanf_fmt_OBJECT(C_type, C_name, name, _A) #name " : {{ " TYPE_##C_type(scanf_fmt, _A) " }}"
    92 
    92 
    93 #define   scanf_arg_BOOL(name, data_ptr) &data_ptr->name
    93 #define   scanf_arg_BOOL(name, data_ptr) &data_ptr->name
    94 #define   scanf_arg_SINT(name, data_ptr) &data_ptr->name
    94 #define   scanf_arg_SINT(name, data_ptr) &data_ptr->name
    95 #define  scanf_arg_USINT(name, data_ptr) &data_ptr->name
    95 #define  scanf_arg_USINT(name, data_ptr) &data_ptr->name
    96 #define    scanf_arg_INT(name, data_ptr) &data_ptr->name
    96 #define    scanf_arg_INT(name, data_ptr) &data_ptr->name
   103 #define  scanf_arg_LREAL(name, data_ptr) &data_ptr->name
   103 #define  scanf_arg_LREAL(name, data_ptr) &data_ptr->name
   104 #define scanf_arg_STRING(name, data_ptr) scan_string, &data_ptr->name 
   104 #define scanf_arg_STRING(name, data_ptr) scan_string, &data_ptr->name 
   105 
   105 
   106 #define scanf_args_separator ,
   106 #define scanf_args_separator ,
   107 
   107 
   108 #define scanf_args_SIMPLE(C_type, name, data_ptr) scanf_arg_##C_type(name, data_ptr)
   108 #define scanf_args_SIMPLE(C_type, C_name, name, data_ptr) scanf_arg_##C_type(C_name, data_ptr)
   109 #define scanf_args_OBJECT(C_type, name, data_ptr) TYPE_##C_type(scanf_args, (&data_ptr->name))
   109 #define scanf_args_OBJECT(C_type, C_name, name, data_ptr) TYPE_##C_type(scanf_args, (&data_ptr->C_name))
   110 
   110 
   111 #define   printf_arg_BOOL(name, data_ptr) data_ptr->name
   111 #define   printf_arg_BOOL(name, data_ptr) data_ptr->name
   112 #define   printf_arg_SINT(name, data_ptr) data_ptr->name
   112 #define   printf_arg_SINT(name, data_ptr) data_ptr->name
   113 #define  printf_arg_USINT(name, data_ptr) data_ptr->name
   113 #define  printf_arg_USINT(name, data_ptr) data_ptr->name
   114 #define    printf_arg_INT(name, data_ptr) data_ptr->name
   114 #define    printf_arg_INT(name, data_ptr) data_ptr->name
   121 #define  printf_arg_LREAL(name, data_ptr) data_ptr->name
   121 #define  printf_arg_LREAL(name, data_ptr) data_ptr->name
   122 #define printf_arg_STRING(name, data_ptr) data_ptr->name.len, data_ptr->name.body 
   122 #define printf_arg_STRING(name, data_ptr) data_ptr->name.len, data_ptr->name.body 
   123 
   123 
   124 #define printf_args_separator ,
   124 #define printf_args_separator ,
   125 
   125 
   126 #define printf_args_SIMPLE(C_type, name, data_ptr) printf_arg_##C_type(name, data_ptr)
   126 #define printf_args_SIMPLE(C_type, C_name, name, data_ptr) printf_arg_##C_type(C_name, data_ptr)
   127 #define printf_args_OBJECT(C_type, name, data_ptr) TYPE_##C_type(printf_args, (&data_ptr->name))
   127 #define printf_args_OBJECT(C_type, C_name, name, data_ptr) TYPE_##C_type(printf_args, (&data_ptr->C_name))
   128 
   128 
   129 static void scan_string(const char *str, int len, void *user_data) {{
   129 static void scan_string(const char *str, int len, void *user_data) {{
   130 	IEC_STRING *iecstr = (IEC_STRING*)user_data;
   130 	IEC_STRING *iecstr = (IEC_STRING*)user_data;
   131 	__strlen_t ieclen = len > STR_MAX_LEN ? STR_MAX_LEN : len;
   131 	__strlen_t ieclen = len > STR_MAX_LEN ? STR_MAX_LEN : len;
   132     printf("%.*s", len, str);
   132     printf("%.*s", len, str);