|
|
/*******************************************************************************
** ** MODULE: "DT.H". ** ** ** DESCRIPTION: Include file for DT.C. ** ** ** AUTHOR: Daniel Dean, John Pierce. ** ** ** ** CREATED: ** ** ** ** ** (C) C O P Y R I G H T D A N I E L D E A N 1 9 9 6. *******************************************************************************/ #ifndef __DT_H__
#define __DT_H__
#define SUCCESS 0
#define FAILURE 1
#define EXITERROR -1
#define IDM_PAGES (WM_USER + 2371)
#define APPCLASS "DT"
#define APPTITLE "HID Report Descriptor Tool"
#define MAIN_ICON "DT"
#define BACKGROUND_BRUSH COLOR_MENU+1//RGB(128,128,128)
#define DEBUGSTOP _asm int 3
#define WM_RESTORE (WM_USER +1763)
LRESULT WINAPI WndProc(HWND, UINT, WPARAM, LPARAM);
#define ITEM(x, y) (x | y)
#define ITEM_SIZE_MASK 0x3
#define ITEM_TAG_MASK 0xFC
#define MAX_DESC_ENTRY 64 // Max characters for a descriptor entry in the list box
// Entity item tags
#define COLLECTION 0xA0
#define END_COLLECTION 0xC0
#define INPUT 0x80
#define OUTPUT 0x90
#define FEATURE 0xB0
// Entity Attribute item tags
#define USAGE_PAGE 0x04
#define LOGICAL_EXTENT_MIN 0x14
#define LOGICAL_EXTENT_MAX 0x24
#define PHYSICAL_EXTENT_MIN 0x34
#define PHYSICAL_EXTENT_MAX 0x44
#define UNIT_EXPONENT 0x54
#define UNIT 0x64
#define REPORT_SIZE 0x74
#define REPORT_ID 0x84
#define REPORT_COUNT 0x94
#define PUSH 0xA4
#define POP 0xB4
// Control attribute item tags
#define USAGE 0x08
#define USAGE_MIN 0x18
#define USAGE_MAX 0x28
#define DESIGNATOR_INDEX 0x38
#define DESIGNATOR_MIN 0x48
#define DESIGNATOR_MAX 0x58
#define STRING_INDEX 0x68
#define STRING_MIN 0x78
#define STRING_MAX 0x88
#define SET_DELIMITER 0xA9
// A bogus item tag
#define UNDEFINED_TAG 0xFF
// Bit masks
#define DATA_SIZE_MASK 0x03
// Flag used by AddString() to indicate we insert at index gotten
// from LB_GETCURSEL
#define DONT_CARE -1
//
// ID's for popup memnu
#define IDM_INSERT 0x9000
#define IDM_ADD 0x9001
#define IDM_DELETE 0x9002
//
// Structure created in the GetXXXVal() functions below and stored
// in the ITEMDATA area for the list box member associated with the
// hex representation of a Descriptor Entity.
typedef struct tagItemStruct{ BYTE bTag; // the built up tag
BYTE bParam[4]; // up to 4 bytes of parameter info
}ITEM_INFO,* PITEM_INFO;
typedef struct tagDeviceInfo{
ULONG nDeviceID; // Number appended to device string in reg
ULONG hDevice; // Handle of the device
}DEVICEINFO,*PDEVICEINFO;
//
// Maximum data bytes in a packet
#define MAX_DATA 10
//
// Structure defining a packet sent to the SendData IOCTL
//
typedef struct tagSendData{
ULONG hDevice; BYTE bData[MAX_DATA];
}SENDDATA_PACKET, *PSENDDATA_PACKET;
typedef struct _LAVAConfigIndexInfo{ WORD wStartOffset; WORD wHIDLen; WORD wReportLen; WORD wPhysicalLen; } LAVA_CONFIG,*PLAVA_CONFIG;
//
// Globals
//
#ifdef DEFINE_GLOBALS
HANDLE ghInst = NULL; HWND ghWnd = NULL;
PCHAR szEntity[] = {"USAGE", // 0
"USAGE_PAGE", // 1
"USAGE_MINIMUM", // 2
"USAGE_MAXIMUM", // 3
"DESIGNATOR_INDEX", // 4
"DESIGNATOR_MINIMUM", // 5
"DESIGNATOR_MAXIMUM", // 6
"STRING_INDEX", // 7
"STRING_MINIMUM", // 8
"STRING_MAXIMUM", // 9
"COLLECTION", // 10
"END_COLLECTION", // 11
"INPUT", // 12
"OUTPUT", // 13
"FEATURE", // 14
"LOGICAL_MINIMUM", // 15
"LOGICAL_MAXIMUM", // 16
"PHYSICAL_MINIMUM", // 17
"PHYSICAL_MAXIMUM", // 18
"UNIT_EXPONENT", // 19
"UNIT", // 20
"REPORT_SIZE", // 21
"REPORT_ID", // 22
"REPORT_COUNT", // 23
"PUSH", // 24
"POP", // 25
"SET_DELIMITER", // 26
"UNDEFINED_TAG"}; // 27
UCHAR Entity[] = {USAGE, USAGE_PAGE, USAGE_MIN, USAGE_MAX, DESIGNATOR_INDEX, DESIGNATOR_MIN, DESIGNATOR_MAX, STRING_INDEX, STRING_MIN, STRING_MAX, COLLECTION, END_COLLECTION, INPUT, OUTPUT, FEATURE, LOGICAL_EXTENT_MIN, LOGICAL_EXTENT_MAX, PHYSICAL_EXTENT_MIN, PHYSICAL_EXTENT_MAX, UNIT_EXPONENT, UNIT, REPORT_SIZE, REPORT_ID, REPORT_COUNT, PUSH, POP, SET_DELIMITER, UNDEFINED_TAG};
#define ENTITY_INDEX 27
UINT gEditVal=0; // Value returned from EditBox
BYTE gCollectionVal=0; // Value returned from Collection dialog
WORD gUnitVal=0; // Value returned from Unit dialog
BYTE gExpVal=0; // Value returned from Exponent dialog
BYTE gUsagePageVal=0; // Value returned from UsagePage dialog
BYTE gSetDelimiterVal=0; // Value returned from GetSetDelimiter dialog
WORD gMainItemVal=0; // Value returned from Input dialog
int gfInsert = FALSE; // Flag to tell whether we insert ot add strings
// to the ListBoxes
WORD gwReportDescLen=0; // Length in bytes of the ReportDescriptor;
#else
extern HANDLE ghInst; extern HWND ghWnd; extern PCHAR szEntity[]; extern UCHAR Entity[];
extern int gEditVal; extern BYTE gCollectionVal; extern WORD gUnitVal; extern BYTE gExpVal; extern BYTE gUsagePageVal; extern BYTE gSetDelimiterVal; extern WORD gMainItemVal;
extern int gfInsert;
extern WORD gwReportDescLen;
#endif
////////////////////////////////////////////////////////////////////////////////
//
// Function Proto's
//
LPARAM WINAPI WindowProc(HWND hWnd, UINT Message, UINT uParam, LPARAM lParam); LPARAM WMCommand(HWND hWnd, UINT Message, UINT uParam, LPARAM lParam); LPARAM WMSysCommand(HWND hWnd, UINT Message, UINT uParam, LPARAM lParam); LPARAM WMCreate(HWND hWnd, UINT uParam); LPARAM WMClose(HWND hWnd); LPARAM WMSize(HWND hWnd, LPARAM lParam); int SendHIDDescriptor(PUCHAR pHID, PULONG pSize, DWORD *pDevID, ULONG *pDevHandle); ULONG SendHIDData(SENDDATA_PACKET *pPacket, ULONG SizeIn, DWORD *pSizeOut) ; ULONG KillHIDDevice(SENDDATA_PACKET *pPacket); LPARAM WMPaint(HWND hWnd, UINT Message, UINT uParam, LPARAM lParam); INT WMKey(HWND hWnd, UINT Message, UINT uParam, LPARAM lParam); VOID MoveEntityItems(VOID); BOOL WindowRegistration(HANDLE hInstance, HANDLE hPrevInstance);
BOOL WINAPI SendDataDlgProc( HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam); LPARAM WINAPI ListBoxWindowProc(HWND hWnd, UINT Message, UINT uParam, LPARAM lParam);
void DoFileOpen(HANDLE); void DoFileSave(HANDLE); void DoFilePrint(HANDLE); void WriteLavaConfigFile(HANDLE,UINT); void DoCopyDescriptor(HANDLE hWnd); void DoParseDescriptor(HANDLE hWnd);
// Dialog box proc proto's
BOOL CALLBACK EditBoxDlgProc( HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam); BOOL CALLBACK CollectionDlgProc( HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam); BOOL CALLBACK MainItemDlgProc( HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam); BOOL CALLBACK UnitDlgProc( HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam); BOOL CALLBACK ExponentDlgProc( HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam); BOOL CALLBACK UsagePageDlgProc( HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam); BOOL CALLBACK SetDelimiterDlgProc( HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam);
LRESULT AddString(HANDLE hListBox,char * szString);
void GetBogusVal( HANDLE,int); void GetUsageVal( HANDLE,int ); void GetUsagePageVal( HANDLE,int ); void GetInputFromEditBoxSigned( HANDLE,int ); void GetInputFromEditBoxUnSigned( HANDLE,int ); void GetCollectionVal( HANDLE,int ); void GetEndCollectionVal( HANDLE,int ); void GetInputVal( HANDLE,int ); void GetOutputVal( HANDLE,int ); void GetFeatVal( HANDLE,int ); void GetExponentVal( HANDLE,int ); void GetUnitsVal( HANDLE,int ); void GetPushVal( HANDLE,int ); void GetPopVal( HANDLE,int ); void GetSetDelimiterVal( HANDLE hDescListBox, int nEntity);
#endif// __DT_H__
|