// Copyright 2017 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#pragma once

#include <stdint.h>

namespace hid {
namespace usage {

enum class Page : uint16_t {
    kUndefined                  = 0x00,
    kGenericDesktop             = 0x01,
    kSimulationCtrls            = 0x02,
    kVRCtrls                    = 0x03,
    kSportsCtrls                = 0x04,
    kGameCtrls                  = 0x05,
    kGenericDeviceCtrls         = 0x06,
    kKeyboardKeypad             = 0x07,
    kLEDs                       = 0x08,
    kButton                     = 0x09,
    kOrdinal                    = 0x0a,
    kTelephony                  = 0x0b,
    kConsumer                   = 0x0c,
    kDigitizer                  = 0x0d,

    kPhysicalInterface          = 0x0f,
    kUnicode                    = 0x10,

    kAlphanumericDisplay        = 0x14,

    kSensor                     = 0x20,

    kMedicalInstrument          = 0x40,

    kMonitor                    = 0x80,
    kMonitorEnumerated          = 0x81,
    kVESACtrls                  = 0x82,
    kVESACommand                = 0x83,
    kPowerDevice                = 0x84,
    kBatterySystem              = 0x85,

    kBarcodeScanner             = 0x8c,
    kScale                      = 0x8d,
    kMagneticStripeReader       = 0x8e,
    kPointOfSaleDevice          = 0x8f,
    kCameraControl              = 0x90,
    kArcadeControl              = 0x91,

    kVendorDefinedStart         = 0xff00,
    kVendorDefinedEnd           = 0xffff
};

enum class GenericDesktop : uint32_t {
    kUndefined                  = 0x00,
    kPointer                    = 0x01,
    kMouse                      = 0x02,

    kJoystick                   = 0x04,
    kGamePad                    = 0x05,
    kKeyboard                   = 0x06,
    kKeypad                     = 0x07,
    kMultiAxisController        = 0x08,

    kX                          = 0x30,
    kY                          = 0x31,
    kZ                          = 0x32,
    kRx                         = 0x33,
    kRy                         = 0x34,
    kRz                         = 0x35,
    kSlider                     = 0x36,
    kDial                       = 0x37,
    kWheel                      = 0x38,
    kHatSwitch                  = 0x39,
    kCountedBuffer              = 0x3a,
    kByteCount                  = 0x3b,
    kMotionWakeup               = 0x3c,

    kVx                         = 0x40,
    kVy                         = 0x41,
    kVz                         = 0x42,
    kVbrx                       = 0x43,
    kVbry                       = 0x44,
    kVbrz                       = 0x45,
    kVno                        = 0x46,

    kSystemControl              = 0x80,
    kSystemPowerDown            = 0x81,
    kSystemSleep                = 0x82,
    kSystemWakeUp               = 0x83,
    kSystemContextMenu          = 0x84,
    kSystemMainMenu             = 0x85,
    kSystemAppMenu              = 0x86,
    kSystemMenuHelp             = 0x87,
    kSystemMenuExit             = 0x88,
    kSystemMenuSelect           = 0x89,
    kSystemMenuRight            = 0x8a,
    kSystemMenuLeft             = 0x8b,
    kSystemMenuUp               = 0x8c,
    kSystemMenuDown             = 0x8d,

    kDpadUp                     = 0x90,
    kDpadDown                   = 0x9a,
    kDpadRight                  = 0x9b,
    kDpadLeft                   = 0x9c
};

enum class LEDs : uint32_t {
    kUndefined                  = 0x00,
    kNumLock                    = 0x01,
    kCapsLock                   = 0x02,
    kScrollLock                 = 0x03,
    kCompose                    = 0x04,
    kKana                       = 0x05,
    kPower                      = 0x06,
    kShift                      = 0x07,
    kDoNotDisturb               = 0x08,
    kMute                       = 0x09,
    kToneEnable                 = 0x0a,
    kHighCutFilter              = 0x0b,
    kLowCutFilter               = 0x0c,
    kEqualizerEnable            = 0x0d,
    kSoundFieldOn               = 0x0e,
    kSurroundFieldOn            = 0x0f,
    kRepeat                     = 0x10,
    kStereo                     = 0x11,
    kSamplingRateDetect         = 0x12,
    kSpinning                   = 0x13,
    kCAV                        = 0x14,
    kCLV                        = 0x15,
    kRecordingFormatDetect      = 0x16,
    kOffHook                    = 0x17,
    kRing                       = 0x18,
    kMessageWaiting             = 0x19,
    kDataMode                   = 0x1a,
    kBatteryOperation           = 0x1b,
    kBatteryOK                  = 0x1c,
    kBatteryLow                 = 0x1d,
    kSpeaker                    = 0x1e,
    kHeadSet                    = 0x1f,
    kHold                       = 0x20,
    kMicrophone                 = 0x21,
    kCoverage                   = 0x22,
    kNightMode                  = 0x23,
    kSendCalls                  = 0x24,
    kCallPickup                 = 0x25,
    kConference                 = 0x26,
    kStandby                    = 0x27,
    kCameraOn                   = 0x28,
    kCameraOff                  = 0x29,
    kOnLine                     = 0x2a,
    kOffLine                    = 0x2b,
    kBusy                       = 0x2c,
    kReady                      = 0x2d,
    kPaperOut                   = 0x2e,
    kPaperJam                   = 0x2f,
    kRemote                     = 0x30,
    kForward                    = 0x31,
    kReverse                    = 0x32,
    kStop                       = 0x33,
    kRewind                     = 0x34,
    kFastForward                = 0x35,
    kPlay                       = 0x36,
    kPause                      = 0x37,
    kRecord                     = 0x38,
    kError                      = 0x39,
    kUsageSelectedIndicator     = 0x3a,
    kUsageInUseIndicator        = 0x3b,
    kUsageMultiModeIndicator    = 0x3c,
    kIndicatorOn                = 0x3d,
    kIndicatorFlash             = 0x3e,
    kIndicatorSlowBlink         = 0x3f,
    kIndicatorFastBlink         = 0x40,
    kIndicatorOff               = 0x41,
    kFlashOnTime                = 0x42,
    kSlowBlinkOnTime            = 0x43,
    kSlowBlinkOffTime           = 0x44,
    kFastBlinkOnTime            = 0x45,
    kFastBlinkOffTime           = 0x46,
    kUsageIndicatorColor        = 0x47,
    kRed                        = 0x48,
    kGreen                      = 0x49,
    kAmber                      = 0x4a,
    kGenericIndicator           = 0x4b,
    kSystemSuspend              = 0x4c,
    kExternalPowerConnected     = 0x4d
};

enum class Consumer : uint32_t {
    kUnassigned                 = 0x00,
    kConsumerControl            = 0x01,
    kNumericKeyPad              = 0x02,
    kProgrammableButtons        = 0x03,

    kPlus10                     = 0x20,
    kPlus100                    = 0x21,
    kAM_PM                      = 0x22,

    kPower                      = 0x30,
    kReset                      = 0x31,
    kSleep                      = 0x32,
    kSleepAfter                 = 0x33,
    kSleepMode                  = 0x34,
    kIllumination               = 0x35,
    kFunctionButtons            = 0x36,

    kMenu                       = 0x40,
    kMenuPick                   = 0x41,
    kMenuUp                     = 0x42,
    kMenuDown                   = 0x43,
    kMenuLeft                   = 0x44,
    kMenuRight                  = 0x45,
    kMenuEscape                 = 0x46,
    kMenuValueIncrease          = 0x47,
    kMenuValueDecrease          = 0x48,

    kDataOnScreen               = 0x60,
    kClosedCaption              = 0x61,
    kClosedCaptionSelect        = 0x62,
    kVCR_TV                     = 0x63,
    kBroadcastMode              = 0x64,
    kSnapshot                   = 0x65,
    kStill                      = 0x66,

    kSelection                  = 0x80,
    kAssignSelection            = 0x81,
    kModeStep                   = 0x82,
    kRecallLast                 = 0x83,
    kEnterChannel               = 0x84,
    kOrderMovie                 = 0x85,
    kChannel                    = 0x86,
    kMediaSelection             = 0x87,
    kMediaSelectComputer        = 0x88,
    kMediaSelectTV              = 0x89,
    kMediaSelectWWW             = 0x8a,
    kMediaSelectDVD             = 0x8b,
    kMediaSelectTelephone       = 0x8c,
    kMediaSelectProgramGuide    = 0x8d,
    kMediaSelectVideoPhone      = 0x8e,
    kMediaSelectGames           = 0x8f,
    kMediaSelectMessages        = 0x90,
    kMediaSelectCD              = 0x91,
    kMediaSelectVCR             = 0x92,
    kMediaSelectTuner           = 0x93,
    kQuit                       = 0x94,
    kHelp                       = 0x95,
    kMediaSelectTape            = 0x96,
    kMediaSelectCable           = 0x97,
    kMediaSelectSatellite       = 0x98,
    kMediaSelectSecurity        = 0x99,
    kMediaSelectHome            = 0x9a,
    kMediaSelectCall            = 0x9b,
    kChannelIncrement           = 0x9c,
    kChannelDecrement           = 0x9d,
    kMediaSelectSAP             = 0x9e,

    kVCRPlus                    = 0xa0,
    kOnce                       = 0xa1,
    kDaily                      = 0xa2,
    kWeekly                     = 0xa3,
    kMonthly                    = 0xa4,

    kPlay                       = 0xb0,
    kPause                      = 0xb1,
    kRecord                     = 0xb2,
    kFastForward                = 0xb3,
    kRewind                     = 0xb4,
    kScanNextTrack              = 0xb5,
    kScanPreviousTrack          = 0xb6,
    kStop                       = 0xb7,
    kEject                      = 0xb8,
    kRandomPlay                 = 0xb9,
    kSelectDisC                 = 0xba,
    kEnterDisc                  = 0xbb,
    kRepeat                     = 0xbc,
    kTracking                   = 0xbd,
    kTrackNormal                = 0xbe,
    kSlowTracking               = 0xbf,
    kFrameForward               = 0xc0,
    kFrameBack                  = 0xc1,
    kMark                       = 0xc2,
    kClearMark                  = 0xc3,
    kRepeatFromMark             = 0xc4,
    kReturnToMark               = 0xc5,
    kSearchMarkForward          = 0xc6,
    kSearchMarkBackwards        = 0xc7,
    kCounterReset               = 0xc8,
    kShowCounter                = 0xc9,
    kTrackingIncrement          = 0xca,
    kTrackingDecrement          = 0xcb,

    kVolume                     = 0xe0,
    kBalance                    = 0xe1,
    kMute                       = 0xe2,
    kBass                       = 0xe3,
    kTreble                     = 0xe4,
    kBassBoost                  = 0xe5,
    kSurroundMode               = 0xe6,
    kLoudness                   = 0xe7,
    kMPX                        = 0xe8,
    kVolumeUp                   = 0xe9,
    kVolumeDown                 = 0xea,

    kSpeedSelect                = 0xf0,
    kPlaybackSpeed              = 0xf1,
    kStandardPlay               = 0xf2,
    kLongPlay                   = 0xf3,
    kExtendedPlay               = 0xf4,
    kSlow                       = 0xf5,

    kBalanceRight               = 0x150,
    kBalanceLeft                = 0x151,
    kBassIncrement              = 0x152,
    kBassDecrement              = 0x153,
    kTrebleIncrement            = 0x154,
    kTrebleDecrement            = 0x155,

    kSpeakerSystem              = 0x160,
    kChannelLeft                = 0x161,
    kChannelRight               = 0x162,
    kChannelCenter              = 0x163,
    kChannelFront               = 0x164,
    kChannelCenterFront         = 0x165,
    kChannelSide                = 0x166,
    kChannelSurround            = 0x167,
    kChannelLowFreqEnhance      = 0x168,
    kChannelTop                 = 0x169,
    kChannelUnknown             = 0x16a,

    kAppLaunchButtons           = 0x180,

    kGenericGUIAppControls      = 0x200
};

// These are the values that Digitizer::kTouchscreenInputMode can
// take and their respective meanings.
enum class TouchScreenInputMode : uint32_t {
    kMouse                          = 0x00,
    kSingleInput                    = 0x01,
    kMultipleInput                  = 0x02,
};

enum class Digitizer : uint32_t {
    kUndefined                      = 0x00,

    kDigitizer                      = 0x01,
    kPen                            = 0x02,
    kLightPen                       = 0x03,
    kTouchScreen                    = 0x04,
    kTouchPad                       = 0x05,
    kWhiteBoard                     = 0x06,
    kCoordinateMeasuringMachine     = 0x07,
    k3DDigitizer                    = 0x08,
    kStereoPlotter                  = 0x09,
    kArticulatedArm                 = 0x0a,
    kArmature                       = 0x0b,
    kMultiplePointDigitizer         = 0x0c,
    kFreeSpaceWand                  = 0x0d,
    kTouchScreenConfiguration       = 0x0E,

    kStylus                         = 0x20,
    kFinger                         = 0x22,
    kTouchScreenDeviceSettings      = 0x23,

    kTipPressure                    = 0x30,
    kBarrelPressure                 = 0x31,
    kInRange                        = 0x32,
    kTouch                          = 0x33,
    kUntouch                        = 0x34,
    kTap                            = 0x35,
    kQuality                        = 0x36,
    kDataValid                      = 0x37,
    kTransducerIndex                = 0x38,
    kTabletFunctionKeys             = 0x39,
    kProgramChangeKeys              = 0x3a,
    kBatteryStrength                = 0x3b,
    kInvert                         = 0x3c,
    kXTilt                          = 0x3d,
    kYTilt                          = 0x3e,
    kAzimuth                        = 0x3f,
    kAltitude                       = 0x40,
    kTwist                          = 0x41,
    kTipSwitch                      = 0x42,
    kSecondaryTipSwitch             = 0x43,
    kBarrelSwitch                   = 0x44,
    kEraser                         = 0x45,
    kTabletPick                     = 0x46,
    kConfidence                     = 0x47,
    kWidth                          = 0x48,
    kHeight                         = 0x49,

    kContactID                      = 0x51,
    kTouchScreenInputMode           = 0x52,
    kContactCount                   = 0x54,
    kScanTime                       = 0x56,
};

enum class Sensor : uint32_t {
    kUndefined                      = 0x00,

    kAmbientLight                   = 0x41,
    kAccelerometer3D                = 0x73,
    kGyrometer3D                    = 0x76,
    kMagnetometer                   = 0xC2,

    kAccelerationAxisX              = 0x453,
    kAccelerationAxisY              = 0x454,
    kAccelerationAxisZ              = 0x455,
    kDistanceAxisX                  = 0x47A,
    kDistanceAxisY                  = 0x47B,
    kDistanceAxisZ                  = 0x47C,
    kTiltAxisX                      = 0x47F,
    kTiltAxisY                      = 0x480,
    kTiltAxisZ                      = 0x481,
    kMagneticFluxAxisX              = 0x485,
    kMagneticFluxAxisY              = 0x486,
    kMagneticFluxAxisZ              = 0x487,
    kLightIlluminance               = 0x4D1,
    kLightColorTemperature          = 0x4D2,
    kLightChromaticity              = 0x4D3,
    kLightChromaticityX             = 0x4D4,
    kLightChromaticityY             = 0x4D5,
    kLightConsumerIrSentenceReceive = 0x4D6,
    kLightInfraredLight             = 0x4D7,
    kLightRedLight                  = 0x4D8,
    kLightGreenLight                = 0x4D9,
    kLightBlueLight                 = 0x4DA,
    kLightUltravioletALight         = 0x4DB,
    kLightUltravioletBLight         = 0x4DC,
    kLightUltravioletIndex          = 0x4DD,
};

enum class Telephony : uint32_t {
    kUndefined                      = 0x00,

    kPhoneMute                      = 0x2F,
};

}   // namespace usage
}   // namespace hid

inline bool operator==(uint16_t e, hid::usage::Page up) {
    return (static_cast<uint16_t>(up) == e);
}

inline bool operator==(uint32_t e, hid::usage::GenericDesktop gd) {
    return (static_cast<uint32_t>(gd) == e);
}

inline bool operator==(uint32_t e, hid::usage::Digitizer d) {
    return (static_cast<uint32_t>(d) == e);
}

inline bool operator==(uint32_t e, hid::usage::LEDs gd) {
    return (static_cast<uint32_t>(gd) == e);
}

inline bool operator==(uint32_t e, hid::usage::Consumer gd) {
    return (static_cast<uint32_t>(gd) == e);
}

inline bool operator==(uint32_t e, hid::usage::Sensor s) {
    return (static_cast<uint32_t>(s) == e);
}
