Chromium Code Reviews| 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_ |