/// <summary> /// Reads the status of the specified pins. /// </summary> /// <param name="pins">The pins.</param> /// <returns> /// The pins status. /// </returns> public ProcessorPins Read(ProcessorPins pins) { return(pins.Enumerate() .Select(p => Read(p) ? (ProcessorPins)((uint)1 << (int)p) : ProcessorPins.None) .Aggregate( ProcessorPins.None, (a, p) => a | p)); }
/// <summary> /// Reads the status of the specified pins. /// </summary> /// <param name="pins">The pins.</param> /// <returns> /// The pins status. /// </returns> public ProcessorPins Read(ProcessorPins pins) { var result = new ProcessorPins(pins.Count); foreach (var p in pins.Enumerate()) { result.Set(p, Read((ProcessorPin)p)); } return(result); }
/// <summary> /// </summary> public ProcessorPins Read(ProcessorPins pins) { // TODO: implement on $KE,RD,ALL var result = new ProcessorPins(pins.Count); foreach (var p in pins.Enumerate()) { result.Set(p, Read((ProcessorPin)p)); } return(result); }
/// <summary> /// Logical AND opertion on pins with int /// </summary> public static ProcessorPins And(ProcessorPins pins, uint value) { var result = new ProcessorPins(32); foreach (var p in pins.Enumerate()) { var val = ((uint)(1 << (int)p) & value); result.Set(p, val > 0 ? true : false); } return(result); }
private void CheckInputPins() { var newPinValues = Driver.Read(inputPins); var notifiedConfigurations = new List <PinConfiguration>(); foreach (var processorPin in inputPins.Enumerate()) { var np = (ProcessorPin)processorPin; var oldPinValue = pinRawValues.Get(processorPin); var newPinValue = newPinValues.Get(processorPin); if (oldPinValue != newPinValue) { var pin = (InputPinConfiguration)pinConfigurations[np]; var switchPin = pin as SwitchInputPinConfiguration; if (switchPin != null) { if (pin.GetEffective(newPinValue)) { pinValues[np] = !pinValues[np]; notifiedConfigurations.Add(pin); } } else { pinValues[np] = pin.GetEffective(newPinValue); notifiedConfigurations.Add(pin); } } } pinRawValues = newPinValues; // Only fires events once all states have been modified. foreach (var pin in notifiedConfigurations) { OnPinStatusChanged(new PinStatusEventArgs { Configuration = pin, Enabled = pinValues[pin.Pin] }); } }