1*c8d645caSAndroid Build Coastguard Worker/* Test nanopb option parsing. 2*c8d645caSAndroid Build Coastguard Worker * options.expected lists the patterns that are searched for in the output. 3*c8d645caSAndroid Build Coastguard Worker */ 4*c8d645caSAndroid Build Coastguard Worker 5*c8d645caSAndroid Build Coastguard Workersyntax = "proto2"; 6*c8d645caSAndroid Build Coastguard Worker 7*c8d645caSAndroid Build Coastguard Workerimport "nanopb.proto"; 8*c8d645caSAndroid Build Coastguard Worker 9*c8d645caSAndroid Build Coastguard Worker// File level options 10*c8d645caSAndroid Build Coastguard Workeroption (nanopb_fileopt).max_size = 20; 11*c8d645caSAndroid Build Coastguard Worker 12*c8d645caSAndroid Build Coastguard Workermessage Message1 13*c8d645caSAndroid Build Coastguard Worker{ 14*c8d645caSAndroid Build Coastguard Worker required string filesize = 1; 15*c8d645caSAndroid Build Coastguard Worker} 16*c8d645caSAndroid Build Coastguard Worker 17*c8d645caSAndroid Build Coastguard Worker// Message level options 18*c8d645caSAndroid Build Coastguard Workermessage Message2 19*c8d645caSAndroid Build Coastguard Worker{ 20*c8d645caSAndroid Build Coastguard Worker option (nanopb_msgopt).max_size = 30; 21*c8d645caSAndroid Build Coastguard Worker required string msgsize = 1; 22*c8d645caSAndroid Build Coastguard Worker} 23*c8d645caSAndroid Build Coastguard Worker 24*c8d645caSAndroid Build Coastguard Worker// Field level options 25*c8d645caSAndroid Build Coastguard Workermessage Message3 26*c8d645caSAndroid Build Coastguard Worker{ 27*c8d645caSAndroid Build Coastguard Worker option (nanopb_msgopt).msgid = 103; 28*c8d645caSAndroid Build Coastguard Worker required string fieldsize = 1 [(nanopb).max_size = 40]; 29*c8d645caSAndroid Build Coastguard Worker required string fieldlen = 2 [(nanopb).max_length = 40]; 30*c8d645caSAndroid Build Coastguard Worker} 31*c8d645caSAndroid Build Coastguard Worker 32*c8d645caSAndroid Build Coastguard Worker// Forced callback field 33*c8d645caSAndroid Build Coastguard Workermessage Message4 34*c8d645caSAndroid Build Coastguard Worker{ 35*c8d645caSAndroid Build Coastguard Worker option (nanopb_msgopt).msgid = 104; 36*c8d645caSAndroid Build Coastguard Worker required int32 int32_callback = 1 [(nanopb).type = FT_CALLBACK]; 37*c8d645caSAndroid Build Coastguard Worker} 38*c8d645caSAndroid Build Coastguard Worker 39*c8d645caSAndroid Build Coastguard Worker// Short enum names 40*c8d645caSAndroid Build Coastguard Workerenum Enum1 41*c8d645caSAndroid Build Coastguard Worker{ 42*c8d645caSAndroid Build Coastguard Worker option (nanopb_enumopt).long_names = false; 43*c8d645caSAndroid Build Coastguard Worker EnumValue1 = 1; 44*c8d645caSAndroid Build Coastguard Worker EnumValue2 = 2; 45*c8d645caSAndroid Build Coastguard Worker} 46*c8d645caSAndroid Build Coastguard Worker 47*c8d645caSAndroid Build Coastguard Workermessage EnumTest 48*c8d645caSAndroid Build Coastguard Worker{ 49*c8d645caSAndroid Build Coastguard Worker required Enum1 field = 1 [default = EnumValue2]; 50*c8d645caSAndroid Build Coastguard Worker} 51*c8d645caSAndroid Build Coastguard Worker 52*c8d645caSAndroid Build Coastguard Worker// Short enum names inside message 53*c8d645caSAndroid Build Coastguard Workermessage Message5 54*c8d645caSAndroid Build Coastguard Worker{ 55*c8d645caSAndroid Build Coastguard Worker option (nanopb_msgopt).msgid = 105; 56*c8d645caSAndroid Build Coastguard Worker enum Enum2 57*c8d645caSAndroid Build Coastguard Worker { 58*c8d645caSAndroid Build Coastguard Worker option (nanopb_enumopt).long_names = false; 59*c8d645caSAndroid Build Coastguard Worker EnumValue1 = 1; 60*c8d645caSAndroid Build Coastguard Worker } 61*c8d645caSAndroid Build Coastguard Worker required Enum2 field = 1 [default = EnumValue1]; 62*c8d645caSAndroid Build Coastguard Worker} 63*c8d645caSAndroid Build Coastguard Worker 64*c8d645caSAndroid Build Coastguard Worker// Packed structure 65*c8d645caSAndroid Build Coastguard Workermessage my_packed_struct 66*c8d645caSAndroid Build Coastguard Worker{ 67*c8d645caSAndroid Build Coastguard Worker option (nanopb_msgopt).packed_struct = true; 68*c8d645caSAndroid Build Coastguard Worker optional int32 myfield = 1; 69*c8d645caSAndroid Build Coastguard Worker} 70*c8d645caSAndroid Build Coastguard Worker 71*c8d645caSAndroid Build Coastguard Worker// Message with ignored field 72*c8d645caSAndroid Build Coastguard Workermessage Message6 73*c8d645caSAndroid Build Coastguard Worker{ 74*c8d645caSAndroid Build Coastguard Worker required int32 field1 = 1; 75*c8d645caSAndroid Build Coastguard Worker optional int32 skipped_field = 2 [(nanopb).type = FT_IGNORE]; 76*c8d645caSAndroid Build Coastguard Worker} 77*c8d645caSAndroid Build Coastguard Worker 78*c8d645caSAndroid Build Coastguard Worker// Message that is skipped 79*c8d645caSAndroid Build Coastguard Workermessage SkippedMessage 80*c8d645caSAndroid Build Coastguard Worker{ 81*c8d645caSAndroid Build Coastguard Worker option (nanopb_msgopt).skip_message = true; 82*c8d645caSAndroid Build Coastguard Worker required int32 foo = 1; 83*c8d645caSAndroid Build Coastguard Worker} 84*c8d645caSAndroid Build Coastguard Worker 85*c8d645caSAndroid Build Coastguard Worker// Message with oneof field 86*c8d645caSAndroid Build Coastguard Workermessage OneofMessage 87*c8d645caSAndroid Build Coastguard Worker{ 88*c8d645caSAndroid Build Coastguard Worker oneof foo { 89*c8d645caSAndroid Build Coastguard Worker int32 bar = 1; 90*c8d645caSAndroid Build Coastguard Worker } 91*c8d645caSAndroid Build Coastguard Worker} 92*c8d645caSAndroid Build Coastguard Worker 93*c8d645caSAndroid Build Coastguard Worker// Proto3-style optional field in proto2 file 94*c8d645caSAndroid Build Coastguard Workermessage Proto3Field 95*c8d645caSAndroid Build Coastguard Worker{ 96*c8d645caSAndroid Build Coastguard Worker optional int32 proto3field = 1 [(nanopb).proto3 = true]; 97*c8d645caSAndroid Build Coastguard Worker} 98*c8d645caSAndroid Build Coastguard Worker 99