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

& WizChan. Driver Documentation

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

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

PHLnkBase & PHLnkChan

PcieAltBase & PcieAltChan

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

ccpmc Parallel TTL BA18 Base & Channel

spwr_base & spwr_chan

PMC Parallel TTL BA17 Base & Channel

DYNAMIC ENGINEERING 150 DuBois, Suite C Santa Cruz, CA (831) Fax (831) 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, Suite C Santa Cruz, CA (831) Fax (831) Est

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

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

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

PMC Parallel TTL BA16 Base. Channel Software Manual

Stand-Alone-Relay S-A-Relay

PMC-BiSerial-III SDLC 8-Channel SDLC Interface

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

PCIeBiSerial-L3com1 One-Channel Half Duplex Interface

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

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

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

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

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

cpci-dart Base-Board & Daughter-Board

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

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

UPS25 API Manual for Windows 2000/XP/Vista

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

CC Pilot XS. Backlight interface description

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

PMC-BiSerial-III SDLC

AN10955 Full-duplex software UART for LPC111x and LPC13xx

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

tekdxfxsl FibreXtreme I/O Interface

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

DM6816 Driver for Windows 98/NT4/2000/XP

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

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

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

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

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

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

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

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

ExpressCard Serial Card

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

Addonics. 4-Port SATA II PCI RAID5/JBOD Controller Card (ADSA4R5) User s Guide Revision 1.0 T E C H N O L O G I E S

HumidiProbe User Guide

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

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

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

IP-QuadUART-485-PLRA

QS Series Master Development System User's Guide

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

Contents. CD K WebMaster Quick Start Guide

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

APPLICATION NOTE 9.15

Installation Guide esata 1.5Gbps 1 external + 1 internal port Low profile PCI card GIC711SW6 PART NO. M0559

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

PCI GS or PCIe8 LX Time Distribution Board

REAL TIME OPERATING SYSTEM PROGRAMMING-II: II: Windows CE, OSEK and Real time Linux. Lesson-9: WCE Serial Communication, Network, device-to

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

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

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

PCMCIA Flash Card User Guide

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

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

ESC(LP)-100. Eight Channel Low Profile RS-232 Asynchronous Communications Adapter. for PCI bus. User's Manual

Addonics T E C H N O L O G I E S

Transport Pro FireWire and USB Portable Hard Drive

HIGH PERFORMANCE ECP/EPP PRINTER INTERFACE USING THE PPC34C60 PPIC

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

USBIO. USB Software Development Kit for Windows. Reference Manual. Version 2.0 January 31, 2003

High-Performance 16-Point Complex FFT Features 1 Functional Description 2 Theory of Operation

EN-9235TX-32 Quick Installation Guide

MEC-COM-M154. User s Manual

Windows Device Driver and API Reference Manual

USB Server User Manual

Software Specification. For. J1708 Driver

FX RFID READER SERIES Embedded SDK Sample Application

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

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 PB3Oseh Driver Documentation Win32 Driver Model Revision A Corresponding Hardware: Revision B 10-2005-0202 Corresponding Firmware: Revision B

PB3Oseh WDM Device Driver for the PMC-BiSerial3-Oseh PMC based Serial Interface Dynamic Engineering 435 Park Drive Ben Lomond, CA 95005 831-336-8891 831-336-3840 FAX 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. 2006 by Dynamic Engineering. Other trademarks and registered trademarks are owned by their respective manufactures. Manual Revision A. Revised September 26, 2006 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. Connection of incompatible hardware is likely to cause serious damage. Embedded Hardware and Software Solutions Page 2 of 16

Table of Contents Introduction...4 Note...4 Driver Installation...5 Windows 2000 Installation...5 Windows XP Installation...5 Driver Startup...6 IO Controls...9 IOCTL_PB3_OSEH_GET_INFO...9 IOCTL_PB3_OSEH_LOAD_PLL_DATA...9 IOCTL_PB3_OSEH_READ_PLL_DATA...9 IOCTL_PB3_OSEH_SET_BASE_CONFIG...9 IOCTL_PB3_OSEH_GET_BASE_CONFIG...10 IOCTL_PB3_OSEH_GET_STATUS...10 IOCTL_PB3_OSEH_START_TX...10 IOCTL_PB3_OSEH_STOP_TX...10 IOCTL_PB3_OSEH_START_RX...11 IOCTL_PB3_OSEH_STOP_RX...11 IOCTL_PB3_OSEH_SET_FIFO_LEVELS...11 IOCTL_PB3_OSEH_GET_FIFO_LEVELS...11 IOCTL_PB3_OSEH_GET_FIFO_COUNTS...12 IOCTL_PB3_OSEH_RESET_FIFOS...12 IOCTL_PB3_OSEH_WRITE_FIFO...12 IOCTL_PB3_OSEH_READ_FIFO...12 IOCTL_PB3_OSEH_REGISTER_EVENT...13 IOCTL_PB3_OSEH_ENABLE_INTERRUPTS...13 IOCTL_PB3_OSEH_DISABLE_INTERRUPTS...13 IOCTL_PB3_OSEH_FORCE_INTERRUPT...13 IOCTL_PB3_OSEH_GET_ISR_STATUS...14 Write...15 Read...15 Warranty and Repair...15 Service Policy...16 For Service Contact:...16 Embedded Hardware and Software Solutions Page 3 of 16

Introduction The PB3Oseh driver is a Win32 driver model (WDM) device driver for the PMC- BiSerial3-OSEH from Dynamic Engineering. The PMC-BiSerial3-OSEH has a Spartan3-1500 Xilinx FPGA to implement the PCI interface, FIFOs and protocol control and status for one serial channel in and one serial channel out. Each channel uses three RS-485 signals: clock, serial data and reference clock. There is a programmable PLL with two clock outputs. One drives the internal clock reference for the transmit state machine, the other is output on IO line 18 to be connected to IO line 2 to simulate the external clock reference. There are two 4k x 32-bit data FIFOs, one for the transmit data and one for the receive data. When the PMC-BiSerial3-OSEH is recognized by the PCI bus configuration utility it will start the PB3Oseh driver to allow communication with the device. IO Control calls (IOCTLs) are used to configure the board and read status. Read and Write calls are used to move blocks of data in and out of the device. 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 PMC-BiSerial3-OSEH user manual (also referred to as the hardware manual). Embedded Hardware and Software Solutions Page 4 of 16

Driver Installation There are several files provided in each driver package. These files include PB3Oseh.sys, PB3Oseh.inf, DDPB3Oseh.h, PB3OsehGUID.h, PB3OsehTest.exe, and PB3OsehTest source files. Windows 2000 Installation Copy PB3Oseh.inf and PB3Oseh.sys to a floppy disk, or CD if preferred. With the PMC-BiSerial3-OSEH 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 PB3Oseh.inf file. Select Next. Select Finish to close the Found New Hardware Wizard. Windows XP Installation Copy PB3Oseh.inf and PB3Oseh.sys to a floppy disk, or CD if preferred. With the PMC-BiSerial3-OSEH 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 DDPB3Oseh.h file is a C header file that defines the Application Program Interface (API) to the driver and contains the relevant bit defines for the PMC- BiSerial3-OSEH. The PB3OsehGUID.h file is a C header file that defines the device interface identifier for the PB3Oseh driver. These files are required at compile time by any application that wishes to interface with the PB3Oseh driver. They Embedded Hardware and Software Solutions Page 5 of 16

are not needed for driver installation. The PB3OsehTest.exe file is a sample Win32 console application that makes calls into the PB3Oseh driver to test each driver call without actually writing any application code. It is not required during the driver installation. To use the PB3OsehTest.exe program, open a command prompt console window and type a command in the form PB3OsehTest -dn -im where n and m are the device number and driver ioctl number respectively. Type PB3OsehTest -d0 -? to display a list of commands and parameters (the PB3OsehTest.exe file must be in the directory that the window is referencing). This application is intended to test the proper functioning of the individual driver calls, not for normal operation. Driver Startup Once the driver has been installed it will start automatically when the system recognizes the hardware. The devices are numbered in the order they are enumerated by the system starting with device 0. The interface to the device is identified using the globally unique identifier (GUID), which is defined in PB3OsehGUID.h. 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 for the specified device number. Below is example code for opening a handle for device devnum. // The maximum length of the device name for a given interface #define MAX_DEVICE_NAME 256 // Handle to the device object HANDLE hpb3oseh = 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_PB3_OSEH, NULL, NULL, DIGCF_PRESENT DIGCF_DEVICEINTERFACE); Embedded Hardware and Software Solutions Page 6 of 16

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_PB3_OSEH, 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 // First determine how much memory to allocate for the structure 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); // 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); Embedded Hardware and Software Solutions Page 7 of 16

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 and create the handle to the device hpb3oseh = CreateFile(deviceName, GENERIC_READ GENERIC_WRITE, FILE_SHARE_READ FILE_SHARE_WRITE, NULL, OPEN_EXISTING, NULL, NULL); if(hpb3oseh == INVALID_HANDLE_VALUE) printf("**error: couldn't open %s, (%d)\n", devicename, GetLastError()); exit(-1); Embedded Hardware and Software Solutions Page 8 of 16

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_PB3_OSEH_GET_INFO Function: Returns the Driver version, Xilinx revision, PLL device ID, Switch value and Instance number. Output: PB3_OSEH_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). See DDPB3Oseh.h for the definition of PB3_OSEH_DRIVER_DEVICE_INFO. IOCTL_PB3_OSEH_LOAD_PLL_DATA Function: Loads the internal registers of the PLL. Input: PB3_OSEH_PLL_DATA structure Notes: The PB3_OSEH_PLL_DATA structure has only one field: Data an array of 40 bytes containing the data to write. IOCTL_PB3_OSEH_READ_PLL_DATA Function: Returns the contents of the PLL s internal registers. Output: PB3_OSEH_PLL_DATA structure Notes: The register data is output in the PB3_OSEH_PLL_DATA structure in an array of 40 bytes. IOCTL_PB3_OSEH_SET_BASE_CONFIG Function: Writes to the base configuration register on the PMC-BiSerial3-Oseh. Input: Value of control register (unsigned long integer) Notes: Only the bits in the BASE_CONFIG_MASK are controlled by this command. See the bit definitions in DDPB3Oseh.h for information on determining this value. Embedded Hardware and Software Solutions Page 9 of 16

IOCTL_PB3_OSEH_GET_BASE_CONFIG Function: Returns the configuration of the base control register. Output: Value of control register (unsigned long integer) Notes: The return value includes the bits in BASE_CONFIG_MASK, the TX and RX enables, the DMA enables and BASE_MASTER_INT_EN. IOCTL_PB3_OSEH_GET_STATUS Function: Returns the status register value and clears the latched status bits. Output: Value of status register (unsigned long integer) Notes: Returns FIFO, IO and interrupt status. If any of the latched bits are set, this call will explicitly clear only those bits. See the bit definitions in DDPB3Oseh.h for information on interpreting this value. IOCTL_PB3_OSEH_START_TX Function: Enables the transmit state-machine to start sending data. Notes: If the transmit FIFO already has data in it, this command will start the serial data transmission. If the FIFO is empty, the transmit state-machine will wait for data to be written to the FIFO. As soon as the first data-word is written the transmission will begin. If the BASE_TX_CLR_DISABLE bit in the base control register is not set, the transmit enable will automatically clear when the FIFO data is exhausted. If this bit is set, the transmission will pause, waiting for more data to be written into the FIFO. IOCTL_PB3_OSEH_STOP_TX Function: Disables the transmit state-machine. Notes: Use this call to disable the serial data transmission. Embedded Hardware and Software Solutions Page 10 of 16

IOCTL_PB3_OSEH_START_RX Function: Enables the receive state-machine to start receiving data. Notes: When the receiver is enabled, a serial data bit is received for each low to high clock transition. When 32 bits have been received the data-word is written to the receive FIFO and the process continues until the receiver is disabled. IOCTL_PB3_OSEH_STOP_RX Function: Disables the receive state-machine. Notes: Use this call when data reception is no longer desired. IOCTL_PB3_OSEH_SET_FIFO_LEVELS Function: Sets the transmitter almost empty and receiver almost full FIFO levels. Input: PB3_OSEH_FIFO_LEVELS structure Notes: The FIFO levels are used to determine at what data count the TX almost empty and RX almost full status bits are asserted. See DDPB3Oseh.h for the definition of PB3_OSEH_FIFO_LEVELS. IOCTL_PB3_OSEH_GET_FIFO_LEVELS Function: Returns the transmitter almost empty and receiver almost full levels. Output: PB3_OSEH_FIFO_LEVELS structure Notes: Returns the current values for the transmit almost empty and receive almost full FIFO levels. See DDPB3Oseh.h for the definition of PB3_OSEH_FIFO_LEVELS. Embedded Hardware and Software Solutions Page 11 of 16

IOCTL_PB3_OSEH_GET_FIFO_COUNTS Function: Returns the number of data words in the transmit and receive FIFOs. Output: PB3_OSEH_FIFO_COUNTS structure Notes: There is a four-deep pipeline on the output of the receive FIFO that is required for DMA processing. This means that if the receive FIFO count is not zero, there are actually four more 32-bit words than are indicated. If the count is zero, there may be zero to four words in the pipeline. The STATUS_RX_VALID status bit will be a one if there is valid data in the pipeline. Similarly, when the transmitter is enabled, the first word written to the transmit FIFO will be read to prepare for transmission. This reduces the transmit FIFO count by one. IOCTL_PB3_OSEH_RESET_FIFOS Function: Resets both FIFOs Notes: Resets the TX and RX FIFOs. IOCTL_PB3_OSEH_WRITE_FIFO Function: Writes a data-word to the TX FIFO. Input: FIFO word (unsigned long integer) Notes: This call and the following call are used to make single-word accesses to the FIFOs. IOCTL_PB3_OSEH_READ_FIFO Function: Returns a data word from the RX FIFO. Output: FIFO word (unsigned long integer) Notes: Embedded Hardware and Software Solutions Page 12 of 16

IOCTL_PB3_OSEH_REGISTER_EVENT Function: Registers an event to be signaled when an interrupt occurs. Input: Handle to the Event object Output: none 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 user 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 unless they are explicitly enabled in the enable interrupts call. IOCTL_PB3_OSEH_ENABLE_INTERRUPTS Function: Enables the DMA and/or master interrupts. Input: PB3_OSEH_INT_SELECT structure Notes: The PB3_OSEH_INT_SELECT structure has three BOOLEAN members. When WrDmaDoneInt is true and an event has been registered with the IOCTL_PB3_OSEH_REGISTER_EVENT call, the event will be signaled when a write DMA completes. Similarly, when RdDmaDoneInt is true, the event will be signaled upon the completion of a read DMA. This behavior will persist until explicitly disabled with the IOCTL_PB3_OSEH_DISABLE_INTERRUPTS call. MasterInt enables all the other interrupts (TX, RX, FIFO levels etc.). This bit is cleared in the interrupt service routine and must therefore be re-enabled using this call after each of these interrupts is serviced. IOCTL_PB3_OSEH_DISABLE_INTERRUPTS Function: Disables the DMA and/or master interrupt. Input: PB3_OSEH_INT_SELECT structure Notes: This call is used when interrupt processing is no longer desired. IOCTL_PB3_OSEH_FORCE_INTERRUPT Function: Causes a system interrupt to occur. Notes: Causes an interrupt to be asserted on the PCI bus as long as the master interrupt is enabled. This IOCTL is used for development, to test interrupt processing. Embedded Hardware and Software Solutions Page 13 of 16

IOCTL_PB3_OSEH_GET_ISR_STATUS Function: Returns the interrupt status read in the ISR from the last user interrupt. Output: Interrupt status value (unsigned long integer) Notes: Returns the interrupt status that was read in the interrupt service routine of the last interrupt caused by one of the enabled interrupts. Embedded Hardware and Software Solutions Page 14 of 16

Write PMC-BiSerial3-OSEH 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 pre-allocated buffer containing the data to be written, an unsigned long integer that represents the size of that buffer in bytes, a pointer to an unsigned long integer to contain the number of bytes actually written, and a pointer to an optional Overlapped structure for performing asynchronous IO. Read PMC-BiSerial3-OSEH 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 integer that represents the size of that buffer in bytes, a pointer to an unsigned long integer 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 15 of 16

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 16 of 16