Browse Source

tinybson: explicitly append int32 or int64

master
Daniel Agar 3 years ago
parent
commit
80ef6e19df
  1. 2
      src/lib/parameters/flashparams/flashparams.cpp
  2. 2
      src/lib/parameters/parameters.cpp
  3. 35
      src/lib/parameters/tinybson/tinybson.cpp
  4. 13
      src/lib/parameters/tinybson/tinybson.h
  5. 4
      src/systemcmds/tests/test_bson.cpp

2
src/lib/parameters/flashparams/flashparams.cpp

@ -106,7 +106,7 @@ param_export_internal(param_filter_func filter) @@ -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;
}

2
src/lib/parameters/parameters.cpp

@ -1503,7 +1503,7 @@ static int param_export_internal(int fd, param_filter_func filter) @@ -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;
}

35
src/lib/parameters/tinybson/tinybson.cpp

@ -575,28 +575,28 @@ int bson_encoder_append_bool(bson_encoder_t encoder, const char *name, bool valu @@ -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 @@ -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;
}

13
src/lib/parameters/tinybson/tinybson.h

@ -256,13 +256,22 @@ __EXPORT void *bson_encoder_buf_data(bson_encoder_t encoder); @@ -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

4
src/systemcmds/tests/test_bson.cpp

@ -65,12 +65,12 @@ encode(bson_encoder_t encoder) @@ -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;
}

Loading…
Cancel
Save