Readme for M918X linux shared libaries and API.  

Supported Devices:
Agilent M9181, M9182, M9183 PXI Multimeters
Signametrics SM2060, SM2064, SMX2055, SMX2060, SMX2064 PCI and PXI Multimeters
Signametrics SMX4030, SMX4032 Switch Cards (See the SMX403X directory and README)  


1.0 Installation:
------------------
1.1 Install the M918X kernel module.  
    See /M918X_1.X.X/README-drv.

1.2 Install User Libraries and Headers
    
    Run the library install script, or manually copy the libraries 
    and header files to your desired location.  This may require administrative
    privileges.   
    
    > ./M918X_1.X.X/install_lib.sh

    This installation script has been tested on RHEL5.  It is unlikely to 
    work on all varieties of linux.  You can open the script to see what files 
    need to be copied.  

2.0 GETTING STARTED:
---------------------

2.1 Compiling and running a sample program
    
    compile the sample program

    > cd ./M918X-1.X.X/samples
    > make

    run the sample program
    
    > ./sm-vdc 

    The program should output readings made in the VDC mode.  


2.2 Creating your own programs
    
    Header files are installed at /usr/include/agilent .
    More extensive documentation of the API is located in the user manual. The 
    API is similar to the M918X legacy compatible Windows driver, and to the
    Signametrics SMX206X Series API.   

    To write programs that access the DMM, you must include SMX2060.h and DMMUser.h.  
    The programs must be linked to either libSM206X.so or libSM206X.a.  
    libSM206X.so is installed in /usr/lib .  

    See the programs in the ./samples directory and their Makefile for an example of how write 
    and compile programs for your DMM.


3.0 LINUX SPECIFIC API FUNCTIONS:
----------------------------------

3.1 DMMSetSleepPeriod(long usecs)

This function allows the user to specify amount of time the library will sleep when waiting for a 
response from the DMM, or whether to remain in a busy loop, not sleeping at all.  This allows 
one to customize the application speed versus computer cpu performance.  For most applications 
this is unnecessary, however on occasion it is very useful. Setting a sleep for even for 0 microseconds 
can limit the maximum attainable measurement rate. However not sleeping will cause the software to use 
significantly more processing power.  

The default behavior is usecs = 0.  That is, the library will call usleep(0) when waiting for a response
from the dmm.  A negative value [i.e. DMMSetSleepPeriod(-1)] will cause the software to not call usleep 
at all, while a positive value [i.e. DMMSetSleepPeriod(10)] will cause the software to sleep for that 
many microseconds when waiting for a response.   
