return shared_ptr<Packet>(new Packet(nullptr, packet), Packet::Deleter());
}
-shared_ptr<Packet> Context::create_analog_packet(
+shared_ptr<Packet> Context::create_analog_old_packet(
vector<shared_ptr<Channel> > channels,
float *data_pointer, unsigned int num_samples, const Quantity *mq,
const Unit *unit, vector<const QuantityFlag *> 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;
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<Packet>(new Packet(nullptr, packet), Packet::Deleter());
}
_callback(device, packet);
}
-SourceCallbackData::SourceCallbackData(shared_ptr<EventSource> source) :
- _source(source)
-{
-}
-
-bool SourceCallbackData::run(int revents)
-{
- return _source->_callback((Glib::IOCondition) revents);
-}
-
-shared_ptr<EventSource> 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<EventSource>(result, EventSource::Deleter());
-}
-
-shared_ptr<EventSource> 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<EventSource>(result, EventSource::Deleter());
-}
-
-shared_ptr<EventSource> EventSource::create(Glib::RefPtr<Glib::IOChannel> 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<EventSource>(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)
for (auto callback : _datafeed_callbacks)
delete callback;
- for (auto entry : _source_callbacks)
- delete entry.second;
-
for (auto entry : _owned_devices)
delete entry.second;
}
_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<EventSource> 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<EventSource> 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<Trigger> Session::trigger()
{
return _trigger;
static_cast<const struct sr_datafeed_logic *>(
structure->payload));
break;
- case SR_DF_ANALOG:
- _payload = new Analog(
- static_cast<const struct sr_datafeed_analog *>(
+ case SR_DF_ANALOG_OLD:
+ _payload = new AnalogOld(
+ static_cast<const struct sr_datafeed_analog_old *>(
structure->payload));
break;
default:
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<PacketPayload> Analog::get_shared_pointer(Packet *_parent)
+shared_ptr<PacketPayload> AnalogOld::get_shared_pointer(Packet *_parent)
{
return static_pointer_cast<PacketPayload>(
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<shared_ptr<Channel>> Analog::channels()
+vector<shared_ptr<Channel>> AnalogOld::channels()
{
vector<shared_ptr<Channel>> result;
for (auto l = _structure->channels; l; l = l->next)
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<const QuantityFlag *> Analog::mq_flags()
+vector<const QuantityFlag *> AnalogOld::mq_flags()
{
return QuantityFlag::flags_from_mask(_structure->mqflags);
}