Overview

=========
PySECSGEM
=========

This set of code was written in order to test SECSGEM compliant equipement
and host. By extent it could serve to replace secsgem layer.

Public
------

Equipment developpers
~~~~~~~~~~~~~~~~~~~~~

- Simulate host
- make unit test
- check SEMI compliancy

Host developpers
~~~~~~~~~~~~~~~~

- Simulate equipment
- Discover equipments capability, variables, statemachine, flow

SEMI standard writter
~~~~~~~~~~~~~~~~~~~~~

That's part of people are not in the public of this application. however if
the application was remodeled to implement a grammar parser this tool could
be useful for standard writter:

- write a new transport layer

Presentation
------------

SSHELL
~~~~~~

SShell stands for SECSGEM Shell. This application allowed you to send and
receive SECSGEM messages as easily as you would send message with a chat app.

The message can be prepared in the `secsim.sml` file or dynamically on runtime.

Build an equipment simulator
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Look at the module ``equipments.essais`` to understand how to build an equipment
simulator. Then open SShell to use the simulator.

Advantage compared to other solution
""""""""""""""""""""""""""""""""""""

* Auto response based on message input
* Auto response based on state changed
* Dynamic compilation of message to send
* Hot code loading of replies functions (no reload)

Build a host simulator
~~~~~~~~~~~~~~~~~~~~~~

TODO: Think the best design

Equipment Characterization
~~~~~~~~~~~~~~~~~~~~~~~~~~

The characterization equipment is done via the hosts.characterizer module.

This module contains few classes:

    - `Host`
    - `EquipementItems`: will seemlessly retrieve information about SV, EC, AL
      and DV. These information are programmaticaly queryable; it will help
      during a discovery phase of an equipment.
    - InteractiveRunner: For the moment it's only a tool to help human to send
      message.
    - Test classes: that's some basic unit test you would like to run on every
      equipment. And it's here also as sample for unit test developper.

Samples
"""""""