Skip to content

Commit f998b89

Browse files
committed
Implement ParameterGroupingAttribute
1 parent 8231a5e commit f998b89

File tree

4 files changed

+284
-132
lines changed

4 files changed

+284
-132
lines changed

RDMSharp/RDM/Device/AbstractRDMCache.cs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,14 @@ protected void updateParameterValuesDataTreeBranch(ParameterDataCacheBag bag, Da
111111
{
112112
try
113113
{
114+
if(o2.GetType() != valueToStore.GetType())
115+
{
116+
if(o2 is IRDMPayloadObjectOneOf oneOf)
117+
{
118+
oneOf = (IRDMPayloadObjectOneOf)Activator.CreateInstance(oneOf.GetType(), valueToStore, oneOf.Count);
119+
valueToStore = oneOf;
120+
}
121+
}
114122
return valueToStore;
115123
}
116124
finally
@@ -208,7 +216,7 @@ protected async Task<bool> requestSetParameterWithPayload(ParameterBag parameter
208216
throw new Exception($"Failed to set parameter {parameterBag.PID} with value {value}");
209217
if (ptpProcess.State == PeerToPeerProcess.EPeerToPeerProcessState.Finished)
210218
{
211-
if (ptpProcess.ResponsePayloadObject.IsEmpty)
219+
if (ptpProcess.ResponsePayloadObject.IsEmpty && define.GetResponse.HasValue)
212220
{
213221
updateParameterValuesDataTreeBranch(new ParameterDataCacheBag(ptpProcess.ParameterBag.PID), dataTreeBranch);
214222
if (this.ParameterValues.TryGetValue(parameterBag.PID, out object cacheValue))
@@ -217,7 +225,7 @@ protected async Task<bool> requestSetParameterWithPayload(ParameterBag parameter
217225
throw new Exception($"Failed to set parameter {parameterBag.PID} with value {value}, cache value is {cacheValue}");
218226
}
219227
}
220-
else if (!ptpProcess.ResponsePayloadObject.IsUnset)
228+
else if (!ptpProcess.ResponsePayloadObject.IsUnset && define.GetResponse.HasValue)
221229
updateParameterValuesDataTreeBranch(new ParameterDataCacheBag(ptpProcess.ParameterBag.PID), ptpProcess.ResponsePayloadObject);
222230
return true;
223231
}

0 commit comments

Comments
 (0)