internal Register this[RegisterEnum r] { get { var individuals = GetRegisterEnumFromPair(r); if (individuals != null) { GetPair( _registers[(int)individuals[0]], _registers[(int)individuals[1]] ); } return(_registers[(int)r]); } set { var individuals = GetRegisterEnumFromPair(r); if (individuals != null) { SetPair( value, _registers[(int)individuals[0]], _registers[(int)individuals[1]] ); } _registers[(int)r] = value; } }
public byte ModifyRegister(RegisterEnum register, [NotNull] Func <byte, byte> action, out StatusRegister statusRegister) { if (action == null) { throw new ArgumentNullException(nameof(action)); } var readValue = ReadRegister(register, out statusRegister); var setValue = action(readValue); if (setValue != readValue) { statusRegister = WriteRegister(register, setValue); } return(setValue); }
public byte ReadRegister(RegisterEnum register, out StatusRegister statusRegister) { var registerOrCommand = (byte)((byte)register | (byte)CommandEnum.ReadRegister); if (register == RegisterEnum.Status) { statusRegister = Exchange(NOP, null); return(statusRegister); } _tinyBuffer[0] = NOP; statusRegister = Exchange(registerOrCommand, _tinyBuffer); return(_tinyBuffer[0]); }
private RegisterEnum[] GetRegisterEnumFromPair(RegisterEnum r) { switch (r) { case RegisterEnum.HL: return(new [] { RegisterEnum.H, RegisterEnum.L }); case RegisterEnum.BC: return(new [] { RegisterEnum.B, RegisterEnum.C }); case RegisterEnum.DE: return(new [] { RegisterEnum.D, RegisterEnum.E }); case RegisterEnum.AF: return(new [] { RegisterEnum.A, RegisterEnum.F }); } return(null); }
public TRegister ModifyRegister <TRegister>(RegisterEnum register, [NotNull] Action <TRegister> action, out StatusRegister statusRegister) where TRegister : IRegister { if (action == null) { throw new ArgumentNullException(nameof(action)); } var readByteValue = ReadRegister(register, out statusRegister); var registerValue = (TRegister)(dynamic)readByteValue; action(registerValue); var setByteValue = (byte)(dynamic)registerValue; if (setByteValue != readByteValue) { statusRegister = WriteRegister(register, setByteValue); } return(registerValue); }
public StatusRegister WriteRegister(RegisterEnum register, byte value) { _tinyBuffer[0] = value; var registerOrCommand = (byte)((byte)register | (byte)CommandEnum.WriteRegister); var status = Exchange(registerOrCommand, _tinyBuffer, true); switch (register) { case RegisterEnum.FrequencyChannel: Frequency = ((FrequencyChannelRegister)value).Frequency; break; case RegisterEnum.Configuration: var general = (ConfigurationRegister)value; if (State != general.PowerState) // transition { if (State == PowerStateEnum.Down) // from down to up { Functionalities.Sleep.Milli(5); } else if (State == PowerStateEnum.Up) // from up to down { Functionalities.Pins.Write(_chipEnable, false); } } State = general.PowerState; Mode = general.TransceiverMode; break; case RegisterEnum.ReceiverAddress: _isPipe0Enabled = ((ReceiverAddressRegister)value).EnableOnPipe0; break; } return(status); }
public void setRegister(RegisterEnum index, Int64 data) { registers[(int)index].register = data; }
/// <summary> /// Create a register instance based on a RegisterEnum. /// </summary> /// <param name="registerEnum"></param> public Register(RegisterEnum registerEnum) { Name = registerEnum; Value = 0; }
public TRegister ModifyRegister <TRegister>(RegisterEnum register, Action <TRegister> action) where TRegister : IRegister => ModifyRegister(register, action, out _dummyStatusRegister);
public byte ModifyRegister(RegisterEnum register, Func <byte, byte> action) => ModifyRegister(register, action, out _dummyStatusRegister);
public Int64 getRegister(int index) { RegisterEnum e = (RegisterEnum)index; return(getRegister(e)); }
public byte ReadRegister(RegisterEnum register) => ReadRegister(register, out _dummyStatusRegister);
public void setRegister(int index, Int64 data) { RegisterEnum e = (RegisterEnum)index; setRegister(e, data); }
public void clearRegister(RegisterEnum index) { registers[(int)index].register = 0; }
public RegisterParam(Processor p, RegisterEnum rEnum) { Processor = p; Register = rEnum; }
private void MSERIALPORT_TRIGGERMESSIGE(object sender, SERIALPORT.MESSIGEEventArgs e) { switch (e.MyType) { case SERIALPORT.MESSIGEEventArgs.MessageType.Warning: break; case SERIALPORT.MESSIGEEventArgs.MessageType.Error: break; case SERIALPORT.MESSIGEEventArgs.MessageType.Message: break; case SERIALPORT.MESSIGEEventArgs.MessageType.Data: if (e.MyData[0] == PRO) { //发出去的寄存器地址 string strTemp = ""; strTemp = e.SendData[2].ToString("X2") + e.SendData[3].ToString("X2"); int iRegister = Convert.ToInt32(strTemp, 16); RegisterEnum temp = (RegisterEnum)iRegister; //发出去的功能码 string strFunction = e.SendData[1].ToString("X2"); FunctionCodeEnum Function = (FunctionCodeEnum)Convert.ToInt32(strFunction); int inumber = 0; byte[] byteArray = null; if (Function == FunctionCodeEnum.MultipleReads) { try { //抓取数据回来 inumber = e.MyData[2]; byteArray = new byte[inumber]; for (int i = 0; i < inumber; i++) { byteArray[i] = e.MyData[i + 3]; } } catch (Exception ex) { MESSIGEEventArgs ee = new MESSIGEEventArgs(); ee.MyType = MESSIGEEventArgs.MessageType.Error; ee.MyMessage = ex.Message; OnTRIGGERMESSIGE(ee); } } else { return; } switch (temp) { case RegisterEnum.MotorMode: MotorModel = System.Text.Encoding.Default.GetString(byteArray).Replace("\0", ""); break; case RegisterEnum.MotorVersionHardware: MotorVersionHardware = System.Text.Encoding.Default.GetString(byteArray).Replace("\0", ""); break; case RegisterEnum.MotorVersionSoftware: MotorVersionSoftware = System.Text.Encoding.Default.GetString(byteArray).Replace("\0", ""); break; case RegisterEnum.MotorErrorCode: string error = ""; foreach (byte by in byteArray) { error += Convert.ToString(by, 2).PadLeft(8, '0'); } error = ToMotorError(error); if (error != "") { MESSIGEEventArgs ee = new MESSIGEEventArgs(); ee.MyType = MESSIGEEventArgs.MessageType.Error; ee.MyMessage = error; OnTRIGGERMESSIGE(ee); } break; case RegisterEnum.MotorPositionNow: strTemp = ""; if (byteArray.Length == 4) { for (int i = 0; i < byteArray.Length; i++) { strTemp += byteArray[i].ToString("X2"); } } MotorPositionNow = Convert.ToInt32(strTemp, 16); break; case RegisterEnum.MotorSpeedNow: strTemp = ""; for (int i = 0; i < byteArray.Length; i++) { strTemp += byteArray[i].ToString("X2"); } MotorSpeedNow = Convert.ToInt32(strTemp, 16); break; case RegisterEnum.MotorObjectPosition: strTemp = ""; for (int i = 0; i < byteArray.Length; i++) { strTemp += byteArray[i].ToString("X2"); } iObjectrPosition = Convert.ToInt32(strTemp, 16); break; case RegisterEnum.MotorObjectSpeed: strTemp = ""; for (int i = 0; i < byteArray.Length; i++) { strTemp += byteArray[i].ToString("X2"); } iObjectSpeed = Convert.ToInt32(strTemp, 16); break; case RegisterEnum.MotorAcceleration: strTemp = ""; for (int i = 0; i < byteArray.Length; i++) { strTemp += byteArray[i].ToString("X2"); } iAcceleration = Convert.ToInt32(strTemp, 16); break; case RegisterEnum.MotorDeceleration: strTemp = ""; for (int i = 0; i < byteArray.Length; i++) { strTemp += byteArray[i].ToString("X2"); } iDeceleration = Convert.ToInt32(strTemp, 16); break; case RegisterEnum.MotorQuickStopDeceleration: strTemp = ""; for (int i = 0; i < byteArray.Length; i++) { strTemp += byteArray[i].ToString("X2"); } iQuickStopDeceleration = Convert.ToInt32(strTemp, 16); break; case RegisterEnum.MotorHomeAddSubtract: strTemp = ""; for (int i = 0; i < byteArray.Length; i++) { strTemp += byteArray[i].ToString("X2"); } iHomeAddSubtract = Convert.ToInt32(strTemp, 16); break; case RegisterEnum.MotorHomeMechanicsSpeed: strTemp = ""; for (int i = 0; i < byteArray.Length; i++) { strTemp += byteArray[i].ToString("X2"); } iHomeMechanicsSpeed = Convert.ToInt32(strTemp, 16); break; case RegisterEnum.MotorHomeSpeed: strTemp = ""; for (int i = 0; i < byteArray.Length; i++) { strTemp += byteArray[i].ToString("X2"); } iHomeSpeed = Convert.ToInt32(strTemp, 16); break; case RegisterEnum.MotorZeroOffset: strTemp = ""; for (int i = 0; i < byteArray.Length; i++) { strTemp += byteArray[i].ToString("X2"); } iZeroOffset = Convert.ToInt32(strTemp, 16); break; case RegisterEnum.MotorState: strTemp = ""; for (int i = 0; i < byteArray.Length; i++) { strTemp += byteArray[i].ToString("X2"); } strTemp = Convert.ToString(Convert.ToInt32(strTemp, 16), 2).PadLeft(16, '0'); ToMotorState(strTemp); break; } } break; } }
internal MemoryParam(Processor p, RegisterEnum r) { _processor = p; Register = r; Address = _processor.Registers[Register].Value; }
public void clearRegister(int index) { RegisterEnum e = (RegisterEnum)index; clearRegister(e); }
public Int64 getRegister(RegisterEnum index) { return registers[(int)index].register; }
public Int64 getRegister(RegisterEnum index) { return(registers[(int)index].register); }