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