GAtChat *chat;
unsigned int vendor;
guint ready_id;
- guint ready_source;
};
static const char *crsm_prefix[] = { "+CRSM:", NULL };
CALLBACK_WITH_FAILURE(cb, -1, data);
}
-static gboolean ready_notify_unregister(gpointer user_data)
-{
- struct sim_data *sd = user_data;
-
- sd->ready_source = 0;
-
- g_at_chat_unregister(sd->chat, sd->ready_id);
- sd->ready_id = 0;
-
- return FALSE;
-}
-
static void at_xsim_notify(GAtResult *result, gpointer user_data)
{
struct cb_data *cbd = user_data;
GAtResultIter iter;
int state;
- if (sd->ready_source > 0)
- return;
-
g_at_result_iter_init(&iter, result);
if (!g_at_result_iter_next(&iter, "+XSIM:"))
cb(&error, cbd->data);
- sd->ready_source = g_timeout_add(0, ready_notify_unregister, sd);
+ g_at_chat_unregister(sd->chat, sd->ready_id);
+ sd->ready_id = 0;
}
static void at_epev_notify(GAtResult *result, gpointer user_data)
ofono_sim_lock_unlock_cb_t cb = cbd->cb;
struct ofono_error error = { .type = OFONO_ERROR_TYPE_NO_ERROR };
- if (sd->ready_source > 0)
- return;
-
cb(&error, cbd->data);
- sd->ready_source = g_timeout_add(0, ready_notify_unregister, sd);
+ g_at_chat_unregister(sd->chat, sd->ready_id);
+ sd->ready_id = 0;
}
static void at_pin_send_cb(gboolean ok, GAtResult *result,
ofono_sim_set_data(sim, NULL);
- if (sd->ready_source > 0)
- g_source_remove(sd->ready_source);
-
g_at_chat_unref(sd->chat);
g_free(sd);
}