@@ -35,6 +35,7 @@ class MotionSensor(Device):
35
35
:param port: Port of device
36
36
:raises DeviceError: Occurs if there is no motion sensor attached to port
37
37
"""
38
+ default_mode = 0
38
39
39
40
def __init__ (self , port ):
40
41
"""
@@ -43,7 +44,18 @@ def __init__(self, port):
43
44
:param port: Port of device
44
45
"""
45
46
super ().__init__ (port )
46
- self .mode (0 )
47
+ self .mode (self .default_mode )
48
+
49
+ def set_default_data_mode (self , mode ):
50
+ """
51
+ Set the mode most often queried from this device to significantly
52
+ improve performance when repeatedly accessing data
53
+
54
+ :param mode: 0 for distance (default), 1 for movement count
55
+ """
56
+ if mode == 1 or mode == 0 :
57
+ self .default_mode = mode
58
+ self .mode (mode )
47
59
48
60
def get_distance (self ):
49
61
"""
@@ -52,4 +64,24 @@ def get_distance(self):
52
64
:return: Distance from motion sensor
53
65
:rtype: int
54
66
"""
55
- return self .get ()[0 ]
67
+ return self ._get_data_from_mode (0 )
68
+
69
+ def get_movement_count (self ):
70
+ """
71
+ Return the movement counter: The count of how many times the sensor has
72
+ detected an object that moved within 4 blocks of the sensor since the
73
+ sensor has been plugged in or the BuildHAT reset
74
+
75
+ :return: Count of objects detected
76
+ :rtype: int
77
+ """
78
+ return self ._get_data_from_mode (1 )
79
+
80
+ def _get_data_from_mode (self , mode ):
81
+ if self .default_mode == mode :
82
+ return self .get ()[0 ]
83
+ else :
84
+ self .mode (mode )
85
+ retval = self .get ()[0 ]
86
+ self .mode (self .default_mode )
87
+ return retval
0 commit comments