Added function TelldusMain::deviceInsertedOrRemoved()
This commit is contained in:
parent
ae5655abbe
commit
9d9fab6323
2 changed files with 30 additions and 1 deletions
|
@ -8,23 +8,40 @@
|
|||
#include <stdio.h>
|
||||
#include <list>
|
||||
|
||||
class DeviceEventData : public EventDataBase {
|
||||
public:
|
||||
int vid, pid;
|
||||
bool inserted;
|
||||
};
|
||||
|
||||
class TelldusMain::PrivateData {
|
||||
public:
|
||||
EventHandler eventHandler;
|
||||
Event *stopEvent;
|
||||
Event *stopEvent, *deviceChangeEvent;
|
||||
};
|
||||
|
||||
TelldusMain::TelldusMain(void)
|
||||
{
|
||||
d = new PrivateData;
|
||||
d->stopEvent = d->eventHandler.addEvent();
|
||||
d->deviceChangeEvent = d->eventHandler.addEvent();
|
||||
}
|
||||
|
||||
TelldusMain::~TelldusMain(void) {
|
||||
delete d->deviceChangeEvent;
|
||||
delete d->stopEvent;
|
||||
delete d;
|
||||
}
|
||||
|
||||
void TelldusMain::deviceInsertedOrRemoved(int vid, int pid, bool inserted) {
|
||||
DeviceEventData *data = new DeviceEventData;
|
||||
data->vid = vid;
|
||||
data->pid = pid;
|
||||
data->inserted = inserted;
|
||||
d->deviceChangeEvent->signal(data);
|
||||
}
|
||||
|
||||
|
||||
void TelldusMain::start(void) {
|
||||
Event *clientEvent = d->eventHandler.addEvent();
|
||||
|
||||
|
@ -53,6 +70,15 @@ void TelldusMain::start(void) {
|
|||
delete eventData;
|
||||
}
|
||||
|
||||
if (d->deviceChangeEvent->isSignaled()) {
|
||||
EventData *eventData = d->deviceChangeEvent->takeSignal();
|
||||
DeviceEventData *data = reinterpret_cast<DeviceEventData*>(eventData);
|
||||
if (data) {
|
||||
controllerManager.deviceInsertedOrRemoved(data->vid, data->pid, data->inserted);
|
||||
}
|
||||
delete eventData;
|
||||
}
|
||||
|
||||
|
||||
for ( std::list<ClientCommunicationHandler *>::iterator it = clientCommunicationHandlerList.begin(); it != clientCommunicationHandlerList.end(); ){
|
||||
if ((*it)->isDone()){
|
||||
|
|
|
@ -10,6 +10,9 @@ public:
|
|||
void start();
|
||||
void stop();
|
||||
|
||||
//Thread safe!
|
||||
void deviceInsertedOrRemoved(int vid, int pid, bool inserted);
|
||||
|
||||
private:
|
||||
class PrivateData;
|
||||
PrivateData *d;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue