From 3d692e3989bed0deedf6cf83d2fb26c2cf765b5d Mon Sep 17 00:00:00 2001 From: Marius Gripsgard Date: Sun, 13 Oct 2024 15:37:26 +0200 Subject: [PATCH] call: Add ring ind handler --- src/qti_ims_call.c | 11 +++++++++++ src/qti_radio_ext.c | 20 +++++++++++++++++++- src/qti_radio_ext.h | 6 ++++++ 3 files changed, 36 insertions(+), 1 deletion(-) diff --git a/src/qti_ims_call.c b/src/qti_ims_call.c index 2b1dd4a..2a0f940 100644 --- a/src/qti_ims_call.c +++ b/src/qti_ims_call.c @@ -197,6 +197,15 @@ qti_ims_call_handle_call_info( qti_ims_call_signals[SIGNAL_CALL_STATE_CHANGED], 0); } +static +void +qti_ims_call_handle_ring( + QtiRadioExt* radio, + void* user_data) +{ + g_signal_emit(THIS(user_data), + qti_ims_call_signals[SIGNAL_CALL_RING], 0); +} static const BinderExtCallInfo* const* @@ -425,6 +434,8 @@ qti_ims_call_new( qti_radio_ext_add_call_state_handler(radio_ext, qti_ims_call_handle_call_info, self); + qti_radio_ext_add_ring_handler(radio_ext, + qti_ims_call_handle_ring, self); return BINDER_EXT_CALL(self); } diff --git a/src/qti_radio_ext.c b/src/qti_radio_ext.c index 4fefea3..b3c858c 100644 --- a/src/qti_radio_ext.c +++ b/src/qti_radio_ext.c @@ -91,11 +91,13 @@ typedef struct qti_radio_ext_result_request { enum qti_radio_ext_signal { SIGNAL_IMS_REG_STATUS_CHANGED, SIGNAL_EXT_CALL_STATE_CHANGED, + SIGNAL_EXT_ON_RING, SIGNAL_COUNT }; #define SIGNAL_IMS_REG_STATUS_CHANGED_NAME "qti-radio-ext-ims-reg-status-changed" #define SIGNAL_EXT_CALL_STATE_CHANGED_NAME "qti-radio-ext-call-state-changed" +#define SIGNAL_EXT_ON_RING_NAME "qti-radio-ext-on-ring" static guint qti_radio_ext_signals[SIGNAL_COUNT] = { 0 }; @@ -461,10 +463,12 @@ qti_radio_ext_indication( case QTI_RADIO_IND_CALL_STATE_INDICATION: qti_radio_ext_handle_call_state_indication(self, &args); return NULL; + case QTI_RADIO_IND_RING_INDICATION: + g_signal_emit(self, qti_radio_ext_signals[SIGNAL_EXT_ON_RING], 0); + return NULL; } } - return NULL; } @@ -488,6 +492,16 @@ qti_radio_ext_add_call_state_handler( SIGNAL_EXT_CALL_STATE_CHANGED_NAME, G_CALLBACK(handler), user_data) : 0; } +gulong +qti_radio_ext_add_ring_handler( + QtiRadioExt* self, + QtiRadioExtRingFunc handler, + void* user_data) +{ + return (G_LIKELY(self) && G_LIKELY(handler)) ? g_signal_connect(self, + SIGNAL_EXT_ON_RING_NAME, G_CALLBACK(handler), user_data) : 0; +} + static GBinderLocalReply* qti_radio_ext_response( @@ -1142,6 +1156,10 @@ qti_radio_ext_class_init( g_signal_new(SIGNAL_EXT_CALL_STATE_CHANGED_NAME, G_OBJECT_CLASS_TYPE(klass), G_SIGNAL_RUN_FIRST, 0, NULL, NULL, NULL, G_TYPE_NONE, 1, G_TYPE_PTR_ARRAY); + qti_radio_ext_signals[SIGNAL_EXT_ON_RING] = + g_signal_new(SIGNAL_EXT_ON_RING_NAME, G_OBJECT_CLASS_TYPE(klass), + G_SIGNAL_RUN_FIRST, 0, NULL, NULL, NULL, G_TYPE_NONE, + 0); } /* diff --git a/src/qti_radio_ext.h b/src/qti_radio_ext.h index e282ca3..cfcb8bb 100644 --- a/src/qti_radio_ext.h +++ b/src/qti_radio_ext.h @@ -103,6 +103,12 @@ qti_radio_ext_add_call_state_handler( QtiRadioExtCallStateFunc handler, void* user_data); +gulong +qti_radio_ext_add_ring_handler( + QtiRadioExt* self, + QtiRadioExtRingFunc handler, + void* user_data); + #endif /* QTI_RADIO_EXT_H */ /*