From f345de1a4f24d4698ee69cc94f82eabfa3204afb Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Tue, 2 May 2017 19:49:56 +0200 Subject: [PATCH] bootloader: protobuf - add pb_add_bytes --- micropython/bootloader/protobuf.c | 20 +++++++++++--------- micropython/bootloader/protobuf.h | 1 + 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/micropython/bootloader/protobuf.c b/micropython/bootloader/protobuf.c index d5f688f032..20c1be4d4a 100644 --- a/micropython/bootloader/protobuf.c +++ b/micropython/bootloader/protobuf.c @@ -49,20 +49,22 @@ static void pb_varint(PB_CTX *ctx, uint32_t val) void pb_add_bool(PB_CTX *ctx, uint32_t field_number, bool val) { - field_number = (field_number << 3) | 0; + pb_add_varint(ctx, field_number, val); +} + +void pb_add_bytes(PB_CTX *ctx, uint32_t field_number, const uint8_t *val, uint32_t len) +{ + field_number = (field_number << 3) | 2; pb_varint(ctx, field_number); - pb_append(ctx, val); + pb_varint(ctx, len); + for (uint32_t i = 0; i < len; i++) { + pb_append(ctx, val[i]); + } } void pb_add_string(PB_CTX *ctx, uint32_t field_number, const char *val) { - field_number = (field_number << 3) | 2; - pb_varint(ctx, field_number); - size_t len = strlen(val); - pb_varint(ctx, len); - for (size_t i = 0; i < len; i++) { - pb_append(ctx, val[i]); - } + pb_add_bytes(ctx, field_number, (const uint8_t *)val, strlen(val)); } void pb_add_varint(PB_CTX *ctx, uint32_t field_number, uint32_t val) diff --git a/micropython/bootloader/protobuf.h b/micropython/bootloader/protobuf.h index 611e5fd90b..8bff045dac 100644 --- a/micropython/bootloader/protobuf.h +++ b/micropython/bootloader/protobuf.h @@ -16,6 +16,7 @@ void pb_start(PB_CTX *ctx, uint16_t msg_id); void pb_end(PB_CTX *ctx); void pb_add_bool(PB_CTX *ctx, uint32_t field_number, bool val); +void pb_add_bytes(PB_CTX *ctx, uint32_t field_number, const uint8_t *val, uint32_t len); void pb_add_string(PB_CTX *ctx, uint32_t field_number, const char *val); void pb_add_varint(PB_CTX *ctx, uint32_t field_number, uint32_t val);