Uni : Buffering of the last combined action arguments, ver. 3.1.1618
This commit is contained in:
@@ -15,8 +15,22 @@ namespace TBF.Rig.ControlBoard.Uni
|
||||
public const int PayloadLen = 38;
|
||||
public const byte MessageCode = (byte)' ';
|
||||
|
||||
|
||||
static Action arguments = new Action();
|
||||
///
|
||||
static void FetchArguments(Action combinedAction)
|
||||
{
|
||||
foreach (var aId in (ActionID[])Enum.GetValues(typeof(ActionID)))
|
||||
{
|
||||
if ((combinedAction.ActionId & aId) != 0) arguments.SetArgs(combinedAction, aId);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static byte[] GetMessage(Action action, short config, ulong bitsToInvert)
|
||||
{
|
||||
FetchArguments(action);
|
||||
|
||||
byte[] message = new byte[PayloadLen + 5]; /// headed 3 bytes, checksum 2 bytes
|
||||
|
||||
/// Header + message code (4 bytes)
|
||||
@@ -28,14 +42,14 @@ namespace TBF.Rig.ControlBoard.Uni
|
||||
/// Command
|
||||
message[4] = GetCommand(action);
|
||||
message[5] = action.IsStart() ? GetStartParams(action) : action.IsStop() ? GetStopParams(action) : (byte)0;
|
||||
message[6] = (action.DivId <= 0) ? (byte)0 : (byte)(action.DivId - 1);
|
||||
message[6] = (arguments.DivId <= 0) ? (byte)0 : (byte)(arguments.DivId - 1);
|
||||
|
||||
int totalPulsesCount = (action.TotalPulsesCount < 0) ? 0 : action.TotalPulsesCount;
|
||||
int totalPulsesCount = (arguments.TotalPulsesCount < 0) ? 0 : arguments.TotalPulsesCount;
|
||||
message[7] = (byte)(totalPulsesCount & 0xFF);
|
||||
message[8] = (byte)((totalPulsesCount >> 8) & 0xFF);
|
||||
message[9] = (byte)((totalPulsesCount >> 16) & 0xFF);
|
||||
|
||||
int massPulsesCount = (action.MassPulsesCount < 0) ? 0 : action.MassPulsesCount;
|
||||
|
||||
int massPulsesCount = (arguments.MassPulsesCount < 0) ? 0 : arguments.MassPulsesCount;
|
||||
message[10] = (byte)(massPulsesCount & 0xFF);
|
||||
message[11] = (byte)((massPulsesCount >> 8) & 0xFF);
|
||||
message[12] = (byte)((massPulsesCount >> 16) & 0xFF);
|
||||
@@ -46,7 +60,7 @@ namespace TBF.Rig.ControlBoard.Uni
|
||||
message[15] = (byte)((config >> 8) & 0xff);
|
||||
|
||||
/// Route
|
||||
ulong routeOut = action.Route ^ bitsToInvert;
|
||||
ulong routeOut = arguments.Route ^ bitsToInvert;
|
||||
message[16] = ((action.ActionId & ActionID.ChangeRoute) != 0) ? (byte)1 : (byte)0; /// Route change flag
|
||||
message[17] = (byte)(routeOut & 0xFF);
|
||||
message[18] = (byte)((routeOut >> 8) & 0xFF);
|
||||
@@ -72,11 +86,11 @@ namespace TBF.Rig.ControlBoard.Uni
|
||||
/// DA1
|
||||
message[33] = 0; /// PrudParL
|
||||
message[34] = 0; /// PrudParH
|
||||
|
||||
message[35] = (byte)Math.Max(1, Math.Min(255, action.PID)); /// PIDRV
|
||||
|
||||
message[35] = (byte)Math.Max(1, Math.Min(255, arguments.PID)); /// PIDRV
|
||||
message[36] = 0; // (byte)Math.Max(4, Math.Min(255, action.TolerRV)); /// TolerRV (4..20 mA reg.valve only)
|
||||
message[37] = (byte)Math.Max(0, Math.Min(255, action.StabTime)); /// StabRV
|
||||
message[38] = (byte)((action.DivThreshold >> 2) & 0xFF);
|
||||
message[37] = (byte)Math.Max(0, Math.Min(255, arguments.StabTime)); /// StabRV
|
||||
message[38] = (byte)((arguments.DivThreshold >> 2) & 0xFF);
|
||||
|
||||
message[39] = 0;
|
||||
message[40] = 0;
|
||||
|
||||
Reference in New Issue
Block a user