X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=bindings%2Fcxx%2Finclude%2Flibsigrokcxx%2Flibsigrokcxx.hpp;h=b8cae54518aa302496a64162a11a05a482fc73a5;hb=a9ed2eb06953eb34fb019ae9a80e213c75790fab;hp=b82679ab4b9da9db9e3f70119c5174bd58e838b1;hpb=0cee3a3ea5d9808c000def569887e5f18b82df71;p=libsigrok.git diff --git a/bindings/cxx/include/libsigrokcxx/libsigrokcxx.hpp b/bindings/cxx/include/libsigrokcxx/libsigrokcxx.hpp index b82679ab..b8cae545 100644 --- a/bindings/cxx/include/libsigrokcxx/libsigrokcxx.hpp +++ b/bindings/cxx/include/libsigrokcxx/libsigrokcxx.hpp @@ -252,6 +252,8 @@ public: map > drivers(); /** Available input formats, indexed by name. */ map > input_formats(); + /** Lookup the responsible input module for an input file. */ + shared_ptr input_format_match(string filename); /** Available output formats, indexed by name. */ map > output_formats(); /** Current log level. */ @@ -283,8 +285,10 @@ public: /** Create an analog packet. */ shared_ptr create_analog_packet( vector > channels, - float *data_pointer, unsigned int num_samples, const Quantity *mq, + const float *data_pointer, unsigned int num_samples, const Quantity *mq, const Unit *unit, vector mqflags); + /** Create an end packet. */ + shared_ptr create_end_packet(); /** Load a saved session. * @param filename File name string. */ shared_ptr load_session(string filename); @@ -333,7 +337,7 @@ public: set config_capabilities(const ConfigKey *key) const; /** Check whether a configuration capability is supported for a given key. * @param key ConfigKey to check. - * @param capability Capability to check for. */ + * @param capability Capability to check for. */ bool config_check(const ConfigKey *key, const Capability *capability) const; protected: Configurable( @@ -758,6 +762,8 @@ private: const struct sr_datafeed_logic *_structure; friend class Packet; + friend class Analog; + friend struct std::default_delete; }; /** Payload of a datafeed packet with analog data */ @@ -768,6 +774,11 @@ class SR_API Analog : public: /** Pointer to data. */ void *data_pointer(); + /** + * Fills dest pointer with the analog data converted to float. + * The pointer must have space for num_samples() floats. + */ + void get_data_as_float(float *dest); /** Number of samples in this packet. */ unsigned int num_samples() const; /** Channels for which this packet contains data. */ @@ -798,6 +809,34 @@ public: const Unit *unit() const; /** Measurement flags associated with the samples in this packet. */ vector mq_flags() const; + /** + * Provides a Logic packet that contains a conversion of the analog + * data using a simple threshold. + * + * @param threshold Threshold to use. + * @param data_ptr Pointer to num_samples() bytes where the logic + * samples are stored. When nullptr, memory for + * logic->data_pointer() will be allocated and must + * be freed by the caller. + */ + shared_ptr get_logic_via_threshold(float threshold, + uint8_t *data_ptr=nullptr) const; + /** + * Provides a Logic packet that contains a conversion of the analog + * data using a Schmitt-Trigger. + * + * @param lo_thr Low threshold to use (anything below this is low). + * @param hi_thr High threshold to use (anything above this is high). + * @param state Points to a byte that contains the current state of the + * converter. For best results, set to value of logic + * sample n-1. + * @param data_ptr Pointer to num_samples() bytes where the logic + * samples are stored. When nullptr, memory for + * logic->data_pointer() will be allocated and must be + * freed by the caller. + */ + shared_ptr get_logic_via_schmitt_trigger(float lo_thr, + float hi_thr, uint8_t *state, uint8_t *data_ptr=nullptr) const; private: explicit Analog(const struct sr_datafeed_analog *structure); ~Analog(); @@ -840,7 +879,7 @@ public: /** Description of this input format. */ string description() const; /** A list of preferred file name extensions for this file format. - * @note This list is a recommendation only. */ + * @note This list is a recommendation only. */ vector extensions() const; /** Options supported by this input format. */ map > options(); @@ -912,6 +951,8 @@ public: Glib::VariantBase default_value() const; /** Possible values for this option, if a limited set. */ vector values() const; + /** Parse a string argument into the appropriate type for this option. */ + Glib::VariantBase parse_string(string value); private: Option(const struct sr_option *structure, shared_ptr structure_array); @@ -934,7 +975,7 @@ public: /** Description of this output format. */ string description() const; /** A list of preferred file name extensions for this file format. - * @note This list is a recommendation only. */ + * @note This list is a recommendation only. */ vector extensions() const; /** Options supported by this output format. */ map > options();