From b179835fc37e4d0f10f6adaf8e8ff74ca0fcf38c Mon Sep 17 00:00:00 2001 From: Stefan Persson Date: Thu, 12 May 2011 15:11:30 +0000 Subject: [PATCH] Readded x10 as receiving protocol --- telldus-core/service/Protocol.cpp | 11 +++++++++-- telldus-core/service/ProtocolX10.cpp | 4 ++-- telldus-core/service/ProtocolX10.h | 3 ++- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/telldus-core/service/Protocol.cpp b/telldus-core/service/Protocol.cpp index 3974b015..8bf97ab8 100644 --- a/telldus-core/service/Protocol.cpp +++ b/telldus-core/service/Protocol.cpp @@ -85,6 +85,7 @@ bool Protocol::checkBit(int data, int bitno) { return ((data>>bitno)&0x01); } + Protocol *Protocol::getProtocolInstance(const std::wstring &protocolname){ if(TelldusCore::comparei(protocolname, L"arctech")){ @@ -186,10 +187,10 @@ std::list Protocol::getParametersForProtocol(const std::wstring &pr } else if (TelldusCore::comparei(protocolName, L"yidong")) { parameters.push_back("unit"); - + } else if (TelldusCore::comparei(protocolName, L"group")) { parameters.push_back("devices"); - + } else if (TelldusCore::comparei(protocolName, L"scene")) { parameters.push_back("devices"); } @@ -222,6 +223,12 @@ std::list Protocol::decodeData(const std::string &fullData) { retval.push_back(decoded); } } + else if(TelldusCore::comparei(dataMsg.protocol(), L"x10") ) { + decoded = ProtocolX10::decodeData(dataMsg); + if (decoded != "") { + retval.push_back(decoded); + } + } return retval; } diff --git a/telldus-core/service/ProtocolX10.cpp b/telldus-core/service/ProtocolX10.cpp index d37abf61..e6d3fef8 100644 --- a/telldus-core/service/ProtocolX10.cpp +++ b/telldus-core/service/ProtocolX10.cpp @@ -107,10 +107,10 @@ std::string ProtocolX10::getStringForMethod(int method, unsigned char data, Cont } -std::string ProtocolX10::decodeData(const std::string& data) { +std::string ProtocolX10::decodeData(ControllerMessage& dataMsg) { int intData = 0, currentBit = 31; bool method=0; - sscanf(data.c_str(), "%X", &intData); + sscanf(dataMsg.getParameter("data").c_str(), "%X", &intData); int unit = 0; int rawHouse = 0; diff --git a/telldus-core/service/ProtocolX10.h b/telldus-core/service/ProtocolX10.h index e998a4b6..8e53095e 100644 --- a/telldus-core/service/ProtocolX10.h +++ b/telldus-core/service/ProtocolX10.h @@ -2,6 +2,7 @@ #define PROTOCOLX10_H #include "Protocol.h" +#include "ControllerMessage.h" class ProtocolX10 : public Protocol { @@ -9,7 +10,7 @@ public: int methods() const; virtual std::string getStringForMethod(int method, unsigned char data, Controller *controller); - static std::string decodeData(const std::string& data); + static std::string decodeData(ControllerMessage& dataMsg); }; #endif //PROTOCOLX10_H