1 //----------------------------------------------------------------------------- 2 // 3 // ValueRaw.h 4 // 5 // Represents a collection of 8-bit values 6 // 7 // Copyright (c) 2013 Greg Satz <satz@iranger.com> 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 _ValueRaw_H 29 #define _ValueRaw_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 A collection of bytes sent to/received from a node. 45 * \ingroup ValueID 46 */ 47 class ValueRaw: public Value 48 { 49 public: 50 ValueRaw(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, uint8 const* _value, uint8 const _length, uint8 const _pollIntensity); 51 ValueRaw(); 52 virtual ~ValueRaw(); 53 54 bool Set(uint8 const* _value, uint8 const _length); 55 void OnValueRefreshed(uint8 const* _value, uint8 const _length); 56 57 // From Value 58 virtual string const GetAsString() const; 59 virtual bool SetFromString(string const& _value); 60 virtual void ReadXML(uint32 const _homeId, uint8 const _nodeId, uint8 const _commandClassId, TiXmlElement const* _valueElement); 61 virtual void WriteXML(TiXmlElement* _valueElement); 62 GetValue()63 uint8* GetValue() const 64 { 65 return m_value; 66 } GetLength()67 uint8 GetLength() const 68 { 69 return m_valueLength; 70 } 71 72 private: 73 uint8* m_value; // the current value 74 uint8 m_valueLength; // fixed length for this instance 75 uint8* m_valueCheck; // the previous value (used for double-checking spurious value reads) 76 uint8 m_valueCheckLength; // m_valueCheck array length 77 }; 78 } // namespace VC 79 } // namespace Internal 80 } // namespace OpenZWave 81 82 #endif 83 84