Index: device/hid/hid_usage_and_page.h |
diff --git a/device/hid/hid_usage_and_page.h b/device/hid/hid_usage_and_page.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..fd366acda883025cb235145e2d30a81fa576e144 |
--- /dev/null |
+++ b/device/hid/hid_usage_and_page.h |
@@ -0,0 +1,187 @@ |
+// Copyright 2014 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef DEVICE_HID_HID_USAGE_AND_PAGE_H_ |
+#define DEVICE_HID_HID_USAGE_AND_PAGE_H_ |
+ |
+#include <stdint.h> |
+ |
+#include <ostream> |
+ |
+#include "base/logging.h" |
+ |
+namespace device { |
+ |
+struct HidUsageAndPage { |
Ken Rockot(use gerrit already)
2014/04/15 21:18:37
Vertical whitespace
jracle (use Gerrit)
2014/04/16 16:39:20
Done
|
+ |
+ enum Page { |
+ kPageUndefined = 0x00, |
+ kPageGenericDesktop = 0x01, |
+ kPageSimulation = 0x02, |
+ kPageVirtualReality = 0x03, |
+ kPageSport = 0x04, |
+ kPageGame = 0x05, |
+ kPageKeyboard = 0x07, |
+ kPageLed = 0x08, |
+ kPageButton = 0x09, |
+ kPageOrdinal = 0x0A, |
+ kPageTelephony = 0x0B, |
+ kPageConsumer = 0x0C, |
+ kPageDigitizer = 0x0D, |
+ kPagePidPage = 0x0F, |
+ kPageUnicode = 0x10, |
+ kPageAlphanumericDisplay = 0x14, |
+ kPageMedicalInstruments = 0x40, |
+ kPageMonitor0 = 0x80, |
+ kPageMonitor1 = 0x81, |
+ kPageMonitor2 = 0x82, |
+ kPageMonitor3 = 0x83, |
+ kPagePower0 = 0x84, |
+ kPagePower1 = 0x85, |
+ kPagePower2 = 0x86, |
+ kPagePower3 = 0x87, |
+ kPageBarCodeScanner = 0x8C, |
+ kPageScale = 0x8D, |
+ kPageMagneticStripeReader = 0x8E, |
+ kPageReservedPointOfSale = 0x8F, |
+ kPageCameraControl = 0x90, |
+ kPageArcade = 0x91, |
+ kPageVendor = 0xFF00, |
+ kPageMediaCenter = 0xFFBC |
+ }; |
+ |
+ HidUsageAndPage(Page usage_page, uint16_t usage) |
+ : usage_page((uint16_t)usage_page), usage(usage) {} |
+ HidUsageAndPage(uint16_t usage_page, uint16_t usage) |
Ken Rockot(use gerrit already)
2014/04/15 21:18:37
This is confusing. Please just have one constructo
jracle (use Gerrit)
2014/04/16 16:39:20
Makes sense!
|
+ : usage_page(usage_page), usage(usage) {} |
+ HidUsageAndPage() : usage_page(0), usage(0) {} |
+ ~HidUsageAndPage() {} |
+ |
+ uint16_t usage_page; |
Ken Rockot(use gerrit already)
2014/04/15 21:18:37
Why not store this as a Page?
jracle (use Gerrit)
2014/04/16 16:39:20
Indeed (feared to get out-of-range values wrt page
|
+ uint16_t usage; |
+ |
+ bool operator==(const HidUsageAndPage& other) const { |
Ken Rockot(use gerrit already)
2014/04/15 21:18:37
Please do not overload operators (the ostream oper
jracle (use Gerrit)
2014/04/16 16:39:20
This is needed for unit test assertions
|
+ return usage_page == other.usage_page && usage == other.usage; |
+ } |
+ |
+ private: |
+ friend std::ostream& operator<<(std::ostream& os, |
+ const HidUsageAndPage& usage_and_page) { |
Ken Rockot(use gerrit already)
2014/04/15 21:18:37
Please do not inline this, and it doesn't need to
jracle (use Gerrit)
2014/04/16 16:39:20
OK
|
+ os << "Usage Page: " << (Page)usage_and_page.usage_page |
+ << ", Usage: " << usage_and_page.usage; |
+ return os; |
+ }; |
+ |
+ friend std::ostream& operator<<(std::ostream& os, const Page& usage_page) { |
Ken Rockot(use gerrit already)
2014/04/15 21:18:37
Please do not inline this, and it doesn't need to
jracle (use Gerrit)
2014/04/16 16:39:20
OK
|
+ switch (usage_page) { |
+ case kPageUndefined: |
+ os << "Undefined"; |
+ break; |
+ case kPageGenericDesktop: |
+ os << "Generic Desktop"; |
+ break; |
+ case kPageSimulation: |
+ os << "Simulation"; |
+ break; |
+ case kPageVirtualReality: |
+ os << "Virtual Reality"; |
+ break; |
+ case kPageSport: |
+ os << "Sport"; |
+ break; |
+ case kPageGame: |
+ os << "Game"; |
+ break; |
+ case kPageKeyboard: |
+ os << "Keyboard"; |
+ break; |
+ case kPageLed: |
+ os << "Led"; |
+ break; |
+ case kPageButton: |
+ os << "Button"; |
+ break; |
+ case kPageOrdinal: |
+ os << "Ordinal"; |
+ break; |
+ case kPageTelephony: |
+ os << "Telephony"; |
+ break; |
+ case kPageConsumer: |
+ os << "Consumer"; |
+ break; |
+ case kPageDigitizer: |
+ os << "Digitizer"; |
+ break; |
+ case kPagePidPage: |
+ os << "Pid Page"; |
+ break; |
+ case kPageUnicode: |
+ os << "Unicode"; |
+ break; |
+ case kPageAlphanumericDisplay: |
+ os << "Alphanumeric Display"; |
+ break; |
+ case kPageMedicalInstruments: |
+ os << "Medical Instruments"; |
+ break; |
+ case kPageMonitor0: |
+ os << "Monitor 0"; |
+ break; |
+ case kPageMonitor1: |
+ os << "Monitor 1"; |
+ break; |
+ case kPageMonitor2: |
+ os << "Monitor 2"; |
+ break; |
+ case kPageMonitor3: |
+ os << "Monitor 3"; |
+ break; |
+ case kPagePower0: |
+ os << "Power 0"; |
+ break; |
+ case kPagePower1: |
+ os << "Power 1"; |
+ break; |
+ case kPagePower2: |
+ os << "Power 2"; |
+ break; |
+ case kPagePower3: |
+ os << "Power 3"; |
+ break; |
+ case kPageBarCodeScanner: |
+ os << "Bar Code Scanner"; |
+ break; |
+ case kPageScale: |
+ os << "Scale"; |
+ break; |
+ case kPageMagneticStripeReader: |
+ os << "Magnetic Stripe Reader"; |
+ break; |
+ case kPageReservedPointOfSale: |
+ os << "Reserved Point Of Sale"; |
+ break; |
+ case kPageCameraControl: |
+ os << "Camera Control"; |
+ break; |
+ case kPageArcade: |
+ os << "Arcade"; |
+ break; |
+ case kPageVendor: |
+ os << "Vendor"; |
+ break; |
+ case kPageMediaCenter: |
+ os << "Media Center"; |
+ break; |
+ default: |
+ NOTREACHED(); |
+ break; |
+ } |
+ return os; |
+ } |
+}; |
+ |
+} // namespace device |
+ |
+#endif // DEVICE_HID_HID_USAGE_AND_PAGE_H_ |