1*c8d645caSAndroid Build Coastguard Worker// This is an example of how to handle 'union' style messages 2*c8d645caSAndroid Build Coastguard Worker// with nanopb, without allocating memory for all the message types. 3*c8d645caSAndroid Build Coastguard Worker// 4*c8d645caSAndroid Build Coastguard Worker// There is no official type in Protocol Buffers for describing unions, 5*c8d645caSAndroid Build Coastguard Worker// but they are commonly implemented by filling out exactly one of 6*c8d645caSAndroid Build Coastguard Worker// several optional fields. 7*c8d645caSAndroid Build Coastguard Worker 8*c8d645caSAndroid Build Coastguard Workersyntax = "proto2"; 9*c8d645caSAndroid Build Coastguard Worker 10*c8d645caSAndroid Build Coastguard Workermessage MsgType1 11*c8d645caSAndroid Build Coastguard Worker{ 12*c8d645caSAndroid Build Coastguard Worker required int32 value = 1; 13*c8d645caSAndroid Build Coastguard Worker} 14*c8d645caSAndroid Build Coastguard Worker 15*c8d645caSAndroid Build Coastguard Workermessage MsgType2 16*c8d645caSAndroid Build Coastguard Worker{ 17*c8d645caSAndroid Build Coastguard Worker required bool value = 1; 18*c8d645caSAndroid Build Coastguard Worker} 19*c8d645caSAndroid Build Coastguard Worker 20*c8d645caSAndroid Build Coastguard Workermessage MsgType3 21*c8d645caSAndroid Build Coastguard Worker{ 22*c8d645caSAndroid Build Coastguard Worker required int32 value1 = 1; 23*c8d645caSAndroid Build Coastguard Worker required int32 value2 = 2; 24*c8d645caSAndroid Build Coastguard Worker} 25*c8d645caSAndroid Build Coastguard Worker 26*c8d645caSAndroid Build Coastguard Workermessage UnionMessage 27*c8d645caSAndroid Build Coastguard Worker{ 28*c8d645caSAndroid Build Coastguard Worker optional MsgType1 msg1 = 1; 29*c8d645caSAndroid Build Coastguard Worker optional MsgType2 msg2 = 2; 30*c8d645caSAndroid Build Coastguard Worker optional MsgType3 msg3 = 3; 31*c8d645caSAndroid Build Coastguard Worker} 32*c8d645caSAndroid Build Coastguard Worker 33