Skip to content

Commit 1763dc9

Browse files
committed
Move RemoteControl next to Button in ev3dev.py
1 parent 265ccd3 commit 1763dc9

File tree

1 file changed

+104
-103
lines changed

1 file changed

+104
-103
lines changed

ev3dev.py

Lines changed: 104 additions & 103 deletions
Original file line numberDiff line numberDiff line change
@@ -1864,6 +1864,110 @@ def backspace(self):
18641864

18651865

18661866
#~autogen
1867+
1868+
class RemoteControl(object):
1869+
"""
1870+
EV3 Remote Control
1871+
"""
1872+
1873+
_BUTTON_VALUES = {
1874+
1: ['red_up'],
1875+
2: ['red_down'],
1876+
3: ['blue_up'],
1877+
4: ['blue_down'],
1878+
5: ['red_up', 'blue_up'],
1879+
6: ['red_up', 'blue_down'],
1880+
7: ['red_down', 'blue_up'],
1881+
8: ['red_down', 'blue_down'],
1882+
9: ['beacon'],
1883+
10: ['red_up', 'red_down'],
1884+
11: ['blue_up', 'blue_down']
1885+
}
1886+
1887+
on_red_up = None
1888+
on_red_down = None
1889+
on_blue_up = None
1890+
on_blue_down = None
1891+
on_beacon = None
1892+
on_change = None
1893+
1894+
def __init__(self, sensor=None, channel=1):
1895+
if sensor is None:
1896+
self._sensor = InfraredSensor()
1897+
else:
1898+
self._sensor = sensor
1899+
1900+
self._channel = max(1, min(4, channel)) - 1
1901+
self._state = set([])
1902+
1903+
if self._sensor.connected:
1904+
self._sensor.mode = 'IR-REMOTE'
1905+
1906+
@property
1907+
def buttons_pressed(self):
1908+
"""
1909+
Returns list of currently pressed buttons.
1910+
"""
1911+
return RemoteControl._BUTTON_VALUES.get(self._sensor.value(self._channel), [])
1912+
1913+
@property
1914+
def any(self):
1915+
"""
1916+
Checks if any button is pressed.
1917+
"""
1918+
return bool(self.buttons_pressed)
1919+
1920+
def check_buttons(self, buttons=[]):
1921+
return set(self.buttons_pressed) == set(buttons)
1922+
1923+
@property
1924+
def red_up(self):
1925+
"""
1926+
Checks if `red_up` button is pressed
1927+
"""
1928+
return 'red_up' in self.buttons_pressed
1929+
1930+
@property
1931+
def red_down(self):
1932+
"""
1933+
Checks if `red_down` button is pressed
1934+
"""
1935+
return 'red_down' in self.buttons_pressed
1936+
1937+
@property
1938+
def blue_up(self):
1939+
"""
1940+
Checks if `blue_up` button is pressed
1941+
"""
1942+
return 'blue_up' in self.buttons_pressed
1943+
1944+
@property
1945+
def blue_down(self):
1946+
"""
1947+
Checks if `blue_down` button is pressed
1948+
"""
1949+
return 'blue_down' in self.buttons_pressed
1950+
1951+
@property
1952+
def beacon(self):
1953+
"""
1954+
Checks if `beacon` button is pressed
1955+
"""
1956+
return 'beacon' in self.buttons_pressed
1957+
1958+
def process(self):
1959+
new_state = set(self.buttons_pressed)
1960+
old_state = self._state
1961+
self._state = new_state
1962+
1963+
state_diff = new_state.symmetric_difference(old_state)
1964+
for button in state_diff:
1965+
handler = getattr(self, 'on_' + button)
1966+
if handler is not None: handler(button in new_state)
1967+
1968+
if self.on_change is not None and state_diff:
1969+
self.on_change([(button, button in new_state) for button in state_diff])
1970+
18671971
#~autogen generic-class classes.powerSupply>currentClass
18681972

18691973
class PowerSupply(Device):
@@ -2276,106 +2380,3 @@ def update(self):
22762380
else:
22772381
raise Exception("Not supported")
22782382

2279-
2280-
class RemoteControl(object):
2281-
"""
2282-
EV3 Remote Control
2283-
"""
2284-
2285-
_BUTTON_VALUES = {
2286-
1: ['red_up'],
2287-
2: ['red_down'],
2288-
3: ['blue_up'],
2289-
4: ['blue_down'],
2290-
5: ['red_up', 'blue_up'],
2291-
6: ['red_up', 'blue_down'],
2292-
7: ['red_down', 'blue_up'],
2293-
8: ['red_down', 'blue_down'],
2294-
9: ['beacon'],
2295-
10: ['red_up', 'red_down'],
2296-
11: ['blue_up', 'blue_down']
2297-
}
2298-
2299-
on_red_up = None
2300-
on_red_down = None
2301-
on_blue_up = None
2302-
on_blue_down = None
2303-
on_beacon = None
2304-
on_change = None
2305-
2306-
def __init__(self, sensor=None, channel=1):
2307-
if sensor is None:
2308-
self._sensor = InfraredSensor()
2309-
else:
2310-
self._sensor = sensor
2311-
2312-
self._channel = max(1, min(4, channel)) - 1
2313-
self._state = set([])
2314-
2315-
if self._sensor.connected:
2316-
self._sensor.mode = 'IR-REMOTE'
2317-
2318-
@property
2319-
def buttons_pressed(self):
2320-
"""
2321-
Returns list of currently pressed buttons.
2322-
"""
2323-
return RemoteControl._BUTTON_VALUES.get(self._sensor.value(self._channel), [])
2324-
2325-
@property
2326-
def any(self):
2327-
"""
2328-
Checks if any button is pressed.
2329-
"""
2330-
return bool(self.buttons_pressed)
2331-
2332-
def check_buttons(self, buttons=[]):
2333-
return set(self.buttons_pressed) == set(buttons)
2334-
2335-
@property
2336-
def red_up(self):
2337-
"""
2338-
Checks if `red_up` button is pressed
2339-
"""
2340-
return 'red_up' in self.buttons_pressed
2341-
2342-
@property
2343-
def red_down(self):
2344-
"""
2345-
Checks if `red_down` button is pressed
2346-
"""
2347-
return 'red_down' in self.buttons_pressed
2348-
2349-
@property
2350-
def blue_up(self):
2351-
"""
2352-
Checks if `blue_up` button is pressed
2353-
"""
2354-
return 'blue_up' in self.buttons_pressed
2355-
2356-
@property
2357-
def blue_down(self):
2358-
"""
2359-
Checks if `blue_down` button is pressed
2360-
"""
2361-
return 'blue_down' in self.buttons_pressed
2362-
2363-
@property
2364-
def beacon(self):
2365-
"""
2366-
Checks if `beacon` button is pressed
2367-
"""
2368-
return 'beacon' in self.buttons_pressed
2369-
2370-
def process(self):
2371-
new_state = set(self.buttons_pressed)
2372-
old_state = self._state
2373-
self._state = new_state
2374-
2375-
state_diff = new_state.symmetric_difference(old_state)
2376-
for button in state_diff:
2377-
handler = getattr(self, 'on_' + button)
2378-
if handler is not None: handler(button in new_state)
2379-
2380-
if self.on_change is not None and state_diff:
2381-
self.on_change([(button, button in new_state) for button in state_diff])

0 commit comments

Comments
 (0)