import 'nanopb.proto';

message IntegerArray {
    repeated int32 data = 1 [(nanopb).max_count = 10];
}

message FloatArray {
    repeated float data = 1 [(nanopb).max_count = 10];
}

message StringMessage {
    required string data = 1 [(nanopb).max_size = 10];
}

message BytesMessage {
    required bytes data = 1 [(nanopb).max_size = 16];
}

message CallbackArray {
    // We cheat a bit and use this message for testing other types, too.
    // Nanopb does not care about the actual defined data type for callback
    // fields.
    repeated int32 data = 1;
}

message IntegerContainer {
    required IntegerArray submsg = 1;
}

message CallbackContainer {
    required CallbackArray submsg = 1;
}

message CallbackContainerContainer {
    required CallbackContainer submsg = 1;
}
