Skip to content

Commit 2df857c

Browse files
authored
Merge pull request #1654 from lesamouraipourpre/ancs
CPB ANCS: Update for CP7
2 parents fb70bf1 + 50ce059 commit 2df857c

File tree

1 file changed

+65
-59
lines changed

1 file changed

+65
-59
lines changed

CPB_ANCS/code.py

Lines changed: 65 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -88,13 +88,20 @@ def check_timeout(self):
8888
advertisement.complete_name = "CIRCUITPY"
8989
advertisement.solicited_services.append(AppleNotificationCenterService)
9090

91-
def wrap_in_tilegrid(open_file):
92-
odb = displayio.OnDiskBitmap(open_file)
93-
return displayio.TileGrid(odb, pixel_shader=getattr(odb, 'pixel_shader', displayio.ColorConverter()))
91+
def wrap_in_tilegrid(filename:str):
92+
# CircuitPython 6 & 7 compatible
93+
odb = displayio.OnDiskBitmap(open(filename, "rb"))
94+
return displayio.TileGrid(
95+
odb, pixel_shader=getattr(odb, 'pixel_shader', displayio.ColorConverter())
96+
)
97+
98+
# # CircuitPython 7+ compatible
99+
# odb = displayio.OnDiskBitmap(filename)
100+
# return displayio.TileGrid(odb, pixel_shader=odb.pixel_shader)
94101

95102
display = tft_gizmo.TFT_Gizmo()
96-
group = displayio.Group(max_size=3)
97-
group.append(wrap_in_tilegrid(open("/ancs_connect.bmp", "rb")))
103+
group = displayio.Group()
104+
group.append(wrap_in_tilegrid("/ancs_connect.bmp"))
98105
display.show(group)
99106

100107
current_notification = None
@@ -116,58 +123,57 @@ def wrap_in_tilegrid(open_file):
116123
dimmer.update()
117124
play_sound()
118125

119-
with open("/ancs_none.bmp", "rb") as no_notifications:
120-
group.append(wrap_in_tilegrid(no_notifications))
121-
while active_connection.connected:
122-
all_ids.clear()
123-
current_notifications = notification_service.active_notifications
124-
for notif_id in current_notifications:
125-
notification = current_notifications[notif_id]
126-
if notification.app_id not in APP_ICONS or notification.app_id in BLOCKLIST:
127-
continue
128-
all_ids.append(notif_id)
129-
130-
# pylint: disable=protected-access
131-
all_ids.sort(key=lambda x: current_notifications[x]._raw_date)
132-
# pylint: enable=protected-access
133-
134-
if current_notification and current_notification.removed:
135-
# Stop showing the latest and show that there are no new notifications.
136-
current_notification = None
137-
138-
if not current_notification and not all_ids and not cleared:
139-
cleared = True
126+
no_notifications = "/ancs_none.bmp"
127+
group.append(wrap_in_tilegrid(no_notifications))
128+
while active_connection.connected:
129+
all_ids.clear()
130+
current_notifications = notification_service.active_notifications
131+
for notif_id in current_notifications:
132+
notification = current_notifications[notif_id]
133+
if notification.app_id not in APP_ICONS or notification.app_id in BLOCKLIST:
134+
continue
135+
all_ids.append(notif_id)
136+
137+
# pylint: disable=protected-access
138+
all_ids.sort(key=lambda x: current_notifications[x]._raw_date)
139+
# pylint: enable=protected-access
140+
141+
if current_notification and current_notification.removed:
142+
# Stop showing the latest and show that there are no new notifications.
143+
current_notification = None
144+
145+
if not current_notification and not all_ids and not cleared:
146+
cleared = True
147+
dimmer.update()
148+
group[1] = wrap_in_tilegrid(no_notifications)
149+
elif all_ids:
150+
cleared = False
151+
now = time.monotonic()
152+
if current_notification and current_notification.id in all_ids and \
153+
now - last_press < DELAY_AFTER_PRESS:
154+
index = all_ids.index(current_notification.id)
155+
else:
156+
index = len(all_ids) - 1
157+
if now - last_press >= DEBOUNCE:
158+
if b.value and index > 0:
159+
last_press = now
160+
index += -1
161+
if a.value and index < len(all_ids) - 1:
162+
last_press = now
163+
index += 1
164+
notif_id = all_ids[index]
165+
if not current_notification or current_notification.id != notif_id:
140166
dimmer.update()
141-
group[1] = wrap_in_tilegrid(no_notifications)
142-
elif all_ids:
143-
cleared = False
144-
now = time.monotonic()
145-
if current_notification and current_notification.id in all_ids and \
146-
now - last_press < DELAY_AFTER_PRESS:
147-
index = all_ids.index(current_notification.id)
148-
else:
149-
index = len(all_ids) - 1
150-
if now - last_press >= DEBOUNCE:
151-
if b.value and index > 0:
152-
last_press = now
153-
index += -1
154-
if a.value and index < len(all_ids) - 1:
155-
last_press = now
156-
index += 1
157-
notif_id = all_ids[index]
158-
if not current_notification or current_notification.id != notif_id:
159-
dimmer.update()
160-
current_notification = current_notifications[notif_id]
161-
# pylint: disable=protected-access
162-
print(current_notification._raw_date, current_notification)
163-
# pylint: enable=protected-access
164-
app_icon_file = open(APP_ICONS[current_notification.app_id], "rb")
165-
group[1] = wrap_in_tilegrid(app_icon_file)
166-
167-
dimmer.check_timeout()
168-
169-
# Bluetooth Disconnected
170-
group.pop()
171-
dimmer.update()
172-
active_connection = None
173-
notification_service = None
167+
current_notification = current_notifications[notif_id]
168+
# pylint: disable=protected-access
169+
print(current_notification._raw_date, current_notification)
170+
# pylint: enable=protected-access
171+
group[1] = wrap_in_tilegrid(APP_ICONS[current_notification.app_id])
172+
173+
dimmer.check_timeout()
174+
175+
# Bluetooth Disconnected
176+
group.pop()
177+
dimmer.update()
178+
active_connection = None
179+
notification_service = None

0 commit comments

Comments
 (0)