Device::Device(struct sr_dev_inst *structure) :
Configurable(structure->driver, structure, NULL),
- StructureWrapper<Context, struct sr_dev_inst>(structure)
+ structure(structure)
{
for (GSList *entry = structure->channels; entry; entry = entry->next)
{
}
HardwareDevice::HardwareDevice(Driver *driver, struct sr_dev_inst *structure) :
+ StructureWrapper(structure),
Device(structure),
driver(driver)
{
}
return static_pointer_cast<InputDevice>(
- device->get_shared_pointer(context->shared_from_this()));
+ device->get_shared_pointer(shared_from_this()));
}
void Input::send(string data)
check(sr_input_free(structure));
}
-InputDevice::InputDevice(shared_ptr<Input> input, struct sr_dev_inst *sdi) :
- Device(sdi),
+InputDevice::InputDevice(shared_ptr<Input> input,
+ struct sr_dev_inst *structure) :
+ StructureWrapper(structure),
+ Device(structure),
input(input)
{
}
/** A generic device, either hardware or virtual */
class SR_API Device :
- public Configurable,
- public StructureWrapper<Context, struct sr_dev_inst>
+ public enable_shared_from_this<Device>,
+ public Configurable
{
public:
/** Description identifying this device. */
Device(struct sr_dev_inst *structure);
~Device();
shared_ptr<Channel> get_channel(struct sr_channel *ptr);
+ struct sr_dev_inst *structure;
map<struct sr_channel *, Channel *> channels;
map<string, ChannelGroup *> channel_groups;
/** Deleter needed to allow shared_ptr use with protected destructor. */
};
/** A real hardware device, connected via a driver */
-class SR_API HardwareDevice : public Device
+class SR_API HardwareDevice :
+ public StructureWrapper<Context, struct sr_dev_inst>,
+ public Device
{
public:
/** Driver providing this device. */
};
/** A virtual device associated with an input */
-class SR_API InputDevice : public Device
+class SR_API InputDevice :
+ public StructureWrapper<Input, struct sr_dev_inst>,
+ public Device
{
protected:
InputDevice(shared_ptr<Input> input, struct sr_dev_inst *sdi);