File: ozwcp.h

package info (click to toggle)
openzwave-controlpanel 1.6~git20200306.4b8a39d-1
  • links: PTS, VCS
  • area: non-free
  • in suites: bookworm
  • size: 528 kB
  • sloc: cpp: 6,395; javascript: 1,415; makefile: 100; sh: 51
file content (128 lines) | stat: -rw-r--r-- 4,056 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
//-----------------------------------------------------------------------------
//
//	ozwcp.h
//
//	OpenZWave Control Panel
//
//	Copyright (c) 2010 Greg Satz <satz@iranger.com>
//	All rights reserved.
//
// SOFTWARE NOTICE AND LICENSE
// This work (including software, documents, or other related items) is being
// provided by the copyright holders under the following license. By obtaining,
// using and/or copying this work, you (the licensee) agree that you have read,
// understood, and will comply with the following terms and conditions:
//
// Permission to use, copy, and distribute this software and its documentation,
// without modification, for any purpose and without fee or royalty is hereby
// granted, provided that you include the full text of this NOTICE on ALL
// copies of the software and documentation or portions thereof.
//
// THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS
// MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT
// LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR
// PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE
// ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
//
// COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR
// CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR
// DOCUMENTATION.
//
// The name and trademarks of copyright holders may NOT be used in advertising
// or publicity pertaining to the software without specific, written prior
// permission.  Title to copyright in this software and any associated
// documentation will at all times remain with copyright holders.
//-----------------------------------------------------------------------------

#include <list>
#include <algorithm>
#include "Driver.h"
#include "Notification.h"
#include "ValueStore.h"
#include "Value.h"
#include "ValueBool.h"
#include "ValueByte.h"
#include "ValueDecimal.h"
#include "ValueInt.h"
#include "ValueList.h"
#include "ValueShort.h"
#include "ValueString.h"

using namespace OpenZWave;

#define MAX_NODES 255
#define DEFAULT_PORT 8090

extern const char *valueGenreStr(ValueID::ValueGenre);
extern ValueID::ValueGenre valueGenreNum(char const *);
extern const char *valueTypeStr(ValueID::ValueType);
extern ValueID::ValueType valueTypeNum(char const *);
extern const char *nodeBasicStr(uint8);
extern const char *cclassStr(uint8);
extern uint8 cclassNum(char const *str);
extern const char *controllerErrorStr(Driver::ControllerError err);

class MyValue
{
  friend class MyNode;

public:
  MyValue(ValueID id) : id(id){};
  ~MyValue(){};
  ValueID getId() { return id; }

private:
  ValueID id;
};

typedef struct
{
  uint8 groupid;
  uint8 max;
  string label;
  vector<string> grouplist;
} MyGroup;

class MyNode
{
public:
  MyNode(int32 const);
  static void remove(int32 const);
  static int32 getNodeCount() { return nodecount; };
  void sortValues();
  void addValue(ValueID id);
  void removeValue(ValueID id);
  void saveValue(ValueID id);
  uint16 getValueCount();
  static MyValue *lookup(string id);
  MyValue *getValue(uint16 n);
  uint32 getTime() { return mtime; }
  void setTime(uint32 t) { mtime = t; }
  static bool getAnyChanged() { return nodechanged; }
  static void setAllChanged(bool ch);
  bool getChanged() { return changed; }
  void setChanged(bool ch)
  {
    changed = ch;
    nodechanged = ch;
  }
  static void addRemoved(uint8 node) { removed.push_back(node); }
  static uint32 getRemovedCount() { return removed.size(); }
  static uint8 getRemoved();
  void addGroup(uint8 node, uint8 g, uint8 n, InstanceAssociation *v);
  MyGroup *getGroup(uint8 i);
  void updateGroup(uint8 node, uint8 grp, char *glist);
  uint8 numGroups() { return groups.size(); }
  void updatePoll(char *ilist, char *plist);

private:
  ~MyNode();
  void newGroup(uint8 n);
  static int32 nodecount;
  uint32 mtime;
  bool changed;
  static bool nodechanged;
  static list<uint8> removed;
  vector<MyGroup *> groups;
  vector<MyValue *> values;
};