blob: b20689a54cc4a84fa304d32388d46c488ce79bca [file] [log] [blame] [edit]
# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Define constants for firmware touch device MTB tests."""
import sys
sys.path.append('../../bin/input')
from linux_input import (KEY_D, KEY_M, KEY_X, KEY_Y, KEY_ENTER, KEY_SPACE,
KEY_UP, KEY_DOWN, KEY_LEFT, KEY_RIGHT)
class _ConstantError(AttributeError):
"""A constant error exception."""
pass
class _Constant(object):
"""This is a constant base class to ensure no rebinding of constants."""
def __setattr__(self, name, value):
"""Check the attribute assignment. No rebinding is allowed."""
if name in self.__dict__:
raise _ConstantError, "Cannot rebind the constant: %s" % name
self.__dict__[name] = value
"""Define constants classes in alphabetic order below."""
class _Axis(_Constant):
"""Constants about two axes."""
pass
AXIS = _Axis()
AXIS.X = 'x'
AXIS.Y = 'y'
AXIS.LIST = [AXIS.X, AXIS.Y]
class _DeviceType(_Constant):
"""Constants about device types."""
DEV = _DeviceType()
DEV.TOUCHPAD = 'touchpad'
DEV.TOUCHSCREEN = 'touchscreen'
DEV.DEVICE_TYPE_LIST = list(DEV.__dict__.values())
class _Fuzzy_MF(_Constant):
"""Constants about fuzzy membership functions."""
pass
MF = _Fuzzy_MF()
MF.PI_FUNCTION = 'Pi_Function'
MF.S_FUNCTION = 'S_Function'
MF.SINGLETON_FUNCTION = 'Singleton_Function'
MF.TRAPEZ_FUNCTION = 'Trapez_Function'
MF.TRIANGLE_FUNCTION = 'Triangle_Function'
MF.Z_FUNCTION = 'Z_Function'
class _GestureVariation(_Constant):
"""Constants about gesture variations."""
pass
GV = _GestureVariation()
# constants about directions
GV.HORIZONTAL = 'horizontal'
GV.VERTICAL = 'vertical'
GV.DIAGONAL = 'diagonal'
GV.LR = 'left_to_right'
GV.RL = 'right_to_left'
GV.TB = 'top_to_bottom'
GV.BT = 'bottom_to_top'
GV.CL = 'center_to_left'
GV.CR = 'center_to_right'
GV.CT = 'center_to_top'
GV.CB = 'center_to_bottom'
GV.CUR = 'center_to_upper_right'
GV.CUL = 'center_to_upper_left'
GV.CLR = 'center_to_lower_right'
GV.CLL = 'center_to_lower_left'
GV.BLTR = 'bottom_left_to_top_right'
GV.BRTL = 'bottom_right_to_top_left'
GV.TRBL = 'top_right_to_bottom_left'
GV.TLBR = 'top_left_to_bottom_right'
GV.HORIZONTAL_DIRECTIONS = [GV.HORIZONTAL, GV.LR, GV.RL, GV.CL, GV.CR]
GV.VERTICAL_DIRECTIONS = [GV.VERTICAL, GV.TB, GV.BT, GV.CT, GV.CB]
GV.DIAGONAL_DIRECTIONS = [GV.DIAGONAL, GV.BLTR, GV.BRTL, GV.TRBL, GV.TLBR,
GV.CUR, GV.CUL, GV.CLR, GV.CLL]
GV.GESTURE_DIRECTIONS = (GV.HORIZONTAL_DIRECTIONS + GV.VERTICAL_DIRECTIONS +
GV.DIAGONAL_DIRECTIONS)
# constants about locations
GV.TL = 'top_left'
GV.TR = 'top_right'
GV.BL = 'bottom_left'
GV.BR = 'bottom_right'
GV.TS = 'top_side'
GV.BS = 'bottom_side'
GV.LS = 'left_side'
GV.RS = 'right_side'
GV.CENTER = 'center'
GV.AROUND = 'around'
GV.GESTURE_LOCATIONS = [GV.TL, GV.TR, GV.BL, GV.BR, GV.TS, GV.BS, GV.LS, GV.RS,
GV.CENTER, GV.AROUND]
# constants about pinch to zoom
GV.ZOOM_IN = 'zoom_in'
GV.ZOOM_OUT = 'zoom_out'
# constants about speed
GV.SLOW = 'slow'
GV.NORMAL = 'normal'
GV.FAST = 'fast'
GV.FULL_SPEED = 'full_speed'
GV.GESTURE_SPEED = [GV.SLOW, GV.NORMAL, GV.FAST, GV.FULL_SPEED]
# constants about metal finger sizes
GV.SIZE = 'size'
size_str = lambda i: GV.SIZE + str(i)
GV.SIZE0 = size_str(0)
GV.SIZE1 = size_str(1)
GV.SIZE2 = size_str(2)
GV.SIZE3 = size_str(3)
GV.SIZE4 = size_str(4)
GV.SIZE5 = size_str(5)
GV.SIZE6 = size_str(6)
GV.NUMBER_OF_SIZES = 7
GV.SIZE_LIST = [size_str(i) for i in range(GV.NUMBER_OF_SIZES)]
class _Mode(_Constant):
"""Constants about gesture playing mode."""
pass
MODE = _Mode()
MODE.CALIBRATION = 'calibration'
MODE.COMPLETE = 'complete'
MODE.MANUAL = 'manual'
MODE.REPLAY = 'replay'
MODE.ROBOT = 'robot'
MODE.ROBOT_SIM = 'robot_sim'
# GESTURE_PLAY_MODE is a list of all attributes above
MODE.GESTURE_PLAY_MODE = list(MODE.__dict__.values())
class _MTB(_Constant):
"""Constants about MTB event format and MTB related constants."""
pass
MTB = _MTB()
MTB.EV_TIME = 'EV_TIME'
MTB.EV_TYPE = 'EV_TYPE'
MTB.EV_CODE = 'EV_CODE'
MTB.EV_VALUE = 'EV_VALUE'
MTB.SYN_REPORT = 'SYN_REPORT'
MTB.SLOT = 'slot'
MTB.POINTS = 'points'
class _Options(_Constant):
"""Constants about command line options."""
pass
OPTIONS = _Options()
OPTIONS.DEBUG = 'debug'
OPTIONS.DEVICE = 'system_device'
OPTIONS.DIR = 'directory'
OPTIONS.HELP = 'help'
OPTIONS.INDIVIDUAL = 'individual'
OPTIONS.ITERATIONS = 'iterations'
OPTIONS.METRICS = 'show_metrics'
OPTIONS.MODE = 'mode'
OPTIONS.REPLAY = 'replay'
OPTIONS.RESUME = 'resume'
OPTIONS.SCORES = 'scores'
OPTIONS.SIMPLIFIED = 'simplified'
OPTIONS.SKIP_HTML = 'skip_html'
OPTIONS.TOUCHSCREEN = 'touchscreen'
OPTIONS.UPLOAD = 'upload'
class _Platform(_Constant):
"""Constants about chromebook platforms."""
pass
PLATFORM = _Platform()
PLATFORM.ALEX = 'alex'
PLATFORM.LUMPY = 'lumpy'
PLATFORM.LINK = 'link'
PLATFORM.LIST = [PLATFORM.ALEX, PLATFORM.LUMPY, PLATFORM.LINK]
class _RobotControl(_Constant):
"""Constants about robot control."""
pass
RC = _RobotControl()
RC.PAUSE_TYPE = 'pause_type'
RC.PROMPT = 'finger_control_prompt'
# Finger interaction per gesture
# e.g., the TWO_FINGER_TRACKING gesture requires installing an extra finger
# once for all variations in the same gesture.
RC.PER_GESTURE = 'per_gesture'
# Finger interaction per variation
# e.g., the FINGER_CROSSING gesture requires putting down and lifting up
# a metal finger repeatedly per variation.
RC.PER_VARIATION = 'per_variation'
class _TFK(_Constant):
"""The Test Flow Keypress (TFK) codes for test flow"""
pass
TFK = _TFK()
TFK.DISCARD = KEY_D
TFK.EXIT = KEY_X
TFK.MORE = KEY_M
TFK.SAVE = KEY_SPACE
TFK.SAVE2 = KEY_ENTER
TFK.YES = KEY_Y
TFK.UP = KEY_UP
TFK.DOWN = KEY_DOWN
TFK.LEFT = KEY_LEFT
TFK.RIGHT = KEY_RIGHT
TFK.ARROW_KEY_LIST = [TFK.UP, TFK.DOWN, TFK.LEFT, TFK.RIGHT]
class _UNIT(_Constant):
"""Constants about units."""
pass
UNIT = _UNIT()
UNIT.PIXEL = 'px'
UNIT.MM = 'mm'
class _Validator(_Constant):
"""Constants about validator."""
pass
VAL = _Validator()
VAL.BEGIN = 'Begin'
VAL.MIDDLE = 'Middle'
VAL.END = 'End'
VAL.BOTH_ENDS = 'BothEnds'
VAL.WHOLE = 'Whole'
# SEGMENT_LIST is a list of all attributes above
VAL.SEGMENT_LIST = list(VAL.__dict__.values())