public void ReadParameter <T>(byte?destinationUnit, byte?destinationGroup, byte?sourceUnit, byte?sourceGroup, ref T parameter) where T : Parameter { var request = new OpCode167Request(destinationUnit.GetValueOrDefault(DeviceAddress), destinationGroup.GetValueOrDefault(DeviceGroup), sourceUnit.GetValueOrDefault(HostAddress), sourceGroup.GetValueOrDefault(HostGroup), new List <Parameter>(new T[] { parameter })); var response = Transport.UnicastMessage <OpCode167Response>(request); parameter = (T)response.Parameters.First(); }
public void ReadParameters(byte?destinationUnit, byte?destinationGroup, byte?sourceUnit, byte?sourceGroup, ref List <Parameter> parameters) { bool UseOpcode167 = ParameterListIsContiguous <Parameter>(parameters); if (UseOpcode167) { var request = new OpCode167Request(destinationUnit.GetValueOrDefault(DeviceAddress), destinationGroup.GetValueOrDefault(DeviceGroup), sourceUnit.GetValueOrDefault(HostAddress), sourceGroup.GetValueOrDefault(HostGroup), parameters); var response = Transport.UnicastMessage <OpCode167Response>(request); parameters = response.Parameters; } else { var request = new OpCode180Request(destinationUnit.GetValueOrDefault(DeviceAddress), destinationGroup.GetValueOrDefault(DeviceGroup), sourceUnit.GetValueOrDefault(HostAddress), sourceGroup.GetValueOrDefault(HostGroup), parameters); var response = Transport.UnicastMessage <OpCode180Response>(request); parameters = response.Parameters; } }