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: 6
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: 6
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
Post Reply