Ejemplo n.º 1
0
void HmValue::HandleXmlRpcEvent( XmlRpcValue& value )
{
	LOG( Logger::LOG_DEBUG, "HmValue %s.%s=%s", _channel->GetSerial().c_str(), _valueId.c_str(), value.toText().c_str());
	if( _sendingChannel )
	{
		if( value.getType() == XmlRpcValue::TypeInt )
		{
			_sendingChannel->SetValue( (int&)value );
		}else if( value.getType() == XmlRpcValue::TypeDouble )
		{
			_sendingChannel->SetValue( (unsigned long)(((double&)value) * _floatScale) );
		}else if( value.getType() == XmlRpcValue::TypeBoolean )
		{
			_sendingChannel->SetValue( ((bool&)value) != _boolInvert ? 1 : 0 );
		}else{
			LOG( Logger::LOG_WARNING, "Unsupported type of value %s handling XmlRpc event", value.toText().c_str());
		}
	}else{
		LOG( Logger::LOG_WARNING, "No IcChannel defined handling XmlRpc event");
	}
}