On Thu, Jul 23, 2015 at 04:54:26PM +0100, Frediano Ziglio wrote: > Signed-off-by: Frediano Ziglio <fziglio@xxxxxxxxxx> > --- > 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); > +} > +@ws_txt("RECT: (%d-%d, %d-%d)", left, top, right, bottom) > +@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@xxxxxxxxxxxxxxxxxxxxx > http://lists.freedesktop.org/mailman/listinfo/spice-devel
Attachment:
pgpAI7r3ScpfZ.pgp
Description: PGP signature
_______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/spice-devel