static void qmi_device_new_ready (GObject *unused, GAsyncResult *res, PortOpenContext *ctx) { GError *error = NULL; QmiDeviceOpenFlags flags = (QMI_DEVICE_OPEN_FLAGS_VERSION_INFO | QMI_DEVICE_OPEN_FLAGS_PROXY); ctx->self->priv->qmi_device = qmi_device_new_finish (res, &error); if (!ctx->self->priv->qmi_device) { g_simple_async_result_take_error (ctx->result, error); port_open_context_complete_and_free (ctx); return; } if (ctx->set_data_format) flags |= (QMI_DEVICE_OPEN_FLAGS_NET_802_3 | QMI_DEVICE_OPEN_FLAGS_NET_NO_QOS_HEADER); /* Now open the QMI device */ qmi_device_open (ctx->self->priv->qmi_device, flags, 10, ctx->cancellable, (GAsyncReadyCallback)qmi_device_open_ready, ctx); }
int main(int argc, char **argv) { static struct qmi_dev dev; int ch; while ((ch = getopt_long(argc, argv, "d:k:", uqmi_getopt, NULL)) != -1) { int cmd_opt = CMD_OPT(ch); if (ch < 0 && cmd_opt >= 0 && cmd_opt < __UQMI_COMMAND_LAST) { uqmi_add_command(optarg, cmd_opt); continue; } switch(ch) { case 'r': release_client_id(&dev, optarg); break; case 'k': keep_client_id(&dev, optarg); break; case 'd': device = optarg; break; default: return usage(argv[0]); } } if (!device) { fprintf(stderr, "No device given\n"); return usage(argv[0]); } uloop_init(); signal(SIGINT, handle_exit_signal); signal(SIGTERM, handle_exit_signal); if (qmi_device_open(&dev, device)) { fprintf(stderr, "Failed to open device\n"); uloop_done(); return 2; } uqmi_run_commands(&dev); qmi_device_close(&dev); uloop_done(); return 0; }