return 0;
}
+static void __callmgr_telephony_recover_call(callmgr_telephony_t telephony_handle)
+{
+ dbg("__callmgr_telephony_recover_call");
+ CM_RETURN_IF_FAIL(telephony_handle);
+
+ __callmgr_telephony_get_all_call_list(telephony_handle);
+
+ cm_telephony_call_data_t *call = NULL;
+ _callmgr_telephony_get_call_by_state(telephony_handle, CM_TEL_CALL_STATE_INCOMING, &call);
+ if (call) {
+ dbg("recover incoming call");
+ telephony_handle->cb_fn(CM_TELEPHONY_EVENT_INCOMING, (void *)call, telephony_handle->user_data);
+ return;
+ }
+
+ _callmgr_telephony_get_call_by_state(telephony_handle, CM_TEL_CALL_STATE_DIALING, &call);
+ if (call) {
+ dbg("recover dialing call");
+ telephony_handle->cb_fn(CM_TELEPHONY_EVENT_DIALING, (void *)call->call_id, telephony_handle->user_data);
+ return;
+ }
+
+ _callmgr_telephony_get_call_by_state(telephony_handle, CM_TEL_CALL_STATE_ALERT, &call);
+ if (call) {
+ dbg("recover alerting call");
+ telephony_handle->cb_fn(CM_TELEPHONY_EVENT_DIALING, (void *)call->call_id, telephony_handle->user_data);
+ telephony_handle->cb_fn(CM_TELEPHONY_EVENT_ALERT, (void *)call->call_id, telephony_handle->user_data);
+ return;
+ }
+
+ _callmgr_telephony_get_call_by_state(telephony_handle, CM_TEL_CALL_STATE_ACTIVE, &call);
+ if (call) {
+ dbg("recover active call");
+ telephony_handle->cb_fn(CM_TELEPHONY_EVENT_ACTIVE, (void *)call->call_id, telephony_handle->user_data);
+ return;
+ }
+
+ _callmgr_telephony_get_call_by_state(telephony_handle, CM_TEL_CALL_STATE_HELD, &call);
+ if (call) {
+ dbg("recover held call");
+ telephony_handle->cb_fn(CM_TELEPHONY_EVENT_HELD, (void *)call->call_id, telephony_handle->user_data);
+ return;
+ }
+
+ err("No call data to recover");
+}
+
static int __callmgr_telephony_init(callmgr_telephony_t telephony_handle)
{
CM_RETURN_VAL_IF_FAIL(telephony_handle, -1);
telephony_handle->active_sim_slot = CM_TELEPHONY_SIM_1;
}
+ __callmgr_telephony_recover_call(telephony_handle);
return 0;
}