/*
- * This file is part of the sigrok project.
+ * This file is part of the sigrok-qt project.
*
- * Copyright (C) 2010 Uwe Hermann <uwe@hermann-uwe.de>
+ * Copyright (C) 2010-2012 Uwe Hermann <uwe@hermann-uwe.de>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
extern "C" {
#include <sigrokdecode.h> /* First, so we avoid a _POSIX_C_SOURCE warning. */
#include <stdint.h>
-#include <sigrok.h>
+#include <libsigrok/libsigrok.h>
}
#include <iostream>
QString locale = QLocale::system().name();
QApplication a(argc, argv);
QTranslator translator;
+ struct sr_context *sr_ctx;
+ sr_dev_driver **drivers;
+ int ret;
translator.load(QString("locale/sigrok-qt_") + locale);
a.installTranslator(&translator);
qDebug() << "The Qt GUI is not yet usable, aborting.";
// return 1;
- if (sr_init() != SR_OK) {
- qDebug() << "ERROR: libsigrok init failed.";
+ if ((ret = sr_init(&sr_ctx)) != SR_OK) {
+ qDebug() << "ERROR: libsigrok init failed (%s): %s."
+ << sr_strerror_name(ret), sr_strerror(ret);
return 1;
}
qDebug() << "libsigrok initialized successfully.";
+ /* Initialize all libsigrok drivers. */
+ drivers = sr_driver_list();
+ for (int i = 0; drivers[i]; ++i) {
+ if (sr_driver_init(sr_ctx, drivers[i]) != SR_OK) {
+ qDebug("Failed to initialize driver '%s'.",
+ drivers[i]->name);
+ return 1;
+ }
+ }
+
if (srd_init(NULL) != SRD_OK) {
qDebug() << "ERROR: libsigrokdecode init failed.";
return 1;
*/
srd_decoder_load_all();
- return a.exec();
+ /* Run the application. */
+ ret = a.exec();
+
+ /* Shutdown libsigrok. */
+ if ((ret = sr_exit(sr_ctx)) != SR_OK) {
+ qDebug() << "ERROR: libsigrok shutdown failed (%s): %s."
+ << sr_strerror_name(ret), sr_strerror(ret);
+ }
+ qDebug() << "libsigrok shutdown was successful.";
+
+ /* Shutdown libsigrokdecode. */
+ if ((ret = srd_exit()) != SRD_OK) {
+ qDebug() << "ERROR: libsigrokdecode shutdown failed: %d.";
+ }
+ qDebug() << "libsigrokdecode shutdown was successful.";
+
+ return ret;
}