Skip to content

Commit 3d84d25

Browse files
authored
Feature/e1.37 5 (#34)
* Add Parameter IDs E1.37-5 * Add some 1.37-5 Parameters * Add more Parameter * Add missing Parameters and fix Tests
1 parent 206040d commit 3d84d25

File tree

69 files changed

+1649
-337
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

69 files changed

+1649
-337
lines changed

RDMSharp/ParameterWrapper/Abstract/AbstractRDMGetParameterWrapper.cs

+9-3
Original file line numberDiff line numberDiff line change
@@ -81,16 +81,22 @@ public RDMMessage BuildGetResponseMessage(GetResponse getResponseValue)
8181
return this.buildGetResponseMessage(getResponseValue);
8282
}
8383

84+
#endregion
85+
}
86+
public abstract class AbstractRDMGetParameterWrapperRanged<GetRequest, GetResponse> : AbstractRDMGetParameterWrapper<GetRequest, GetResponse>, IRDMGetParameterWrapperRequestRanged, IRDMGetParameterWrapperRequestRanged<GetRequest>
87+
{
88+
protected AbstractRDMGetParameterWrapperRanged(in ERDM_Parameter parameter) : base(parameter)
89+
{
90+
}
8491
public abstract IRequestRange GetRequestRange(object value);
85-
IRequestRange IRDMGetParameterWrapperRequest.GetRequestRange(object value)
92+
IRequestRange IRDMGetParameterWrapperRequestRanged.GetRequestRange(object value)
8693
{
8794
return this.GetRequestRange(value);
8895
}
8996

90-
IRequestRange<GetRequest> IRDMGetParameterWrapperRequest<GetRequest>.GetRequestRange(object value)
97+
IRequestRange<GetRequest> IRDMGetParameterWrapperRequestRanged<GetRequest>.GetRequestRange(object value)
9198
{
9299
return (IRequestRange<GetRequest>)this.GetRequestRange(value);
93100
}
94-
#endregion
95101
}
96102
}

RDMSharp/ParameterWrapper/Abstract/AbstractRDMGetSetParameterWrapper.cs

+18-13
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,24 @@
22

33
namespace RDMSharp.ParameterWrapper
44
{
5-
public abstract class AbstractRDMGetSetParameterWrapper<GetRequest, GetResponse, SetRequest, SetResponse> : AbstractRDMParameterWrapper<GetRequest, GetResponse, SetRequest, SetResponse>, IRDMGetParameterWrapper<GetRequest, GetResponse>, IRDMSetParameterWrapper<SetRequest, SetResponse>
5+
public abstract class AbstractRDMGetSetParameterWrapperRanged<GetRequest, GetResponse, SetRequest, SetResponse> : AbstractRDMGetSetParameterWrapper<GetRequest, GetResponse, SetRequest, SetResponse>, IRDMGetParameterWrapperRequestRanged, IRDMGetParameterWrapperRequestRanged<GetRequest>
6+
{
7+
public abstract ERDM_Parameter[] DescriptiveParameters { get; }
8+
protected AbstractRDMGetSetParameterWrapperRanged(in ERDM_Parameter parameter) : base(parameter)
9+
{
10+
}
11+
public abstract IRequestRange GetRequestRange(object value);
12+
IRequestRange IRDMGetParameterWrapperRequestRanged.GetRequestRange(object value)
13+
{
14+
return this.GetRequestRange(value);
15+
}
16+
17+
IRequestRange<GetRequest> IRDMGetParameterWrapperRequestRanged<GetRequest>.GetRequestRange(object value)
18+
{
19+
return (IRequestRange<GetRequest>)this.GetRequestRange(value);
20+
}
21+
}
22+
public abstract class AbstractRDMGetSetParameterWrapper<GetRequest, GetResponse, SetRequest, SetResponse> : AbstractRDMParameterWrapper<GetRequest, GetResponse, SetRequest, SetResponse>, IRDMGetParameterWrapper<GetRequest, GetResponse>, IRDMSetParameterWrapper<SetRequest, SetResponse>
623
{
724
public override sealed ERDM_CommandClass CommandClass => ERDM_CommandClass.GET | ERDM_CommandClass.SET;
825

@@ -14,8 +31,6 @@ public abstract class AbstractRDMGetSetParameterWrapper<GetRequest, GetResponse,
1431

1532
public Type SetResponseType => typeof(SetResponse);
1633

17-
public abstract ERDM_Parameter[] DescriptiveParameters { get; }
18-
1934
protected AbstractRDMGetSetParameterWrapper(in ERDM_Parameter parameter) : base(parameter)
2035
{
2136
}
@@ -96,15 +111,5 @@ public RDMMessage BuildSetResponseMessage(SetResponse setResponseValue)
96111
return this.buildSetResponseMessage(setResponseValue);
97112
}
98113
#endregion
99-
public abstract IRequestRange GetRequestRange(object value);
100-
IRequestRange IRDMGetParameterWrapperRequest.GetRequestRange(object value)
101-
{
102-
return this.GetRequestRange(value);
103-
}
104-
105-
IRequestRange<GetRequest> IRDMGetParameterWrapperRequest<GetRequest>.GetRequestRange(object value)
106-
{
107-
return (IRequestRange<GetRequest>)this.GetRequestRange(value);
108-
}
109114
}
110115
}

RDMSharp/ParameterWrapper/Abstract/AbstractRDMGetSetParameterWrapperEmptySetResponse.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
namespace RDMSharp.ParameterWrapper
55
{
6-
public abstract class AbstractRDMGetSetParameterWrapperEmptySetResponse<GetRequest, GetResponse, SetRequest> : AbstractRDMParameterWrapper<GetRequest, GetResponse, SetRequest, Empty>, IRDMGetParameterWrapper<GetRequest, GetResponse>, IRDMSetParameterWrapperRequest<SetRequest>, IRDMSetParameterWrapperWithEmptySetResponse
6+
public abstract class AbstractRDMGetSetParameterWrapperEmptySetResponse<GetRequest, GetResponse, SetRequest> : AbstractRDMParameterWrapper<GetRequest, GetResponse, SetRequest, Empty>, IRDMGetParameterWrapper<GetRequest, GetResponse>, IRDMSetParameterWrapperRequest<SetRequest>, IRDMSetParameterWrapperWithEmptySetResponse, IRDMGetParameterWrapperRequestRanged, IRDMGetParameterWrapperRequestRanged<GetRequest>
77
{
88
public override sealed ERDM_CommandClass CommandClass => ERDM_CommandClass.GET | ERDM_CommandClass.SET;
99

@@ -96,12 +96,12 @@ public RDMMessage BuildGetResponseMessage(GetResponse getResponseValue)
9696
}
9797

9898
public abstract IRequestRange GetRequestRange(object value);
99-
IRequestRange IRDMGetParameterWrapperRequest.GetRequestRange(object value)
99+
IRequestRange IRDMGetParameterWrapperRequestRanged.GetRequestRange(object value)
100100
{
101101
return this.GetRequestRange(value);
102102
}
103103

104-
IRequestRange<GetRequest> IRDMGetParameterWrapperRequest<GetRequest>.GetRequestRange(object value)
104+
IRequestRange<GetRequest> IRDMGetParameterWrapperRequestRanged<GetRequest>.GetRequestRange(object value)
105105
{
106106
return (IRequestRange<GetRequest>)this.GetRequestRange(value);
107107
}

RDMSharp/ParameterWrapper/Catalogue/E1.20/DMX512PersonalityDescriptionParameterWrapper.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
namespace RDMSharp.ParameterWrapper
44
{
5-
public sealed class DMX512PersonalityDescriptionParameterWrapper : AbstractRDMGetParameterWrapper<byte, RDMDMXPersonalityDescription>, IRDMBlueprintDescriptionListParameterWrapper
5+
public sealed class DMX512PersonalityDescriptionParameterWrapper : AbstractRDMGetParameterWrapperRanged<byte, RDMDMXPersonalityDescription>, IRDMBlueprintDescriptionListParameterWrapper
66
{
77
public DMX512PersonalityDescriptionParameterWrapper() : base(ERDM_Parameter.DMX_PERSONALITY_DESCRIPTION)
88
{

RDMSharp/ParameterWrapper/Catalogue/E1.20/ParameterDescriptionParameterWrapper.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
namespace RDMSharp.ParameterWrapper
44
{
5-
public sealed class ParameterDescriptionParameterWrapper : AbstractRDMGetParameterWrapper<ERDM_Parameter, RDMParameterDescription>, IRDMBlueprintParameterWrapper
5+
public sealed class ParameterDescriptionParameterWrapper : AbstractRDMGetParameterWrapperRanged<ERDM_Parameter, RDMParameterDescription>, IRDMBlueprintParameterWrapper
66
{
77
public override ERDM_SupportedSubDevice SupportedGetSubDevices => ERDM_SupportedSubDevice.ROOT;
88
public ParameterDescriptionParameterWrapper() : base(ERDM_Parameter.PARAMETER_DESCRIPTION)

RDMSharp/ParameterWrapper/Catalogue/E1.20/SelfTestDescriptionParameterWrapper.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
namespace RDMSharp.ParameterWrapper
22
{
3-
public sealed class SelfTestDescriptionParameterWrapper : AbstractRDMGetParameterWrapper<byte, RDMSelfTestDescription>, IRDMBlueprintParameterWrapper
3+
public sealed class SelfTestDescriptionParameterWrapper : AbstractRDMGetParameterWrapperRanged<byte, RDMSelfTestDescription>, IRDMBlueprintParameterWrapper
44
{
55
public SelfTestDescriptionParameterWrapper() : base(ERDM_Parameter.SELF_TEST_DESCRIPTION)
66
{

RDMSharp/ParameterWrapper/Catalogue/E1.20/SensorDefinitionParameterWrapper.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
namespace RDMSharp.ParameterWrapper
44
{
5-
public sealed class SensorDefinitionParameterWrapper : AbstractRDMGetParameterWrapper<byte, RDMSensorDefinition>, IRDMBlueprintDescriptionListParameterWrapper
5+
public sealed class SensorDefinitionParameterWrapper : AbstractRDMGetParameterWrapperRanged<byte, RDMSensorDefinition>, IRDMBlueprintDescriptionListParameterWrapper
66
{
77
public SensorDefinitionParameterWrapper() : base(ERDM_Parameter.SENSOR_DEFINITION)
88
{

RDMSharp/ParameterWrapper/Catalogue/E1.20/SensorValueParameterWrapper.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
namespace RDMSharp.ParameterWrapper
44
{
5-
public sealed class SensorValueParameterWrapper : AbstractRDMGetSetParameterWrapper<byte, RDMSensorValue, byte, RDMSensorValue>
5+
public sealed class SensorValueParameterWrapper : AbstractRDMGetSetParameterWrapperRanged<byte, RDMSensorValue, byte, RDMSensorValue>
66
{
77
public SensorValueParameterWrapper() : base(ERDM_Parameter.SENSOR_VALUE)
88
{

RDMSharp/ParameterWrapper/Catalogue/E1.20/SlotDescriptionParameterWrapper.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
namespace RDMSharp.ParameterWrapper
66
{
7-
public sealed class SlotDescriptionParameterWrapper : AbstractRDMGetParameterWrapper<ushort, RDMSlotDescription>, IRDMDescriptionParameterWrapper
7+
public sealed class SlotDescriptionParameterWrapper : AbstractRDMGetParameterWrapperRanged<ushort, RDMSlotDescription>, IRDMDescriptionParameterWrapper
88
{
99
public SlotDescriptionParameterWrapper() : base(ERDM_Parameter.SLOT_DESCRIPTION)
1010
{

RDMSharp/ParameterWrapper/Catalogue/E1.20/StatusIdDescriptionParameterWrapper.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
namespace RDMSharp.ParameterWrapper
22
{
3-
public sealed class StatusIdDescriptionParameterWrapper : AbstractRDMGetParameterWrapper<ushort, string>, IRDMBlueprintParameterWrapper
3+
public sealed class StatusIdDescriptionParameterWrapper : AbstractRDMGetParameterWrapperRanged<ushort, string>, IRDMBlueprintParameterWrapper
44
{
55
public override ERDM_SupportedSubDevice SupportedGetSubDevices => ERDM_SupportedSubDevice.ROOT;
66
public StatusIdDescriptionParameterWrapper() : base(ERDM_Parameter.STATUS_ID_DESCRIPTION)

RDMSharp/ParameterWrapper/Catalogue/E1.20/StatusMessageParameterWrapper.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
namespace RDMSharp.ParameterWrapper
55
{
6-
public sealed class StatusMessageParameterWrapper : AbstractRDMGetParameterWrapper<ERDM_Status, RDMStatusMessage[]>
6+
public sealed class StatusMessageParameterWrapper : AbstractRDMGetParameterWrapperRanged<ERDM_Status, RDMStatusMessage[]>
77
{
88
public override ERDM_SupportedSubDevice SupportedGetSubDevices => ERDM_SupportedSubDevice.ROOT;
99
public StatusMessageParameterWrapper() : base(ERDM_Parameter.STATUS_MESSAGES)

RDMSharp/ParameterWrapper/Catalogue/E1.37-1/CurveDescriptionParameterWrapper.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
namespace RDMSharp.ParameterWrapper
44
{
5-
public sealed class CurveDescriptionParameterWrapper : AbstractRDMGetParameterWrapper<byte, RDMCurveDescription>, IRDMBlueprintDescriptionListParameterWrapper
5+
public sealed class CurveDescriptionParameterWrapper : AbstractRDMGetParameterWrapperRanged<byte, RDMCurveDescription>, IRDMBlueprintDescriptionListParameterWrapper
66
{
77
public CurveDescriptionParameterWrapper() : base(ERDM_Parameter.CURVE_DESCRIPTION)
88
{

RDMSharp/ParameterWrapper/Catalogue/E1.37-1/LockStateDescriptionParameterWrapper.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
namespace RDMSharp.ParameterWrapper
44
{
5-
public sealed class LockStateDescriptionParameterWrapper : AbstractRDMGetParameterWrapper<byte, RDMLockStateDescription>, IRDMBlueprintDescriptionListParameterWrapper
5+
public sealed class LockStateDescriptionParameterWrapper : AbstractRDMGetParameterWrapperRanged<byte, RDMLockStateDescription>, IRDMBlueprintDescriptionListParameterWrapper
66
{
77
public LockStateDescriptionParameterWrapper() : base(ERDM_Parameter.LOCK_STATE_DESCRIPTION)
88
{

RDMSharp/ParameterWrapper/Catalogue/E1.37-1/ModulationFrequencyDescriptionParameterWrapper.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
namespace RDMSharp.ParameterWrapper
44
{
5-
public sealed class ModulationFrequencyDescriptionParameterWrapper : AbstractRDMGetParameterWrapper<byte, RDMModulationFrequencyDescription>, IRDMBlueprintDescriptionListParameterWrapper
5+
public sealed class ModulationFrequencyDescriptionParameterWrapper : AbstractRDMGetParameterWrapperRanged<byte, RDMModulationFrequencyDescription>, IRDMBlueprintDescriptionListParameterWrapper
66
{
77
public ModulationFrequencyDescriptionParameterWrapper() : base(ERDM_Parameter.MODULATION_FREQUENCY_DESCRIPTION)
88
{

RDMSharp/ParameterWrapper/Catalogue/E1.37-1/OutputResponseTimeDescriptionParameterWrapper.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
namespace RDMSharp.ParameterWrapper
44
{
5-
public sealed class OutputResponseTimeDescriptionParameterWrapper : AbstractRDMGetParameterWrapper<byte, RDMOutputResponseTimeDescription>, IRDMBlueprintDescriptionListParameterWrapper
5+
public sealed class OutputResponseTimeDescriptionParameterWrapper : AbstractRDMGetParameterWrapperRanged<byte, RDMOutputResponseTimeDescription>, IRDMBlueprintDescriptionListParameterWrapper
66
{
77
public OutputResponseTimeDescriptionParameterWrapper() : base(ERDM_Parameter.OUTPUT_RESPONSE_TIME_DESCRIPTION)
88
{

RDMSharp/ParameterWrapper/Catalogue/E1.37-2/HardwareAddressParameterWrapper.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
namespace RDMSharp.ParameterWrapper
22
{
3-
public sealed class HardwareAddressParameterWrapper : AbstractRDMGetParameterWrapper<uint, GetHardwareAddressResponse>
3+
public sealed class HardwareAddressParameterWrapper : AbstractRDMGetParameterWrapperRanged<uint, GetHardwareAddressResponse>
44
{
55
public HardwareAddressParameterWrapper() : base(ERDM_Parameter.INTERFACE_HARDWARE_ADDRESS_TYPE)
66
{

RDMSharp/ParameterWrapper/Catalogue/E1.37-2/IPv4Address_NetmaskParameterWrapper.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
namespace RDMSharp.ParameterWrapper
22
{
3-
public sealed class IPv4Address_NetmaskParameterWrapper : AbstractRDMGetParameterWrapper<uint, GetIPv4CurrentAddressResponse>
3+
public sealed class IPv4Address_NetmaskParameterWrapper : AbstractRDMGetParameterWrapperRanged<uint, GetIPv4CurrentAddressResponse>
44
{
55
public IPv4Address_NetmaskParameterWrapper() : base(ERDM_Parameter.IPV4_CURRENT_ADDRESS)
66
{

RDMSharp/ParameterWrapper/Catalogue/E1.37-2/InterfaceNameParameterWrapper.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
namespace RDMSharp.ParameterWrapper
22
{
3-
public sealed class InterfaceNameParameterWrapper : AbstractRDMGetParameterWrapper<uint, GetInterfaceNameResponse>
3+
public sealed class InterfaceNameParameterWrapper : AbstractRDMGetParameterWrapperRanged<uint, GetInterfaceNameResponse>
44
{
55
public InterfaceNameParameterWrapper() : base(ERDM_Parameter.INTERFACE_LABEL)
66
{
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
namespace RDMSharp.ParameterWrapper
2+
{
3+
public sealed class AddTagParameterWrapper : AbstractRDMSetParameterWrapperEmptyResponse<string>
4+
{
5+
public AddTagParameterWrapper() : base(ERDM_Parameter.ADD_TAG)
6+
{
7+
}
8+
public override string Name => "Add Tag";
9+
public override string Description => "This parameter associates a tag with a Responder. If the tag already exists on the Responder, the Responder shall just return an ACK without modifying the tag in any way.";
10+
11+
protected override string setRequestParameterDataToValue(byte[] parameterData)
12+
{
13+
return Tools.DataToString(ref parameterData, 32);
14+
}
15+
16+
protected override byte[] setRequestValueToParameterData(string value)
17+
{
18+
return Tools.ValueToData(value, 32);
19+
}
20+
}
21+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
namespace RDMSharp.ParameterWrapper
2+
{
3+
public sealed class CheckTagParameterWrapper : AbstractRDMSetParameterWrapper<string,bool>
4+
{
5+
public CheckTagParameterWrapper() : base(ERDM_Parameter.CHECK_TAG)
6+
{
7+
}
8+
public override string Name => "Check Tag";
9+
public override string Description => "The CHECK_TAG parameter allows a Controller to test if a tag is present on a Responder.";
10+
11+
protected override string setRequestParameterDataToValue(byte[] parameterData)
12+
{
13+
return Tools.DataToString(ref parameterData, 32);
14+
}
15+
16+
protected override byte[] setRequestValueToParameterData(string value)
17+
{
18+
return Tools.ValueToData(value, 32);
19+
}
20+
21+
protected override bool setResponseParameterDataToValue(byte[] parameterData)
22+
{
23+
return Tools.DataToBool(ref parameterData);
24+
}
25+
26+
protected override byte[] setResponseValueToParameterData(bool value)
27+
{
28+
return Tools.ValueToData(value);
29+
}
30+
}
31+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
namespace RDMSharp.ParameterWrapper
2+
{
3+
public sealed class ClearTagsParameterWrapper : AbstractRDMSetParameterWrapperEmptyRequestResponse
4+
{
5+
public ClearTagsParameterWrapper() : base(ERDM_Parameter.CLEAR_TAGS)
6+
{
7+
}
8+
public override string Name => "Clear Tags";
9+
public override string Description => "This parameter removes all tags from a Responder.";
10+
11+
}
12+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
namespace RDMSharp.ParameterWrapper
2+
{
3+
public sealed class CommunicationStatusNullStartCodeParameterWrapper : AbstractRDMGetSetParameterWrapperEmptyGetRequestSetRequestSetResponse<GetCommunicationStatusNullStartCodeResponse>,IRDMBlueprintParameterWrapper
4+
{
5+
public CommunicationStatusNullStartCodeParameterWrapper() : base(ERDM_Parameter.COMMS_STATUS_NSC)
6+
{
7+
}
8+
public override string Name => "Communication Status Null Start Code";
9+
public override string Description => "This parameter allows a Controller to retrieve statistical packet and error counters relating to NULL START Code (NSC) packets (see [DMX], Section 8.5.1).";
10+
11+
protected override GetCommunicationStatusNullStartCodeResponse getResponseParameterDataToValue(byte[] parameterData)
12+
{
13+
return GetCommunicationStatusNullStartCodeResponse.FromPayloadData(parameterData);
14+
}
15+
16+
protected override byte[] getResponseValueToParameterData(GetCommunicationStatusNullStartCodeResponse value)
17+
{
18+
return Tools.ValueToData(value);
19+
}
20+
}
21+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
using System;
2+
3+
namespace RDMSharp.ParameterWrapper
4+
{
5+
public sealed class DMX512PersonalityIdDefinitionParameterWrapper : AbstractRDMGetParameterWrapperRanged<byte, RDMPersonalityId>, IRDMBlueprintParameterWrapper
6+
{
7+
public DMX512PersonalityIdDefinitionParameterWrapper() : base(ERDM_Parameter.DMX_PERSONALITY_ID)
8+
{
9+
}
10+
public override string Name => "DMX512 Personality ID";
11+
public override string Description => "A DMX512 Personality uniquely identifies a personality across different models and software versions. This allows Controllers to select the correct personality profile, even if the personality indices have changed due to additions / removals. Equivalent personalities across products from a manufacturer are required to have the same personality identifier.Any change to the DMX512 behavior of a Responder shall result in a new DMX_PERSONALITY_ID(see the major / minor descriptions below). Any manufacturers with Responders that support this parameter should publish the DMX personality identifier in the personality documentation on their website.If a Responder supports PRODUCT_URL, manufacturers are strongly encouraged to link to the personality documentation from the URL returned with PRODUCT_URL. A personality of zero means that the personality is not defined. This may mean that a custom personality is in use. For both the major and minor numbers, the values 0x0000 to 0x7FFF are manufacturer-defined, values 0x8000 to 0xFFFE are reserved. A value of 0xFFFF in both the Major Personality ID and Minor Personality ID fields indicates the personality is user-defined.For example, a media server may allow the user to define a DMX512 profile. A value of 0xFFFF in only one of the fields, but not both, is undefined, and shall be ignored.";
12+
13+
private static readonly ERDM_Parameter[] descriptiveParameters = new ERDM_Parameter[] { ERDM_Parameter.DEVICE_INFO };
14+
public override ERDM_Parameter[] DescriptiveParameters => descriptiveParameters;
15+
16+
protected override byte[] getRequestValueToParameterData(byte parameterID)
17+
{
18+
return Tools.ValueToData(parameterID);
19+
}
20+
protected override byte getRequestParameterDataToValue(byte[] parameterData)
21+
{
22+
return Tools.DataToByte(ref parameterData);
23+
}
24+
25+
protected override RDMPersonalityId getResponseParameterDataToValue(byte[] parameterData)
26+
{
27+
return RDMPersonalityId.FromPayloadData(parameterData);
28+
}
29+
protected override byte[] getResponseValueToParameterData(RDMPersonalityId personalityId)
30+
{
31+
return personalityId.ToPayloadData();
32+
}
33+
34+
public override IRequestRange GetRequestRange(object value)
35+
{
36+
return DMX512PersonalityIdDefinitionParameterWrapper.GetRequestRangeInternal(value);
37+
}
38+
internal static IRequestRange GetRequestRangeInternal(object value)
39+
{
40+
if (value is RDMDeviceInfo deviceInfo)
41+
return new RequestRange<byte>(1, (byte)(deviceInfo.Dmx512NumberOfPersonalities));
42+
else if (value == null)
43+
return new RequestRange<byte>(1, byte.MaxValue);
44+
45+
throw new NotSupportedException($"There is no support for the Type: {value.GetType()}");
46+
}
47+
}
48+
}

0 commit comments

Comments
 (0)