Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/pybot/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'pybot/drivers')
-rw-r--r--pybot/drivers/admin.py35
-rw-r--r--pybot/drivers/ax.py83
-rw-r--r--pybot/drivers/butia.py24
-rw-r--r--pybot/drivers/hackp.py55
-rw-r--r--pybot/drivers/hotplug/button.py25
-rw-r--r--pybot/drivers/hotplug/distanc.py21
-rw-r--r--pybot/drivers/hotplug/grey.py21
-rw-r--r--pybot/drivers/hotplug/led.py22
-rw-r--r--pybot/drivers/hotplug/light.py24
-rw-r--r--pybot/drivers/hotplug/modActA.py15
-rw-r--r--pybot/drivers/hotplug/modActB.py15
-rw-r--r--pybot/drivers/hotplug/modActC.py15
-rw-r--r--pybot/drivers/hotplug/modSenA.py14
-rw-r--r--pybot/drivers/hotplug/modSenB.py14
-rw-r--r--pybot/drivers/hotplug/modSenC.py14
-rw-r--r--pybot/drivers/hotplug/res.py24
-rw-r--r--pybot/drivers/hotplug/temp.py19
-rw-r--r--pybot/drivers/hotplug/volt.py26
-rw-r--r--pybot/drivers/lback.py22
-rw-r--r--pybot/drivers/motors.py45
-rw-r--r--pybot/drivers/pnp.py11
-rw-r--r--pybot/drivers/shld_cc.py15
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]
+