mirror of
https://github.com/emqx/neuron.git
synced 2026-10-23 10:22:32 +08:00
support array type
This commit is contained in:
@@ -243,6 +243,7 @@ void neu_driver_cache_update_change(neu_driver_cache_t *cache,
|
||||
case NEU_TYPE_WORD:
|
||||
case NEU_TYPE_DWORD:
|
||||
case NEU_TYPE_LWORD:
|
||||
case NEU_TYPE_ARRAY_CHAR:
|
||||
if (memcmp(&elem->value_old.value, &value.value,
|
||||
sizeof(value.value)) != 0) {
|
||||
elem->changed = true;
|
||||
@@ -260,6 +261,132 @@ void neu_driver_cache_update_change(neu_driver_cache_t *cache,
|
||||
}
|
||||
}
|
||||
break;
|
||||
case NEU_TYPE_ARRAY_BOOL:
|
||||
if (elem->value_old.value.bools.length !=
|
||||
value.value.bools.length) {
|
||||
elem->changed = true;
|
||||
} else {
|
||||
if (memcmp(elem->value_old.value.bools.bools,
|
||||
value.value.bools.bools,
|
||||
value.value.bools.length) != 0) {
|
||||
elem->changed = true;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case NEU_TYPE_ARRAY_INT8:
|
||||
if (elem->value_old.value.i8s.length !=
|
||||
value.value.i8s.length) {
|
||||
elem->changed = true;
|
||||
} else {
|
||||
if (memcmp(elem->value_old.value.i8s.i8s,
|
||||
value.value.i8s.i8s,
|
||||
value.value.i8s.length) != 0) {
|
||||
elem->changed = true;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case NEU_TYPE_ARRAY_INT16:
|
||||
if (elem->value_old.value.i16s.length !=
|
||||
value.value.i16s.length) {
|
||||
elem->changed = true;
|
||||
} else {
|
||||
if (memcmp(elem->value_old.value.i16s.i16s,
|
||||
value.value.i16s.i16s,
|
||||
value.value.i16s.length * sizeof(int16_t)) !=
|
||||
0) {
|
||||
elem->changed = true;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case NEU_TYPE_ARRAY_UINT16:
|
||||
if (elem->value_old.value.u16s.length !=
|
||||
value.value.u16s.length) {
|
||||
elem->changed = true;
|
||||
} else {
|
||||
if (memcmp(elem->value_old.value.u16s.u16s,
|
||||
value.value.u16s.u16s,
|
||||
value.value.u16s.length * sizeof(uint16_t)) !=
|
||||
0) {
|
||||
elem->changed = true;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case NEU_TYPE_ARRAY_INT32:
|
||||
if (elem->value_old.value.i32s.length !=
|
||||
value.value.i32s.length) {
|
||||
elem->changed = true;
|
||||
} else {
|
||||
if (memcmp(elem->value_old.value.i32s.i32s,
|
||||
value.value.i32s.i32s,
|
||||
value.value.i32s.length * sizeof(int32_t)) !=
|
||||
0) {
|
||||
elem->changed = true;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case NEU_TYPE_ARRAY_UINT32:
|
||||
if (elem->value_old.value.u32s.length !=
|
||||
value.value.u32s.length) {
|
||||
elem->changed = true;
|
||||
} else {
|
||||
if (memcmp(elem->value_old.value.u32s.u32s,
|
||||
value.value.u32s.u32s,
|
||||
value.value.u32s.length * sizeof(uint32_t)) !=
|
||||
0) {
|
||||
elem->changed = true;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case NEU_TYPE_ARRAY_INT64:
|
||||
if (elem->value_old.value.i64s.length !=
|
||||
value.value.i64s.length) {
|
||||
elem->changed = true;
|
||||
} else {
|
||||
if (memcmp(elem->value_old.value.i64s.i64s,
|
||||
value.value.i64s.i64s,
|
||||
value.value.i64s.length * sizeof(int64_t)) !=
|
||||
0) {
|
||||
elem->changed = true;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case NEU_TYPE_ARRAY_UINT64:
|
||||
if (elem->value_old.value.u64s.length !=
|
||||
value.value.u64s.length) {
|
||||
elem->changed = true;
|
||||
} else {
|
||||
if (memcmp(elem->value_old.value.u64s.u64s,
|
||||
value.value.u64s.u64s,
|
||||
value.value.u64s.length * sizeof(uint64_t)) !=
|
||||
0) {
|
||||
elem->changed = true;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case NEU_TYPE_ARRAY_FLOAT:
|
||||
if (elem->value_old.value.f32s.length !=
|
||||
value.value.f32s.length) {
|
||||
elem->changed = true;
|
||||
} else {
|
||||
if (memcmp(elem->value_old.value.f32s.f32s,
|
||||
value.value.f32s.f32s,
|
||||
value.value.f32s.length * sizeof(float)) != 0) {
|
||||
elem->changed = true;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case NEU_TYPE_ARRAY_DOUBLE:
|
||||
if (elem->value_old.value.f64s.length !=
|
||||
value.value.f64s.length) {
|
||||
elem->changed = true;
|
||||
} else {
|
||||
if (memcmp(elem->value_old.value.f64s.f64s,
|
||||
value.value.f64s.f64s,
|
||||
value.value.f64s.length * sizeof(double)) != 0) {
|
||||
elem->changed = true;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case NEU_TYPE_CUSTOM: {
|
||||
if (json_equal(elem->value_old.value.json, value.value.json) !=
|
||||
0) {
|
||||
@@ -325,6 +452,7 @@ void neu_driver_cache_update_change(neu_driver_cache_t *cache,
|
||||
case NEU_TYPE_WORD:
|
||||
case NEU_TYPE_DWORD:
|
||||
case NEU_TYPE_LWORD:
|
||||
case NEU_TYPE_ARRAY_CHAR:
|
||||
if (memcmp(&elem->value.value, &value.value,
|
||||
sizeof(value.value)) != 0) {
|
||||
elem->changed = true;
|
||||
@@ -342,6 +470,116 @@ void neu_driver_cache_update_change(neu_driver_cache_t *cache,
|
||||
}
|
||||
}
|
||||
break;
|
||||
case NEU_TYPE_ARRAY_BOOL:
|
||||
if (elem->value.value.bools.length !=
|
||||
value.value.bools.length) {
|
||||
elem->changed = true;
|
||||
} else {
|
||||
if (memcmp(elem->value.value.bools.bools,
|
||||
value.value.bools.bools,
|
||||
value.value.bools.length) != 0) {
|
||||
elem->changed = true;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case NEU_TYPE_ARRAY_INT8:
|
||||
if (elem->value.value.i8s.length != value.value.i8s.length) {
|
||||
elem->changed = true;
|
||||
} else {
|
||||
if (memcmp(elem->value.value.i8s.i8s, value.value.i8s.i8s,
|
||||
value.value.i8s.length) != 0) {
|
||||
elem->changed = true;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case NEU_TYPE_ARRAY_INT16:
|
||||
if (elem->value.value.i16s.length != value.value.i16s.length) {
|
||||
elem->changed = true;
|
||||
} else {
|
||||
if (memcmp(
|
||||
elem->value.value.i16s.i16s, value.value.i16s.i16s,
|
||||
value.value.i16s.length * sizeof(int16_t)) != 0) {
|
||||
elem->changed = true;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case NEU_TYPE_ARRAY_UINT16:
|
||||
if (elem->value.value.u16s.length != value.value.u16s.length) {
|
||||
elem->changed = true;
|
||||
} else {
|
||||
if (memcmp(
|
||||
elem->value.value.u16s.u16s, value.value.u16s.u16s,
|
||||
value.value.u16s.length * sizeof(uint16_t)) != 0) {
|
||||
elem->changed = true;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case NEU_TYPE_ARRAY_INT32:
|
||||
if (elem->value.value.i32s.length != value.value.i32s.length) {
|
||||
elem->changed = true;
|
||||
} else {
|
||||
if (memcmp(
|
||||
elem->value.value.i32s.i32s, value.value.i32s.i32s,
|
||||
value.value.i32s.length * sizeof(int32_t)) != 0) {
|
||||
elem->changed = true;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case NEU_TYPE_ARRAY_UINT32:
|
||||
if (elem->value.value.u32s.length != value.value.u32s.length) {
|
||||
elem->changed = true;
|
||||
} else {
|
||||
if (memcmp(
|
||||
elem->value.value.u32s.u32s, value.value.u32s.u32s,
|
||||
value.value.u32s.length * sizeof(uint32_t)) != 0) {
|
||||
elem->changed = true;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case NEU_TYPE_ARRAY_INT64:
|
||||
if (elem->value.value.i64s.length != value.value.i64s.length) {
|
||||
elem->changed = true;
|
||||
} else {
|
||||
if (memcmp(
|
||||
elem->value.value.i64s.i64s, value.value.i64s.i64s,
|
||||
value.value.i64s.length * sizeof(int64_t)) != 0) {
|
||||
elem->changed = true;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case NEU_TYPE_ARRAY_UINT64:
|
||||
if (elem->value.value.u64s.length != value.value.u64s.length) {
|
||||
elem->changed = true;
|
||||
} else {
|
||||
if (memcmp(
|
||||
elem->value.value.u64s.u64s, value.value.u64s.u64s,
|
||||
value.value.u64s.length * sizeof(uint64_t)) != 0) {
|
||||
elem->changed = true;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case NEU_TYPE_ARRAY_FLOAT:
|
||||
if (elem->value.value.f32s.length != value.value.f32s.length) {
|
||||
elem->changed = true;
|
||||
} else {
|
||||
if (memcmp(elem->value.value.f32s.f32s,
|
||||
value.value.f32s.f32s,
|
||||
value.value.f32s.length * sizeof(float)) != 0) {
|
||||
elem->changed = true;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case NEU_TYPE_ARRAY_DOUBLE:
|
||||
if (elem->value.value.f64s.length != value.value.f64s.length) {
|
||||
elem->changed = true;
|
||||
} else {
|
||||
if (memcmp(elem->value.value.f64s.f64s,
|
||||
value.value.f64s.f64s,
|
||||
value.value.f64s.length * sizeof(double)) != 0) {
|
||||
elem->changed = true;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case NEU_TYPE_PTR: {
|
||||
if (elem->value.value.ptr.length != value.value.ptr.length) {
|
||||
elem->changed = true;
|
||||
@@ -487,6 +725,7 @@ int neu_driver_cache_meta_get(neu_driver_cache_t *cache, const char *group,
|
||||
case NEU_TYPE_STRING:
|
||||
case NEU_TYPE_TIME:
|
||||
case NEU_TYPE_DATA_AND_TIME:
|
||||
case NEU_TYPE_ARRAY_CHAR:
|
||||
memcpy(value->value.value.str, elem->value.value.str,
|
||||
sizeof(elem->value.value.str));
|
||||
break;
|
||||
@@ -496,6 +735,57 @@ int neu_driver_cache_meta_get(neu_driver_cache_t *cache, const char *group,
|
||||
elem->value.value.bytes.bytes,
|
||||
elem->value.value.bytes.length);
|
||||
break;
|
||||
case NEU_TYPE_ARRAY_BOOL:
|
||||
value->value.value.bools.length = elem->value.value.bools.length;
|
||||
memcpy(value->value.value.bools.bools,
|
||||
elem->value.value.bools.bools,
|
||||
elem->value.value.bools.length);
|
||||
break;
|
||||
case NEU_TYPE_ARRAY_INT8:
|
||||
value->value.value.i8s.length = elem->value.value.i8s.length;
|
||||
memcpy(value->value.value.i8s.i8s, elem->value.value.i8s.i8s,
|
||||
elem->value.value.i8s.length);
|
||||
break;
|
||||
case NEU_TYPE_ARRAY_INT16:
|
||||
value->value.value.i16s.length = elem->value.value.i16s.length;
|
||||
memcpy(value->value.value.i16s.i16s, elem->value.value.i16s.i16s,
|
||||
elem->value.value.i16s.length * sizeof(int16_t));
|
||||
break;
|
||||
case NEU_TYPE_ARRAY_UINT16:
|
||||
value->value.value.u16s.length = elem->value.value.u16s.length;
|
||||
memcpy(value->value.value.u16s.u16s, elem->value.value.u16s.u16s,
|
||||
elem->value.value.u16s.length * sizeof(uint16_t));
|
||||
break;
|
||||
case NEU_TYPE_ARRAY_INT32:
|
||||
value->value.value.i32s.length = elem->value.value.i32s.length;
|
||||
memcpy(value->value.value.i32s.i32s, elem->value.value.i32s.i32s,
|
||||
elem->value.value.i32s.length * sizeof(int32_t));
|
||||
break;
|
||||
case NEU_TYPE_ARRAY_UINT32:
|
||||
value->value.value.u32s.length = elem->value.value.u32s.length;
|
||||
memcpy(value->value.value.u32s.u32s, elem->value.value.u32s.u32s,
|
||||
elem->value.value.u32s.length * sizeof(uint32_t));
|
||||
break;
|
||||
case NEU_TYPE_ARRAY_INT64:
|
||||
value->value.value.i64s.length = elem->value.value.i64s.length;
|
||||
memcpy(value->value.value.i64s.i64s, elem->value.value.i64s.i64s,
|
||||
elem->value.value.i64s.length * sizeof(int64_t));
|
||||
break;
|
||||
case NEU_TYPE_ARRAY_UINT64:
|
||||
value->value.value.u64s.length = elem->value.value.u64s.length;
|
||||
memcpy(value->value.value.u64s.u64s, elem->value.value.u64s.u64s,
|
||||
elem->value.value.u64s.length * sizeof(uint64_t));
|
||||
break;
|
||||
case NEU_TYPE_ARRAY_FLOAT:
|
||||
value->value.value.f32s.length = elem->value.value.f32s.length;
|
||||
memcpy(value->value.value.f32s.f32s, elem->value.value.f32s.f32s,
|
||||
elem->value.value.f32s.length * sizeof(float));
|
||||
break;
|
||||
case NEU_TYPE_ARRAY_DOUBLE:
|
||||
value->value.value.f64s.length = elem->value.value.f64s.length;
|
||||
memcpy(value->value.value.f64s.f64s, elem->value.value.f64s.f64s,
|
||||
elem->value.value.f64s.length * sizeof(double));
|
||||
break;
|
||||
case NEU_TYPE_PTR:
|
||||
value->value.value.ptr.length = elem->value.value.ptr.length;
|
||||
value->value.value.ptr.type = elem->value.value.ptr.type;
|
||||
@@ -574,6 +864,7 @@ int neu_driver_cache_meta_get_changed(neu_driver_cache_t *cache,
|
||||
case NEU_TYPE_STRING:
|
||||
case NEU_TYPE_TIME:
|
||||
case NEU_TYPE_DATA_AND_TIME:
|
||||
case NEU_TYPE_ARRAY_CHAR:
|
||||
memcpy(value->value.value.str, elem->value.value.str,
|
||||
sizeof(elem->value.value.str));
|
||||
break;
|
||||
@@ -583,6 +874,57 @@ int neu_driver_cache_meta_get_changed(neu_driver_cache_t *cache,
|
||||
elem->value.value.bytes.bytes,
|
||||
elem->value.value.bytes.length);
|
||||
break;
|
||||
case NEU_TYPE_ARRAY_BOOL:
|
||||
value->value.value.bools.length = elem->value.value.bools.length;
|
||||
memcpy(value->value.value.bools.bools,
|
||||
elem->value.value.bools.bools,
|
||||
elem->value.value.bools.length);
|
||||
break;
|
||||
case NEU_TYPE_ARRAY_INT8:
|
||||
value->value.value.i8s.length = elem->value.value.i8s.length;
|
||||
memcpy(value->value.value.i8s.i8s, elem->value.value.i8s.i8s,
|
||||
elem->value.value.i8s.length);
|
||||
break;
|
||||
case NEU_TYPE_ARRAY_INT16:
|
||||
value->value.value.i16s.length = elem->value.value.i16s.length;
|
||||
memcpy(value->value.value.i16s.i16s, elem->value.value.i16s.i16s,
|
||||
elem->value.value.i16s.length * sizeof(int16_t));
|
||||
break;
|
||||
case NEU_TYPE_ARRAY_UINT16:
|
||||
value->value.value.u16s.length = elem->value.value.u16s.length;
|
||||
memcpy(value->value.value.u16s.u16s, elem->value.value.u16s.u16s,
|
||||
elem->value.value.u16s.length * sizeof(uint16_t));
|
||||
break;
|
||||
case NEU_TYPE_ARRAY_INT32:
|
||||
value->value.value.i32s.length = elem->value.value.i32s.length;
|
||||
memcpy(value->value.value.i32s.i32s, elem->value.value.i32s.i32s,
|
||||
elem->value.value.i32s.length * sizeof(int32_t));
|
||||
break;
|
||||
case NEU_TYPE_ARRAY_UINT32:
|
||||
value->value.value.u32s.length = elem->value.value.u32s.length;
|
||||
memcpy(value->value.value.u32s.u32s, elem->value.value.u32s.u32s,
|
||||
elem->value.value.u32s.length * sizeof(uint32_t));
|
||||
break;
|
||||
case NEU_TYPE_ARRAY_INT64:
|
||||
value->value.value.i64s.length = elem->value.value.i64s.length;
|
||||
memcpy(value->value.value.i64s.i64s, elem->value.value.i64s.i64s,
|
||||
elem->value.value.i64s.length * sizeof(int64_t));
|
||||
break;
|
||||
case NEU_TYPE_ARRAY_UINT64:
|
||||
value->value.value.u64s.length = elem->value.value.u64s.length;
|
||||
memcpy(value->value.value.u64s.u64s, elem->value.value.u64s.u64s,
|
||||
elem->value.value.u64s.length * sizeof(uint64_t));
|
||||
break;
|
||||
case NEU_TYPE_ARRAY_FLOAT:
|
||||
value->value.value.f32s.length = elem->value.value.f32s.length;
|
||||
memcpy(value->value.value.f32s.f32s, elem->value.value.f32s.f32s,
|
||||
elem->value.value.f32s.length * sizeof(float));
|
||||
break;
|
||||
case NEU_TYPE_ARRAY_DOUBLE:
|
||||
value->value.value.f64s.length = elem->value.value.f64s.length;
|
||||
memcpy(value->value.value.f64s.f64s, elem->value.value.f64s.f64s,
|
||||
elem->value.value.f64s.length * sizeof(double));
|
||||
break;
|
||||
case NEU_TYPE_PTR:
|
||||
value->value.value.ptr.length = elem->value.value.ptr.length;
|
||||
value->value.value.ptr.type = elem->value.value.ptr.type;
|
||||
|
||||
@@ -1117,6 +1117,131 @@ int neu_adapter_driver_write_tags(neu_adapter_driver_t *driver,
|
||||
(double) cmd->tags[i].value.value.i64;
|
||||
}
|
||||
}
|
||||
if (tag->type == NEU_TYPE_BYTES) {
|
||||
if (cmd->tags[i].value.type == NEU_TYPE_ARRAY_INT64) {
|
||||
for (int j = 0; j < cmd->tags[i].value.value.i64s.length;
|
||||
j++) {
|
||||
cmd->tags[i].value.value.bytes.bytes[j] =
|
||||
(uint8_t) cmd->tags[i].value.value.i64s.i64s[j];
|
||||
}
|
||||
for (int j = cmd->tags[i].value.value.i64s.length;
|
||||
j < NEU_VALUE_SIZE; j++) {
|
||||
cmd->tags[i].value.value.bytes.bytes[j] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (tag->type == NEU_TYPE_ARRAY_INT8) {
|
||||
if (cmd->tags[i].value.type == NEU_TYPE_ARRAY_INT64) {
|
||||
for (int j = 0; j < cmd->tags[i].value.value.i64s.length;
|
||||
j++) {
|
||||
cmd->tags[i].value.value.i8s.i8s[j] =
|
||||
(int8_t) cmd->tags[i].value.value.i64s.i64s[j];
|
||||
}
|
||||
for (int j = cmd->tags[i].value.value.i64s.length;
|
||||
j < NEU_VALUE_SIZE; j++) {
|
||||
cmd->tags[i].value.value.i8s.i8s[j] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (tag->type == NEU_TYPE_ARRAY_INT16) {
|
||||
if (cmd->tags[i].value.type == NEU_TYPE_ARRAY_INT64) {
|
||||
for (int j = 0; j < cmd->tags[i].value.value.i64s.length;
|
||||
j++) {
|
||||
cmd->tags[i].value.value.i16s.i16s[j] =
|
||||
(int16_t) cmd->tags[i].value.value.i64s.i64s[j];
|
||||
}
|
||||
for (int j = cmd->tags[i].value.value.i64s.length;
|
||||
j < NEU_VALUE_SIZE; j++) {
|
||||
cmd->tags[i].value.value.i16s.i16s[j] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (tag->type == NEU_TYPE_ARRAY_UINT16) {
|
||||
if (cmd->tags[i].value.type == NEU_TYPE_ARRAY_INT64) {
|
||||
for (int j = 0; j < cmd->tags[i].value.value.i64s.length;
|
||||
j++) {
|
||||
cmd->tags[i].value.value.u16s.u16s[j] =
|
||||
(uint16_t) cmd->tags[i].value.value.i64s.i64s[j];
|
||||
}
|
||||
for (int j = cmd->tags[i].value.value.i64s.length;
|
||||
j < NEU_VALUE_SIZE; j++) {
|
||||
cmd->tags[i].value.value.u16s.u16s[j] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (tag->type == NEU_TYPE_ARRAY_INT32) {
|
||||
if (cmd->tags[i].value.type == NEU_TYPE_ARRAY_INT64) {
|
||||
for (int j = 0; j < cmd->tags[i].value.value.i64s.length;
|
||||
j++) {
|
||||
cmd->tags[i].value.value.i32s.i32s[j] =
|
||||
(int32_t) cmd->tags[i].value.value.i64s.i64s[j];
|
||||
}
|
||||
for (int j = cmd->tags[i].value.value.i64s.length;
|
||||
j < NEU_VALUE_SIZE; j++) {
|
||||
cmd->tags[i].value.value.i32s.i32s[j] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (tag->type == NEU_TYPE_ARRAY_UINT32) {
|
||||
if (cmd->tags[i].value.type == NEU_TYPE_ARRAY_INT64) {
|
||||
for (int j = 0; j < cmd->tags[i].value.value.i64s.length;
|
||||
j++) {
|
||||
cmd->tags[i].value.value.u32s.u32s[j] =
|
||||
(uint32_t) cmd->tags[i].value.value.i64s.i64s[j];
|
||||
}
|
||||
for (int j = cmd->tags[i].value.value.i64s.length;
|
||||
j < NEU_VALUE_SIZE; j++) {
|
||||
cmd->tags[i].value.value.u32s.u32s[j] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (tag->type == NEU_TYPE_ARRAY_UINT64) {
|
||||
if (cmd->tags[i].value.type == NEU_TYPE_ARRAY_INT64) {
|
||||
for (int j = 0; j < cmd->tags[i].value.value.i64s.length;
|
||||
j++) {
|
||||
cmd->tags[i].value.value.u64s.u64s[i] =
|
||||
(uint64_t) cmd->tags[i].value.value.i64s.i64s[j];
|
||||
}
|
||||
for (int j = cmd->tags[i].value.value.i64s.length;
|
||||
j < NEU_VALUE_SIZE; j++) {
|
||||
cmd->tags[i].value.value.u64s.u64s[j] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (tag->type == NEU_TYPE_ARRAY_FLOAT) {
|
||||
if (cmd->tags[i].value.type == NEU_TYPE_ARRAY_DOUBLE) {
|
||||
for (int j = 0; j < cmd->tags[i].value.value.f64s.length;
|
||||
j++) {
|
||||
cmd->tags[i].value.value.f32s.f32s[j] =
|
||||
(float) cmd->tags[i].value.value.f64s.f64s[j];
|
||||
}
|
||||
for (int j = cmd->tags[i].value.value.f64s.length;
|
||||
j < NEU_VALUE_SIZE; j++) {
|
||||
cmd->tags[i].value.value.f32s.f32s[j] = 0;
|
||||
}
|
||||
}
|
||||
if (cmd->tags[i].value.type == NEU_TYPE_ARRAY_INT64) {
|
||||
for (int j = 0; j < cmd->tags[i].value.value.f64s.length;
|
||||
j++) {
|
||||
cmd->tags[i].value.value.f32s.f32s[j] =
|
||||
(float) cmd->tags[i].value.value.i64s.i64s[j];
|
||||
}
|
||||
for (int j = cmd->tags[i].value.value.f64s.length;
|
||||
j < NEU_VALUE_SIZE; j++) {
|
||||
cmd->tags[i].value.value.f32s.f32s[j] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (tag->type == NEU_TYPE_ARRAY_DOUBLE) {
|
||||
if (cmd->tags[i].value.type == NEU_TYPE_ARRAY_INT64) {
|
||||
for (int j = 0; j < cmd->tags[i].value.value.i64s.length;
|
||||
j++) {
|
||||
cmd->tags[i].value.value.f64s.f64s[j] =
|
||||
(double) cmd->tags[i].value.value.i64s.i64s[j];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (tag->decimal != 0) {
|
||||
cal_decimal(tag->type, cmd->tags[i].value.type,
|
||||
&cmd->tags[i].value.value, tag->decimal);
|
||||
@@ -1232,6 +1357,181 @@ int neu_adapter_driver_write_gtags(neu_adapter_driver_t *driver,
|
||||
(double) cmd->groups[i].tags[k].value.value.i64;
|
||||
}
|
||||
}
|
||||
if (tag->type == NEU_TYPE_BYTES) {
|
||||
if (cmd->groups[i].tags[k].value.type ==
|
||||
NEU_TYPE_ARRAY_INT64) {
|
||||
for (int j = 0;
|
||||
j < cmd->groups[i].tags[k].value.value.i64s.length;
|
||||
j++) {
|
||||
cmd->groups[i].tags[k].value.value.bytes.bytes[j] =
|
||||
(uint8_t) cmd->groups[i]
|
||||
.tags[k]
|
||||
.value.value.i64s.i64s[j];
|
||||
}
|
||||
for (int j =
|
||||
cmd->groups[i].tags[k].value.value.i64s.length;
|
||||
j < NEU_VALUE_SIZE; j++) {
|
||||
cmd->groups[i].tags[k].value.value.bytes.bytes[j] =
|
||||
0;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (tag->type == NEU_TYPE_ARRAY_INT8) {
|
||||
if (cmd->groups[i].tags[k].value.type ==
|
||||
NEU_TYPE_ARRAY_INT64) {
|
||||
for (int j = 0;
|
||||
j < cmd->groups[i].tags[k].value.value.i64s.length;
|
||||
j++) {
|
||||
cmd->groups[i].tags[k].value.value.i8s.i8s[j] =
|
||||
(int8_t) cmd->groups[i]
|
||||
.tags[k]
|
||||
.value.value.i64s.i64s[j];
|
||||
}
|
||||
for (int j =
|
||||
cmd->groups[i].tags[k].value.value.i64s.length;
|
||||
j < NEU_VALUE_SIZE; j++) {
|
||||
cmd->groups[i].tags[k].value.value.i8s.i8s[j] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (tag->type == NEU_TYPE_ARRAY_INT16) {
|
||||
if (cmd->groups[i].tags[k].value.type ==
|
||||
NEU_TYPE_ARRAY_INT64) {
|
||||
for (int j = 0;
|
||||
j < cmd->groups[i].tags[k].value.value.i64s.length;
|
||||
j++) {
|
||||
cmd->groups[i].tags[k].value.value.i16s.i16s[j] =
|
||||
(int16_t) cmd->groups[i]
|
||||
.tags[k]
|
||||
.value.value.i64s.i64s[j];
|
||||
}
|
||||
for (int j =
|
||||
cmd->groups[i].tags[k].value.value.i64s.length;
|
||||
j < NEU_VALUE_SIZE; j++) {
|
||||
cmd->groups[i].tags[k].value.value.i16s.i16s[j] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (tag->type == NEU_TYPE_ARRAY_UINT16) {
|
||||
if (cmd->groups[i].tags[k].value.type ==
|
||||
NEU_TYPE_ARRAY_INT64) {
|
||||
for (int j = 0;
|
||||
j < cmd->groups[i].tags[k].value.value.i64s.length;
|
||||
j++) {
|
||||
cmd->groups[i].tags[k].value.value.u16s.u16s[j] =
|
||||
(uint16_t) cmd->groups[i]
|
||||
.tags[k]
|
||||
.value.value.i64s.i64s[j];
|
||||
}
|
||||
for (int j =
|
||||
cmd->groups[i].tags[k].value.value.i64s.length;
|
||||
j < NEU_VALUE_SIZE; j++) {
|
||||
cmd->groups[i].tags[k].value.value.u16s.u16s[j] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (tag->type == NEU_TYPE_ARRAY_INT32) {
|
||||
if (cmd->groups[i].tags[k].value.type ==
|
||||
NEU_TYPE_ARRAY_INT64) {
|
||||
for (int j = 0;
|
||||
j < cmd->groups[i].tags[k].value.value.i64s.length;
|
||||
j++) {
|
||||
cmd->groups[i].tags[k].value.value.i32s.i32s[j] =
|
||||
(int32_t) cmd->groups[i]
|
||||
.tags[k]
|
||||
.value.value.i64s.i64s[j];
|
||||
}
|
||||
for (int j =
|
||||
cmd->groups[i].tags[k].value.value.i64s.length;
|
||||
j < NEU_VALUE_SIZE; j++) {
|
||||
cmd->groups[i].tags[k].value.value.i32s.i32s[j] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (tag->type == NEU_TYPE_ARRAY_UINT32) {
|
||||
if (cmd->groups[i].tags[k].value.type ==
|
||||
NEU_TYPE_ARRAY_INT64) {
|
||||
for (int j = 0;
|
||||
j < cmd->groups[i].tags[k].value.value.i64s.length;
|
||||
j++) {
|
||||
cmd->groups[i].tags[k].value.value.u32s.u32s[j] =
|
||||
(uint32_t) cmd->groups[i]
|
||||
.tags[k]
|
||||
.value.value.i64s.i64s[j];
|
||||
}
|
||||
for (int j =
|
||||
cmd->groups[i].tags[k].value.value.i64s.length;
|
||||
j < NEU_VALUE_SIZE; j++) {
|
||||
cmd->groups[i].tags[k].value.value.u32s.u32s[j] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (tag->type == NEU_TYPE_ARRAY_UINT64) {
|
||||
if (cmd->groups[i].tags[k].value.type ==
|
||||
NEU_TYPE_ARRAY_INT64) {
|
||||
for (int j = 0;
|
||||
j < cmd->groups[i].tags[k].value.value.i64s.length;
|
||||
j++) {
|
||||
cmd->groups[i].tags[k].value.value.u64s.u64s[j] =
|
||||
(uint64_t) cmd->groups[i]
|
||||
.tags[k]
|
||||
.value.value.i64s.i64s[j];
|
||||
}
|
||||
for (int j =
|
||||
cmd->groups[i].tags[k].value.value.i64s.length;
|
||||
j < NEU_VALUE_SIZE; j++) {
|
||||
cmd->groups[i].tags[k].value.value.u64s.u64s[j] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (tag->type == NEU_TYPE_ARRAY_FLOAT) {
|
||||
if (cmd->groups[i].tags[k].value.type ==
|
||||
NEU_TYPE_ARRAY_DOUBLE) {
|
||||
for (int j = 0;
|
||||
j < cmd->groups[i].tags[k].value.value.f64s.length;
|
||||
j++) {
|
||||
cmd->groups[i].tags[k].value.value.f32s.f32s[j] =
|
||||
(float) cmd->groups[i]
|
||||
.tags[k]
|
||||
.value.value.f64s.f64s[j];
|
||||
}
|
||||
for (int j =
|
||||
cmd->groups[i].tags[k].value.value.f64s.length;
|
||||
j < NEU_VALUE_SIZE; j++) {
|
||||
cmd->groups[i].tags[k].value.value.f32s.f32s[j] = 0;
|
||||
}
|
||||
}
|
||||
if (cmd->groups[i].tags[k].value.type ==
|
||||
NEU_TYPE_ARRAY_INT64) {
|
||||
for (int j = 0;
|
||||
j < cmd->groups[i].tags[k].value.value.f64s.length;
|
||||
j++) {
|
||||
cmd->groups[i].tags[k].value.value.f32s.f32s[j] =
|
||||
(float) cmd->groups[i]
|
||||
.tags[k]
|
||||
.value.value.i64s.i64s[j];
|
||||
}
|
||||
for (int j =
|
||||
cmd->groups[i].tags[k].value.value.f64s.length;
|
||||
j < NEU_VALUE_SIZE; j++) {
|
||||
cmd->groups[i].tags[k].value.value.f32s.f32s[j] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (tag->type == NEU_TYPE_ARRAY_DOUBLE) {
|
||||
if (cmd->groups[i].tags[k].value.type ==
|
||||
NEU_TYPE_ARRAY_INT64) {
|
||||
for (int j = 0;
|
||||
j < cmd->groups[i].tags[k].value.value.i64s.length;
|
||||
j++) {
|
||||
cmd->groups[i].tags[k].value.value.f64s.f64s[j] =
|
||||
(double) cmd->groups[i]
|
||||
.tags[k]
|
||||
.value.value.i64s.i64s[j];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (tag->decimal != 0) {
|
||||
cal_decimal(tag->type, cmd->groups[i].tags[k].value.type,
|
||||
&cmd->groups[i].tags[k].value.value,
|
||||
@@ -1338,6 +1638,120 @@ int neu_adapter_driver_write_tag(neu_adapter_driver_t *driver,
|
||||
cmd->value.value.d64 = (double) cmd->value.value.i64;
|
||||
}
|
||||
}
|
||||
if (tag->type == NEU_TYPE_BYTES) {
|
||||
if (cmd->value.type == NEU_TYPE_ARRAY_INT64) {
|
||||
for (int i = 0; i < cmd->value.value.i64s.length; i++) {
|
||||
cmd->value.value.bytes.bytes[i] =
|
||||
(uint8_t) cmd->value.value.i64s.i64s[i];
|
||||
}
|
||||
for (int i = cmd->value.value.i64s.length; i < NEU_VALUE_SIZE;
|
||||
i++) {
|
||||
cmd->value.value.bytes.bytes[i] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (tag->type == NEU_TYPE_ARRAY_INT8) {
|
||||
if (cmd->value.type == NEU_TYPE_ARRAY_INT64) {
|
||||
for (int i = 0; i < cmd->value.value.i64s.length; i++) {
|
||||
cmd->value.value.i8s.i8s[i] =
|
||||
(int8_t) cmd->value.value.i64s.i64s[i];
|
||||
}
|
||||
for (int i = cmd->value.value.i64s.length; i < NEU_VALUE_SIZE;
|
||||
i++) {
|
||||
cmd->value.value.i8s.i8s[i] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (tag->type == NEU_TYPE_ARRAY_INT16) {
|
||||
if (cmd->value.type == NEU_TYPE_ARRAY_INT64) {
|
||||
for (int i = 0; i < cmd->value.value.i64s.length; i++) {
|
||||
cmd->value.value.i16s.i16s[i] =
|
||||
(int16_t) cmd->value.value.i64s.i64s[i];
|
||||
}
|
||||
for (int i = cmd->value.value.i64s.length; i < NEU_VALUE_SIZE;
|
||||
i++) {
|
||||
cmd->value.value.i16s.i16s[i] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (tag->type == NEU_TYPE_ARRAY_UINT16) {
|
||||
if (cmd->value.type == NEU_TYPE_ARRAY_INT64) {
|
||||
for (int i = 0; i < cmd->value.value.i64s.length; i++) {
|
||||
cmd->value.value.u16s.u16s[i] =
|
||||
(uint16_t) cmd->value.value.i64s.i64s[i];
|
||||
}
|
||||
for (int i = cmd->value.value.i64s.length; i < NEU_VALUE_SIZE;
|
||||
i++) {
|
||||
cmd->value.value.u16s.u16s[i] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (tag->type == NEU_TYPE_ARRAY_INT32) {
|
||||
if (cmd->value.type == NEU_TYPE_ARRAY_INT64) {
|
||||
for (int i = 0; i < cmd->value.value.i64s.length; i++) {
|
||||
cmd->value.value.i32s.i32s[i] =
|
||||
(int32_t) cmd->value.value.i64s.i64s[i];
|
||||
}
|
||||
for (int i = cmd->value.value.i64s.length; i < NEU_VALUE_SIZE;
|
||||
i++) {
|
||||
cmd->value.value.i32s.i32s[i] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (tag->type == NEU_TYPE_ARRAY_UINT32) {
|
||||
if (cmd->value.type == NEU_TYPE_ARRAY_INT64) {
|
||||
for (int i = 0; i < cmd->value.value.i64s.length; i++) {
|
||||
cmd->value.value.u32s.u32s[i] =
|
||||
(uint32_t) cmd->value.value.i64s.i64s[i];
|
||||
}
|
||||
for (int i = cmd->value.value.i64s.length; i < NEU_VALUE_SIZE;
|
||||
i++) {
|
||||
cmd->value.value.u32s.u32s[i] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (tag->type == NEU_TYPE_ARRAY_UINT64) {
|
||||
if (cmd->value.type == NEU_TYPE_ARRAY_INT64) {
|
||||
for (int i = 0; i < cmd->value.value.i64s.length; i++) {
|
||||
cmd->value.value.u64s.u64s[i] =
|
||||
(uint64_t) cmd->value.value.i64s.i64s[i];
|
||||
}
|
||||
for (int i = cmd->value.value.i64s.length; i < NEU_VALUE_SIZE;
|
||||
i++) {
|
||||
cmd->value.value.u64s.u64s[i] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (tag->type == NEU_TYPE_ARRAY_FLOAT) {
|
||||
if (cmd->value.type == NEU_TYPE_ARRAY_DOUBLE) {
|
||||
for (int i = 0; i < cmd->value.value.f64s.length; i++) {
|
||||
cmd->value.value.f32s.f32s[i] =
|
||||
(float) cmd->value.value.f64s.f64s[i];
|
||||
}
|
||||
for (int i = cmd->value.value.f64s.length; i < NEU_VALUE_SIZE;
|
||||
i++) {
|
||||
cmd->value.value.f32s.f32s[i] = 0;
|
||||
}
|
||||
}
|
||||
if (cmd->value.type == NEU_TYPE_ARRAY_INT64) {
|
||||
for (int i = 0; i < cmd->value.value.f64s.length; i++) {
|
||||
cmd->value.value.f32s.f32s[i] =
|
||||
(float) cmd->value.value.i64s.i64s[i];
|
||||
}
|
||||
for (int i = cmd->value.value.i64s.length; i < NEU_VALUE_SIZE;
|
||||
i++) {
|
||||
cmd->value.value.f32s.f32s[i] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (tag->type == NEU_TYPE_ARRAY_DOUBLE) {
|
||||
if (cmd->value.type == NEU_TYPE_ARRAY_INT64) {
|
||||
for (int i = 0; i < cmd->value.value.i64s.length; i++) {
|
||||
cmd->value.value.f64s.f64s[i] =
|
||||
(double) cmd->value.value.i64s.i64s[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (tag->decimal != 0) {
|
||||
cal_decimal(tag->type, cmd->value.type, &cmd->value.value,
|
||||
|
||||
+127
-8
@@ -383,8 +383,47 @@ void neu_json_decode_write_req_free(neu_json_write_req_t *req)
|
||||
if (req->t == NEU_JSON_STR) {
|
||||
free(req->value.val_str);
|
||||
}
|
||||
if (req->t == NEU_JSON_BYTES && req->value.val_bytes.length > 0) {
|
||||
free(req->value.val_bytes.bytes);
|
||||
if (req->t == NEU_JSON_ARRAY_INT8 && req->value.val_array_int8.length > 0) {
|
||||
free(req->value.val_array_int8.i8s);
|
||||
}
|
||||
if (req->t == NEU_JSON_ARRAY_UINT8 &&
|
||||
req->value.val_array_uint8.length > 0) {
|
||||
free(req->value.val_array_uint8.u8s);
|
||||
}
|
||||
if (req->t == NEU_JSON_ARRAY_INT16 &&
|
||||
req->value.val_array_int16.length > 0) {
|
||||
free(req->value.val_array_int16.i16s);
|
||||
}
|
||||
if (req->t == NEU_JSON_ARRAY_UINT16 &&
|
||||
req->value.val_array_uint16.length > 0) {
|
||||
free(req->value.val_array_uint16.u16s);
|
||||
}
|
||||
if (req->t == NEU_JSON_ARRAY_INT32 &&
|
||||
req->value.val_array_int32.length > 0) {
|
||||
free(req->value.val_array_int32.i32s);
|
||||
}
|
||||
if (req->t == NEU_JSON_ARRAY_UINT32 &&
|
||||
req->value.val_array_uint32.length > 0) {
|
||||
free(req->value.val_array_uint32.u32s);
|
||||
}
|
||||
if (req->t == NEU_JSON_ARRAY_INT64 &&
|
||||
req->value.val_array_int64.length > 0) {
|
||||
free(req->value.val_array_int64.i64s);
|
||||
}
|
||||
if (req->t == NEU_JSON_ARRAY_UINT64 &&
|
||||
req->value.val_array_uint64.length > 0) {
|
||||
free(req->value.val_array_uint64.u64s);
|
||||
}
|
||||
if (req->t == NEU_JSON_ARRAY_FLOAT &&
|
||||
req->value.val_array_float.length > 0) {
|
||||
free(req->value.val_array_float.f32s);
|
||||
}
|
||||
if (req->t == NEU_JSON_ARRAY_DOUBLE &&
|
||||
req->value.val_array_double.length > 0) {
|
||||
free(req->value.val_array_double.f64s);
|
||||
}
|
||||
if (req->t == NEU_JSON_ARRAY_BOOL && req->value.val_array_bool.length > 0) {
|
||||
free(req->value.val_array_bool.bools);
|
||||
}
|
||||
|
||||
free(req);
|
||||
@@ -503,9 +542,49 @@ void neu_json_decode_write_tags_req_free(neu_json_write_tags_req_t *req)
|
||||
if (req->tags[i].t == NEU_JSON_STR) {
|
||||
free(req->tags[i].value.val_str);
|
||||
}
|
||||
if (req->tags[i].t == NEU_JSON_BYTES &&
|
||||
req->tags[i].value.val_bytes.length > 0) {
|
||||
free(req->tags[i].value.val_bytes.bytes);
|
||||
if (req->tags[i].t == NEU_JSON_ARRAY_INT8 &&
|
||||
req->tags[i].value.val_array_int8.length > 0) {
|
||||
free(req->tags[i].value.val_array_int8.i8s);
|
||||
}
|
||||
if (req->tags[i].t == NEU_JSON_ARRAY_UINT8 &&
|
||||
req->tags[i].value.val_array_uint8.length > 0) {
|
||||
free(req->tags[i].value.val_array_uint8.u8s);
|
||||
}
|
||||
if (req->tags[i].t == NEU_JSON_ARRAY_INT16 &&
|
||||
req->tags[i].value.val_array_int16.length > 0) {
|
||||
free(req->tags[i].value.val_array_int16.i16s);
|
||||
}
|
||||
if (req->tags[i].t == NEU_JSON_ARRAY_UINT16 &&
|
||||
req->tags[i].value.val_array_uint16.length > 0) {
|
||||
free(req->tags[i].value.val_array_uint16.u16s);
|
||||
}
|
||||
if (req->tags[i].t == NEU_JSON_ARRAY_INT32 &&
|
||||
req->tags[i].value.val_array_int32.length > 0) {
|
||||
free(req->tags[i].value.val_array_int32.i32s);
|
||||
}
|
||||
if (req->tags[i].t == NEU_JSON_ARRAY_UINT32 &&
|
||||
req->tags[i].value.val_array_uint32.length > 0) {
|
||||
free(req->tags[i].value.val_array_uint32.u32s);
|
||||
}
|
||||
if (req->tags[i].t == NEU_JSON_ARRAY_INT64 &&
|
||||
req->tags[i].value.val_array_int64.length > 0) {
|
||||
free(req->tags[i].value.val_array_int64.i64s);
|
||||
}
|
||||
if (req->tags[i].t == NEU_JSON_ARRAY_UINT64 &&
|
||||
req->tags[i].value.val_array_uint64.length > 0) {
|
||||
free(req->tags[i].value.val_array_uint64.u64s);
|
||||
}
|
||||
if (req->tags[i].t == NEU_JSON_ARRAY_FLOAT &&
|
||||
req->tags[i].value.val_array_float.length > 0) {
|
||||
free(req->tags[i].value.val_array_float.f32s);
|
||||
}
|
||||
if (req->tags[i].t == NEU_JSON_ARRAY_DOUBLE &&
|
||||
req->tags[i].value.val_array_double.length > 0) {
|
||||
free(req->tags[i].value.val_array_double.f64s);
|
||||
}
|
||||
if (req->tags[i].t == NEU_JSON_ARRAY_BOOL &&
|
||||
req->tags[i].value.val_array_bool.length > 0) {
|
||||
free(req->tags[i].value.val_array_bool.bools);
|
||||
}
|
||||
}
|
||||
free(req->tags);
|
||||
@@ -1171,9 +1250,49 @@ void neu_json_decode_write_gtags_req_free(neu_json_write_gtags_req_t *req)
|
||||
if (req->groups[i].tags[k].t == NEU_JSON_STR) {
|
||||
free(req->groups[i].tags[k].value.val_str);
|
||||
}
|
||||
if (req->groups[i].tags[k].t == NEU_JSON_BYTES &&
|
||||
req->groups[i].tags[k].value.val_bytes.length > 0) {
|
||||
free(req->groups[i].tags[k].value.val_bytes.bytes);
|
||||
if (req->groups[i].tags[k].t == NEU_JSON_ARRAY_INT8 &&
|
||||
req->groups[i].tags[k].value.val_array_int8.length > 0) {
|
||||
free(req->groups[i].tags[k].value.val_array_int8.i8s);
|
||||
}
|
||||
if (req->groups[i].tags[k].t == NEU_JSON_ARRAY_UINT8 &&
|
||||
req->groups[i].tags[k].value.val_array_uint8.length > 0) {
|
||||
free(req->groups[i].tags[k].value.val_array_uint8.u8s);
|
||||
}
|
||||
if (req->groups[i].tags[k].t == NEU_JSON_ARRAY_INT16 &&
|
||||
req->groups[i].tags[k].value.val_array_int16.length > 0) {
|
||||
free(req->groups[i].tags[k].value.val_array_int16.i16s);
|
||||
}
|
||||
if (req->groups[i].tags[k].t == NEU_JSON_ARRAY_UINT16 &&
|
||||
req->groups[i].tags[k].value.val_array_uint16.length > 0) {
|
||||
free(req->groups[i].tags[k].value.val_array_uint16.u16s);
|
||||
}
|
||||
if (req->groups[i].tags[k].t == NEU_JSON_ARRAY_INT32 &&
|
||||
req->groups[i].tags[k].value.val_array_int32.length > 0) {
|
||||
free(req->groups[i].tags[k].value.val_array_int32.i32s);
|
||||
}
|
||||
if (req->groups[i].tags[k].t == NEU_JSON_ARRAY_UINT32 &&
|
||||
req->groups[i].tags[k].value.val_array_uint32.length > 0) {
|
||||
free(req->groups[i].tags[k].value.val_array_uint32.u32s);
|
||||
}
|
||||
if (req->groups[i].tags[k].t == NEU_JSON_ARRAY_INT64 &&
|
||||
req->groups[i].tags[k].value.val_array_int64.length > 0) {
|
||||
free(req->groups[i].tags[k].value.val_array_int64.i64s);
|
||||
}
|
||||
if (req->groups[i].tags[k].t == NEU_JSON_ARRAY_UINT64 &&
|
||||
req->groups[i].tags[k].value.val_array_uint64.length > 0) {
|
||||
free(req->groups[i].tags[k].value.val_array_uint64.u64s);
|
||||
}
|
||||
if (req->groups[i].tags[k].t == NEU_JSON_ARRAY_FLOAT &&
|
||||
req->groups[i].tags[k].value.val_array_float.length > 0) {
|
||||
free(req->groups[i].tags[k].value.val_array_float.f32s);
|
||||
}
|
||||
if (req->groups[i].tags[k].t == NEU_JSON_ARRAY_DOUBLE &&
|
||||
req->groups[i].tags[k].value.val_array_double.length > 0) {
|
||||
free(req->groups[i].tags[k].value.val_array_double.f64s);
|
||||
}
|
||||
if (req->groups[i].tags[k].t == NEU_JSON_ARRAY_BOOL &&
|
||||
req->groups[i].tags[k].value.val_array_bool.length > 0) {
|
||||
free(req->groups[i].tags[k].value.val_array_bool.bools);
|
||||
}
|
||||
}
|
||||
if (req->groups[i].n_tag > 0) {
|
||||
|
||||
+180
-14
@@ -128,15 +128,125 @@ static json_t *encode_object(json_t *object, neu_json_elem_t ele)
|
||||
case NEU_JSON_BOOL:
|
||||
json_object_set_new(ob, ele.name, json_boolean(ele.v.val_bool));
|
||||
break;
|
||||
case NEU_JSON_BYTES: {
|
||||
void *bytes = json_array();
|
||||
case NEU_JSON_ARRAY_BOOL: {
|
||||
void *array = json_array();
|
||||
|
||||
for (int i = 0; i < ele.v.val_bytes.length; i++) {
|
||||
json_array_append_new(bytes,
|
||||
json_integer(ele.v.val_bytes.bytes[i]));
|
||||
for (int i = 0; i < ele.v.val_array_bool.length; i++) {
|
||||
json_array_append_new(array,
|
||||
json_boolean(ele.v.val_array_bool.bools[i]));
|
||||
}
|
||||
|
||||
json_object_set_new(ob, ele.name, bytes);
|
||||
json_object_set_new(ob, ele.name, array);
|
||||
break;
|
||||
}
|
||||
case NEU_JSON_ARRAY_INT8: {
|
||||
void *array = json_array();
|
||||
|
||||
for (int i = 0; i < ele.v.val_array_int8.length; i++) {
|
||||
json_array_append_new(array,
|
||||
json_integer(ele.v.val_array_int8.i8s[i]));
|
||||
}
|
||||
|
||||
json_object_set_new(ob, ele.name, array);
|
||||
break;
|
||||
}
|
||||
case NEU_JSON_ARRAY_UINT8: {
|
||||
void *array = json_array();
|
||||
|
||||
for (int i = 0; i < ele.v.val_array_uint8.length; i++) {
|
||||
json_array_append_new(array,
|
||||
json_integer(ele.v.val_array_uint8.u8s[i]));
|
||||
}
|
||||
|
||||
json_object_set_new(ob, ele.name, array);
|
||||
break;
|
||||
}
|
||||
case NEU_JSON_ARRAY_INT16: {
|
||||
void *array = json_array();
|
||||
|
||||
for (int i = 0; i < ele.v.val_array_int16.length; i++) {
|
||||
json_array_append_new(array,
|
||||
json_integer(ele.v.val_array_int16.i16s[i]));
|
||||
}
|
||||
|
||||
json_object_set_new(ob, ele.name, array);
|
||||
break;
|
||||
}
|
||||
case NEU_JSON_ARRAY_UINT16: {
|
||||
void *array = json_array();
|
||||
|
||||
for (int i = 0; i < ele.v.val_array_uint16.length; i++) {
|
||||
json_array_append_new(array,
|
||||
json_integer(ele.v.val_array_uint16.u16s[i]));
|
||||
}
|
||||
|
||||
json_object_set_new(ob, ele.name, array);
|
||||
break;
|
||||
}
|
||||
case NEU_JSON_ARRAY_INT32: {
|
||||
void *array = json_array();
|
||||
|
||||
for (int i = 0; i < ele.v.val_array_int32.length; i++) {
|
||||
json_array_append_new(array,
|
||||
json_integer(ele.v.val_array_int32.i32s[i]));
|
||||
}
|
||||
|
||||
json_object_set_new(ob, ele.name, array);
|
||||
break;
|
||||
}
|
||||
case NEU_JSON_ARRAY_UINT32: {
|
||||
void *array = json_array();
|
||||
|
||||
for (int i = 0; i < ele.v.val_array_uint32.length; i++) {
|
||||
json_array_append_new(array,
|
||||
json_integer(ele.v.val_array_uint32.u32s[i]));
|
||||
}
|
||||
|
||||
json_object_set_new(ob, ele.name, array);
|
||||
break;
|
||||
}
|
||||
case NEU_JSON_ARRAY_INT64: {
|
||||
void *array = json_array();
|
||||
|
||||
for (int i = 0; i < ele.v.val_array_int64.length; i++) {
|
||||
json_array_append_new(array,
|
||||
json_integer(ele.v.val_array_int64.i64s[i]));
|
||||
}
|
||||
|
||||
json_object_set_new(ob, ele.name, array);
|
||||
break;
|
||||
}
|
||||
case NEU_JSON_ARRAY_UINT64: {
|
||||
void *array = json_array();
|
||||
|
||||
for (int i = 0; i < ele.v.val_array_uint64.length; i++) {
|
||||
json_array_append_new(array,
|
||||
json_integer(ele.v.val_array_uint64.u64s[i]));
|
||||
}
|
||||
|
||||
json_object_set_new(ob, ele.name, array);
|
||||
break;
|
||||
}
|
||||
case NEU_JSON_ARRAY_FLOAT: {
|
||||
void *array = json_array();
|
||||
|
||||
for (int i = 0; i < ele.v.val_array_float.length; i++) {
|
||||
json_array_append_new(array,
|
||||
json_real(ele.v.val_array_float.f32s[i]));
|
||||
}
|
||||
|
||||
json_object_set_new(ob, ele.name, array);
|
||||
break;
|
||||
}
|
||||
case NEU_JSON_ARRAY_DOUBLE: {
|
||||
void *array = json_array();
|
||||
|
||||
for (int i = 0; i < ele.v.val_array_double.length; i++) {
|
||||
json_array_append_new(array,
|
||||
json_real(ele.v.val_array_double.f64s[i]));
|
||||
}
|
||||
|
||||
json_object_set_new(ob, ele.name, array);
|
||||
break;
|
||||
}
|
||||
case NEU_JSON_OBJECT:
|
||||
@@ -181,7 +291,20 @@ static int decode_object(json_t *root, neu_json_elem_t *ele)
|
||||
} else if (json_is_integer(ob)) {
|
||||
ele->t = NEU_JSON_INT;
|
||||
} else if (json_is_array(ob)) {
|
||||
ele->t = NEU_JSON_BYTES;
|
||||
json_t *value = NULL;
|
||||
int index = 0;
|
||||
ele->t = NEU_JSON_ARRAY_INT64;
|
||||
json_array_foreach(ob, index, value)
|
||||
{
|
||||
if (json_is_real(value)) {
|
||||
ele->t = NEU_JSON_ARRAY_DOUBLE;
|
||||
break;
|
||||
}
|
||||
if (json_is_boolean(value)) {
|
||||
ele->t = NEU_JSON_ARRAY_BOOL;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -221,19 +344,62 @@ static int decode_object(json_t *root, neu_json_elem_t *ele)
|
||||
case NEU_JSON_BOOL:
|
||||
ele->v.val_bool = json_boolean_value(ob);
|
||||
break;
|
||||
case NEU_JSON_BYTES: {
|
||||
case NEU_JSON_ARRAY_BOOL: {
|
||||
json_t *value = NULL;
|
||||
|
||||
ele->v.val_bytes.length = json_array_size(ob);
|
||||
if (ele->v.val_bytes.length > 0) {
|
||||
ele->v.val_array_bool.length = json_array_size(ob);
|
||||
if (ele->v.val_array_bool.length > 0) {
|
||||
int index = 0;
|
||||
|
||||
ele->v.val_bytes.bytes =
|
||||
calloc(ele->v.val_bytes.length, sizeof(uint8_t));
|
||||
ele->v.val_array_bool.bools =
|
||||
calloc(ele->v.val_array_bool.length, sizeof(bool));
|
||||
json_array_foreach(ob, index, value)
|
||||
{
|
||||
ele->v.val_bytes.bytes[index] =
|
||||
(uint8_t) json_integer_value(value);
|
||||
ele->v.val_array_bool.bools[index] = json_boolean_value(value);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case NEU_JSON_ARRAY_INT64: {
|
||||
json_t *value = NULL;
|
||||
|
||||
ele->v.val_array_int64.length = json_array_size(ob);
|
||||
if (ele->v.val_array_int64.length > 0) {
|
||||
int index = 0;
|
||||
|
||||
ele->v.val_array_int64.i64s =
|
||||
calloc(ele->v.val_array_int64.length, sizeof(int64_t));
|
||||
json_array_foreach(ob, index, value)
|
||||
{
|
||||
if (json_is_real(value)) {
|
||||
ele->v.val_array_int64.i64s[index] =
|
||||
(int64_t) json_real_value(value);
|
||||
} else {
|
||||
ele->v.val_array_int64.i64s[index] =
|
||||
json_integer_value(value);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case NEU_JSON_ARRAY_DOUBLE: {
|
||||
json_t *value = NULL;
|
||||
|
||||
ele->v.val_array_double.length = json_array_size(ob);
|
||||
if (ele->v.val_array_double.length > 0) {
|
||||
int index = 0;
|
||||
|
||||
ele->v.val_array_double.f64s =
|
||||
calloc(ele->v.val_array_double.length, sizeof(double));
|
||||
json_array_foreach(ob, index, value)
|
||||
{
|
||||
if (json_is_integer(value)) {
|
||||
ele->v.val_array_double.f64s[index] =
|
||||
(double) json_integer_value(value);
|
||||
} else {
|
||||
ele->v.val_array_double.f64s[index] =
|
||||
json_real_value(value);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user