syntax = "proto2";

import 'nanopb.proto';

message SubMessage
{
    repeated int32 array = 1 [(nanopb).max_count = 8];
}

message OneOfMessage
{
    required int32 prefix = 1;
    oneof values
    {
        int32 first = 5;
        string second = 6 [(nanopb).max_length = 8];
        SubMessage third = 7;
    }
    required int32 suffix = 99;
}

message topMessage {
	required int32 start = 1;
	oneof msg {
		MyMessage1 msg1 = 2;
		MyMessage2 msg2 = 3;
	}
	required int32 end = 4;
}

message MyMessage1 {
	required uint32 n1 = 1;
	required uint32 n2 = 2;
	required string s = 3 [(nanopb).max_length = 32];
}

message MyMessage2 {
	required uint32 num = 1;
	required bool b = 2;
}

message MyMessage3 {
	required bool bbb = 1;
	required string ss = 2 [(nanopb).max_length = 1];
}

message MyMessage4 {
	required bool bbbb = 1;
	required string sss = 2 [(nanopb).max_length = 2];
	required uint32 num = 3;
	required uint32 num2 = 4;
}
