Skip to content

Commit 9c41ac1

Browse files
committed
Merge pull request #9 from ddemidov/master
Add LargeMotor and MediumMotor implementation
2 parents 49db5a4 + c8b90d3 commit 9c41ac1

File tree

2 files changed

+163
-62
lines changed

2 files changed

+163
-62
lines changed

ev3dev/ev3dev.py

Lines changed: 136 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -166,8 +166,10 @@ class Motor(Device):
166166
SYSTEM_CLASS_NAME = 'tacho-motor'
167167
SYSTEM_DEVICE_NAME_CONVENTION = 'motor*'
168168

169-
def __init__(self, port='', name='*', **kwargs ):
170-
Device.__init__( self, self.SYSTEM_CLASS_NAME, name, port_name=port, **kwargs )
169+
def __init__(self, port=None, name=SYSTEM_DEVICE_NAME_CONVENTION, **kwargs ):
170+
if port is not None:
171+
kwargs['port_name'] = port
172+
Device.__init__( self, self.SYSTEM_CLASS_NAME, name, **kwargs )
171173

172174
#~autogen
173175
#~autogen python_generic-get-set classes.motor>currentClass
@@ -594,6 +596,42 @@ def reset( self, **kwargs ):
594596
self.command = 'reset'
595597

596598

599+
#~autogen
600+
#~autogen python_generic-class classes.largeMotor>currentClass
601+
602+
603+
class LargeMotor(Motor):
604+
605+
"""
606+
EV3 large servo motor
607+
"""
608+
609+
SYSTEM_CLASS_NAME = Motor.SYSTEM_CLASS_NAME
610+
SYSTEM_DEVICE_NAME_CONVENTION = Motor.SYSTEM_DEVICE_NAME_CONVENTION
611+
612+
def __init__(self, port=None, name=SYSTEM_DEVICE_NAME_CONVENTION, **kwargs ):
613+
if port is not None:
614+
kwargs['port_name'] = port
615+
Device.__init__( self, self.SYSTEM_CLASS_NAME, name, driver_name=['lego-ev3-l-motor', ], **kwargs )
616+
617+
#~autogen
618+
#~autogen python_generic-class classes.mediumMotor>currentClass
619+
620+
621+
class MediumMotor(Motor):
622+
623+
"""
624+
EV3 medium servo motor
625+
"""
626+
627+
SYSTEM_CLASS_NAME = Motor.SYSTEM_CLASS_NAME
628+
SYSTEM_DEVICE_NAME_CONVENTION = Motor.SYSTEM_DEVICE_NAME_CONVENTION
629+
630+
def __init__(self, port=None, name=SYSTEM_DEVICE_NAME_CONVENTION, **kwargs ):
631+
if port is not None:
632+
kwargs['port_name'] = port
633+
Device.__init__( self, self.SYSTEM_CLASS_NAME, name, driver_name=['lego-ev3-m-motor', ], **kwargs )
634+
597635
#~autogen
598636
#~autogen python_generic-class classes.dcMotor>currentClass
599637

@@ -609,8 +647,10 @@ class DcMotor(Device):
609647
SYSTEM_CLASS_NAME = 'dc-motor'
610648
SYSTEM_DEVICE_NAME_CONVENTION = 'motor*'
611649

612-
def __init__(self, port='', name='*', **kwargs ):
613-
Device.__init__( self, self.SYSTEM_CLASS_NAME, name, port_name=port, **kwargs )
650+
def __init__(self, port=None, name=SYSTEM_DEVICE_NAME_CONVENTION, **kwargs ):
651+
if port is not None:
652+
kwargs['port_name'] = port
653+
Device.__init__( self, self.SYSTEM_CLASS_NAME, name, **kwargs )
614654

615655
#~autogen
616656
#~autogen python_generic-get-set classes.dcMotor>currentClass
@@ -811,7 +851,6 @@ def stop( self, **kwargs ):
811851

812852

813853
#~autogen
814-
815854
#~autogen python_generic-class classes.servoMotor>currentClass
816855

817856

@@ -825,8 +864,10 @@ class ServoMotor(Device):
825864
SYSTEM_CLASS_NAME = 'servo-motor'
826865
SYSTEM_DEVICE_NAME_CONVENTION = 'motor*'
827866

828-
def __init__(self, port='', name='*', **kwargs ):
829-
Device.__init__( self, self.SYSTEM_CLASS_NAME, name, port_name=port, **kwargs )
867+
def __init__(self, port=None, name=SYSTEM_DEVICE_NAME_CONVENTION, **kwargs ):
868+
if port is not None:
869+
kwargs['port_name'] = port
870+
Device.__init__( self, self.SYSTEM_CLASS_NAME, name, **kwargs )
830871

831872
#~autogen
832873
#~autogen python_generic-get-set classes.servoMotor>currentClass
@@ -1018,8 +1059,10 @@ class Sensor(Device):
10181059
SYSTEM_CLASS_NAME = 'lego-sensor'
10191060
SYSTEM_DEVICE_NAME_CONVENTION = 'sensor*'
10201061

1021-
def __init__(self, port='', name='*', **kwargs ):
1022-
Device.__init__( self, self.SYSTEM_CLASS_NAME, name, port_name=port, **kwargs )
1062+
def __init__(self, port=None, name=SYSTEM_DEVICE_NAME_CONVENTION, **kwargs ):
1063+
if port is not None:
1064+
kwargs['port_name'] = port
1065+
Device.__init__( self, self.SYSTEM_CLASS_NAME, name, **kwargs )
10231066

10241067
#~autogen
10251068
#~autogen python_generic-get-set classes.sensor>currentClass
@@ -1106,31 +1149,33 @@ def units(self):
11061149

11071150
#~autogen
11081151

1109-
def value(self, n):
1152+
def value(self, n=0):
11101153
if True == isinstance( n, numbers.Integral ):
11111154
n = '{0:d}'.format( n )
11121155
elif True == isinstance( n, numbers.Real ):
11131156
n = '{0:.0f}'.format( n )
11141157

11151158
if True == isinstance( n, str ):
1116-
return self._device._get_int_attribute( 'value'+n, 'value'+n )
1159+
return self.get_attr_int( 'value'+n )
11171160
else:
11181161
return 0
11191162

11201163
#~autogen python_generic-class classes.i2cSensor>currentClass
11211164

11221165

1123-
class I2cSensor(Device):
1166+
class I2cSensor(Sensor):
11241167

11251168
"""
11261169
A generic interface to control I2C-type EV3 sensors.
11271170
"""
11281171

1129-
SYSTEM_CLASS_NAME = 'lego-sensor'
1130-
SYSTEM_DEVICE_NAME_CONVENTION = 'sensor*'
1172+
SYSTEM_CLASS_NAME = Sensor.SYSTEM_CLASS_NAME
1173+
SYSTEM_DEVICE_NAME_CONVENTION = Sensor.SYSTEM_DEVICE_NAME_CONVENTION
11311174

1132-
def __init__(self, port='', name='*', **kwargs ):
1133-
Device.__init__( self, self.SYSTEM_CLASS_NAME, name, port_name=port, **kwargs )
1175+
def __init__(self, port=None, name=SYSTEM_DEVICE_NAME_CONVENTION, **kwargs ):
1176+
if port is not None:
1177+
kwargs['port_name'] = port
1178+
Device.__init__( self, self.SYSTEM_CLASS_NAME, name, driver_name=['nxt-i2c-sensor', ], **kwargs )
11341179

11351180
#~autogen
11361181
#~autogen python_generic-get-set classes.i2cSensor>currentClass
@@ -1163,17 +1208,19 @@ def poll_ms(self, value):
11631208
#~autogen python_generic-class classes.colorSensor>currentClass
11641209

11651210

1166-
class ColorSensor(Device):
1211+
class ColorSensor(Sensor):
11671212

11681213
"""
11691214
LEGO EV3 color sensor.
11701215
"""
11711216

1172-
SYSTEM_CLASS_NAME = 'lego-sensor'
1173-
SYSTEM_DEVICE_NAME_CONVENTION = 'sensor*'
1217+
SYSTEM_CLASS_NAME = Sensor.SYSTEM_CLASS_NAME
1218+
SYSTEM_DEVICE_NAME_CONVENTION = Sensor.SYSTEM_DEVICE_NAME_CONVENTION
11741219

1175-
def __init__(self, port='', name='*', **kwargs ):
1176-
Device.__init__( self, self.SYSTEM_CLASS_NAME, name, port_name=port, **kwargs )
1220+
def __init__(self, port=None, name=SYSTEM_DEVICE_NAME_CONVENTION, **kwargs ):
1221+
if port is not None:
1222+
kwargs['port_name'] = port
1223+
Device.__init__( self, self.SYSTEM_CLASS_NAME, name, driver_name=['lego-ev3-color', ], **kwargs )
11771224

11781225
#~autogen
11791226
#~autogen python_generic-property-value classes.colorSensor>currentClass
@@ -1191,17 +1238,19 @@ def __init__(self, port='', name='*', **kwargs ):
11911238
#~autogen python_generic-class classes.ultrasonicSensor>currentClass
11921239

11931240

1194-
class UltrasonicSensor(Device):
1241+
class UltrasonicSensor(Sensor):
11951242

11961243
"""
11971244
LEGO EV3 ultrasonic sensor.
11981245
"""
11991246

1200-
SYSTEM_CLASS_NAME = 'lego-sensor'
1201-
SYSTEM_DEVICE_NAME_CONVENTION = 'sensor*'
1247+
SYSTEM_CLASS_NAME = Sensor.SYSTEM_CLASS_NAME
1248+
SYSTEM_DEVICE_NAME_CONVENTION = Sensor.SYSTEM_DEVICE_NAME_CONVENTION
12021249

1203-
def __init__(self, port='', name='*', **kwargs ):
1204-
Device.__init__( self, self.SYSTEM_CLASS_NAME, name, port_name=port, **kwargs )
1250+
def __init__(self, port=None, name=SYSTEM_DEVICE_NAME_CONVENTION, **kwargs ):
1251+
if port is not None:
1252+
kwargs['port_name'] = port
1253+
Device.__init__( self, self.SYSTEM_CLASS_NAME, name, driver_name=['lego-ev3-us', 'lego-nxt-us', ], **kwargs )
12051254

12061255
#~autogen
12071256
#~autogen python_generic-property-value classes.ultrasonicSensor>currentClass
@@ -1219,17 +1268,19 @@ def __init__(self, port='', name='*', **kwargs ):
12191268
#~autogen python_generic-class classes.gyroSensor>currentClass
12201269

12211270

1222-
class GyroSensor(Device):
1271+
class GyroSensor(Sensor):
12231272

12241273
"""
12251274
LEGO EV3 gyro sensor.
12261275
"""
12271276

1228-
SYSTEM_CLASS_NAME = 'lego-sensor'
1229-
SYSTEM_DEVICE_NAME_CONVENTION = 'sensor*'
1277+
SYSTEM_CLASS_NAME = Sensor.SYSTEM_CLASS_NAME
1278+
SYSTEM_DEVICE_NAME_CONVENTION = Sensor.SYSTEM_DEVICE_NAME_CONVENTION
12301279

1231-
def __init__(self, port='', name='*', **kwargs ):
1232-
Device.__init__( self, self.SYSTEM_CLASS_NAME, name, port_name=port, **kwargs )
1280+
def __init__(self, port=None, name=SYSTEM_DEVICE_NAME_CONVENTION, **kwargs ):
1281+
if port is not None:
1282+
kwargs['port_name'] = port
1283+
Device.__init__( self, self.SYSTEM_CLASS_NAME, name, driver_name=['lego-ev3-gyro', ], **kwargs )
12331284

12341285
#~autogen
12351286
#~autogen python_generic-property-value classes.gyroSensor>currentClass
@@ -1247,17 +1298,19 @@ def __init__(self, port='', name='*', **kwargs ):
12471298
#~autogen python_generic-class classes.infraredSensor>currentClass
12481299

12491300

1250-
class InfraredSensor(Device):
1301+
class InfraredSensor(Sensor):
12511302

12521303
"""
12531304
LEGO EV3 infrared sensor.
12541305
"""
12551306

1256-
SYSTEM_CLASS_NAME = 'lego-sensor'
1257-
SYSTEM_DEVICE_NAME_CONVENTION = 'sensor*'
1307+
SYSTEM_CLASS_NAME = Sensor.SYSTEM_CLASS_NAME
1308+
SYSTEM_DEVICE_NAME_CONVENTION = Sensor.SYSTEM_DEVICE_NAME_CONVENTION
12581309

1259-
def __init__(self, port='', name='*', **kwargs ):
1260-
Device.__init__( self, self.SYSTEM_CLASS_NAME, name, port_name=port, **kwargs )
1310+
def __init__(self, port=None, name=SYSTEM_DEVICE_NAME_CONVENTION, **kwargs ):
1311+
if port is not None:
1312+
kwargs['port_name'] = port
1313+
Device.__init__( self, self.SYSTEM_CLASS_NAME, name, driver_name=['lego-ev3-ir', ], **kwargs )
12611314

12621315
#~autogen
12631316
#~autogen python_generic-property-value classes.infraredSensor>currentClass
@@ -1277,17 +1330,19 @@ def __init__(self, port='', name='*', **kwargs ):
12771330
#~autogen python_generic-class classes.soundSensor>currentClass
12781331

12791332

1280-
class SoundSensor(Device):
1333+
class SoundSensor(Sensor):
12811334

12821335
"""
12831336
LEGO NXT Sound Sensor
12841337
"""
12851338

1286-
SYSTEM_CLASS_NAME = 'lego-nxt-sound'
1287-
SYSTEM_DEVICE_NAME_CONVENTION = 'sensor*'
1339+
SYSTEM_CLASS_NAME = Sensor.SYSTEM_CLASS_NAME
1340+
SYSTEM_DEVICE_NAME_CONVENTION = Sensor.SYSTEM_DEVICE_NAME_CONVENTION
12881341

1289-
def __init__(self, port='', name='*', **kwargs ):
1290-
Device.__init__( self, self.SYSTEM_CLASS_NAME, name, port_name=port, **kwargs )
1342+
def __init__(self, port=None, name=SYSTEM_DEVICE_NAME_CONVENTION, **kwargs ):
1343+
if port is not None:
1344+
kwargs['port_name'] = port
1345+
Device.__init__( self, self.SYSTEM_CLASS_NAME, name, driver_name=['lego-nxt-sound', ], **kwargs )
12911346

12921347
#~autogen
12931348
#~autogen python_generic-property-value classes.soundSensor>currentClass
@@ -1302,17 +1357,19 @@ def __init__(self, port='', name='*', **kwargs ):
13021357
#~autogen python_generic-class classes.lightSensor>currentClass
13031358

13041359

1305-
class LightSensor(Device):
1360+
class LightSensor(Sensor):
13061361

13071362
"""
13081363
LEGO NXT Light Sensor
13091364
"""
13101365

1311-
SYSTEM_CLASS_NAME = 'lego-nxt-light'
1312-
SYSTEM_DEVICE_NAME_CONVENTION = 'sensor*'
1366+
SYSTEM_CLASS_NAME = Sensor.SYSTEM_CLASS_NAME
1367+
SYSTEM_DEVICE_NAME_CONVENTION = Sensor.SYSTEM_DEVICE_NAME_CONVENTION
13131368

1314-
def __init__(self, port='', name='*', **kwargs ):
1315-
Device.__init__( self, self.SYSTEM_CLASS_NAME, name, port_name=port, **kwargs )
1369+
def __init__(self, port=None, name=SYSTEM_DEVICE_NAME_CONVENTION, **kwargs ):
1370+
if port is not None:
1371+
kwargs['port_name'] = port
1372+
Device.__init__( self, self.SYSTEM_CLASS_NAME, name, driver_name=['lego-nxt-light', ], **kwargs )
13161373

13171374
#~autogen
13181375
#~autogen python_generic-property-value classes.lightSensor>currentClass
@@ -1323,6 +1380,24 @@ def __init__(self, port='', name='*', **kwargs ):
13231380
'AMBIENT':'Ambient light. LED off' ,
13241381
}
13251382

1383+
#~autogen
1384+
#~autogen python_generic-class classes.touchSensor>currentClass
1385+
1386+
1387+
class TouchSensor(Sensor):
1388+
1389+
"""
1390+
Touch Sensor
1391+
"""
1392+
1393+
SYSTEM_CLASS_NAME = Sensor.SYSTEM_CLASS_NAME
1394+
SYSTEM_DEVICE_NAME_CONVENTION = Sensor.SYSTEM_DEVICE_NAME_CONVENTION
1395+
1396+
def __init__(self, port=None, name=SYSTEM_DEVICE_NAME_CONVENTION, **kwargs ):
1397+
if port is not None:
1398+
kwargs['port_name'] = port
1399+
Device.__init__( self, self.SYSTEM_CLASS_NAME, name, driver_name=['lego-ev3-touch', 'lego-nxt-touch', ], **kwargs )
1400+
13261401
#~autogen
13271402
#~autogen python_generic-class classes.led>currentClass
13281403

@@ -1336,10 +1411,12 @@ class Led(Device):
13361411
"""
13371412

13381413
SYSTEM_CLASS_NAME = 'leds'
1339-
SYSTEM_DEVICE_NAME_CONVENTION = ''
1414+
SYSTEM_DEVICE_NAME_CONVENTION = '*'
13401415

1341-
def __init__(self, port='', name='*', **kwargs ):
1342-
Device.__init__( self, self.SYSTEM_CLASS_NAME, name, port_name=port, **kwargs )
1416+
def __init__(self, port=None, name=SYSTEM_DEVICE_NAME_CONVENTION, **kwargs ):
1417+
if port is not None:
1418+
kwargs['port_name'] = port
1419+
Device.__init__( self, self.SYSTEM_CLASS_NAME, name, **kwargs )
13431420

13441421
#~autogen
13451422
#~autogen python_generic-get-set classes.led>currentClass
@@ -1433,10 +1510,12 @@ class PowerSupply(Device):
14331510
"""
14341511

14351512
SYSTEM_CLASS_NAME = 'power_supply'
1436-
SYSTEM_DEVICE_NAME_CONVENTION = ''
1513+
SYSTEM_DEVICE_NAME_CONVENTION = '*'
14371514

1438-
def __init__(self, port='', name='*', **kwargs ):
1439-
Device.__init__( self, self.SYSTEM_CLASS_NAME, name, port_name=port, **kwargs )
1515+
def __init__(self, port=None, name=SYSTEM_DEVICE_NAME_CONVENTION, **kwargs ):
1516+
if port is not None:
1517+
kwargs['port_name'] = port
1518+
Device.__init__( self, self.SYSTEM_CLASS_NAME, name, **kwargs )
14401519

14411520
#~autogen
14421521
#~autogen python_generic-get-set classes.powerSupply>currentClass
@@ -1516,10 +1595,12 @@ class LegoPort(Device):
15161595
"""
15171596

15181597
SYSTEM_CLASS_NAME = 'lego_port'
1519-
SYSTEM_DEVICE_NAME_CONVENTION = ''
1598+
SYSTEM_DEVICE_NAME_CONVENTION = '*'
15201599

1521-
def __init__(self, port='', name='*', **kwargs ):
1522-
Device.__init__( self, self.SYSTEM_CLASS_NAME, name, port_name=port, **kwargs )
1600+
def __init__(self, port=None, name=SYSTEM_DEVICE_NAME_CONVENTION, **kwargs ):
1601+
if port is not None:
1602+
kwargs['port_name'] = port
1603+
Device.__init__( self, self.SYSTEM_CLASS_NAME, name, **kwargs )
15231604

15241605
#~autogen
15251606
#~autogen python_generic-get-set classes.legoPort>currentClass

0 commit comments

Comments
 (0)