OpenZWave Library  1.6.1392
CompatOptionManager.h
Go to the documentation of this file.
1 //-----------------------------------------------------------------------------
2 //
3 // CompatOptionManager.h
4 //
5 // Handles Compatibility Flags in Config Files
6 //
7 // Copyright (c) 2019 Justin Hammond <justin@dynam.ac>
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 CPP_SRC_COMPATOPTIONMANAGER_H_
29 #define CPP_SRC_COMPATOPTIONMANAGER_H_
30 
31 #include "Defs.h"
32 #include "tinyxml.h"
33 
34 #include <map>
35 
36 namespace OpenZWave
37 {
38 
39  namespace Internal
40  {
41  namespace CC
42  {
43  class CommandClass;
44  }
45 
47  {
88  };
89 
91  {
100  };
101 
103  {
106  };
107 
109  {
112  bool changed;
113  /* when a single Value (not a FLAG_TYPE_*_ARRAY) this union holds the actual value
114  * but when its a FLAG_*_ARRAY, this union holds the default value
115  */
116  union
117  {
118  bool valBool;
119  uint8_t valByte;
120  uint16_t valShort;
121  uint32_t valInt;
122  };
123  /* Only when FLAG_TYPE_*_ARRAY is this union used, and holds
124  * individual values for each key. Default Value is taken from
125  * the above Union
126  */
127  /* oh - And we can't use a Union here with a non-POD type */
128  std::map<uint32_t, bool> valBoolArray;
129  std::map<uint32_t, uint8_t> valByteArray;
130  std::map<uint32_t, uint16_t> valShortArray;
131  std::map<uint32_t, uint32_t> valIntArray;
132  };
133 
135  {
136  string name;
139  };
140 
142  {
143  public:
145  virtual ~CompatOptionManager();
146 
147  void SetNodeAndCC(uint8_t node, uint8_t cc);
148  void EnableFlag(CompatOptionFlags flag, uint32_t defaultval);
149 
150  void ReadXML(TiXmlElement const* _ccElement);
151  void WriteXML(TiXmlElement* _ccElement);
152  bool GetFlagBool(CompatOptionFlags flag, uint32_t index = -1) const;
153  uint8_t GetFlagByte(CompatOptionFlags flag, uint32_t index = -1) const;
154  uint16_t GetFlagShort(CompatOptionFlags flag, uint32_t index = -1) const;
155  uint32_t GetFlagInt(CompatOptionFlags flag, uint32_t index = -1) const;
156  bool SetFlagBool(CompatOptionFlags flag, bool value, uint32_t index = -1);
157  bool SetFlagByte(CompatOptionFlags flag, uint8_t value, uint32_t index = -1);
158  bool SetFlagShort(CompatOptionFlags flag, uint16_t value, uint32_t index = -1);
159  bool SetFlagInt(CompatOptionFlags flag, uint32_t value, uint32_t index = -1);
160  private:
161  string GetFlagName(CompatOptionFlags flag) const;
162  string GetXMLTagName();
163  map<CompatOptionFlags, CompatOptionFlagStorage> m_CompatVals;
164  map<string, CompatOptionFlags> m_enabledCompatFlags;
166  CompatOptionType m_comtype;
167  CompatOptionFlagDefintions *m_availableFlags;
168  uint32_t m_availableFlagsCount;
169  };
170  } // namespace Internal
171 } /* namespace OpenZWave */
172 
173 #endif /* CPP_SRC_COMPATOPTIONMANAGER_H_ */
OpenZWave::Internal::CompatOptionFlagDefintions::name
string name
Definition: CompatOptionManager.h:136
OpenZWave::Internal::CompatOptionManager::WriteXML
void WriteXML(TiXmlElement *_ccElement)
Definition: CompatOptionManager.cpp:329
OpenZWave::Internal::CompatOptionType_Discovery
@ CompatOptionType_Discovery
Definition: CompatOptionManager.h:105
OpenZWave::Internal::CompatOptionFlagStorage::valInt
uint32_t valInt
Definition: CompatOptionManager.h:121
OpenZWave::Internal::CompatOptionManager::SetFlagInt
bool SetFlagInt(CompatOptionFlags flag, uint32_t value, uint32_t index=-1)
Definition: CompatOptionManager.cpp:647
OpenZWave::Internal::CompatOptionFlagDefintions::flag
CompatOptionFlags flag
Definition: CompatOptionManager.h:137
OpenZWave::Internal::COMPAT_FLAG_NO_REFRESH_AFTER_SET
@ COMPAT_FLAG_NO_REFRESH_AFTER_SET
Definition: CompatOptionManager.h:71
OpenZWave::Internal::COMPAT_FLAG_TYPE_INT_ARRAY
@ COMPAT_FLAG_TYPE_INT_ARRAY
Definition: CompatOptionManager.h:99
OpenZWave::Internal::COMPAT_FLAG_FORCEVERSION
@ COMPAT_FLAG_FORCEVERSION
Definition: CompatOptionManager.h:50
OpenZWave::Internal::CompatOptionFlagDefintions
Definition: CompatOptionManager.h:135
OpenZWave::Internal::STATE_FLAG_CCVERSION
@ STATE_FLAG_CCVERSION
Definition: CompatOptionManager.h:72
OpenZWave::Internal::STATE_FLAG_AFTERMARK
@ STATE_FLAG_AFTERMARK
Definition: CompatOptionManager.h:74
OpenZWave::Internal::CompatOptionManager::GetFlagInt
uint32_t GetFlagInt(CompatOptionFlags flag, uint32_t index=-1) const
Definition: CompatOptionManager.cpp:523
OpenZWave::Internal::CompatOptionFlags
CompatOptionFlags
Definition: CompatOptionManager.h:47
OpenZWave::Internal::COMPAT_FLAG_BASIC_IGNOREREMAPPING
@ COMPAT_FLAG_BASIC_IGNOREREMAPPING
Definition: CompatOptionManager.h:53
OpenZWave::Internal::CompatOptionManager::GetFlagShort
uint16_t GetFlagShort(CompatOptionFlags flag, uint32_t index=-1) const
Definition: CompatOptionManager.cpp:495
OpenZWave::Internal::COMPAT_FLAG_MI_REMOVECC
@ COMPAT_FLAG_MI_REMOVECC
Definition: CompatOptionManager.h:67
OpenZWave::Internal::CompatOptionManager::GetFlagByte
uint8_t GetFlagByte(CompatOptionFlags flag, uint32_t index=-1) const
Definition: CompatOptionManager.cpp:467
OpenZWave::Internal::COMPAT_FLAG_MCA_FORCEINSTANCES
@ COMPAT_FLAG_MCA_FORCEINSTANCES
Definition: CompatOptionManager.h:57
OpenZWave::Internal::COMPAT_FLAG_TYPE_SHORT_ARRAY
@ COMPAT_FLAG_TYPE_SHORT_ARRAY
Definition: CompatOptionManager.h:98
OpenZWave::Internal::COMPAT_FLAG_VERSION_GETCLASSVERSION
@ COMPAT_FLAG_VERSION_GETCLASSVERSION
Definition: CompatOptionManager.h:65
OpenZWave::Internal::CompatOptionManager::SetFlagByte
bool SetFlagByte(CompatOptionFlags flag, uint8_t value, uint32_t index=-1)
Definition: CompatOptionManager.cpp:583
OpenZWave::Internal::CompatOptionFlagStorage
Definition: CompatOptionManager.h:109
OpenZWave::Internal::STATE_FLAG_ENCRYPTED
@ STATE_FLAG_ENCRYPTED
Definition: CompatOptionManager.h:75
OpenZWave::Internal::COMPAT_FLAG_MI_ENDPOINTHINT
@ COMPAT_FLAG_MI_ENDPOINTHINT
Definition: CompatOptionManager.h:61
OpenZWave::Internal::CompatOptionType_Compatibility
@ CompatOptionType_Compatibility
Definition: CompatOptionManager.h:104
OpenZWave::Internal::CompatOptionFlagStorage::changed
bool changed
Definition: CompatOptionManager.h:112
OpenZWave::Internal::STATE_FLAG_INNIF
@ STATE_FLAG_INNIF
Definition: CompatOptionManager.h:76
OpenZWave::Internal::COMPAT_FLAG_MI_IGNMCCAPREPORTS
@ COMPAT_FLAG_MI_IGNMCCAPREPORTS
Definition: CompatOptionManager.h:60
OpenZWave::Internal::CompatOptionFlagStorage::valByte
uint8_t valByte
Definition: CompatOptionManager.h:119
OpenZWave::Internal::CompatOptionManager::ReadXML
void ReadXML(TiXmlElement const *_ccElement)
Definition: CompatOptionManager.cpp:160
OpenZWave::Internal::COMPAT_FLAG_TYPE_INT
@ COMPAT_FLAG_TYPE_INT
Definition: CompatOptionManager.h:95
OpenZWave::Internal::STATE_FLAG_DOORLOCK_INSIDEMODE
@ STATE_FLAG_DOORLOCK_INSIDEMODE
Definition: CompatOptionManager.h:82
OpenZWave::Internal::CompatOptionManager::SetFlagShort
bool SetFlagShort(CompatOptionFlags flag, uint16_t value, uint32_t index=-1)
Definition: CompatOptionManager.cpp:615
OpenZWave::Internal::CompatOptionFlagStorage::valShort
uint16_t valShort
Definition: CompatOptionManager.h:120
OpenZWave::Internal::COMPAT_FLAG_GETSUPPORTED
@ COMPAT_FLAG_GETSUPPORTED
Definition: CompatOptionManager.h:48
OpenZWave::Internal::STATE_FLAG_DOORLOCK_TIMEOUTMINS
@ STATE_FLAG_DOORLOCK_TIMEOUTMINS
Definition: CompatOptionManager.h:84
OpenZWave::Internal::STATE_FLAG_COLOR_CHANNELS
@ STATE_FLAG_COLOR_CHANNELS
Definition: CompatOptionManager.h:80
OpenZWave::Internal::COMPAT_FLAG_MI_MAPROOTTOENDPOINT
@ COMPAT_FLAG_MI_MAPROOTTOENDPOINT
Definition: CompatOptionManager.h:58
OpenZWave::Internal::COMPAT_FLAG_UC_EXPOSERAWVALUE
@ COMPAT_FLAG_UC_EXPOSERAWVALUE
Definition: CompatOptionManager.h:64
OpenZWave::Internal::CompatOptionFlagStorage::type
CompatOptionFlagType type
Definition: CompatOptionManager.h:111
OpenZWave::Internal::CompatOptionFlagStorage::valShortArray
std::map< uint32_t, uint16_t > valShortArray
Definition: CompatOptionManager.h:130
OpenZWave::Internal::CompatOptionType
CompatOptionType
Definition: CompatOptionManager.h:103
OpenZWave::Internal::COMPAT_FLAG_VERIFYCHANGED
@ COMPAT_FLAG_VERIFYCHANGED
Definition: CompatOptionManager.h:68
OpenZWave::Internal::COMPAT_FLAG_COLOR_IDXBUG
@ COMPAT_FLAG_COLOR_IDXBUG
Definition: CompatOptionManager.h:56
OpenZWave::Internal::STATE_FLAG_CS_SCENECOUNT
@ STATE_FLAG_CS_SCENECOUNT
Definition: CompatOptionManager.h:77
OpenZWave::Internal::STATE_FLAG_CCS_CHANGECOUNTER
@ STATE_FLAG_CCS_CHANGECOUNTER
Definition: CompatOptionManager.h:79
OpenZWave::Internal::CompatOptionManager::CompatOptionManager
CompatOptionManager(CompatOptionType type, Internal::CC::CommandClass *cc)
Definition: CompatOptionManager.cpp:88
OpenZWave::Internal::CompatOptionManager::~CompatOptionManager
virtual ~CompatOptionManager()
Definition: CompatOptionManager.cpp:104
OpenZWave::Internal::CompatOptionFlagStorage::valIntArray
std::map< uint32_t, uint32_t > valIntArray
Definition: CompatOptionManager.h:131
OpenZWave::Internal::STATE_FLAG_CS_CLEARTIMEOUT
@ STATE_FLAG_CS_CLEARTIMEOUT
Definition: CompatOptionManager.h:78
OpenZWave::Internal::STATE_FLAG_DOORLOCK_OUTSIDEMODE
@ STATE_FLAG_DOORLOCK_OUTSIDEMODE
Definition: CompatOptionManager.h:83
OpenZWave::Internal::COMPAT_FLAG_CREATEVARS
@ COMPAT_FLAG_CREATEVARS
Definition: CompatOptionManager.h:51
OpenZWave::Internal::COMPAT_FLAG_TYPE_BOOL
@ COMPAT_FLAG_TYPE_BOOL
Definition: CompatOptionManager.h:92
OpenZWave::Internal::COMPAT_FLAG_TYPE_BYTE_ARRAY
@ COMPAT_FLAG_TYPE_BYTE_ARRAY
Definition: CompatOptionManager.h:97
OpenZWave::Internal::COMPAT_FLAG_WAKEUP_DELAYNMI
@ COMPAT_FLAG_WAKEUP_DELAYNMI
Definition: CompatOptionManager.h:66
OpenZWave::Internal::CompatOptionFlagStorage::valBool
bool valBool
Definition: CompatOptionManager.h:118
OpenZWave::Internal::COMPAT_FLAG_TYPE_SHORT
@ COMPAT_FLAG_TYPE_SHORT
Definition: CompatOptionManager.h:94
OpenZWave::Internal::CompatOptionFlagDefintions::type
CompatOptionFlagType type
Definition: CompatOptionManager.h:138
OpenZWave::Internal::COMPAT_FLAG_TSSP_BASE
@ COMPAT_FLAG_TSSP_BASE
Definition: CompatOptionManager.h:62
OpenZWave::Internal::CompatOptionFlagStorage::flag
CompatOptionFlags flag
Definition: CompatOptionManager.h:110
OpenZWave::Internal::COMPAT_FLAG_TSSP_ALTTYPEINTERPRETATION
@ COMPAT_FLAG_TSSP_ALTTYPEINTERPRETATION
Definition: CompatOptionManager.h:63
OpenZWave::Internal::CompatOptionManager::EnableFlag
void EnableFlag(CompatOptionFlags flag, uint32_t defaultval)
Definition: CompatOptionManager.cpp:108
OpenZWave::Internal::STATE_FLAG_STATIC_REQUESTS
@ STATE_FLAG_STATIC_REQUESTS
Definition: CompatOptionManager.h:73
OpenZWave::Internal::CompatOptionManager::GetFlagBool
bool GetFlagBool(CompatOptionFlags flag, uint32_t index=-1) const
Definition: CompatOptionManager.cpp:440
OpenZWave::Internal::CompatOptionFlagType
CompatOptionFlagType
Definition: CompatOptionManager.h:91
OpenZWave::Internal::CC::CommandClass
Base class for all Z-Wave command classes.
Definition: CommandClass.h:61
OpenZWave::Internal::CompatOptionFlagStorage::valBoolArray
std::map< uint32_t, bool > valBoolArray
Definition: CompatOptionManager.h:128
OpenZWave::Internal::CompatOptionFlagStorage::valByteArray
std::map< uint32_t, uint8_t > valByteArray
Definition: CompatOptionManager.h:129
OpenZWave::Internal::COMPAT_FLAG_TYPE_BOOL_ARRAY
@ COMPAT_FLAG_TYPE_BOOL_ARRAY
Definition: CompatOptionManager.h:96
OpenZWave::Internal::CompatOptionManager::SetFlagBool
bool SetFlagBool(CompatOptionFlags flag, bool value, uint32_t index=-1)
Definition: CompatOptionManager.cpp:551
OpenZWave::Internal::COMPAT_FLAG_BASIC_MAPPING
@ COMPAT_FLAG_BASIC_MAPPING
Definition: CompatOptionManager.h:55
OpenZWave::Internal::STATE_FLAG_USERCODE_COUNT
@ STATE_FLAG_USERCODE_COUNT
Definition: CompatOptionManager.h:87
OpenZWave::Internal::COMPAT_FLAG_NOT_V1ALARMTYPES_ENABLED
@ COMPAT_FLAG_NOT_V1ALARMTYPES_ENABLED
Definition: CompatOptionManager.h:70
OpenZWave::Internal::STATE_FLAG_DOORLOCKLOG_MAXRECORDS
@ STATE_FLAG_DOORLOCKLOG_MAXRECORDS
Definition: CompatOptionManager.h:86
OpenZWave::Internal::COMPAT_FLAG_MI_FORCEUNIQUEENDPOINTS
@ COMPAT_FLAG_MI_FORCEUNIQUEENDPOINTS
Definition: CompatOptionManager.h:59
OpenZWave::Internal::STATE_FLAG_DOORLOCK_TIMEOUT
@ STATE_FLAG_DOORLOCK_TIMEOUT
Definition: CompatOptionManager.h:81
OpenZWave::Internal::COMPAT_FLAG_REFRESHONWAKEUP
@ COMPAT_FLAG_REFRESHONWAKEUP
Definition: CompatOptionManager.h:52
OpenZWave::Internal::STATE_FLAG_DOORLOCK_TIMEOUTSECS
@ STATE_FLAG_DOORLOCK_TIMEOUTSECS
Definition: CompatOptionManager.h:85
OpenZWave::Internal::CompatOptionManager
Definition: CompatOptionManager.h:142
OpenZWave::Internal::CompatOptionManager::SetNodeAndCC
void SetNodeAndCC(uint8_t node, uint8_t cc)
Defs.h
OpenZWave::Internal::COMPAT_FLAG_BASIC_SETASREPORT
@ COMPAT_FLAG_BASIC_SETASREPORT
Definition: CompatOptionManager.h:54
OpenZWave::Internal::COMPAT_FLAG_NOT_ENABLECLEAR
@ COMPAT_FLAG_NOT_ENABLECLEAR
Definition: CompatOptionManager.h:69
OpenZWave::Internal::COMPAT_FLAG_OVERRIDEPRECISION
@ COMPAT_FLAG_OVERRIDEPRECISION
Definition: CompatOptionManager.h:49
OpenZWave
Definition: Bitfield.cpp:31
OpenZWave::Internal::COMPAT_FLAG_TYPE_BYTE
@ COMPAT_FLAG_TYPE_BYTE
Definition: CompatOptionManager.h:93