Skip to content

Commit 13a1836

Browse files
Smart Start
1 parent 6b99e30 commit 13a1836

File tree

2 files changed

+21
-114
lines changed

2 files changed

+21
-114
lines changed

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

Lines changed: 0 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -934,62 +934,6 @@ private Task<CMDResult> _UnprovisionSmartStartNode(object dskOrNodeId)
934934
return Result.Task;
935935
}
936936

937-
// CHECKED
938-
public Task<CMDResult> ProvisionSmartStartNode(QRProvisioningInformation ProvisioningInformation)
939-
{
940-
Guid ID = Guid.NewGuid();
941-
TaskCompletionSource<CMDResult> Result = new TaskCompletionSource<CMDResult>();
942-
943-
if (_driver.Options != null && _driver.Options.MissingKeys(true, true))
944-
{
945-
CMDResult Res = new CMDResult(Enums.ErrorCodes.MissingKeys, "Missing Security Keys in Options", false);
946-
Result.SetResult(Res);
947-
return Result.Task;
948-
}
949-
950-
if (_driver.Options != null && !_driver.Options.CheckKeyLength())
951-
{
952-
CMDResult Res = new CMDResult(Enums.ErrorCodes.InvalidkeyLength, "Invalid Key length. All Security Keys must be a 32 character hexadecimal string (representing 16 bytes)", false);
953-
Result.SetResult(Res);
954-
return Result.Task;
955-
}
956-
957-
if (ProvisioningInformation.supportedProtocols.Contains(Protocols.ZWaveLongRange))
958-
{
959-
if (_driver.Options != null && _driver.Options.MissingLRKeys())
960-
{
961-
CMDResult Res = new CMDResult(Enums.ErrorCodes.MissingKeys, "Missing Security Keys in Options", false);
962-
Result.SetResult(Res);
963-
return Result.Task;
964-
}
965-
966-
967-
if (_driver.Options != null && !_driver.Options.CheckKeyLengthLR())
968-
{
969-
CMDResult Res = new CMDResult(Enums.ErrorCodes.InvalidkeyLength, "Invalid Key length. All Security Keys must be a 32 character hexadecimal string (representing 16 bytes)", false);
970-
Result.SetResult(Res);
971-
return Result.Task;
972-
}
973-
}
974-
975-
_driver.Callbacks.Add(ID, (JO) =>
976-
{
977-
CMDResult Res = new CMDResult(JO);
978-
Result.SetResult(Res);
979-
});
980-
981-
Dictionary<string, object> Request = new Dictionary<string, object>();
982-
983-
Request.Add("messageId", ID);
984-
Request.Add("command", Enums.Commands.ProvisionSmartStartNode);
985-
Request.Add("entry", ProvisioningInformation);
986-
987-
string RequestPL = Newtonsoft.Json.JsonConvert.SerializeObject(Request);
988-
_driver.ClientWebSocket.SendInstant(RequestPL);
989-
990-
return Result.Task;
991-
}
992-
993937
// CHECKED
994938
public Task<CMDResult> ProvisionSmartStartNode(SmartStartProvisioningEntry ProvisioningInformation)
995939
{
@@ -1046,44 +990,6 @@ public Task<CMDResult> ProvisionSmartStartNode(SmartStartProvisioningEntry Provi
1046990
return Result.Task;
1047991
}
1048992

1049-
// CHECKED
1050-
public Task<CMDResult> ProvisionSmartStartNode(string QRCode)
1051-
{
1052-
Guid ID = Guid.NewGuid();
1053-
TaskCompletionSource<CMDResult> Result = new TaskCompletionSource<CMDResult>();
1054-
1055-
if (_driver.Options != null && _driver.Options.MissingKeys(true, true))
1056-
{
1057-
CMDResult Res = new CMDResult(Enums.ErrorCodes.MissingKeys, "Missing Security Keys in Options", false);
1058-
Result.SetResult(Res);
1059-
return Result.Task;
1060-
}
1061-
1062-
if (_driver.Options != null && !_driver.Options.CheckKeyLength())
1063-
{
1064-
CMDResult Res = new CMDResult(Enums.ErrorCodes.InvalidkeyLength, "Invalid Key length. All Security Keys must be a 32 character hexadecimal string (representing 16 bytes)", false);
1065-
Result.SetResult(Res);
1066-
return Result.Task;
1067-
}
1068-
1069-
_driver.Callbacks.Add(ID, (JO) =>
1070-
{
1071-
CMDResult Res = new CMDResult(JO);
1072-
Result.SetResult(Res);
1073-
});
1074-
1075-
Dictionary<string, object> Request = new Dictionary<string, object>();
1076-
1077-
Request.Add("messageId", ID);
1078-
Request.Add("command", Enums.Commands.ProvisionSmartStartNode);
1079-
Request.Add("entry", QRCode);
1080-
1081-
string RequestPL = Newtonsoft.Json.JsonConvert.SerializeObject(Request);
1082-
_driver.ClientWebSocket.SendInstant(RequestPL);
1083-
1084-
return Result.Task;
1085-
}
1086-
1087993
// CHECKED
1088994
public Task<CMDResult> BeginExclusion(ExclusionOptions Options)
1089995
{

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

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using System.Collections.Generic;
33
using System.Dynamic;
44
using System.IO;
5+
using System.Linq;
56
using Newtonsoft.Json;
67
using static ZWaveJS.NET.Enums;
78

@@ -168,45 +169,45 @@ public class SmartStartProvisioningEntry
168169
{
169170
internal SmartStartProvisioningEntry() { }
170171

171-
public SmartStartProvisioningEntry(string dsk, SecurityClass[] securityClasses, Protocols protocol = Protocols.ZWave)
172+
public SmartStartProvisioningEntry(QRProvisioningInformation ProvisioningInformation, Protocols protocol = Protocols.ZWave, ProvisioningEntryStatus status = ProvisioningEntryStatus.Active)
173+
{
174+
if(!ProvisioningInformation.supportedProtocols.Contains(protocol))
175+
{
176+
throw new NotSupportedException("The provided protocol is not supported by this device.");
177+
}
178+
179+
this.dsk = ProvisioningInformation.dsk;
180+
this.securityClasses = ProvisioningInformation.securityClasses;
181+
this.requestedSecurityClasses = ProvisioningInformation.securityClasses;
182+
this.supportedProtocols = ProvisioningInformation.supportedProtocols;
183+
this.protocol = protocol;
184+
this.status = status;
185+
}
186+
187+
public SmartStartProvisioningEntry(string dsk, SecurityClass[] securityClasses, Protocols protocol = Protocols.ZWave, ProvisioningEntryStatus status = ProvisioningEntryStatus.Active)
172188
{
173189
this.dsk = dsk;
174190
this.securityClasses = securityClasses;
175191
this.requestedSecurityClasses = securityClasses;
176192
this.protocol = protocol;
193+
this.status = status;
177194
this.supportedProtocols = new Protocols[1] { protocol };
178195
}
179196

180197
[Newtonsoft.Json.JsonProperty]
181-
public ProvisioningEntryStatus status { get; internal set; }
198+
public ProvisioningEntryStatus? status { get; internal set; }
182199
[Newtonsoft.Json.JsonProperty]
183200
public string dsk { get; internal set; }
184201
[Newtonsoft.Json.JsonProperty]
185202
public Protocols? protocol { get; internal set; }
186203
[Newtonsoft.Json.JsonProperty]
187204
public Protocols[] supportedProtocols { get; internal set; }
188205
[Newtonsoft.Json.JsonProperty]
189-
public SecurityClass[] securityClasses { get; internal set; }
206+
public SecurityClass[] securityClasses { get; set; }
190207
[Newtonsoft.Json.JsonProperty]
191208
public SecurityClass[] requestedSecurityClasses { get; internal set; }
192209
[Newtonsoft.Json.JsonProperty]
193-
public int version { get; internal set; }
194-
[Newtonsoft.Json.JsonProperty]
195-
public int genericDeviceClass { get; internal set; }
196-
[Newtonsoft.Json.JsonProperty]
197-
public int specificDeviceClass { get; internal set; }
198-
[Newtonsoft.Json.JsonProperty]
199-
public int installerIconType { get; internal set; }
200-
[Newtonsoft.Json.JsonProperty]
201-
public int manufacturerId { get; internal set; }
202-
[Newtonsoft.Json.JsonProperty]
203-
public int productType { get; internal set; }
204-
[Newtonsoft.Json.JsonProperty]
205-
public int productId { get; internal set; }
206-
[Newtonsoft.Json.JsonProperty]
207-
public decimal applicationVersion { get; internal set; }
208-
[Newtonsoft.Json.JsonProperty]
209-
public int nodeId { get; internal set; }
210+
public int? nodeId { get; internal set; }
210211
}
211212

212213
public class RebuildRoutesOptions

0 commit comments

Comments
 (0)