This allows ignoring fields that are unnecessary or too large for an embedded system using nanopb, while allowing them to remain in the .proto for other platforms. Update issue 51 Status: FixedInGit
74 lines
1.4 KiB
Protocol Buffer
74 lines
1.4 KiB
Protocol Buffer
/* Test nanopb option parsing.
|
|
* options.expected lists the patterns that are searched for in the output.
|
|
*/
|
|
|
|
import "nanopb.proto";
|
|
|
|
// File level options
|
|
option (nanopb_fileopt).max_size = 20;
|
|
|
|
message Message1
|
|
{
|
|
required string filesize = 1;
|
|
}
|
|
|
|
// Message level options
|
|
message Message2
|
|
{
|
|
option (nanopb_msgopt).max_size = 30;
|
|
required string msgsize = 1;
|
|
}
|
|
|
|
// Field level options
|
|
message Message3
|
|
{
|
|
required string fieldsize = 1 [(nanopb).max_size = 40];
|
|
}
|
|
|
|
// Forced callback field
|
|
message Message4
|
|
{
|
|
required int32 int32_callback = 1 [(nanopb).type = FT_CALLBACK];
|
|
}
|
|
|
|
// Short enum names
|
|
enum Enum1
|
|
{
|
|
option (nanopb_enumopt).long_names = false;
|
|
EnumValue1 = 1;
|
|
EnumValue2 = 2;
|
|
}
|
|
|
|
message EnumTest
|
|
{
|
|
required Enum1 field = 1 [default = EnumValue2];
|
|
}
|
|
|
|
// Short enum names inside message
|
|
message Message5
|
|
{
|
|
enum Enum2
|
|
{
|
|
option (nanopb_enumopt).long_names = false;
|
|
EnumValue1 = 1;
|
|
}
|
|
required Enum2 field = 1 [default = EnumValue1];
|
|
}
|
|
|
|
// Packed structure
|
|
message my_packed_struct
|
|
{
|
|
option (nanopb_msgopt).packed_struct = true;
|
|
optional int32 myfield = 1;
|
|
}
|
|
|
|
// Message with ignored field
|
|
// Note: doesn't really test if the field is missing in the output,
|
|
// but atleast tests that the output compiles.
|
|
message Message6
|
|
{
|
|
required int32 field1 = 1;
|
|
optional int32 field2 = 2 [(nanopb).type = FT_IGNORE];
|
|
}
|
|
|