Source code for forcedimension_core.util

from typing import Dict
from typing import cast as _cast

from forcedimension_core import dhd
from forcedimension_core.constants import (
    ComMode, DeviceType, Handedness, VelocityEstimatorMode
)
from forcedimension_core.typing import ComModeStr


_error = [
    None,
    dhd.DHDError,
    dhd.DHDErrorCom,
    dhd.DHDErrorDHCBusy,
    dhd.DHDErrorNoDriverFound,
    dhd.DHDErrorNoDeviceFound,
    dhd.DHDErrorFeatureNotAvailable,
    dhd.DHDErrorTimeout,
    dhd.DHDErrorGeometry,
    dhd.DHDErrorExpertModeDisabled,
    dhd.DHDErrorNotImplemented,
    dhd.DHDErrorMemory,
    dhd.DHDErrorDeviceNotReady,
    dhd.DHDErrorFileNotFound,
    dhd.DHDErrorConfiguration,
    dhd.DHDErrorInvalidIndex,
    dhd.DHDErrorDeprecated,
    dhd.DHDErrorNullArgument,
    dhd.DHDErrorRedundantFail,
    dhd.DHDErrorFeatureNotEnabled,
    dhd.DHDErrorDeviceInUse,
    dhd.DHDErrorArgument,
    dhd.DHDErrorNoRegulation
]

_com_mode_strs = {
    ComMode.SYNC: 'sync',
    ComMode.ASYNC: 'async',
    ComMode.VIRTUAL: 'virtual',
    ComMode.NETWORK: 'network'
}

_com_modes: Dict[ComModeStr, ComMode] = {
    'sync': ComMode.SYNC,
    'async': ComMode.ASYNC,
    'virtual': ComMode.VIRTUAL,
    'network': ComMode.NETWORK,
}

_devtype_strs = {
    DeviceType.NONE: 'none',
    DeviceType.DELTA3: 'delta.3',
    DeviceType.OMEGA3: 'omega.3',
    DeviceType.OMEGA6_RIGHT: 'omega.6 right',
    DeviceType.OMEGA6_LEFT: 'omega.6 left',
    DeviceType.OMEGA7_RIGHT: 'omega.7 right',
    DeviceType.OMEGA7_LEFT: 'omega.7 left',
    DeviceType.CONTROLLER: 'controller',
    DeviceType.CONTROLLER_HR: 'controller hr',
    DeviceType.CUSTOM: 'custom',
    DeviceType.SIGMA3: 'sigma.3',
    DeviceType.SIGMA7_RIGHT: 'sigma.7 right',
    DeviceType.SIGMA7_LEFT: 'sigma.7 left',
    DeviceType.LAMBDA3: 'lambda.3',
    DeviceType.LAMBDA7_RIGHT: 'lambda.7 right',
    DeviceType.LAMBDA7_LEFT: 'lambda.7 left',
    DeviceType.FALCON: 'novint falcon',
}

_devtype_strs_pretty = {
    DeviceType.NONE: 'None',
    DeviceType.DELTA3: 'DELTA.3',
    DeviceType.OMEGA3: 'OMEGA.3',
    DeviceType.OMEGA6_RIGHT: 'OMEGA.6 Right',
    DeviceType.OMEGA6_LEFT: 'OMEGA.6 Left',
    DeviceType.OMEGA7_RIGHT: 'OMEGA.7 Right',
    DeviceType.OMEGA7_LEFT: 'OMEGA.7 Left',
    DeviceType.CONTROLLER: 'CONTROLLER',
    DeviceType.CONTROLLER_HR: 'CONTROLLER HR',
    DeviceType.CUSTOM: 'Custom',
    DeviceType.SIGMA3: 'SIGMA.3',
    DeviceType.SIGMA7_RIGHT: 'SIGMA.7 Right',
    DeviceType.SIGMA7_LEFT: 'SIGMA.7 Left',
    DeviceType.LAMBDA3: 'LAMBDA.3',
    DeviceType.LAMBDA7_RIGHT: 'LAMBDA.7 Right',
    DeviceType.LAMBDA7_LEFT: 'LAMBDA.7 Left',
    DeviceType.FALCON: 'Novint Falcon',
}

_handedness = {
    DeviceType.OMEGA6_RIGHT: Handedness.RIGHT,
    DeviceType.OMEGA6_LEFT: Handedness.LEFT,
    DeviceType.OMEGA7_RIGHT: Handedness.RIGHT,
    DeviceType.OMEGA7_LEFT: Handedness.LEFT,
    DeviceType.SIGMA7_RIGHT: Handedness.RIGHT,
    DeviceType.SIGMA7_LEFT: Handedness.LEFT,
    DeviceType.LAMBDA7_RIGHT: Handedness.RIGHT,
    DeviceType.LAMBDA7_LEFT: Handedness.LEFT,
}

_handedness_str = ['none', 'left', 'right']
_handedness_str_pretty = ['None', 'Left', 'Right']

_estimator_mode_str = {
    VelocityEstimatorMode.WINDOWING: "windowing"
}

_estimator_mode_str_pretty = {
    VelocityEstimatorMode.WINDOWING: "Windowing"
}

_dof = {
    DeviceType.DELTA3: 3,
    DeviceType.OMEGA3: 3,
    DeviceType.OMEGA6_RIGHT: 6,
    DeviceType.OMEGA6_LEFT: 6,
    DeviceType.OMEGA7_RIGHT: 7,
    DeviceType.OMEGA7_LEFT: 7,
    DeviceType.SIGMA3: 3,
    DeviceType.SIGMA7_RIGHT: 7,
    DeviceType.SIGMA7_LEFT: 7,
    DeviceType.LAMBDA3: 3,
    DeviceType.LAMBDA7_RIGHT: 7,
    DeviceType.LAMBDA7_LEFT: 7,
    DeviceType.FALCON: 3,
}


[docs]def com_mode_str(com_mode: ComMode) -> ComModeStr: return _cast(ComModeStr, _com_mode_strs[com_mode])
[docs]def com_mode_from_str(com_mode_str: ComModeStr) -> ComMode: return _com_modes[com_mode_str]
[docs]def num_dof(devtype: DeviceType) -> int: if devtype not in _dof: return 0 return _dof[devtype]
[docs]def devtype_str(devtype: DeviceType, pretty: bool = False) -> str: if pretty: return _devtype_strs_pretty[devtype] return _devtype_strs[devtype]
[docs]def handedness(devtype: DeviceType) -> Handedness: if devtype in _handedness: return _handedness[devtype] return Handedness.NONE
[docs]def handedness_str(handedness: Handedness, pretty: bool = False) -> str: if pretty: return _handedness_str_pretty[handedness] return _handedness_str[handedness]
[docs]def velocity_estimator_mode_str( mode: VelocityEstimatorMode, pretty: bool = False ): if pretty: return _estimator_mode_str_pretty[mode] return _estimator_mode_str[mode]
[docs]def errno_to_exception(errno: int): """ Convert a DHD error number to an exception. """ return _error[errno]