diff options
author | Aleksander Morgado <aleksandermj@chromium.org> | 2024-04-04 07:46:23 +0000 |
---|---|---|
committer | Aleksander Morgado <aleksander@aleksander.es> | 2024-04-10 08:41:31 +0000 |
commit | b855dca7f73fcef4bc63def2b8e57707176752ed (patch) | |
tree | 98ee1bf0248b278b4aa25cc70474d5c369996d5e /src/mm-base-sms.c | |
parent | d3a2aebf16ac4a5cd3c57ee6077e68d1f9e552bd (diff) |
base-sms: refactor send/store/delete implementations
No functional change.
Diffstat (limited to 'src/mm-base-sms.c')
-rw-r--r-- | src/mm-base-sms.c | 210 |
1 files changed, 99 insertions, 111 deletions
diff --git a/src/mm-base-sms.c b/src/mm-base-sms.c index c8e84c21..fdf725ae 100644 --- a/src/mm-base-sms.c +++ b/src/mm-base-sms.c @@ -803,10 +803,10 @@ sms_get_store_or_send_command (MMBaseSms *self, mm_sms_part_get_number (part)); *out_msg_data = g_strdup_printf ("%s\x1a", mm_sms_part_get_text (part)); } else { - guint8 *pdu; - guint pdulen = 0; - guint msgstart = 0; - gchar *hex; + g_autofree gchar *hex = NULL; + g_autofree guint8 *pdu = NULL; + guint pdulen = 0; + guint msgstart = 0; /* AT+CMGW=<length>[, <stat>]<CR> PDU can be entered. <CTRL-Z>/<ESC> */ @@ -817,8 +817,6 @@ sms_get_store_or_send_command (MMBaseSms *self, /* Convert PDU to hex */ hex = mm_utils_bin2hexstr (pdu, pdulen); - g_free (pdu); - if (!hex) { g_set_error (error, MM_CORE_ERROR, @@ -832,7 +830,6 @@ sms_get_store_or_send_command (MMBaseSms *self, store_or_send ? 'S' : 'W', pdulen - msgstart); *out_msg_data = g_strdup_printf ("%s\x1a", hex); - g_free (hex); } return TRUE; @@ -842,12 +839,12 @@ sms_get_store_or_send_command (MMBaseSms *self, /* Store the SMS */ typedef struct { - MMBaseModem *modem; - MMSmsStorage storage; - gboolean need_unlock; - gboolean use_pdu_mode; - GList *current; - gchar *msg_data; + MMBaseModem *modem; + MMSmsStorage storage; + gboolean need_unlock; + gboolean use_pdu_mode; + GList *current; + gchar *msg_data; } SmsStoreContext; static void @@ -858,13 +855,13 @@ sms_store_context_free (SmsStoreContext *ctx) mm_broadband_modem_unlock_sms_storages (MM_BROADBAND_MODEM (ctx->modem), FALSE, TRUE); g_object_unref (ctx->modem); g_free (ctx->msg_data); - g_free (ctx); + g_slice_free (SmsStoreContext, ctx); } static gboolean -sms_store_finish (MMBaseSms *self, - GAsyncResult *res, - GError **error) +sms_store_finish (MMBaseSms *self, + GAsyncResult *res, + GError **error) { return g_task_propagate_boolean (G_TASK (res), error); } @@ -872,15 +869,15 @@ sms_store_finish (MMBaseSms *self, static void sms_store_next_part (GTask *task); static void -store_msg_data_ready (MMBaseModem *modem, +store_msg_data_ready (MMBaseModem *modem, GAsyncResult *res, - GTask *task) + GTask *task) { SmsStoreContext *ctx; - const gchar *response; - GError *error = NULL; - gint rv; - gint idx; + const gchar *response; + GError *error = NULL; + gint rv; + gint idx; response = mm_base_modem_at_command_finish (modem, res, &error); if (error) { @@ -912,12 +909,12 @@ store_msg_data_ready (MMBaseModem *modem, } static void -store_ready (MMBaseModem *modem, +store_ready (MMBaseModem *modem, GAsyncResult *res, - GTask *task) + GTask *task) { SmsStoreContext *ctx; - GError *error = NULL; + GError *error = NULL; mm_base_modem_at_command_finish (modem, res, &error); if (error) { @@ -944,10 +941,10 @@ store_ready (MMBaseModem *modem, static void sms_store_next_part (GTask *task) { - MMBaseSms *self; - SmsStoreContext *ctx; - gchar *cmd; - GError *error = NULL; + MMBaseSms *self; + SmsStoreContext *ctx; + GError *error = NULL; + g_autofree gchar *cmd = NULL; self = g_task_get_source_object (task); ctx = g_task_get_task_data (task); @@ -982,17 +979,16 @@ sms_store_next_part (GTask *task) FALSE, (GAsyncReadyCallback)store_ready, task); - g_free (cmd); } static void store_lock_sms_storages_ready (MMBroadbandModem *modem, - GAsyncResult *res, - GTask *task) + GAsyncResult *res, + GTask *task) { - MMBaseSms *self; + MMBaseSms *self; SmsStoreContext *ctx; - GError *error = NULL; + GError *error = NULL; if (!mm_broadband_modem_lock_sms_storages_finish (modem, res, &error)) { g_task_return_error (task, error); @@ -1013,16 +1009,16 @@ store_lock_sms_storages_ready (MMBroadbandModem *modem, } static void -sms_store (MMBaseSms *self, - MMSmsStorage storage, - GAsyncReadyCallback callback, - gpointer user_data) +sms_store (MMBaseSms *self, + MMSmsStorage storage, + GAsyncReadyCallback callback, + gpointer user_data) { SmsStoreContext *ctx; - GTask *task; + GTask *task; /* Setup the context */ - ctx = g_new0 (SmsStoreContext, 1); + ctx = g_slice_new0 (SmsStoreContext); ctx->modem = g_object_ref (self->priv->modem); ctx->storage = storage; @@ -1049,11 +1045,11 @@ sms_store (MMBaseSms *self, typedef struct { MMBaseModem *modem; - gboolean need_unlock; - gboolean from_storage; - gboolean use_pdu_mode; - GList *current; - gchar *msg_data; + gboolean need_unlock; + gboolean from_storage; + gboolean use_pdu_mode; + GList *current; + gchar *msg_data; } SmsSendContext; static void @@ -1064,13 +1060,13 @@ sms_send_context_free (SmsSendContext *ctx) mm_broadband_modem_unlock_sms_storages (MM_BROADBAND_MODEM (ctx->modem), FALSE, TRUE); g_object_unref (ctx->modem); g_free (ctx->msg_data); - g_free (ctx); + g_slice_free (SmsSendContext, ctx); } static gboolean -sms_send_finish (MMBaseSms *self, - GAsyncResult *res, - GError **error) +sms_send_finish (MMBaseSms *self, + GAsyncResult *res, + GError **error) { return g_task_propagate_boolean (G_TASK (res), error); } @@ -1078,8 +1074,8 @@ sms_send_finish (MMBaseSms *self, static void sms_send_next_part (GTask *task); static gint -read_message_reference_from_reply (const gchar *response, - GError **error) +read_message_reference_from_reply (const gchar *response, + GError **error) { gint rv = 0; gint idx = -1; @@ -1103,14 +1099,14 @@ read_message_reference_from_reply (const gchar *response, } static void -send_generic_msg_data_ready (MMBaseModem *modem, +send_generic_msg_data_ready (MMBaseModem *modem, GAsyncResult *res, - GTask *task) + GTask *task) { SmsSendContext *ctx; - GError *error = NULL; - const gchar *response; - gint message_reference; + GError *error = NULL; + const gchar *response; + gint message_reference; response = mm_base_modem_at_command_finish (modem, res, &error); if (error) { @@ -1136,12 +1132,12 @@ send_generic_msg_data_ready (MMBaseModem *modem, } static void -send_generic_ready (MMBaseModem *modem, +send_generic_ready (MMBaseModem *modem, GAsyncResult *res, - GTask *task) + GTask *task) { SmsSendContext *ctx; - GError *error = NULL; + GError *error = NULL; mm_base_modem_at_command_finish (modem, res, &error); if (error) { @@ -1166,15 +1162,15 @@ send_generic_ready (MMBaseModem *modem, } static void -send_from_storage_ready (MMBaseModem *modem, +send_from_storage_ready (MMBaseModem *modem, GAsyncResult *res, - GTask *task) + GTask *task) { - MMBaseSms *self; + MMBaseSms *self; SmsSendContext *ctx; - GError *error = NULL; - const gchar *response; - gint message_reference; + GError *error = NULL; + const gchar *response; + gint message_reference; self = g_task_get_source_object (task); ctx = g_task_get_task_data (task); @@ -1212,10 +1208,10 @@ send_from_storage_ready (MMBaseModem *modem, static void sms_send_next_part (GTask *task) { - MMBaseSms *self; - SmsSendContext *ctx; - GError *error = NULL; - gchar *cmd; + MMBaseSms *self; + SmsSendContext *ctx; + GError *error = NULL; + g_autofree gchar *cmd = NULL; self = g_task_get_source_object (task); ctx = g_task_get_task_data (task); @@ -1229,15 +1225,13 @@ sms_send_next_part (GTask *task) /* Send from storage */ if (ctx->from_storage) { - cmd = g_strdup_printf ("+CMSS=%d", - mm_sms_part_get_index ((MMSmsPart *)ctx->current->data)); + cmd = g_strdup_printf ("+CMSS=%d", mm_sms_part_get_index ((MMSmsPart *)ctx->current->data)); mm_base_modem_at_command (ctx->modem, cmd, MM_BASE_SMS_DEFAULT_SEND_TIMEOUT, FALSE, (GAsyncReadyCallback)send_from_storage_ready, task); - g_free (cmd); return; } @@ -1267,17 +1261,16 @@ sms_send_next_part (GTask *task) FALSE, (GAsyncReadyCallback)send_generic_ready, task); - g_free (cmd); } static void send_lock_sms_storages_ready (MMBroadbandModem *modem, - GAsyncResult *res, - GTask *task) + GAsyncResult *res, + GTask *task) { - MMBaseSms *self; + MMBaseSms *self; SmsSendContext *ctx; - GError *error = NULL; + GError *error = NULL; if (!mm_broadband_modem_lock_sms_storages_finish (modem, res, &error)) { g_task_return_error (task, error); @@ -1298,15 +1291,15 @@ send_lock_sms_storages_ready (MMBroadbandModem *modem, } static void -sms_send (MMBaseSms *self, - GAsyncReadyCallback callback, - gpointer user_data) +sms_send (MMBaseSms *self, + GAsyncReadyCallback callback, + gpointer user_data) { SmsSendContext *ctx; - GTask *task; + GTask *task; /* Setup the context */ - ctx = g_new0 (SmsSendContext, 1); + ctx = g_slice_new0 (SmsSendContext); ctx->modem = g_object_ref (self->priv->modem); task = g_task_new (self, NULL, callback, user_data); @@ -1338,9 +1331,9 @@ sms_send (MMBaseSms *self, typedef struct { MMBaseModem *modem; - gboolean need_unlock; - GList *current; - guint n_failed; + gboolean need_unlock; + GList *current; + guint n_failed; } SmsDeletePartsContext; static void @@ -1350,13 +1343,13 @@ sms_delete_parts_context_free (SmsDeletePartsContext *ctx) if (ctx->need_unlock) mm_broadband_modem_unlock_sms_storages (MM_BROADBAND_MODEM (ctx->modem), TRUE, FALSE); g_object_unref (ctx->modem); - g_free (ctx); + g_slice_free (SmsDeletePartsContext, ctx); } static gboolean -sms_delete_finish (MMBaseSms *self, - GAsyncResult *res, - GError **error) +sms_delete_finish (MMBaseSms *self, + GAsyncResult *res, + GError **error) { return g_task_propagate_boolean (G_TASK (res), error); } @@ -1364,13 +1357,13 @@ sms_delete_finish (MMBaseSms *self, static void delete_next_part (GTask *task); static void -delete_part_ready (MMBaseModem *modem, +delete_part_ready (MMBaseModem *modem, GAsyncResult *res, - GTask *task) + GTask *task) { - MMBaseSms *self; + MMBaseSms *self; SmsDeletePartsContext *ctx; - GError *error = NULL; + g_autoptr(GError) error = NULL; self = g_task_get_source_object (task); ctx = g_task_get_task_data (task); @@ -1381,7 +1374,6 @@ delete_part_ready (MMBaseModem *modem, mm_obj_dbg (self, "couldn't delete SMS part with index %u: %s", mm_sms_part_get_index ((MMSmsPart *)ctx->current->data), error->message); - g_error_free (error); } /* We reset the index, as there is no longer that part */ @@ -1395,13 +1387,12 @@ static void delete_next_part (GTask *task) { SmsDeletePartsContext *ctx; - gchar *cmd; + g_autofree gchar *cmd = NULL; ctx = g_task_get_task_data (task); /* Skip non-stored parts */ - while (ctx->current && - mm_sms_part_get_index ((MMSmsPart *)ctx->current->data) == SMS_PART_INVALID_INDEX) + while (ctx->current && (mm_sms_part_get_index ((MMSmsPart *)ctx->current->data) == SMS_PART_INVALID_INDEX)) ctx->current = g_list_next (ctx->current); /* If all removed, we're done */ @@ -1414,30 +1405,27 @@ delete_next_part (GTask *task) ctx->n_failed); else g_task_return_boolean (task, TRUE); - g_object_unref (task); return; } - cmd = g_strdup_printf ("+CMGD=%d", - mm_sms_part_get_index ((MMSmsPart *)ctx->current->data)); + cmd = g_strdup_printf ("+CMGD=%d", mm_sms_part_get_index ((MMSmsPart *)ctx->current->data)); mm_base_modem_at_command (ctx->modem, cmd, 10, FALSE, (GAsyncReadyCallback)delete_part_ready, task); - g_free (cmd); } static void delete_lock_sms_storages_ready (MMBroadbandModem *modem, - GAsyncResult *res, - GTask *task) + GAsyncResult *res, + GTask *task) { - MMBaseSms *self; + MMBaseSms *self; SmsDeletePartsContext *ctx; - GError *error = NULL; + GError *error = NULL; if (!mm_broadband_modem_lock_sms_storages_finish (modem, res, &error)) { g_task_return_error (task, error); @@ -1458,14 +1446,14 @@ delete_lock_sms_storages_ready (MMBroadbandModem *modem, } static void -sms_delete (MMBaseSms *self, - GAsyncReadyCallback callback, - gpointer user_data) +sms_delete (MMBaseSms *self, + GAsyncReadyCallback callback, + gpointer user_data) { SmsDeletePartsContext *ctx; - GTask *task; + GTask *task; - ctx = g_new0 (SmsDeletePartsContext, 1); + ctx = g_slice_new0 (SmsDeletePartsContext); ctx->modem = g_object_ref (self->priv->modem); task = g_task_new (self, NULL, callback, user_data); |