/* Test handling of enums with different value ranges. * Depending on compiler and the packed_enum setting, the datatypes * for enums can be either signed or unsigned. In past this has caused * a bit of a problem for the encoder/decoder (issue #164). */ syntax = "proto2"; import 'nanopb.proto'; option (nanopb_fileopt).long_names = false; enum UnpackedUint8 { option (nanopb_enumopt).packed_enum = false; UU8_MIN = 0; UU8_MAX = 255; } enum PackedUint8 { option (nanopb_enumopt).packed_enum = true; PU8_MIN = 0; PU8_MAX = 255; } enum UnpackedInt8 { option (nanopb_enumopt).packed_enum = false; UI8_MIN = -128; UI8_MAX = 127; } enum PackedInt8 { option (nanopb_enumopt).packed_enum = true; PI8_MIN = -128; PI8_MAX = 127; } enum UnpackedUint16 { option (nanopb_enumopt).packed_enum = false; UU16_MIN = 0; UU16_MAX = 65535; } enum PackedUint16 { option (nanopb_enumopt).packed_enum = true; PU16_MIN = 0; PU16_MAX = 65535; } enum UnpackedInt16 { option (nanopb_enumopt).packed_enum = false; UI16_MIN = -32768; UI16_MAX = 32767; } enum PackedInt16 { option (nanopb_enumopt).packed_enum = true; PI16_MIN = -32768; PI16_MAX = 32767; } /* Protobuf supports enums up to 32 bits. * The 32 bit case is covered by HugeEnum in the alltypes test. */ message PackedEnums { required PackedUint8 u8_min = 1; required PackedUint8 u8_max = 2; required PackedInt8 i8_min = 3; required PackedInt8 i8_max = 4; required PackedUint16 u16_min = 5; required PackedUint16 u16_max = 6; required PackedInt16 i16_min = 7; required PackedInt16 i16_max = 8; } message UnpackedEnums { required UnpackedUint8 u8_min = 1; required UnpackedUint8 u8_max = 2; required UnpackedInt8 i8_min = 3; required UnpackedInt8 i8_max = 4; required UnpackedUint16 u16_min = 5; required UnpackedUint16 u16_max = 6; required UnpackedInt16 i16_min = 7; required UnpackedInt16 i16_max = 8; }