Skip to content
This repository was archived by the owner on Dec 23, 2021. It is now read-only.

Commit d2d47e3

Browse files
Merge branch 'dev' into users/t-xunguy/slider-refactor
2 parents eaf91ba + 55094af commit d2d47e3

File tree

5 files changed

+136
-99
lines changed

5 files changed

+136
-99
lines changed

src/adafruit_circuitplayground/constants.py

Lines changed: 41 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,25 @@
11
# Copyright (c) Microsoft Corporation.
22
# Licensed under the MIT license.
33

4+
5+
class EXPRESS_STATE:
6+
BUTTON_A = "button_a"
7+
BUTTON_B = "button_b"
8+
ACCELERATION = "acceleration"
9+
BRIGHTNESS = "brightness"
10+
PIXELS = "pixels"
11+
RED_LED = "red_led"
12+
SWITCH = "switch"
13+
TEMPERATURE = "temperature"
14+
LIGHT = "light"
15+
MOTION_X = "motion_x"
16+
MOTION_Y = "motion_y"
17+
MOTION_Z = "motion_z"
18+
TOUCH = "touch"
19+
SHAKE = "shake"
20+
DETECT_TAPS = "detect_taps"
21+
22+
423
ASSIGN_PIXEL_TYPE_ERROR = (
524
"The pixel color value type should be tuple, list or hexadecimal."
625
)
@@ -32,18 +51,28 @@
3251
TIME_DELAY = 0.03
3352

3453

35-
EVENTS_BUTTON_PRESS = ["button_a", "button_b", "switch"]
36-
EVENTS_SENSOR_CHANGED = ["temperature", "light", "motion_x", "motion_y", "motion_z"]
54+
EVENTS_BUTTON_PRESS = [
55+
EXPRESS_STATE.BUTTON_A,
56+
EXPRESS_STATE.BUTTON_B,
57+
EXPRESS_STATE.SWITCH,
58+
]
59+
EVENTS_SENSOR_CHANGED = [
60+
EXPRESS_STATE.TEMPERATURE,
61+
EXPRESS_STATE.LIGHT,
62+
EXPRESS_STATE.MOTION_X,
63+
EXPRESS_STATE.MOTION_Y,
64+
EXPRESS_STATE.MOTION_Z,
65+
]
3766

3867
ALL_EXPECTED_INPUT_EVENTS = [
39-
"button_a",
40-
"button_b",
41-
"switch",
42-
"temperature",
43-
"light",
44-
"shake",
45-
"motion_x",
46-
"motion_y",
47-
"motion_z",
48-
"touch",
68+
EXPRESS_STATE.BUTTON_A,
69+
EXPRESS_STATE.BUTTON_B,
70+
EXPRESS_STATE.SWITCH,
71+
EXPRESS_STATE.TEMPERATURE,
72+
EXPRESS_STATE.LIGHT,
73+
EXPRESS_STATE.SHAKE,
74+
EXPRESS_STATE.MOTION_X,
75+
EXPRESS_STATE.MOTION_Y,
76+
EXPRESS_STATE.MOTION_Z,
77+
EXPRESS_STATE.TOUCH,
4978
]

src/adafruit_circuitplayground/express.py

Lines changed: 41 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -14,67 +14,69 @@
1414
from collections import namedtuple
1515
import common
1616

17-
Acceleration = namedtuple("acceleration", ["x", "y", "z"])
17+
Acceleration = namedtuple(CONSTANTS.EXPRESS_STATE.ACCELERATION, ["x", "y", "z"])
1818

1919

2020
class Express:
2121
def __init__(self):
2222
# State in the Python process
23-
self.__state = {
24-
"brightness": 1.0,
25-
"button_a": False,
26-
"button_b": False,
27-
"pixels": [
28-
(0, 0, 0),
29-
(0, 0, 0),
30-
(0, 0, 0),
31-
(0, 0, 0),
32-
(0, 0, 0),
33-
(0, 0, 0),
34-
(0, 0, 0),
35-
(0, 0, 0),
36-
(0, 0, 0),
37-
(0, 0, 0),
38-
],
39-
"red_led": False,
40-
"switch": False,
41-
"temperature": 0,
42-
"light": 0,
43-
"motion_x": 0,
44-
"motion_y": 0,
45-
"motion_z": 0,
46-
"touch": [False] * 7,
47-
"shake": False,
48-
}
23+
self.__state = {}
24+
self.__state[CONSTANTS.EXPRESS_STATE.BRIGHTNESS] = 1.0
25+
self.__state[CONSTANTS.EXPRESS_STATE.BUTTON_A] = False
26+
self.__state[CONSTANTS.EXPRESS_STATE.BUTTON_B] = False
27+
self.__state[CONSTANTS.EXPRESS_STATE.PIXELS] = [
28+
(0, 0, 0),
29+
(0, 0, 0),
30+
(0, 0, 0),
31+
(0, 0, 0),
32+
(0, 0, 0),
33+
(0, 0, 0),
34+
(0, 0, 0),
35+
(0, 0, 0),
36+
(0, 0, 0),
37+
(0, 0, 0),
38+
]
39+
self.__state[CONSTANTS.EXPRESS_STATE.RED_LED] = False
40+
self.__state[CONSTANTS.EXPRESS_STATE.SWITCH] = False
41+
self.__state[CONSTANTS.EXPRESS_STATE.TEMPERATURE] = 0
42+
self.__state[CONSTANTS.EXPRESS_STATE.LIGHT] = 0
43+
self.__state[CONSTANTS.EXPRESS_STATE.MOTION_X] = 0
44+
self.__state[CONSTANTS.EXPRESS_STATE.MOTION_Y] = 0
45+
self.__state[CONSTANTS.EXPRESS_STATE.MOTION_Z] = 0
46+
self.__state[CONSTANTS.EXPRESS_STATE.TOUCH] = [False] * 7
47+
self.__state[CONSTANTS.EXPRESS_STATE.SHAKE] = False
48+
self.__state[CONSTANTS.EXPRESS_STATE.DETECT_TAPS] = 0
4949
self.pixels = Pixel(self.__state)
5050

5151
@property
5252
def acceleration(self):
5353
telemetry_py.send_telemetry(TelemetryEvent.CPX_API_ACCELERATION)
5454
return Acceleration(
55-
self.__state["motion_x"], self.__state["motion_y"], self.__state["motion_z"]
55+
self.__state[CONSTANTS.EXPRESS_STATE.MOTION_X],
56+
self.__state[CONSTANTS.EXPRESS_STATE.MOTION_Y],
57+
self.__state[CONSTANTS.EXPRESS_STATE.MOTION_Z],
5658
)
5759

5860
@property
5961
def button_a(self):
6062
telemetry_py.send_telemetry(TelemetryEvent.CPX_API_BUTTON_A)
61-
return self.__state["button_a"]
63+
return self.__state[CONSTANTS.EXPRESS_STATE.BUTTON_A]
6264

6365
@property
6466
def button_b(self):
6567
telemetry_py.send_telemetry(TelemetryEvent.CPX_API_BUTTON_B)
66-
return self.__state["button_b"]
68+
return self.__state[CONSTANTS.EXPRESS_STATE.BUTTON_B]
6769

6870
@property
6971
def detect_taps(self):
7072
telemetry_py.send_telemetry(TelemetryEvent.CPX_API_DETECT_TAPS)
71-
return self.__state["detect_taps"]
73+
return self.__state[CONSTANTS.EXPRESS_STATE.DETECT_TAPS]
7274

7375
@detect_taps.setter
7476
def detect_taps(self, value):
7577
telemetry_py.send_telemetry(TelemetryEvent.CPX_API_DETECT_TAPS)
7678
value_int = int(value)
77-
self.__state["detect_taps"] = (
79+
self.__state[CONSTANTS.EXPRESS_STATE.DETECT_TAPS] = (
7880
value_int if (value_int == 1 or value_int == 2) else 1
7981
)
8082

@@ -88,28 +90,28 @@ def tapped(self):
8890
@property
8991
def red_led(self):
9092
telemetry_py.send_telemetry(TelemetryEvent.CPX_API_RED_LED)
91-
return self.__state["red_led"]
93+
return self.__state[CONSTANTS.EXPRESS_STATE.RED_LED]
9294

9395
@red_led.setter
9496
def red_led(self, value):
9597
telemetry_py.send_telemetry(TelemetryEvent.CPX_API_RED_LED)
96-
self.__state["red_led"] = bool(value)
98+
self.__state[CONSTANTS.EXPRESS_STATE.RED_LED] = bool(value)
9799
self.__show()
98100

99101
@property
100102
def switch(self):
101103
telemetry_py.send_telemetry(TelemetryEvent.CPX_API_SWITCH)
102-
return self.__state["switch"]
104+
return self.__state[CONSTANTS.EXPRESS_STATE.SWITCH]
103105

104106
@property
105107
def temperature(self):
106108
telemetry_py.send_telemetry(TelemetryEvent.CPX_API_TEMPERATURE)
107-
return self.__state["temperature"]
109+
return self.__state[CONSTANTS.EXPRESS_STATE.TEMPERATURE]
108110

109111
@property
110112
def light(self):
111113
telemetry_py.send_telemetry(TelemetryEvent.CPX_API_LIGHT)
112-
return self.__state["light"]
114+
return self.__state[CONSTANTS.EXPRESS_STATE.LIGHT]
113115

114116
def __show(self):
115117
if utils.debug_mode:
@@ -121,7 +123,7 @@ def __show(self):
121123

122124
def __touch(self, i):
123125
telemetry_py.send_telemetry(TelemetryEvent.CPX_API_TOUCH)
124-
return self.__state["touch"][i - 1]
126+
return self.__state[CONSTANTS.EXPRESS_STATE.TOUCH][i - 1]
125127

126128
@property
127129
def touch_A1(self):
@@ -160,7 +162,7 @@ def adjust_touch_threshold(self, adjustment):
160162

161163
def shake(self, shake_threshold=30):
162164
telemetry_py.send_telemetry(TelemetryEvent.CPX_API_SHAKE)
163-
return self.__state["shake"]
165+
return self.__state[CONSTANTS.EXPRESS_STATE.SHAKE]
164166

165167
def play_file(self, file_name):
166168
telemetry_py.send_telemetry(TelemetryEvent.CPX_API_PLAY_FILE)

src/adafruit_circuitplayground/pixel.py

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ def __getitem__(self, index):
3636
if not self.__valid_index(index):
3737
raise IndexError(CONSTANTS.INDEX_ERROR)
3838
telemetry_py.send_telemetry(TelemetryEvent.CPX_API_PIXELS)
39-
return self.__state["pixels"][index]
39+
return self.__state[CONSTANTS.EXPRESS_STATE.PIXELS][index]
4040

4141
def __setitem__(self, index, val):
4242
telemetry_py.send_telemetry(TelemetryEvent.CPX_API_PIXELS)
@@ -46,11 +46,13 @@ def __setitem__(self, index, val):
4646
else:
4747
if not self.__valid_index(index):
4848
raise IndexError(CONSTANTS.INDEX_ERROR)
49-
self.__state["pixels"][index] = self.__extract_pixel_value(val, is_slice)
49+
self.__state[CONSTANTS.EXPRESS_STATE.PIXELS][
50+
index
51+
] = self.__extract_pixel_value(val, is_slice)
5052
self.__show_if_auto_write()
5153

5254
def __iter__(self):
53-
yield from self.__state["pixels"]
55+
yield from self.__state[CONSTANTS.EXPRESS_STATE.PIXELS]
5456

5557
def __enter__(self):
5658
return self
@@ -59,18 +61,20 @@ def __repr__(self):
5961
return "[" + ", ".join([str(x) for x in self]) + "]"
6062

6163
def __len__(self):
62-
return len(self.__state["pixels"])
64+
return len(self.__state[CONSTANTS.EXPRESS_STATE.PIXELS])
6365

6466
def __valid_index(self, index):
6567
return (
6668
type(index) is int
67-
and index >= -len(self.__state["pixels"])
68-
and index < len(self.__state["pixels"])
69+
and index >= -len(self.__state[CONSTANTS.EXPRESS_STATE.PIXELS])
70+
and index < len(self.__state[CONSTANTS.EXPRESS_STATE.PIXELS])
6971
)
7072

7173
def fill(self, val):
72-
for index in range(len(self.__state["pixels"])):
73-
self.__state["pixels"][index] = self.__extract_pixel_value(val)
74+
for index in range(len(self.__state[CONSTANTS.EXPRESS_STATE.PIXELS])):
75+
self.__state[CONSTANTS.EXPRESS_STATE.PIXELS][
76+
index
77+
] = self.__extract_pixel_value(val)
7478
self.__show_if_auto_write()
7579

7680
def __extract_pixel_value(self, val, is_slice=False):
@@ -113,14 +117,14 @@ def __valid_rgb_value(self, pixValue):
113117
@property
114118
def brightness(self):
115119
telemetry_py.send_telemetry(TelemetryEvent.CPX_API_BRIGHTNESS)
116-
return self.__state["brightness"]
120+
return self.__state[CONSTANTS.EXPRESS_STATE.BRIGHTNESS]
117121

118122
@brightness.setter
119123
def brightness(self, brightness):
120124
if not self.__valid_brightness(brightness):
121125
raise ValueError(CONSTANTS.BRIGHTNESS_RANGE_ERROR)
122126
telemetry_py.send_telemetry(TelemetryEvent.CPX_API_BRIGHTNESS)
123-
self.__state["brightness"] = brightness
127+
self.__state[CONSTANTS.EXPRESS_STATE.BRIGHTNESS] = brightness
124128
self.__show_if_auto_write()
125129

126130
def __valid_brightness(self, brightness):

0 commit comments

Comments
 (0)