1/* 2 Copyright (C) 2001 Bertrik Sikken (bertrik@zonnet.nl) 3 4 This program is free software; you can redistribute it and/or 5 modify it under the terms of the GNU General Public License 6 as published by the Free Software Foundation; either version 2 7 of the License, or (at your option) any later version. 8 9 This program is distributed in the hope that it will be useful, 10 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 GNU General Public License for more details. 13 14 You should have received a copy of the GNU General Public License 15 along with this program. If not, see <https://www.gnu.org/licenses/>. 16*/ 17 18/* 19 Provides a simple interface to read and write data from the scanner, 20 without any knowledge whether it's a parallel or USB scanner 21*/ 22 23#ifndef _NIASH_XFER_H_ 24#define _NIASH_XFER_H_ 25 26#include <stdio.h> /* for FILE * */ 27 28/* register codes for the USB - IEEE1284 bridge */ 29#define USB_SETUP 0x82 30#define EPP_ADDR 0x83 31#define EPP_DATA_READ 0x84 32#define EPP_DATA_WRITE 0x85 33#define SPP_STATUS 0x86 34#define SPP_CONTROL 0x87 35#define SPP_DATA 0x88 36 37 38typedef enum 39{ 40 eUnknownModel = 0, 41 eHp3300c, 42 eHp3400c, 43 eHp4300c, 44 eAgfaTouch 45} EScannerModel; 46 47 48typedef struct 49{ 50 char *pszVendor; 51 char *pszName; 52 int iVendor; 53 int iProduct; 54 EScannerModel eModel; 55} TScannerModel; 56 57 58typedef int (TFnReportDevice) (TScannerModel * pModel, 59 const char *pszDeviceName); 60 61 62/* Creates our own DBG definitions, externs are define in main.c*/ 63#ifndef WITH_NIASH 64#define DBG fprintf 65extern FILE *DBG_MSG; 66extern FILE *DBG_ERR; 67extern FILE *BG_ASSERT; 68#endif /* NO WITH_NIASH */ 69 70/* we do not make data prototypes */ 71#ifndef WITH_NIASH 72/* list of supported models, the actual list is in niash_xfer.c */ 73extern TScannerModel ScannerModels[]; 74#endif /* NO WITH_NIASH */ 75 76STATIC void NiashXferInit (TFnReportDevice * pfnReport); 77STATIC int NiashXferOpen (const char *pszName, EScannerModel * peModel); 78STATIC void NiashXferClose (int iXferHandle); 79 80STATIC void NiashWriteReg (int iXferHandle, unsigned char bReg, 81 unsigned char bData); 82STATIC void NiashReadReg (int iXferHandle, unsigned char bReg, 83 unsigned char *pbData); 84STATIC void NiashWriteBulk (int iXferHandle, unsigned char *pabBuf, 85 int iSize); 86STATIC void NiashReadBulk (int iXferHandle, unsigned char *pabBuf, int iSize); 87STATIC void NiashWakeup (int iXferHandle); 88 89STATIC SANE_Bool MatchUsbDevice (int iVendor, int iProduct, 90 TScannerModel ** ppeModel); 91 92#endif /* _NIASH_XFER_H_ */ 93