From 9028fd53bd68898ce00efb8d3186947d8a52c798 Mon Sep 17 00:00:00 2001 From: Michael Lotz Date: Wed, 8 Jun 2011 00:26:04 +0000 Subject: [PATCH] Add HIDReportItem::ScaledRangeData() that scales the data into a pariticular range. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42033 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../kernel/drivers/input/usb_hid/HIDReportItem.cpp | 14 ++++++++++++++ .../kernel/drivers/input/usb_hid/HIDReportItem.h | 1 + 2 files changed, 15 insertions(+) diff --git a/src/add-ons/kernel/drivers/input/usb_hid/HIDReportItem.cpp b/src/add-ons/kernel/drivers/input/usb_hid/HIDReportItem.cpp index 5f937a6c11..d83d267bde 100644 --- a/src/add-ons/kernel/drivers/input/usb_hid/HIDReportItem.cpp +++ b/src/add-ons/kernel/drivers/input/usb_hid/HIDReportItem.cpp @@ -146,6 +146,20 @@ HIDReportItem::ScaledData(uint8 scaleToBits, bool toBeSigned) } +uint32 +HIDReportItem::ScaledRangeData(uint32 minimum, uint32 maximum) +{ + uint64 zeroBasedData; + if (Signed()) + zeroBasedData = (int32)fData - (int32)fMinimum; + else + zeroBasedData = fData - fMinimum; + + return zeroBasedData * (maximum - minimum + 1) / (fMaximum - fMinimum + 1) + + minimum; +} + + float HIDReportItem::ScaledFloatData() { diff --git a/src/add-ons/kernel/drivers/input/usb_hid/HIDReportItem.h b/src/add-ons/kernel/drivers/input/usb_hid/HIDReportItem.h index 23238b5bec..b9f4e1f0c0 100644 --- a/src/add-ons/kernel/drivers/input/usb_hid/HIDReportItem.h +++ b/src/add-ons/kernel/drivers/input/usb_hid/HIDReportItem.h @@ -37,6 +37,7 @@ public: uint32 Data() { return fData; }; uint32 ScaledData(uint8 scaleToBits, bool toBeSigned); + uint32 ScaledRangeData(uint32 minimum, uint32 maximum); float ScaledFloatData(); bool Valid() { return fValid; };