.. _rci:

********************
RCI
********************

.. index:: presentations; RCI

Overview
====================

The RCI Handler presentation allows for interaction with the iDigi Dia
through RCI.

Configuration
====================

A typical RCI configuration block looks like this::

    - name: rci_handler
      driver: presentations.rci.rci_handler:RCIHandler
      settings:
          target_name: idigi_dia

Settings
--------------------

target_name (optional, default: idigi_dia)
    The target specified in the RCI request so that it gets forwarded to the handler.

Usage
====================
The RCIHandler allows for channel dumps, querying a channel, and setting
a channel. It also includes several requests to interact with the logging 
sub-system to read and move inside of a determined log file. 

The RCIHandler parses an incoming XML formatted message
to determine what you wish to do.  If an error is encountered, the request
you sent will have a child error element specifying the error information.

Commands
--------------------
Channel Dump
++++++++++++++++++++
**Request** code::

    <channel_dump/>

**Response** code::

    <channel_dump>
        <device name="...">
            <channel name="..." value="..." units="..." timestamp="..."/>
            ...
        </device>
        ...
    </channel_dump>

Channel Get
++++++++++++++++++++
**Request** code::

    <channel_get name="..."/>

**Response** code::

    <channel_get name="..." value="..." units="..." timestamp="..."/>

Channel Set
++++++++++++++++++++
**Request** code::

    <channel_set name="..." value="..."/>

**Response** code::

    <channel_set name="..." value="..." units="..." timestamp="..."/>

Channel Refresh
++++++++++++++++++++
**Request** code::

    <channel_refresh name="..."/>

**Response** code::

    <channel_refresh name="..." />

Channel Info
++++++++++++++++++++
**Request** code::

    <channel_info name="..."/>

**Response** code::

    <channel_info name="...">
        <permissions>
            <get/>
            <set/>
            <refresh/>
        <permissions>
        <options>
            <auto_timestamp/>
            <do_not_log_data/>
        <options>
    </channel_info>

Logger List
++++++++++++++++++++
**Request** code::

    <logger_list/>

**Response** code::

    <logger_list>
        <logger name="..."/>
        ...
    </logger_list>

Logger Set
++++++++++++++++++++
**Request** code::

    <logger_set name"...">

**Response** code::

    <logger_set name="...">
    </logger_set>

Logger Dump
++++++++++++++++++++
**Request** code::

    <logger_dump/>

**Response** code::

    <logger_dump name="...">
        <device name="...">
            <channel name="..." value="..." units="..." timestamp="..."/>
            ...
        </device>
        ...
    </logger_dump>

Logger Next
++++++++++++++++++++
**Request** code::

    <logger_next/>

**Response** code::

    <logger_next name="...">
    </logger_next>

Logger Previous
++++++++++++++++++++
**Request** code::

    <logger_prev/>

**Response** code::

    <logger_prev name="...">
    </logger_prev>

Logger Rewind
++++++++++++++++++++
**Request** code::

    <logger_rewind/>

**Response** code::

    <logger_rewind name="...">
    </logger_rewind>


