Import of the watch repository from Pebble

This commit is contained in:
Matthieu Jeanson 2024-12-12 16:43:03 -08:00 committed by Katharine Berry
commit 3b92768480
10334 changed files with 2564465 additions and 0 deletions

View file

@ -0,0 +1,13 @@
# Regression test for Issue 242: pb_encode does not encode tag for
# extension fields that is all zeros
Import('env')
env.NanopbProto('zero_value')
p = env.Program(["zero_value.c",
"zero_value.pb.c",
"$COMMON/pb_decode.o",
"$COMMON/pb_encode.o",
"$COMMON/pb_common.o"])
env.RunTest(p)

View file

@ -0,0 +1,51 @@
#include <unittests.h>
#include <pb_encode.h>
#include <pb_decode.h>
#include <string.h>
#include "zero_value.pb.h"
int main()
{
int status = 0;
COMMENT("Test extension fields with zero values");
{
uint8_t buffer[256] = {0};
pb_ostream_t ostream;
int32_t value = 0;
Extendable source = {0};
pb_extension_t source_ext = {0};
source_ext.type = &opt_int32;
source_ext.dest = &value;
source.extensions = &source_ext;
ostream = pb_ostream_from_buffer(buffer, sizeof(buffer));
TEST(pb_encode(&ostream, Extendable_fields, &source));
TEST(ostream.bytes_written == 2);
TEST(memcmp(buffer, "\x58\x00", 2) == 0);
}
/* Note: There never was a bug here, but this check is included
* in the regression test because the logic is closely related.
*/
COMMENT("Test pointer fields with zero values");
{
uint8_t buffer[256] = {0};
pb_ostream_t ostream;
int32_t value = 0;
PointerMessage source = {0};
source.opt_int32 = &value;
ostream = pb_ostream_from_buffer(buffer, sizeof(buffer));
TEST(pb_encode(&ostream, PointerMessage_fields, &source));
TEST(ostream.bytes_written == 2);
TEST(memcmp(buffer, "\x58\x00", 2) == 0);
}
return status;
}

View file

@ -0,0 +1,15 @@
syntax = "proto2";
import "nanopb.proto";
message Extendable {
extensions 10 to 100;
}
extend Extendable {
optional int32 opt_int32 = 11;
}
message PointerMessage {
optional int32 opt_int32 = 11 [(nanopb).type = FT_POINTER];
}