public void ShouldSetDacChannelDataSourceAllGroupsAllChannels( [Values] DacChannelDataSource dacChannelDataSource ) { WhenSetDacChannelDataSource(ChannelAddress.AllGroupsAllChannels, dacChannelDataSource); ThenCallIsDelegatedToSetDacChannelDataSourceAllChannelsCommand(dacChannelDataSource); }
private void ThenCallIsDelegatedToSetDacChannelDataSourceAllChannelsCommand( DacChannelDataSource dacChannelDataSource) { Mock.Get(_fakeSetDacChannelDataSourceAllChannelsCommand) .Verify(x => x.SetDacChannelDataSourceAllChannels(dacChannelDataSource) , Times.Once); }
public void ShouldUpdateABSelectRegistersInDeviceStateCache( [Values] ChannelGroup group, [Values] DacChannelDataSource channel0, [Values] DacChannelDataSource channel1, [Values] DacChannelDataSource channel2, [Values] DacChannelDataSource channel3, [Values] DacChannelDataSource channel4, [Values] DacChannelDataSource channel5, [Values] DacChannelDataSource channel6, [Values] DacChannelDataSource channel7) { WhenSetDacChannelDataSource(group, channel0, channel1, channel2, channel3, channel4, channel5, channel6, channel7); ThenABSelectRegistersInDeviceStateCacheAreUpdated( (int)group, (channel0 == DacChannelDataSource.DataValueB ? ABSelectRegisterBits.Channel0 : 0) | (channel1 == DacChannelDataSource.DataValueB ? ABSelectRegisterBits.Channel1 : 0) | (channel2 == DacChannelDataSource.DataValueB ? ABSelectRegisterBits.Channel2 : 0) | (channel3 == DacChannelDataSource.DataValueB ? ABSelectRegisterBits.Channel3 : 0) | (channel4 == DacChannelDataSource.DataValueB ? ABSelectRegisterBits.Channel4 : 0) | (channel5 == DacChannelDataSource.DataValueB ? ABSelectRegisterBits.Channel5 : 0) | (channel6 == DacChannelDataSource.DataValueB ? ABSelectRegisterBits.Channel6 : 0) | (channel7 == DacChannelDataSource.DataValueB ? ABSelectRegisterBits.Channel7 : 0) ); }
public void ShouldSetDacChannelDataSourceSimultaneouslyForChannelsInSameGroup( [Values] ChannelGroup group, [Values] DacChannelDataSource channel0, [Values] DacChannelDataSource channel1, [Values] DacChannelDataSource channel2, [Values] DacChannelDataSource channel3, [Values] DacChannelDataSource channel4, [Values] DacChannelDataSource channel5, [Values] DacChannelDataSource channel6, [Values] DacChannelDataSource channel7) { WhenSetDacChannelDataSource(group, channel0, channel1, channel2, channel3, channel4, channel5, channel6, channel7); ThenSendSpecialFunctionCommandShouldBeCalled( SpecialFunctionCode.WriteToABSelectRegister0 + (int)group, (ushort)( (channel0 == DacChannelDataSource.DataValueB ? ABSelectRegisterBits.Channel0 : 0) | (channel1 == DacChannelDataSource.DataValueB ? ABSelectRegisterBits.Channel1 : 0) | (channel2 == DacChannelDataSource.DataValueB ? ABSelectRegisterBits.Channel2 : 0) | (channel3 == DacChannelDataSource.DataValueB ? ABSelectRegisterBits.Channel3 : 0) | (channel4 == DacChannelDataSource.DataValueB ? ABSelectRegisterBits.Channel4 : 0) | (channel5 == DacChannelDataSource.DataValueB ? ABSelectRegisterBits.Channel5 : 0) | (channel6 == DacChannelDataSource.DataValueB ? ABSelectRegisterBits.Channel6 : 0) | (channel7 == DacChannelDataSource.DataValueB ? ABSelectRegisterBits.Channel7 : 0) ) ); }
private void ThenDacChannelDataSourceAllChannelsShouldBe(DacChannelDataSource expected) { for (var channel = ChannelAddress.Dac0; channel <= ChannelAddress.Dac39; channel++) { _evalBoard.GetDacChannelDataSource(channel).Should().Be(expected); } }
public void SetDacChannelDataSourceAllChannels(DacChannelDataSource source) { using (_lockFactory.GetLock(LockType.CommandLock)) { switch (source) { case DacChannelDataSource.DataValueA: _sendSpecialFunctionCommand.SendSpecialFunction(SpecialFunctionCode.BlockWriteABSelectRegisters, (byte)ABSelectRegisterBits.AllChannelsA); _evalBoard.DeviceState.ABSelectRegisters[0] = ABSelectRegisterBits.AllChannelsA; _evalBoard.DeviceState.ABSelectRegisters[1] = ABSelectRegisterBits.AllChannelsA; _evalBoard.DeviceState.ABSelectRegisters[2] = ABSelectRegisterBits.AllChannelsA; _evalBoard.DeviceState.ABSelectRegisters[3] = ABSelectRegisterBits.AllChannelsA; _evalBoard.DeviceState.ABSelectRegisters[4] = ABSelectRegisterBits.AllChannelsA; break; case DacChannelDataSource.DataValueB: _sendSpecialFunctionCommand.SendSpecialFunction(SpecialFunctionCode.BlockWriteABSelectRegisters, (byte)ABSelectRegisterBits.AllChannelsB); _evalBoard.DeviceState.ABSelectRegisters[0] = ABSelectRegisterBits.AllChannelsB; _evalBoard.DeviceState.ABSelectRegisters[1] = ABSelectRegisterBits.AllChannelsB; _evalBoard.DeviceState.ABSelectRegisters[2] = ABSelectRegisterBits.AllChannelsB; _evalBoard.DeviceState.ABSelectRegisters[3] = ABSelectRegisterBits.AllChannelsB; _evalBoard.DeviceState.ABSelectRegisters[4] = ABSelectRegisterBits.AllChannelsB; break; default: throw new ArgumentOutOfRangeException(nameof(source)); } } }
public void ShouldThrowExceptionIfArgumentsAreOutOfRange( [Values((int)(ChannelAddress.Dac0 - 1), (int)(ChannelAddress.Dac39 + 1))] ChannelAddress channelAddress, [Values((int)(DacChannelDataSource.DataValueA - 1), (int)(DacChannelDataSource.DataValueB + 1))] DacChannelDataSource dacChannelDataSource) { Assert.Throws <ArgumentOutOfRangeException>( () => WhenSetDacChannelDataSourceInternal(channelAddress, dacChannelDataSource)); }
public void ShouldUpdateCorrectABSelectRegister( ChannelAddress channelAddress, DacChannelDataSource dacChannelDataSource, int registerNum ) { WhenSetDacChannelDataSourceInternal(channelAddress, dacChannelDataSource); ThenABSelectRegisterUpdatedShouldBe(registerNum); }
private void WhenSetDacChannelDataSource(ChannelGroup group, DacChannelDataSource channel0, DacChannelDataSource channel1, DacChannelDataSource channel2, DacChannelDataSource channel3, DacChannelDataSource channel4, DacChannelDataSource channel5, DacChannelDataSource channel6, DacChannelDataSource channel7) { _setDacChannelDataSourceCommand.SetDacChannelDataSource(group, channel0, channel1, channel2, channel3, channel4, channel5, channel6, channel7); }
public void ShouldSetDacChannelDataSource ( [Range((int)ChannelAddress.Dac0, (int)ChannelAddress.Dac39)] ChannelAddress channelAddress, [Values] DacChannelDataSource dacChannelDataSource ) { WhenSetDacChannelDataSource(channelAddress, dacChannelDataSource); ThenCallShouldBeDelegatedToSetDacChannelDataSourceInternalCommand(channelAddress, dacChannelDataSource); }
public void ShouldSetDacChannelDataSourceAllChannelsInSameGroup( ChannelAddress channelAddress, DacChannelDataSource dacChannelDataSource, byte specialFunctionCode, ushort data ) { WhenSetDacChannelDataSource(channelAddress, dacChannelDataSource); ThenSendSpecialFunctionCommandShouldBeCalled((SpecialFunctionCode)specialFunctionCode, data); }
public void ShouldThrowExceptionIfArgumentsAreOutOfRange( [Values((int)(ChannelAddress.AllGroupsAllChannels - 1), (int)(ChannelAddress.Group1Through4Channel7 + 1))] ChannelAddress channelAddress, [Values((int)(ChannelAddress.AllGroupsAllChannels - 1), (int)(ChannelAddress.Group1Through4Channel7 + 1), 6, 7)] DacChannelDataSource dacChannelDataSource ) { Assert.Throws <ArgumentOutOfRangeException>( () => WhenSetDacChannelDataSource(channelAddress, dacChannelDataSource)); }
public void ShouldSetAndGetDacChannelDataSourceAllChannels( [Values(DacChannelDataSource.DataValueA, DacChannelDataSource.DataValueB)] DacChannelDataSource dacChannelDataSource) { GivenDacChannelDataSourceAllChannels(dacChannelDataSource == DacChannelDataSource.DataValueA ? DacChannelDataSource.DataValueB : DacChannelDataSource.DataValueA); WhenSetDacChannelDataSourceAllChannels(dacChannelDataSource); ThenDacChannelDataSourceAllChannelsShouldBe(dacChannelDataSource); }
public void ShouldReturnCorrectDacChannelDataSource( int abSelectRegisterNumber, uint?abSelectRegisterValue, ChannelAddress dacChannelAddress, DacChannelDataSource expectedDacChannelDataSource) { GivenABSelectRegisterValue(abSelectRegisterNumber, (ABSelectRegisterBits?)abSelectRegisterValue); WhenGetDacChannelDataSource(dacChannelAddress); ThenDacChannelDataSourceShouldBe(expectedDacChannelDataSource); }
public void ShouldSetAndGetDacChannelDataSource( [Range((int)ChannelAddress.Dac0, (int)ChannelAddress.Dac39)] int channelAddress, [Values(DacChannelDataSource.DataValueA, DacChannelDataSource.DataValueB)] DacChannelDataSource dacChannelDataSource) { GivenDacChannelDataSource((ChannelAddress)channelAddress, dacChannelDataSource == DacChannelDataSource.DataValueA ? DacChannelDataSource.DataValueB : DacChannelDataSource.DataValueA); WhenSetAndGetDacChannelDataSource((ChannelAddress)channelAddress, dacChannelDataSource); ThenDacChannelDataSourceShouldBe(dacChannelDataSource); }
public void ShouldUpdateABSelectRegisterCacheInDeviceState( int registerNum, byte existingABSelectRegisterBits, ChannelAddress channelAddress, DacChannelDataSource dacChannelDataSource, byte newABSelectRegisterBits ) { GivenExistingABSelectRegisterValues(registerNum, (ABSelectRegisterBits)existingABSelectRegisterBits); WhenSetDacChannelDataSourceInternal(channelAddress, dacChannelDataSource); ThenABSelectRegisterCacheInDeviceStateShouldBe(registerNum, (ABSelectRegisterBits)newABSelectRegisterBits); }
public void ShouldApplyExistingABSelectRegisterValuesWhenComputingNewValuesForSingleChannel( int registerNum, byte existingABSelectRegisterBits, ChannelAddress channelAddress, DacChannelDataSource dacChannelDataSource, byte newABSelectRegisterBits ) { GivenExistingABSelectRegisterValues(registerNum, (ABSelectRegisterBits)existingABSelectRegisterBits); WhenSetDacChannelDataSourceInternal(channelAddress, dacChannelDataSource); ThenNewABSelectRegisterBitsShouldBe((ABSelectRegisterBits)newABSelectRegisterBits); }
private void ThenABSelectRegistersInDeviceStateCacheAreSetAppropriately( DacChannelDataSource dacChannelDataSource) { var theExpectedValue = dacChannelDataSource == DacChannelDataSource.DataValueA ? ABSelectRegisterBits.AllChannelsA : ABSelectRegisterBits.AllChannelsB; _deviceState.ABSelectRegisters[0].Should().Be(theExpectedValue); _deviceState.ABSelectRegisters[1].Should().Be(theExpectedValue); _deviceState.ABSelectRegisters[2].Should().Be(theExpectedValue); _deviceState.ABSelectRegisters[3].Should().Be(theExpectedValue); _deviceState.ABSelectRegisters[4].Should().Be(theExpectedValue); }
public void ShouldSetDacChannelDataSourceSameChannelInGroups1To4( ChannelAddress groupChannelAddress, DacChannelDataSource dacChannelDataSource, ChannelAddress group1ChannelAddress, ChannelAddress group2ChannelAddress, ChannelAddress group3ChannelAddress, ChannelAddress group4ChannelAddress ) { WhenSetDacChannelDataSource(groupChannelAddress, dacChannelDataSource); ThenCallShouldBeDelegatedToSetDacChannelDataSourceInternalCommand(group1ChannelAddress, dacChannelDataSource); ThenCallShouldBeDelegatedToSetDacChannelDataSourceInternalCommand(group2ChannelAddress, dacChannelDataSource); ThenCallShouldBeDelegatedToSetDacChannelDataSourceInternalCommand(group3ChannelAddress, dacChannelDataSource); ThenCallShouldBeDelegatedToSetDacChannelDataSourceInternalCommand(group4ChannelAddress, dacChannelDataSource); }
public void ShouldThrowExceptionIfArgumentsAreOutOfRange( [Values((int)(ChannelGroup.Group0 - 1), (int)(ChannelGroup.Group4 + 1))] ChannelGroup channelGroup, [Values((int)(ChannelAddress.AllGroupsAllChannels - 1), (int)(ChannelAddress.Group1Through4Channel7 + 1), 6, 7)] DacChannelDataSource channel0, [Values((int)(ChannelAddress.AllGroupsAllChannels - 1), (int)(ChannelAddress.Group1Through4Channel7 + 1), 6, 7)] DacChannelDataSource channel1, [Values((int)(ChannelAddress.AllGroupsAllChannels - 1), (int)(ChannelAddress.Group1Through4Channel7 + 1), 6, 7)] DacChannelDataSource channel2, [Values((int)(ChannelAddress.AllGroupsAllChannels - 1), (int)(ChannelAddress.Group1Through4Channel7 + 1), 6, 7)] DacChannelDataSource channel3, [Values((int)(ChannelAddress.AllGroupsAllChannels - 1), (int)(ChannelAddress.Group1Through4Channel7 + 1), 6, 7)] DacChannelDataSource channel4, [Values((int)(ChannelAddress.AllGroupsAllChannels - 1), (int)(ChannelAddress.Group1Through4Channel7 + 1), 6, 7)] DacChannelDataSource channel5, [Values((int)(ChannelAddress.AllGroupsAllChannels - 1), (int)(ChannelAddress.Group1Through4Channel7 + 1), 6, 7)] DacChannelDataSource channel6, [Values((int)(ChannelAddress.AllGroupsAllChannels - 1), (int)(ChannelAddress.Group1Through4Channel7 + 1), 6, 7)] DacChannelDataSource channel7) { Assert.Throws <ArgumentOutOfRangeException>( () => WhenSetDacChannelDataSource(channelGroup, channel0, channel1, channel2, channel3, channel4, channel5, channel6, channel7)); }
private void ThenDacChannelDataSourceShouldBe(DacChannelDataSource expected) { _dacChannelDataSource.Should().Be(expected); }
private void WhenSetAndGetDacChannelDataSource(ChannelAddress channelAddress, DacChannelDataSource dacChannelDataSource) { _evalBoard.SetDacChannelDataSource(channelAddress, dacChannelDataSource); _dacChannelDataSource = _evalBoard.GetDacChannelDataSource(channelAddress); }
private void WhenSetDacChannelDataSourceAllChannels(DacChannelDataSource dacChannelDataSource) { _evalBoard.SetDacChannelDataSourceAllChannels(dacChannelDataSource); }
private void GivenDacChannelDataSource(ChannelAddress channelAddress, DacChannelDataSource dacChannelDataSource) { _evalBoard.SetDacChannelDataSource(channelAddress, dacChannelDataSource); }
public void SetDacChannelDataSource(ChannelGroup group, DacChannelDataSource channel0, DacChannelDataSource channel1, DacChannelDataSource channel2, DacChannelDataSource channel3, DacChannelDataSource channel4, DacChannelDataSource channel5, DacChannelDataSource channel6, DacChannelDataSource channel7) { using (_lockFactory.GetLock(LockType.CommandLock)) { var abSelectRegisterBits = ABSelectRegisterBits.AllChannelsA; if (channel0 == DacChannelDataSource.DataValueB) { abSelectRegisterBits |= ABSelectRegisterBits.Channel0; } if (channel1 == DacChannelDataSource.DataValueB) { abSelectRegisterBits |= ABSelectRegisterBits.Channel1; } if (channel2 == DacChannelDataSource.DataValueB) { abSelectRegisterBits |= ABSelectRegisterBits.Channel2; } if (channel3 == DacChannelDataSource.DataValueB) { abSelectRegisterBits |= ABSelectRegisterBits.Channel3; } if (channel4 == DacChannelDataSource.DataValueB) { abSelectRegisterBits |= ABSelectRegisterBits.Channel4; } if (channel5 == DacChannelDataSource.DataValueB) { abSelectRegisterBits |= ABSelectRegisterBits.Channel5; } if (channel6 == DacChannelDataSource.DataValueB) { abSelectRegisterBits |= ABSelectRegisterBits.Channel6; } if (channel7 == DacChannelDataSource.DataValueB) { abSelectRegisterBits |= ABSelectRegisterBits.Channel7; } var specialFunctionCode = SpecialFunctionCode.NOP; var index = 0; switch (group) { case ChannelGroup.Group0: specialFunctionCode = SpecialFunctionCode.WriteToABSelectRegister0; index = 0; break; case ChannelGroup.Group1: specialFunctionCode = SpecialFunctionCode.WriteToABSelectRegister1; index = 1; break; case ChannelGroup.Group2: specialFunctionCode = SpecialFunctionCode.WriteToABSelectRegister2; index = 2; break; case ChannelGroup.Group3: specialFunctionCode = SpecialFunctionCode.WriteToABSelectRegister3; index = 3; break; case ChannelGroup.Group4: specialFunctionCode = SpecialFunctionCode.WriteToABSelectRegister4; index = 4; break; } if (_evalBoard.DeviceState.UseRegisterCache || _evalBoard.DeviceState.ABSelectRegisters[index] != abSelectRegisterBits) { _sendSpecialFunctionCommand.SendSpecialFunction(specialFunctionCode, (byte)abSelectRegisterBits); _evalBoard.DeviceState.ABSelectRegisters[index] = abSelectRegisterBits; } } }
private void ThenDacChannelDataSourceShouldBe(DacChannelDataSource dacChannelDataSource) { _dacChannelDataSource.Should().Be(dacChannelDataSource); }
private void WhenSetDacChannelDataSourceInternal(ChannelAddress channelAddress, DacChannelDataSource dacChannelDataSource) { _setDacChannelDataSourceInternalCommand.SetDacChannelDataSourceInternal(channelAddress, dacChannelDataSource); }
private void WhenSetDacChannelDataSourceAllChannels(DacChannelDataSource dacChannelDataSource) { _setDacChannelDataSourceAllChannelsCommand.SetDacChannelDataSourceAllChannels(dacChannelDataSource); }
public void SetDacChannelDataSource(ChannelAddress channel, DacChannelDataSource value) { using (_lockFactory.GetLock(LockType.CommandLock)) { if (channel < ChannelAddress.Dac0 || channel > ChannelAddress.Dac39) { if (channel == ChannelAddress.AllGroupsAllChannels) { _setDacChannelDataSourceAllChannelsCommand.SetDacChannelDataSourceAllChannels(value); return; } if (channel == ChannelAddress.Group0AllChannels) { SetDacChannelDataSource(ChannelGroup.Group0, value, value, value, value, value, value, value, value); return; } if (channel == ChannelAddress.Group1AllChannels) { SetDacChannelDataSource(ChannelGroup.Group1, value, value, value, value, value, value, value, value); return; } if (channel == ChannelAddress.Group2AllChannels) { SetDacChannelDataSource(ChannelGroup.Group2, value, value, value, value, value, value, value, value); return; } if (channel == ChannelAddress.Group3AllChannels) { SetDacChannelDataSource(ChannelGroup.Group3, value, value, value, value, value, value, value, value); return; } if (channel == ChannelAddress.Group4AllChannels) { SetDacChannelDataSource(ChannelGroup.Group4, value, value, value, value, value, value, value, value); return; } if (channel == ChannelAddress.Group0Through4Channel0) { SetDacChannelDataSource(ChannelAddress.Group0Channel0, value); SetDacChannelDataSource(ChannelAddress.Group1Channel0, value); SetDacChannelDataSource(ChannelAddress.Group2Channel0, value); SetDacChannelDataSource(ChannelAddress.Group3Channel0, value); SetDacChannelDataSource(ChannelAddress.Group4Channel0, value); return; } if (channel == ChannelAddress.Group0Through4Channel1) { SetDacChannelDataSource(ChannelAddress.Group0Channel1, value); SetDacChannelDataSource(ChannelAddress.Group1Channel1, value); SetDacChannelDataSource(ChannelAddress.Group2Channel1, value); SetDacChannelDataSource(ChannelAddress.Group3Channel1, value); SetDacChannelDataSource(ChannelAddress.Group4Channel1, value); return; } if (channel == ChannelAddress.Group0Through4Channel2) { SetDacChannelDataSource(ChannelAddress.Group0Channel2, value); SetDacChannelDataSource(ChannelAddress.Group1Channel2, value); SetDacChannelDataSource(ChannelAddress.Group2Channel2, value); SetDacChannelDataSource(ChannelAddress.Group3Channel2, value); SetDacChannelDataSource(ChannelAddress.Group4Channel2, value); return; } if (channel == ChannelAddress.Group0Through4Channel3) { SetDacChannelDataSource(ChannelAddress.Group0Channel3, value); SetDacChannelDataSource(ChannelAddress.Group1Channel3, value); SetDacChannelDataSource(ChannelAddress.Group2Channel3, value); SetDacChannelDataSource(ChannelAddress.Group3Channel3, value); SetDacChannelDataSource(ChannelAddress.Group4Channel3, value); return; } if (channel == ChannelAddress.Group0Through4Channel4) { SetDacChannelDataSource(ChannelAddress.Group0Channel4, value); SetDacChannelDataSource(ChannelAddress.Group1Channel4, value); SetDacChannelDataSource(ChannelAddress.Group2Channel4, value); SetDacChannelDataSource(ChannelAddress.Group3Channel4, value); SetDacChannelDataSource(ChannelAddress.Group4Channel4, value); return; } if (channel == ChannelAddress.Group0Through4Channel5) { SetDacChannelDataSource(ChannelAddress.Group0Channel5, value); SetDacChannelDataSource(ChannelAddress.Group1Channel5, value); SetDacChannelDataSource(ChannelAddress.Group2Channel5, value); SetDacChannelDataSource(ChannelAddress.Group3Channel5, value); SetDacChannelDataSource(ChannelAddress.Group4Channel5, value); return; } if (channel == ChannelAddress.Group0Through4Channel6) { SetDacChannelDataSource(ChannelAddress.Group0Channel6, value); SetDacChannelDataSource(ChannelAddress.Group1Channel6, value); SetDacChannelDataSource(ChannelAddress.Group2Channel6, value); SetDacChannelDataSource(ChannelAddress.Group3Channel6, value); SetDacChannelDataSource(ChannelAddress.Group4Channel6, value); return; } if (channel == ChannelAddress.Group0Through4Channel7) { SetDacChannelDataSource(ChannelAddress.Group0Channel7, value); SetDacChannelDataSource(ChannelAddress.Group1Channel7, value); SetDacChannelDataSource(ChannelAddress.Group2Channel7, value); SetDacChannelDataSource(ChannelAddress.Group3Channel7, value); SetDacChannelDataSource(ChannelAddress.Group4Channel7, value); return; } if (channel == ChannelAddress.Group1Through4Channel0) { SetDacChannelDataSource(ChannelAddress.Group1Channel0, value); SetDacChannelDataSource(ChannelAddress.Group2Channel0, value); SetDacChannelDataSource(ChannelAddress.Group3Channel0, value); SetDacChannelDataSource(ChannelAddress.Group4Channel0, value); return; } if (channel == ChannelAddress.Group1Through4Channel1) { SetDacChannelDataSource(ChannelAddress.Group1Channel1, value); SetDacChannelDataSource(ChannelAddress.Group2Channel1, value); SetDacChannelDataSource(ChannelAddress.Group3Channel1, value); SetDacChannelDataSource(ChannelAddress.Group4Channel1, value); return; } if (channel == ChannelAddress.Group1Through4Channel2) { SetDacChannelDataSource(ChannelAddress.Group1Channel2, value); SetDacChannelDataSource(ChannelAddress.Group2Channel2, value); SetDacChannelDataSource(ChannelAddress.Group3Channel2, value); SetDacChannelDataSource(ChannelAddress.Group4Channel2, value); return; } if (channel == ChannelAddress.Group1Through4Channel3) { SetDacChannelDataSource(ChannelAddress.Group1Channel3, value); SetDacChannelDataSource(ChannelAddress.Group2Channel3, value); SetDacChannelDataSource(ChannelAddress.Group3Channel3, value); SetDacChannelDataSource(ChannelAddress.Group4Channel3, value); return; } if (channel == ChannelAddress.Group1Through4Channel4) { SetDacChannelDataSource(ChannelAddress.Group1Channel4, value); SetDacChannelDataSource(ChannelAddress.Group2Channel4, value); SetDacChannelDataSource(ChannelAddress.Group3Channel4, value); SetDacChannelDataSource(ChannelAddress.Group4Channel4, value); return; } if (channel == ChannelAddress.Group1Through4Channel5) { SetDacChannelDataSource(ChannelAddress.Group1Channel5, value); SetDacChannelDataSource(ChannelAddress.Group2Channel5, value); SetDacChannelDataSource(ChannelAddress.Group3Channel5, value); SetDacChannelDataSource(ChannelAddress.Group4Channel5, value); return; } if (channel == ChannelAddress.Group1Through4Channel6) { SetDacChannelDataSource(ChannelAddress.Group1Channel6, value); SetDacChannelDataSource(ChannelAddress.Group2Channel6, value); SetDacChannelDataSource(ChannelAddress.Group3Channel6, value); SetDacChannelDataSource(ChannelAddress.Group4Channel6, value); return; } if (channel == ChannelAddress.Group1Through4Channel7) { SetDacChannelDataSource(ChannelAddress.Group1Channel7, value); SetDacChannelDataSource(ChannelAddress.Group2Channel7, value); SetDacChannelDataSource(ChannelAddress.Group3Channel7, value); SetDacChannelDataSource(ChannelAddress.Group4Channel7, value); return; } throw new ArgumentOutOfRangeException(nameof(channel)); } _setDacChannelDataSourceInternalCommand.SetDacChannelDataSourceInternal(channel, value); } }
public void SetDacChannelDataSourceInternal( ChannelAddress channelAddress, DacChannelDataSource dacChannelDataSource) { using (_lockFactory.GetLock(LockType.CommandLock)) { if (channelAddress < ChannelAddress.Dac0 || channelAddress > ChannelAddress.Dac39) { throw new ArgumentOutOfRangeException(nameof(channelAddress)); } if ((int)dacChannelDataSource < (int)DacChannelDataSource.DataValueA || (int)dacChannelDataSource > (int)DacChannelDataSource.DataValueB) { throw new ArgumentOutOfRangeException(nameof(dacChannelDataSource)); } var channelNum = (byte)((byte)channelAddress - 8); var currentSourceSelections = ABSelectRegisterBits.AllChannelsA; var specialFunctionCode = SpecialFunctionCode.NOP; if (channelNum < 8) { specialFunctionCode = SpecialFunctionCode.WriteToABSelectRegister0; currentSourceSelections = _readbackABSelectRegisterCommand.ReadbackABSelectRegister(0); } else if (channelNum >= 8 && channelNum < 16) { specialFunctionCode = SpecialFunctionCode.WriteToABSelectRegister1; currentSourceSelections = _readbackABSelectRegisterCommand.ReadbackABSelectRegister(1); } else if (channelNum >= 16 && channelNum < 24) { specialFunctionCode = SpecialFunctionCode.WriteToABSelectRegister2; currentSourceSelections = _readbackABSelectRegisterCommand.ReadbackABSelectRegister(2); } else if (channelNum >= 24 && channelNum < 32) { specialFunctionCode = SpecialFunctionCode.WriteToABSelectRegister3; currentSourceSelections = _readbackABSelectRegisterCommand.ReadbackABSelectRegister(3); } else if (channelNum >= 32 && channelNum <= 39) { specialFunctionCode = SpecialFunctionCode.WriteToABSelectRegister4; currentSourceSelections = _readbackABSelectRegisterCommand.ReadbackABSelectRegister(4); } var newSourceSelections = currentSourceSelections; var channelOffset = (byte)(channelNum % 8); var channelMask = (ABSelectRegisterBits)(1 << channelOffset); if (dacChannelDataSource == DacChannelDataSource.DataValueA) { newSourceSelections &= ~channelMask; } else { newSourceSelections |= channelMask; } if (!_evalBoard.DeviceState.UseRegisterCache || newSourceSelections != currentSourceSelections ) { _sendSpecialFunctionCommand.SendSpecialFunction(specialFunctionCode, (byte)newSourceSelections); switch (specialFunctionCode) { case SpecialFunctionCode.WriteToABSelectRegister0: _evalBoard.DeviceState.ABSelectRegisters[0] = newSourceSelections; break; case SpecialFunctionCode.WriteToABSelectRegister1: _evalBoard.DeviceState.ABSelectRegisters[1] = newSourceSelections; break; case SpecialFunctionCode.WriteToABSelectRegister2: _evalBoard.DeviceState.ABSelectRegisters[2] = newSourceSelections; break; case SpecialFunctionCode.WriteToABSelectRegister3: _evalBoard.DeviceState.ABSelectRegisters[3] = newSourceSelections; break; case SpecialFunctionCode.WriteToABSelectRegister4: _evalBoard.DeviceState.ABSelectRegisters[4] = newSourceSelections; break; } } } }