@@ -1864,6 +1864,110 @@ def backspace(self):
1864
1864
1865
1865
1866
1866
#~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
+
1867
1971
#~autogen generic-class classes.powerSupply>currentClass
1868
1972
1869
1973
class PowerSupply (Device ):
@@ -2276,106 +2380,3 @@ def update(self):
2276
2380
else :
2277
2381
raise Exception ("Not supported" )
2278
2382
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