Skip to content

Commit 28ce86a

Browse files
authored
Merge pull request #336 from mlankamp/291---Device-Metadata
Issue:291 add device metadata
2 parents f458f0f + 59e7695 commit 28ce86a

File tree

6 files changed

+123
-7
lines changed

6 files changed

+123
-7
lines changed

lib/enums.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,3 +38,21 @@ var LogLevel;
3838
LogLevel[LogLevel["DebugMessagesAndHigher"] = 8] = "DebugMessagesAndHigher";
3939
LogLevel[LogLevel["ProtocolInformationAndHigher"] = 9] = "ProtocolInformationAndHigher";
4040
})(LogLevel = exports.LogLevel || (exports.LogLevel = {}));
41+
var MetaDataFields;
42+
(function (MetaDataFields) {
43+
MetaDataFields[MetaDataFields["OzwInfoPage_URL"] = 0] = "OzwInfoPage_URL";
44+
MetaDataFields[MetaDataFields["ZWProductPage_URL"] = 1] = "ZWProductPage_URL";
45+
MetaDataFields[MetaDataFields["ProductPic"] = 2] = "ProductPic";
46+
MetaDataFields[MetaDataFields["Description"] = 3] = "Description";
47+
MetaDataFields[MetaDataFields["ProductManual_URL"] = 4] = "ProductManual_URL";
48+
MetaDataFields[MetaDataFields["ProductPage_URL"] = 5] = "ProductPage_URL";
49+
MetaDataFields[MetaDataFields["InclusionHelp"] = 6] = "InclusionHelp";
50+
MetaDataFields[MetaDataFields["ExclusionHelp"] = 7] = "ExclusionHelp";
51+
MetaDataFields[MetaDataFields["ResetHelp"] = 8] = "ResetHelp";
52+
MetaDataFields[MetaDataFields["WakeupHelp"] = 9] = "WakeupHelp";
53+
MetaDataFields[MetaDataFields["ProductSupport_URL"] = 10] = "ProductSupport_URL";
54+
MetaDataFields[MetaDataFields["Frequency"] = 11] = "Frequency";
55+
MetaDataFields[MetaDataFields["Name"] = 12] = "Name";
56+
MetaDataFields[MetaDataFields["Identifier"] = 13] = "Identifier";
57+
MetaDataFields[MetaDataFields["Invalid"] = 255] = "Invalid";
58+
})(MetaDataFields = exports.MetaDataFields || (exports.MetaDataFields = {}));

lib/enums.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,3 +35,21 @@ export enum LogLevel {
3535
DebugMessagesAndHigher = 8,
3636
ProtocolInformationAndHigher = 9
3737
}
38+
39+
export enum MetaDataFields {
40+
OzwInfoPage_URL = 0,
41+
ZWProductPage_URL = 1,
42+
ProductPic = 2,
43+
Description = 3,
44+
ProductManual_URL = 4,
45+
ProductPage_URL = 5,
46+
InclusionHelp = 6,
47+
ExclusionHelp = 7,
48+
ResetHelp = 8,
49+
WakeupHelp = 9,
50+
ProductSupport_URL = 10,
51+
Frequency = 11,
52+
Name = 12,
53+
Identifier = 13,
54+
Invalid = 255
55+
}

src/openzwave-nodes.cc

Lines changed: 48 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -305,14 +305,14 @@ namespace OZW {
305305
OZWManagerAssign(result, IsNodeSecurityDevice, homeid, nodeid);
306306
info.GetReturnValue().Set(Nan::New<Boolean>(result));
307307
}
308-
308+
309309
// ===================================================================
310310
NAN_METHOD(OZW::GetNodePlusTypeString)
311311
// ===================================================================
312312
{
313313
Nan::HandleScope scope;
314314
CheckMinArgs(1, "nodeid");
315-
uint8 nodeid = Nan::To<Number>(info[0]).ToLocalChecked()->Value();
315+
uint8 nodeid = Nan::To<Number>(info[0]).ToLocalChecked()->Value();
316316
::std::string result = OpenZWave::Manager::Get()->GetNodePlusTypeString(homeid, nodeid);
317317
info.GetReturnValue().Set(Nan::New<String>(result.c_str()).ToLocalChecked());
318318
}
@@ -324,7 +324,7 @@ namespace OZW {
324324
{
325325
Nan::HandleScope scope;
326326
CheckMinArgs(1, "nodeid");
327-
uint8 nodeid = Nan::To<Number>(info[0]).ToLocalChecked()->Value();
327+
uint8 nodeid = Nan::To<Number>(info[0]).ToLocalChecked()->Value();
328328
::std::string result = OpenZWave::Manager::Get()->GetNodeRoleString(homeid, nodeid);
329329
info.GetReturnValue().Set(Nan::New<String>(result.c_str()).ToLocalChecked());
330330
}
@@ -336,7 +336,7 @@ namespace OZW {
336336
{
337337
Nan::HandleScope scope;
338338
CheckMinArgs(1, "nodeid");
339-
uint8 nodeid = Nan::To<Number>(info[0]).ToLocalChecked()->Value();
339+
uint8 nodeid = Nan::To<Number>(info[0]).ToLocalChecked()->Value();
340340
uint8 result = OpenZWave::Manager::Get()->GetNodePlusType(homeid, nodeid);
341341
info.GetReturnValue().Set(Nan::New<Integer>(result));
342342
}
@@ -348,7 +348,7 @@ namespace OZW {
348348
{
349349
Nan::HandleScope scope;
350350
CheckMinArgs(1, "nodeid");
351-
uint8 nodeid = Nan::To<Number>(info[0]).ToLocalChecked()->Value();
351+
uint8 nodeid = Nan::To<Number>(info[0]).ToLocalChecked()->Value();
352352
uint8 result = OpenZWave::Manager::Get()->GetNodeRole(homeid, nodeid);
353353
info.GetReturnValue().Set(Nan::New<Integer>(result));
354354
}
@@ -360,7 +360,7 @@ namespace OZW {
360360
{
361361
Nan::HandleScope scope;
362362
CheckMinArgs(1, "nodeid");
363-
uint8 nodeid = Nan::To<Number>(info[0]).ToLocalChecked()->Value();
363+
uint8 nodeid = Nan::To<Number>(info[0]).ToLocalChecked()->Value();
364364
::std::string result = OpenZWave::Manager::Get()->GetNodeDeviceTypeString(homeid, nodeid);
365365
info.GetReturnValue().Set(Nan::New<String>(result.c_str()).ToLocalChecked());
366366
}
@@ -372,7 +372,7 @@ namespace OZW {
372372
{
373373
Nan::HandleScope scope;
374374
CheckMinArgs(1, "nodeid");
375-
uint8 nodeid = Nan::To<Number>(info[0]).ToLocalChecked()->Value();
375+
uint8 nodeid = Nan::To<Number>(info[0]).ToLocalChecked()->Value();
376376
uint16 result = OpenZWave::Manager::Get()->GetNodeDeviceType(homeid, nodeid);
377377
info.GetReturnValue().Set(Nan::New<Integer>(result));
378378
}
@@ -648,4 +648,45 @@ namespace OZW {
648648
OZWManager( SetNodeProductName, homeid, nodeid, name);
649649
}
650650

651+
#if OPENZWAVE_16
652+
/*
653+
*
654+
*/
655+
// ===================================================================
656+
NAN_METHOD(OZW::GetMetaData)
657+
// ===================================================================
658+
{
659+
Nan::HandleScope scope;
660+
CheckMinArgs(2, "nodeid, metadata");
661+
uint8 nodeid = Nan::To<Number>(info[0]).ToLocalChecked()->Value();
662+
OpenZWave::Node::MetaDataFields metadata = static_cast<OpenZWave::Node::MetaDataFields>(Nan::To<int>(info[1]).ToChecked());
663+
::std::string result("");
664+
OZWManagerAssign(result, GetMetaData, homeid, nodeid, metadata);
665+
info.GetReturnValue().Set(Nan::New<String>(result.c_str()).ToLocalChecked());
666+
}
667+
668+
/*
669+
*
670+
*/
671+
// ===================================================================
672+
NAN_METHOD(OZW::GetChangeLog)
673+
// ===================================================================
674+
{
675+
Nan::HandleScope scope;
676+
CheckMinArgs(2, "nodeid, revision");
677+
uint8 nodeid = Nan::To<Number>(info[0]).ToLocalChecked()->Value();
678+
uint32_t revision = Nan::To<Number>(info[1]).ToLocalChecked()->Value();
679+
680+
OpenZWave::Node::ChangeLogEntry result;
681+
OZWManagerAssign(result, GetChangeLog, homeid, nodeid, revision);
682+
683+
Local <Object> changeLog = Nan::New<Object>();
684+
AddStringProp(changeLog, author, result.author);
685+
AddStringProp(changeLog, date, result.date);
686+
AddIntegerProp(changeLog, revision, result.revision);
687+
AddStringProp(changeLog, description, result.description);
688+
info.GetReturnValue().Set(changeLog);
689+
}
690+
#endif
691+
651692
}

src/openzwave.cc

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,10 @@ namespace OZW {
171171
Nan::SetPrototypeMethod(t, "isNodeBeamingDevice", OZW::IsNodeBeamingDevice); // ** new
172172
Nan::SetPrototypeMethod(t, "isNodeRoutingDevice", OZW::IsNodeRoutingDevice); // ** new
173173
Nan::SetPrototypeMethod(t, "isNodeSecurityDevice", OZW::IsNodeSecurityDevice); // ** new
174+
#if OPENZWAVE_16
175+
Nan::SetPrototypeMethod(t, "getMetaData", OZW::GetMetaData);
176+
Nan::SetPrototypeMethod(t, "getChangeLog", OZW::GetChangeLog);
177+
#endif
174178
// openzwave-values.cc
175179
Nan::SetPrototypeMethod(t, "setValue", OZW::SetValue);
176180
Nan::SetPrototypeMethod(t, "setValueLabel", OZW::SetValueLabel);

src/openzwave.hpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,7 @@ namespace OZW {
134134
static NAN_METHOD(IsNodeBeamingDevice);
135135
static NAN_METHOD(IsNodeRoutingDevice);
136136
static NAN_METHOD(IsNodeSecurityDevice);
137+
137138
// getter+setter pairs
138139
static NAN_METHOD(GetNodeLocation);
139140
static NAN_METHOD(SetNodeLocation);
@@ -166,6 +167,10 @@ namespace OZW {
166167
static NAN_METHOD(GetNodeProductType);
167168
static NAN_METHOD(GetNodeProductId);
168169
static NAN_METHOD(GetNodeNeighbors);
170+
#if OPENZWAVE_16
171+
static NAN_METHOD(GetMetaData);
172+
static NAN_METHOD(GetChangeLog);
173+
#endif
169174
// openzwave-values.cc
170175
static NAN_METHOD(SetValue);
171176
static NAN_METHOD(SetValueLabel);

types/openzwave-shared.d.ts

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,14 @@ declare module "openzwave-shared" {
2626
loc: string;
2727
}
2828

29+
export interface ChangeLogEntry
30+
{
31+
author: string;
32+
date: string;
33+
revision: number;
34+
description: string;
35+
}
36+
2937
export enum Notification {
3038
MessageComplete = 0,
3139
Timeout = 1,
@@ -63,6 +71,24 @@ declare module "openzwave-shared" {
6371
ProtocolInformationAndHigher = 9
6472
}
6573

74+
export enum MetaDataFields {
75+
OzwInfoPage_URL = 0,
76+
ZWProductPage_URL = 1,
77+
ProductPic = 2,
78+
Description = 3,
79+
ProductManual_URL = 4,
80+
ProductPage_URL = 5,
81+
InclusionHelp = 6,
82+
ExclusionHelp = 7,
83+
ResetHelp = 8,
84+
WakeupHelp = 9,
85+
ProductSupport_URL = 10,
86+
Frequency = 11,
87+
Name = 12,
88+
Identifier = 13,
89+
Invalid = 255
90+
}
91+
6692
export interface DriverStats {
6793
SOFCnt: number;
6894
ACKWaiting: number;
@@ -695,6 +721,10 @@ declare module "openzwave-shared" {
695721

696722
getNodeProductId(nodeId: number): string;
697723

724+
getMetaData(nodeId: number, metadata: ZWave.MetaDataFields): string;
725+
726+
getChangeLog(nodeId: number, revision: number): ZWave.ChangeLogEntry;
727+
698728
// Exposed by "openzwave-values.cc"
699729

700730
/**

0 commit comments

Comments
 (0)