OpenZWave Library 1.6.1914
Loading...
Searching...
No Matches
MultiChannelAssociation.h
Go to the documentation of this file.
1//-----------------------------------------------------------------------------
2//
3// MultiChannelAssociation.h
4//
5// Implementation of the Z-Wave COMMAND_CLASS_MULTI_CHANNEL_ASSOCIATION
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 _MultiChannelAssociation_H
29#define _MultiChannelAssociation_H
30
31#include <vector>
32#include "Group.h"
34
35namespace OpenZWave
36{
37 namespace Internal
38 {
39 namespace CC
40 {
41
46 {
47 friend class OpenZWave::Group;
48
49 public:
50 static CommandClass* Create(uint32 const _homeId, uint8 const _nodeId)
51 {
52 return new MultiChannelAssociation(_homeId, _nodeId);
53 }
55 {
56 }
57
59 {
60 return 0x8e;
61 }
62 static string const StaticGetCommandClassName()
63 {
64 return "COMMAND_CLASS_MULTI_CHANNEL_ASSOCIATION";
65 }
66
67 // From CommandClass
68 virtual void ReadXML(TiXmlElement const* _ccElement) override;
69 virtual void WriteXML(TiXmlElement* _ccElement) override;
70 virtual bool RequestState(uint32 const _requestFlags, uint8 const _endPoint, Driver::MsgQueue const _queue) override;
71 virtual bool RequestValue(uint32 const _requestFlags, uint16 const _index, uint8 const _endPoint, Driver::MsgQueue const _queue) override;
72 virtual uint8 const GetCommandClassId() const override
73 {
75 }
76 virtual string const GetCommandClassName() const override
77 {
79 }
80 virtual bool HandleMsg(uint8 const* _data, uint32 const _length, uint32 const _endPoint = 1) override;
81
82 void RequestAllGroups(uint32 const _requestFlags);
83 void Set(uint8 const _group, uint8 const _nodeId, uint8 const _endPoint);
84 void Remove(uint8 const _group, uint8 const _nodeId, uint8 const _endPoint);
85
86 bool supportsMultiInstance() override {
87 return false;
88 }
89 private:
90 MultiChannelAssociation(uint32 const _homeId, uint8 const _nodeId);
91 void QueryGroup(uint8 _groupIdx, uint32 const _requestFlags);
92 void AutoAssociate();
93
94 bool m_queryAll; // When true, once a group has been queried, we request the next one.
95 uint8 m_numGroups; // Number of groups supported by the device. 255 is reported by certain manufacturers and requires special handling.
96 uint8 m_currentGroupQuery; // The Current Group we are Querying for.
97 vector<InstanceAssociation> m_pendingMembers; // Used to build a list of group members from multiple reports
98
99 };
100 } // namespace CC
101 } // namespace Internal
102} // namespace OpenZWave
103
104#endif
105
unsigned short uint16
Definition Defs.h:88
unsigned int uint32
Definition Defs.h:91
unsigned char uint8
Definition Defs.h:85
MsgQueue
Definition Driver.h:660
Manages a group of devices (various nodes associated with each other).
Definition Group.h:72
Base class for all Z-Wave command classes.
Definition CommandClass.h:61
Implements COMMAND_CLASS_MULTI_CHANNEL_ASSOCIATION (0x8E), a Z-Wave device command class.
Definition MultiChannelAssociation.h:46
virtual void ReadXML(TiXmlElement const *_ccElement) override
Definition MultiChannelAssociation.cpp:69
static string const StaticGetCommandClassName()
Definition MultiChannelAssociation.h:62
virtual bool HandleMsg(uint8 const *_data, uint32 const _length, uint32 const _endPoint=1) override
Definition MultiChannelAssociation.cpp:191
bool supportsMultiInstance() override
Definition MultiChannelAssociation.h:86
virtual bool RequestValue(uint32 const _requestFlags, uint16 const _index, uint8 const _endPoint, Driver::MsgQueue const _queue) override
Definition MultiChannelAssociation.cpp:145
virtual void WriteXML(TiXmlElement *_ccElement) override
Definition MultiChannelAssociation.cpp:109
void RequestAllGroups(uint32 const _requestFlags)
Definition MultiChannelAssociation.cpp:168
void Remove(uint8 const _group, uint8 const _nodeId, uint8 const _endPoint)
Definition MultiChannelAssociation.cpp:400
virtual uint8 const GetCommandClassId() const override
Definition MultiChannelAssociation.h:72
virtual string const GetCommandClassName() const override
Definition MultiChannelAssociation.h:76
void Set(uint8 const _group, uint8 const _nodeId, uint8 const _endPoint)
Definition MultiChannelAssociation.cpp:357
virtual bool RequestState(uint32 const _requestFlags, uint8 const _endPoint, Driver::MsgQueue const _queue) override
Definition MultiChannelAssociation.cpp:130
virtual ~MultiChannelAssociation()
Definition MultiChannelAssociation.h:54
static uint8 const StaticGetCommandClassId()
Definition MultiChannelAssociation.h:58
static CommandClass * Create(uint32 const _homeId, uint8 const _nodeId)
Definition MultiChannelAssociation.h:50
Definition Bitfield.cpp:31