Hi Yang,

> +static void phonesim_csim_envelope_cb(gboolean ok, GAtResult *result,
> +                             gpointer user_data)
> +{
> +     struct cb_data *cbd = user_data;
> +     GAtResultIter iter;
> +     ofono_stk_envelope_cb_t cb = cbd->cb;
> +     struct ofono_error error;
> +     const guint8 *response;
> +     gint rlen, len;
> +
> +     decode_at_error(&error, g_at_result_final_response(result));
> +
> +     if (!ok)
> +             goto error;
> +
> +     g_at_result_iter_init(&iter, result);
> +
> +     if (!g_at_result_iter_next(&iter, "+CSIM:"))
> +             goto error;
> +
> +     if (!g_at_result_iter_next_number(&iter, &rlen))
> +             goto error;
> +
> +     if (!g_at_result_iter_next_hexstring(&iter, &response, &len))
> +             goto error;
> +
> +     if (rlen != len * 2 || len < 2)
> +             goto error;
> +
> +     if (response[len - 2] != 0x90 && response[len - 2] != 0x91)
> +             goto error;
> +
> +     if (response[len - 2] == 0x90 && response[len - 1] != 0)
> +             goto error;
> +
> +     DBG("csim_envelope_cb: %i", len);
> +
> +     cb(&error, response, len - 2, cbd->data);
> +     return;
> +
> +error:
> +     CALLBACK_WITH_FAILURE(cb, NULL, 0, cbd->data);
> +}

Please note that Andrew recently introduced OFONO_ERROR_TYPE_SIM, so you
might want to follow the same conventions.  See drivers/atmodem/stk.c.

Regards,
-Denis
_______________________________________________
ofono mailing list
[email protected]
http://lists.ofono.org/listinfo/ofono

Reply via email to