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 <stdio.h>
|
||||||
#include <list>
|
#include <list>
|
||||||
|
|
||||||
|
class DeviceEventData : public EventDataBase {
|
||||||
|
public:
|
||||||
|
int vid, pid;
|
||||||
|
bool inserted;
|
||||||
|
};
|
||||||
|
|
||||||
class TelldusMain::PrivateData {
|
class TelldusMain::PrivateData {
|
||||||
public:
|
public:
|
||||||
EventHandler eventHandler;
|
EventHandler eventHandler;
|
||||||
Event *stopEvent;
|
Event *stopEvent, *deviceChangeEvent;
|
||||||
};
|
};
|
||||||
|
|
||||||
TelldusMain::TelldusMain(void)
|
TelldusMain::TelldusMain(void)
|
||||||
{
|
{
|
||||||
d = new PrivateData;
|
d = new PrivateData;
|
||||||
d->stopEvent = d->eventHandler.addEvent();
|
d->stopEvent = d->eventHandler.addEvent();
|
||||||
|
d->deviceChangeEvent = d->eventHandler.addEvent();
|
||||||
}
|
}
|
||||||
|
|
||||||
TelldusMain::~TelldusMain(void) {
|
TelldusMain::~TelldusMain(void) {
|
||||||
|
delete d->deviceChangeEvent;
|
||||||
delete d->stopEvent;
|
delete d->stopEvent;
|
||||||
delete d;
|
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) {
|
void TelldusMain::start(void) {
|
||||||
Event *clientEvent = d->eventHandler.addEvent();
|
Event *clientEvent = d->eventHandler.addEvent();
|
||||||
|
|
||||||
|
@ -53,6 +70,15 @@ void TelldusMain::start(void) {
|
||||||
delete eventData;
|
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(); ){
|
for ( std::list<ClientCommunicationHandler *>::iterator it = clientCommunicationHandlerList.begin(); it != clientCommunicationHandlerList.end(); ){
|
||||||
if ((*it)->isDone()){
|
if ((*it)->isDone()){
|
||||||
|
|
|
@ -10,6 +10,9 @@ public:
|
||||||
void start();
|
void start();
|
||||||
void stop();
|
void stop();
|
||||||
|
|
||||||
|
//Thread safe!
|
||||||
|
void deviceInsertedOrRemoved(int vid, int pid, bool inserted);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
class PrivateData;
|
class PrivateData;
|
||||||
PrivateData *d;
|
PrivateData *d;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue