Disclaimer:
--------------
THE SOFTWARE IS RELEASED INTO THE PUBLIC DOMAIN.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, 
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT, 
SECURITY, SATISFACTORY QUALITY, AND FITNESS FOR A PARTICULAR PURPOSE. 
IN NO EVENT SHALL EPSON BE LIABLE FOR ANY LOSS, DAMAGE OR CLAIM, ARISING FROM OR 
IN CONNECTION WITH THE SOFTWARE OR THE USE OF THE SOFTWARE.

Test machine:
--------------
  UART Interface,
    Ubuntu 14 running in Oracle VirtualBox on Core i7 Win 8.1 PC
    Raspberry Pi 2 Model B v1.1 (with Epson IMU USB evalboard)
    Raspberry Pi Model B+  v1.2 (with Epson IMU USB evalboard)
  
Requirements:
--------------
  For using IMU UART interface, this should work on any generic unix (POSIX) serial port with gcc

Important for UART Interface:
-----------------------------
1. The application assumes that the Epson IMU is connected to serial tty (UART) either through USB evaluation board or 
   directly to the UART port on an embedded system:
    
    Compile the application:
        A. Run "make" specifying the <target> with "MODEL=" parameter.
           Supported <target> options are: 
                screen or 
                csvlogger or 
                regdump
           Supported "MODEL=" parameters are:
                G350
                G352
                G362
                G354
                G364DC0
                G364DCA
                G320
                V340
           If "MODEL=" is not specified then it assumes MODEL=G354
           For example:
                make screen MODEL=G362
                make csvlogger MODEL=V340
                make regdump MODEL=G364DC0
                make clean  <-- recommended before creating new builds
        C. The executable will be in the found in the same folder as the Makefile and source files.
        
    Note: Modify and configure sensor output settings by changing the "defines" in sensorInit() function in sensor_epsonxxxx.c

How to run the program:
-----------------------
1. Run the executable from console (may require root access to execute if regular user can not access TTY)
   sudo ./<exe filename>

2. The default csvlogger program creates CSV log of sensor data in a processed scaled log file for 1000 samples:
       Output date rate = 125Hz
       Filter Tap = Moving Average TAP16 or TAP32 depending on the IMU model
       
       Output = For G354/G364/G320/G352/G362 is 32-bit Gyro X,Y,Z Accel X,Y,Z ResetCounter Checksum
                For V340/G350 is 16-bit Gyro X,Y,Z Accel X,Y,Z Sample Counter
   
File Listing:
--------------
hcl.h                       - Dummy abstraction layer header (work in progress) which defines delay() functions
hcl_linux.c                 - Abstraction layer for Linux
hcl_gpio.c                  - Abstraction layer for GPIO control functions typically for connection to RESET, DRDY, SCS# 
                              This a dummy assignment of pins RESET, DRDY, SCS#
                              Modify or replace if GPIO pins are to be used
hcl_gpio.h                  - Header for GPIO abstraction
hcl_uart.c                  - Abstraction layer specific for UART IF which uses standard unix termios library calls
hcl_uart.h                  - Header for UART IF abstraction
main_csvlogger.c            - Test application - Initialize IMU, and read sensor data to CSV log file
main_regdump.c              - Test application - Output register settings to console for debug purpose
main_screen.c               - Test application - Initialize IMU, and read sensor data to console
Makefile                    - For make utility to compile test applications
readme.txt                  - This file.
sensor_epsonCommon.c        - Common functions for Epson IMU
sensor_epsonCommon.h        - Header for common C functions of Epson IMU

*** Modify sensorInit() to customize IMU configuration in sensor_epsonImuxxxx.c ***
sensor_epsonG320.c          - Model specific functions for Epson M-G320
sensor_epsonG320.h          - Model specific header for Epson M-G320
sensor_epsonG350.c          - Model specific functions for Epson M-G350
sensor_epsonG350.h          - Model specific header for Epson M-G350
sensor_epsonG352.c          - Model specific functions for Epson M-G352
sensor_epsonG352.h          - Model specific header for Epson M-G352
sensor_epsonG362.c          - Model specific functions for Epson M-G362
sensor_epsonG362.h          - Model specific header for Epson M-G362
sensor_epsonG354.c          - Model specific functions for Epson M-G354
sensor_epsonG354.h          - Model specific header for Epson M-G354
sensor_epsonG364.c          - Model specific functions for Epson M-G364
sensor_epsonG364.h          - Model specific header for Epson M-G364
sensor_epsonV340.c          - Model specific functions for Epson M-G340
sensor_epsonG340.h          - Model specific header for Epson M-V340
***********************************************************************************
sensor_epsonUart.c          - UART specific functions 

Change Record:
--------------
2017-02-07  v1.0    - Initial release


Author R. Chow
