# SICS Metadata

This section describes the list command for retrieving and setting information about a running SICS server and the objects living in it. Each SICS object has metadata associated with it: some of it is generated by the system such as the object type, the interface it implements etc. Some additional metadata can be set by the user. Most commands print their data in the form of a Tcl-list. The list is terminated with the entry ENDLIST. This entry can be searched for by clients interested to find the end of the transmission. The general form of the metadata is a key value pair. The following commands are implemented:

list
  Prints a list of all SICS objects.
list server
  Prints a list of all server options.
list sicsobject
  Prints all the metadata associated with the SICS object sicsobject.
list sicsobject key
  Prints the value of the key associated with the SICS object sicsobject.
list setatt sicsobject key value
  Sets a user defined attribute with the name key and the value value for the SICS object sicsobject.
list metadatakey
  List all unique entries for the specified metadata key. System supplied metadata keys are:
  type
    The object class
  interface
    The object interfaces implemented by SICS
  This list may be augmented with user generated keys as defined through using the list setatt obj key value command. An example:

      list type

  will print all the objects classes available in the SICS server.
list metadatakey value
  List all the SICS objects which match the value for the metadatakey given as parameters. For example:

      list interface drivable

  will print all objects implementing the drivable interface in the SICS server.
list objstatus obj
  Will query the current state of the SICS object obj. This makes sense for things like motors, counter etc. which can be run asynchronously. The result can be idle, fault, busy etc.
list match mask
  Will print the names of all SICS objects where the name matches the wildcard given as mask.