[Spice-devel] [PATCH v4 09/41] proto: Decorate protocol file with attributes for wireshark
Christophe Fergeau
cfergeau at redhat.com
Thu Jul 30 08:17:37 PDT 2015
On Thu, Jul 23, 2015 at 04:54:26PM +0100, Frediano Ziglio wrote:
> Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
> ---
> spice.proto | 416 ++++++++++++++++++++++++++++++++----------------------------
> 1 file changed, 219 insertions(+), 197 deletions(-)
>
> diff --git a/spice.proto b/spice.proto
> index 4ea1263..52d6971 100644
> --- a/spice.proto
> +++ b/spice.proto
> @@ -5,14 +5,14 @@
> typedef fixed28_4 int32 @ctype(SPICE_FIXED28_4);
>
> struct Point {
> - int32 x;
> - int32 y;
> -};
> + int32 x @ws("x", point32.x);
> + int32 y @ws("y", point32.y);
> +} @ws_txt("POINT (%d, %d)", x, y);
>
> struct Point16 {
> - int16 x;
> - int16 y;
> -};
> + int16 x @ws("x", point16.x);
> + int16 y @ws("y", point16.y);
> +} @ws_txt("POINT16 (%d, %d)", x, y);
>
> struct PointFix {
> fixed28_4 x;
> @@ -20,11 +20,14 @@ struct PointFix {
> };
>
> struct Rect {
> - int32 top;
> - int32 left;
> - int32 bottom;
> - int32 right;
> -};
> + int32 top @ws("top", rect.top);
> + int32 left @ws("left", rect.left);
> + int32 bottom @ws("bottom", rect.bottom);
> + int32 right @ws("right", rect.right);
> +}
> + at ws_txt("RECT: (%d-%d, %d-%d)", left, top, right, bottom)
> + at ws_txt_n("RECT %u: (%d-%d, %d-%d)", INDEX, left, top, right, bottom)
> +;
>
> struct Transform {
> uint32 t00;
> @@ -96,10 +99,15 @@ enum32 notify_visibility {
> };
>
> flags16 mouse_mode {
> - SERVER,
> - CLIENT,
> + SERVER @ws_desc("Server mode"),
> + CLIENT @ws_desc("Client mode"),
> };
>
> +flags32 mouse_mode32 {
> + SERVER @ws_desc("Server mode"),
> + CLIENT @ws_desc("Client mode"),
> +} @ws("Supported mouse modes", supported_mouse_modes);
> +
This one should be split as this is an addition rather than a decoration
> enum16 pubkey_type {
> INVALID,
> RSA,
> @@ -117,12 +125,12 @@ message Empty {
> };
>
> message Data {
> - uint8 data[] @end @ctype(uint8_t);
> + uint8 data[] @end @ctype(uint8_t) @ws("data", data) @ws_type(BYTES);
> } @nocopy;
>
> struct ChannelWait {
> uint8 channel_type;
> - uint8 channel_id;
> + uint8 channel_id @ws_desc("Channel ID");
> uint64 message_serial;
> } @ctype(SpiceWaitForChannel);
>
> @@ -135,14 +143,14 @@ channel BaseChannel {
> Data migrate_data;
>
> message {
> - uint32 generation;
> - uint32 window;
> + uint32 generation @ws("Set ACK generation", red_set_ack_generation);
> + uint32 window @ws("Set ACK window (messages)", red_set_ack_window);
> } set_ack;
>
> message {
> - uint32 id;
> - uint64 timestamp;
> - uint8 data[] @ctype(uint8_t) @as_ptr(data_len);
> + uint32 id @ws("Ping ID", ping_id);
> + uint64 timestamp @ws("timestamp", timestamp);
> + uint8 data[] @ctype(uint8_t) @as_ptr(data_len) @ws_txt("PING DATA (%d bytes)", data.nelements);
> } ping;
>
> message {
> @@ -156,12 +164,12 @@ channel BaseChannel {
> } @ctype(SpiceMsgDisconnect) disconnecting;
>
> message {
> - uint64 time_stamp;
> - notify_severity severity;
> - notify_visibility visibilty;
> - uint32 what; /* error_code/warn_code/info_code */
> - uint32 message_len;
> - uint8 message[message_len] @end @nomarshal;
> + uint64 time_stamp @ws("timestamp", timestamp);
> + notify_severity severity @ws("Severity", notify_severity);
> + notify_visibility visibilty @ws("Visibility", notify_visibility);
> + uint32 what @ws("error/warn/info code", notify_code); /* error_code/warn_code/info_code */
> + uint32 message_len @ws("Message length", notify_message_length);
> + uint8 message[message_len] @end @nomarshal @ws("Message", notify_message) @ws_type(STRING);
> } notify;
>
> Data list; /* the msg body is SpiceSubMessageList */
> @@ -170,14 +178,14 @@ channel BaseChannel {
>
> client:
> message {
> - uint32 generation;
> + uint32 generation @ws("Set ACK generation", red_set_ack_generation);
> } ack_sync;
>
> Empty ack;
>
> message {
> - uint32 id;
> - uint64 timestamp;
> + uint32 id @ws("Ping ID", ping_id);
> + uint64 timestamp @ws("timestamp", timestamp);
> } @ctype(SpiceMsgPing) pong;
>
> Empty migrate_flush_mark;
> @@ -191,17 +199,17 @@ channel BaseChannel {
> };
>
> struct ChannelId {
> - uint8 type;
> - uint8 id;
> -};
> + uint8 type @ws("Channel type", channel_type);
> + uint8 id @ws("Channel ID", channel_id);
> +} @ws_txt_n("channels[%u]", INDEX);
>
> struct DstInfo {
> - uint16 port;
> - uint16 sport;
> + uint16 port @ws("Migrate Dest Port", migrate_dest_port);
> + uint16 sport @ws("Migrate Dest Secure Port", migrate_dest_sport);
> uint32 host_size;
> - uint8 *host_data[host_size] @zero_terminated @marshall @nonnull;
> + uint8 *host_data[host_size] @zero_terminated @marshall @nonnull @ws("data", data) @ws_type(BYTES);
> uint32 cert_subject_size;
> - uint8 *cert_subject_data[cert_subject_size] @zero_terminated @marshall;
> + uint8 *cert_subject_data[cert_subject_size] @zero_terminated @marshall @ws("data", data) @ws_type(BYTES);
> } @ctype(SpiceMigrationDstInfo);
>
> channel MainChannel : BaseChannel {
> @@ -213,69 +221,69 @@ channel MainChannel : BaseChannel {
> Empty migrate_cancel;
>
> message {
> - uint32 session_id;
> - uint32 display_channels_hint;
> - uint32 supported_mouse_modes;
> - uint32 current_mouse_mode;
> - uint32 agent_connected;
> - uint32 agent_tokens;
> - uint32 multi_media_time;
> - uint32 ram_hint;
> + uint32 session_id @ws("Session ID", main_session_id);
> + uint32 display_channels_hint @ws("Number of display channels", display_channels_hint);
> + mouse_mode32 supported_mouse_modes;
> + mouse_mode32 current_mouse_mode @ws("Current mouse mode", current_mouse_mode);
> + uint32 agent_connected @ws("Agent", agent);
> + uint32 agent_tokens @ws("Agent tokens", agent_tokens);
> + uint32 multi_media_time @ws("Current server multimedia time", multimedia_time);
> + uint32 ram_hint @ws("RAM hint", ram_hint);
> } init;
>
> message {
> - uint32 num_of_channels;
> - ChannelId channels[num_of_channels] @end;
> + uint32 num_of_channels @ws("Number of Channels", main_num_channels) @ws_base(DEC_HEX);
> + ChannelId channels[num_of_channels] @end @ws_desc("Channel Array");
> } @ctype(SpiceMsgChannels) channels_list;
>
> message {
> mouse_mode supported_modes;
> - mouse_mode current_mode @unique_flag;
> + mouse_mode current_mode @unique_flag @ws("Current mouse mode", current_mouse_mode_flags);
> } mouse_mode;
>
> message {
> - uint32 time;
> + uint32 time @ws("Current server multimedia time", multimedia_time);
> } @ctype(SpiceMsgMainMultiMediaTime) multi_media_time;
>
> Empty agent_connected;
>
> message {
> - link_err error_code;
> + link_err error_code @ws("spice ERROR", error_code);
> } @ctype(SpiceMsgMainAgentDisconnect) agent_disconnected;
>
> Data agent_data;
>
> message {
> - uint32 num_tokens;
> + uint32 num_tokens @ws("Agent token", main_agent_token);
> } @ctype(SpiceMsgMainAgentTokens) agent_token;
>
> message {
> - uint16 port;
> - uint16 sport;
> + uint16 port @ws("Migrate Dest Port", migrate_dest_port);
> + uint16 sport @ws("Migrate Dest Secure Port", migrate_dest_sport);
> uint32 host_size;
> - uint8 *host_data[host_size] @zero_terminated @marshall;
> + uint8 *host_data[host_size] @zero_terminated @marshall @ws("data", data) @ws_type(BYTES);
> uint32 cert_subject_size;
> - uint8 *cert_subject_data[cert_subject_size] @zero_terminated @marshall;
> + uint8 *cert_subject_data[cert_subject_size] @zero_terminated @marshall @ws("data", data) @ws_type(BYTES);
> } @ctype(SpiceMsgMainMigrationSwitchHost) migrate_switch_host;
>
> Empty migrate_end;
>
> message {
> - uint32 name_len;
> - uint8 name[name_len] @end;
> + uint32 name_len @ws("Name length", main_name_length);
> + uint8 name[name_len] @end @ws("Name", main_name) @ws_type(STRINGZ);
> } name;
>
> message {
> - uint8 uuid[16];
> + uint8 uuid[16] @ws("UUID", main_uuid) @ws_type(GUID);
> } uuid;
>
> message {
> - uint32 num_tokens;
> + uint32 num_tokens @ws("Agent token", main_agent_token);
> } agent_connected_tokens;
>
> message {
> DstInfo dst_info;
> - uint32 src_mig_version;
> + uint32 src_mig_version @ws("Migrate Source Migration Version", migrate_src_version);
> } migrate_begin_seamless;
>
> Empty migrate_dst_seamless_ack;
> @@ -293,17 +301,17 @@ channel MainChannel : BaseChannel {
> Empty attach_channels;
>
> message {
> - mouse_mode mode;
> + mouse_mode mode @ws("Current mouse mode", current_mouse_mode_flags);
> } mouse_mode_request;
>
> message {
> - uint32 num_tokens;
> + uint32 num_tokens @ws("Agent tokens", main_agent_tokens);
> } agent_start;
>
> Data agent_data;
>
> message {
> - uint32 num_tokens;
> + uint32 num_tokens @ws("Agent token", main_agent_token);
> } @ctype(SpiceMsgcMainAgentTokens) agent_token;
>
> Empty migrate_end;
> @@ -318,7 +326,7 @@ channel MainChannel : BaseChannel {
> enum8 clip_type {
> NONE,
> RECTS
> -};
> +} @ws("Clip type", clip_type);
>
> flags8 path_flags { /* TODO: C enum names changes */
> BEGIN = 0,
> @@ -329,21 +337,21 @@ flags8 path_flags { /* TODO: C enum names changes */
>
> enum8 video_codec_type {
> MJPEG = 1,
> -};
> +} @ws("Stream codec type", display_stream_codec_type);
>
> flags8 stream_flags {
> TOP_DOWN = 0,
> -};
> +} @ws("Stream flags", display_stream_flags) @ws_base(DEC);
>
> enum8 brush_type {
> NONE,
> SOLID,
> PATTERN,
> -};
> +} @ws("Brush type", brush_type);
>
> flags8 mask_flags {
> INVERS,
> -};
> +} @ws("Mask flag", mask_flag) @ws_base(DEC);
>
> enum8 image_type {
> BITMAP,
> @@ -359,7 +367,7 @@ enum8 image_type {
> ZLIB_GLZ_RGB,
> JPEG_ALPHA,
> LZ4,
> -};
> +} @ws("Image type", image_type);
>
> enum8 image_compress {
> INVALID = 0,
> @@ -376,7 +384,7 @@ flags8 image_flags {
> CACHE_ME,
> HIGH_BITS_SET,
> CACHE_REPLACE_ME,
> -};
> +} @ws("Flags", image_flags);
>
> enum8 bitmap_fmt {
> INVALID,
> @@ -390,13 +398,13 @@ enum8 bitmap_fmt {
> 32BIT /* 4 byte, xrgb in little endian format */,
> RGBA /* 4 byte, argb in little endian format */,
> 8BIT_A /* 1 byte, alpha */
> -};
> +} @ws("Pixmap format", pixmap_format);
>
> flags8 bitmap_flags {
> PAL_CACHE_ME,
> PAL_FROM_CACHE,
> TOP_DOWN,
> -};
> +} @ws("Pixmap flags", pixmap_flags);
>
> flags8 jpeg_alpha_flags {
> TOP_DOWN,
> @@ -405,7 +413,7 @@ flags8 jpeg_alpha_flags {
> enum8 image_scale_mode {
> INTERPOLATE,
> NEAREST,
> -};
> +} @ws("Scale mode", scale_mode);
>
> flags16 ropd {
> INVERS_SRC,
> @@ -419,7 +427,7 @@ flags16 ropd {
> OP_WHITENESS,
> OP_INVERS,
> INVERS_RES,
> -};
> +} @ws("ROP descriptor", display_rop_descriptor);
>
> /* This *must* remain with values identical to api/winddi.h
> LA_STYLED == 0x8 (log_2)=> 3
> @@ -436,13 +444,13 @@ flags8 string_flags {
> RASTER_A4,
> RASTER_A8,
> RASTER_TOP_DOWN,
> -};
> +} @ws_desc("Glyph flags");
>
> flags32 surface_flags {
> /* Adding flags requires some caps check, since old clients only
> treat the value as an enum and not as a flag (flag == PRIMARY) */
> PRIMARY
> -};
> +} @ws_base(DEC) @ws("Surface flags", surface_flags);
>
> enum32 surface_fmt {
> INVALID,
> @@ -452,7 +460,7 @@ enum32 surface_fmt {
> 16_565 = 80,
> 32_xRGB = 32,
> 32_ARGB = 96
> -};
> +} @ws("Surface format", surface_format);
>
> flags8 alpha_flags {
> DEST_HAS_ALPHA,
> @@ -465,9 +473,9 @@ enum8 resource_type {
> } @prefix(SPICE_RES_TYPE_);
>
> struct ClipRects {
> - uint32 num_rects;
> + uint32 num_rects @ws("RectList size", rectlist_size);
> Rect rects[num_rects] @end;
> -};
> +} @ws_txt("RectList (%d rects)", num_rects);
>
> struct PathSegment {
> path_flags flags;
> @@ -486,18 +494,18 @@ struct Clip {
> case RECTS:
> ClipRects rects @outvar(cliprects) @to_ptr;
> } u @anon;
> -};
> +} @ws_desc("SpiceClip");
>
> struct DisplayBase {
> - uint32 surface_id;
> - Rect box;
> + uint32 surface_id @ws("Surface ID", surface_id);
> + Rect box @ws_inline;
> Clip clip;
> -} @ctype(SpiceMsgDisplayBase);
> +} @ctype(SpiceMsgDisplayBase) @ws_txt("SpiceMsgDisplayBase - SpiceRect box (%u-%u, %u-%u)", box.left, box.top, box.right, box.bottom);
>
> struct ResourceID {
> - uint8 type;
> - uint64 id;
> -};
> + uint8 type @ws("Type", resource_type);
> + uint64 id @ws("id", resource_id);
> +} @ws_txt_n("Resource #%d", INDEX);
>
> struct WaitForChannel {
> uint8 channel_type;
> @@ -511,20 +519,21 @@ struct Palette {
> uint32 ents[num_ents] @end;
> };
>
> +/* TODO "Pixmap pixels (%d bytes)" */
Did you keep this one on purpose?
> struct BitmapData {
> bitmap_fmt format;
> bitmap_flags flags;
> - uint32 x;
> - uint32 y;
> - uint32 stride;
> + uint32 x @ws("Pixmap width", pixmap_width);
> + uint32 y @ws("Pixmap height", pixmap_height);
> + uint32 stride @ws("Pixmap stride", pixmap_stride);
> switch (flags) {
> case PAL_FROM_CACHE:
> uint64 palette_id;
> default:
> - Palette *palette @outvar(bitmap);
> + Palette * @ws("Pixmap palette pointer", pixmap_palette_address) palette @outvar(bitmap);
> } pal @anon;
> uint8 data[image_size(8, stride, y)] @chunk @nomarshal;
> -} @ctype(SpiceBitmap);
> +} @ctype(SpiceBitmap) @ws_desc("Pixmap") @ws_txt("Pixmap pixels (%ux%u)", x, y);
>
> struct BinaryData {
> uint32 data_size;
> @@ -558,17 +567,17 @@ struct JPEGAlphaData {
>
> struct Surface {
> uint32 surface_id;
> -};
> +} @ws_txt("Surface ID: %u", surface_id);
>
>
> struct Image {
> struct ImageDescriptor {
> - uint64 id;
> + uint64 id @ws("Image ID", image_id) @ws_base(HEX);
> image_type type;
> image_flags flags;
> - uint32 width;
> - uint32 height;
> - } descriptor;
> + uint32 width @ws("Width", image_width);
> + uint32 height @ws("Height", image_height);
> + } descriptor @ws_inline @ws_desc("Image Descriptor");
>
> switch (descriptor.type) {
> case BITMAP:
> @@ -594,25 +603,32 @@ struct Image {
> };
>
> struct Pattern {
> - Image *pat @nonnull;
> + Image * @ws("Image address", ref_image) @ws_base(HEX_DEC) pat @nonnull;
> Point pos;
> };
>
> +/*
> +TODO
> +"Brush - SOLID"
> +"Brush - PATTERN"
> +"Brush - NONE"
> +"Invalid Brush type"
> +*/
Was this kept intentionally ?
> struct Brush {
> brush_type type;
> switch (type) {
> case SOLID:
> - uint32 color;
> + uint32 color @ws("Brush color", brush_rgb) @ws_base(HEX);
> case PATTERN:
> Pattern pattern;
> } u;
> -};
> +} @ws_txt("Brush - %u", type);
>
> struct QMask {
> mask_flags flags;
> Point pos;
> - Image *bitmap;
> -};
> + Image * @ws("Image address", ref_image) @ws_base(HEX_DEC) bitmap;
> +} @ws_desc("Mask");
>
> struct LineAttr {
> line_flags flags;
> @@ -651,7 +667,7 @@ struct RasterGlyphA8 {
> } @ctype(SpiceRasterGlyph);
>
> struct String {
> - uint16 length;
> + uint16 length @ws("Number of glyphs", num_glyphs);
> string_flags flags; /* Special: Only one of a1/a4/a8 set */
> switch (flags) {
> case RASTER_A1:
> @@ -664,26 +680,26 @@ struct String {
> };
>
> struct StreamDataHeader {
> - uint32 id;
> - uint32 multi_media_time;
> + uint32 id @ws("Stream ID", display_stream_id);
> + uint32 multi_media_time @ws("Current server multimedia time", multimedia_time);
> };
>
> struct Head {
> - uint32 id;
> - uint32 surface_id;
> - uint32 width;
> - uint32 height;
> - uint32 x;
> - uint32 y;
> - uint32 flags;
> -};
> + uint32 id @ws("Head ID", display_head_id);
> + uint32 surface_id @ws("Head surface ID", display_head_surface_id);
> + uint32 width @ws("Head width", display_head_width);
> + uint32 height @ws("Head height", display_head_height);
> + uint32 x @ws("Head X coordinate", display_head_x);
> + uint32 y @ws("Head Y coordinate", display_head_y);
> + uint32 flags @ws("Head flags", display_head_flags);
> +} @ws_txt_n("Display Head #%u", INDEX);
>
> channel DisplayChannel : BaseChannel {
> server:
> message {
> - uint32 x_res;
> - uint32 y_res;
> - uint32 bits;
> + uint32 x_res @ws("Display Width", display_width);
> + uint32 y_res @ws("Display Height", display_height);
> + uint32 bits @ws("Color depth", display_depth);
> } mode = 101;
>
> Empty mark;
> @@ -694,7 +710,7 @@ channel DisplayChannel : BaseChannel {
> } copy_bits;
>
> message {
> - uint16 count;
> + uint16 count @ws("count", display_inval_list_count);
> ResourceID resources[count] @end;
> } @ctype(SpiceResourceList) inval_list;
>
> @@ -710,32 +726,32 @@ channel DisplayChannel : BaseChannel {
> Empty inval_all_palettes;
>
> message {
> - uint32 surface_id;
> - uint32 id;
> + uint32 surface_id @ws("Surface ID", surface_id);
> + uint32 id @ws("Stream ID", display_stream_id);
> stream_flags flags;
> video_codec_type codec_type;
> - uint64 stamp;
> - uint32 stream_width;
> - uint32 stream_height;
> - uint32 src_width;
> - uint32 src_height;
> + uint64 stamp @ws("Stream stamp", display_stream_stamp);
> + uint32 stream_width @ws("Stream width", stream_width);
> + uint32 stream_height @ws("Stream height", stream_height);
> + uint32 src_width @ws("Stream source width", stream_src_width);
> + uint32 src_height @ws("Stream source height", stream_src_height);
> Rect dest;
> Clip clip;
> } stream_create = 122;
>
> message {
> StreamDataHeader base;
> - uint32 data_size;
> - uint8 data[data_size] @end @nomarshal;
> + uint32 data_size @ws("Stream data size", display_stream_data_size);
> + uint8 data[data_size] @end @nomarshal @ws_desc("Stream data");
> } stream_data;
>
> message {
> - uint32 id;
> + uint32 id @ws("Stream ID", display_stream_id);
> Clip clip;
> } stream_clip;
>
> message {
> - uint32 id;
> + uint32 id @ws("Stream ID", display_stream_id);
> } stream_destroy;
>
> Empty stream_destroy_all;
> @@ -752,7 +768,7 @@ channel DisplayChannel : BaseChannel {
> message {
> DisplayBase base;
> struct Opaque {
> - Image *src_bitmap;
> + Image * @ws("Image address", ref_image) @ws_base(HEX_DEC) src_bitmap;
> Rect src_area;
> Brush brush;
> ropd rop_descriptor;
> @@ -764,7 +780,7 @@ channel DisplayChannel : BaseChannel {
> message {
> DisplayBase base;
> struct Copy {
> - Image *src_bitmap;
> + Image * @ws("Image address", ref_image) @ws_base(HEX_DEC) src_bitmap;
> Rect src_area;
> ropd rop_descriptor;
> image_scale_mode scale_mode;
> @@ -775,7 +791,7 @@ channel DisplayChannel : BaseChannel {
> message {
> DisplayBase base;
> struct Blend {
> - Image *src_bitmap;
> + Image * @ws("Image address", ref_image) @ws_base(HEX_DEC) src_bitmap;
> Rect src_area;
> ropd rop_descriptor;
> image_scale_mode scale_mode;
> @@ -807,10 +823,10 @@ channel DisplayChannel : BaseChannel {
> message {
> DisplayBase base;
> struct Rop3 {
> - Image *src_bitmap;
> + Image * @ws("Image address", ref_image) @ws_base(HEX_DEC) src_bitmap;
> Rect src_area;
> Brush brush;
> - uint8 rop3;
> + uint8 rop3 @ws_desc("ROP3");
> image_scale_mode scale_mode;
> QMask mask @outvar(mask);
> } data;
> @@ -830,22 +846,22 @@ channel DisplayChannel : BaseChannel {
> message {
> DisplayBase base;
> struct Text {
> - String *str @marshall @nonnull;
> + String * @ws("String address", ref_string) @ws_base(HEX_DEC) str @marshall @nonnull;
> Rect back_area;
> Brush fore_brush @outvar(fore_brush);
> Brush back_brush @outvar(back_brush);
> - uint16 fore_mode;
> - uint16 back_mode;
> + uint16 fore_mode @ws("Text foreground mode", draw_text_fore_mode);
> + uint16 back_mode @ws("Text background mode", draw_text_back_mode);
> } data;
> } draw_text;
>
> message {
> DisplayBase base;
> struct Transparent {
> - Image *src_bitmap;
> + Image * @ws("Image address", ref_image) @ws_base(HEX_DEC) src_bitmap;
> Rect src_area;
> - uint32 src_color;
> - uint32 true_color;
> + uint32 src_color @ws("Transparent source color", display_transparent_src_color) @ws_base(HEX);
> + uint32 true_color @ws("Transparent true color", display_transparent_true_color) @ws_base(HEX);
> } data;
> } draw_transparent;
>
> @@ -854,35 +870,35 @@ channel DisplayChannel : BaseChannel {
> struct AlphaBlend {
> alpha_flags alpha_flags;
> uint8 alpha;
> - Image *src_bitmap;
> + Image * @ws("Image address", ref_image) @ws_base(HEX_DEC) src_bitmap;
> Rect src_area;
> } data;
> } draw_alpha_blend;
>
> message {
> - uint32 surface_id;
> - uint32 width;
> - uint32 height;
> + uint32 surface_id @ws("Surface ID", surface_id);
> + uint32 width @ws("Surface width", surface_width);
> + uint32 height @ws("Surface height", surface_height);
> surface_fmt format;
> surface_flags flags;
> } @ctype(SpiceMsgSurfaceCreate) surface_create;
>
> message {
> - uint32 surface_id;
> + uint32 surface_id @ws("Surface ID", surface_id);
> } @ctype(SpiceMsgSurfaceDestroy) surface_destroy;
>
> message {
> StreamDataHeader base;
> - uint32 width;
> - uint32 height;
> + uint32 width @ws("Stream width", stream_width);
> + uint32 height @ws("Stream height", stream_height);
> Rect dest;
> - uint32 data_size;
> + uint32 data_size @ws("Stream data size", display_stream_data_size);
> uint8 data[data_size] @end @nomarshal;
> } stream_data_sized;
>
> message {
> - uint16 count;
> - uint16 max_allowed;
> + uint16 count @ws("Monitor count", monitor_config_count);
> + uint16 max_allowed @ws("Max.allowed monitors", monitor_config_max_allowed);
> Head heads[count] @end;
> } monitors_config;
>
> @@ -909,23 +925,23 @@ channel DisplayChannel : BaseChannel {
> } draw_composite;
>
> message {
> - uint32 stream_id;
> - uint32 unique_id;
> - uint32 max_window_size;
> - uint32 timeout_ms;
> + uint32 stream_id @ws("Stream ID", display_stream_id);
> + uint32 unique_id @ws("Unique ID", display_stream_report_unique_id);
> + uint32 max_window_size @ws("Max window size", display_stream_report_max_window_size);
> + uint32 timeout_ms @ws("Timeout (ms)", display_stream_report_timeout);
> } stream_activate_report;
>
> client:
> message {
> - uint8 pixmap_cache_id;
> - int64 pixmap_cache_size; //in pixels
> - uint8 glz_dictionary_id;
> - int32 glz_dictionary_window_size; // in pixels
> + uint8 pixmap_cache_id @ws("Cache ID", display_init_cache_id);
> + int64 pixmap_cache_size @ws("Cache size (pixels)", display_init_cache_size); //in pixels
> + uint8 glz_dictionary_id @ws("GLZ Dictionary ID", display_init_glz_dict_id);
> + int32 glz_dictionary_window_size @ws("Dictionary window size", display_init_dict_window_size); // in pixels
> } init = 101;
>
> message {
> uint32 stream_id;
> - uint32 unique_id;
> + uint32 unique_id @ws("Unique ID", display_stream_report_unique_id);
> uint32 start_frame_mm_time;
> uint32 end_frame_mm_time;
> uint32 num_frames;
> @@ -940,10 +956,10 @@ channel DisplayChannel : BaseChannel {
> };
>
> flags16 keyboard_modifier_flags {
> - SCROLL_LOCK,
> - NUM_LOCK,
> - CAPS_LOCK
> -};
> + SCROLL_LOCK @ws_desc("Scroll Lock"),
> + NUM_LOCK @ws_desc("Num Lock"),
> + CAPS_LOCK @ws_desc("Caps Lock")
> +} @ws("Keyboard modifiers", keyboard_modifiers);
>
> enum8 mouse_button {
> INVALID,
> @@ -958,16 +974,22 @@ flags16 mouse_button_mask {
> LEFT,
> MIDDLE,
> RIGHT
> +} @ws("Mouse button state", button_state) @ws_base(DEC);
> +
> +struct WSMousePosition {
> + Point pt;
> + mouse_button_mask buttons_state;
> + uint8 display_id @ws("Mouse display ID", mouse_display_id);
> };
>
> channel InputsChannel : BaseChannel {
> client:
> message {
> - uint32 code;
> + uint32 code @ws("Key scan code", keyboard_key_code) @ws_base(DEC_HEX);
> } @ctype(SpiceMsgcKeyDown) key_down = 101;
>
> message {
> - uint32 code;
> + uint32 code @ws("Key scan code", keyboard_key_code) @ws_base(DEC_HEX);
> } @ctype(SpiceMsgcKeyUp) key_up;
>
> message {
> @@ -986,8 +1008,8 @@ channel InputsChannel : BaseChannel {
> uint32 x;
> uint32 y;
> mouse_button_mask buttons_state;
> - uint8 display_id;
> - } @ctype(SpiceMsgcMousePosition) mouse_position;
> + uint8 display_id @ws("Mouse display ID", mouse_display_id);
> + } @ctype(SpiceMsgcMousePosition) @ws_as(WSMousePosition) mouse_position;
>
> message {
> mouse_button button;
> @@ -1019,22 +1041,22 @@ enum8 cursor_type {
> COLOR16,
> COLOR24,
> COLOR32,
> -};
> +} @ws("Cursor type", cursor_type) @ws_base(HEX);
>
> flags16 cursor_flags {
> NONE, /* Means no cursor */
> CACHE_ME,
> FROM_CACHE,
> -};
> +} @ws("Cursor flags", cursor_flags);
>
> struct CursorHeader {
> - uint64 unique;
> + uint64 unique @ws("Cursor unique ID", cursor_unique) @ws_base(HEX);
> cursor_type type;
> - uint16 width;
> - uint16 height;
> - uint16 hot_spot_x;
> - uint16 hot_spot_y;
> -};
> + uint16 width @ws("Cursor width", cursor_width);
> + uint16 height @ws("Cursor height", cursor_height);
> + uint16 hot_spot_x @ws("Cursor hotspot X", cursor_hotspot_x);
> + uint16 hot_spot_y @ws("Cursor hotspot Y", cursor_hotspot_y);
> +} @ws_desc("Cursor Header");
>
> struct Cursor {
> cursor_flags flags;
> @@ -1042,16 +1064,16 @@ struct Cursor {
> case !NONE:
> CursorHeader header;
> } u @anon;
> - uint8 data[] @as_ptr(data_size);
> -};
> + uint8 data[] @as_ptr(data_size) @ws_txt("Cursor data (%u bytes)", data.nelements);
> +} @ws_desc("RedCursor");
>
> channel CursorChannel : BaseChannel {
> server:
> message {
> Point16 position;
> - uint16 trail_length;
> - uint16 trail_frequency;
> - uint8 visible;
> + uint16 trail_length @ws("Cursor trail length", cursor_trail_len);
> + uint16 trail_frequency @ws("Cursor trail frequency", cursor_trail_freq);
> + uint8 visible; /* TODO strange...*/
This TODO is fairly vague ;)
> Cursor cursor;
> } init = 101;
>
> @@ -1070,12 +1092,12 @@ channel CursorChannel : BaseChannel {
> Empty hide;
>
> message {
> - uint16 length;
> - uint16 frequency;
> + uint16 length @ws("Cursor trail length", cursor_trail_len);
> + uint16 frequency @ws("Cursor trail frequency", cursor_trail_freq);
> } trail;
>
> message {
> - uint64 id;
> + uint64 id @ws("Cursor ID", cursor_id);
> } @ctype(SpiceMsgDisplayInvalOne) inval_one;
>
> Empty inval_all;
> @@ -1086,40 +1108,40 @@ enum16 audio_data_mode {
> RAW,
> CELT_0_5_1,
> OPUS,
> -};
> +} @ws("Mode", audio_mode);
>
> enum16 audio_fmt {
> INVALID,
> S16,
> -};
> +} @ws("Format", audio_format);
>
> message AudioVolume {
> - uint8 nchannels;
> - uint16 volume[nchannels] @end;
> + uint8 nchannels @ws("Channels", audio_channels);
> + uint16 @ws("Volume", audio_volume) volume[nchannels] @end @ws_desc("Volume Array");
> };
>
> message AudioMute {
> - uint8 mute;
> + uint8 mute @ws("Mute", audio_mute);
> };
>
> channel PlaybackChannel : BaseChannel {
> server:
> message {
> - uint32 time;
> - uint8 data[] @as_ptr(data_size);
> + uint32 time @ws("Timestamp", audio_timestamp);
> + uint8 data[] @as_ptr(data_size) @ws("data", data) @ws_type(BYTES);
> } @ctype(SpiceMsgPlaybackPacket) data = 101;
>
> message {
> - uint32 time;
> + uint32 time @ws("Timestamp", audio_timestamp);
> audio_data_mode mode;
> uint8 data[] @as_ptr(data_size);
> } mode;
>
> message {
> - uint32 channels;
> + uint32 channels @ws("Channels", audio_channels);
> audio_fmt format;
> - uint32 frequency;
> - uint32 time;
> + uint32 frequency @ws("Frequency", audio_frequency);
> + uint32 time @ws("Timestamp", audio_timestamp);
> } start;
>
> Empty stop;
> @@ -1127,7 +1149,7 @@ channel PlaybackChannel : BaseChannel {
> AudioMute mute;
>
> message {
> - uint32 latency_ms;
> + uint32 latency_ms @ws("Latency (ms)", audio_latency);
> } latency;
> };
>
> @@ -1149,7 +1171,7 @@ channel RecordChannel : BaseChannel {
> } @ctype(SpiceMsgcRecordPacket) data = 101;
>
> message {
> - uint32 time;
> + uint32 time @ws("Timestamp", audio_timestamp);
> audio_data_mode mode;
> uint8 data[] @as_ptr(data_size);
> } mode;
> @@ -1357,16 +1379,16 @@ channel UsbredirChannel : SpicevmcChannel {
> channel PortChannel : SpicevmcChannel {
> client:
> message {
> - uint8 event;
> + uint8 event @ws("Event", port_event);
> } event = 201;
> server:
> message {
> uint32 name_size;
> - uint8 *name[name_size] @zero_terminated @marshall @nonnull;
> - uint8 opened;
> + uint8 *name[name_size] @zero_terminated @marshall @nonnull @ws("Name", main_name) @ws_type(STRINGZ);
> + uint8 opened @ws("Opened", port_opened);
> } init = 201;
> message {
> - uint8 event;
> + uint8 event @ws("Event", port_event);
> } event;
> };
>
> --
> 2.1.0
>
> _______________________________________________
> Spice-devel mailing list
> Spice-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/spice-devel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/spice-devel/attachments/20150730/70f1a88f/attachment-0001.sig>
More information about the Spice-devel
mailing list