Meta query

From XDIF

Jump to: navigation, search

This is part of OSC Plug And Play.

Contents

Introduction

The meta queries should let clients automatically discover the features of a server (a little bit like a C header gives type information on functions).

Agreed standard

OSCit

Here is the list of meta methods currently used in OSCit:

/.reply

This is used for return values. The format is:

/.reply "/original/url", [arguments]

The content of arguments depends on the original method.

/.list_with_type

This is used to get a list of children under a specific path with the full type:

query: /.list_with_type "/amp"
reply: /.reply "/.list_with_type", [["gain", [...]], ["filter", [...]]]

Note that the reply for this meta method uses "[" and "]" OSC typetags to properly group arguments. This syntax may look complicated to read but it is actually very efficient because the initial parser can directly produce the right groups of data that will be managed in the different parts of the software without any guessing work.

The content of the type information in [...] varies. Actually, the typetags are used to find the type but this is a bad idea because it does not scale. Here is what I intend to do (in order to support subscription):

General format will be: ["typename", arg, arg, ...]. For example:

  • range ["range", current_value, min, max, info string]. Usually controlled with a slider or pad.
  • real ["real", current_value, info string]. Usually controlled with an entry field.
  • select ["select", current_value, possible values, info string]. Usually implemented with a drop-down menu. Possible values is an array (example: ["rgb", "yuv", "hsb"]).
  • switch ["switch", current_value, info string]. Usually implemented with a button or check box. On state is "1", Off state is "0".

TODO: find a format for generic matrix data. Both for encoding in OSC stream and type.


/.list

Return the list of sub-paths under a given path (same as "/osc/schema" in AVBC) :

query: /.list "/amp"
reply: /.reply "/.list", ["/amp", ["gain", "filter", ...]]

/.type

Same as "/.list_with_type" but only returns information on a single url. Same as "/osc/limits" in AVBC.

query: /.type "/amp/gain"
reply: /.reply "/.type", ["/amp/gain", [...]]

AVBC

All "meta queries" for the AVBC protocol live under "/osc". These specifications are roughly based on uOSC.

/osc/schema/[xxxx]

A client can query any address' schema information by prefixing the address with "/osc/schema". The returned value is a list of strings listing the sub-urls. If the string is suffixed with "/", this means that the url is a container. This feature is equivalent to ".list" in OSCit.

/osc/limits/[xxxx]

A client can get information on the limits of the "xxxx" url. Same functionality as "/.type" in OSCit.

The return values are encoded as "key/value" pairs:

"/osc/limits/media/sink/1/level" ,[sssfsfsfss]
"type" "f" "min" -100.0 "max" 10.0 "inc" 0.1 "units" "dB"

/osc/ping

This url is used to make sure the server is alive. The server should respond with "/osc/pong".

/osc/device

AVBC uses a couple of urls with this prefix to give information on the device (name, version, etc).

Personal tools