366 lines
6.1 KiB
Python
Executable File
366 lines
6.1 KiB
Python
Executable File
# -*- coding: utf-8 -*-
|
|
|
|
########################################
|
|
# HXbot utility module #
|
|
# EoF 2016 EoF@itphx.ru #
|
|
########################################
|
|
|
|
# I2C bus
|
|
I2C_BUS_NUMBER = 2
|
|
EXT_COM = 0xAA
|
|
XOR_SEQ = 0xFF
|
|
|
|
# VAR
|
|
REFLEX_ADDRESS = 0x04
|
|
REFLEX_RESPONSE_DELAY = 0.1 # Delay to get response after send command, sec
|
|
REFLEX_ERROR_LIMIT = 5
|
|
REFLEX_MOVE_TIMEOUT = 60
|
|
|
|
# COMMANDS
|
|
# Util
|
|
COM_PING = 0x01
|
|
COM_GET_TEMP = 0x02
|
|
COM_GET_DISTANCE = 0x03
|
|
|
|
# Stop
|
|
STOP = 0x0F
|
|
# Move
|
|
MOVE_FLAG = 0x04
|
|
MOVE_FLOAT = 0x10
|
|
MOVE_FWD1 = 0x11
|
|
MOVE_FWD2 = 0x12
|
|
MOVE_FWD3 = 0x13
|
|
MOVE_FWD4 = 0x14
|
|
MOVE_FWD5 = 0x15
|
|
MOVE_FWD6 = 0x16
|
|
MOVE_FWD7 = 0x17
|
|
MOVE_BREAK = 0x18
|
|
MOVE_REV7 = 0x19
|
|
MOVE_REV6 = 0x1A
|
|
MOVE_REV5 = 0x1B
|
|
MOVE_REV4 = 0x1C
|
|
MOVE_REV3 = 0x1D
|
|
MOVE_REV2 = 0x1E
|
|
MOVE_REV1 = 0x1F
|
|
|
|
# Steering
|
|
STEER_FLAG = 0x05
|
|
STEER_CENTER = 0x20
|
|
STEER_LEFT1 = 0x21
|
|
STEER_LEFT2 = 0x22
|
|
STEER_LEFT3 = 0x23
|
|
STEER_LEFT4 = 0x24
|
|
STEER_LEFT5 = 0x25
|
|
STEER_LEFT6 = 0x26
|
|
STEER_LEFT7 = 0x27
|
|
STEER_FIX_CENTER = 0x28
|
|
STEER_RIGHT7 = 0x29
|
|
STEER_RIGHT6 = 0x2A
|
|
STEER_RIGHT5 = 0x2B
|
|
STEER_RIGHT4 = 0x2C
|
|
STEER_RIGHT3 = 0x2D
|
|
STEER_RIGHT2 = 0x2E
|
|
STEER_RIGHT1 = 0x2F
|
|
|
|
# Head
|
|
HEAD_H_FLAG = 0x30
|
|
HEAD_V_FLAG = 0x31
|
|
HEAD_H_R_RANGE = 83
|
|
HEAD_H_L_RANGE = 94
|
|
HEAD_V_UP_RANGE = 90
|
|
HEAD_V_DOWN_RANGE = 25
|
|
HEAD_H_CENTER = 83
|
|
HEAD_V_CENTER = 150
|
|
|
|
# CONTROL SOURCE
|
|
CONTROL_SRC_NONE = 0x00
|
|
CONTROL_SRC_JOYSTICK = 0x01
|
|
CONTROL_SRC_IRREMOTE = 0x02
|
|
CONTROL_SRC_SERVER = 0x03
|
|
CONTROL_SRC_DB = 0x04
|
|
CONTROL_SRC_SUB1 = 0x11
|
|
CONTROL_SRC_SUB2 = 0x12
|
|
CONTROL_SRC_SUB3 = 0x13
|
|
CONTROL_SRC_SUB4 = 0x14
|
|
CONTROL_SRC_SUB5 = 0x15
|
|
|
|
CONTROL_SRC_DEFAULT = CONTROL_SRC_JOYSTICK
|
|
|
|
# MOVE STATES
|
|
MOVE_STATE_STOP = 0x00
|
|
MOVE_STATE_MOVE = 0x01
|
|
|
|
# STATUS
|
|
STATUS_INIT = 0x00
|
|
STATUS_READY = 0x01
|
|
STATUS_RUNNING = 0x02
|
|
STATUS_STOP = 0x03
|
|
STATUS_EXIT = 0x04
|
|
|
|
# STATUS STATES
|
|
#STATUS_STATE_OK = 0x00
|
|
#STATUS_STATE_WARNING = 0x01
|
|
#STATUS_STATE_ERROR = 0x02
|
|
#STATUS_STATE_LOWBAT1 = 0x03
|
|
#STATUS_STATE_LOWBAT2 = 0x04
|
|
|
|
# JOYSTICK
|
|
JOYSTICK_PATH = '/dev/input/js0'
|
|
JOYSTICK_READY_TIMEOUT = 60
|
|
|
|
# These constants were borrowed from linux/input.h
|
|
JOYSTICK_AXIS_NAMES = {
|
|
0x00: 'x',
|
|
0x01: 'y',
|
|
0x02: 'z',
|
|
0x03: 'rx',
|
|
0x04: 'ry',
|
|
0x05: 'rz',
|
|
0x06: 'trottle',
|
|
0x07: 'rudder',
|
|
0x08: 'wheel',
|
|
0x09: 'gas',
|
|
0x0a: 'brake',
|
|
0x10: 'hat0x',
|
|
0x11: 'hat0y',
|
|
0x12: 'hat1x',
|
|
0x13: 'hat1y',
|
|
0x14: 'hat2x',
|
|
0x15: 'hat2y',
|
|
0x16: 'hat3x',
|
|
0x17: 'hat3y',
|
|
0x18: 'pressure',
|
|
0x19: 'distance',
|
|
0x1a: 'tilt_x',
|
|
0x1b: 'tilt_y',
|
|
0x1c: 'tool_width',
|
|
0x20: 'volume',
|
|
0x28: 'misc',
|
|
}
|
|
|
|
JOYSTICK_BUTTON_NAMES = {
|
|
0x120: 'trigger',
|
|
0x121: 'thumb',
|
|
0x122: 'thumb2',
|
|
0x123: 'top',
|
|
0x124: 'top2',
|
|
0x125: 'pinkie',
|
|
0x126: 'base',
|
|
0x127: 'base2',
|
|
0x128: 'base3',
|
|
0x129: 'base4',
|
|
0x12a: 'base5',
|
|
0x12b: 'base6',
|
|
0x12f: 'dead',
|
|
0x130: 'a',
|
|
0x131: 'b',
|
|
0x132: 'c',
|
|
0x133: 'x',
|
|
0x134: 'y',
|
|
0x135: 'z',
|
|
0x136: 'tl',
|
|
0x137: 'tr',
|
|
0x138: 'tl2',
|
|
0x139: 'tr2',
|
|
0x13a: 'select',
|
|
0x13b: 'start',
|
|
0x13c: 'mode',
|
|
0x13d: 'thumbl',
|
|
0x13e: 'thumbr',
|
|
|
|
0x220: 'dpad_up',
|
|
0x221: 'dpad_down',
|
|
0x222: 'dpad_left',
|
|
0x223: 'dpad_right',
|
|
|
|
# XBox 360 controller uses these codes.
|
|
0x2c0: 'dpad_left',
|
|
0x2c1: 'dpad_right',
|
|
0x2c2: 'dpad_up',
|
|
0x2c3: 'dpad_down',
|
|
}
|
|
|
|
# JOYSTICK BINDS
|
|
JOYSTICK_MOVE_AXIS = 'y'
|
|
JOYSTICK_STEER_AXIS = 'x'
|
|
JOYSTICK_HEAD_V_AXIS = 'rz'
|
|
JOYSTICK_HEAD_H_AXIS = 'z'
|
|
JOYSTICK_START_BTN_1 = 'tl2'
|
|
JOYSTICK_START_BTN_2 = 'tr2'
|
|
|
|
# HXpower
|
|
POWER_ADDRESS = 0x05
|
|
POWER_RESPONSE_DELAY = 0.05 # Delay to get response after send command, sec
|
|
POWER_DELAY = 0.3
|
|
POWER_ERROR_LIMIT = 3
|
|
POWER_MV_TIMEOUT = 60
|
|
|
|
# Commands
|
|
# VOLTMETERS
|
|
COM_GET_VIN = 0x01
|
|
COM_GET_VDC = 0x02
|
|
COM_GET_VBT = 0x03
|
|
COM_GET_VBA = 0x04
|
|
COM_GET_VPF = 0x05
|
|
COM_GET_VZU = 0x06
|
|
COM_GET_VCC = 0x07
|
|
|
|
# AMPERMETERS
|
|
COM_GET_ABT = 0x21
|
|
COM_GET_ABA = 0x22
|
|
COM_GET_AIN = 0x23
|
|
COM_GET_AHX = 0x24
|
|
|
|
# STATUS
|
|
COM_GET_STAT1 = 0x08
|
|
# 0x01 - vcc_ok
|
|
# 0x02 - vin_ok
|
|
# 0x04 - vdc_ok
|
|
# 0x08 - vbt_ok
|
|
# 0x10 - vba_ok
|
|
# 0x20 - bt_enabled
|
|
# 0x40 - ba_enabled
|
|
# 0x80 - in_plugged
|
|
|
|
COM_GET_STAT2 = 0x09
|
|
# 0x01 - bt_blocked
|
|
# 0x02 - ba_blocked
|
|
# 0x04 - bt_full
|
|
# 0x08 - ba_full
|
|
# 0x10 - vpf_ok
|
|
# 0x20 - vzu_ok
|
|
# 0x40 - mv_enabled
|
|
# 0x80 - us_enabled
|
|
|
|
COM_GET_STAT3 = 0x20
|
|
# 0x01 - abt_ok
|
|
# 0x02 - aba_ok
|
|
# 0x04 - ain_ok
|
|
# 0x08 - ahx_ok
|
|
|
|
# TEMP
|
|
COM_GET_POWER_TEMP = 0x10
|
|
|
|
VIN_MIN = 10.0
|
|
VIN_MAX = 14.0
|
|
VIN_LOW = 11.0
|
|
VIN_HIGH = 13.0
|
|
|
|
VDC_MIN = 5.0
|
|
VDC_MAX = 5.7
|
|
VDC_LOW = 5.1
|
|
VDC_HIGH = 5.5
|
|
|
|
VBT_MIN = 3.65
|
|
VBT_MAX = 4.25
|
|
VBT_LOW = 3.68
|
|
VBT_FULL = 4.1
|
|
|
|
VBA_MIN = 9.0
|
|
VBA_MAX = 12.8
|
|
VBA_LOW = 10.0
|
|
VBA_FULL = 12.4
|
|
|
|
VPF_MIN = 7.2
|
|
VPF_MAX = 10.0
|
|
VPF_LOW = 8.0
|
|
VPF_HIGH = 9.6
|
|
|
|
VZU_MIN = 5.0
|
|
VZU_MAX = 6.3
|
|
VZU_LOW = 5.2
|
|
VZU_HIGH = 6.2
|
|
|
|
VCC_MIN = 4.5
|
|
VCC_MAX = 5.3
|
|
VCC_LOW = 4.7
|
|
VCC_HIGH = 5.1
|
|
|
|
ABT_MIN = 0.3
|
|
ABT_MAX = 2.0
|
|
ABT_LOW = 0.4
|
|
ABT_HIGH = 1.2
|
|
|
|
ABA_MIN = 0.05
|
|
ABA_MAX = 2.0
|
|
ABA_LOW = 0.5
|
|
ABA_HIGH = 1.5
|
|
|
|
AIN_MIN = 0.05
|
|
AIN_MAX = 2.0
|
|
AIN_LOW = 0.1
|
|
AIN_HIGH = 1.5
|
|
|
|
AHX_MIN = 0.05
|
|
AHX_MAX = 3.0
|
|
AHX_LOW = 0.1
|
|
AHX_HIGH = 1.5
|
|
|
|
# RELAYS
|
|
COM_ENABLE_BA = 0x11 # 17
|
|
COM_ENABLE_MV = 0x12 # 18
|
|
COM_ENABLE_BT = 0x13 # 19
|
|
COM_ENABLE_US = 0x14 # 20
|
|
|
|
COM_DISABLE_BA = 0x15 # 21
|
|
COM_DISABLE_MV = 0x16 # 22
|
|
COM_DISABLE_BT = 0x17 # 23
|
|
COM_DISABLE_US = 0x18 # 24
|
|
|
|
COM_RUN = 0x1B # 27
|
|
COM_STOP = 0x1C # 28
|
|
COM_RESET_US = 0x1D # 29
|
|
|
|
# HXserver
|
|
SRV_PORT = 50306
|
|
SRV_HOST = ''
|
|
SRV_CMD_GET_ALL = 0x01
|
|
SRV_TIMEOUT = 1
|
|
SRV_MAX_ERR_COUNT = 3
|
|
|
|
# RETURN CODES
|
|
# Universal return codes
|
|
OK_RSP = 0x00
|
|
NO_RSP = 0xFF
|
|
ERR_RSP = 0x01
|
|
BLK_RSP = 0x02
|
|
CSE_RSP = 0x03
|
|
IOE_RSP = 0x04
|
|
TMO_RSP = 0x05
|
|
|
|
# HXbot modul flags
|
|
I2C_BUS_ERR = 0x0001
|
|
HXPOWER_ERR = 0x0002
|
|
REFLEX_ERR = 0x0004
|
|
SERVER_ERR = 0x0008
|
|
|
|
JOYSTICK_WRN = 0x0010
|
|
HXCAMERA_WRN = 0x0020
|
|
HXLCD_WRN = 0x0040
|
|
HXDB_WRN = 0x0080
|
|
HXLIGHT_WRN = 0x0100
|
|
HXSOUND_WRN = 0x0200
|
|
HXLOG_WRN = 0x0400
|
|
|
|
# HXlcd
|
|
LCD_ADDRESS = 0x06
|
|
LCD_ERROR_LIMIT = 5
|
|
LCD_DELAY = 1
|
|
LCD_RESPONSE_DELAY = 0.05
|
|
|
|
# HXcam
|
|
CAM_MAX_WRN_COUNT = 3
|
|
CAM_DELAY = 1.0
|
|
|
|
CAM_STATE_STP = 0
|
|
CAM_STATE_RUN = 1
|
|
CAM_STATE_WRN = 2
|
|
CAM_STATE_ERR = 3
|
|
|
|
# HXdb
|
|
DB_DELAY = 10.0
|
|
|
|
DB_HOST = 'localhost'
|
|
DB_NAME = 'hxdb'
|
|
DB_USER = 'hxdb'
|
|
DB_PASS = 'hxdbP@S$' |