Skip to content

Commit 2d3cd5b

Browse files
committed
More Tests
Fix Revert Tests
1 parent b3f63fb commit 2d3cd5b

9 files changed

Lines changed: 571 additions & 70 deletions

‎RDMSharp/Metadata/DataTreeBranch.cs‎

Lines changed: 29 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -386,7 +386,7 @@ DataTree getChildren(OneOfTypes oneOf, object o)
386386
return result;
387387
}
388388

389-
public static DataTreeBranch FromObject(object obj, object key, ERDM_Command command, ERDM_Parameter parameter)
389+
internal static DataTreeBranch FromObject(object obj, object key, ERDM_Command command, ERDM_Parameter parameter)
390390
{
391391
if (obj == null)
392392
return DataTreeBranch.Empty;
@@ -496,12 +496,36 @@ static DataTree[] convertToDataTree(object value, PropertyInfo[] properties, ERD
496496
if (attribute.Name.Contains("/"))
497497
{
498498
string[] path = attribute.Name.Split('/');
499-
if (!deeperChildren.TryGetValue(path[0], out List<DataTree> ddc))
499+
if (!val.GetType().IsArray)
500500
{
501-
ddc = new List<DataTree>();
502-
deeperChildren.TryAdd(path[0], ddc);
501+
if (!deeperChildren.TryGetValue(path[0], out List<DataTree> ddc))
502+
{
503+
ddc = new List<DataTree>();
504+
deeperChildren.TryAdd(path[0], ddc);
505+
}
506+
ddc.Add(new DataTree(path[1], attribute.Index, val));
507+
}
508+
else
509+
{
510+
List<DataTree> _children = new List<DataTree>();
511+
uint _index = 0;
512+
foreach (var cv in (Array)val)
513+
{
514+
string _name = path[1];
515+
if (string.IsNullOrWhiteSpace(_name))
516+
_name = null;
517+
if (!cv.GetType().GetConstructors().Any(c => c.GetCustomAttribute<DataTreeObjectConstructorAttribute>() is not null))
518+
_children.Add(new DataTree(_name, _index, cv));
519+
else
520+
{
521+
var _props = cv.GetType().GetProperties().Where(p => p.GetCustomAttributes<DataTreeObjectPropertyAttribute>() is not null);
522+
_children.Add(new DataTree(_name, _index, convertToDataTree(cv, _props.ToArray(), parameter)));
523+
}
524+
_index++;
525+
}
526+
527+
innerChildren.Add(new DataTree(path[0], attribute.Index, _children.ToArray()));
503528
}
504-
ddc.Add(new DataTree(path[1], attribute.Index, val));
505529
}
506530
else
507531
innerChildren.Add(new DataTree(attribute.Name, attribute.Index, val));

‎RDMSharp/RDM/PayloadObject/GetEndpointListResponse.cs‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ public GetEndpointListResponse(
3737
[DataTreeObjectDependecieProperty("endpoint_id", nameof(EndpointDescriptor.EndpointId), ERDM_Parameter.ENDPOINT_RESPONDERS, Command.ECommandDublicate.GetRequest)]
3838
[DataTreeObjectDependecieProperty("endpoint_id", nameof(EndpointDescriptor.EndpointId), ERDM_Parameter.ENDPOINT_RESPONDER_LIST_CHANGE, Command.ECommandDublicate.GetRequest)]
3939
[DataTreeObjectDependecieProperty("endpoint_id", nameof(EndpointDescriptor.EndpointId), ERDM_Parameter.BINDING_CONTROL_FIELDS, Command.ECommandDublicate.GetRequest)]
40-
[DataTreeObjectProperty("endpoints", 1)]
40+
[DataTreeObjectProperty("endpoints/", 1)]
4141
public EndpointDescriptor[] Endpoints { get; private set; }
4242
public const int PDL_MIN = 0x07;
4343
public const int PDL_MAX = 0xE5;

‎RDMSharp/RDM/PayloadObject/GetEndpointRespondersResponse.cs‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
namespace RDMSharp;
77

8-
[DataTreeObject(ERDM_Parameter.ENDPOINT_RESPONDERS, Command.ECommandDublicate.GetResponse, false, "uids")]
8+
[DataTreeObject(ERDM_Parameter.ENDPOINT_RESPONDERS, Command.ECommandDublicate.GetResponse)]
99
public class GetEndpointRespondersResponse : AbstractRDMPayloadObject
1010
{
1111
[DataTreeObjectConstructor]
@@ -31,7 +31,7 @@ public GetEndpointRespondersResponse(
3131
[DataTreeObjectProperty("list_change_number", 1)]
3232
public uint ListChangedNumber { get; private set; }
3333

34-
[DataTreeObjectProperty("uids", 2)]
34+
[DataTreeObjectProperty("uids/uid", 2)]
3535
public UID[] UIDs { get; private set; }
3636

3737
public const int PDL_MIN = 0x06;

‎RDMSharp/RDM/PayloadObject/RDMProxiedDevices.cs‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
namespace RDMSharp;
77

8-
[DataTreeObject(ERDM_Parameter.PROXIED_DEVICES, Command.ECommandDublicate.GetResponse, true, "device_uids")]
8+
[DataTreeObject(ERDM_Parameter.PROXIED_DEVICES, Command.ECommandDublicate.GetResponse, true)]
99
public class RDMProxiedDevices : AbstractRDMPayloadObject
1010
{
1111
[DataTreeObjectConstructor]
@@ -14,7 +14,7 @@ public RDMProxiedDevices([DataTreeObjectParameter(ERDM_Parameter.PROXIED_DEVICES
1414
this.Devices = devices;
1515
}
1616

17-
[DataTreeObjectProperty("device_uids", 0)]
17+
[DataTreeObjectProperty("device_uids/device_uid", 0)]
1818
public UID[] Devices { get; private set; }
1919
public const int PDL_MIN = 0;
2020
public const int PDL_MAX = 0xE4;

‎RDMSharp/RDM/PayloadObject/SetDiscoveryStateRequest.cs‎

Lines changed: 52 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -2,60 +2,59 @@
22
using RDMSharp.Metadata.JSON;
33
using System.Collections.Generic;
44

5-
namespace RDMSharp
5+
namespace RDMSharp;
6+
7+
[DataTreeObject(ERDM_Parameter.DISCOVERY_STATE, Command.ECommandDublicate.SetRequest)]
8+
public class SetDiscoveryStateRequest : AbstractRDMPayloadObject
69
{
7-
[DataTreeObject(ERDM_Parameter.DISCOVERY_STATE, Command.ECommandDublicate.SetResponse)]
8-
public class SetDiscoveryStateRequest : AbstractRDMPayloadObject
10+
public SetDiscoveryStateRequest(
11+
ushort endpointId = default,
12+
ERDM_DiscoveryState discoveryState = default)
13+
{
14+
this.EndpointId = endpointId;
15+
this.DiscoveryState = discoveryState;
16+
}
17+
[DataTreeObjectConstructor]
18+
public SetDiscoveryStateRequest(
19+
[DataTreeObjectParameter("endpoint_id")] ushort endpointId,
20+
[DataTreeObjectParameter("state")] byte discoveryState)
21+
: this(endpointId, (ERDM_DiscoveryState)discoveryState)
22+
{
23+
}
24+
25+
[DataTreeObjectProperty("endpoint_id", 0)]
26+
public ushort EndpointId { get; private set; }
27+
[DataTreeObjectProperty("state", 1)]
28+
public ERDM_DiscoveryState DiscoveryState { get; private set; }
29+
public const int PDL = 0x03;
30+
31+
public override string ToString()
32+
{
33+
return $"Endpoint: {EndpointId} - DiscoveryState: {DiscoveryState}";
34+
}
35+
36+
public static SetDiscoveryStateRequest FromMessage(RDMMessage msg)
37+
{
38+
RDMMessageInvalidException.ThrowIfInvalidPDL(msg, ERDM_Command.GET_COMMAND_RESPONSE, ERDM_Parameter.DISCOVERY_STATE, PDL);
39+
40+
return FromPayloadData(msg.ParameterData);
41+
}
42+
public static SetDiscoveryStateRequest FromPayloadData(byte[] data)
43+
{
44+
RDMMessageInvalidPDLException.ThrowIfInvalidPDL(data, PDL);
45+
46+
var i = new SetDiscoveryStateRequest(
47+
endpointId: Tools.DataToUShort(ref data),
48+
discoveryState: Tools.DataToEnum<ERDM_DiscoveryState>(ref data));
49+
50+
return i;
51+
}
52+
53+
public override byte[] ToPayloadData()
954
{
10-
public SetDiscoveryStateRequest(
11-
ushort endpointId = default,
12-
ERDM_DiscoveryState discoveryState = default)
13-
{
14-
this.EndpointId = endpointId;
15-
this.DiscoveryState = discoveryState;
16-
}
17-
[DataTreeObjectConstructor]
18-
public SetDiscoveryStateRequest(
19-
[DataTreeObjectParameter("endpoint_id")] ushort endpointId,
20-
[DataTreeObjectParameter("state")] byte discoveryState)
21-
: this(endpointId, (ERDM_DiscoveryState)discoveryState)
22-
{
23-
}
24-
25-
[DataTreeObjectProperty("endpoint_id", 0)]
26-
public ushort EndpointId { get; private set; }
27-
[DataTreeObjectProperty("state", 1)]
28-
public ERDM_DiscoveryState DiscoveryState { get; private set; }
29-
public const int PDL = 0x03;
30-
31-
public override string ToString()
32-
{
33-
return $"Endpoint: {EndpointId} - DiscoveryState: {DiscoveryState}";
34-
}
35-
36-
public static SetDiscoveryStateRequest FromMessage(RDMMessage msg)
37-
{
38-
RDMMessageInvalidException.ThrowIfInvalidPDL(msg, ERDM_Command.GET_COMMAND_RESPONSE, ERDM_Parameter.DISCOVERY_STATE, PDL);
39-
40-
return FromPayloadData(msg.ParameterData);
41-
}
42-
public static SetDiscoveryStateRequest FromPayloadData(byte[] data)
43-
{
44-
RDMMessageInvalidPDLException.ThrowIfInvalidPDL(data, PDL);
45-
46-
var i = new SetDiscoveryStateRequest(
47-
endpointId: Tools.DataToUShort(ref data),
48-
discoveryState: Tools.DataToEnum<ERDM_DiscoveryState>(ref data));
49-
50-
return i;
51-
}
52-
53-
public override byte[] ToPayloadData()
54-
{
55-
List<byte> data = new List<byte>();
56-
data.AddRange(Tools.ValueToData(this.EndpointId));
57-
data.AddRange(Tools.ValueToData(this.DiscoveryState));
58-
return data.ToArray();
59-
}
55+
List<byte> data = new List<byte>();
56+
data.AddRange(Tools.ValueToData(this.EndpointId));
57+
data.AddRange(Tools.ValueToData(this.DiscoveryState));
58+
return data.ToArray();
6059
}
6160
}

‎RDMSharp/RDM/Tools.cs‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ public static class Constants
5656
ERDM_Parameter.INTERFACE_LABEL,
5757

5858
ERDM_Parameter.ENDPOINT_TIMING_DESCRIPTION,
59+
ERDM_Parameter.BACKGROUND_QUEUED_STATUS_POLICY_DESCRIPTION,
5960

6061
ERDM_Parameter.NACK_DESCRIPTION,
6162
ERDM_Parameter.ENUM_LABEL

0 commit comments

Comments
 (0)