Removed some more of the Qt dependency.

This commit is contained in:
Micke Prag 2010-08-12 08:57:41 +00:00
parent 494f7e44c8
commit 79dbe2bf2b
3 changed files with 78 additions and 65 deletions

View file

@ -2,6 +2,7 @@
#include "Manager.h" #include "Manager.h"
#include "Message.h" #include "Message.h"
#include "../common/Socket.h" #include "../common/Socket.h"
#include <list>
using namespace TelldusService; using namespace TelldusService;
@ -68,15 +69,15 @@ int Manager::numberOfDevices() {
return d->numberOfDevices; return d->numberOfDevices;
} }
Message message("tdGetNumberOfDevices"); Message message("tdGetNumberOfDevices");
d->numberOfDevices = this->send(message, &ok).toInt(); d->numberOfDevices = this->sendAndReceiveInt(message, &ok);
return d->numberOfDevices; return d->numberOfDevices;
} }
QString Manager::deviceName(int deviceId) { std::string Manager::deviceName(int deviceId) {
bool ok; bool ok;
Message message("tdGetName"); Message message("tdGetName");
message.addArgument(deviceId); message.addArgument(deviceId);
QString retval = this->send(message, &ok).toString(); std::string retval = this->sendAndReceiveString(message, &ok);
if (!ok) { if (!ok) {
retval = ""; retval = "";
} }
@ -136,7 +137,7 @@ void Manager::run() {
while( d->eventSocket.connected() ) { while( d->eventSocket.connected() ) {
logMessage("-> OVERLAPPED read"); logMessage("-> OVERLAPPED read");
std::string data(d->eventSocket.readOverlapped()); std::string data(d->eventSocket.readOverlapped());
logMessage(QString("<- OVERLAPPED result: %1").arg(QString::fromStdString(data))); // logMessage(QString("<- OVERLAPPED result: %1").arg(QString::fromStdString(data)));
if (data.length() == 0) { if (data.length() == 0) {
continue; continue;
} }
@ -146,14 +147,14 @@ void Manager::run() {
void Manager::dataReceived(const std::string &message) { void Manager::dataReceived(const std::string &message) {
Message msg(message); //Copy Message msg(message); //Copy
logMessage(QString::fromStdString(msg)); // logMessage(QString::fromStdString(msg));
std::string funcName = Message::takeString(&msg); std::string funcName = Message::takeString(&msg);
logMessage(QString::fromStdString(funcName)); // logMessage(QString::fromStdString(funcName));
if (funcName == "TDDeviceEvent") { if (funcName == "TDDeviceEvent") {
int intDeviceId = Message::takeInt(&msg); int intDeviceId = Message::takeInt(&msg);
int intDeviceState = Message::takeInt(&msg); int intDeviceState = Message::takeInt(&msg);
std::string strDeviceStateValue = Message::takeString(&msg); std::string strDeviceStateValue = Message::takeString(&msg);
logMessage(QString("Sending %1 callbacks").arg(d->callbacks.size())); // logMessage(QString("Sending %1 callbacks").arg(d->callbacks.size()));
for(CallbackList::const_iterator callback_it = d->callbacks.begin(); callback_it != d->callbacks.end(); ++callback_it) { for(CallbackList::const_iterator callback_it = d->callbacks.begin(); callback_it != d->callbacks.end(); ++callback_it) {
logMessage("StartSend"); logMessage("StartSend");
(*callback_it).event(intDeviceId, intDeviceState, strDeviceStateValue.c_str(), (*callback_it).id, (*callback_it).context); (*callback_it).event(intDeviceId, intDeviceState, strDeviceStateValue.c_str(), (*callback_it).id, (*callback_it).context);
@ -165,7 +166,7 @@ void Manager::dataReceived(const std::string &message) {
int intChange = Message::takeInt(&msg); int intChange = Message::takeInt(&msg);
//Clear the cache //Clear the cache
d->numberOfDevices = -1; d->numberOfDevices = -1;
logMessage(QString("Number of callbacks %1").arg(d->deviceChangeCallbacks.size())); // logMessage(QString("Number of callbacks %1").arg(d->deviceChangeCallbacks.size()));
for(DeviceChangeCallbackList::const_iterator callback_it = d->deviceChangeCallbacks.begin(); callback_it != d->deviceChangeCallbacks.end(); ++callback_it) { for(DeviceChangeCallbackList::const_iterator callback_it = d->deviceChangeCallbacks.begin(); callback_it != d->deviceChangeCallbacks.end(); ++callback_it) {
(*callback_it).event(intDeviceId, intEvent, intChange, (*callback_it).id, (*callback_it).context); (*callback_it).event(intDeviceId, intEvent, intChange, (*callback_it).id, (*callback_it).context);
} }
@ -177,36 +178,46 @@ void Manager::dataReceived(const std::string &message) {
} }
} }
QVariant Manager::send(const Message &message, bool *success) { std::string Manager::send(const Message &message, bool *success) {
(*success) = false; (*success) = false;
if (!d->s.connected()) { if (!d->s.connected()) {
return TELLSTICK_ERROR_CONNECTING_SERVICE; Message msg;
msg.addArgument(TELLSTICK_ERROR_CONNECTING_SERVICE);
return msg;
} }
std::string response; std::string response;
{ {
TelldusCore::MutexLocker l(&d->sMutex); TelldusCore::MutexLocker l(&d->sMutex);
logMessage(QString("Sending: %1").arg(QString::fromStdString(message))); // logMessage(QString("Sending: %1").arg(QString::fromStdString(message)));
d->s.writeOverlapped(message); response = d->s.readWriteOverlapped(message);
response = d->s.readOverlapped();
} }
if (response.length() > 0) { if (response.length() > 0) {
logMessage(QString("Received: %1 from: %2").arg(QString::fromStdString(response).trimmed()).arg(QString::fromStdString(message))); // logMessage(QString("Received: %1 from: %2").arg(QString::fromStdString(response).trimmed()).arg(QString::fromStdString(message)));
(*success) = true; (*success) = true;
if (Message::nextIsInt(response)) { return response;
return Message::takeInt(&response);
}
return QString::fromStdString(Message::takeString(&response));
} }
logMessage("Received: empty result"); logMessage("Received: empty result");
return TELLSTICK_ERROR_UNKNOWN_RESPONSE; Message msg;
msg.addArgument(TELLSTICK_ERROR_UNKNOWN_RESPONSE);
return msg;
} }
#include <QFile> std::string Manager::sendAndReceiveString(const TelldusService::Message &msg, bool *success) {
#include <QTextStream> std::string message(send(msg, success));
#include <QTime> return Message::takeString(&message);
#include <QDebug> }
void Manager::logMessage( const QString &message) {
#ifdef _WINDOWS int Manager::sendAndReceiveInt(const TelldusService::Message &msg, bool *success) {
std::string message(send(msg, success));
return Message::takeInt(&message);
}
//#include <QFile>
//#include <QTextStream>
//#include <QTime>
//#include <QDebug>
//void Manager::logMessage( const QString &message) {
/*#ifdef _WINDOWS
QFile file("C:/log_client.txt"); QFile file("C:/log_client.txt");
return; return;
static bool firstRun = true; static bool firstRun = true;
@ -223,3 +234,7 @@ void Manager::logMessage( const QString &message) {
qDebug() << message; qDebug() << message;
#endif #endif
} }
*/
void Manager::logMessage( const std::string &message) {
}

View file

@ -1,8 +1,6 @@
#ifndef MANAGER_H #ifndef MANAGER_H
#define MANAGER_H #define MANAGER_H
#include <QByteArray>
#include <QVariant>
#include "Message.h" #include "Message.h"
#include <libtelldus-core/Thread.h> #include <libtelldus-core/Thread.h>
#include <libtelldus-core/telldus-core.h> #include <libtelldus-core/telldus-core.h>
@ -33,26 +31,26 @@ public:
static Manager *getInstance(); static Manager *getInstance();
static void close(); static void close();
QVariant send(const TelldusService::Message &msg, bool *success); std::string send(const TelldusService::Message &msg, bool *success);
std::string sendAndReceiveString(const TelldusService::Message &msg, bool *success);
int sendAndReceiveInt(const TelldusService::Message &msg, bool *success);
int numberOfDevices(); int numberOfDevices();
QString deviceName(int deviceId); std::string deviceName(int deviceId);
int registerDeviceEvent( TDDeviceEvent eventFunction, void *context ); int registerDeviceEvent( TDDeviceEvent eventFunction, void *context );
int registerDeviceChangeEvent( TDDeviceChangeEvent eventFunction, void *context ); int registerDeviceChangeEvent( TDDeviceChangeEvent eventFunction, void *context );
int registerRawDeviceEvent( TDRawDeviceEvent eventFunction, void *context ); int registerRawDeviceEvent( TDRawDeviceEvent eventFunction, void *context );
bool unregisterCallback( int callbackId ); bool unregisterCallback( int callbackId );
static void logMessage( const QString &message); static void logMessage( const std::string &message);
protected: protected:
void run(); void run();
private slots:
void dataReceived(const std::string &msg);
private: private:
Manager(void); Manager(void);
void dataReceived(const std::string &msg);
ManagerPrivate *d; ManagerPrivate *d;
static Manager *instance; static Manager *instance;

View file

@ -49,7 +49,7 @@ int WINAPI tdTurnOn(int intDeviceId){
Manager *manager = Manager::getInstance(); Manager *manager = Manager::getInstance();
Message message("tdTurnOn"); Message message("tdTurnOn");
message.addArgument(intDeviceId); message.addArgument(intDeviceId);
return manager->send(message, &ok).toInt(); return manager->sendAndReceiveInt(message, &ok);
} }
int WINAPI tdTurnOff(int intDeviceId){ int WINAPI tdTurnOff(int intDeviceId){
@ -57,7 +57,7 @@ int WINAPI tdTurnOff(int intDeviceId){
Manager *manager = Manager::getInstance(); Manager *manager = Manager::getInstance();
Message message("tdTurnOff"); Message message("tdTurnOff");
message.addArgument(intDeviceId); message.addArgument(intDeviceId);
return manager->send(message, &ok).toInt(); return manager->sendAndReceiveInt(message, &ok);
} }
int WINAPI tdBell(int intDeviceId){ int WINAPI tdBell(int intDeviceId){
@ -65,7 +65,7 @@ int WINAPI tdBell(int intDeviceId){
Manager *manager = Manager::getInstance(); Manager *manager = Manager::getInstance();
Message message("tdBell"); Message message("tdBell");
message.addArgument(intDeviceId); message.addArgument(intDeviceId);
return manager->send(message, &ok).toInt(); return manager->sendAndReceiveInt(message, &ok);
} }
int WINAPI tdDim(int intDeviceId, unsigned char level){ int WINAPI tdDim(int intDeviceId, unsigned char level){
@ -74,7 +74,7 @@ int WINAPI tdDim(int intDeviceId, unsigned char level){
Message message("tdDim"); Message message("tdDim");
message.addArgument(intDeviceId); message.addArgument(intDeviceId);
message.addArgument(level); message.addArgument(level);
return manager->send(message, &ok).toInt(); return manager->sendAndReceiveInt(message, &ok);
} }
int WINAPI tdLearn(int intDeviceId) { int WINAPI tdLearn(int intDeviceId) {
@ -82,7 +82,7 @@ int WINAPI tdLearn(int intDeviceId) {
Manager *manager = Manager::getInstance(); Manager *manager = Manager::getInstance();
Message message("tdLearn"); Message message("tdLearn");
message.addArgument(intDeviceId); message.addArgument(intDeviceId);
return manager->send(message, &ok).toInt(); return manager->sendAndReceiveInt(message, &ok);
} }
int WINAPI tdLastSentCommand( int intDeviceId, int methodsSupported ) { int WINAPI tdLastSentCommand( int intDeviceId, int methodsSupported ) {
@ -91,7 +91,7 @@ int WINAPI tdLastSentCommand( int intDeviceId, int methodsSupported ) {
Message message("tdLastSentCommand"); Message message("tdLastSentCommand");
message.addArgument(intDeviceId); message.addArgument(intDeviceId);
message.addArgument(methodsSupported); message.addArgument(methodsSupported);
return manager->send(message, &ok).toInt(); return manager->sendAndReceiveInt(message, &ok);
} }
char * WINAPI tdLastSentValue( int intDeviceId ) { char * WINAPI tdLastSentValue( int intDeviceId ) {
@ -99,11 +99,11 @@ char * WINAPI tdLastSentValue( int intDeviceId ) {
Manager *manager = Manager::getInstance(); Manager *manager = Manager::getInstance();
Message message("tdLastSentValue"); Message message("tdLastSentValue");
message.addArgument(intDeviceId); message.addArgument(intDeviceId);
QVariant retval = manager->send(message, &ok); std::string retval = manager->sendAndReceiveString(message, &ok);
if (!ok) { if (!ok) {
return wrapStdString("0"); return wrapStdString("0");
} }
return wrapStdString(retval.toString().toStdString()); return wrapStdString(retval);
} }
int WINAPI tdGetNumberOfDevices(void){ int WINAPI tdGetNumberOfDevices(void){
@ -117,7 +117,7 @@ int WINAPI tdGetDeviceId(int intDeviceIndex){
Manager *manager = Manager::getInstance(); Manager *manager = Manager::getInstance();
Message message("tdGetDeviceId"); Message message("tdGetDeviceId");
message.addArgument(intDeviceIndex); message.addArgument(intDeviceIndex);
return manager->send(message, &ok).toInt(); return manager->sendAndReceiveInt(message, &ok);
} }
int WINAPI tdGetDeviceType(int intDeviceId) { int WINAPI tdGetDeviceType(int intDeviceId) {
@ -125,13 +125,13 @@ int WINAPI tdGetDeviceType(int intDeviceId) {
Manager *manager = Manager::getInstance(); Manager *manager = Manager::getInstance();
Message message("tdGetDeviceType"); Message message("tdGetDeviceType");
message.addArgument(intDeviceId); message.addArgument(intDeviceId);
return manager->send(message, &ok).toInt(); return manager->sendAndReceiveInt(message, &ok);
} }
char * WINAPI tdGetName(int intDeviceId){ char * WINAPI tdGetName(int intDeviceId){
Manager *manager = Manager::getInstance(); Manager *manager = Manager::getInstance();
QString name = manager->deviceName(intDeviceId); std::string name = manager->deviceName(intDeviceId);
return wrapStdString(name.toStdString()); return wrapStdString(name);
} }
bool WINAPI tdSetName(int intDeviceId, const char* strNewName) { bool WINAPI tdSetName(int intDeviceId, const char* strNewName) {
@ -140,11 +140,11 @@ bool WINAPI tdSetName(int intDeviceId, const char* strNewName) {
Message message("tdSetName"); Message message("tdSetName");
message.addArgument(intDeviceId); message.addArgument(intDeviceId);
message.addArgument(strNewName); message.addArgument(strNewName);
bool retval = manager->send(message, &ok).toBool(); int retval = manager->sendAndReceiveInt(message, &ok);
if (!ok) { if (!ok) {
return false; return false;
} }
return retval; return (retval == 1);
} }
char* WINAPI tdGetProtocol(int intDeviceId){ char* WINAPI tdGetProtocol(int intDeviceId){
@ -152,11 +152,11 @@ char* WINAPI tdGetProtocol(int intDeviceId){
Manager *manager = Manager::getInstance(); Manager *manager = Manager::getInstance();
Message message("tdGetProtocol"); Message message("tdGetProtocol");
message.addArgument(intDeviceId); message.addArgument(intDeviceId);
QString retval = manager->send(message, &ok).toString(); std::string retval = manager->sendAndReceiveString(message, &ok);
if (!ok) { if (!ok) {
retval = "arctech"; retval = "arctech";
} }
return wrapStdString(retval.toStdString()); return wrapStdString(retval);
} }
bool WINAPI tdSetProtocol(int intDeviceId, const char* strProtocol) { bool WINAPI tdSetProtocol(int intDeviceId, const char* strProtocol) {
@ -165,11 +165,11 @@ bool WINAPI tdSetProtocol(int intDeviceId, const char* strProtocol) {
Message message("tdSetProtocol"); Message message("tdSetProtocol");
message.addArgument(intDeviceId); message.addArgument(intDeviceId);
message.addArgument(strProtocol); message.addArgument(strProtocol);
bool retval = manager->send(message, &ok).toBool(); int retval = manager->sendAndReceiveInt(message, &ok);
if (!ok) { if (!ok) {
return false; return false;
} }
return retval; return (retval == 1);
} }
char* WINAPI tdGetModel(int intDeviceId) { char* WINAPI tdGetModel(int intDeviceId) {
@ -177,11 +177,11 @@ char* WINAPI tdGetModel(int intDeviceId) {
Manager *manager = Manager::getInstance(); Manager *manager = Manager::getInstance();
Message message("tdGetModel"); Message message("tdGetModel");
message.addArgument(intDeviceId); message.addArgument(intDeviceId);
QString retval = manager->send(message, &ok).toString(); std::string retval = manager->sendAndReceiveString(message, &ok);
if (!ok) { if (!ok) {
retval = ""; retval = "";
} }
return wrapStdString(retval.toStdString()); return wrapStdString(retval);
} }
bool WINAPI tdSetModel(int intDeviceId, const char *strModel) { bool WINAPI tdSetModel(int intDeviceId, const char *strModel) {
@ -190,11 +190,11 @@ bool WINAPI tdSetModel(int intDeviceId, const char *strModel) {
Message message("tdSetModel"); Message message("tdSetModel");
message.addArgument(intDeviceId); message.addArgument(intDeviceId);
message.addArgument(strModel); message.addArgument(strModel);
bool retval = manager->send(message, &ok).toBool(); int retval = manager->sendAndReceiveInt(message, &ok);
if (!ok) { if (!ok) {
return false; return false;
} }
return retval; return (retval == 1);
} }
bool WINAPI tdSetDeviceParameter(int intDeviceId, const char *strName, const char *strValue) { bool WINAPI tdSetDeviceParameter(int intDeviceId, const char *strName, const char *strValue) {
@ -204,11 +204,11 @@ bool WINAPI tdSetDeviceParameter(int intDeviceId, const char *strName, const cha
message.addArgument(intDeviceId); message.addArgument(intDeviceId);
message.addArgument(strName); message.addArgument(strName);
message.addArgument(strValue); message.addArgument(strValue);
bool retval = manager->send(message, &ok).toBool(); int retval = manager->sendAndReceiveInt(message, &ok);
if (!ok) { if (!ok) {
return false; return false;
} }
return retval; return (retval == 1);
} }
char * WINAPI tdGetDeviceParameter(int intDeviceId, const char *strName, const char *defaultValue){ char * WINAPI tdGetDeviceParameter(int intDeviceId, const char *strName, const char *defaultValue){
@ -218,18 +218,18 @@ char * WINAPI tdGetDeviceParameter(int intDeviceId, const char *strName, const c
message.addArgument(intDeviceId); message.addArgument(intDeviceId);
message.addArgument(strName); message.addArgument(strName);
message.addArgument(defaultValue); message.addArgument(defaultValue);
QString retval = manager->send(message, &ok).toString(); std::string retval = manager->sendAndReceiveString(message, &ok);
if (!ok) { if (!ok) {
retval = defaultValue; retval = defaultValue;
} }
return wrapStdString(retval.toStdString()); return wrapStdString(retval);
} }
int WINAPI tdAddDevice(){ int WINAPI tdAddDevice(){
bool ok; bool ok;
Manager *manager = Manager::getInstance(); Manager *manager = Manager::getInstance();
Message message("tdAddDevice"); Message message("tdAddDevice");
return manager->send(message, &ok).toInt(); return manager->sendAndReceiveInt(message, &ok);
} }
bool WINAPI tdRemoveDevice(int intDeviceId) { bool WINAPI tdRemoveDevice(int intDeviceId) {
@ -237,7 +237,7 @@ bool WINAPI tdRemoveDevice(int intDeviceId) {
Manager *manager = Manager::getInstance(); Manager *manager = Manager::getInstance();
Message message("tdRemoveDevice"); Message message("tdRemoveDevice");
message.addArgument(intDeviceId); message.addArgument(intDeviceId);
return manager->send(message, &ok).toBool(); return (manager->sendAndReceiveInt(message, &ok) == 1);
} }
int WINAPI tdMethods(int id, int methodsSupported) { int WINAPI tdMethods(int id, int methodsSupported) {
@ -246,7 +246,7 @@ int WINAPI tdMethods(int id, int methodsSupported) {
Message message("tdMethods"); Message message("tdMethods");
message.addArgument(id); message.addArgument(id);
message.addArgument(methodsSupported); message.addArgument(methodsSupported);
return manager->send(message, &ok).toInt(); return manager->sendAndReceiveInt(message, &ok);
} }
char * WINAPI tdGetErrorString(int intErrorNo) { char * WINAPI tdGetErrorString(int intErrorNo) {
@ -258,11 +258,11 @@ char * WINAPI tdGetErrorString(int intErrorNo) {
Manager *manager = Manager::getInstance(); Manager *manager = Manager::getInstance();
Message message("tdGetErrorString"); Message message("tdGetErrorString");
message.addArgument(intErrorNo); message.addArgument(intErrorNo);
QString retval = manager->send(message, &ok).toString(); std::string retval = manager->sendAndReceiveString(message, &ok);
if (!ok) { if (!ok) {
retval = "Unknown error"; retval = "Unknown error";
} }
return wrapStdString(retval.toStdString()); return wrapStdString(retval);
} }
int WINAPI tdSendRawCommand(const char *command, int reserved) { int WINAPI tdSendRawCommand(const char *command, int reserved) {
@ -271,7 +271,7 @@ int WINAPI tdSendRawCommand(const char *command, int reserved) {
Message message("tdSendRawCommand"); Message message("tdSendRawCommand");
message.addArgument(command); message.addArgument(command);
message.addArgument(reserved); message.addArgument(reserved);
return manager->send(message, &ok).toInt(); return manager->sendAndReceiveInt(message, &ok);
} }
void WINAPI tdConnectTellStickController(int vid, int pid, const char *serial) { void WINAPI tdConnectTellStickController(int vid, int pid, const char *serial) {