X-Git-Url: https://sigrok.org/gitweb/?p=libsigrok.git;a=blobdiff_plain;f=bindings%2Fcxx%2Fclasses.cpp;h=a0b161a62a35aee683894cfe87b0b8c521d8d42a;hp=c17a2ee524efad9ebcd62e7006eeeedc41829bc5;hb=6ad2fbaad2722f0aa18c3600cdbdddf812784b2d;hpb=895cbcdd3cc420342f6c293a2713be0b808397c1 diff --git a/bindings/cxx/classes.cpp b/bindings/cxx/classes.cpp index c17a2ee5..a0b161a6 100644 --- a/bindings/cxx/classes.cpp +++ b/bindings/cxx/classes.cpp @@ -1287,6 +1287,48 @@ vector Analog::mq_flags() const return QuantityFlag::flags_from_mask(_structure->meaning->mqflags); } +shared_ptr Analog::get_logic_via_threshold(float threshold, + uint8_t *data_ptr) const +{ + auto datafeed = g_new(struct sr_datafeed_logic, 1); + datafeed->length = num_samples(); + datafeed->unitsize = 1; + + if (data_ptr) + datafeed->data = data_ptr; + else + datafeed->data = g_malloc(datafeed->length); + + shared_ptr logic = + shared_ptr{new Logic{datafeed}, default_delete{}}; + + check(sr_a2l_threshold(_structure, threshold, + (uint8_t*)datafeed->data, datafeed->length)); + + return logic; +} + +shared_ptr Analog::get_logic_via_schmitt_trigger(float lo_thr, + float hi_thr, uint8_t *state, uint8_t *data_ptr) const +{ + auto datafeed = g_new(struct sr_datafeed_logic, 1); + datafeed->length = num_samples(); + datafeed->unitsize = 1; + + if (data_ptr) + datafeed->data = data_ptr; + else + datafeed->data = g_malloc(datafeed->length); + + shared_ptr logic = + shared_ptr{new Logic{datafeed}, default_delete{}}; + + check(sr_a2l_schmitt_trigger(_structure, lo_thr, hi_thr, state, + (uint8_t*)datafeed->data, datafeed->length)); + + return logic; +} + Rational::Rational(const struct sr_rational *structure) : _structure(structure) {