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
59 lines
1.7 KiB
Protocol Buffer
59 lines
1.7 KiB
Protocol Buffer
// Custom options for defining:
|
|
// - Maximum size of string/bytes
|
|
// - Maximum number of elements in array
|
|
//
|
|
// These are used by nanopb to generate statically allocable structures
|
|
// for memory-limited environments.
|
|
|
|
import "google/protobuf/descriptor.proto";
|
|
|
|
enum FieldType {
|
|
FT_DEFAULT = 0; // Automatically decide field type, generate static field if possible.
|
|
FT_CALLBACK = 1; // Always generate a callback field.
|
|
FT_STATIC = 2; // Generate a static field or raise an exception if not possible.
|
|
FT_IGNORE = 3; // Ignore the field completely.
|
|
}
|
|
|
|
message NanoPBOptions {
|
|
// Allocated size for 'bytes' and 'string' fields.
|
|
optional int32 max_size = 1;
|
|
|
|
// Allocated number of entries in arrays ('repeated' fields)
|
|
optional int32 max_count = 2;
|
|
|
|
// Force type of field (callback or static allocation)
|
|
optional FieldType type = 3 [default = FT_DEFAULT];
|
|
|
|
// Use long names for enums, i.e. EnumName_EnumValue.
|
|
optional bool long_names = 4 [default = true];
|
|
|
|
// Add 'packed' attribute to generated structs.
|
|
optional bool packed_struct = 5 [default = false];
|
|
}
|
|
|
|
// Protocol Buffers extension number registry
|
|
// --------------------------------
|
|
// Project: Nanopb
|
|
// Contact: Petteri Aimonen <jpa@kapsi.fi>
|
|
// Web site: http://kapsi.fi/~jpa/nanopb
|
|
// Extensions: 1010 (all types)
|
|
// --------------------------------
|
|
|
|
extend google.protobuf.FileOptions {
|
|
optional NanoPBOptions nanopb_fileopt = 1010;
|
|
}
|
|
|
|
extend google.protobuf.MessageOptions {
|
|
optional NanoPBOptions nanopb_msgopt = 1010;
|
|
}
|
|
|
|
extend google.protobuf.EnumOptions {
|
|
optional NanoPBOptions nanopb_enumopt = 1010;
|
|
}
|
|
|
|
extend google.protobuf.FieldOptions {
|
|
optional NanoPBOptions nanopb = 1010;
|
|
}
|
|
|
|
|