syntax = "proto2"; package proto; message HyperionRequest { enum Command { COLOR = 1; IMAGE = 2; CLEAR = 3; CLEARALL = 4; } // command specification required Command command = 1; // extensions to define all specific requests extensions 10 to 100; } message ColorRequest { extend HyperionRequest { optional ColorRequest colorRequest = 10; } // priority to use when setting the color required int32 priority = 1; // integer value containing the rgb color (0x00RRGGBB) required int32 RgbColor = 2; // duration of the request (negative results in infinite) optional int32 duration = 3; } message ImageRequest { extend HyperionRequest { optional ImageRequest imageRequest = 11; } // priority to use when setting the image required int32 priority = 1; // width of the image required int32 imagewidth = 2; // height of the image required int32 imageheight = 3; // image data required bytes imagedata = 4; // duration of the request (negative results in infinite) optional int32 duration = 5; } message ClearRequest { extend HyperionRequest { optional ClearRequest clearRequest = 12; } // priority which need to be cleared required int32 priority = 1; } message HyperionReply { enum Type { REPLY = 1; VIDEO = 2; } // Identifies which field is filled in. required Type type = 1; // flag indication success or failure optional bool success = 2; // string indicating the reason for failure (if applicable) optional string error = 3; // Proto Messages for video mode optional int32 video = 4; }