touch firmware d evelopment talking hid to windows l.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Touch Firmware d evelopment: talking HID to Windows PowerPoint Presentation
Download Presentation
Touch Firmware d evelopment: talking HID to Windows

Loading in 2 Seconds...

play fullscreen
1 / 14

Touch Firmware d evelopment: talking HID to Windows - PowerPoint PPT Presentation


  • 1072 Views
  • Uploaded on

HW-182P. Touch Firmware d evelopment: talking HID to Windows. Olumuyiwa Durojaiye Senior Software Engineer Microsoft Corporation. Agenda. Touch digitizer data delivery Driver stack Human Interface Devices (HID) specification USB and I2C You’ll leave with

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Touch Firmware d evelopment: talking HID to Windows' - niveditha


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
touch firmware d evelopment talking hid to windows
HW-182P

Touch Firmware development: talking HID to Windows

Olumuyiwa Durojaiye

Senior Software Engineer

Microsoft Corporation

agenda
Agenda
  • Touch digitizer data delivery
  • Driver stack
  • Human Interface Devices (HID) specification
  • USB and I2C

You’ll leave with

  • Understanding of touch HW data delivery to Windows
  • Where to get more information on this topic
slide3

The good news? No driver development!

  • Why?
    • Independent Hardware Vendors (IHVs ) can focus on firmware development
    • Reduces production and maintenance costs
  • How?
    • Taking advantage of Human Interface Device (HID) Specification
    • Windows drivers for HID over I2C /USB
slide4

Touch input architecture

Input component

Class Driver

Win32k.sys

Mini-driver

Bus specific lower drivers

Digitizer Firmware

HIDCLASS.sys

HIDCLASS.sys

HIDUSB.sys

HIDI2C.sys

I2C

USB

Host

USB Device

Firmware

I2C Device

communicating with the host
Communicating with the host
  • New in Win 8
    • No more serial (UART) devices
    • Stricter rules
    • New certification requirements
  • Bus
    • USB or I2C
  • HID Rules
    • USB HID Specification:
      • http://www.usb.org/developers/devclass_docs/HID1_11.pdf
    • USB HID Usage Table:
      • http://www.usb.org/developers/devclass_docs/Hut1_11.pdf
    • Protocol Document:
      • http://go.microsoft.com/fwlink/p/?LinkId=226808
device and report descriptors
Device and report descriptors
  • Required Usages

Values: X, Y, Contact id, Contact Count Maximum

Button: Tip

  • Optional Usages

Values: Pressure, Width Height, Azimuth

Button: In Range

  • Reporting Modes

Parallel

Hybrid

report d escriptor
Report descriptor

Required Usages

Optional Usages

  • 0x05, 0x0d, // USAGE_PAGE (Digitizers)
  • 0x09, 0x04, // USAGE (Touch Screen)
  • 0xa1, 0x01, // COLLECTION (Application)
  • 0x85, 0x01, // REPORT_ID (Touch)
  • 0x09, 0x22, // USAGE (Finger)
  • 0xa1, 0x02, // COLLECTION (Logical)
  • 0x09, 0x42, // USAGE (Tip Switch)
  • 0x15, 0x00, // LOGICAL_MINIMUM (0)
  • 0x25, 0x01, // LOGICAL_MAXIMUM (1)
  • 0x75, 0x01, // REPORT_SIZE (1)
  • 0x95, 0x01, // REPORT_COUNT (1)
  • 0x81, 0x02, // INPUT (Data,Var,Abs)
  • 0x95, 0x07, // REPORT_COUNT (7)
  • 0x81, 0x03, // INPUT (Cnst,Ary,Abs)
  • 0x75, 0x08, // REPORT_SIZE (8)
  • 0x09, 0x51, // USAGE (Contact Identifier)
  • 0x95, 0x01, // REPORT_COUNT (1)
  • 0x81, 0x02, // INPUT (Data,Var,Abs)
  • 0x05, 0x01, // USAGE_PAGE (Generic Desk..
  • 0x26, 0xff, 0x0f, // LOGICAL_MAXIMUM (4095)
  • 0x75, 0x10, // REPORT_SIZE (16)
  • 0x55, 0x0e, // UNIT_EXPONENT (-2)
  • 0x65, 0x13, // UNIT(Inch,EngLinear)
  • 0x09, 0x30, // USAGE (X)
  • 0x35, 0x00, // PHYSICAL_MINIMUM (0)
  • 0x46, 0xb5, 0x04, // PHYSICAL_MAXIMUM (1205)
  • 0x95, 0x02, // REPORT_COUNT (2)
  • 0x81, 0x02, // INPUT (Data,Var,Abs)
  • 0x46, 0x8a, 0x03, // PHYSICAL_MAXIMUM (906)
  • 0x09, 0x31, // USAGE (Y)
  • 0x81, 0x02, // INPUT (Data,Var,Abs)
report descriptor
Report descriptor
  • 0x05, 0x0d, // USAGE_PAGE (Digitizers)
  • 0x09, 0x48, // USAGE (Width)
  • 0x09, 0x49, // USAGE (Height)
  • 0x81, 0x02, // INPUT (Data,Var,Abs)
  • 0x95, 0x01, // REPORT_COUNT (1)
  • 0x55, 0x0C, // UNIT_EXPONENT (-4)
  • 0x65, 0x12, // UNIT (Radians,SIROtation)
  • 0x35, 0x00, // PHYSICAL_MINIMUM (0)
  • 0x47, 0x6f, 0xf5, 0x00, 0x00, // PHYSICAL_MAXIMUM (62831)
  • 0x15, 0x00, // LOGICAL_MINIMUM (0)
  • 0x27, 0x6f, 0xf5, 0x00, 0x00, // LOGICAL_MAXIMUM (62831)
  • 0x09, 0x3f, // USAGE (Azimuth[Orientation])
  • 0x81, 0x02, // INPUT (Data,Var,Abs)
  • 0xc0, // END_COLLECTION
  • 0x05, 0x0d, // USAGE_PAGE (Digitizers)
  • 0x27, 0xff, 0xff, 0xff, 0x0f, // LOGICAL_MAXIMUM (268435455)
  • 0x75, 0x20, // REPORT_SIZE (32)
  • 0x95, 0x01, // REPORT_COUNT (1)
  • 0x09, 0x56, // USAGE (Scan Time)
  • 0x81, 0x02, // INPUT (Data,Var,Abs)
  • 0x09, 0x54, // USAGE (Contact count)
  • 0x25, 0x7f, // LOGICAL_MAXIMUM (127)
  • 0x95, 0x01, // REPORT_COUNT (1)
  • 0x75, 0x08, // REPORT_SIZE (8)
  • 0x81, 0x02, // INPUT (Data,Var,Abs)
report descriptor9
Report descriptor
  • 0x85, REPORTID_MAX_COUNT, // REPORT_ID (Feature)
  • 0x09, 0x55, // USAGE(Contact Count Maximum)
  • 0x09, 0x53, // USAGE (Device Identifier)
  • 0x95, 0x02, // REPORT_COUNT (2)
  • 0x25, 0x02, // LOGICAL_MAXIMUM (2)
  • 0xb1, 0x02, // FEATURE (Data,Var,Abs)
  • 0x85, 0x44, // REPORT_ID (Feature)
  • 0x06, 0x00, 0xff, // USAGE_PAGE (Vendor Defined)
  • 0x09, 0xC5, // USAGE (Vendor Usage 0xC5)
  • 0x15, 0x00, // LOGICAL_MINIMUM (0)
  • 0x26, 0xff, 0x00, // LOGICAL_MAXIMUM (0xff)
  • 0x75, 0x08, // REPORT_SIZE (8)
  • 0x96, 0x00, 0x01, // REPORT_COUNT (0x100 (256))
  • 0xb1, 0x02, // FEATURE (Data,Var,Abs)
  • 0xc0, // END_COLLECTION
related sessions
Related sessions
  • [HW-181T] Building great touch systems
  • [APP-185T] Make great Metro style apps that are touch-optimized using HTML5
  • [APP-186T] Build advanced touch apps in Windows 8 
further reading and documentation
Further reading and documentation
  • Name of further reading
    • HID Specification

http://www.usb.org/developers/devclass_docs/HID1_11.pdf

    • HID Usage Table

http://www.usb.org/developers/devclass_docs/Hut1_11.pdf

  • Link to MSDN
    • The HID Class Driver for Sensors

http://go.microsoft.com/fwlink/p/?LinkId=226798

    • Windows Pointer Device Data Delivery Protocol 

http://go.microsoft.com/fwlink/p/?LinkId=226808

    • Windows Hardware DevCenter

http://go.microsoft.com/fwlink/p/?LinkId=227308

    • Windows DevCenter

http://msdn.microsoft.com/windows/

feedback and q uestions http forums dev windows com session f eedback http bldw in sessionfeedback
thank you

Feedback and questions http://forums.dev.windows.com

Session feedbackhttp://bldw.in/SessionFeedback

slide13

© 2011 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.

The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.