|
|
/******************************************************************************
stivar.h
Copyright (C) Microsoft Corporation, 1997 - 1998 All rights reserved
Notes: THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.
******************************************************************************/
#include "resource.h"
//
// reset listbox window display after this many iterations
//
#define MAX_LOOP 16383
//
// INF defines
//
#define INFBUFSIZ 0x8000 // assume 32k for largest INF
//
// available test suites
//
#define NONE 500 // no test suite selected
#define HELP 501 // display help
#define COMPLIANCE 502 // external compliance suite
#define SHIPCRIT 503 // internal compliance suite
#define ERRORLOG 504 // big error log test
#define TEST 505 // test test
//
// Sti service tests
//
enum TimedTests { // open iStillImage interface
tCreateInstance, // IStillImage interface
tGetDeviceList, tCreateDevice, tGetDeviceInfo, tGetDeviceValue, tSetDeviceValue, tRegisterLaunchApplication, tUnRegisterLaunchApplication, tEnableHwNotifications, tGetHwNotificationState, tWriteToErrorLog, // variation
tWriteToErrorLogBig, tReleaseSti, // IStillDevice interface
tGetStatusA, tGetStatusB, tGetStatusC, tGetCapabilities, tDeviceReset, tDiagnostic, tGetLastInfoError, tSubscribe, tUnSubscribe, tEscapeA, tEscapeB, tRawReadDataA, tRawReadDataB, tRawWriteDataA, tRawWriteDataB, tRawReadCommandA, tRawReadCommandB, tRawWriteCommandA, tRawWriteCommandB, tReleaseDevice, // select a device name
tSelectDeviceName, // Scan (if HP SCL device)
tAcquire, // help request
tHelp, // Beginning of test pass initialization
tBeginningOfTest, // output test
tTest, // End of test pass summary
tEndOfTest } tLabTests;
//
// display help
//
int nHelpSuite[] = { HELP, tBeginningOfTest, tHelp, tEndOfTest, -1 };
//
// external Sti Compliance tests
//
int nComplianceSuite[] = { COMPLIANCE, tBeginningOfTest, tCreateInstance, tGetDeviceList, tCreateDevice, tGetStatusA, tGetStatusB, tGetStatusC, tDiagnostic, tGetDeviceValue, tGetCapabilities, tGetLastInfoError, // tSubscribe,
// tUnSubscribe,
tDeviceReset, tEscapeA, tRawReadDataA, tRawWriteDataA, tRawReadCommandA, tRawWriteCommandA, tReleaseDevice, tReleaseSti, tEndOfTest, -1 };
//
// internal Sti Compliance tests
//
int nShipcritSuite[] = { SHIPCRIT, tBeginningOfTest, tCreateInstance, tGetDeviceList, tSelectDeviceName, tGetDeviceInfo, tGetDeviceValue, tSetDeviceValue, tRegisterLaunchApplication, tUnRegisterLaunchApplication, tEnableHwNotifications, tGetHwNotificationState, tWriteToErrorLog, tCreateDevice, tGetStatusA, tGetStatusB, tGetStatusC, tDiagnostic, tDeviceReset, tGetDeviceInfo, tGetDeviceValue, tSetDeviceValue, tRegisterLaunchApplication, tUnRegisterLaunchApplication, tEnableHwNotifications, tGetHwNotificationState, tWriteToErrorLog, tGetCapabilities, tGetLastInfoError, // tSubscribe,
// tUnSubscribe,
tEscapeA, tRawReadDataA, tRawWriteDataA, tRawReadCommandA, tRawWriteCommandA, tAcquire, tReleaseDevice, tReleaseSti, tEndOfTest, -1 };
//
// big Error log tests
//
int nErrorlogSuite[] = { ERRORLOG, tBeginningOfTest, tCreateInstance, tGetDeviceList, tSelectDeviceName, tWriteToErrorLogBig, tReleaseSti, tEndOfTest, -1 };
//
// test tests
//
int nOutputSuite[] = { TEST, tBeginningOfTest, tTest, tEndOfTest, -1 };
//
// Test Suite test strings
//
STRINGTABLE StSuiteStrings[] = { tCreateInstance, "Create Instance",0, tGetDeviceList, "Get Device List",0, tCreateDevice, "Create Device",0, tGetDeviceInfo, "Get Device Info",0, tGetDeviceValue, "Get Device Value",0, tSetDeviceValue, "Set Device Value",0, tRegisterLaunchApplication, "Register Launch Application",0, tUnRegisterLaunchApplication, "UnRegister Launch Application",0, tEnableHwNotifications, "Enable Hardware Notifications",0, tGetHwNotificationState, "Get Hardware Notification State",0, tWriteToErrorLog, "Write To Error Log (variation A)",0, tWriteToErrorLogBig, "Write to Error Log (variation B)",0, tReleaseSti, "Release Sti subsystem",0, tGetStatusA, "Get Status (Online)",0, tGetStatusB, "Get Status (Event)",0, tGetStatusC, "Get Status (All)",0, tGetCapabilities, "Get Capabilities",0, tDeviceReset, "Device Reset",0, tDiagnostic, "Diagnostic",0, tGetLastInfoError, "Get Last Error Information",0, tSubscribe, "Subscribe",0, tUnSubscribe, "Unsubscribe",0, tEscapeA, "Escape (variation A)",0, tEscapeB, "Escape (variation B)",0, tRawReadDataA, "Raw Read Data (variation A)",0, tRawReadDataB, "Raw Read Data (variation B)",0, tRawWriteDataA, "Raw Write Data (variation A)",0, tRawWriteDataB, "Raw Write Data (variation B)",0, tRawReadCommandA, "Raw Read Command (variation A)",0, tRawReadCommandB, "Raw Read Command (variation B)",0, tRawWriteCommandA, "Raw Write Command (variation A)",0, tRawWriteCommandB, "Raw Write Command (variation B)",0, tReleaseDevice, "Release Device",0, tSelectDeviceName, "Select Device Name",0, tAcquire, "Acquire",0, tHelp, "Help",0, tBeginningOfTest, "Beginning of Test",0, tTest, "Test",0, tEndOfTest, "End of testing",0, 0, "Unknown Test",-1 };
//
// timers
//
#define TIMER_ONE 3001
#define TIMER_TWO 3002
//
// GLOBAL VARIABLES
//
//
// global window handles
//
HINSTANCE hThisInstance; // current instance
HWND hThisWindow; // current window
HMENU hMenu; // current menu
//
// general purpose strings
//
HGLOBAL hLHand[5]; // utility string handles
LPSTR lpzString; // utility FAR string
PSTR pszOut, // TextOut string
pszStr1, // utility NEAR strings
pszStr2, pszStr3, pszStr4;
//
// global test settings
//
BOOL bAuto = FALSE, // TRUE = running an Automated test
bCompDiag = TRUE, // TRUE = show COMPLIANCE test dialog
bExit = FALSE; // TRUE = exit when test has completed
int nError = 0, // number of errors
nEvent = 0, // 1 = StiEvent, 2 = StiDevice
nFatal = 0, // can't continue after this...
nGo = 0, // 1 = nonstop timed test
nHWState = 0, // current HWEnable state
nICanScan = 0, // Stillvue can / can't scan this device
nInATestSemaphore = 0, // 1 = a test is running
nInTimerSemaphore = 0, // 1 = don't reenter TimerParse
nLastLine = 1, // last line number in script
nMaxCount = 1, // run test Suite this many times
nNameOnly = 0, // 1 = select device name, not device
nNextLine = 1, // next line of inf to run
nNextTest = 0, // pointer to next test to run
nPause = 0, // toggle for run (0) pause test (! 0)
nRunInf = 0, // 0 = no INF, 1 = INF is loaded
nRadix = 10, // base is decimal (or hex)
nSaveLog = 0, // always write out log
nScanCount = 0, // number of scans run so far
nScriptLine = 1, // next script line to parse
nTestCount = 1, // number of tests run so far
nTestID = 0, // the current test ID
nTimeMultiplier = 1000, // multiply nTimeNext for seconds
nTimeNext = 5, // wait time between timer in seconds
nTimeState = 0, // 0 timer is off, 1 timer is on
nTimeScan = 60, // wait nTimeNext units before next scan
nTTMax = 0, // temp var
nTTNext = 0, // temp var
nTTScan = 0, // temp var
nUnSubscribe = 0, // 0 = UnSubscribe'd, 1 = Subscribed
nUnSubscribeSemaphore = 0; // semaphore for UnSubscribe
int *pSuite = nHelpSuite; // pointer to test Suite to run
DWORD dwLastError = 0; // last GetLastError found
//
// text display
//
HWND hLogWindow; ULONG ulCount1,ulCount2; int cxChar,cxCaps,cyChar,cxClient,cyClient,iMaxWidth, iHscrollPos,iHscrollMax, iVscrollPos,iVscrollMax;
//
// inf, logfile, NT logging
//
HANDLE hLog = NULL, // output log file handle
hDLog = NULL, // display output log handle
hNTLog = NULL; // NT log handle
char szInfName[LONGSTRING] = "", // input script file name
szDLogName[LONGSTRING] = "",// display output log file name
szWLogName[LONGSTRING] = "";// WHQL NTLOG output log file name
LPSTR lpInf = NULL, // buffer for INF commands
lpLine; DWORD dwNTStyle; // NTLog style
//
// device logging
//
PDEVLOG pdevPtr = NULL, // pointer to current device log device
pdevRoot = NULL; // base of the device log table
PVOID pInfoPrivate = NULL; // private list of devices under test
PSTI_DEVICE_INFORMATION pInfoPrivatePtr = NULL; // pointer to device in pStiBuffer
|