Chapter 2. Commands and Results

Table of Contents
2.1. Asynchronous Command and Response Interface (ACRI)
2.1.1. Preparing for Commanding
2.1.1.1. Memory Allocation
2.1.1.2. User Defined Result Processing Function
2.1.1.3. Initializing a LIOX Handle
2.1.2. Adding Commands to the Command List
2.1.3. Executing a Command List
2.1.4. Processing Results
2.1.4.1. Navigating Result Lists
2.1.4.2. Decoding Result Items
2.2. Synchronous Command and Response Interface (SCRI)

This section describes the sending of commands and the recieving of results within the LICS. Commands are bit sequences sent down to the front end electronics (register reads, register writes and dataless commands ). Every command generates a result within the LICS – register writes and dataless commands generate a simple "command successfully transmitted" result, while register read commands return the register value as a result.

Some definitions used with in this section[1]

Command Item or simply Command

A single command sent to the front end electronics.

Command List

An ordered list of command items containing one or more command items.

Result Item or simply Result

A single result from the LCB in reply to a command item.

Result List

An ordered list of result items from the LCB in reply to a command list.

I/O Transaction

An indivisable unit of work consisting of a command list and its associated result list.

The LCB has the capability of bundling several command items together and sending them sequentially as a command list. After all the commands are processed the LCB sends a notification message to the driver. This arrangement allows for asynchronous commanding, i.e. a user can queue a command list to the LCB, continue to do other work and then be notified asynchronously that the queued commands are completely processed.

For the case when a user only wants to send a single command it is purposed to also offer a synchronous interface to the LICS. With this interface a user would queue a single command to the LCB and wait for the command to complete. At this time it appears straight forward to build the synchronous interface on top of the asynchronous interface.

Notes

[1]

All definitions, package names, function names and terminology are subject to change at the whim of the author.