Skip to content

Commit ea966f0

Browse files
committed
More work on cluster generation (commissioning is now working)
1 parent 346f5e8 commit ea966f0

File tree

10 files changed

+680
-32
lines changed

10 files changed

+680
-32
lines changed

Generator/ClusterGenerator.cs

Lines changed: 26 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,10 @@ private static void WriteClass(Cluster cluster, StreamWriter writer)
7979

8080
writer.WriteLine(" // Attributes");
8181
foreach (var attribute in cluster.attributes)
82-
WriteAttribute(attribute, writer);
82+
{
83+
if (attribute.type != null)
84+
WriteAttribute(attribute, writer);
85+
}
8386

8487
writer.WriteLine(" }");
8588
writer.Write("}");
@@ -93,10 +96,12 @@ private static void WriteStruct(clusterCommand command, bool toServer, StreamWri
9396
writer.WriteLine($" {(toServer ? "private record" : "public struct")} " + GeneratorUtil.SanitizeName(command.name) + (toServer ? "Payload : TLVPayload {" : " {"));
9497
foreach (clusterCommandField field in command.field)
9598
{
99+
if (field.type == null) //Reserved/removed fields
100+
continue;
96101
writer.Write(" public ");
97102
if (field.optionalConform == null)
98103
writer.Write("required ");
99-
WriteType(field.type, null, writer);
104+
WriteType(field.type, field.entry?.type, writer);
100105
if (field.optionalConform != null)
101106
writer.Write("?");
102107
if (field.name == GeneratorUtil.SanitizeName(command.name))
@@ -208,9 +213,9 @@ private static void WriteStructType(bool optional, string type, byte id, string
208213
case "uint56":
209214
case "uint64":
210215
case "epoch-us":
211-
case "posix-ms":
216+
case "ref_DataTypePosixMs":
212217
case "systime-us":
213-
case "systime-ms":
218+
case "ref_DataTypeSystemTimeMs":
214219
case "fabric-id":
215220
case "node-id":
216221
case "EUI64":
@@ -225,11 +230,11 @@ private static void WriteStructType(bool optional, string type, byte id, string
225230
writer.WriteLine($"{totalIndent}writer.WriteDouble({id}, {name});");
226231
break;
227232
case "octstr":
228-
case "ipadr":
229-
case "ipv4adr":
230-
case "ipv6adr":
233+
case "ref_IpAdr":
234+
case "ref_Ipv4Adr":
235+
case "ref_Ipv6Adr":
231236
case "ipv6pre":
232-
case "hwadr":
237+
case "Hardware Address":
233238
writer.WriteLine($"{totalIndent}writer.WriteBytes({id}, {name});");
234239
break;
235240
case "string":
@@ -274,8 +279,12 @@ private static void WriteCommands(Cluster cluster, StreamWriter writer)
274279
{
275280
foreach (var field in cmd.field)
276281
{
282+
if (field.type == null)
283+
continue;
277284
writer.Write(", ");
278-
WriteType(field.type, null, writer);
285+
WriteType(field.type, field.entry?.type, writer);
286+
if (field.optionalConform != null)
287+
writer.Write('?');
279288
writer.Write(" " + field.name);
280289
}
281290
}
@@ -290,7 +299,7 @@ private static void WriteCommands(Cluster cluster, StreamWriter writer)
290299
}
291300
else
292301
{
293-
if (cmd.response != "N")
302+
if (cmd.response == "N")
294303
writer.WriteLine(" await InteractionManager.SendCommand(session, endPoint, CLUSTER_ID, " + cmd.id + ");");
295304
else
296305
writer.WriteLine(" InvokeResponseIB resp = await InteractionManager.ExecCommand(session, endPoint, CLUSTER_ID, " + cmd.id + ");");
@@ -308,7 +317,7 @@ private static void WriteCommands(Cluster cluster, StreamWriter writer)
308317
foreach (var field in response.field)
309318
{
310319
writer.Write(" " + field.name + " = (");
311-
WriteType(field.type, null, writer);
320+
WriteType(field.type, field.entry?.type, writer);
312321
if (field.optionalConform != null)
313322
writer.WriteLine($"?)GetOptionalField(resp, {field.id}),");
314323
else
@@ -439,9 +448,9 @@ private static void WriteType(string type, string? entryType, StreamWriter write
439448
case "uint56":
440449
case "uint64":
441450
case "epoch-us":
442-
case "posix-ms":
451+
case "ref_DataTypePosixMs":
443452
case "systime-us":
444-
case "systime-ms":
453+
case "ref_DataTypeSystemTimeMs":
445454
case "fabric-id":
446455
case "node-id":
447456
case "EUI64":
@@ -479,11 +488,11 @@ private static void WriteType(string type, string? entryType, StreamWriter write
479488
writer.Write("float");
480489
break;
481490
case "octstr":
482-
case "ipadr":
483-
case "ipv4adr":
484-
case "ipv6adr":
491+
case "ref_IpAdr":
492+
case "ref_Ipv4Adr":
493+
case "ref_Ipv6Adr":
485494
case "ipv6pre":
486-
case "hwadr":
495+
case "Hardware Address":
487496
writer.Write("byte[]");
488497
break;
489498
case "bool":

0 commit comments

Comments
 (0)