windows-nt/Source/XPSP1/NT/printscan/wia/inc/digita.h
2020-09-26 16:20:57 +08:00

328 lines
6.7 KiB
C

/*++
Copyright (c) 1997-1998 Microsoft Corporation
Module Name:
digita.h
Abstract:
FlashPoint Digita command language
Notes:
Non-portable, for use with Win32 environment.
CDP == Camera Device Protocol
Structure types , defined in this file are used to fill protocol buffer.
It is important to keep packing option set to single byte setting.
Author:
Vlad Sadovsky (VladS) 11/13/1998
Environment:
User Mode - Win32
Revision History:
11/13/1998 VladS Created
--*/
#if !defined( _DIGITA_H_ )
#define _DIGITA_H_
#if _MSC_VER > 1000
#pragma once
#endif
#ifndef RC_INVOKED
#include <pshpack1.h>
#endif // RC_INVOKED
//
// Include files
//
#include <digitaer.h>
//
// Local definitions
//
#define INT16 short
#define UINT16 unsigned short
typedef INT32 TINT32 ;
typedef UINT32 TUINT32 ;
typedef INT16 TINT16;
typedef UINT16 TUINT16;
typedef UINT32 TBITFLAGS;
typedef BYTE TPName[4];
typedef BYTE TDOSName[16];
typedef BYTE TString[32];
//
// Big-endian <-> little-endian Macro DEFINITIONS
//
// Camera software expects big-endian representation of numbers, so when we send
// integers from x86 to it, we need to do a swap. Same applies to all integers
// we receive from camera
//
#if defined(_X86_) || defined(_IA64_)
#define LB8(b) (b)
#define BL8(b) LB8(b)
#define LB16(w) (((INT16)(HIBYTE(w))) | ((LOBYTE(w) << 8) & 0xFF00))
#define BL16(w) LB16(w)
#define LB32(l) (((INT32)(LB16(HIWORD(l)))) | ((INT32)(LB16(LOWORD(l))) << 16))
#define BL32(l) LB32(l)
#else
#define LB8(b) (b)
#define BL8(b) (b)
#define LB16(w) (w)
#define BL16(w) (w)
#define LB32(l) (l)
#define BL32(l) (l)
#endif
//
// Protocol definitions
//
typedef struct {
ULONG ulLength; // Length of the structure minus length of this field
BYTE bVersion; // the version of the CDP packet
CHAR cReserved[3]; // reserved
SHORT shCommand; // the command
SHORT shResult; // the result code
} TCDPHeader;
typedef struct {
TCDPHeader sCDPHeader; // the header fields of the camera device protocol
BYTE bData[1]; // this is the start of the data to be sent with the message
} TCDP;
//
// Definitions
//
typedef enum {
VTUInt = 1,
VTInt = 2,
VTFixed = 3,
VTBool = 4,
VTBitFlags = 5,
VTPname = 6,
VTDOSName = 7,
VTString = 8,
VTUIList = 9
} TValueType;
typedef struct {
TPName Name;
TValueType Type;
union {
UINT fUInt;
INT fInt;
UINT fFixed;
BOOL fBool;
UINT fBitFlags;
TPName fPName;
TDOSName fDOSName;
TString fString;
} Data;
//PNameValue
} PNameTypeValueStruct;
//
// Protocol command ranges
//
#define CDP_CMN_HOST2CAM_MIN 0x0000
#define CDP_CMN_HOST2CAM_MAX 0x5fff
#define CDP_PROD_HOST2CAM_MIN 0x6000
#define CDP_PROD_HOST2CAM_MAX 0x6FFF
#define CDP_TEST_HOST2CAM_MIN 0x7000
#define CDP_TEST_HOST2CAM_MAX 0x7FFF
#define CDP_RESRV_HOST2CAM_MIN 0x8000
#define CDP_RESRV_HOST2CAM_MAX 0xFFFF
//
// Protocol command values
//
typedef enum {
kCDPGetProductInfo = 0x0001,
kCDPGetImageSpecifications = 0x0002,
kCDPGetCameraStatus = 0x0003,
kCDPSetProductInfo = 0x0005,
kCDPGetCameraCapabilities = 0x0010,
kCDPGetCameraState = 0x0011,
kCDPSetCameraState = 0x0012,
kCDPGetCameraDefaults = 0x0013,
kCDPSetCameraDefaults = 0x0014,
kCDPRestoreCameraStates = 0x0015,
kCDPGetSceneAnalysis = 0x0018,
kCDPGetPowerMode = 0x0019,
kCDPSetPowerMode = 0x001a,
kCDPGetS1Mode = 0x001d,
kCDPSetS1Mode = 0x001e,
kCDPStartCapture = 0x0030,
kCDPGetFileList = 0x0040,
kCDPGetNewFileList = 0x0041,
kCDPGetFileData = 0x0042,
kCDPEraseFile = 0x0043,
kCDPGetStorageStatus = 0x0044,
kCDPSetFileData = 0x0047,
kCDPGetFileTag = 0x0048,
kCDPSetUserFileTag = 0x0049,
kCDPGetClock = 0x0070,
kCDPSetClock = 0x0071,
kCDPGetError = 0x0078,
kCDPGetInterfaceTimeout = 0x0090,
kCDPSetInterfaceTimeout = 0x0091,
} TCDPHostToCameraNewCommands;
typedef enum {
kCHNoErr = 0x0000
} TCHCommonErrorCodes;
//
// Properties names for product info
//
// Nb: defined as 4 byte-long packed string , always in lowercase
//
#define PI_FIRMWARE (UINT32)'fwc'
#define PI_PRODUCTTYPEINFO (UINT32)'pti'
#define PI_IPC (UINT32)'ipc'
#define PI_CARV (UINT32)'carv'
//
// Public functions and types
//
//
// GetImageSpecifications
//
typedef struct {
// CCD Specifications
TUINT32 CCDPattern;
TUINT32 CCDPixelsHorz;
TUINT32 CCDPixelsVert;
TUINT32 CCDRingPixelsHorz;
TUINT32 CCDRingPixelsVert;
TUINT32 BadColumns;
TUINT32 BadPixels;
// Thumbnail specifications
TUINT32 ThumbnailType;
TUINT32 ThumbnailPixelsHorz;
TUINT32 ThumbnailPixelsVert;
TUINT32 ThumbnailFileSize;
// Screennail specifications
TUINT32 ScreennailType;
TUINT32 ScreennailPixelsHorz;
TUINT32 ScreennailPixelsVert;
// Focus zone specifications
TUINT32 FocusZoneType;
TUINT32 FocusZoneNumHorz;
TUINT32 FocusZoneNumVert;
TUINT32 FocusZoneOriginHorz;
TUINT32 FocusZoneOriginVert;
TUINT32 FocusZoneSizeHorz;
TUINT32 FocusZoneSizeVert;
// Exposure zone specifications
TUINT32 ExposureZoneType;
TUINT32 ExposureZoneNumHorz;
TUINT32 ExposureZoneNumVert;
TUINT32 ExposureZoneOriginHorz;
TUINT32 ExposureZoneOriginVert;
TUINT32 ExposureZoneSizeHorz;
TUINT32 ExposureZoneSizeVert;
} TImageSpecifications;
//
// GetError
//
typedef struct {
TUINT32 Date;
TUINT32 Time;
TINT32 ErrorCode;
TString ErrorDescription;
} TErrorData;
//
// GetCameraState
//
//
// GetFileList
//
typedef enum {
kFSDriveRAM = 1 , // internal RAM disk
kFSDriveRemovable = 2 // removable disk
} TDriveType;
typedef struct {
TUINT32 DriveNo;
TString PathName;
TDOSName DOSName;
} TFileNameStruct;
typedef struct {
TUINT32 DriveNo;
TString PathName;
TDOSName DOSName;
TUINT32 FileLength;
TBITFLAGS FileStatus;
} TFileItem;
typedef struct {
TUINT32 Offset; // Starting relative position of requested data
TUINT32 Length; // Byte count of requested data
TUINT32 FileSize; // Total size of the file
} TPartialTag;
typedef struct {
TUINT32 DataSize; // Length of data returned
TUINT32 Height; // Height in pixels
TUINT32 Width; // Width in pixels
TUINT32 Type; // Format of the data
BYTE Data[1]; // Actual data
} TThumbnailData;
#ifndef RC_INVOKED
#include <poppack.h>
#endif // RC_INVOKED
#endif // _DIGITA_H_