DYNAMIC ENGINEERING 435 Park Dr., Ben Lomond, Calif Fax Est

Similar documents
DYNAMIC ENGINEERING 435 Park Dr., Ben Lomond, Calif Fax Est

DYNAMIC ENGINEERING 435 Park Dr., Ben Lomond, Calif Fax Est

DYNAMIC ENGINEERING 435 Park Dr., Ben Lomond, Calif Fax Est

DYNAMIC ENGINEERING 435 Park Dr., Ben Lomond, Calif Fax Est

DYNAMIC ENGINEERING 435 Park Dr., Ben Lomond, Calif Fax Est

& WizChan. Driver Documentation

DYNAMIC ENGINEERING 150 DuBois, Suite 3 Santa Cruz, CA (831) Fax (831) Est

DYNAMIC ENGINEERING 150 DuBois, Suite C, Santa Cruz, CA Fax Est

DYNAMIC ENGINEERING 435 Park Dr., Ben Lomond, Calif Fax Est

DYNAMIC ENGINEERING 150 DuBois St Suite 3, Santa Cruz CA Fax Est.

DYNAMIC ENGINEERING 435 Park Dr., Ben Lomond, Calif Fax Est

DYNAMIC ENGINEERING 150 DuBois St., Suite C Santa Cruz, CA (831) Fax (831) Est.

DYNAMIC ENGINEERING 150 DuBois, Suite 3 Santa Cruz, CA (831) Fax (831) Est

DYNAMIC ENGINEERING 150 DuBois, Suite 3 Santa Cruz, CA (831) Fax (831) Est.

DYNAMIC ENGINEERING 435 Park Dr., Ben Lomond, Calif Fax Est

PcieAltBase & PcieAltChan

PHLnkBase & PHLnkChan

ccpmc Parallel TTL BA18 Base & Channel

DYNAMIC ENGINEERING 150 DuBois St. Suite C, Santa Cruz, CA Fax Est.

DYNAMIC ENGINEERING 150 DuBois St., Suite C Santa Cruz, CA Fax Est.

DYNAMIC ENGINEERING 150 DuBois, Suite C Santa Cruz, CA (831) Fax (831) Est.

spwr_base & spwr_chan

DYNAMIC ENGINEERING 150 DuBois, Suite C Santa Cruz, CA (831) Fax (831) Est.

DYNAMIC ENGINEERING 150 DuBois, Suite C Santa Cruz, CA (831) Fax (831) Est

DYNAMIC ENGINEERING 150 DuBois Suite C Santa Cruz, CA (831) Fax (831) Est.

PMC Parallel TTL BA17 Base & Channel

DYNAMIC ENGINEERING. 150 DuBois, Suite C Santa Cruz, CA (831) Fax (831) Est.

IP-429-II ARINC 429 Interface 1-4 Transmitters 2-8 Receivers

Pci3Ip, Pci5Ip, Pc104pIp, Pc104p4Ip, cpci2ip, cpci4ip and PcieCar IndustryPack Carrier Device Drivers

PMC Parallel TTL BA16 Base. Channel Software Manual

Stand-Alone-Relay S-A-Relay

PMC-BiSerial-III SDLC 8-Channel SDLC Interface

PCIeBiSerial-L3com1 One-Channel Half Duplex Interface

PCI LVDS 8T 8 Channel LVDS Serial Interface Dynamic Engineering 435 Park Drive, Ben Lomond, CA

DYNAMIC ENGINEERING 150 DuBois St., Suite C Santa Cruz, CA (831) Fax (831) Est.

DYNAMIC ENGINEERING 435 Park Dr., Ben Lomond, Calif Fax Est

IP-Unidig-E Line Input/Output with LineSafe ESD Protection IndustryPack User s Manual

DYNAMIC ENGINEERING. 150 DuBois St. #3, Santa Cruz Ca Fax Est

Table Of Contents. Rev. 1.0 Page 2

DYNAMIC ENGINEERING 150 DuBois St. Suite 3, Santa Cruz Ca Fax Est

UPS25 API Manual for Windows 2000/XP/Vista

cpci-dart Base-Board & Daughter-Board

DYNAMIC ENGINEERING 435 Park Dr., Ben Lomond, Calif Fax Est

DM6816 Driver for Windows 98/NT4/2000/XP

DYNAMIC ENGINEERING 150 DuBois St. Suite 3, Santa Cruz, Calif Fax Est.

DYNAMIC ENGINEERING 150 DuBois St. Suite C Santa Cruz CA Fax Est.

DYNAMIC ENGINEERING 150 DuBois St. Suite C Santa Cruz CA Fax Est.

DM6810/DM6910 Driver for Windows 98/NT4/2000/XP User s Manual version 4.0

DYNAMIC ENGINEERING 150 DuBois St., Suite C Santa Cruz, CA (831) Fax (831) Est.

DYNAMIC ENGINEERING. 435 Park Dr., Ben Lomond, Calif Fax Est.

CC Pilot XS. Backlight interface description

tekdxfxsl FibreXtreme I/O Interface

Small Logger File System

Windows Device Driver and API Reference Manual

PMC-BiSerial-III SDLC

HUNT ENGINEERING HEL_UNPACK.LIB USER MANUAL

AN10955 Full-duplex software UART for LPC111x and LPC13xx

VMISFT-RFM2G. Drivers for Windows NT, 2000, 2003 Server and XP Operating Systems Installation Guide Document Number # Rev.

Use the Status Register when the firmware needs to query the state of internal digital signals.

DYNAMIC ENGINEERING 150 DuBois St. Suite C, Santa Cruz, Ca Fax Est.

ssj1708 User s Manual Version 1.3 Revised February 2nd, 2009 Created by the J1708 Experts

APPLICATION NOTE 9.15

Artisan Scientific is You~ Source for: Quality New and Certified-Used/Pre:-awned ECJuiflment

DI-148U. User's Manual. The way PC-based instrumentation should be. 8-Channel USB Data Acquisition Starter Kit. Manual Revision B

User Manual PMC-4U-CACI. Quad UART - Dual Synchronous Serial Data Interface PMC Module

CE56273 Associated Part Families: CY8C38xx/CY8C55xx Software: PSoC Creator Related Hardware: CY8CKIT-001 Author: Anu M D

Serial Converters WTS 1201/-CP. RS-232 to IEEE b Wireless Converter with WEP Encryption, and External Antenna

DYNAMIC ENGINEERING 150 DuBois St. Suite C, Santa Cruz, CA Fax Est.

DYNAMIC ENGINEERING 150 DuBois St. Suite C, Santa Cruz, Calif Fax Est.

TDRV006-SW-42. VxWorks Device Driver. 64 Digital Inputs/Outputs (Bit I/O) Version 4.0.x. User Manual. Issue December 2017

WinCE6.0 I2C SMDKV210. Revision 1.00 October Samsung Electronics Co., Ltd. All rights reserved.

Visualization Of Hard Disk Geometry And Master Boot Record

PCMCIA Flash Card User Guide

IP-QuadUART-485-PLRA

Title: Migrating to Delcom USB HID Chip Set (Generation 2) from the Delcom USB custom driver Chip Set (Generation 1).

BIUT TS2 Bus Interface Unit Tester. User's Manual Revision 1.0

Redirector User Guide

DYNAMIC ENGINEERING 150 DuBois, Suite 3 Santa Cruz, CA (831) Fax (831) Est

XS/SC26-2 Safety Controller Quick Start Guide

Sensoray Model 627 CompactPCI to PCI Adapter

INTELLITAPE USERS MANUAL. Intellitape USERS MANUAL Chief Automotive Technologies, Inc.

Powered Roller Controller for DeviceNet

PCM-COM232 SERIES. ComputerBoards, Inc. Revision 1 November 1997

XS/SC26-2 Safety Controller. Quick Start Guide

ATC-AD8100K. 8 Channel 100 khz Simultaneous Burst A/D in 16 bits IndustryPack Module REFERENCE MANUAL Version 1.

Software Specification. For. J1708 Driver

User Manual. IP BiSerial BA4. Bidirectional Serial Data Interface IP Module

R227. Terms Code Discount per Sales Code Qty Ordered AR-1227

UM PR533 - PCSC Tool. User manual COMPANY PUBLIC. Rev November Document information

PCI-HPDI32A-COS User Manual

DYNAMIC ENGINEERING 150 DuBois, Suite C Santa Cruz, CA (831) Fax (831) Est

AN3281 Application note

Using LPC11Axx EEPROM (with IAP)

MultiCom/MV 1.0. Comtrol RocketPort Guide. Copyright , Viewpoint Systems, Inc. All Rights Reserved

USB Debug Adapter. Power USB DEBUG ADAPTER. Silicon Laboratories. Stop. Run. Figure 1. Hardware Setup using a USB Debug Adapter

Addonics. 4X SATA Multilane PCI/PCI-X RAID5 Controller Card (ADS3GX4R5-ML) User s Guide Revision 1.1 T E C H N O L O G I E S

User Manual PMC-PARALLEL-TTL-BA17

USB Server User Manual

RC1000-PP. Function Reference Manual

Data Acquisition ATDAQ DLL. Windows 3.11/95/98/NT/2000 Software Drivers for ATAO and ATDAQ Cards FUNCTION REFERENCE MANUAL

Transcription:

DYNAMIC ENGINEERING 435 Park Dr., Ben Lomond, Calif. 95005 831-336-8891 Fax 831-336-3840 http://www.dyneng.com sales@dyneng.com Est. 1988 PciLvds2R/T Driver Documentation Win32 Driver Model Revision A Corresponding Hardware PCI-Lvds-2R: Revision C/D 10-2001-0204/0204 PCI-Lvds-2T: Revision C/D 10-2001-0903/0904

Lvds WDM Device Driver for the PCI-Lvds-2R & 2T PCI based 2 channel Lvds receive PCI based 2 channel Lvds transmit Dynamic Engineering 435 Park Drive Ben Lomond, CA 95005 831-336-8891 831-336-3840 FAX 2003-2004 by Dynamic Engineering. Trademarks and registered trademarks are owned by their respective manufacturers. Manual Revision A. Revised July 13, 2006. This document contains information of proprietary interest to Dynamic Engineering. It has been supplied in confidence and the recipient, by accepting this material, agrees that the subject matter will not be copied or reproduced, in whole or in part, nor its contents revealed in any manner or to any person except to meet the purpose for which it was delivered. Dynamic Engineering has made every effort to ensure that this manual is accurate and complete. Still, the company reserves the right to make improvements or changes in the product described in this document at any time and without notice. Furthermore, Dynamic Engineering assumes no liability arising out of the application or use of the device described herein. The electronic equipment described herein generates, uses, and can radiate radio frequency energy. Operation of this equipment in a residential area is likely to cause radio interference, in which case the user, at his own expense, will be required to take whatever measures may be required to correct the interference. Dynamic Engineering s products are not authorized for use as critical components in life support devices or systems without the express written approval of the president of Dynamic Engineering. This product has been designed to operate with compatible user-provided equipment. Connection of incompatible hardware is likely to cause serious damage. Embedded Hardware and Software Solutions Page 2 of 20

Table of Contents Introduction 5 Note 5 Driver Installation 5 Windows 2000 Installation 6 Windows XP Installation 6 Driver Startup 7 IO Controls 10 IOCTL_LV2R_GET_INFO 10 IOCTL_LV2R_GET_STATUS 10 IOCTL_LV2R_SET_MEMORY_CONFIG 10 IOCTL_LV2R_GET_MEMORY_CONFIG 10 IOCTL_LV2R_SET_CHANNEL_CONFIG 11 IOCTL_LV2R_GET_CHANNEL_CONFIG 11 IOCTL_LV2R_SET_TRIGGER_MODE 11 IOCTL_LV2R_GET_TRIGGER_MODE 11 IOCTL_LV2R_FILL_RAM 11 IOCTL_LV2R_SELF_TEST 12 IOCTL_LV2R_STREAM_POSITION 12 IOCTL_LV2R_SET_READ_OFFSET 12 IOCTL_LV2R_GET_READ_OFFSET 12 IOCTL_LV2R_SET_TIME_OUT 13 IOCTL_LV2R_GET_DATA_COUNTER 13 IOCTL_LV2R_CHANNEL_STOP_ACQ 13 IOCTL_LV2R_CHANNEL_START_ACQ 13 IOCTL_LV2R_RESET_ALL_INPUT_FIFOS 13 IOCTL_LV2R_IDENTIFY 13 IOCTL_LVDS_ISR_STATUS 14 IOCTL_LVDS_REGISTER_EVENT 14 IOCTL_LVDS_ENABLE_INTERRUPT 14 IOCTL_LVDS_DISABLE_INTERRUPT 14 IOCTL_LVDS_FORCE_INTERRUPT 15 IOCTL_LV2T_GET_INFO 15 IOCTL_LV2T_GET_STATUS 15 IOCTL_LV2T_SET_MEMORY_CONFIG 15 IOCTL_LV2T_GET_MEMORY_CONFIG 15 IOCTL_LV2T_SET_CHANNEL_CONFIG 16 Embedded Hardware and Software Solutions Page 3 of 20

IOCTL_LV2T_GET_CHANNEL_CONFIG 16 IOCTL_LV2T_SET_TIMING_CONFIG 16 IOCTL_LV2T_GET_TIMING_CONFIG 16 IOCTL_LV2T_SET_LOCAL_START 16 IOCTL_LV2T_SET_MASTER_START 17 IOCTL_LV2T_START_READBACK_MODE 17 IOCTL_LV2T_STOP_READBACK_MODE 17 IOCTL_LV2T_GET_TX_DATA 17 IOCTL_LV2T_SET_WRITE_OFFSET 18 IOCTL_LV2T_GET_WRITE_OFFSET 18 IOCTL_LV2T_RESET_ALL_OUTPUT_FIFOS 18 IOCTL_LV2T_IDENTIFY 18 Write 19 Read 19 WARRANTY AND REPAIR 19 Service Policy 20 Out of Warranty Repairs 20 For Service Contact: 20 Embedded Hardware and Software Solutions Page 4 of 20

Introduction The Lvds driver is a Win32 driver model (WDM) device driver for the PCI- Lvds-2R and PCI-Lvds-2T from Dynamic Engineering. The PCI-Lvds-2R/2T boards have a PLX 9054 to implement the PCI interface and DMA data I/O for the board. In addition there is are 9 Xilinx FPGAs to handle the data I/O, and memory interface for two channels of Lvds parallel data. When either of the PCI-Lvds-2R/2T are recognized by the PCI bus configuration utility, the Lvds driver will be started. Since both boards use the PLX-9054 to implement the PCI interface and therefore have the same vendor/device id numbers, a single driver must be used to service both boards. Once the driver is started it accesses the Timing register in the DMA Xilinx to distinguish between the two board types. A flag is set in the device object identifying the device as an 2R or 2T and one of two different GUIDs is registered to identify the device interface type. This allows the user to obtain handles to an explicit device by using the proper GUID and device number. IO Control calls (IOCTLs) are used to configure and read status from the PCI-Lvds-2R/2T. Read and Write calls are used to move blocks of data in and out. Note This documentation will provide information about all calls made to the driver, and how the driver interacts with the devices for each of these calls. For more detailed information on the hardware implementation, refer to the PCI-Lvds-2R and 2T user manuals (also referred to as the hardware manuals). Driver Installation There are several files provided in each driver package. These files include Lvds.sys, Lvds.inf, DDLv2r.h, DDLv2t.h, Lv2rGUID.h, Lv2tGUID.h, Lv2rDef.h, Lv2tDef.h, Lv2rTest.exe, Lv2tTest.exe, Lv2rTest source files, and Lv2tTest source files. Embedded Hardware and Software Solutions Page 5 of 20

Windows 2000 Installation Copy Lvds.inf and Lvds.sys to a floppy disk, or CD if preferred. With the PCI-Lvds-2R/2T hardware installed, power-on the PCI host computer and wait for the Found New Hardware Wizard dialogue window to appear. Select Next. Select Search for a suitable driver for my device. Select Next. Insert the disk prepared above in the desired drive. Select the appropriate drive e.g. Floppy disk drives. Select Next. The wizard should find the Lvds.inf file. Select Next. Select Finish to close the Found New Hardware Wizard. Windows XP Installation Copy Lvds.inf and Lvds.sys to a floppy disk, or CD if preferred. With the PCI-Lvds-2R/2T hardware installed, power-on the PCI host computer and wait for the Found New Hardware Wizard dialogue window to appear. Insert the disk prepared above in the desired drive. Select No when asked to connect to Windows Update. Select Next. Select Install the software automatically. Select Next. Select Finish to close the Found New Hardware Wizard. The DDLv2r.h and DDLv2t.h files are C header files that define the Application Program Interface (API) to the driver. The Lv2rGUID.h and Lv2tGUID.h files are C header files that define the device interface identifier for the PCI-Lvds-2R/2T. These files are required at compile time by any application that wishes to interface with the Lvds driver. The Lv2rDef.h and Lv2tDef.h files contain the relevant bit defines for the Lvds registers. These files are not needed for driver installation. Lv2rTest.exe and Lv2rTest.exe file are sample Win32 console applications that makes calls into the Lvds driver to test the driver calls without actually Embedded Hardware and Software Solutions Page 6 of 20

writing any application code. They are not required during the driver installation. Open a command prompt console window and type Lv2rTest or Lv2tTest d0 -? to display a list of commands (the exe file must be in the directory that the window is referencing). The commands are all of the form Lv2rTest dn im where n and m are the device number and driver ioctl number respectively. This application is intended to test the proper functioning of the driver calls, not for normal operation. Driver Startup Once the driver has been installed it will start automatically when the system recognizes the hardware. A handle can be opened to a specific board by using the CreateFile() function call and passing in the device name obtained from the system. The interface to the device is identified using globally unique identifiers (GUID), which are defined in Lv2rGUID.h and Lv2tGUID.h. Below is example code for opening a handle for Lv2r device 0. To obtain a handle to an PCI-Lvds-2T, substitute GUID_DEVINTERFACE_LV2T for GUID_DEVINTERFACE_LV2R in two places. // The maximum length of the device name for a given interface #define MAX_DEVICE_NAME 256 // Device number to find LONG devnum = 0; // Handle to the device object HANDLE hlv2r = INVALID_HANDLE_VALUE; // Return status from command LONG status; // Handle to device interface information structure HDEVINFO hdeviceinfo; // The actual symbolic link name to use in the createfile CHAR devicename[max_device_name]; // Size of buffer required to get the symbolic link name DWORD requiredsize; // Interface data structures for this device SP_DEVICE_INTERFACE_DATA interfacedata; PSP_DEVICE_INTERFACE_DETAIL_DATA pdevicedetail; hdeviceinfo = SetupDiGetClassDevs((LPGUID)&GUID_DEVINTERFACE_LV2R, NULL, NULL, DIGCF_PRESENT DIGCF_DEVICEINTERFACE); Embedded Hardware and Software Solutions Page 7 of 20

if(hdeviceinfo == INVALID_HANDLE_VALUE) { printf("**error: couldn't get class info, (%d)\n", GetLastError()); exit(-1); } interfacedata.cbsize = sizeof(interfacedata); // Find the interface for device devnum if(!setupdienumdeviceinterfaces(hdeviceinfo, NULL, (LPGUID)&GUID_DEVINTERFACE_LV2R, devnum, &interfacedata)) { status = GetLastError(); if(status == ERROR_NO_MORE_ITEMS) { printf("**error: couldn't find device(no more items), (%d)\n", devnum); SetupDiDestroyDeviceInfoList(hDeviceInfo); exit(-1); } else { printf("**error: couldn't enum device, (%d)\n", status); SetupDiDestroyDeviceInfoList(hDeviceInfo); exit(-1); } } // Get the details data to obtain the symbolic link name if(!setupdigetdeviceinterfacedetail(hdeviceinfo, &interfacedata, NULL, 0, &requiredsize, NULL)) { if(getlasterror()!= ERROR_INSUFFICIENT_BUFFER) { printf("**error: couldn't get interface detail, (%d)\n", GetLastError()); SetupDiDestroyDeviceInfoList(hDeviceInfo); exit(-1); } } Embedded Hardware and Software Solutions Page 8 of 20

// Allocate a buffer to get detail pdevicedetail = (PSP_DEVICE_INTERFACE_DETAIL_DATA)malloc(requiredSize); if(pdevicedetail == NULL) { printf("**error: couldn't allocate interface detail\n"); SetupDiDestroyDeviceInfoList(hDeviceInfo); exit(-1); } pdevicedetail->cbsize = sizeof(sp_device_interface_detail_data); // Get the detail info if(!setupdigetdeviceinterfacedetail(hdeviceinfo, &interfacedata, pdevicedetail, requiredsize, NULL, NULL)) { printf("**error: couldn't get interface detail(2), (%d)\n", GetLastError()); SetupDiDestroyDeviceInfoList(hDeviceInfo); free(pdevicedetail); exit(-1); } // Save the name lstrcpyn(devicename, pdevicedetail->devicepath, MAX_DEVICE_NAME); // Cleanup search free(pdevicedetail); SetupDiDestroyDeviceInfoList(hDeviceInfo); // Open driver // Create the handle to the device hlv2r = CreateFile(deviceName, GENERIC_READ GENERIC_WRITE, FILE_SHARE_READ FILE_SHARE_WRITE, NULL, OPEN_EXISTING, NULL, NULL); if(hlv2r == INVALID_HANDLE_VALUE) { printf("**error: couldn't open %s, (%d)\n", devicename, GetLastError()); exit(-1); } Embedded Hardware and Software Solutions Page 9 of 20

IO Controls The driver uses IO Control calls (IOCTLs) to configure the device. IOCTLs refer to a single Device Object which controls a single board. IOCTLs are called using the Win32 function DeviceIoControl(), and passing in the handle to the device opened with CreateFile(). IOCTLs generally have input parameters, output parameters, or both. Often a custom structure is used. The IOCTLs defined in this driver are as follows: IOCTL_LV2R_GET_INFO Function: Returns the Driver Version, Switch value, and Instance Number. Input: none Output: LV2R_DRIVER_DEVICE_INFO structure Notes: Switch value is the configuration of the onboard dipswitch that has been selected by the User (see the board silk screen for bit position and polarity). IOCTL_LV2R_GET_STATUS Function: Returns the current status information. Output: LV2R_STATUS structure Notes: See the bit and structure definitions in DDLv2r.h for information on interpreting this value. IOCTL_LV2R_SET_MEMORY_CONFIG Function: Sets the memory start and length for a receive channel. Input: LV2R_MEMORY structure Notes: The start and length values refer to SDRAM addressing, which is measured in 64-bit words. This call redefines the current active channel for RAM fill and streaming I/O. IOCTL_LV2R_GET_MEMORY_CONFIG Function: Returns the memory start and length for a receive channel. Output: LV2R_MEMORY structure Notes: The start and length values refer to SDRAM addressing, which is measured in 64-bit words. Embedded Hardware and Software Solutions Page 10 of 20

IOCTL_LV2R_SET_CHANNEL_CONFIG Function: Sets the channel configuration for a receive channel. Input: LV2R_CHANNEL_CONFIG structure Notes: See the structure definition in DDLv2r.h for information on determining the input parameter. This call redefines the current active channel for RAM fill and streaming I/O. IOCTL_LV2R_GET_CHANNEL_CONFIG Function: Returns the channel configuration for a receive channel. Output: LV2R_CHANNEL_CONFIG structure Notes: See the structure definition in DDLv2r.h for information on interpreting the output parameter. IOCTL_LV2R_SET_TRIGGER_MODE Function: Sets the trigger configuration for a receive channel. Input: LV2R_TRIGGER_CONFIG structure Notes: See the structure and enum definitions in DDLv2r.h for information on determining the input parameter. This call redefines the current active channel for RAM fill and streaming I/O. IOCTL_LV2R_GET_TRIGGER_MODE Function: Returns the trigger configuration for a receive channel. Output: LV2R_TRIGGER_CONFIG structure Notes: See the structure and enum definitions in DDLv2r.h for information on interpreting the output parameter. IOCTL_LV2R_FILL_RAM Function: Fills the memory space of the current active channel with a constant value. Input: Fill pattern (ULONG) Notes: This call uses the current memory configuration for the current active channel to determine the memory space to fill. Embedded Hardware and Software Solutions Page 11 of 20

IOCTL_LV2R_SELF_TEST Function: Fills the memory space of a receive channel with an incrementing pattern. Input: LV2R_SELF_TEST_CONFIG structure Notes: This call uses the current memory configuration for the specified channel to determine the memory space to fill. Unlike the previous call, the channel to fill is specified in the input data structure along with the starting 12-bit data pattern. Each subsequent data sample is incremented by one. Each 64-bit memory word contains four data samples. IOCTL_LV2R_STREAM_POSITION Function: Obtains streaming input buffer position. Input: LV2R_STREAM_SET_INFO structure Output: LV2R_STREAM_INFO structure Notes: Gets the current streaming mode acquire data position. If the input is set to Wait, the call completes when the SetPosition point has been reached. Multiple calls to this function can be made for a single streaming acquire. IOCTL_LV2R_SET_READ_OFFSET Function: Sets the read position and RAM bank for the next ReadFile call. Input: LV2R_READ_OFFSET structure Notes: Sets the offset from the start of a local RAM bank where the next ReadFile will begin. This call is valid for channels 0 and 4 only. If channel 0 is specified, RAM bank A is selected; if channel 4, RAM bank B. IOCTL_LV2R_GET_READ_OFFSET Function: Returns the read position and channel for the next ReadFile call. Input: None Output: LV2R_READ_OFFSET structure Notes: Returns the offset from the start of a local RAM bank and the channel where the next ReadFile will operate. This call is valid for channels 0 and 4 only. Embedded Hardware and Software Solutions Page 12 of 20

IOCTL_LV2R_SET_TIME_OUT Function: Sets the timeout value for a ReadFile call. Input: Timeout in milliseconds (ULONG) Notes: Sets the amount of time the driver should allow for an acquisition to complete. A value of zero causes the call to never timeout. IOCTL_LV2R_GET_DATA_COUNTER Function: Returns the number of data samples that have been stored during the current acquisition. Output: Cumulative stored sample counter value (ULONG) Notes: The data sample counter is reset when a new acquisition is enabled. IOCTL_LV2R_CHANNEL_STOP_ACQ Function: Stops the data acquisition on the specified channel. IOCTL_LV2R_CHANNEL_START_ACQ Function: Starts data acquisition on a specified receive channel. IOCTL_LV2R_RESET_ALL_INPUT_FIFOS Function: Resets all input FIFOs. Input: None Notes: The input FIFOs must be running off the PCI clock for the reset to be reliable. This call takes care of this requirement and then returns the configuration to its original value. IOCTL_LV2R_IDENTIFY Function: Flashes the user LED three times to identify the board. Input: None Embedded Hardware and Software Solutions Page 13 of 20

IOCTL_LVDS_ISR_STATUS Function: Returns the interrupt status read in the ISR from the last interrupt. Input: None Output: Value of interrupt status register (ULONG) Notes: Returns the value of the DMA status register that was read in the previous ISR that was caused by a local interrupt. This is used to determine the interrupt cause for a local interrupt event. The latched status bits are also cleared by this call. This call is valid for both the PciLvds2R and 2T. IOCTL_LVDS_REGISTER_EVENT Function: Registers an Event object to be signaled when a local interrupt occurs. Input: Handle to Event object Notes: The caller creates an event with CreateEvent() and supplies the handle returned from that call as the input to this IOCTL. The driver then obtains a system pointer to the event and signals the event when a local interrupt is serviced. The user interrupt service routine waits on this event, allowing it to respond to the interrupt. The DMA interrupts do not cause the event to be signaled. This call is valid for both the PciLvds2R and 2T. IOCTL_LVDS_ENABLE_INTERRUPT Function: Sets the master interrupt enable for local interrupts and optionally sets a new done bit interrupt mask. Input: Optional interrupt enable mask of the two done bits (UCHAR) Notes: This call enables local interrupts. If an input parameter is passed in, the interrupt enables in bits 16 to 23 of the DMA base control register are updated accordingly. The master interrupt enable is cleared in the driver ISR, so this call must be made to re-enable local interrupts. This call is valid for both the PciLvds2R and 2T. IOCTL_LVDS_DISABLE_INTERRUPT Function: Clears the master interrupt enable for local interrupts. Input: None Notes: This call disables local interrupts when interrupt processing is no longer desired. This call is valid for both the PciLvds2R and 2T. Embedded Hardware and Software Solutions Page 14 of 20

IOCTL_LVDS_FORCE_INTERRUPT Function: Causes a local interrupt. Input: None Notes: This call causes a local interrupt to occur. It is used to develop interrupt processing routines. This call is valid for both the PciLvds2R and 2T. IOCTL_LV2T_GET_INFO Function: Returns the Driver Version, Switch value, and Instance Number. Input: none Output: LV2T_DRIVER_DEVICE_INFO structure Notes: Switch value is the configuration of the onboard dipswitch that has been selected by the User (see the board silk screen for bit position and polarity). IOCTL_LV2T_GET_STATUS Function: Returns the current status information. Output: LV2T_STATUS structure Notes: See the bit and structure definitions in DDLv2t.h for information on interpreting this value. IOCTL_LV2T_SET_MEMORY_CONFIG Function: Sets the memory start, stop, loop addresses and configuration for a transmit channel. Input: LV2T_MEMORY structure Notes: The values refer to SDRAM addressing, which is measured in 64- bit words. See the structure definition in DDLv2t.h for more information on interpreting this value. IOCTL_LV2T_GET_MEMORY_CONFIG Function: Returns the memory configuration for a transmit channel. Output: LV2T_MEMORY structure Notes: See the structure definition in DDLv2t.h for information on interpreting the output parameter. Embedded Hardware and Software Solutions Page 15 of 20

IOCTL_LV2T_SET_CHANNEL_CONFIG Function: Sets the channel configuration for a transmit channel. Input: LV2T_CHANNEL_CONFIG structure Notes: See the structure definition in DDLv2t.h for information on determining the input parameter. IOCTL_LV2T_GET_CHANNEL_CONFIG Function: Returns the channel configuration for a transmit channel. Output: LV2T_CHANNEL_CONFIG structure Notes: See the structure definition in DDLv2t.h for information on interpreting the output parameter. IOCTL_LV2T_SET_TIMING_CONFIG Function: Sets the master timing configuration. Input: LV2T_TIMING_CONFIG structure Notes: See the structure definition in DDLv2t.h for information on determining the input parameter. IOCTL_LV2T_GET_TIMING_CONFIG Function: Returns the master timing configuration. Input: None Output: LV2T_TIMING_CONFIG structure Notes: See the structure definition in DDLv2t.h for information on determining the output parameter. IOCTL_LV2T_SET_LOCAL_START Function: Sets the local start configuration. Input: LV2T_LOCAL_START_CONFIG structure Notes: See the structure definition in DDLv2t.h for information on determining the input parameter. Restart resets the Tx state machine to allow a new transmission and switches from the terminal idle pattern to the initial idle pattern. Start enables the local start (both local and master starts must be true to start a transmission). Embedded Hardware and Software Solutions Page 16 of 20

IOCTL_LV2T_SET_MASTER_START Function: Sets the master start configuration. Input: LV2T_MASTER_START_CONFIG structure Notes: See the structure definition in DDLv2t.h for information on determining the input parameter. Enable enables the master start (both local and master starts must be true to start a transmission). Pulse generates a two clock wide output pulse to be used by other boards as an external trigger. IOCTL_LV2T_START_READBACK_MODE Function: Starts the Tx read-back mode allowing the RAM data to be read back over the PCI bus from a channels Tx Xilinx read-back port. Output: LV2T_RDBK_CONFIG structure Notes: The structure saves the state of the start bit and the channel number. This structure can be passed into the stop read-back call to restore the original state, however, any data read while in read-back mode will be unavailable to be transmitted. IOCTL_LV2T_STOP_READBACK_MODE Function: Stops the Tx read-back mode. Input: LV2T_RDBK_CONFIG structure IOCTL_LV2T_GET_TX_DATA Function: Reads a block of 16 32-bit words from a channels Tx Xilinx readback port. Output: LV2T_RDBK_DATA structure (16 long words) Notes: Any data read while in read-back mode will be unavailable to be transmitted when read-back mode is terminated. Embedded Hardware and Software Solutions Page 17 of 20

IOCTL_LV2T_SET_WRITE_OFFSET Function: Stops the Tx read-back mode. Input: LV2T_WRITE_OFFSET structure Notes: Sets the offset from the start of a local RAM bank where the next WriteFile will begin. This call is valid for channels 0 and 4 only. If channel 0 is specified, RAM bank A is selected; if channel 4, RAM bank B. IOCTL_LV2T_GET_WRITE_OFFSET Function: Returns the write position and channel for the next WriteFile call. Input: None Output: LV2T_WRITE_OFFSET structure Notes: Returns the offset from the start of a local RAM bank and the channel where the next WriteFile will operate. This call is valid for channels 0 and 4 only. IOCTL_LV2T_RESET_ALL_OUTPUT_FIFOS Function: Resets all output FIFOs. Input: None Notes: The output FIFOs must be running off the PCI clock for the reset to be reliable. This call takes care of this requirement and then returns the configuration to its original value. IOCTL_LV2T_IDENTIFY Function: Flashes the user LED three times to identify the board. Input: None Embedded Hardware and Software Solutions Page 18 of 20

Write PCI-Lvds-2T DMA data is written to the device using the write command. Writes are executed using the Win32 function WriteFile() and passing in the handle to the device opened with CreateFile(), a pointer to a preallocated buffer containing the data to be written, an unsigned long int that represents the requested size of the transfer in bytes, a pointer to an unsigned long int to contain the number of bytes actually written, and a pointer to an optional Overlapped structure for performing asynchronous IO. Read PCI-Lvds-2R DMA data is read from the device using the read command. Reads are executed using the Win32 function ReadFile() and passing in the handle to the device opened with CreateFile(), a pointer to a pre-allocated buffer that will contain the data read, an unsigned long int that represents the size of the requested transfer in bytes, a pointer to an unsigned long int to contain the number of bytes actually read, and a pointer to an optional Overlapped structure for performing asynchronous IO. Warranty and Repair Dynamic Engineering warrants this product to be free from defects under normal use and service and in its original, unmodified condition, for a period of one year from the time of purchase. If the product is found to be defective within the terms of this warranty, Dynamic Engineering's sole responsibility shall be to repair, or at Dynamic Engineering's sole option to replace, the defective product. Dynamic Engineering's warranty of and liability for defective products is limited to that set forth herein. Dynamic Engineering disclaims and excludes all other product warranties and product liability, expressed or implied, including but not limited to any implied warranties of merchandisability or fitness for a particular purpose or use, liability for negligence in manufacture or shipment of product, liability for injury to persons or property, or for any incidental or consequential damages. Dynamic Engineering s products are not authorized for use as critical components in life support devices or systems without the express written approval of the president of Dynamic Engineering. Embedded Hardware and Software Solutions Page 19 of 20

Service Policy Before returning a product for repair, verify as well as possible that the driver is at fault. The driver has gone through extensive testing and in most cases it will be cockpit error rather than an error with the driver. When you are sure or at least willing to pay to have someone help then call the Customer Service Department and arrange to speak with an engineer. We will work with you to determine the cause of the issue. If the issue is one of a defective driver we will correct the problem and provide an updated module(s) to you [no cost]. If the issue is of the customer s making [anything that is not the driver] the engineering time will be invoiced to the customer. Pre-approval may be required in some cases depending on the customer s invoicing policy. Out of Warranty Repairs Out of warranty support will be billed. The current minimum repair charge is $125. An open PO will be required. For Service Contact: Customer Service Department Dynamic Engineering 435 Park Dr. Ben Lomond, CA 95005 831-336-8891 831-336-3840 fax support@dyneng.com All information provided is Copyright Dynamic Engineering Embedded Hardware and Software Solutions Page 20 of 20