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);
}
Exemple #2
0
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;
}