[Tinyos-contrib-commits] CVS: tinyos-1.x/contrib/imote2/tools/src/blrconsole/include/ddk hidpi.h, NONE, 1.1 hidsdi.h, NONE, 1.1 hidusage.h, NONE, 1.1 ntddk.h, NONE, 1.1 poppack.h, NONE, 1.1 pshpack4.h, NONE, 1.1

Lama Nachman lnachman at users.sourceforge.net
Tue Oct 10 15:36:27 PDT 2006


Update of /cvsroot/tinyos/tinyos-1.x/contrib/imote2/tools/src/blrconsole/include/ddk
In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv23684

Added Files:
	hidpi.h hidsdi.h hidusage.h ntddk.h poppack.h pshpack4.h 
Log Message:
Pushed out new release OCT 2006


--- NEW FILE: hidpi.h ---
/*
 * hidpi.h
 *
 * Public Interface for HID parsing library.
 *
 * This file is part of the w32api package.
 *
 * Contributors:
 *   Created by Casper S. Hornstrup <chorns at users.sourceforge.net>
 *
 * THIS SOFTWARE IS NOT COPYRIGHTED
 *
 * This source code is offered for use in the public domain. You may
 * use, modify or distribute it freely.
 *
 * This code is distributed in the hope that it will be useful but
 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
 * DISCLAIMED. This includes but is not limited to warranties of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 *
 */

#ifndef __HIDPI_H
#define __HIDPI_H

#if __GNUC__ >=3
#pragma GCC system_header
#endif

#ifdef __cplusplus
extern "C" {
#endif

#include "ntddk.h"
#include "hidusage.h"

#if defined(_HIDPI_)
  #define HIDAPI DECLSPEC_EXPORT
#else
  #define HIDAPI DECLSPEC_IMPORT
#endif

typedef PUCHAR PHIDP_REPORT_DESCRIPTOR;
typedef struct _HIDP_PREPARSED_DATA * PHIDP_PREPARSED_DATA;

typedef struct _HIDP_UNKNOWN_TOKEN {
  UCHAR  Token;
  UCHAR  Reserved[3];
  ULONG  BitField;
} HIDP_UNKNOWN_TOKEN, *PHIDP_UNKNOWN_TOKEN;

typedef enum _HIDP_KEYBOARD_DIRECTION {
  HidP_Keyboard_Break,
  HidP_Keyboard_Make
} HIDP_KEYBOARD_DIRECTION;

typedef struct _HIDP_KEYBOARD_MODIFIER_STATE {
  _ANONYMOUS_UNION union {
    _ANONYMOUS_STRUCT struct {
      ULONG  LeftControl : 1;
      ULONG  LeftShift : 1;
      ULONG  LeftAlt : 1;
      ULONG  LeftGUI : 1;
      ULONG  RightControl : 1;
      ULONG  RightShift : 1;
      ULONG  RightAlt : 1;
      ULONG  RigthGUI : 1;
      ULONG  CapsLock : 1;
      ULONG  ScollLock : 1;
      ULONG  NumLock : 1;
      ULONG  Reserved : 21;
    } DUMMYSTRUCTNAME;
    ULONG ul;
  } DUMMYUNIONNAME;
} HIDP_KEYBOARD_MODIFIER_STATE, *PHIDP_KEYBOARD_MODIFIER_STATE;

typedef BOOLEAN (DDKAPI *PHIDP_INSERT_SCANCODES)(
  IN PVOID  Context,
  IN PCHAR  NewScanCodes,
  IN ULONG  Length);

typedef struct _USAGE_AND_PAGE {
  USAGE  Usage;
  USAGE  UsagePage;
} USAGE_AND_PAGE, *PUSAGE_AND_PAGE;

HIDAPI
NTSTATUS
DDKAPI
HidP_TranslateUsageAndPagesToI8042ScanCodes(
  IN PUSAGE_AND_PAGE  ChangedUsageList,
  IN ULONG  UsageListLength,
  IN HIDP_KEYBOARD_DIRECTION  KeyAction,
  IN OUT PHIDP_KEYBOARD_MODIFIER_STATE  ModifierState,
  IN PHIDP_INSERT_SCANCODES  InsertCodesProcedure,
  IN PVOID  InsertCodesContext);

HIDAPI
NTSTATUS
DDKAPI
HidP_TranslateUsagesToI8042ScanCodes(
  IN PUSAGE  ChangedUsageList,
  IN ULONG  UsageListLength,
  IN HIDP_KEYBOARD_DIRECTION  KeyAction,
  IN OUT PHIDP_KEYBOARD_MODIFIER_STATE  ModifierState,
  IN PHIDP_INSERT_SCANCODES  InsertCodesProcedure,
  IN PVOID  InsertCodesContext);

typedef struct _HIDP_BUTTON_CAPS {
  USAGE  UsagePage;
  UCHAR  ReportID;
  BOOLEAN  IsAlias;
  USHORT  BitField;
  USHORT  LinkCollection;
  USAGE  LinkUsage;
  USAGE  LinkUsagePage;
  BOOLEAN  IsRange;
  BOOLEAN  IsStringRange;
  BOOLEAN  IsDesignatorRange;
  BOOLEAN  IsAbsolute;
  ULONG  Reserved[10];
  _ANONYMOUS_UNION union {
    struct {
      USAGE  UsageMin, UsageMax;
      USHORT  StringMin, StringMax;
      USHORT  DesignatorMin, DesignatorMax;
      USHORT  DataIndexMin, DataIndexMax;
    } Range;
    struct  {
       USAGE  Usage, Reserved1;
       USHORT  StringIndex, Reserved2;
       USHORT  DesignatorIndex, Reserved3;
       USHORT  DataIndex, Reserved4;
    } NotRange;
  } DUMMYUNIONNAME;
} HIDP_BUTTON_CAPS, *PHIDP_BUTTON_CAPS;

typedef struct _HIDP_CAPS {
  USAGE  Usage;
  USAGE  UsagePage;
  USHORT  InputReportByteLength;
  USHORT  OutputReportByteLength;
  USHORT  FeatureReportByteLength;
  USHORT  Reserved[17];
  USHORT  NumberLinkCollectionNodes;
  USHORT  NumberInputButtonCaps;
  USHORT  NumberInputValueCaps;
  USHORT  NumberInputDataIndices;
  USHORT  NumberOutputButtonCaps;
  USHORT  NumberOutputValueCaps;
  USHORT  NumberOutputDataIndices;
  USHORT  NumberFeatureButtonCaps;
  USHORT  NumberFeatureValueCaps;
  USHORT  NumberFeatureDataIndices;
} HIDP_CAPS, *PHIDP_CAPS;

typedef struct _HIDP_DATA {
  USHORT  DataIndex;
  USHORT  Reserved;
  _ANONYMOUS_UNION union {
    ULONG  RawValue;
    BOOLEAN  On;
  }  DUMMYUNIONNAME;
} HIDP_DATA, *PHIDP_DATA;

typedef struct _HIDP_EXTENDED_ATTRIBUTES {
  UCHAR  NumGlobalUnknowns;
  UCHAR  Reserved[3];
  PHIDP_UNKNOWN_TOKEN  GlobalUnknowns;
  ULONG  Data[1];
} HIDP_EXTENDED_ATTRIBUTES, *PHIDP_EXTENDED_ATTRIBUTES;

#define HIDP_LINK_COLLECTION_ROOT         ((USHORT) -1)
#define HIDP_LINK_COLLECTION_UNSPECIFIED  ((USHORT) 0)

typedef struct _HIDP_LINK_COLLECTION_NODE {
  USAGE  LinkUsage;
  USAGE  LinkUsagePage;
  USHORT  Parent;
  USHORT  NumberOfChildren;
  USHORT  NextSibling;
  USHORT  FirstChild;
  ULONG  CollectionType: 8;
  ULONG  IsAlias: 1;
  ULONG  Reserved: 23;
  PVOID  UserContext;
} HIDP_LINK_COLLECTION_NODE, *PHIDP_LINK_COLLECTION_NODE;

typedef struct _HIDP_VALUE_CAPS {
  USAGE  UsagePage;
  UCHAR  ReportID;
  BOOLEAN  IsAlias;
  USHORT  BitField;
  USHORT  LinkCollection;
  USAGE  LinkUsage;
  USAGE  LinkUsagePage;
  BOOLEAN  IsRange;
  BOOLEAN  IsStringRange;
  BOOLEAN  IsDesignatorRange;
  BOOLEAN  IsAbsolute;
  BOOLEAN  HasNull;
  UCHAR  Reserved;
  USHORT  BitSize;
  USHORT  ReportCount;
  USHORT  Reserved2[5];
  ULONG  UnitsExp;
  ULONG  Units;
  LONG  LogicalMin, LogicalMax;
  LONG  PhysicalMin, PhysicalMax;
    _ANONYMOUS_UNION union {
      struct {
        USAGE  UsageMin, UsageMax;
        USHORT  StringMin, StringMax;
        USHORT  DesignatorMin, DesignatorMax;
        USHORT  DataIndexMin, DataIndexMax;
      } Range;
      struct {
        USAGE  Usage, Reserved1;
        USHORT  StringIndex, Reserved2;
        USHORT  DesignatorIndex, Reserved3;
        USHORT  DataIndex, Reserved4;
      } NotRange;
    } DUMMYUNIONNAME;
} HIDP_VALUE_CAPS, *PHIDP_VALUE_CAPS;

typedef enum _HIDP_REPORT_TYPE {
  HidP_Input,
  HidP_Output,
  HidP_Feature
} HIDP_REPORT_TYPE;

#define FACILITY_HID_ERROR_CODE           0x11

#define HIDP_ERROR_CODES(SEV, CODE) \
  ((NTSTATUS) (((SEV) << 28) | (FACILITY_HID_ERROR_CODE << 16) | (CODE)))

#define HIDP_STATUS_SUCCESS                 (HIDP_ERROR_CODES(0x0, 0))
#define HIDP_STATUS_NULL                    (HIDP_ERROR_CODES(0x8, 1))
#define HIDP_STATUS_INVALID_PREPARSED_DATA  (HIDP_ERROR_CODES(0xC, 1))
#define HIDP_STATUS_INVALID_REPORT_TYPE     (HIDP_ERROR_CODES(0xC, 2))
#define HIDP_STATUS_INVALID_REPORT_LENGTH   (HIDP_ERROR_CODES(0xC, 3))
#define HIDP_STATUS_USAGE_NOT_FOUND         (HIDP_ERROR_CODES(0xC, 4))
#define HIDP_STATUS_VALUE_OUT_OF_RANGE      (HIDP_ERROR_CODES(0xC, 5))
#define HIDP_STATUS_BAD_LOG_PHY_VALUES      (HIDP_ERROR_CODES(0xC, 6))
#define HIDP_STATUS_BUFFER_TOO_SMALL        (HIDP_ERROR_CODES(0xC, 7))
#define HIDP_STATUS_INTERNAL_ERROR          (HIDP_ERROR_CODES(0xC, 8))
#define HIDP_STATUS_I8042_TRANS_UNKNOWN     (HIDP_ERROR_CODES(0xC, 9))
#define HIDP_STATUS_INCOMPATIBLE_REPORT_ID  (HIDP_ERROR_CODES(0xC, 0xA))
#define HIDP_STATUS_NOT_VALUE_ARRAY         (HIDP_ERROR_CODES(0xC, 0xB))
#define HIDP_STATUS_IS_VALUE_ARRAY          (HIDP_ERROR_CODES(0xC, 0xC))
#define HIDP_STATUS_DATA_INDEX_NOT_FOUND    (HIDP_ERROR_CODES(0xC, 0xD))
#define HIDP_STATUS_DATA_INDEX_OUT_OF_RANGE (HIDP_ERROR_CODES(0xC, 0xE))
#define HIDP_STATUS_BUTTON_NOT_PRESSED      (HIDP_ERROR_CODES(0xC, 0xF))
#define HIDP_STATUS_REPORT_DOES_NOT_EXIST   (HIDP_ERROR_CODES(0xC, 0x10))
#define HIDP_STATUS_NOT_IMPLEMENTED         (HIDP_ERROR_CODES(0xC, 0x20))
#define HIDP_STATUS_I8242_TRANS_UNKNOWN     HIDP_STATUS_I8042_TRANS_UNKNOWN



/*
 * NTSTATUS
 * HidP_GetButtonCaps(
 *   IN HIDP_REPORT_TYPE  ReportType,
 *   OUT PHIDP_BUTTON_CAPS  ButtonCaps,
 *   IN OUT PULONG  ButtonCapsLength,
 *   IN PHIDP_PREPARSED_DATA  PreparsedData);
 */
#define HidP_GetButtonCaps(_Type_, _Caps_, _Len_, _Data_) \
  HidP_GetSpecificButtonCaps(_Type_, 0, 0, 0, _Caps_, _Len_, _Data_)

/*
 * NTSTATUS
 * HidP_GetButtons(
 *   IN HIDP_REPORT_TYPE  ReportType,
 *   IN USAGE  UsagePage,
 *   IN USHORT  LinkCollection,
 *   OUT USAGE  *UsageList,
 *   IN OUT ULONG  *UsageLength,
 *   IN PHIDP_PREPARSED_DATA  PreparsedData,
 *   IN PCHAR  Report,
 *   IN ULONG  ReportLength);
 */
#define HidP_GetButtons(Rty, UPa, LCo, ULi, ULe, Ppd, Rep, RLe) \
  HidP_GetUsages(Rty, UPa, LCo, ULi, ULe, Ppd, Rep, RLe)

#define HidP_GetButtonListLength(RTy, UPa, Ppd) \
  HidP_GetUsageListLength(Rty, UPa, Ppd)


/*
 * NTSTATUS
 * HidP_GetButtonsEx(
 *   IN HIDP_REPORT_TYPE  ReportType,
 *   IN USHORT  LinkCollection,
 *   OUT PUSAGE_AND_PAGE  ButtonList,
 *   IN OUT ULONG  *UsageLength,
 *   IN PHIDP_PREPARSED_DATA  PreparsedData,
 *   IN PCHAR  Report,
 *   IN ULONG  ReportLength);
 */
#define HidP_GetButtonsEx(RT, LC, BL, UL, PD, R, RL)  \
  HidP_GetUsagesEx(RT, LC, BL, UL, PD, R, RL)

HIDAPI
NTSTATUS
DDKAPI
HidP_GetCaps(
  IN PHIDP_PREPARSED_DATA  PreparsedData,
  OUT PHIDP_CAPS  Capabilities);

HIDAPI
NTSTATUS
DDKAPI
HidP_GetData(
  IN HIDP_REPORT_TYPE  ReportType,
  OUT PHIDP_DATA  DataList,
  IN OUT PULONG  DataLength,
  IN PHIDP_PREPARSED_DATA  PreparsedData,
  IN PCHAR  Report,
  IN ULONG  ReportLength);

HIDAPI
NTSTATUS
DDKAPI
HidP_GetExtendedAttributes(
  IN HIDP_REPORT_TYPE  ReportType,
  IN USHORT  DataIndex,
  IN PHIDP_PREPARSED_DATA  PreparsedData,
  OUT PHIDP_EXTENDED_ATTRIBUTES  Attributes,
  IN OUT PULONG  LengthAttributes);

HIDAPI
NTSTATUS
DDKAPI
HidP_GetLinkCollectionNodes(
  OUT PHIDP_LINK_COLLECTION_NODE  LinkCollectionNodes,
  IN OUT PULONG  LinkCollectionNodesLength,
  IN PHIDP_PREPARSED_DATA  PreparsedData);

HIDAPI
NTSTATUS
DDKAPI
HidP_GetScaledUsageValue(
  IN HIDP_REPORT_TYPE  ReportType,
  IN USAGE  UsagePage,
  IN USHORT  LinkCollection  OPTIONAL,
  IN USAGE  Usage,
  OUT PLONG  UsageValue,
  IN PHIDP_PREPARSED_DATA  PreparsedData,
  IN PCHAR  Report,
  IN ULONG  ReportLength);

HIDAPI
NTSTATUS
DDKAPI
HidP_GetSpecificButtonCaps(
  IN HIDP_REPORT_TYPE  ReportType,
  IN USAGE  UsagePage,
  IN USHORT  LinkCollection,
  IN USAGE  Usage,
  OUT PHIDP_BUTTON_CAPS  ButtonCaps,
  IN OUT PULONG  ButtonCapsLength,
  IN PHIDP_PREPARSED_DATA  PreparsedData);

HIDAPI
NTSTATUS
DDKAPI
HidP_GetSpecificValueCaps(
  IN HIDP_REPORT_TYPE  ReportType,
  IN USAGE  UsagePage,
  IN USHORT  LinkCollection,
  IN USAGE  Usage,
  OUT PHIDP_VALUE_CAPS  ValueCaps,
  IN OUT PULONG  ValueCapsLength,
  IN PHIDP_PREPARSED_DATA  PreparsedData);

HIDAPI
NTSTATUS
DDKAPI
HidP_GetUsages(
  IN HIDP_REPORT_TYPE  ReportType,
  IN USAGE  UsagePage,
  IN USHORT  LinkCollection  OPTIONAL,
  OUT USAGE  *UsageList,
  IN OUT ULONG  *UsageLength,
  IN PHIDP_PREPARSED_DATA  PreparsedData,
  IN PCHAR  Report,
  IN ULONG  ReportLength);

HIDAPI
NTSTATUS
DDKAPI
HidP_GetUsagesEx(
  IN HIDP_REPORT_TYPE  ReportType,
  IN USHORT  LinkCollection,
  OUT PUSAGE_AND_PAGE  ButtonList,
  IN OUT ULONG  *UsageLength,
  IN PHIDP_PREPARSED_DATA  PreparsedData,
  IN PCHAR  Report,
  IN ULONG  ReportLength);

HIDAPI
NTSTATUS
DDKAPI
HidP_GetUsageValue(
  IN HIDP_REPORT_TYPE  ReportType,
  IN USAGE  UsagePage,
  IN USHORT  LinkCollection,
  IN USAGE  Usage,
  OUT PULONG  UsageValue,
  IN PHIDP_PREPARSED_DATA  PreparsedData,
  IN PCHAR  Report,
  IN ULONG  ReportLength);

HIDAPI
NTSTATUS
DDKAPI
HidP_GetUsageValueArray(
  IN HIDP_REPORT_TYPE  ReportType,
  IN USAGE  UsagePage,
  IN USHORT  LinkCollection  OPTIONAL,
  IN USAGE  Usage,
  OUT PCHAR  UsageValue,
  IN USHORT  UsageValueByteLength,
  IN PHIDP_PREPARSED_DATA  PreparsedData,
  IN PCHAR  Report,
  IN ULONG  ReportLength);

/*
 * NTSTATUS
 * HidP_GetValueCaps(
 *   IN HIDP_REPORT_TYPE  ReportType,
 *   OUT PHIDP_VALUE_CAPS  ValueCaps,
 *   IN OUT PULONG  ValueCapsLength,
 *   IN PHIDP_PREPARSED_DATA  PreparsedData);
 */
#define HidP_GetValueCaps(_Type_, _Caps_, _Len_, _Data_) \
  HidP_GetSpecificValueCaps (_Type_, 0, 0, 0, _Caps_, _Len_, _Data_)

HIDAPI
NTSTATUS
DDKAPI
HidP_InitializeReportForID(
  IN HIDP_REPORT_TYPE  ReportType,
  IN UCHAR  ReportID,
  IN PHIDP_PREPARSED_DATA  PreparsedData,
  IN OUT PCHAR  Report,
  IN ULONG  ReportLength);

/*
 * BOOLEAN
 * HidP_IsSameUsageAndPage(
 *   USAGE_AND_PAGE  u1,
 *   USAGE_AND_PAGE  u2);
 */
#define HidP_IsSameUsageAndPage(u1, u2) ((* (PULONG) &u1) == (* (PULONG) &u2))

HIDAPI
ULONG
DDKAPI
HidP_MaxDataListLength(
  IN HIDP_REPORT_TYPE  ReportType,
  IN PHIDP_PREPARSED_DATA  PreparsedData);

HIDAPI
ULONG
DDKAPI
HidP_MaxUsageListLength(
  IN HIDP_REPORT_TYPE  ReportType,
  IN USAGE  UsagePage  OPTIONAL,
  IN PHIDP_PREPARSED_DATA  PreparsedData);

/*
 * NTSTATUS
 * HidP_SetButtons(
 *   IN HIDP_REPORT_TYPE  ReportType,
 *   IN USAGE  UsagePage,
 *   IN USHORT  LinkCollection,
 *   IN PUSAGE  UsageList,
 *   IN OUT PULONG  UsageLength,
 *   IN PHIDP_PREPARSED_DATA  PreparsedData,
 *   IN OUT PCHAR  Report,
 *   IN ULONG  ReportLength);
 */
#define HidP_SetButtons(RT, UP, LC, UL1, UL2, PD, R, RL) \
  HidP_SetUsages(RT, UP, LC, UL1, UL2, PD, R, RL)

HIDAPI
NTSTATUS
DDKAPI
HidP_SetData(
  IN HIDP_REPORT_TYPE  ReportType,
  IN PHIDP_DATA  DataList,
  IN OUT PULONG  DataLength,
  IN PHIDP_PREPARSED_DATA  PreparsedData,
  IN OUT PCHAR  Report,
  IN ULONG  ReportLength);

HIDAPI
NTSTATUS
DDKAPI
HidP_SetScaledUsageValue(
  IN HIDP_REPORT_TYPE  ReportType,
  IN USAGE  UsagePage, 
  IN USHORT  LinkCollection  OPTIONAL,
  IN USAGE  Usage,
  IN LONG  UsageValue,
  IN PHIDP_PREPARSED_DATA  PreparsedData,
  IN OUT PCHAR  Report,
  IN ULONG  ReportLength);

HIDAPI
NTSTATUS
DDKAPI
HidP_SetUsages(
  IN HIDP_REPORT_TYPE  ReportType,
  IN USAGE  UsagePage,
  IN USHORT  LinkCollection, /* Optional */
  IN PUSAGE  UsageList,
  IN OUT PULONG  UsageLength,
  IN PHIDP_PREPARSED_DATA  PreparsedData,
  IN OUT PCHAR  Report,
  IN ULONG  ReportLength);

HIDAPI
NTSTATUS
DDKAPI
HidP_SetUsageValue(
  IN HIDP_REPORT_TYPE  ReportType,
  IN USAGE  UsagePage,
  IN USHORT  LinkCollection,
  IN USAGE  Usage,
  IN ULONG  UsageValue,
  IN PHIDP_PREPARSED_DATA  PreparsedData,
  IN OUT PCHAR  Report,
  IN ULONG  ReportLength);

HIDAPI
NTSTATUS
DDKAPI
HidP_SetUsageValueArray(
  IN HIDP_REPORT_TYPE  ReportType,
  IN USAGE  UsagePage,
  IN USHORT  LinkCollection  OPTIONAL,
  IN USAGE  Usage,
  IN PCHAR  UsageValue,
  IN USHORT  UsageValueByteLength,
  IN PHIDP_PREPARSED_DATA  PreparsedData,
  OUT PCHAR  Report,
  IN ULONG  ReportLength);

/*
 * NTSTATUS
 * HidP_UnsetButtons(
 *   IN HIDP_REPORT_TYPE  ReportType,
 *   IN USAGE  UsagePage,
 *   IN USHORT  LinkCollection,
 *   IN PUSAGE  UsageList,
 *   IN OUT PULONG  UsageLength,
 *   IN PHIDP_PREPARSED_DATA  PreparsedData,
 *   IN OUT PCHAR  Report,
 *   IN ULONG  ReportLength);
 */
#define HidP_UnsetButtons(RT, UP, LC, UL1, UL2, PD, R, RL) \
  HidP_UnsetUsages(RT, UP, LC, UL1, UL2, PD, R, RL)

HIDAPI
NTSTATUS
DDKAPI
HidP_UnsetUsages(
  IN HIDP_REPORT_TYPE  ReportType,
  IN USAGE  UsagePage,
  IN USHORT  LinkCollection,
  IN PUSAGE  UsageList,
  IN OUT PULONG  UsageLength,
  IN PHIDP_PREPARSED_DATA  PreparsedData,
  IN OUT PCHAR  Report,
  IN ULONG  ReportLength);

HIDAPI
NTSTATUS
DDKAPI
HidP_UsageAndPageListDifference(
  IN PUSAGE_AND_PAGE  PreviousUsageList,
  IN PUSAGE_AND_PAGE  CurrentUsageList,
  OUT PUSAGE_AND_PAGE  BreakUsageList,
  OUT PUSAGE_AND_PAGE  MakeUsageList,
  IN ULONG  UsageListLength);

HIDAPI
NTSTATUS
DDKAPI
HidP_UsageListDifference(
  IN PUSAGE  PreviousUsageList,
  IN PUSAGE  CurrentUsageList,
  OUT PUSAGE  BreakUsageList,
  OUT PUSAGE  MakeUsageList,
  IN ULONG  UsageListLength);

#ifdef __cplusplus
}
#endif

#endif /* __HIDPI_H */

--- NEW FILE: hidsdi.h ---
/*
 * hidsdi.h
 *
 * This file is part of the w32api package.
 *
 * THIS SOFTWARE IS NOT COPYRIGHTED
 *
 * This source code is offered for use in the public domain. You may
 * use, modify or distribute it freely.
 *
 * This code is distributed in the hope that it will be useful but
 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
 * DISCLAIMED. This includes but is not limited to warranties of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 */

#ifndef _HIDSDI_H
#define _HIDSDI_H

#if __GNUC__ >= 3
#pragma GCC system_header
#endif

#ifdef __cplusplus
extern "C" {
#endif

#include <ddk/hidusage.h>
#include <ddk/hidpi.h>

#ifndef WINHIDSDI
#define WINHIDSDI DECLSPEC_IMPORT
#endif

#include <pshpack4.h>

typedef struct _HIDD_CONFIGURATION {
	PVOID cookie;
 	ULONG size;
	ULONG RingBufferSize;
} HIDD_CONFIGURATION, *PHIDD_CONFIGURATION;

typedef struct _HIDD_ATTRIBUTES {
	ULONG Size; 
	USHORT VendorID;
	USHORT ProductID;
	USHORT VersionNumber;
} HIDD_ATTRIBUTES, *PHIDD_ATTRIBUTES;

WINHIDSDI BOOL WINAPI HidD_GetAttributes (HANDLE, PHIDD_ATTRIBUTES);
WINHIDSDI VOID WINAPI HidD_GetHidGuid (LPGUID);
WINHIDSDI BOOL WINAPI HidD_GetPreparsedData(HANDLE, PHIDP_PREPARSED_DATA  *);
WINHIDSDI BOOL WINAPI HidD_FreePreparsedData(PHIDP_PREPARSED_DATA);
WINHIDSDI BOOL WINAPI HidD_FlushQueue (HANDLE);
WINHIDSDI BOOL WINAPI HidD_GetConfiguration (HANDLE, PHIDD_CONFIGURATION, ULONG);                
WINHIDSDI BOOL WINAPI HidD_SetConfiguration (HANDLE, PHIDD_CONFIGURATION, ULONG);
WINHIDSDI BOOL WINAPI HidD_GetFeature (HANDLE, PVOID, ULONG);
WINHIDSDI BOOL WINAPI HidD_SetFeature (HANDLE, PVOID, ULONG);
WINHIDSDI BOOL WINAPI HidD_GetNumInputBuffers (HANDLE, PULONG);
WINHIDSDI BOOL WINAPI HidD_SetNumInputBuffers (HANDLE HidDeviceObject, ULONG);
WINHIDSDI BOOL WINAPI HidD_GetPhysicalDescriptor (HANDLE, PVOID, ULONG);
WINHIDSDI BOOL WINAPI HidD_GetManufacturerString (HANDLE, PVOID, ULONG);
WINHIDSDI BOOL WINAPI HidD_GetProductString ( HANDLE, PVOID, ULONG);
WINHIDSDI BOOL WINAPI HidD_GetIndexedString ( HANDLE, ULONG, PVOID, ULONG);
WINHIDSDI BOOL WINAPI HidD_GetSerialNumberString (HANDLE, PVOID, ULONG);

#include <poppack.h>

#ifdef __cplusplus
}
#endif

#endif /* _HIDSDI_H */

--- NEW FILE: hidusage.h ---
/*
 * hidusage.h
 *
 * HID usages
 *
 * This file is part of the w32api package.
 *
 * Contributors:
 *   Created by Casper S. Hornstrup <chorns at users.sourceforge.net>
 *
 * THIS SOFTWARE IS NOT COPYRIGHTED
 *
 * This source code is offered for use in the public domain. You may
 * use, modify or distribute it freely.
 *
 * This code is distributed in the hope that it will be useful but
 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
 * DISCLAIMED. This includes but is not limited to warranties of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 *
 */

#ifndef __HIDUSAGE_H
#define __HIDUSAGE_H

#if __GNUC__ >=3
#pragma GCC system_header
#endif

#ifdef __cplusplus
extern "C" {
#endif

typedef USHORT USAGE, *PUSAGE;

#define HID_USAGE_GENERIC_POINTER             ((USAGE) 0x01)
#define HID_USAGE_GENERIC_MOUSE               ((USAGE) 0x02)
#define HID_USAGE_GENERIC_JOYSTICK            ((USAGE) 0x04)
#define HID_USAGE_GENERIC_GAMEPAD             ((USAGE) 0x05)
#define HID_USAGE_GENERIC_KEYBOARD            ((USAGE) 0x06)
#define HID_USAGE_GENERIC_KEYPAD              ((USAGE) 0x07)
#define HID_USAGE_GENERIC_SYSTEM_CTL          ((USAGE) 0x80)
#define HID_USAGE_GENERIC_X                   ((USAGE) 0x30)
#define HID_USAGE_GENERIC_Y                   ((USAGE) 0x31)
#define HID_USAGE_GENERIC_Z                   ((USAGE) 0x32)
#define HID_USAGE_GENERIC_RX                  ((USAGE) 0x33)
#define HID_USAGE_GENERIC_RY                  ((USAGE) 0x34)
#define HID_USAGE_GENERIC_RZ                  ((USAGE) 0x35)
#define HID_USAGE_GENERIC_SLIDER              ((USAGE) 0x36)
#define HID_USAGE_GENERIC_DIAL                ((USAGE) 0x37)
#define HID_USAGE_GENERIC_WHEEL               ((USAGE) 0x38)
#define HID_USAGE_GENERIC_HATSWITCH           ((USAGE) 0x39)
#define HID_USAGE_GENERIC_COUNTED_BUFFER      ((USAGE) 0x3A)
#define HID_USAGE_GENERIC_BYTE_COUNT          ((USAGE) 0x3B)
#define HID_USAGE_GENERIC_MOTION_WAKEUP       ((USAGE) 0x3C)
#define HID_USAGE_GENERIC_VX                  ((USAGE) 0x40)
#define HID_USAGE_GENERIC_VY                  ((USAGE) 0x41)
#define HID_USAGE_GENERIC_VZ                  ((USAGE) 0x42)
#define HID_USAGE_GENERIC_VBRX                ((USAGE) 0x43)
#define HID_USAGE_GENERIC_VBRY                ((USAGE) 0x44)
#define HID_USAGE_GENERIC_VBRZ                ((USAGE) 0x45)
#define HID_USAGE_GENERIC_VNO                 ((USAGE) 0x46)
#define HID_USAGE_GENERIC_SYSCTL_POWER        ((USAGE) 0x81)
#define HID_USAGE_GENERIC_SYSCTL_SLEEP        ((USAGE) 0x82)
#define HID_USAGE_GENERIC_SYSCTL_WAKE         ((USAGE) 0x83)
#define HID_USAGE_GENERIC_SYSCTL_CONTEXT_MENU ((USAGE) 0x84)
#define HID_USAGE_GENERIC_SYSCTL_MAIN_MENU    ((USAGE) 0x85)
#define HID_USAGE_GENERIC_SYSCTL_APP_MENU     ((USAGE) 0x86)
#define HID_USAGE_GENERIC_SYSCTL_HELP_MENU    ((USAGE) 0x87)
#define HID_USAGE_GENERIC_SYSCTL_MENU_EXIT    ((USAGE) 0x88)
#define HID_USAGE_GENERIC_SYSCTL_MENU_SELECT  ((USAGE) 0x89)
#define HID_USAGE_GENERIC_SYSCTL_MENU_RIGHT   ((USAGE) 0x8A)
#define HID_USAGE_GENERIC_SYSCTL_MENU_LEFT    ((USAGE) 0x8B)
#define HID_USAGE_GENERIC_SYSCTL_MENU_UP      ((USAGE) 0x8C)
#define HID_USAGE_GENERIC_SYSCTL_MENU_DOWN    ((USAGE) 0x8D)

#define HID_USAGE_KEYBOARD_NOEVENT        ((USAGE) 0x00)
#define HID_USAGE_KEYBOARD_ROLLOVER       ((USAGE) 0x01)
#define HID_USAGE_KEYBOARD_POSTFAIL       ((USAGE) 0x02)
#define HID_USAGE_KEYBOARD_UNDEFINED      ((USAGE) 0x03)
#define HID_USAGE_KEYBOARD_aA             ((USAGE) 0x04)
#define HID_USAGE_KEYBOARD_zZ             ((USAGE) 0x1D)
#define HID_USAGE_KEYBOARD_ONE            ((USAGE) 0x1E)
#define HID_USAGE_KEYBOARD_ZERO           ((USAGE) 0x27)
#define HID_USAGE_KEYBOARD_LCTRL          ((USAGE) 0xE0)
#define HID_USAGE_KEYBOARD_LSHFT          ((USAGE) 0xE1)
#define HID_USAGE_KEYBOARD_LALT           ((USAGE) 0xE2)
#define HID_USAGE_KEYBOARD_LGUI           ((USAGE) 0xE3)
#define HID_USAGE_KEYBOARD_RCTRL          ((USAGE) 0xE4)
#define HID_USAGE_KEYBOARD_RSHFT          ((USAGE) 0xE5)
#define HID_USAGE_KEYBOARD_RALT           ((USAGE) 0xE6)
#define HID_USAGE_KEYBOARD_RGUI           ((USAGE) 0xE7)
#define HID_USAGE_KEYBOARD_SCROLL_LOCK    ((USAGE) 0x47)
#define HID_USAGE_KEYBOARD_NUM_LOCK       ((USAGE) 0x53)
#define HID_USAGE_KEYBOARD_CAPS_LOCK      ((USAGE) 0x39)
#define HID_USAGE_KEYBOARD_F1             ((USAGE) 0x3A)
#define HID_USAGE_KEYBOARD_F12            ((USAGE) 0x45)
#define HID_USAGE_KEYBOARD_RETURN         ((USAGE) 0x28)
#define HID_USAGE_KEYBOARD_ESCAPE         ((USAGE) 0x29)
#define HID_USAGE_KEYBOARD_DELETE         ((USAGE) 0x2A)
#define HID_USAGE_KEYBOARD_PRINT_SCREEN   ((USAGE) 0x46)

#define HID_USAGE_LED_NUM_LOCK                  ((USAGE) 0x01)
#define HID_USAGE_LED_CAPS_LOCK                 ((USAGE) 0x02)
#define HID_USAGE_LED_SCROLL_LOCK               ((USAGE) 0x03)
#define HID_USAGE_LED_COMPOSE                   ((USAGE) 0x04)
#define HID_USAGE_LED_KANA                      ((USAGE) 0x05)
#define HID_USAGE_LED_POWER                     ((USAGE) 0x06)
#define HID_USAGE_LED_SHIFT                     ((USAGE) 0x07)
#define HID_USAGE_LED_DO_NOT_DISTURB            ((USAGE) 0x08)
#define HID_USAGE_LED_MUTE                      ((USAGE) 0x09)
#define HID_USAGE_LED_TONE_ENABLE               ((USAGE) 0x0A)
#define HID_USAGE_LED_HIGH_CUT_FILTER           ((USAGE) 0x0B)
#define HID_USAGE_LED_LOW_CUT_FILTER            ((USAGE) 0x0C)
#define HID_USAGE_LED_EQUALIZER_ENABLE          ((USAGE) 0x0D)
#define HID_USAGE_LED_SOUND_FIELD_ON            ((USAGE) 0x0E)
#define HID_USAGE_LED_SURROUND_FIELD_ON         ((USAGE) 0x0F)
#define HID_USAGE_LED_REPEAT                    ((USAGE) 0x10)
#define HID_USAGE_LED_STEREO                    ((USAGE) 0x11)
#define HID_USAGE_LED_SAMPLING_RATE_DETECT      ((USAGE) 0x12)
#define HID_USAGE_LED_SPINNING                  ((USAGE) 0x13)
#define HID_USAGE_LED_CAV                       ((USAGE) 0x14)
#define HID_USAGE_LED_CLV                       ((USAGE) 0x15)
#define HID_USAGE_LED_RECORDING_FORMAT_DET      ((USAGE) 0x16)
#define HID_USAGE_LED_OFF_HOOK                  ((USAGE) 0x17)
#define HID_USAGE_LED_RING                      ((USAGE) 0x18)
#define HID_USAGE_LED_MESSAGE_WAITING           ((USAGE) 0x19)
#define HID_USAGE_LED_DATA_MODE                 ((USAGE) 0x1A)
#define HID_USAGE_LED_BATTERY_OPERATION         ((USAGE) 0x1B)
#define HID_USAGE_LED_BATTERY_OK                ((USAGE) 0x1C)
#define HID_USAGE_LED_BATTERY_LOW               ((USAGE) 0x1D)
#define HID_USAGE_LED_SPEAKER                   ((USAGE) 0x1E)
#define HID_USAGE_LED_HEAD_SET                  ((USAGE) 0x1F)
#define HID_USAGE_LED_HOLD                      ((USAGE) 0x20)
#define HID_USAGE_LED_MICROPHONE                ((USAGE) 0x21)
#define HID_USAGE_LED_COVERAGE                  ((USAGE) 0x22)
#define HID_USAGE_LED_NIGHT_MODE                ((USAGE) 0x23)
#define HID_USAGE_LED_SEND_CALLS                ((USAGE) 0x24)
#define HID_USAGE_LED_CALL_PICKUP               ((USAGE) 0x25)
#define HID_USAGE_LED_CONFERENCE                ((USAGE) 0x26)
#define HID_USAGE_LED_STAND_BY                  ((USAGE) 0x27)
#define HID_USAGE_LED_CAMERA_ON                 ((USAGE) 0x28)
#define HID_USAGE_LED_CAMERA_OFF                ((USAGE) 0x29)
#define HID_USAGE_LED_ON_LINE                   ((USAGE) 0x2A)
#define HID_USAGE_LED_OFF_LINE                  ((USAGE) 0x2B)
#define HID_USAGE_LED_BUSY                      ((USAGE) 0x2C)
#define HID_USAGE_LED_READY                     ((USAGE) 0x2D)
#define HID_USAGE_LED_PAPER_OUT                 ((USAGE) 0x2E)
#define HID_USAGE_LED_PAPER_JAM                 ((USAGE) 0x2F)
#define HID_USAGE_LED_REMOTE                    ((USAGE) 0x30)
#define HID_USAGE_LED_FORWARD                   ((USAGE) 0x31)
#define HID_USAGE_LED_REVERSE                   ((USAGE) 0x32)
#define HID_USAGE_LED_STOP                      ((USAGE) 0x33)
#define HID_USAGE_LED_REWIND                    ((USAGE) 0x34)
#define HID_USAGE_LED_FAST_FORWARD              ((USAGE) 0x35)
#define HID_USAGE_LED_PLAY                      ((USAGE) 0x36)
#define HID_USAGE_LED_PAUSE                     ((USAGE) 0x37)
#define HID_USAGE_LED_RECORD                    ((USAGE) 0x38)
#define HID_USAGE_LED_ERROR                     ((USAGE) 0x39)
#define HID_USAGE_LED_SELECTED_INDICATOR        ((USAGE) 0x3A)
#define HID_USAGE_LED_IN_USE_INDICATOR          ((USAGE) 0x3B)
#define HID_USAGE_LED_MULTI_MODE_INDICATOR      ((USAGE) 0x3C)
#define HID_USAGE_LED_INDICATOR_ON              ((USAGE) 0x3D)
#define HID_USAGE_LED_INDICATOR_FLASH           ((USAGE) 0x3E)
#define HID_USAGE_LED_INDICATOR_SLOW_BLINK      ((USAGE) 0x3F)
#define HID_USAGE_LED_INDICATOR_FAST_BLINK      ((USAGE) 0x40)
#define HID_USAGE_LED_INDICATOR_OFF             ((USAGE) 0x41)
#define HID_USAGE_LED_FLASH_ON_TIME             ((USAGE) 0x42)
#define HID_USAGE_LED_SLOW_BLINK_ON_TIME        ((USAGE) 0x43)
#define HID_USAGE_LED_SLOW_BLINK_OFF_TIME       ((USAGE) 0x44)
#define HID_USAGE_LED_FAST_BLINK_ON_TIME        ((USAGE) 0x45)
#define HID_USAGE_LED_FAST_BLINK_OFF_TIME       ((USAGE) 0x46)
#define HID_USAGE_LED_INDICATOR_COLOR           ((USAGE) 0x47)
#define HID_USAGE_LED_RED                       ((USAGE) 0x48)
#define HID_USAGE_LED_GREEN                     ((USAGE) 0x49)
#define HID_USAGE_LED_AMBER                     ((USAGE) 0x4A)
#define HID_USAGE_LED_GENERIC_INDICATOR         ((USAGE) 0x3B)

#define HID_USAGE_PAGE_UNDEFINED          ((USAGE) 0x00)
#define HID_USAGE_PAGE_GENERIC            ((USAGE) 0x01)
#define HID_USAGE_PAGE_SIMULATION         ((USAGE) 0x02)
#define HID_USAGE_PAGE_VR                 ((USAGE) 0x03)
#define HID_USAGE_PAGE_SPORT              ((USAGE) 0x04)
#define HID_USAGE_PAGE_GAME               ((USAGE) 0x05)
#define HID_USAGE_PAGE_KEYBOARD           ((USAGE) 0x07)
#define HID_USAGE_PAGE_LED                ((USAGE) 0x08)
#define HID_USAGE_PAGE_BUTTON             ((USAGE) 0x09)
#define HID_USAGE_PAGE_ORDINAL            ((USAGE) 0x0A)
#define HID_USAGE_PAGE_TELEPHONY          ((USAGE) 0x0B)
#define HID_USAGE_PAGE_CONSUMER           ((USAGE) 0x0C)
#define HID_USAGE_PAGE_DIGITIZER          ((USAGE) 0x0D)
#define HID_USAGE_PAGE_UNICODE            ((USAGE) 0x10)
#define HID_USAGE_PAGE_ALPHANUMERIC       ((USAGE) 0x14)

#define HID_USAGE_TELEPHONY_PHONE               ((USAGE) 0x01)
#define HID_USAGE_TELEPHONY_ANSWERING_MACHINE   ((USAGE) 0x02)
#define HID_USAGE_TELEPHONY_MESSAGE_CONTROLS    ((USAGE) 0x03)
#define HID_USAGE_TELEPHONY_HANDSET             ((USAGE) 0x04)
#define HID_USAGE_TELEPHONY_HEADSET             ((USAGE) 0x05)
#define HID_USAGE_TELEPHONY_KEYPAD              ((USAGE) 0x06)
#define HID_USAGE_TELEPHONY_PROGRAMMABLE_BUTTON ((USAGE) 0x07)

#define HID_USAGE_SIMULATION_RUDDER       ((USAGE) 0xBA)
#define HID_USAGE_SIMULATION_THROTTLE     ((USAGE) 0xBB)

#ifdef __cplusplus
}
#endif

#endif /* __HIDUSAGE_H */

--- NEW FILE: ntddk.h ---
/*
 * ntddk.h
 *
 * Windows Device Driver Kit
 *
 * This file is part of the w32api package.
 *
 * Contributors:
 *   Created by Casper S. Hornstrup <chorns at users.sourceforge.net>
 *
 * THIS SOFTWARE IS NOT COPYRIGHTED
 *
 * This source code is offered for use in the public domain. You may
 * use, modify or distribute it freely.
 *
 * This code is distributed in the hope that it will be useful but
 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
 * DISCLAIMED. This includes but is not limited to warranties of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 *
 * DEFINES:
 *    DBG             - Debugging enabled/disabled (0/1)
 *    POOL_TAGGING    - Enable pool tagging
 *    _X86_           - X86 environment
 *   __USE_NTOSKRNL__ - Use ntoskrnl.exe exports instead of kernel32.dll
 */

#ifndef __NTDDK_H
#define __NTDDK_H

#if __GNUC__ >= 3
#pragma GCC system_header
#endif

#ifndef __USE_NTOSKRNL__
#define __USE_NTOSKRNL__ 1
#endif

#ifdef __cplusplus
extern "C" {
#endif

#include <stdarg.h>
#include <windef.h>
#include <ntdef.h>
#include <basetyps.h>

/* Base types, structures and definitions */
typedef short CSHORT;
typedef CONST int CINT;
typedef CONST char *PCSZ;

#ifndef STATIC
#define STATIC static
#endif

#ifndef CALLBACK
#define CALLBACK
#endif

#ifndef DECL_IMPORT
#define DECL_IMPORT __attribute__((dllimport))
#endif

#ifndef DECL_EXPORT
#define DECL_EXPORT __attribute__((dllexport))
#endif

/* Windows NT status codes */
#include "ntstatus.h"

/* Windows NT definitions exported to user mode */
#include <winnt.h>

/* Windows Device Driver Kit */
#include "winddk.h"

/* Definitions only in Windows XP */
#include "winxp.h"

/* Definitions only in Windows 2000 */
#include "win2k.h"

/* Definitions only in Windows NT 4 */
#include "winnt4.h"

#ifdef __cplusplus
}
#endif

#endif /* __NTDDK_H */

--- NEW FILE: poppack.h ---
#ifndef RC_INVOKED
#pragma pack(pop)
#endif

--- NEW FILE: pshpack4.h ---
#ifndef RC_INVOKED
#pragma pack(push,4)
#endif



More information about the Tinyos-contrib-commits mailing list