fixed tune execute action

This commit is contained in:
Simon Stürz 2015-04-26 21:44:11 +02:00 committed by Michael Zanetti
parent 4ba4e67582
commit 1f48651dee
3 changed files with 16 additions and 12 deletions

View File

@ -1085,12 +1085,12 @@ DeviceManager::DeviceError DeviceManager::verifyParam(const ParamType &paramType
return DeviceErrorInvalidParameter; return DeviceErrorInvalidParameter;
} }
if (paramType.maxValue().isValid() && param.value() > paramType.maxValue()) { if (paramType.maxValue().isValid() && param.value().convert(paramType.type()) > paramType.maxValue().convert(paramType.type())) {
qWarning() << "Value out of range for param" << param.name() << " Got:" << param.value() << " Max:" << paramType.maxValue(); qWarning() << "Value out of range for param" << param.name() << " Got:" << param.value() << " Max:" << paramType.maxValue();
return DeviceErrorInvalidParameter; return DeviceErrorInvalidParameter;
} }
if (paramType.minValue().isValid() && param.value() < paramType.minValue()) { if (paramType.minValue().isValid() && param.value() < paramType.minValue()) {
qWarning() << "Value out of range for param" << param.name() << " Got:" << param.value() << " Min:" << paramType.minValue(); qWarning() << "Value out of range for param" << param.name() << " Got:" << param.value().convert(paramType.type()) << " Min:" << paramType.minValue().convert(paramType.type());
return DeviceErrorInvalidParameter; return DeviceErrorInvalidParameter;
} }
if (!paramType.allowedValues().isEmpty() && !paramType.allowedValues().contains(param.value())) { if (!paramType.allowedValues().isEmpty() && !paramType.allowedValues().contains(param.value())) {

View File

@ -175,7 +175,7 @@ void DevicePluginTune::updateTune(const QVariantMap &message)
void DevicePluginTune::processActionResponse(const QVariantMap &message) void DevicePluginTune::processActionResponse(const QVariantMap &message)
{ {
bool success = message.value("success").toBool(); bool success = message.value("success").toBool();
ActionId actionId = ActionId(message.value("params").toMap().value("actionId").toString()); ActionId actionId = ActionId(message.value("actionId").toString());
if (success) { if (success) {
emit actionExecutionFinished(actionId, DeviceManager::DeviceErrorNoError); emit actionExecutionFinished(actionId, DeviceManager::DeviceErrorNoError);
} else { } else {
@ -189,16 +189,20 @@ DeviceManager::DeviceError DevicePluginTune::executeAction(Device *device, const
return DeviceManager::DeviceErrorHardwareNotAvailable; return DeviceManager::DeviceErrorHardwareNotAvailable;
} }
if (device->deviceClassId() != moodDeviceClassId || device->deviceClassId() != tuneDeviceClassId) { // check DeviceClassId
if (device->deviceClassId() != moodDeviceClassId && device->deviceClassId() != tuneDeviceClassId) {
return DeviceManager::DeviceErrorDeviceClassNotFound; return DeviceManager::DeviceErrorDeviceClassNotFound;
} }
if (action.actionTypeId() != powerActionTypeId || // check ActionTypeId
action.actionTypeId() != brightnessActionTypeId || if (action.actionTypeId() != powerActionTypeId &&
action.actionTypeId() != valueActionTypeId){ action.actionTypeId() != brightnessActionTypeId &&
action.actionTypeId() != valueActionTypeId &&
action.actionTypeId() != activeActionTypeId){
return DeviceManager::DeviceErrorActionTypeNotFound; return DeviceManager::DeviceErrorActionTypeNotFound;
} }
// request the action execution on tune
m_server->executeAction(device, action); m_server->executeAction(device, action);
return DeviceManager::DeviceErrorAsync; return DeviceManager::DeviceErrorAsync;
} }

View File

@ -110,13 +110,13 @@ void JsonRpcServer::executeAction(Device *device, const Action &action)
QVariantMap message; QVariantMap message;
QVariantMap params; QVariantMap params;
params.insert("deviceId", device->deviceClassId()); params.insert("deviceId", device->id());
params.insert("actionId", action.id()); params.insert("actionId", action.id());
if (device->deviceClassId() == moodDeviceClassId) { if (device->deviceClassId() == moodDeviceClassId) {
message.insert("method", "Mood.ExecuteAction"); message.insert("method", "Mood.ExecuteAction");
if (action.actionTypeId() == valueActionTypeId) { if (action.actionTypeId() == valueActionTypeId) {
params.insert("value", action.param("percentage").value().toInt()); params.insert("value", action.param("value").value().toInt());
params.insert("active", device->stateValue(activeStateTypeId).toBool()); params.insert("active", device->stateValue(activeStateTypeId).toBool());
} else if (action.actionTypeId() == activeActionTypeId) { } else if (action.actionTypeId() == activeActionTypeId) {
params.insert("value", device->stateValue(valueStateTypeId).toInt()); params.insert("value", device->stateValue(valueStateTypeId).toInt());
@ -124,10 +124,10 @@ void JsonRpcServer::executeAction(Device *device, const Action &action)
} }
} else if(device->deviceClassId() == tuneDeviceClassId) { } else if(device->deviceClassId() == tuneDeviceClassId) {
message.insert("method", "Tune.ExecuteAction"); message.insert("method", "Tune.ExecuteAction");
if (action.actionTypeId() == valueActionTypeId) { if (action.actionTypeId() == brightnessActionTypeId) {
params.insert("brightness", action.param("brightness").value().toInt()); params.insert("brightness", action.param("brightness").value().toInt());
params.insert("power", device->stateValue(powerStateTypeId).toBool()); params.insert("power", device->stateValue(powerStateTypeId).toBool());
} else if (action.actionTypeId() == activeActionTypeId) { } else if (action.actionTypeId() == powerActionTypeId) {
params.insert("brightness", device->stateValue(brightnessStateTypeId).toInt()); params.insert("brightness", device->stateValue(brightnessStateTypeId).toInt());
params.insert("power", action.param("power").value().toBool()); params.insert("power", action.param("power").value().toBool());
} }
@ -173,7 +173,7 @@ void JsonRpcServer::handleResponse(const QVariantMap &response)
return; return;
} }
// remove it request since we have a response now... // remove it request because we have a response now...
QVariantMap request = m_requests.take(responseId); QVariantMap request = m_requests.take(responseId);
// Note: maby we have to do something if any request fails // Note: maby we have to do something if any request fails