# -*- Mode: Python -*-
# vim: filetype=python
#

##
# *****************
# Character devices
# *****************
##

{ 'include': 'sockets.json' }

##
# @ChardevInfo:
#
# Information about a character device.
#
# @label: the label of the character device
#
# @filename: the filename of the character device
#
# @frontend-open: shows whether the frontend device attached to this
#     backend (e.g. with the chardev=... option) is in open or closed
#     state (since 2.1)
#
# .. note:: @filename is encoded using the QEMU command line character
#    device encoding.  See the QEMU man page for details.
#
# Since: 0.14
##
{ 'struct': 'ChardevInfo',
  'data': { 'label': 'str',
            'filename': 'str',
            'frontend-open': 'bool' } }

##
# @query-chardev:
#
# Return information about current character devices.
#
# Since: 0.14
#
# .. qmp-example::
#
#     -> { "execute": "query-chardev" }
#     <- {
#           "return": [
#              {
#                 "label": "charchannel0",
#                 "filename": "unix:/var/lib/libvirt/qemu/seabios.rhel6.agent,server=on",
#                 "frontend-open": false
#              },
#              {
#                 "label": "charmonitor",
#                 "filename": "unix:/var/lib/libvirt/qemu/seabios.rhel6.monitor,server=on",
#                 "frontend-open": true
#              },
#              {
#                 "label": "charserial0",
#                 "filename": "pty:/dev/pts/2",
#                 "frontend-open": true
#              }
#           ]
#        }
##
{ 'command': 'query-chardev', 'returns': ['ChardevInfo'],
  'allow-preconfig': true }

##
# @ChardevBackendInfo:
#
# Information about a character device backend
#
# @name: The backend name
#
# Since: 2.0
##
{ 'struct': 'ChardevBackendInfo', 'data': {'name': 'str'} }

##
# @query-chardev-backends:
#
# Return information about character device backends.
#
# Since: 2.0
#
# .. qmp-example::
#
#     -> { "execute": "query-chardev-backends" }
#     <- {
#           "return":[
#              {
#                 "name":"udp"
#              },
#              {
#                 "name":"tcp"
#              },
#              {
#                 "name":"unix"
#              },
#              {
#                 "name":"spiceport"
#              }
#           ]
#        }
##
{ 'command': 'query-chardev-backends', 'returns': ['ChardevBackendInfo'] }

##
# @DataFormat:
#
# An enumeration of data format.
#
# @utf8: Data is a UTF-8 string (RFC 3629)
#
# @base64: Data is Base64 encoded binary (RFC 3548)
#
# Since: 1.4
##
{ 'enum': 'DataFormat',
  'data': [ 'utf8', 'base64' ] }

##
# @ringbuf-write:
#
# Write to a ring buffer character device.
#
# @device: the ring buffer character device name
#
# @data: data to write
#
# @format: data encoding (default 'utf8').
#
#     - base64: data must be base64 encoded text.  Its binary decoding
#       gets written.
#     - utf8: data's UTF-8 encoding is written
#     - data itself is always Unicode regardless of format, like any
#       other string.
#
# Since: 1.4
#
# .. qmp-example::
#
#     -> { "execute": "ringbuf-write",
#          "arguments": { "device": "foo",
#                         "data": "abcdefgh",
#                         "format": "utf8" } }
#     <- { "return": {} }
##
{ 'command': 'ringbuf-write',
  'data': { 'device': 'str',
            'data': 'str',
           '*format': 'DataFormat'} }

##
# @ringbuf-read:
#
# Read from a ring buffer character device.
#
# @device: the ring buffer character device name
#
# @size: how many bytes to read at most
#
# @format: data encoding (default 'utf8').
#
#     - base64: the data read is returned in base64 encoding.
#     - utf8: the data read is interpreted as UTF-8.
#       Bug: can screw up when the buffer contains invalid UTF-8
#       sequences, NUL characters, after the ring buffer lost data,
#       and when reading stops because the size limit is reached.
#     - The return value is always Unicode regardless of format, like
#       any other string.
#
# Returns: data read from the device
#
# Since: 1.4
#
# .. qmp-example::
#
#     -> { "execute": "ringbuf-read",
#          "arguments": { "device": "foo",
#                         "size": 1000,
#                         "format": "utf8" } }
#     <- { "return": "abcdefgh" }
##
{ 'command': 'ringbuf-read',
  'data': {'device': 'str', 'size': 'int', '*format': 'DataFormat'},
  'returns': 'str' }

##
# @ChardevCommon:
#
# Configuration shared across all chardev backends
#
# @logfile: The name of a logfile to save output
#
# @logappend: true to append instead of truncate (default to false to
#     truncate)
#
# @logtimestamp: true to insert timestamps into logfile
#     (default false) (since 11.0)
#
# Since: 2.6
##
{ 'struct': 'ChardevCommon',
  'data': { '*logfile': 'str',
            '*logappend': 'bool',
            '*logtimestamp': 'bool' } }

##
# @ChardevFile:
#
# Configuration info for file chardevs.
#
# @in: The name of the input file
#
# @out: The name of the output file
#
# @append: Open the file in append mode (default false to truncate)
#     (Since 2.6)
#
# Since: 1.4
##
{ 'struct': 'ChardevFile',
  'data': { '*in': 'str',
            'out': 'str',
            '*append': 'bool' },
  'base': 'ChardevCommon' }

##
# @ChardevHostdev:
#
# Configuration info for device and pipe chardevs.
#
# @device: The name of the special file for the device, i.e.
#     /dev/ttyS0 on Unix or COM1: on Windows
#
# Since: 1.4
##
{ 'struct': 'ChardevHostdev',
  'data': { 'device': 'str' },
  'base': 'ChardevCommon' }

##
# @ChardevSocket:
#
# Configuration info for (stream) socket chardevs.
#
# @addr: socket address to listen on (server=true) or connect to
#     (server=false)
#
# @tls-creds: the ID of the TLS credentials object (since 2.6)
#
# @tls-authz: the ID of the QAuthZ authorization object against which
#     the client's x509 distinguished name will be validated.  This
#     object is only resolved at time of use, so can be deleted and
#     recreated on the fly while the chardev server is active.  If
#     missing, it will default to denying access (since 4.0)
#
# @server: create server socket (default: true)
#
# @wait: wait for incoming connection on server sockets (default:
#     false).  Silently ignored with server: false.  This use is
#     deprecated.
#
# @nodelay: set TCP_NODELAY socket option (default: false)
#
# @telnet: enable telnet protocol on server sockets (default: false)
#
# @tn3270: enable tn3270 protocol on server sockets (default: false)
#     (Since: 2.10)
#
# @websocket: enable websocket protocol on server sockets
#     (default: false) (Since: 3.1)
#
# @reconnect-ms: For a client socket, if a socket is disconnected,
#     then attempt a reconnect after the given number of milliseconds.
#     Setting this to zero disables this function.
#     (default: 0) (Since: 9.2)
#
# Since: 1.4
##
{ 'struct': 'ChardevSocket',
  'data': { 'addr': 'SocketAddressLegacy',
            '*tls-creds': 'str',
            '*tls-authz'  : 'str',
            '*server': 'bool',
            '*wait': 'bool',
            '*nodelay': 'bool',
            '*telnet': 'bool',
            '*tn3270': 'bool',
            '*websocket': 'bool',
            '*reconnect-ms': 'int' },
  'base': 'ChardevCommon' }

##
# @ChardevUdp:
#
# Configuration info for datagram socket chardevs.
#
# @remote: remote address
#
# @local: local address
#
# Since: 1.5
##
{ 'struct': 'ChardevUdp',
  'data': { 'remote': 'SocketAddressLegacy',
            '*local': 'SocketAddressLegacy' },
  'base': 'ChardevCommon' }

##
# @ChardevMux:
#
# Configuration info for mux chardevs.
#
# @chardev: name of the base chardev.
#
# Since: 1.5
##
{ 'struct': 'ChardevMux',
  'data': { 'chardev': 'str' },
  'base': 'ChardevCommon' }

##
# @ChardevHub:
#
# Configuration info for hub chardevs.
#
# @chardevs: IDs to be added to this hub (maximum 4 devices).
#
# Since: 10.0
##
{ 'struct': 'ChardevHub',
  'data': { 'chardevs': ['str'] },
  'base': 'ChardevCommon' }

##
# @ChardevStdio:
#
# Configuration info for stdio chardevs.
#
# @signal: Allow signals (such as SIGINT triggered by ^C) be delivered
#     to QEMU.  Default: true.
#
# Since: 1.5
##
{ 'struct': 'ChardevStdio',
  'data': { '*signal': 'bool' },
  'base': 'ChardevCommon' }

##
# @ChardevSpiceChannel:
#
# Configuration info for spice vm channel chardevs.
#
# @type: kind of channel (for example vdagent).
#
# Since: 1.5
##
{ 'struct': 'ChardevSpiceChannel',
  'data': { 'type': 'str' },
  'base': 'ChardevCommon',
  'if': 'CONFIG_SPICE' }

##
# @ChardevSpicePort:
#
# Configuration info for spice port chardevs.
#
# @fqdn: name of the channel (see docs/spice-port-fqdn.txt)
#
# Since: 1.5
##
{ 'struct': 'ChardevSpicePort',
  'data': { 'fqdn': 'str' },
  'base': 'ChardevCommon',
  'if': 'CONFIG_SPICE' }

##
# @ChardevDBus:
#
# Configuration info for DBus chardevs.
#
# @name: name of the channel (following docs/spice-port-fqdn.txt)
#
# Since: 7.0
##
{ 'struct': 'ChardevDBus',
  'data': { 'name': 'str' },
  'base': 'ChardevCommon',
  'if': 'CONFIG_DBUS_DISPLAY' }

##
# @ChardevVC:
#
# Configuration info for virtual console chardevs.
#
# @width: console width, in pixels
#
# @height: console height, in pixels
#
# @cols: console width, in chars
#
# @rows: console height, in chars
#
# .. note:: The options are only effective when the VNC or SDL
#    graphical display backend is active.  They are ignored with the
#    GTK, Spice, VNC and D-Bus display backends.
#
# Since: 1.5
##
{ 'struct': 'ChardevVC',
  'data': { '*width': 'int',
            '*height': 'int',
            '*cols': 'int',
            '*rows': 'int' },
  'base': 'ChardevCommon' }

##
# @ChardevRingbuf:
#
# Configuration info for ring buffer chardevs.
#
# @size: ring buffer size, must be power of two, default is 65536
#
# Since: 1.5
##
{ 'struct': 'ChardevRingbuf',
  'data': { '*size': 'int' },
  'base': 'ChardevCommon' }

##
# @ChardevQemuVDAgent:
#
# Configuration info for QEMU vdagent implementation.
#
# @mouse: enable/disable mouse, default is enabled.
#
# @clipboard: enable/disable clipboard, default is disabled.
#
# Since: 6.1
##
{ 'struct': 'ChardevQemuVDAgent',
  'data': { '*mouse': 'bool',
            '*clipboard': 'bool' },
  'base': 'ChardevCommon',
  'if': 'CONFIG_SPICE_PROTOCOL' }

##
# @ChardevPty:
#
# Configuration info for pty implementation.
#
# @path: optional path to create a symbolic link that points to the
#     allocated PTY
#
# Since: 9.2
##
{ 'struct': 'ChardevPty',
  'data': { '*path': 'str' },
  'base': 'ChardevCommon' }

##
# @ChardevBackendKind:
#
# @file: regular files
#
# @serial: serial host device
#
# @parallel: parallel host device
#
# @pipe: pipes (since 1.5)
#
# @socket: stream socket
#
# @udp: datagram socket (since 1.5)
#
# @pty: pseudo-terminal
#
# @null: provides no input, throws away output
#
# @mux: (since 1.5)
#
# @hub: (since 10.0)
#
# @msmouse: emulated Microsoft serial mouse (since 1.5)
#
# @wctablet: emulated Wacom Penpartner serial tablet (since 2.9)
#
# @braille: Baum Braille device (since 1.5)
#
# @testdev: device for test-suite control (since 2.2)
#
# @stdio: standard I/O (since 1.5)
#
# @console: Windows console (since 1.5)
#
# @spicevmc: spice vm channel (since 1.5)
#
# @spiceport: Spice port channel (since 1.5)
#
# @qemu-vdagent: Spice vdagent (since 6.1)
#
# @dbus: D-Bus channel (since 7.0)
#
# @vc: virtual console (since 1.5)
#
# @ringbuf: memory ring buffer (since 1.6)
#
# @memory: synonym for @ringbuf (since 1.5)
#
# Features:
#
# @deprecated: Member @memory is deprecated.  Use @ringbuf instead.
#
# Since: 1.4
##
{ 'enum': 'ChardevBackendKind',
  'data': [ 'file',
            { 'name': 'serial', 'if': 'HAVE_CHARDEV_SERIAL' },
            { 'name': 'parallel', 'if': 'HAVE_CHARDEV_PARALLEL' },
            'pipe',
            'socket',
            'udp',
            'pty',
            'null',
            'mux',
            'hub',
            'msmouse',
            'wctablet',
            { 'name': 'braille', 'if': 'CONFIG_BRLAPI' },
            'testdev',
            'stdio',
            { 'name': 'console', 'if': 'CONFIG_WIN32' },
            { 'name': 'spicevmc', 'if': 'CONFIG_SPICE' },
            { 'name': 'spiceport', 'if': 'CONFIG_SPICE' },
            { 'name': 'qemu-vdagent', 'if': 'CONFIG_SPICE_PROTOCOL' },
            { 'name': 'dbus', 'if': 'CONFIG_DBUS_DISPLAY' },
            'vc',
            'ringbuf',
            { 'name': 'memory', 'features': [ 'deprecated' ] } ] }

##
# @ChardevFileWrapper:
#
# @data: Configuration info for file chardevs
#
# Since: 1.4
##
{ 'struct': 'ChardevFileWrapper',
  'data': { 'data': 'ChardevFile' } }

##
# @ChardevHostdevWrapper:
#
# @data: Configuration info for device and pipe chardevs
#
# Since: 1.4
##
{ 'struct': 'ChardevHostdevWrapper',
  'data': { 'data': 'ChardevHostdev' } }

##
# @ChardevSocketWrapper:
#
# @data: Configuration info for (stream) socket chardevs
#
# Since: 1.4
##
{ 'struct': 'ChardevSocketWrapper',
  'data': { 'data': 'ChardevSocket' } }

##
# @ChardevUdpWrapper:
#
# @data: Configuration info for datagram socket chardevs
#
# Since: 1.5
##
{ 'struct': 'ChardevUdpWrapper',
  'data': { 'data': 'ChardevUdp' } }

##
# @ChardevCommonWrapper:
#
# @data: Configuration shared across all chardev backends
#
# Since: 2.6
##
{ 'struct': 'ChardevCommonWrapper',
  'data': { 'data': 'ChardevCommon' } }

##
# @ChardevMuxWrapper:
#
# @data: Configuration info for mux chardevs
#
# Since: 1.5
##
{ 'struct': 'ChardevMuxWrapper',
  'data': { 'data': 'ChardevMux' } }

##
# @ChardevHubWrapper:
#
# @data: Configuration info for hub chardevs
#
# Since: 10.0
##
{ 'struct': 'ChardevHubWrapper',
  'data': { 'data': 'ChardevHub' } }

##
# @ChardevStdioWrapper:
#
# @data: Configuration info for stdio chardevs
#
# Since: 1.5
##
{ 'struct': 'ChardevStdioWrapper',
  'data': { 'data': 'ChardevStdio' } }

##
# @ChardevSpiceChannelWrapper:
#
# @data: Configuration info for spice vm channel chardevs
#
# Since: 1.5
##
{ 'struct': 'ChardevSpiceChannelWrapper',
  'data': { 'data': 'ChardevSpiceChannel' },
  'if': 'CONFIG_SPICE' }

##
# @ChardevSpicePortWrapper:
#
# @data: Configuration info for spice port chardevs
#
# Since: 1.5
##
{ 'struct': 'ChardevSpicePortWrapper',
  'data': { 'data': 'ChardevSpicePort' },
  'if': 'CONFIG_SPICE' }

##
# @ChardevQemuVDAgentWrapper:
#
# @data: Configuration info for QEMU vdagent implementation
#
# Since: 6.1
##
{ 'struct': 'ChardevQemuVDAgentWrapper',
  'data': { 'data': 'ChardevQemuVDAgent' },
  'if': 'CONFIG_SPICE_PROTOCOL' }

##
# @ChardevDBusWrapper:
#
# @data: Configuration info for DBus chardevs
#
# Since: 7.0
##
{ 'struct': 'ChardevDBusWrapper',
  'data': { 'data': 'ChardevDBus' },
  'if': 'CONFIG_DBUS_DISPLAY' }

##
# @ChardevVCWrapper:
#
# @data: Configuration info for virtual console chardevs
#
# Since: 1.5
##
{ 'struct': 'ChardevVCWrapper',
  'data': { 'data': 'ChardevVC' } }

##
# @ChardevRingbufWrapper:
#
# @data: Configuration info for ring buffer chardevs
#
# Since: 1.5
##
{ 'struct': 'ChardevRingbufWrapper',
  'data': { 'data': 'ChardevRingbuf' } }

##
# @ChardevPtyWrapper:
#
# @data: Configuration info for pty chardevs
#
# Since: 9.2
##
{ 'struct': 'ChardevPtyWrapper',
  'data': { 'data': 'ChardevPty' } }

##
# @ChardevBackend:
#
# Configuration info for the new chardev backend.
#
# @type: backend type
#
# Since: 1.4
##
{ 'union': 'ChardevBackend',
  'base': { 'type': 'ChardevBackendKind' },
  'discriminator': 'type',
  'data': { 'file': 'ChardevFileWrapper',
            'serial': { 'type': 'ChardevHostdevWrapper',
                        'if': 'HAVE_CHARDEV_SERIAL' },
            'parallel': { 'type': 'ChardevHostdevWrapper',
                          'if': 'HAVE_CHARDEV_PARALLEL' },
            'pipe': 'ChardevHostdevWrapper',
            'socket': 'ChardevSocketWrapper',
            'udp': 'ChardevUdpWrapper',
            'pty': 'ChardevPtyWrapper',
            'null': 'ChardevCommonWrapper',
            'mux': 'ChardevMuxWrapper',
            'hub': 'ChardevHubWrapper',
            'msmouse': 'ChardevCommonWrapper',
            'wctablet': 'ChardevCommonWrapper',
            'braille': { 'type': 'ChardevCommonWrapper',
                         'if': 'CONFIG_BRLAPI' },
            'testdev': 'ChardevCommonWrapper',
            'stdio': 'ChardevStdioWrapper',
            'console': { 'type': 'ChardevCommonWrapper',
                         'if': 'CONFIG_WIN32' },
            'spicevmc': { 'type': 'ChardevSpiceChannelWrapper',
                          'if': 'CONFIG_SPICE' },
            'spiceport': { 'type': 'ChardevSpicePortWrapper',
                           'if': 'CONFIG_SPICE' },
            'qemu-vdagent': { 'type': 'ChardevQemuVDAgentWrapper',
                              'if': 'CONFIG_SPICE_PROTOCOL' },
            'dbus': { 'type': 'ChardevDBusWrapper',
                      'if': 'CONFIG_DBUS_DISPLAY' },
            'vc': 'ChardevVCWrapper',
            'ringbuf': 'ChardevRingbufWrapper',
            'memory': 'ChardevRingbufWrapper' } }

##
# @ChardevReturn:
#
# Return info about the chardev backend just created.
#
# @pty: name of the slave pseudoterminal device, present if and only
#     if a chardev of type 'pty' was created
#
# Since: 1.4
##
{ 'struct' : 'ChardevReturn',
  'data': { '*pty': 'str' } }

##
# @chardev-add:
#
# Add a character device backend
#
# @id: the chardev's ID, must be unique
#
# @backend: backend type and parameters
#
# Since: 1.4
#
# .. qmp-example::
#
#     -> { "execute" : "chardev-add",
#          "arguments" : { "id" : "foo",
#                          "backend" : { "type" : "null", "data" : {} } } }
#     <- { "return": {} }
#
# .. qmp-example::
#
#     -> { "execute" : "chardev-add",
#          "arguments" : { "id" : "bar",
#                          "backend" : { "type" : "file",
#                                        "data" : { "out" : "/tmp/bar.log" } } } }
#     <- { "return": {} }
#
# .. qmp-example::
#
#     -> { "execute" : "chardev-add",
#          "arguments" : { "id" : "baz",
#                          "backend" : { "type" : "pty", "data" : {} } } }
#     <- { "return": { "pty" : "/dev/pty/42" } }
##
{ 'command': 'chardev-add',
  'data': { 'id': 'str',
            'backend': 'ChardevBackend' },
  'returns': 'ChardevReturn' }

##
# @chardev-change:
#
# Change a character device backend
#
# @id: the chardev's ID, must exist
#
# @backend: new backend type and parameters
#
# Since: 2.10
#
# .. qmp-example::
#
#     -> { "execute" : "chardev-change",
#          "arguments" : { "id" : "baz",
#                          "backend" : { "type" : "pty", "data" : {} } } }
#     <- { "return": { "pty" : "/dev/pty/42" } }
#
# .. qmp-example::
#
#     -> {"execute" : "chardev-change",
#         "arguments" : {
#             "id" : "charchannel2",
#             "backend" : {
#                 "type" : "socket",
#                 "data" : {
#                     "addr" : {
#                         "type" : "unix" ,
#                         "data" : {
#                             "path" : "/tmp/charchannel2.socket"
#                         }
#                      },
#                      "server" : true,
#                      "wait" : false }}}}
#     <- {"return": {}}
##
{ 'command': 'chardev-change',
  'data': { 'id': 'str',
            'backend': 'ChardevBackend' },
  'returns': 'ChardevReturn' }

##
# @chardev-remove:
#
# Remove a character device backend
#
# @id: the chardev's ID, must exist and not be in use
#
# Since: 1.4
#
# .. qmp-example::
#
#     -> { "execute": "chardev-remove", "arguments": { "id" : "foo" } }
#     <- { "return": {} }
##
{ 'command': 'chardev-remove',
  'data': { 'id': 'str' } }

##
# @chardev-send-break:
#
# Send a break to a character device
#
# @id: the chardev's ID, must exist
#
# Since: 2.10
#
# .. qmp-example::
#
#     -> { "execute": "chardev-send-break", "arguments": { "id" : "foo" } }
#     <- { "return": {} }
##
{ 'command': 'chardev-send-break',
  'data': { 'id': 'str' } }

##
# @VSERPORT_CHANGE:
#
# Emitted when the guest opens or closes a virtio-serial port.
#
# @id: device identifier of the virtio-serial port
#
# @open: true if the guest has opened the virtio-serial port
#
# .. note:: This event is rate-limited.
#
# Since: 2.1
#
# .. qmp-example::
#
#     <- { "event": "VSERPORT_CHANGE",
#          "data": { "id": "channel0", "open": true },
#          "timestamp": { "seconds": 1401385907, "microseconds": 422329 } }
##
{ 'event': 'VSERPORT_CHANGE',
  'data': { 'id': 'str',
            'open': 'bool' } }
