1 //----------------------------------------------------------------------------- 2 // 3 // ValueDecimal.h 4 // 5 // Represents a value that may have a fractional component 6 // 7 // Copyright (c) 2010 Mal Lansell <openzwave@lansell.org> 8 // 9 // SOFTWARE NOTICE AND LICENSE 10 // 11 // This file is part of OpenZWave. 12 // 13 // OpenZWave is free software: you can redistribute it and/or modify 14 // it under the terms of the GNU Lesser General Public License as published 15 // by the Free Software Foundation, either version 3 of the License, 16 // or (at your option) any later version. 17 // 18 // OpenZWave is distributed in the hope that it will be useful, 19 // but WITHOUT ANY WARRANTY; without even the implied warranty of 20 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 21 // GNU Lesser General Public License for more details. 22 // 23 // You should have received a copy of the GNU Lesser General Public License 24 // along with OpenZWave. If not, see <http://www.gnu.org/licenses/>. 25 // 26 //----------------------------------------------------------------------------- 27 28 #ifndef _ValueDecimal_H 29 #define _ValueDecimal_H 30 31 #include <string> 32 #include "Defs.h" 33 #include "value_classes/Value.h" 34 35 class TiXmlElement; 36 37 namespace OpenZWave 38 { 39 namespace Internal 40 { 41 namespace VC 42 { 43 44 /** \brief Decimal value sent to/received from a node. 45 * \ingroup ValueID 46 */ 47 class ValueDecimal: public Value 48 { 49 50 public: 51 ValueDecimal(uint32 const _homeId, uint8 const _nodeId, ValueID::ValueGenre const _genre, uint8 const _commandClassId, uint8 const _instance, uint16 const _index, string const& _label, string const& _units, bool const _readOnly, bool const _writeOnly, string const& _value, uint8 const _pollIntensity); ValueDecimal()52 ValueDecimal() : 53 m_precision(0) 54 { 55 } ~ValueDecimal()56 virtual ~ValueDecimal() 57 { 58 } 59 60 bool Set(string const& _value); 61 void OnValueRefreshed(string const& _value); 62 63 // From Value GetAsString()64 virtual string const GetAsString() const 65 { 66 return GetValue(); 67 } SetFromString(string const & _value)68 virtual bool SetFromString(string const& _value) 69 { 70 return Set(_value); 71 } 72 virtual void ReadXML(uint32 const _homeId, uint8 const _nodeId, uint8 const _commandClassId, TiXmlElement const* _valueElement); 73 virtual void WriteXML(TiXmlElement* _valueElement); 74 GetValue()75 string GetValue() const 76 { 77 return m_value; 78 } GetPrecision()79 uint8 GetPrecision() const 80 { 81 return m_precision; 82 } SetPrecision(uint8 _precision)83 void SetPrecision(uint8 _precision) 84 { 85 m_precision = _precision; 86 } 87 88 private: 89 90 string m_value; // the current value 91 string m_valueCheck; // the previous value (used for double-checking spurious value reads) 92 string m_newValue; // a new value to be set on the appropriate device 93 uint8 m_precision; 94 }; 95 } // namespace VC 96 } // namespace Internal 97 } // namespace OpenZWave 98 99 #endif 100 101