diff --git a/src/lib/parameters/flashparams/flashparams.cpp b/src/lib/parameters/flashparams/flashparams.cpp index 4eced1cb39..f5221daf7a 100644 --- a/src/lib/parameters/flashparams/flashparams.cpp +++ b/src/lib/parameters/flashparams/flashparams.cpp @@ -106,7 +106,7 @@ param_export_internal(param_filter_func filter) case PARAM_TYPE_INT32: i = s->val.i; - if (bson_encoder_append_int(&encoder, param_name(s->param), i)) { + if (bson_encoder_append_int32(&encoder, param_name(s->param), i)) { debug("BSON append failed for '%s'", param_name(s->param)); goto out; } diff --git a/src/lib/parameters/parameters.cpp b/src/lib/parameters/parameters.cpp index 0794ca1397..5e21348180 100644 --- a/src/lib/parameters/parameters.cpp +++ b/src/lib/parameters/parameters.cpp @@ -1503,7 +1503,7 @@ static int param_export_internal(int fd, param_filter_func filter) const int32_t i = s->val.i; PX4_DEBUG("exporting: %s (%d) size: %lu val: %" PRIi32, name, s->param, (long unsigned int)size, i); - if (bson_encoder_append_int(&encoder, name, i) != 0) { + if (bson_encoder_append_int32(&encoder, name, i) != 0) { PX4_ERR("BSON append failed for '%s'", name); goto out; } diff --git a/src/lib/parameters/tinybson/tinybson.cpp b/src/lib/parameters/tinybson/tinybson.cpp index 8a475b9db4..c9b2a0f0be 100644 --- a/src/lib/parameters/tinybson/tinybson.cpp +++ b/src/lib/parameters/tinybson/tinybson.cpp @@ -575,28 +575,28 @@ int bson_encoder_append_bool(bson_encoder_t encoder, const char *name, bool valu } int -bson_encoder_append_int(bson_encoder_t encoder, const char *name, int64_t value) +bson_encoder_append_int32(bson_encoder_t encoder, const char *name, int32_t value) { - bool result; - CODER_CHECK(encoder); - /* use the smallest encoding that will hold the value */ - if (value == (int32_t)value) { - debug("encoding %lld as int32", value); - result = write_int8(encoder, BSON_INT32) || - write_name(encoder, name) || - write_int32(encoder, value); - - } else { - debug("encoding %lld as int64", value); - result = write_int8(encoder, BSON_INT64) || - write_name(encoder, name) || - write_int64(encoder, value); + if (write_int8(encoder, BSON_INT32) || + write_name(encoder, name) || + write_int32(encoder, value)) { + CODER_KILL(encoder, "write error on BSON_INT32"); } - if (result) { - CODER_KILL(encoder, "write error on BSON_INT"); + return 0; +} + +int +bson_encoder_append_int64(bson_encoder_t encoder, const char *name, int64_t value) +{ + CODER_CHECK(encoder); + + if (write_int8(encoder, BSON_INT64) || + write_name(encoder, name) || + write_int64(encoder, value)) { + CODER_KILL(encoder, "write error on BSON_INT64"); } return 0; @@ -613,7 +613,6 @@ bson_encoder_append_double(bson_encoder_t encoder, const char *name, double valu CODER_KILL(encoder, "write error on BSON_DOUBLE"); } - return 0; } diff --git a/src/lib/parameters/tinybson/tinybson.h b/src/lib/parameters/tinybson/tinybson.h index bf7ca4e0ac..eb370454ee 100644 --- a/src/lib/parameters/tinybson/tinybson.h +++ b/src/lib/parameters/tinybson/tinybson.h @@ -256,13 +256,22 @@ __EXPORT void *bson_encoder_buf_data(bson_encoder_t encoder); __EXPORT int bson_encoder_append_bool(bson_encoder_t encoder, const char *name, bool value); /** - * Append an integer to the encoded stream. + * Append an int32 to the encoded stream. * * @param encoder Encoder state. * @param name Node name. * @param value Value to be encoded. */ -__EXPORT int bson_encoder_append_int(bson_encoder_t encoder, const char *name, int64_t value); +__EXPORT int bson_encoder_append_int32(bson_encoder_t encoder, const char *name, int32_t value); + +/** + * Append an int64 to the encoded stream. + * + * @param encoder Encoder state. + * @param name Node name. + * @param value Value to be encoded. + */ +__EXPORT int bson_encoder_append_int64(bson_encoder_t encoder, const char *name, int64_t value); /** * Append a double to the encoded stream diff --git a/src/systemcmds/tests/test_bson.cpp b/src/systemcmds/tests/test_bson.cpp index 04140d4803..caaaa3474f 100644 --- a/src/systemcmds/tests/test_bson.cpp +++ b/src/systemcmds/tests/test_bson.cpp @@ -65,12 +65,12 @@ encode(bson_encoder_t encoder) return 1; } - if (bson_encoder_append_int(encoder, "int1", sample_small_int) != 0) { + if (bson_encoder_append_int32(encoder, "int1", sample_small_int) != 0) { PX4_ERR("FAIL: encoder: append int failed"); return 1; } - if (bson_encoder_append_int(encoder, "int2", sample_big_int) != 0) { + if (bson_encoder_append_int64(encoder, "int2", sample_big_int) != 0) { PX4_ERR("FAIL: encoder: append int failed"); return 1; }