mirror of
https://github.com/OpenSolo/OpenSolo.git
synced 2025-04-29 22:24:32 +02:00
94 lines
2.6 KiB
Python
Executable File
94 lines
2.6 KiB
Python
Executable File
#!/usr/bin/env python
|
|
|
|
# common defs for artoo
|
|
|
|
BAUD = 115200
|
|
|
|
# host protocol msg id's
|
|
MSGID_NOP = chr(0x0)
|
|
MSGID_DSM_CHANNELS = chr(0x1)
|
|
MSGID_CALIBRATE = chr(0x2)
|
|
MSGID_SYS_INFO = chr(0x3)
|
|
MSGID_MAVLINK = chr(0x4)
|
|
MSGID_SET_RAW_IO = chr(0x5)
|
|
MSGID_RAW_IO_REPORT = chr(0x6)
|
|
MSGID_PAIR_REQUEST = chr(0x7)
|
|
MSGID_PAIR_CONFIRM = chr(0x8)
|
|
MSGID_PAIR_RESULT = chr(0x9)
|
|
MSGID_SHUTDOWN_REQUEST = chr(0xa)
|
|
MSGID_PARAM_STORED_VALS = chr(0xb)
|
|
MSGID_OUTPUT_TEST = chr(0xc)
|
|
MSGID_BUTTON_EVENT = chr(0xd)
|
|
MSGID_INPUT_REPORT = chr(0xe)
|
|
MSGID_CONFIG_STICK_AXES = chr(0xf)
|
|
MSGID_BUTTON_FUNCTION_CFG = chr(0x10)
|
|
MSGID_SET_SHOT_INFO = chr(0x11)
|
|
MSGID_UPDATER = chr(0x12)
|
|
MSGID_LOCKOUT_STATE = chr(0x13)
|
|
MSGID_SELF_TEST = chr(0x14)
|
|
MSGID_SWEEP_TIME_CFG = chr(0x15)
|
|
MSGID_GPIO_TEST = chr(0x16)
|
|
MSGID_TEST_EVENT = chr(0x17)
|
|
MSGID_SET_TELEM_UNITS = chr(0x18)
|
|
MSGID_INVALID_STICK_INPUTS = chr(0x19)
|
|
MSGID_SOLO_APP_CONNECTION = chr(0x1a)
|
|
|
|
# button IDs
|
|
BtnPower = 0
|
|
BtnFly = 1
|
|
BtnRTL = 2
|
|
BtnLoiter = 3
|
|
BtnA = 4
|
|
BtnB = 5
|
|
BtnPreset1 = 6
|
|
BtnPreset2 = 7
|
|
BtnCameraClick = 8
|
|
|
|
# button names
|
|
BtnName = ["Power", "Fly", "RTL", "Loiter", "A", "B",
|
|
"Preset1", "Preset2", "CameraClick"]
|
|
|
|
# button events
|
|
BtnEvtPress = 0
|
|
BtnEvtRelease = 1
|
|
BtnEvtClickRelease = 2
|
|
BtnEvtHold = 3
|
|
BtnEvtLongHold = 4
|
|
BtnEvtDoubleClick = 5
|
|
|
|
# GPIO test
|
|
GPIO_TEST_LED_BACKLIGHT = 0
|
|
GPIO_TEST_CHG_ENABLE = 1
|
|
|
|
# units
|
|
UNITS_USE_METRIC = 1
|
|
UNITS_USE_IMPERIAL = 0
|
|
|
|
class Artoo:
|
|
|
|
def __init__(self, slip_dev):
|
|
self.slip_dev = slip_dev
|
|
|
|
def read(self):
|
|
return self.slip_dev.read()
|
|
|
|
def set_lockout_state(self, locked):
|
|
lck = chr(1) if locked else chr(0)
|
|
self.slip_dev.write([MSGID_LOCKOUT_STATE, lck])
|
|
|
|
def request_sys_info(self):
|
|
self.slip_dev.write([MSGID_SYS_INFO])
|
|
|
|
def begin_self_test(self):
|
|
self.slip_dev.write([MSGID_SELF_TEST, 0x74, 0x73, 0x65, 0x74, 0x66, 0x6c, 0x65, 0x73])
|
|
|
|
def gpio_test(self, pin, state):
|
|
self.slip_dev.write([MSGID_GPIO_TEST, pin, state])
|
|
|
|
def set_telem_units(self, units):
|
|
self.slip_dev.write([MSGID_SET_TELEM_UNITS, units])
|
|
|
|
def output_test(self, bg_btnmask, fg_btnmask, freq, haptic_secs):
|
|
self.slip_dev.write([MSGID_OUTPUT_TEST, bg_btnmask, fg_btnmask, freq & 0xff, (freq >> 8) & 0xff, haptic_secs])
|
|
|