triple press to exit call
This commit is contained in:
@@ -76,6 +76,8 @@ class ChannelClient:
|
|||||||
self._ptt_active = False
|
self._ptt_active = False
|
||||||
self._last_release_time = 0.0
|
self._last_release_time = 0.0
|
||||||
self._double_pressed = False
|
self._double_pressed = False
|
||||||
|
self._press_count = 0
|
||||||
|
self._triple_pressed = False
|
||||||
if use_whisplay and _WHISPLAY_AVAILABLE and _HAS_PIL:
|
if use_whisplay and _WHISPLAY_AVAILABLE and _HAS_PIL:
|
||||||
try:
|
try:
|
||||||
self._init_whisplay()
|
self._init_whisplay()
|
||||||
@@ -311,10 +313,10 @@ class ChannelClient:
|
|||||||
lines.append(ch["hash"][:16] + "..")
|
lines.append(ch["hash"][:16] + "..")
|
||||||
if self._ptt_enabled:
|
if self._ptt_enabled:
|
||||||
lines += ["", "PTT: hold to talk", "Release to mute"]
|
lines += ["", "PTT: hold to talk", "Release to mute"]
|
||||||
footer = "Double-press: toggle"
|
footer = "Dbl: toggle Trip: leave"
|
||||||
else:
|
else:
|
||||||
lines += ["", "Mic always-on", "Press to hang up"]
|
lines += ["", "Mic always-on", "Press to hang up"]
|
||||||
footer = "Double-press: toggle"
|
footer = "Dbl: toggle Trip: leave"
|
||||||
fb = self._render("In Call", lines, accent=(60, 220, 120), footer=footer)
|
fb = self._render("In Call", lines, accent=(60, 220, 120), footer=footer)
|
||||||
self.board.draw_image(0, 0, self.board.LCD_WIDTH, self.board.LCD_HEIGHT, fb)
|
self.board.draw_image(0, 0, self.board.LCD_WIDTH, self.board.LCD_HEIGHT, fb)
|
||||||
|
|
||||||
@@ -328,7 +330,21 @@ class ChannelClient:
|
|||||||
def _on_button_press(self):
|
def _on_button_press(self):
|
||||||
self._press_time = time.time()
|
self._press_time = time.time()
|
||||||
if self.state == self.STATE_IN_CALL:
|
if self.state == self.STATE_IN_CALL:
|
||||||
if time.time() - self._last_release_time < DOUBLE_PRESS_THRESHOLD:
|
gap = time.time() - self._last_release_time
|
||||||
|
if gap < DOUBLE_PRESS_THRESHOLD:
|
||||||
|
self._press_count += 1
|
||||||
|
else:
|
||||||
|
self._press_count = 1
|
||||||
|
|
||||||
|
if self._press_count >= 3:
|
||||||
|
self._press_count = 0
|
||||||
|
self._triple_pressed = True
|
||||||
|
self._double_pressed = False
|
||||||
|
self._ptt_active = False
|
||||||
|
self.telephone.hangup()
|
||||||
|
return
|
||||||
|
|
||||||
|
if self._press_count == 2:
|
||||||
self._double_pressed = True
|
self._double_pressed = True
|
||||||
self._ptt_enabled = not self._ptt_enabled
|
self._ptt_enabled = not self._ptt_enabled
|
||||||
if self._ptt_enabled:
|
if self._ptt_enabled:
|
||||||
@@ -338,6 +354,7 @@ class ChannelClient:
|
|||||||
if self.board:
|
if self.board:
|
||||||
self._show_in_call()
|
self._show_in_call()
|
||||||
return
|
return
|
||||||
|
|
||||||
if self._ptt_enabled:
|
if self._ptt_enabled:
|
||||||
self._ptt_active = True
|
self._ptt_active = True
|
||||||
self.telephone.unmute_transmit()
|
self.telephone.unmute_transmit()
|
||||||
@@ -346,6 +363,9 @@ class ChannelClient:
|
|||||||
|
|
||||||
def _on_button_release(self):
|
def _on_button_release(self):
|
||||||
self._last_release_time = time.time()
|
self._last_release_time = time.time()
|
||||||
|
if self._triple_pressed:
|
||||||
|
self._triple_pressed = False
|
||||||
|
return
|
||||||
if self.state == self.STATE_IN_CALL:
|
if self.state == self.STATE_IN_CALL:
|
||||||
if self._double_pressed:
|
if self._double_pressed:
|
||||||
self._double_pressed = False
|
self._double_pressed = False
|
||||||
@@ -506,6 +526,8 @@ class ChannelClient:
|
|||||||
self.state = self.STATE_READY
|
self.state = self.STATE_READY
|
||||||
self._ptt_active = False
|
self._ptt_active = False
|
||||||
self._double_pressed = False
|
self._double_pressed = False
|
||||||
|
self._triple_pressed = False
|
||||||
|
self._press_count = 0
|
||||||
if was_in_call:
|
if was_in_call:
|
||||||
print(f"\nCall ended")
|
print(f"\nCall ended")
|
||||||
elif was_calling:
|
elif was_calling:
|
||||||
|
|||||||
Reference in New Issue
Block a user