diff options
Diffstat (limited to 'pybot/drivers')
-rw-r--r-- | pybot/drivers/admin.py | 35 | ||||
-rw-r--r-- | pybot/drivers/ax.py | 83 | ||||
-rw-r--r-- | pybot/drivers/butia.py | 24 | ||||
-rw-r--r-- | pybot/drivers/hackp.py | 55 | ||||
-rw-r--r-- | pybot/drivers/hotplug/button.py | 25 | ||||
-rw-r--r-- | pybot/drivers/hotplug/distanc.py | 21 | ||||
-rw-r--r-- | pybot/drivers/hotplug/grey.py | 21 | ||||
-rw-r--r-- | pybot/drivers/hotplug/led.py | 22 | ||||
-rw-r--r-- | pybot/drivers/hotplug/light.py | 24 | ||||
-rw-r--r-- | pybot/drivers/hotplug/modActA.py | 15 | ||||
-rw-r--r-- | pybot/drivers/hotplug/modActB.py | 15 | ||||
-rw-r--r-- | pybot/drivers/hotplug/modActC.py | 15 | ||||
-rw-r--r-- | pybot/drivers/hotplug/modSenA.py | 14 | ||||
-rw-r--r-- | pybot/drivers/hotplug/modSenB.py | 14 | ||||
-rw-r--r-- | pybot/drivers/hotplug/modSenC.py | 14 | ||||
-rw-r--r-- | pybot/drivers/hotplug/res.py | 24 | ||||
-rw-r--r-- | pybot/drivers/hotplug/temp.py | 19 | ||||
-rw-r--r-- | pybot/drivers/hotplug/volt.py | 26 | ||||
-rw-r--r-- | pybot/drivers/lback.py | 22 | ||||
-rw-r--r-- | pybot/drivers/motors.py | 45 | ||||
-rw-r--r-- | pybot/drivers/pnp.py | 11 | ||||
-rw-r--r-- | pybot/drivers/shld_cc.py | 15 |
22 files changed, 372 insertions, 187 deletions
diff --git a/pybot/drivers/admin.py b/pybot/drivers/admin.py index 5e4e192..01ba4c0 100644 --- a/pybot/drivers/admin.py +++ b/pybot/drivers/admin.py @@ -1,19 +1,26 @@ -RESET = 0xFF +MESSAGE = 0x02 +LOAD = 0x03 +UNLOAD = 0x04 +GET_USER_MODULES_SIZE = 0x05 +GET_USER_MODULES_LINE = 0x06 +BOOT = 0x09 +GET_HANDLER_SIZE = 0x0A +GET_HANDLER_TYPE = 0x0B GET_FIRMWARE_VERSION = 0xFE +RESET = 0xFF + +def getVersion(dev): + dev.send([GET_FIRMWARE_VERSION]) + raw = dev.read(2) + return raw[1] -f1 = { - 'name': 'reset', - 'call': RESET, - 'params': 0, - 'read': 0 -} +def send(dev, data): + msg = [MESSAGE] + dev.to_ord(data[0]) + dev.send(msg) + raw = dev.read(len(msg)) + return dev.to_text(raw[1:]) -f2 = { - 'name': 'getVersion', - 'call': GET_FIRMWARE_VERSION, - 'params': 0, - 'read': 1 -} +def reset(dev): + dev.send([RESET]) -FUNCTIONS = [f1, f2] diff --git a/pybot/drivers/ax.py b/pybot/drivers/ax.py new file mode 100644 index 0000000..eb1762b --- /dev/null +++ b/pybot/drivers/ax.py @@ -0,0 +1,83 @@ + +RD_VERSION = 0x00 +WRITE_INFO = 0x01 +READ_INFO = 0x02 +SEND_RAW = 0x03 + +def getVersion(dev): + dev.send([RD_VERSION]) + raw = dev.read(3) + return raw[1] + raw[2] * 256 + +def writeInfo(dev, motor_id, regstart, value): + msg = [WRITE_INFO, motor_id, regstart, value / 256, value % 256] + dev.send(msg) + raw = dev.read(2) + return raw[1] + +def readInfo(dev, motor_id, regstart, lenght): + msg = [READ_INFO, motor_id, regstart, lenght] + dev.send(msg) + raw = dev.read(3) + if lenght == 1: + return raw[1] + else: + return raw[1] + raw[2] * 256 + +def sendPacket(dev, pack): + wait_resp = len(pack) + 2 + msg = [SEND_RAW, wait_resp] + pack + dev.send(msg) + raw = dev.read(255) + if len(raw) == 1: + return -1 # only opcode o nil + timeout = raw[2] + print 'timeout', timeout + if timeout == 1: + return -1 + size = raw[1] + print "AX12 answer\n:::SIZE = " + str(size) + "\n:::TIMEOUT = " + str(timeout) + msg = '' + for i in range(3,size+3): + msg = msg + str(raw[i]) + ' ' + print ":::MESSAGE\n " + msg + return msg + +def wheelMode(dev, motor_id): + msg = [WRITE_INFO, motor_id, 0x06, 0x00, 0x00] + dev.send(msg) + raw = dev.read(2) + msg = [WRITE_INFO, motor_id, 0x08, 0x00, 0x00] + dev.send(msg) + raw = dev.read(2) + return raw[1] + +def jointMode(dev, motor_id, _min, _max): + msg = [WRITE_INFO, motor_id, 0x06, _min / 256, _min % 256] + dev.send(msg) + raw = dev.read(2) + msg = [WRITE_INFO, motor_id, 0x08, _max / 256, _max % 256] + dev.send(msg) + raw = dev.read(2) + return raw[1] + +def setPosition(dev, motor_id, pos): + msg = [WRITE_INFO, motor_id, 0x1E, pos / 256, pos % 256] + dev.send(msg) + raw = dev.read(2) + return raw[1] + +def getPosition(dev, motor_id): + msg = [READ_INFO, motor_id, 0x24, 2] + dev.send(msg) + raw = dev.read(3) + raw_angle = raw[1] * 256 + raw[2] + return raw_angle * 0.29 + +def setSpeed(dev, motor_id, speed): + #vel = speed * 1.496 + msg = [WRITE_INFO, motor_id, 0x20, speed / 256, speed % 256] + dev.send(msg) + raw = dev.read(2) + return raw[1] + diff --git a/pybot/drivers/butia.py b/pybot/drivers/butia.py index 74f6f0f..20864fd 100644 --- a/pybot/drivers/butia.py +++ b/pybot/drivers/butia.py @@ -2,18 +2,16 @@ RD_VERSION = 0x02 GET_VOLT = 0x03 -f1 = { - 'name': 'read_ver', - 'call': RD_VERSION, - 'params': 0, - 'read': 2 -} +def getVersion(dev): + dev.send([RD_VERSION]) + raw = dev.read(2) + return raw[1] -f2 = { - 'name': 'get_volt', - 'call': GET_VOLT, - 'params': 0, - 'read': 2 -} +def getVolt(dev): + dev.send([GET_VOLT]) + raw = dev.read(2) + if raw[1] == 255: + return raw[1] + else: + return raw[1] / 10.0 -FUNCTIONS = [f1, f2] diff --git a/pybot/drivers/hackp.py b/pybot/drivers/hackp.py index 4e9c963..d8aa5c7 100644 --- a/pybot/drivers/hackp.py +++ b/pybot/drivers/hackp.py @@ -7,34 +7,29 @@ WRITE_PORT = 0x04 PORT_IN = 0x05 PORT_OUT = 0x06 - -f1 = { - 'name': 'getVersion', - 'call': RD_VERSION, - 'params': 0, - 'read': 3 -} - -f2 = { - 'name': 'setMode', - 'call': SET_MODE, - 'params': 2, - 'read': 1 -} - -f3 = { - 'name': 'read', - 'call': READ, - 'params': 1, - 'read': 1 -} - -f4 = { - 'name': 'write', - 'call': WRITE, - 'params': 2, - 'read': 1 -} - -FUNCTIONS = [f1, f2, f3, f4] +def getVersion(dev): + dev.send([RD_VERSION]) + raw = dev.read(3) + return raw[1] + raw[2] * 256 + +def setMode(dev, pin, mode): + pin = pin - 1 + msg = [SET_MODE, pin, mode] + dev.send(msg) + raw = dev.read(1) + return raw[0] + +def read(dev, pin): + pin = pin - 1 + msg = [READ, pin] + dev.send(msg) + raw = dev.read(2) + return raw[1] + +def write(dev, pin, value): + pin = pin - 1 + msg = [WRITE, pin, value] + dev.send(msg) + raw = dev.read(1) + return raw[0] diff --git a/pybot/drivers/hotplug/button.py b/pybot/drivers/hotplug/button.py index f714ecf..4bf99ee 100644 --- a/pybot/drivers/hotplug/button.py +++ b/pybot/drivers/hotplug/button.py @@ -1,19 +1,18 @@ RD_VERSION = 0x00 GET_VALUE = 0x01 +ERROR = -1 -f1 = { - 'name': 'getVersion', - 'call': RD_VERSION, - 'params': 0, - 'read': 3 -} +def getVersion(dev): + dev.send([RD_VERSION]) + raw = dev.read(3) + return raw[1] + raw[2] * 256 -f2 = { - 'name': 'getValue', - 'call': GET_VALUE, - 'params': 0, - 'read': 2 -} +def getValue(dev): + dev.send([GET_VALUE]) + raw = dev.read(2) + if not(raw[1] == 255): + return (1 - raw[1]) + else: + return ERROR -FUNCTIONS = [f1, f2] diff --git a/pybot/drivers/hotplug/distanc.py b/pybot/drivers/hotplug/distanc.py index db7e1c1..6148171 100644 --- a/pybot/drivers/hotplug/distanc.py +++ b/pybot/drivers/hotplug/distanc.py @@ -2,18 +2,13 @@ RD_VERSION = 0x00 GET_VALUE = 0x01 -f1 = { - 'name': 'getVersion', - 'call': RD_VERSION, - 'params': 0, - 'read': 3 -} +def getVersion(dev): + dev.send([RD_VERSION]) + raw = dev.read(3) + return raw[1] + raw[2] * 256 -f2 = { - 'name': 'getValue', - 'call': GET_VALUE, - 'params': 0, - 'read': 3 -} +def getValue(dev): + dev.send([GET_VALUE]) + raw = dev.read(3) + return raw[1] + raw[2] * 256 -FUNCTIONS = [f1, f2] diff --git a/pybot/drivers/hotplug/grey.py b/pybot/drivers/hotplug/grey.py index db7e1c1..6148171 100644 --- a/pybot/drivers/hotplug/grey.py +++ b/pybot/drivers/hotplug/grey.py @@ -2,18 +2,13 @@ RD_VERSION = 0x00 GET_VALUE = 0x01 -f1 = { - 'name': 'getVersion', - 'call': RD_VERSION, - 'params': 0, - 'read': 3 -} +def getVersion(dev): + dev.send([RD_VERSION]) + raw = dev.read(3) + return raw[1] + raw[2] * 256 -f2 = { - 'name': 'getValue', - 'call': GET_VALUE, - 'params': 0, - 'read': 3 -} +def getValue(dev): + dev.send([GET_VALUE]) + raw = dev.read(3) + return raw[1] + raw[2] * 256 -FUNCTIONS = [f1, f2] diff --git a/pybot/drivers/hotplug/led.py b/pybot/drivers/hotplug/led.py index 0703d54..fde6b3e 100644 --- a/pybot/drivers/hotplug/led.py +++ b/pybot/drivers/hotplug/led.py @@ -2,18 +2,14 @@ RD_VERSION = 0x00 TURN = 0x01 -f1 = { - 'name': 'getVersion', - 'call': RD_VERSION, - 'params': 0, - 'read': 3 -} +def getVersion(dev): + dev.send([RD_VERSION]) + raw = dev.read(3) + return raw[1] + raw[2] * 256 -f2 = { - 'name': 'turn', - 'call': TURN, - 'params': 1, - 'read': 1 -} +def turn(dev, on): + msg = [TURN, on] + dev.send(msg) + raw = dev.read(1) + return raw[0] -FUNCTIONS = [f1, f2] diff --git a/pybot/drivers/hotplug/light.py b/pybot/drivers/hotplug/light.py index db7e1c1..dbcb71a 100644 --- a/pybot/drivers/hotplug/light.py +++ b/pybot/drivers/hotplug/light.py @@ -2,18 +2,16 @@ RD_VERSION = 0x00 GET_VALUE = 0x01 -f1 = { - 'name': 'getVersion', - 'call': RD_VERSION, - 'params': 0, - 'read': 3 -} +VCC = 65536 -f2 = { - 'name': 'getValue', - 'call': GET_VALUE, - 'params': 0, - 'read': 3 -} +def getVersion(dev): + dev.send([RD_VERSION]) + raw = dev.read(3) + return raw[1] + raw[2] * 256 + +def getValue(dev): + dev.send([GET_VALUE]) + raw = dev.read(3) + val = raw[1] + raw[2] * 256 + return (VCC - val) -FUNCTIONS = [f1, f2] diff --git a/pybot/drivers/hotplug/modActA.py b/pybot/drivers/hotplug/modActA.py new file mode 100644 index 0000000..fde6b3e --- /dev/null +++ b/pybot/drivers/hotplug/modActA.py @@ -0,0 +1,15 @@ + +RD_VERSION = 0x00 +TURN = 0x01 + +def getVersion(dev): + dev.send([RD_VERSION]) + raw = dev.read(3) + return raw[1] + raw[2] * 256 + +def turn(dev, on): + msg = [TURN, on] + dev.send(msg) + raw = dev.read(1) + return raw[0] + diff --git a/pybot/drivers/hotplug/modActB.py b/pybot/drivers/hotplug/modActB.py new file mode 100644 index 0000000..fde6b3e --- /dev/null +++ b/pybot/drivers/hotplug/modActB.py @@ -0,0 +1,15 @@ + +RD_VERSION = 0x00 +TURN = 0x01 + +def getVersion(dev): + dev.send([RD_VERSION]) + raw = dev.read(3) + return raw[1] + raw[2] * 256 + +def turn(dev, on): + msg = [TURN, on] + dev.send(msg) + raw = dev.read(1) + return raw[0] + diff --git a/pybot/drivers/hotplug/modActC.py b/pybot/drivers/hotplug/modActC.py new file mode 100644 index 0000000..fde6b3e --- /dev/null +++ b/pybot/drivers/hotplug/modActC.py @@ -0,0 +1,15 @@ + +RD_VERSION = 0x00 +TURN = 0x01 + +def getVersion(dev): + dev.send([RD_VERSION]) + raw = dev.read(3) + return raw[1] + raw[2] * 256 + +def turn(dev, on): + msg = [TURN, on] + dev.send(msg) + raw = dev.read(1) + return raw[0] + diff --git a/pybot/drivers/hotplug/modSenA.py b/pybot/drivers/hotplug/modSenA.py new file mode 100644 index 0000000..6148171 --- /dev/null +++ b/pybot/drivers/hotplug/modSenA.py @@ -0,0 +1,14 @@ + +RD_VERSION = 0x00 +GET_VALUE = 0x01 + +def getVersion(dev): + dev.send([RD_VERSION]) + raw = dev.read(3) + return raw[1] + raw[2] * 256 + +def getValue(dev): + dev.send([GET_VALUE]) + raw = dev.read(3) + return raw[1] + raw[2] * 256 + diff --git a/pybot/drivers/hotplug/modSenB.py b/pybot/drivers/hotplug/modSenB.py new file mode 100644 index 0000000..6148171 --- /dev/null +++ b/pybot/drivers/hotplug/modSenB.py @@ -0,0 +1,14 @@ + +RD_VERSION = 0x00 +GET_VALUE = 0x01 + +def getVersion(dev): + dev.send([RD_VERSION]) + raw = dev.read(3) + return raw[1] + raw[2] * 256 + +def getValue(dev): + dev.send([GET_VALUE]) + raw = dev.read(3) + return raw[1] + raw[2] * 256 + diff --git a/pybot/drivers/hotplug/modSenC.py b/pybot/drivers/hotplug/modSenC.py new file mode 100644 index 0000000..6148171 --- /dev/null +++ b/pybot/drivers/hotplug/modSenC.py @@ -0,0 +1,14 @@ + +RD_VERSION = 0x00 +GET_VALUE = 0x01 + +def getVersion(dev): + dev.send([RD_VERSION]) + raw = dev.read(3) + return raw[1] + raw[2] * 256 + +def getValue(dev): + dev.send([GET_VALUE]) + raw = dev.read(3) + return raw[1] + raw[2] * 256 + diff --git a/pybot/drivers/hotplug/res.py b/pybot/drivers/hotplug/res.py index db7e1c1..0dc43a9 100644 --- a/pybot/drivers/hotplug/res.py +++ b/pybot/drivers/hotplug/res.py @@ -2,18 +2,16 @@ RD_VERSION = 0x00 GET_VALUE = 0x01 -f1 = { - 'name': 'getVersion', - 'call': RD_VERSION, - 'params': 0, - 'read': 3 -} +VCC = 65536 -f2 = { - 'name': 'getValue', - 'call': GET_VALUE, - 'params': 0, - 'read': 3 -} +def getVersion(dev): + dev.send([RD_VERSION]) + raw = dev.read(3) + return raw[1] + raw[2] * 256 + +def getValue(dev): + dev.send([GET_VALUE]) + raw = dev.read(3) + val = raw[1] + raw[2] * 256 + return val * 6800.0 / (VCC - val) -FUNCTIONS = [f1, f2] diff --git a/pybot/drivers/hotplug/temp.py b/pybot/drivers/hotplug/temp.py new file mode 100644 index 0000000..7fa55a1 --- /dev/null +++ b/pybot/drivers/hotplug/temp.py @@ -0,0 +1,19 @@ + +import math + +RD_VERSION = 0x00 +GET_VALUE = 0x01 + +VCC = 65536 + +def getVersion(dev): + dev.send([RD_VERSION]) + raw = dev.read(3) + return raw[1] + raw[2] * 256 + +def getValue(dev): + dev.send([GET_VALUE]) + raw = dev.read(3) + volt = (raw[1] + raw[2] * 256) * 5.0 / VCC + return math.floor(volt * 1000.0) / 10 + diff --git a/pybot/drivers/hotplug/volt.py b/pybot/drivers/hotplug/volt.py index db7e1c1..10866a6 100644 --- a/pybot/drivers/hotplug/volt.py +++ b/pybot/drivers/hotplug/volt.py @@ -1,19 +1,19 @@ +import math + RD_VERSION = 0x00 GET_VALUE = 0x01 -f1 = { - 'name': 'getVersion', - 'call': RD_VERSION, - 'params': 0, - 'read': 3 -} +VCC = 65536 + +def getVersion(dev): + dev.send([RD_VERSION]) + raw = dev.read(3) + return raw[1] + raw[2] * 256 -f2 = { - 'name': 'getValue', - 'call': GET_VALUE, - 'params': 0, - 'read': 3 -} +def getValue(dev): + dev.send([GET_VALUE]) + raw = dev.read(3) + volt = (raw[1] + raw[2] * 256) * 5.0 / VCC + return math.floor(volt * 1000.0) / 1000 -FUNCTIONS = [f1, f2] diff --git a/pybot/drivers/lback.py b/pybot/drivers/lback.py index 859eedb..0d036f8 100644 --- a/pybot/drivers/lback.py +++ b/pybot/drivers/lback.py @@ -2,18 +2,14 @@ RD_VERSION = 0x00 SEND_DATA = 0x01 -f1 = { - 'name': 'getVersion', - 'call': RD_VERSION, - 'params': 0, - 'read': 3 -} +def getVersion(dev): + dev.send([RD_VERSION]) + raw = dev.read(3) + return raw[1] + raw[2] * 256 -f2 = { - 'name': 'send', - 'call': SEND_DATA, - 'params': 1, - 'read': 1 -} +def send(dev, data): + msg = [SEND_DATA] + dev.to_ord(data[0]) + dev.send(msg) + raw = dev.read(len(msg)) + return dev.to_text(raw[1:]) -FUNCTIONS = [f1, f2] diff --git a/pybot/drivers/motors.py b/pybot/drivers/motors.py index 02421d9..e62192a 100644 --- a/pybot/drivers/motors.py +++ b/pybot/drivers/motors.py @@ -2,26 +2,33 @@ RD_VERSION = 0x00 SET_VEL_2MTR = 0x01 SET_VEL_MTR = 0x02 +TEST_MOTORS = 0x03 +GET_TYPE = 0x04 -f1 = { - 'name': 'getVersion', - 'call': RD_VERSION, - 'params': 0, - 'read': 3 -} +def getVersion(dev): + dev.send([RD_VERSION]) + raw = dev.read(3) + return raw[1] + raw[2] * 256 -f2 = { - 'name': 'setvel2mtr', - 'call': SET_VEL_2MTR, - 'params': 6, - 'read': 1 -} +def setvel2mtr(dev, sentido1, vel1, sentido2, vel2): + msg = [SET_VEL_2MTR, sentido1, vel1 / 256, vel1 % 256, sentido2, vel2 / 256, vel2 % 256] + dev.send(msg) + raw = dev.read(1) + return raw[0] -f3 = { - 'name': 'setvelmtr', - 'call': SET_VEL_MTR, - 'params': 4, - 'read': 1 -} +def setvelmtr(dev, motor_id, sentido, vel): + msg = [SET_VEL_MTR, motor_id, sentido, vel / 256, vel % 256] + dev.send(msg) + raw = dev.read(1) + return raw[0] + +def testMotors(dev): + dev.send([TEST_MOTORS]) + raw = dev.read(1) + return raw[0] + +def getType(dev): + dev.send([GET_TYPE]) + raw = dev.read(2) + return raw[1] -FUNCTIONS = [f1, f2, f3] diff --git a/pybot/drivers/pnp.py b/pybot/drivers/pnp.py index 3457126..24d6dcd 100644 --- a/pybot/drivers/pnp.py +++ b/pybot/drivers/pnp.py @@ -1,11 +1,8 @@ RD_VERSION = 0x00 -f1 = { - 'name': 'getVersion', - 'call': RD_VERSION, - 'params': 0, - 'read': 3 -} +def getVersion(dev): + dev.send([RD_VERSION]) + raw = dev.read(3) + return raw[1] + raw[2] * 256 -FUNCTIONS = [f1] diff --git a/pybot/drivers/shld_cc.py b/pybot/drivers/shld_cc.py new file mode 100644 index 0000000..35b94ae --- /dev/null +++ b/pybot/drivers/shld_cc.py @@ -0,0 +1,15 @@ + +RD_VERSION = 0x00 +SET_VEL_2MTR = 0x01 + +def getVersion(dev): + dev.send([RD_VERSION]) + raw = dev.read(3) + return raw[1] + raw[2] * 256 + +def setvel2mtr(dev, sentido1, vel1, sentido2, vel2): + msg = [SET_VEL_2MTR, sentido1, vel1 / 256, vel1 % 256, sentido2, vel2 / 256, vel2 % 256] + dev.send(msg) + raw = dev.read(1) + return raw[0] + |