Implement our new type of command messages and also handle the ACK. This

requires us to bump the protocol version. Closes #151
This commit is contained in:
Micke Prag 2011-12-29 17:36:41 +01:00
parent c56fa6c6f8
commit 5bb60a60c9
2 changed files with 25 additions and 11 deletions

View file

@ -127,6 +127,14 @@ void LiveObject::readyRead() {
s.setValue("Live/UUID", d->uuid); s.setValue("Live/UUID", d->uuid);
emit notRegistered(); emit notRegistered();
emit errorChanged("Not registered"); emit errorChanged("Not registered");
} else if (msg->name() == "command") {
if (msg->arg(0).valueType == LiveMessageToken::Dictionary && msg->arg(0).dictVal.contains("ACK")) {
int ack = msg->arg(0).dictVal["ACK"].intVal;
LiveMessage msg("ACK");
msg.append(ack);
this->sendMessage(msg);
}
emit messageReceived(msg.data());
} else { } else {
emit messageReceived(msg.data()); emit messageReceived(msg.data());
} }
@ -137,7 +145,7 @@ void LiveObject::refreshServerList() {
emit statusChanged("Discover servers"); emit statusChanged("Discover servers");
d->serverList.clear(); d->serverList.clear();
QUrl url(TELLDUS_LIVE_URI); QUrl url(TELLDUS_LIVE_URI);
QPair<QString, QString> version("protocolVersion", "1"); QPair<QString, QString> version("protocolVersion", "2");
QList<QPair<QString, QString> > query; QList<QPair<QString, QString> > query;
query.append(version); query.append(version);
url.setQueryItems(query); url.setQueryItems(query);
@ -286,7 +294,7 @@ QByteArray LiveObject::signatureForMessage( const QByteArray &message ) {
LiveMessageToken LiveObject::generateVersionToken() { LiveMessageToken LiveObject::generateVersionToken() {
LiveMessageToken token; LiveMessageToken token;
token.valueType = LiveMessageToken::Dictionary; token.valueType = LiveMessageToken::Dictionary;
token.dictVal["protocol"] = LiveMessageToken("1"); token.dictVal["protocol"] = LiveMessageToken(2);
token.dictVal["version"] = LiveMessageToken(TELLDUS_CENTER_VERSION); token.dictVal["version"] = LiveMessageToken(TELLDUS_CENTER_VERSION);
#if defined(Q_WS_WIN) #if defined(Q_WS_WIN)
token.dictVal["os"] = LiveMessageToken("windows"); token.dictVal["os"] = LiveMessageToken("windows");

View file

@ -45,16 +45,22 @@ com.telldus.live = function() {
} }
function messageReceived(msg) { function messageReceived(msg) {
if (msg.name() == "turnon") { if (msg.name() == "command") {
com.telldus.core.turnOn( msg.argument(0).intVal() ); handleCommand(msg.argument(0));
} else if (msg.name() == "turnoff") { }
com.telldus.core.turnOff( msg.argument(0).intVal() ); }
} else if (msg.name() == "dim") {
com.telldus.core.dim( msg.argument(0).intVal(), msg.argument(1).intVal() ); function handleCommand(msg) {
} else if (msg.name() == "bell") { var action = msg.getString('action');
com.telldus.core.bell( msg.argument(0).intVal() ); if (action == "turnon") {
com.telldus.core.turnOn( msg.getInt('id') );
} else if (action == "turnoff") {
com.telldus.core.turnOff( msg.getInt('id') );
} else if (action == "dim") {
com.telldus.core.dim( msg.getInt('id'), msg.getInt('value') );
} else if (action == "bell") {
com.telldus.core.bell( msg.getInt('id') );
} }
print("Received: " + msg.name());
} }
function registered(msg) { function registered(msg) {