Skip to content

Commit 533d7cc

Browse files
Add missing properties to ValueMetadata (#57)
* Add missing properties to ValueMetadata * Add ValueFormat parameter to ZWJSS_SetRawConfigParameterValue method * Align SetRawConfigParameterValue with Options object Variants --------- Co-authored-by: Marcus Davies <[email protected]>
1 parent e100d51 commit 533d7cc

File tree

3 files changed

+75
-3
lines changed

3 files changed

+75
-3
lines changed

Visual Studio Projects/ZWaveJS.NET/ZWaveJS.NET/Enums.cs

+9-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,14 @@
33
public class Enums
44
{
55

6+
public enum ConfigValueFormat
7+
{
8+
SignedInteger = 0x00,
9+
UnsignedInteger = 0x01,
10+
Enumerated = 0x02,
11+
BitField = 0x03
12+
}
13+
614
public enum SetValueStatus
715
{
816

@@ -13,7 +21,7 @@ public enum SetValueStatus
1321
NotImplemented = 0x04,
1422
InvalidValue = 0x05,
1523
SuccessUnsupervised = 0xfe,
16-
Success = 0xff,
24+
Success = 0xff
1725
}
1826

1927

Visual Studio Projects/ZWaveJS.NET/ZWaveJS.NET/Structures.cs

+9
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using System.Dynamic;
44
using System.IO;
55
using Newtonsoft.Json;
6+
using static ZWaveJS.NET.Enums;
67

78
namespace ZWaveJS.NET
89
{
@@ -240,6 +241,14 @@ internal ValueMetadata() { }
240241
public Dictionary<string, string> states { get; internal set; }
241242
[Newtonsoft.Json.JsonProperty]
242243
public Dictionary<string, object> ccSpecific { get; internal set; }
244+
[Newtonsoft.Json.JsonProperty]
245+
public int? valueSize { get; internal set; }
246+
[Newtonsoft.Json.JsonProperty]
247+
public ConfigValueFormat? format { get; internal set; }
248+
[Newtonsoft.Json.JsonProperty]
249+
public bool? allowManualEntry { get; internal set; }
250+
[Newtonsoft.Json.JsonProperty]
251+
public bool? isFromConfig { get; internal set; }
243252
}
244253

245254
public class DeviceClass

Visual Studio Projects/ZWaveJS.NET/ZWaveJS.NET/ZWaveNode.cs

+57-2
Original file line numberDiff line numberDiff line change
@@ -398,8 +398,34 @@ public Task<CMDResult> PollValue(ValueID ValueID)
398398
return Result.Task;
399399
}
400400

401-
// FIX ME
402-
public Task<CMDResult> ZWJSS_SetRawConfigParameterValue(int Parameter, int Value, int ValueSize)
401+
// CHECKED - Variant 1: Normal parameter, defined in a config file
402+
public Task<CMDResult> ZWJSS_SetRawConfigParameterValue(int Parameter, int Value)
403+
{
404+
Guid ID = Guid.NewGuid();
405+
406+
TaskCompletionSource<CMDResult> Result = new TaskCompletionSource<CMDResult>();
407+
Driver.Instance.Callbacks.Add(ID, (JO) =>
408+
{
409+
CMDResult Res = new CMDResult(JO);
410+
Result.SetResult(Res);
411+
});
412+
413+
Dictionary<string, object> Request = new Dictionary<string, object>();
414+
Request.Add("messageId", ID);
415+
Request.Add("command", Enums.Commands.SetRawConfigParameterValue);
416+
Request.Add("nodeId", this.id);
417+
Request.Add("parameter", Parameter);
418+
Request.Add("value", Value);
419+
420+
421+
string RequestPL = Newtonsoft.Json.JsonConvert.SerializeObject(Request);
422+
Driver.Instance.ClientWebSocket.SendInstant(RequestPL);
423+
424+
return Result.Task;
425+
}
426+
427+
// CHECKED - Variant 2: Normal parameter, not defined in a config file
428+
public Task<CMDResult> ZWJSS_SetRawConfigParameterValue(int Parameter, int Value, int ValueSize, Enums.ConfigValueFormat ValueFormat)
403429
{
404430
Guid ID = Guid.NewGuid();
405431

@@ -417,13 +443,42 @@ public Task<CMDResult> ZWJSS_SetRawConfigParameterValue(int Parameter, int Value
417443
Request.Add("parameter", Parameter);
418444
Request.Add("value", Value);
419445
Request.Add("valueSize", ValueSize);
446+
Request.Add("valueFormat", ValueFormat);
447+
420448

421449
string RequestPL = Newtonsoft.Json.JsonConvert.SerializeObject(Request);
422450
Driver.Instance.ClientWebSocket.SendInstant(RequestPL);
423451

424452
return Result.Task;
425453
}
426454

455+
// CHECKED - Variant 3: Partial parameter, must be defined in a config file
456+
public Task<CMDResult> ZWJSS_SetRawConfigParameterValue(int Parameter, int Bitmask, int Value)
457+
{
458+
Guid ID = Guid.NewGuid();
459+
460+
TaskCompletionSource<CMDResult> Result = new TaskCompletionSource<CMDResult>();
461+
Driver.Instance.Callbacks.Add(ID, (JO) =>
462+
{
463+
CMDResult Res = new CMDResult(JO);
464+
Result.SetResult(Res);
465+
});
466+
467+
Dictionary<string, object> Request = new Dictionary<string, object>();
468+
Request.Add("messageId", ID);
469+
Request.Add("command", Enums.Commands.SetRawConfigParameterValue);
470+
Request.Add("nodeId", this.id);
471+
Request.Add("parameter", Parameter);
472+
Request.Add("bitMask", Bitmask);
473+
Request.Add("value", Value);
474+
475+
476+
string RequestPL = Newtonsoft.Json.JsonConvert.SerializeObject(Request);
477+
Driver.Instance.ClientWebSocket.SendInstant(RequestPL);
478+
479+
return Result.Task;
480+
}
481+
427482
// CHECKED
428483
public Task<CMDResult> RefreshValues()
429484
{

0 commit comments

Comments
 (0)