piggz / harbour-amazfish

Amazfit Bip support for SailfishOS
GNU General Public License v3.0
103 stars 51 forks source link

ImediateAlertService::NoAlert doesn't dissmiss phone call on PineTime #297

Closed jmlich closed 1 week ago

jmlich commented 10 months ago

When phone call comes following notifications appears on the PineTime:

I have traced the problem to the following code:

if (m_voiceCallController.ringing()) {
    m_device->incomingCall(caller);
} else {
   m_device->immediateAlert(ImmediateAlertService::No_Alert);
}

Namely, I am referring to this function (Line 200): https://github.com/piggz/harbour-amazfish/blob/b56b5896fd2ad3e14f8d31ee3445f5f6588bd94e/daemon/src/deviceinterface.cpp#L188-L202

On the PineTime, this code results in a notification displaying the text "No Alert," which is not the intended behavior. According to the InfiniTime code, there currently isn't a way to dismiss this notification. I was checking also GadgetBridge and it doesn't specify any action to dismiss phone call in PineTime part of code

https://github.com/Freeyourgadget/Gadgetbridge/blob/0f7fa7593130a51d7d95a90301cdfe1bd63ba447/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pinetime/PineTimeJFSupport.java#L405

I recommend adding a device-specific function, m_device->incomingCallEnded();, which will send the Immediate Alert Service "No Alert" message only for devices where it is appropriate.

I wasn't able to track it for other devices, because I don't understand how TransactionBuilder oricess performInitialized("end call").

Do we have information about which devices the original code was functioning correctly for?

I guess I will update also https://github.com/piggz/harbour-amazfish/pull/289 according to that.