@@ -1434,7 +1434,36 @@ def poll_ms(self, value):
14341434
14351435
14361436# ~autogen
1437- # ~autogen generic-class specialSensorTypes.colorSensor>currentClass
1437+
1438+
1439+ # ~autogen special-sensors
1440+
1441+ class TouchSensor (Sensor ):
1442+
1443+ """
1444+ Touch Sensor
1445+ """
1446+
1447+ SYSTEM_CLASS_NAME = Sensor .SYSTEM_CLASS_NAME
1448+ SYSTEM_DEVICE_NAME_CONVENTION = Sensor .SYSTEM_DEVICE_NAME_CONVENTION
1449+
1450+ def __init__ (self , address = None , name_pattern = SYSTEM_DEVICE_NAME_CONVENTION , name_exact = False , ** kwargs ):
1451+ if address is not None :
1452+ kwargs ['address' ] = address
1453+ Device .__init__ (self , self .SYSTEM_CLASS_NAME , name_pattern , name_exact , driver_name = ['lego-ev3-touch' , 'lego-nxt-touch' ], ** kwargs )
1454+
1455+ # Button state
1456+ MODE_TOUCH = 'TOUCH'
1457+
1458+
1459+ def is_pressed ():
1460+ """
1461+ A boolean indicating whether the current touch sensor is being
1462+ pressed.
1463+ """
1464+ self .mode = MODE_TOUCH
1465+ return self .value (0 )
1466+
14381467
14391468class ColorSensor (Sensor ):
14401469
@@ -1450,10 +1479,6 @@ def __init__(self, address=None, name_pattern=SYSTEM_DEVICE_NAME_CONVENTION, nam
14501479 kwargs ['address' ] = address
14511480 Device .__init__ (self , self .SYSTEM_CLASS_NAME , name_pattern , name_exact , driver_name = ['lego-ev3-color' ], ** kwargs )
14521481
1453-
1454- # ~autogen
1455- # ~autogen generic-property-value specialSensorTypes.colorSensor>currentClass
1456-
14571482 # Reflected light. Red LED on.
14581483 MODE_COL_REFLECT = 'COL-REFLECT'
14591484
@@ -1470,8 +1495,56 @@ def __init__(self, address=None, name_pattern=SYSTEM_DEVICE_NAME_CONVENTION, nam
14701495 MODE_RGB_RAW = 'RGB-RAW'
14711496
14721497
1473- # ~autogen
1474- # ~autogen generic-class specialSensorTypes.ultrasonicSensor>currentClass
1498+ def reflected_light_intensity ():
1499+ """
1500+ Reflected light intensity as a percentage. Light on sensor is red.
1501+ """
1502+ self .mode = MODE_COL_REFLECT
1503+ return self .value (0 )
1504+
1505+ def ambient_light_intensity ():
1506+ """
1507+ Ambient light intensity. Light on sensor is dimly lit blue.
1508+ """
1509+ self .mode = MODE_COL_AMBIENT
1510+ return self .value (0 )
1511+
1512+ def color ():
1513+ """
1514+ Color detected by the sensor, categorized by overall value.
1515+ - 0: No color
1516+ - 1: Black
1517+ - 2: Blue
1518+ - 3: Green
1519+ - 4: Yellow
1520+ - 5: Red
1521+ - 6: White
1522+ - 7: Brown
1523+ """
1524+ self .mode = MODE_COL_COLOR
1525+ return self .value (0 )
1526+
1527+ def red ():
1528+ """
1529+ Red component of the detected color, in the range 0-1020.
1530+ """
1531+ self .mode = MODE_RGB_RAW
1532+ return self .value (0 )
1533+
1534+ def green ():
1535+ """
1536+ Green component of the detected color, in the range 0-1020.
1537+ """
1538+ self .mode = MODE_RGB_RAW
1539+ return self .value (1 )
1540+
1541+ def blue ():
1542+ """
1543+ Blue component of the detected color, in the range 0-1020.
1544+ """
1545+ self .mode = MODE_RGB_RAW
1546+ return self .value (2 )
1547+
14751548
14761549class UltrasonicSensor (Sensor ):
14771550
@@ -1487,10 +1560,6 @@ def __init__(self, address=None, name_pattern=SYSTEM_DEVICE_NAME_CONVENTION, nam
14871560 kwargs ['address' ] = address
14881561 Device .__init__ (self , self .SYSTEM_CLASS_NAME , name_pattern , name_exact , driver_name = ['lego-ev3-us' , 'lego-nxt-us' ], ** kwargs )
14891562
1490-
1491- # ~autogen
1492- # ~autogen generic-property-value specialSensorTypes.ultrasonicSensor>currentClass
1493-
14941563 # Continuous measurement in centimeters.
14951564 MODE_US_DIST_CM = 'US-DIST-CM'
14961565
@@ -1507,8 +1576,30 @@ def __init__(self, address=None, name_pattern=SYSTEM_DEVICE_NAME_CONVENTION, nam
15071576 MODE_US_SI_IN = 'US-SI-IN'
15081577
15091578
1510- # ~autogen
1511- # ~autogen generic-class specialSensorTypes.gyroSensor>currentClass
1579+ def distance_centimeters ():
1580+ """
1581+ Measurement of the distance detected by the sensor,
1582+ in centimeters.
1583+ """
1584+ self .mode = MODE_US_DIST_CM
1585+ return self .value (0 )
1586+
1587+ def distance_inches ():
1588+ """
1589+ Measurement of the distance detected by the sensor,
1590+ in inches.
1591+ """
1592+ self .mode = MODE_US_DIST_IN
1593+ return self .value (0 )
1594+
1595+ def other_sensor_present ():
1596+ """
1597+ Value indicating whether another ultrasonic sensor could
1598+ be heard nearby.
1599+ """
1600+ self .mode = MODE_US_LISTEN
1601+ return self .value (0 )
1602+
15121603
15131604class GyroSensor (Sensor ):
15141605
@@ -1524,10 +1615,6 @@ def __init__(self, address=None, name_pattern=SYSTEM_DEVICE_NAME_CONVENTION, nam
15241615 kwargs ['address' ] = address
15251616 Device .__init__ (self , self .SYSTEM_CLASS_NAME , name_pattern , name_exact , driver_name = ['lego-ev3-gyro' ], ** kwargs )
15261617
1527-
1528- # ~autogen
1529- # ~autogen generic-property-value specialSensorTypes.gyroSensor>currentClass
1530-
15311618 # Angle
15321619 MODE_GYRO_ANG = 'GYRO-ANG'
15331620
@@ -1544,8 +1631,21 @@ def __init__(self, address=None, name_pattern=SYSTEM_DEVICE_NAME_CONVENTION, nam
15441631 MODE_GYRO_CAL = 'GYRO-CAL'
15451632
15461633
1547- # ~autogen
1548- # ~autogen generic-class specialSensorTypes.infraredSensor>currentClass
1634+ def angle ():
1635+ """
1636+ The number of degrees that the sensor has been rotated
1637+ since it was put into this mode.
1638+ """
1639+ self .mode = MODE_GYRO_ANG
1640+ return self .value (0 )
1641+
1642+ def rate ():
1643+ """
1644+ The rate at which the sensor is rotating, in degrees/second.
1645+ """
1646+ self .mode = MODE_GYRO_RATE
1647+ return self .value (0 )
1648+
15491649
15501650class InfraredSensor (Sensor ):
15511651
@@ -1561,10 +1661,6 @@ def __init__(self, address=None, name_pattern=SYSTEM_DEVICE_NAME_CONVENTION, nam
15611661 kwargs ['address' ] = address
15621662 Device .__init__ (self , self .SYSTEM_CLASS_NAME , name_pattern , name_exact , driver_name = ['lego-ev3-ir' ], ** kwargs )
15631663
1564-
1565- # ~autogen
1566- # ~autogen generic-property-value specialSensorTypes.infraredSensor>currentClass
1567-
15681664 # Proximity
15691665 MODE_IR_PROX = 'IR-PROX'
15701666
@@ -1581,8 +1677,14 @@ def __init__(self, address=None, name_pattern=SYSTEM_DEVICE_NAME_CONVENTION, nam
15811677 MODE_IR_CAL = 'IR-CAL'
15821678
15831679
1584- # ~autogen
1585- # ~autogen generic-class specialSensorTypes.soundSensor>currentClass
1680+ def proximity ():
1681+ """
1682+ A measurement of the distance between the sensor and the remote,
1683+ as a percentage. 100% is approximately 70cm/27in.
1684+ """
1685+ self .mode = MODE_IR_PROX
1686+ return self .value (0 )
1687+
15861688
15871689class SoundSensor (Sensor ):
15881690
@@ -1598,19 +1700,29 @@ def __init__(self, address=None, name_pattern=SYSTEM_DEVICE_NAME_CONVENTION, nam
15981700 kwargs ['address' ] = address
15991701 Device .__init__ (self , self .SYSTEM_CLASS_NAME , name_pattern , name_exact , driver_name = ['lego-nxt-sound' ], ** kwargs )
16001702
1601-
1602- # ~autogen
1603- # ~autogen generic-property-value specialSensorTypes.soundSensor>currentClass
1604-
16051703 # Sound pressure level. Flat weighting
16061704 MODE_DB = 'DB'
16071705
16081706 # Sound pressure level. A weighting
16091707 MODE_DBA = 'DBA'
16101708
16111709
1612- # ~autogen
1613- # ~autogen generic-class specialSensorTypes.lightSensor>currentClass
1710+ def sound_pressure ():
1711+ """
1712+ A measurement of the measured sound pressure level, as a
1713+ percent. Uses a flat weighting.
1714+ """
1715+ self .mode = MODE_DB
1716+ return self .value (0 )
1717+
1718+ def sound_pressure_low ():
1719+ """
1720+ A measurement of the measured sound pressure level, as a
1721+ percent. Uses A-weighting, which focuses on levels up to 55 dB.
1722+ """
1723+ self .mode = MODE_DBA
1724+ return self .value (0 )
1725+
16141726
16151727class LightSensor (Sensor ):
16161728
@@ -1626,36 +1738,31 @@ def __init__(self, address=None, name_pattern=SYSTEM_DEVICE_NAME_CONVENTION, nam
16261738 kwargs ['address' ] = address
16271739 Device .__init__ (self , self .SYSTEM_CLASS_NAME , name_pattern , name_exact , driver_name = ['lego-nxt-light' ], ** kwargs )
16281740
1629-
1630- # ~autogen
1631- # ~autogen generic-property-value specialSensorTypes.lightSensor>currentClass
1632-
16331741 # Reflected light. LED on
16341742 MODE_REFLECT = 'REFLECT'
16351743
16361744 # Ambient light. LED off
16371745 MODE_AMBIENT = 'AMBIENT'
16381746
16391747
1640- # ~autogen
1641- # ~autogen generic-class specialSensorTypes.touchSensor>currentClass
1642-
1643- class TouchSensor (Sensor ):
1644-
1645- """
1646- Touch Sensor
1647- """
1748+ def reflected_light_intensity ():
1749+ """
1750+ A measurement of the reflected light intensity, as a percentage.
1751+ """
1752+ self .mode = MODE_REFLECT
1753+ return self .value (0 )
16481754
1649- SYSTEM_CLASS_NAME = Sensor .SYSTEM_CLASS_NAME
1650- SYSTEM_DEVICE_NAME_CONVENTION = Sensor .SYSTEM_DEVICE_NAME_CONVENTION
1755+ def ambient_light_intensity ():
1756+ """
1757+ A measurement of the ambient light intensity, as a percentage.
1758+ """
1759+ self .mode = MODE_AMBIENT
1760+ return self .value (0 )
16511761
1652- def __init__ (self , address = None , name_pattern = SYSTEM_DEVICE_NAME_CONVENTION , name_exact = False , ** kwargs ):
1653- if address is not None :
1654- kwargs ['address' ] = address
1655- Device .__init__ (self , self .SYSTEM_CLASS_NAME , name_pattern , name_exact , driver_name = ['lego-ev3-touch' , 'lego-nxt-touch' ], ** kwargs )
16561762
16571763
16581764# ~autogen
1765+
16591766# ~autogen generic-class classes.led>currentClass
16601767
16611768class Led (Device ):
0 commit comments