Removed some more of the Qt dependency.
This commit is contained in:
parent
494f7e44c8
commit
79dbe2bf2b
3 changed files with 78 additions and 65 deletions
|
@ -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) {
|
||||
}
|
|
@ -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;
|
||||
|
|
|
@ -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) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue