Answering incoming call doesn't work on main branch firmware, but does on statusline branch

Discuss building, using, and modifying the Rotary Un-Smartphone.

Moderator: gomeznicole303

Post Reply
eppy
Posts: 9
Joined: Tue Dec 23, 2025 3:00 am

Answering incoming call doesn't work on main branch firmware, but does on statusline branch

Post by eppy »

Hi RUSP family,

I'm running into a third issue. On the main branch of firmware, it doesn't seem like I can answer the line when a phone call is incoming. However, when I flash the statusline branch, it seems to work fine.

This is the repository I'm working with.

https://github.com/skysedge/rusp_firmware

Here is a video of me trying to answer a call with the main branch and how I'm flashing the firmware. I then flash with the statusline branch and show that I can answer the call. The speaker is disconnected in the video, but that seems to work fine on the statusline firmware.

https://photos.app.goo.gl/SFEXcC6Bkww9v26H8 (newer video)

Any thoughts? Are there other forks of the firmware that folks are working on that you can share?

Thanks,
eppy
eppy
Posts: 9
Joined: Tue Dec 23, 2025 3:00 am

Re: Answering incoming call doesn't work on main branch firmware, but does on statusline branch

Post by eppy »

I threw in some debugging in the firmware and can confirm that the hook button is working at least.

Code: Select all

diff --git a/rusp_firmware.ino b/rusp_firmware.ino
index 53264cf..9d0b0de 100644
--- a/rusp_firmware.ino
+++ b/rusp_firmware.ino
@@ -108,6 +108,7 @@ unsigned long last_filament_toggle = 0;
 // tied-to-GND normally-open limit switch that rolls against a cam
 void isr_rotary()
 {
+  Serial.print("rotary...\r\n");
        // only count if the hall triggered
        if (!pulsing) return;
        // debounce
@@ -130,6 +131,7 @@ void isr_rotary()
 
 void isr_hall()
 {
+  Serial.print("hall...\r\n");
        pulsing = true;
        pulses = 0;
        // Capture hook button state immediately (safe in ISR - just reading a pin state)
@@ -140,6 +142,7 @@ void isr_hall()
 
 void isr_hook()
 {
+  Serial.print("hook...\r\n");
        unsigned long hook_cur = millis();
        if (hook_cur - hook_last > 30) {
                hook_last = hook_cur;
Which produced the following.

Code: Select all

OK
AT

OK
hook...
It's interesting, for a moment, it did produce the "hall" output as well. But, I'm not sure what I did. I was tightening the daughterboard screw that holds the mallet in place when it showed and blinked a bunch of lights at the same time. What is the hall sensor for?

Code: Select all

rotary...
hall...
hook...
rotary...
rotary...
rotary...
rotary...
rotary...
rotary...
rotary...
rotary...
rotary...
rotary...
OLED showing digit: 3
ALT mode: n=3, hook_during_dial=0, speed_dial=0
Alt mode: Loading contact page 3
ePaper: Initializing for contacts...
ePaper: Calling init()...
ePaper: Init complete, Serial restarted
Page 3: Showing contacts 19 to 27
Failed to open contacts.txt
Failed to open contacts.txt
Failed to open contacts.txt
Failed to open contacts.txt
Failed to open contacts.txt
Failed to open contacts.txt
imyxh
Site Admin
Posts: 38
Joined: Wed Jun 05, 2024 5:28 am
Location: do not PM for support! just email info@skysedge.com

Re: Answering incoming call doesn't work on main branch firmware, but does on statusline branch

Post by imyxh »

Hmm. It looks like Justine added some changes to only register the hook press if it's held for more than a second: https://github.com/skysedge/rusp_firmwa ... e.ino#L605

FWIW, the statusline branch was a work in progress and I think it currently will do ugly things like print over the dial buffer and so on. If the main branch isn't working I'd recommend using commit 721d98d as the fallback instead.
Post Reply