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

Similar documents
DYNAMIC ENGINEERING 150 DuBois St., Suite C Santa Cruz, CA Fax 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

PcieAltBase & PcieAltChan

PHLnkBase & PHLnkChan

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

DYNAMIC ENGINEERING 150 DuBois, Suite C, Santa Cruz, CA Fax 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.

& WizChan. Driver Documentation

ccpmc Parallel TTL BA18 Base & Channel

PMC Parallel TTL BA17 Base & Channel

PMC Parallel TTL BA16 Base. Channel Software Manual

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 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 435 Park Dr., Ben Lomond, Calif 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

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

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

spwr_base & spwr_chan

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

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

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

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

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

PCIeBiSerial-L3com1 One-Channel Half Duplex Interface

PMC-BiSerial-III SDLC 8-Channel SDLC Interface

Stand-Alone-Relay S-A-Relay

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

IVI-6.2: VISA Interoperability Requirements for USBTMC Specification

PCI-EK01 Driver Level Programming Guide

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 C Santa Cruz CA Fax Est.

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

CC Pilot XS. Backlight interface description

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

UPS25 API Manual for Windows 2000/XP/Vista

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., Suite C Santa Cruz, CA (831) Fax (831) Est.

DM6816 Driver for Windows 98/NT4/2000/XP

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

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

APPLICATION NOTE 9.15

ADS Windows CE Digital I/O Driver

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

Software Specification. For. J1708 Driver

JetBox 8152 User Manual. WinCE 5.0 Canbus.

10 Digital Photo Frame Instructional Manual

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

cpci-dart Base-Board & Daughter-Board

APPLICATION NOTE. Atmel AT03261: SAM D20 System Interrupt Driver (SYSTEM INTERRUPT) SAM D20 System Interrupt Driver (SYSTEM INTERRUPT)

User Manual UNO-1251G. Windows Embedded Compact7 Software Manual

PCMCIA Flash Card User Guide

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

Intel Platform Controller Hub EG20T

12 Digital Photo Frame Instructional Manual

BBK-PCI. User s Manual. Document: Document No.: Date: File:

AT03262: SAM D/R/L/C System Pin Multiplexer (SYSTEM PINMUX) Driver. Introduction. SMART ARM-based Microcontrollers APPLICATION NOTE

AT11512: SAM L Brown Out Detector (BOD) Driver. Introduction. SMART ARM-based Microcontrollers APPLICATION NOTE

tekdxfxsl FibreXtreme I/O Interface

MULTIFUNCTIONAL DIGITAL SYSTEMS. Software Installation Guide

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

Tape Channel Analyzer Windows Driver Spec.

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

GEN10. HD/SD Sync Generator. User Manual

E-Series Cabling E-Series Hardware

MULTIFUNCTIONAL DIGITAL SYSTEMS. Software Installation Guide

RTD Fastrax itrax02 GPS Module Application and Driver Manual for Windows 98/2000/NT4/XP User s Manual Version 2.0.x

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

SAM4 Reset Controller (RSTC)

S3C6400 HW Mulimedia Codec (MFC) User s Guide. S3C6400 HW Multimedia Codec (MFC) User s Guide

TIP675-SW-82. Linux Device Driver. 48 TTL I/O Lines with Interrupts Version 1.2.x. User Manual. Issue November 2013

SonicWALL CDP 2.1 Agent Tool User's Guide

14 Digital Photo Frame Instructional Manual

User Guide. USB/Ethernet Charging Cradle. Mobility Electronics, Inc Via Pasar, San Diego, CA 92126, USA

DGILib USER GUIDE Atmel-42771A-DGILib_User Guide-09/2016

Call DLL from Limnor Applications

IP-QuadUART-485-PLRA

Using LPC11Axx EEPROM (with IAP)

Application Note. I²C Interface for Digital CO2 Measurement Module

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

ATAES132A Firmware Development Library. Introduction. Features. Atmel CryptoAuthentication USER GUIDE

InLinK HM Setup Software Installation & Operation Manual

Small Logger File System

Getting Started with LabVIEW

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

Artisan Technology Group is your source for quality new and certified-used/pre-owned equipment

ATECC108/ATSHA204 USER GUIDE. Atmel Firmware Library. Features. Introduction

MiniModules. Reference Manual. Series R CT 3002 V 1.0 MiniModule USB Service Adapter and Software

USB 3.0 Spectra

10 Slim Digital Photo Frame Instructional Manual

AWLaunch. Software Manual. Version 1.2 Last Revised April 27, 2009

The HPV Explorer is a serial communication program used to work with the HPV 600/900 s parameters via a computer s serial port

Transcription:

DYNAMIC ENGINEERING 150 DuBois, Suite C Santa Cruz, CA 95060 (831) 457-8891 Fax (831) 457-4793 http://www.dyneng.com sales@dyneng.com Est. 1988 IpGeneric WDF Driver Documentation Developed with Windows Driver Foundation Ver1.9 Manual Revision A 7/22/16

IpGeneric WDF Device Driver for an Unknown IP Module Dynamic Engineering 150 DuBois, Suite C Santa Cruz, CA 95060 831-457-8891 831-457-4793 FAX 2016 by Dynamic Engineering. Trademarks and registered trademarks are owned by their respective manufacturers. 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 IP Module carriers and compatible user-provided equipment. Connection of incompatible hardware is likely to cause serious damage. Embedded Solutions Page 2 of 14

Table of Contents Introduction 4 Note 4 Driver Installation 4 Windows 7 Installation 5 Driver Startup 5 IO Controls 6 IOCTL_IP_GENERIC_GET_INFO 6 IOCTL_IP_GENERIC_SET_IP_CONTROL 7 IOCTL_IP_GENERIC_GET_IP_STATE 7 IOCTL_IP_GENERIC_SET_WR_MEM_OFFSET 8 IOCTL_IP_GENERIC_GET_WR_MEM_OFFSET 8 IOCTL_IP_GENERIC_SET_RD_MEM_OFFSET 8 IOCTL_IP_GENERIC_GET_RD_MEM_OFFSET 8 IOCTL_IP_GENERIC_PUT_DATA 9 IOCTL_IP_GENERIC_GET_DATA 9 IOCTL_IP_GENERIC_PUT_DATA64 10 IOCTL_IP_GENERIC_GET_DATA64 10 IOCTL_IP_GENERIC_REGISTER_EVENT 11 IOCTL_IP_GENERIC_ENABLE_INTERRUPT 11 IOCTL_IP_GENERIC_DISABLE_INTERRUPT 11 IOCTL_IP_GENERIC_FORCE_INTERRUPT 11 IOCTL_IP_GENERIC_GET_ISR_STATUS 12 Write 13 Read 13 WARRANTY AND REPAIR 14 Service Policy 14 Support 14 For Service Contact: 14 Embedded Solutions Page 3 of 14

Introduction IpGeneric is a Win7 device driver for any Industry-Pack (IP) module for which a more specialized driver does not exist. This driver can control any IP module by mapping the IO, MEM, and INT memory spaces so that they can be accessed by driver calls. A separate Device Object controls each IP module, and a separate handle references each Device Object. IO Control calls (IOCTLs) are used to configure the hardware and read status information. ReadFile() and WriteFile() calls are used to transfer blocks of data to and from the MEM space over the IP bus. Note This documentation will provide information about all calls made to the driver, and how the driver interacts with the device for each of these calls. For more detailed information on the hardware implementation, refer to the hardware manual for the particular device being used. Driver Installation Warning: The appropriate IP carrier driver must be installed before any IP modules can be detected by the system. There are several files provided in each driver package. These files include IpDevices.inf, IpDevices.cat, WdfCoInstaller01009.dll, IpGeneric.sys and several other IP driver files (Ip*.sys). Also header files that define the driver API including IpPublic.h, IpGenericPublic.h and (Ip*Public.h) files for several other IP module device drivers. Embedded Solutions Page 4 of 14

Windows 7 Installation Copy IpDevices.inf, IpDevices.cat, WdfCoInstaller01009.dll, and all the IP device driver files (*.sys) to a removable memory device, or other accessible location as preferred. With one or more IP device installed in a supported IP module carrier, power-on the host computer. Open the Device Manager from the control panel. Under Other devices there should be, for each valid IP module installed, a device icon with an index appended carrier device name followed by an IP Slot designation where the module is installed*. Right-click on the target device and select Update Driver Software. Insert the removable memory device prepared above if necessary. Select Browse my computer for driver software. Select Browse and navigate to the location where the appropriate files are stored. Select Next. The appropriate IP device driver or IpGeneric driver should now be installed. Select Close to close the update window. This process must be completed for each new IP device that is installed. * If no IP devices are displayed, check to see that an IP Carrier Device is present in the Device Manager and click on the Scan for hardware changes icon on the tool-bar or select it in the Action menu. IpPublic and IpGenericPublic.h are C header files that define the Application Program Interface (API) to the driver. These files are required at compile time by any application that wishes to interface with the IpGeneric driver, but they are not needed for driver installation. The device interface identifier (GUID) for the IpGeneric driver is defined in IpGenericPublic.h. 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 module by using the CreateFile() function call and passing in the device name obtained from the system. See the main.c file provided with the user test software for an example of obtaining a device handle to a specific module. Embedded Solutions Page 5 of 14

IO Controls The driver uses IO Control calls (IOCTLs) to configure the device. IOCTLs refer to a single Device Object in the driver, 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. BOOL DeviceIoControl( HANDLE hdevice, // Handle opened with CreateFile() DWORD dwiocontrolcode, // Control code defined in API header file LPVOID lpinbuffer, // Pointer to input parameter DWORD ninbuffersize, // Size of input parameter LPVOID lpoutbuffer, // Pointer to output parameter DWORD noutbuffersize, // Size of output parameter LPDWORD lpbytesreturned, // Pointer to return length parameter LPOVERLAPPED lpoverlapped, // Optional pointer to overlapped structure ); // used for asynchronous I/O The IOCTLs defined in the IpGeneric driver are described below: IOCTL_IP_GENERIC_GET_INFO Function: Returns the current driver revision, instance number, module location and other carrier information. Output: DRIVER_IP_DEVICE_INFO structure Notes: This call does not access the hardware, only driver parameters. CarrierSwitch returns the value of the 8-position IP carrier dip-switch when this IP was enumerated. FirmwareRev is not valid for this driver. See the definition of DRIVER_IP_DEVICE_INFO below. // Driver version and instance/slot information typedef struct _DRIVER_IP_DEVICE_INFO { USHORT DriverRev; USHORT FirmwareRev; USHORT InstanceNum; UCHAR CarrierSwitch; // 0..0xFF UCHAR CarrierSlotNum; // 0..7 -> IP slots A, B, C, D, E, F, G or H BOOLEAN NewIpCntl; // New IP slot control bits WCHAR LocationString[IP_LOC_STRING_SIZE]; } DRIVER_IP_DEVICE_INFO, *PDRIVER_IP_DEVICE_INFO; Embedded Solutions Page 6 of 14

IOCTL_IP_GENERIC_SET_IP_CONTROL Function: Sets the control configuration of the module s IP slot. Input: IP_SLOT_CONTROL structure Notes: Specifies the IP clock speed, data access and other control parameters for the IP slot that the board occupies. See the definition of IP_SLOT_CONTROL below. typedef struct _IP_SLOT_CONTROL { BOOLEAN Clock32Sel; BOOLEAN ClockDis; BOOLEAN ByteSwap; BOOLEAN WordSwap; BOOLEAN WrIncDis; BOOLEAN RdIncDis; UCHAR WrWordSel; UCHAR RdWordSel; BOOLEAN BsErrTmOutSel; BOOLEAN ActCountEn; } IP_SLOT_CONTROL, *PIP_SLOT_CONTROL; IOCTL_IP_GENERIC_GET_IP_STATE Function: Returns the control configuration of the module s IP slot plus interrupt and bus error status. Output: IP_SLOT_STATE structure Notes: Returns the slot control configuration from the previous call along with interrupt enable and activity information. See the definition of IP_SLOT_STATE below. typedef struct _IP_SLOT_STATE { BOOLEAN Clock32Sel; BOOLEAN ClockDis; BOOLEAN ByteSwap; BOOLEAN WordSwap; BOOLEAN WrIncDis; BOOLEAN RdIncDis; UCHAR WrWordSel; UCHAR RdWordSel; BOOLEAN BsErrTmOutSel; BOOLEAN ActCountEn; // Slot Status BOOLEAN IpInt0En; BOOLEAN IpInt1En; BOOLEAN IpBusErrIntEn; BOOLEAN IpInt0Actv; BOOLEAN IpInt1Actv; BOOLEAN IpBusError; BOOLEAN IpForceInt; BOOLEAN WrBusError; BOOLEAN RdBusError; } IP_SLOT_STATE, *PIP_SLOT_STATE; Embedded Solutions Page 7 of 14

IOCTL_IP_GENERIC_SET_WR_MEM_OFFSET Function: Sets the address offset for block write operations. Input: Unsigned long integer Notes: Sets the address offset into the IP MEM space that will be used for WriteFile calls. IOCTL_IP_GENERIC_GET_WR_MEM_OFFSET Function: Returns the address offset for block write operations. Output: Unsigned long integer Notes: Returns the address offset into the IP MEM space that will be used for WriteFile calls. IOCTL_IP_GENERIC_SET_RD_MEM_OFFSET Function: Sets the address offset for block read operations. Input: Unsigned long integer Notes: Sets the address offset into the IP MEM space that will be used for ReadFile calls. IOCTL_IP_GENERIC_GET_RD_MEM_OFFSET Function: Returns the address offset for block read operations. Output: Unsigned long integer Notes: Returns the address offset into the IP MEM space that will be used for ReadFile calls. Embedded Solutions Page 8 of 14

IOCTL_IP_GENERIC_PUT_DATA Function: Writes a byte, word or long-word to the IP s IO or MEM space. Input: IP_GENERIC_DATA_WRITE structure Notes: This call is used to write data to the IO or MEM space. The structure contains an address [offset] field, a length field (which can be 1, 2, or 4 corresponding to the number of bytes in the target object) and a data field. For this call the space selector, address, length and data fields must all be initialized and the structure passed to the driver which performs the write operation. See for the definition of SPACE_SEL and IP_GENERIC_DATA_WRITE below. typedef enum _SPACE_SEL { IO_SPACE, MEM_SPACE, } SPACE_SEL, *PSPACE_SEL; typedef struct _IP_GENERIC_DATA_WRITE { SPACE_SEL MemIoSelect; ULONG Address; UCHAR Length; ULONG Data; } IP_GENERIC_DATA_WRITE, *PIP_GENERIC_DATA_WRITE; IOCTL_IP_GENERIC_GET_DATA Function: Reads a byte, word or long-word from the IP s IO or MEM space. Input: IP_GENERIC_DATA_ADDRESS structure Output: Unsigned long integer Notes: This call is used to read data from the IO or MEM space. The IP_GENERIC_DATA_ADDRESS structure contains a selector to indicate whether the operation targets IO space or MEM space, an address [offset] field and a length field (which can be 1, 2, or 4 corresponding to the number of bytes in the target object). For this call the space selector, address and length fields must all be initialized and the structure passed to the driver which performs the read operation and returns an unsigned long integer that contains the data that was read. See the definition of IP_GENERIC_DATA_ADDRESS below. // IO data access structures typedef struct _IP_GENERIC_DATA_ADDRESS { SPACE_SEL MemIoSelect; ULONG Address; UCHAR Length; } IP_GENERIC_DATA_ADDRESS, *PIP_GENERIC_DATA_ADDRESS; Embedded Solutions Page 9 of 14

IOCTL_IP_GENERIC_PUT_DATA64 Function: Writes a byte, word, long word or 64-bit word to the IP s IO or MEM space. Input: IP_GENERIC_DATA64_WRITE structure Notes: This call is used to write data to the IO or MEM space. It is only valid in a 64-bit operating environment when the carrier that the IP is mounted on supports 64-bit writes. The IP_GENERIC_DATA64_WRITE structure contains a selector to indicate whether the operation targets IO space or MEM space, an address [offset] field, a length field (which can be 1, 2, 4 or 8 corresponding to the number of bytes in the target object) and a data field. For this call the space selector, address, length, and data fields must all be initialized and the structure is passed to the driver which performs the write operation. See for the definition of IP_GENERIC_DATA64_WRITE below. typedef struct _IP_GENERIC_DATA64_WRITE { SPACE_SEL MemIoSelect; ULONG Address; UCHAR Length; ULONG64 Data; } IP_GENERIC_DATA64_WRITE, *PIP_GENERIC_DATA64_WRITE; IOCTL_IP_GENERIC_GET_DATA64 Function: Reads a byte, word, longword or 64-bit word from the IP s IO or MEM space. Input: IP_GENERIC_DATA_ADDRESS structure Output: Unsigned long long integer (64-bit) Notes: This call is used to read data from the IO or MEM space. It is only valid in a 64- bit operating environment when the carrier that the IP is mounted on supports 64-bit reads. The IP_GENERIC_DATA_ADDRESS structure contains a selector to indicate whether the operation targets IO space or MEM space, an address [offset] field and a length field (which can be 1, 2, 4 or 8 corresponding to the number of bytes in the target object). For this call the space selector, address and length fields must be initialized and the structure passed to the driver which performs the read operation and returns an unsigned long long integer that contains the data that was read. See the definition of IP_GENERIC_DATA_ADDRESS below. typedef struct _IP_GENERIC_DATA_ADDRESS { SPACE_SEL MemIoSelect; ULONG Address; UCHAR Length; } IP_GENERIC_DATA_ADDRESS, *PIP_GENERIC_DATA_ADDRESS; Embedded Solutions Page 10 of 14

IOCTL_IP_GENERIC_REGISTER_EVENT Function: Registers an event to be signaled when an 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 an interrupt is serviced. The user interrupt service routine waits on this event, allowing it to respond to the interrupt. IOCTL_IP_GENERIC_ENABLE_INTERRUPT Function: Sets the master interrupt enable bits to true. Notes: Sets both of the IP slot interrupt enables, leaving all other bit values in the IP slot control register the same. This IOCTL is used in the user interrupt processing function to re-enable the interrupts after they were disabled in the driver interrupt service routine. This allows that function to enable the interrupts without knowing the particulars of the other configuration bits. IOCTL_IP_GENERIC_DISABLE_INTERRUPT Function: Sets the master interrupt enable bits to false. Notes: Clears both of the IP slot interrupt enables, leaving all other bit values in the IP slot control register the same. This IOCTL is used when interrupt processing is no longer desired. IOCTL_IP_GENERIC_FORCE_INTERRUPT Function: Causes a system interrupt to occur. Notes: Causes an interrupt to be asserted if the master interrupt for the IP slot is enabled. This IOCTL is used for development, to test interrupt processing. Embedded Solutions Page 11 of 14

IOCTL_IP_GENERIC_GET_ISR_STATUS Function: Returns the interrupt status and interrupt vector. Output: IP_GENERIC_INT_STAT structure Notes: Returns the interrupt vector and the contents of the interrupt status register that were read in the last ISR call. The IP_GENERIC_INT_STAT structure, returned by this call, contains these two values. See the definition of IP_GENERIC_INT_STAT below. // Interrupt status and vector typedef struct _IP_GENERIC_INT_STAT { USHORT InterruptStatus; USHORT InterruptVector; } IP_GENERIC_INT_STAT, *PIP_GENERIC_INT_STAT; Embedded Solutions Page 12 of 14

Write Blocks of data to be written to the IP MEM space can use the WriteFile() call. The user supplies the device handle, a pointer to the buffer containing the data, the number of bytes to write, a pointer to a variable to store the amount of data actually transferred, and an optional pointer to an Overlapped structure for performing asynchronous IO. The number of bytes is checked to see if the transfer length plus the address offset will overrun the end of memory. If this occurs, the length will be reduced accordingly. The driver takes advantage of the carrier s 32-bit double-write/64-bit quad write capability to load two/four IP words with a single PCI/PCIe write until less than four/eight bytes remain in the buffer. If the transfer is not to start at the beginning of the MEM space, the IOCTL_IP_GENERIC_SET_WR_MEM_OFFSET call can be used to specify the start address offset. See Win32 help files for details of the WriteFile() call. Read Blocks of data to be read from the IP MEM space can use the ReadFile() call. The user supplies the device handle, a pointer to the buffer to store the data in, the number of bytes to read, a pointer to a variable to store the amount of data actually transferred, and a pointer to an optional Overlapped structure for performing asynchronous IO. The number of bytes is checked to see if the transfer length plus the address offset will overrun the end of memory. If this occurs, the length will be reduced accordingly. The driver takes advantage of the carrier 32-bit double-read/64-bit quad read capability to read two/four IP words with a single PCI/PCIe read until less than four/eight bytes remain to be read. If the transfer is not to start at the beginning of the MEM space, the IOCTL_IP_GENERIC_SET_RD_MEM_OFFSET call can be used to specify the start address offset. See Win32 help files for the details of the ReadFile() call. Embedded Solutions Page 13 of 14

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 merchantability 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. 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 a 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. Support The software described in this manual is provided at no cost to clients who have purchased the corresponding hardware. Minimal support is included along with the documentation. For help with integration into your project please contact sales@dyneng.com for a support contract. Several options are available. With a contract in place Dynamic Engineers can help with system debugging, special software development, or whatever you need to get going. For Service Contact: Customer Service Department Dynamic Engineering 150 DuBois, Suite C Santa Cruz, CA 95060 (831) 457-8891 (831) 457-4793 fax support@dyneng.com All information provided is Copyright Dynamic Engineering Embedded Solutions Page 14 of 14