X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=bindings%2Fcxx%2Fclasses.cpp;h=3e441f72252c2e4a34ebe30c303cd7a0e4b07a1c;hb=5faebab2903dc91949edc31f0a4b118d86090a30;hp=f40a6dc571d27aebf124427cf62cf6763096aea4;hpb=f91cf612dfde284c8a146417644fbfba05cca1a2;p=libsigrok.git diff --git a/bindings/cxx/classes.cpp b/bindings/cxx/classes.cpp index f40a6dc5..3e441f72 100644 --- a/bindings/cxx/classes.cpp +++ b/bindings/cxx/classes.cpp @@ -319,12 +319,12 @@ shared_ptr Context::create_logic_packet( return shared_ptr(new Packet(nullptr, packet), Packet::Deleter()); } -shared_ptr Context::create_analog_packet( +shared_ptr Context::create_analog_old_packet( vector > channels, float *data_pointer, unsigned int num_samples, const Quantity *mq, const Unit *unit, vector mqflags) { - auto analog = g_new0(struct sr_datafeed_analog, 1); + auto analog = g_new0(struct sr_datafeed_analog_old, 1); for (auto channel : channels) analog->channels = g_slist_append(analog->channels, channel->_structure); analog->num_samples = num_samples; @@ -333,7 +333,7 @@ shared_ptr Context::create_analog_packet( analog->mqflags = QuantityFlag::mask_from_flags(mqflags); analog->data = data_pointer; auto packet = g_new(struct sr_datafeed_packet, 1); - packet->type = SR_DF_ANALOG; + packet->type = SR_DF_ANALOG_OLD; packet->payload = analog; return shared_ptr(new Packet(nullptr, packet), Packet::Deleter()); } @@ -872,55 +872,6 @@ void DatafeedCallbackData::run(const struct sr_dev_inst *sdi, _callback(device, packet); } -SourceCallbackData::SourceCallbackData(shared_ptr source) : - _source(source) -{ -} - -bool SourceCallbackData::run(int revents) -{ - return _source->_callback((Glib::IOCondition) revents); -} - -shared_ptr EventSource::create(int fd, Glib::IOCondition events, - int timeout, SourceCallbackFunction callback) -{ - auto result = new EventSource(timeout, callback); - result->_type = EventSource::SOURCE_FD; - result->_fd = fd; - result->_events = events; - return shared_ptr(result, EventSource::Deleter()); -} - -shared_ptr EventSource::create(Glib::PollFD pollfd, int timeout, - SourceCallbackFunction callback) -{ - auto result = new EventSource(timeout, callback); - result->_type = EventSource::SOURCE_POLLFD; - result->_pollfd = pollfd; - return shared_ptr(result, EventSource::Deleter()); -} - -shared_ptr EventSource::create(Glib::RefPtr channel, - Glib::IOCondition events, int timeout, SourceCallbackFunction callback) -{ - auto result = new EventSource(timeout, callback); - result->_type = EventSource::SOURCE_IOCHANNEL; - result->_channel = channel; - result->_events = events; - return shared_ptr(result, EventSource::Deleter()); -} - -EventSource::EventSource(int timeout, SourceCallbackFunction callback) : - _timeout(timeout), - _callback(callback) -{ -} - -EventSource::~EventSource() -{ -} - SessionDevice::SessionDevice(struct sr_dev_inst *structure) : ParentOwned(structure), Device(structure) @@ -967,9 +918,6 @@ Session::~Session() for (auto callback : _datafeed_callbacks) delete callback; - for (auto entry : _source_callbacks) - delete entry.second; - for (auto entry : _owned_devices) delete entry.second; } @@ -1073,66 +1021,6 @@ void Session::remove_datafeed_callbacks(void) _datafeed_callbacks.clear(); } -static int source_callback(int fd, int revents, void *cb_data) -{ - (void) fd; - auto callback = (SourceCallbackData *) cb_data; - return callback->run(revents); -} - -void Session::add_source(shared_ptr source) -{ - if (_source_callbacks.count(source) == 1) - throw Error(SR_ERR_ARG); - - auto cb_data = new SourceCallbackData(source); - - switch (source->_type) - { - case EventSource::SOURCE_FD: - check(sr_session_source_add(_structure, source->_fd, source->_events, - source->_timeout, source_callback, cb_data)); - break; - case EventSource::SOURCE_POLLFD: - check(sr_session_source_add_pollfd(_structure, - source->_pollfd.gobj(), source->_timeout, source_callback, - cb_data)); - break; - case EventSource::SOURCE_IOCHANNEL: - check(sr_session_source_add_channel(_structure, - source->_channel->gobj(), source->_events, source->_timeout, - source_callback, cb_data)); - break; - } - - _source_callbacks[source] = cb_data; -} - -void Session::remove_source(shared_ptr source) -{ - if (_source_callbacks.count(source) == 0) - throw Error(SR_ERR_ARG); - - switch (source->_type) - { - case EventSource::SOURCE_FD: - check(sr_session_source_remove(_structure, source->_fd)); - break; - case EventSource::SOURCE_POLLFD: - check(sr_session_source_remove_pollfd(_structure, - source->_pollfd.gobj())); - break; - case EventSource::SOURCE_IOCHANNEL: - check(sr_session_source_remove_channel(_structure, - source->_channel->gobj())); - break; - } - - delete _source_callbacks[source]; - - _source_callbacks.erase(source); -} - shared_ptr Session::trigger() { return _trigger; @@ -1180,9 +1068,9 @@ Packet::Packet(shared_ptr device, static_cast( structure->payload)); break; - case SR_DF_ANALOG: - _payload = new Analog( - static_cast( + case SR_DF_ANALOG_OLD: + _payload = new AnalogOld( + static_cast( structure->payload)); break; default: @@ -1304,33 +1192,33 @@ unsigned int Logic::unit_size() return _structure->unitsize; } -Analog::Analog(const struct sr_datafeed_analog *structure) : +AnalogOld::AnalogOld(const struct sr_datafeed_analog_old *structure) : ParentOwned(structure), PacketPayload() { } -Analog::~Analog() +AnalogOld::~AnalogOld() { } -shared_ptr Analog::get_shared_pointer(Packet *_parent) +shared_ptr AnalogOld::get_shared_pointer(Packet *_parent) { return static_pointer_cast( ParentOwned::get_shared_pointer(_parent)); } -float *Analog::data_pointer() +float *AnalogOld::data_pointer() { return _structure->data; } -unsigned int Analog::num_samples() +unsigned int AnalogOld::num_samples() { return _structure->num_samples; } -vector> Analog::channels() +vector> AnalogOld::channels() { vector> result; for (auto l = _structure->channels; l; l = l->next) @@ -1339,17 +1227,17 @@ vector> Analog::channels() return result; } -const Quantity *Analog::mq() +const Quantity *AnalogOld::mq() { return Quantity::get(_structure->mq); } -const Unit *Analog::unit() +const Unit *AnalogOld::unit() { return Unit::get(_structure->unit); } -vector Analog::mq_flags() +vector AnalogOld::mq_flags() { return QuantityFlag::flags_from_mask(_structure->mqflags); }