scripts/dnp3-gen: update to generate JsonBuilder code

pull/5169/head
Jason Ish 5 years ago committed by Victor Julien
parent 03efbccfe6
commit 85eaa2276c

@ -157,7 +157,7 @@ output_json_dnp3_objects_template = """/* Copyright (C) 2015 Open Information Se
#include "output-json-dnp3-objects.h"
#include "output-json.h"
void OutputJsonDNP3SetItem(json_t *js, DNP3Object *object,
void OutputJsonDNP3SetItem(JsonBuilder *js, DNP3Object *object,
DNP3Point *point)
{
@ -167,20 +167,17 @@ void OutputJsonDNP3SetItem(json_t *js, DNP3Object *object,
DNP3ObjectG{{object.group}}V{{object.variation}} *data = point->data;
{% for field in object.fields %}
{% if is_integer_type(field.type) %}
json_object_set_new(js, "{{field.name}}",
json_integer(data->{{field.name}}));
jb_set_uint(js, "{{field.name}}", data->{{field.name}});
{% elif field.type in ["flt32", "flt64"] %}
json_object_set_new(js, "{{field.name}}",
json_real(data->{{field.name}}));
jb_set_float(js, "{{field.name}}", data->{{field.name}});
{% elif field.type == "bytearray" %}
unsigned long {{field.name}}_b64_len = data->{{field.len_field}} * 2;
uint8_t {{field.name}}_b64[{{field.name}}_b64_len];
Base64Encode(data->{{field.name}}, data->{{field.len_field}},
{{field.name}}_b64, &{{field.name}}_b64_len);
json_object_set_new(js, "data->{{field.name}}",
json_string((char *){{field.name}}_b64));
jb_set_string(js, "data->{{field.name}}", (char *){{field.name}}_b64);
{% elif field.type == "vstr4" %}
json_object_set_new(js, "data->{{field.name}}", SCJsonString(data->{{field.name}}));
jb_set_string(js, "data->{{field.name}}", data->{{field.name}});
{% elif field.type == "chararray" %}
if (data->{{field.len_field}} > 0) {
/* First create a null terminated string as not all versions
@ -188,14 +185,13 @@ void OutputJsonDNP3SetItem(json_t *js, DNP3Object *object,
char tmpbuf[data->{{field.len_field}} + 1];
memcpy(tmpbuf, data->{{field.name}}, data->{{field.len_field}});
tmpbuf[data->{{field.len_field}}] = '\\0';
json_object_set_new(js, "{{field.name}}", SCJsonString(tmpbuf));
jb_set_string(js, "{{field.name}}", tmpbuf);
} else {
json_object_set_new(js, "{{field.name}}", json_string(""));
jb_set_string(js, "{{field.name}}", "");
}
{% elif field.type == "bstr8" %}
{% for field in field.fields %}
json_object_set_new(js, "{{field.name}}",
json_integer(data->{{field.name}}));
jb_set_uint(js, "{{field.name}}", data->{{field.name}});
{% endfor %}
{% else %}
{{ raise("Unhandled datatype: %s" % (field.type)) }}

Loading…
Cancel
Save