Kmdf Hid Minidriver For Touch I2c Device Calibration · Real & Secure

// Get raw X,Y from Packet->Buffer USHORT rawX = *(PUSHORT)(Packet->Buffer + X_OFFSET); USHORT rawY = *(PUSHORT)(Packet->Buffer + Y_OFFSET); // Apply calibration LONG calibratedX = (LONG)(rawX * CalibA + rawY * CalibB + CalibC); LONG calibratedY = (LONG)(rawX * CalibD + rawY * CalibE + CalibF);

X_screen = A * X_touch + B * Y_touch + C Y_screen = D * X_touch + E * Y_touch + F Where (X_touch, Y_touch) are raw ADC/register values from the I2C device, and (X_screen, Y_screen) are the final HID coordinates reported to the OS. Kmdf Hid Minidriver For Touch I2c Device Calibration

// Write back *(PUSHORT)(Packet->Buffer + X_OFFSET) = (USHORT)calibratedX; *(PUSHORT)(Packet->Buffer + Y_OFFSET) = (USHORT)calibratedY; // Get raw X,Y from Packet->Buffer USHORT rawX

#define GT911_X_RESOLUTION 0x8140 // Register for max X #define GT911_Y_RESOLUTION 0x8142 // Register for max Y VOID ApplyHardwareCalibration(WDFDEVICE Device) // Get raw X