#ifndef PULSEVIEW_PV_PROP_BINDING_DEVICEOPTIONS_H
#define PULSEVIEW_PV_PROP_BINDING_DEVICEOPTIONS_H
+#include <boost/function.hpp>
+#include <boost/optional.hpp>
+
#include <QString>
-extern "C" {
#include <libsigrok/libsigrok.h>
-}
#include "binding.h"
DeviceOptions(struct sr_dev_inst *sdi);
private:
- void expose_enum(const struct sr_config_info *info,
- const std::vector<std::pair<const void*, QString> > &values,
- int opt);
- void bind_stropt(const struct sr_config_info *info, int key);
+ static GVariant* config_getter(
+ const struct sr_dev_inst *sdi, int key);
+ static void config_setter(
+ const struct sr_dev_inst *sdi, int key, GVariant* value);
+
+ void bind_bool(const QString &name, int key);
+ void bind_enum(const QString &name, int key,
+ GVariant *const gvar_list,
+ boost::function<QString (GVariant*)> printer = print_gvariant);
+ void bind_int(const QString &name, int key, QString suffix,
+ boost::optional< std::pair<int64_t, int64_t> > range);
+
+ static QString print_gvariant(GVariant *const gvar);
- void bind_buffer_size(const struct sr_config_info *info);
- void bind_time_base(const struct sr_config_info *info);
- void bind_vdiv(const struct sr_config_info *info);
+ static QString print_timebase(GVariant *const gvar);
+ static QString print_vdiv(GVariant *const gvar);
+ static QString print_voltage_threshold(GVariant *const gvar);
protected:
- const struct sr_dev_inst *_sdi;
+ struct sr_dev_inst *const _sdi;
};
} // binding