// This is an example of how to handle 'union' style messages // with nanopb, without allocating memory for all the message types. // // There is no official type in Protocol Buffers for describing unions, // but they are commonly implemented by filling out exactly one of // several optional fields. syntax = "proto2"; message MsgType1 { required int32 value = 1; } message MsgType2 { required bool value = 1; } message MsgType3 { required int32 value1 = 1; required int32 value2 = 2; } message UnionMessage { optional MsgType1 msg1 = 1; optional MsgType2 msg2 = 2; optional MsgType3 msg3 = 3; }