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 "Message.h"
#include "../common/Socket.h"
#include <list>
using namespace TelldusService;
@ -68,15 +69,15 @@ int Manager::numberOfDevices() {
return d->numberOfDevices;
}
Message message("tdGetNumberOfDevices");
d->numberOfDevices = this->send(message, &ok).toInt();
d->numberOfDevices = this->sendAndReceiveInt(message, &ok);
return d->numberOfDevices;
}
QString Manager::deviceName(int deviceId) {
std::string Manager::deviceName(int deviceId) {
bool ok;
Message message("tdGetName");
message.addArgument(deviceId);
QString retval = this->send(message, &ok).toString();
std::string retval = this->sendAndReceiveString(message, &ok);
if (!ok) {
retval = "";
}
@ -136,7 +137,7 @@ void Manager::run() {
while( d->eventSocket.connected() ) {
logMessage("-> OVERLAPPED read");
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) {
continue;
}
@ -146,14 +147,14 @@ void Manager::run() {
void Manager::dataReceived(const std::string &message) {
Message msg(message); //Copy
logMessage(QString::fromStdString(msg));
// logMessage(QString::fromStdString(msg));
std::string funcName = Message::takeString(&msg);
logMessage(QString::fromStdString(funcName));
// logMessage(QString::fromStdString(funcName));
if (funcName == "TDDeviceEvent") {
int intDeviceId = Message::takeInt(&msg);
int intDeviceState = Message::takeInt(&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) {
logMessage("StartSend");
(*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);
//Clear the cache
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) {
(*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;
if (!d->s.connected()) {
return TELLSTICK_ERROR_CONNECTING_SERVICE;
Message msg;
msg.addArgument(TELLSTICK_ERROR_CONNECTING_SERVICE);
return msg;
}
std::string response;
{
TelldusCore::MutexLocker l(&d->sMutex);
logMessage(QString("Sending: %1").arg(QString::fromStdString(message)));
d->s.writeOverlapped(message);
response = d->s.readOverlapped();
// logMessage(QString("Sending: %1").arg(QString::fromStdString(message)));
response = d->s.readWriteOverlapped(message);
}
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;
if (Message::nextIsInt(response)) {
return Message::takeInt(&response);
}
return QString::fromStdString(Message::takeString(&response));
return response;
}
logMessage("Received: empty result");
return TELLSTICK_ERROR_UNKNOWN_RESPONSE;
Message msg;
msg.addArgument(TELLSTICK_ERROR_UNKNOWN_RESPONSE);
return msg;
}
#include <QFile>
#include <QTextStream>
#include <QTime>
#include <QDebug>
void Manager::logMessage( const QString &message) {
#ifdef _WINDOWS
std::string Manager::sendAndReceiveString(const TelldusService::Message &msg, bool *success) {
std::string message(send(msg, success));
return Message::takeString(&message);
}
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");
return;
static bool firstRun = true;
@ -223,3 +234,7 @@ void Manager::logMessage( const QString &message) {
qDebug() << message;
#endif
}
*/
void Manager::logMessage( const std::string &message) {
}

View file

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

View file

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