Esempio n. 1
0
        private Register(RegisterId id)
        {
#if DEBUG
            char c = id.ToString()[0];
            if (c >= '0' && c <= '9')
            {
                throw new ArgumentException(id.ToString() + " is not a valid register.");
            }
#endif
            this.id = id;
        }
Esempio n. 2
0
 public IByteRegister GetByteRegister(RegisterId id)
 {
     return(id switch
     {
         RegisterId.B => B,
         RegisterId.C => C,
         RegisterId.D => D,
         RegisterId.E => E,
         RegisterId.H => H,
         RegisterId.L => L,
         RegisterId.F => F,
         RegisterId.A => A,
         _ => throw new Exception($"Could not find the register with ID: {id}")
     });
Esempio n. 3
0
        private void HandleWriteRequest(WriteRegister writeRegisterParams)
        {
            var description =
                this.configurationProvider.Devices
                .FirstOrDefault(d => d.Id.ToString() == writeRegisterParams.Device)
                ?.Registers.FirstOrDefault(r => r.IntegerAddress.ToString() == writeRegisterParams.Register);

            if (description?.WriteAddress == null)
            {
                return;
            }

            var registerId = new RegisterId(Convert.ToUInt32(writeRegisterParams.Device), description);
            var value      = Convert.ToDouble(writeRegisterParams.Value);

            this
            .surveyService
            .ScheduleWriteOperation(
                new RegisterWriteRequest(registerId, description.IntegerAddress, description.FloatAddress, (uint)description.WriteAddress, value),
                writeRegisterParams.onFinish);
        }
Esempio n. 4
0
        /// <summary>
        /// Returns a register's value from its id
        /// </summary>
        /// <param name="regId"></param>
        /// <returns></returns>
        private uint GetRegisterValueFromId(RegisterId regId)
        {
            uint regVal = 0x00;

            switch (regId)
            {
            case RegisterId.A:
                regVal = registers.A;
                break;

            case RegisterId.B:
                regVal = registers.B;
                break;

            case RegisterId.C:
                regVal = registers.C;
                break;

            case RegisterId.D:
                regVal = registers.D;
                break;

            case RegisterId.R:
                regVal = registers.R;
                break;

            case RegisterId.S:
                regVal = registers.S;
                break;

            case RegisterId.AB:
                regVal = registers.AB;
                break;

            case RegisterId.CD:
                regVal = registers.CD;
                break;
            }
            return(regVal);
        }
Esempio n. 5
0
 public Register(RegisterId id, int size)
 {
     Id   = id;
     Size = size;
 }
Esempio n. 6
0
 public Register(RegisterType type, int number, CpuSize size)
 {
     id = (RegisterId)(number | ((int)type << 4) | ((int)size << 8));
 }
Esempio n. 7
0
 private Register(RegisterId id)
 {
     #if DEBUG
     char c = id.ToString()[0];
     if (c >= '0' && c <= '9')
     {
         throw new ArgumentException(id.ToString() + " is not a valid register.");
     }
     #endif
     this.id = id;
 }
Esempio n. 8
0
 public Register(RegisterType type, int number, CpuSize size)
 {
     id = (RegisterId)(number | ((int)type << 4) | ((int)size << 8));
 }
Esempio n. 9
0
 public ByteRegister(RegisterId id)
 {
     Id = id;
 }
 public WordRegister(RegisterId id)
 {
     Id = id;
 }
Esempio n. 11
0
 public RegisterPair(RegisterId id, IByteRegister hi, IByteRegister lo)
 {
     Id  = id;
     _hi = hi;
     _lo = lo;
 }
Esempio n. 12
0
        /// <summary>
        /// Set a register's value
        /// </summary>
        /// <param name="regId"></param>
        /// <param name="value"></param>
        private void SetRegisterValueFromId(RegisterId regId, uint value)
        {
            switch (regId)
            {
            case RegisterId.A:
                registers.A = (byte)value;
                break;

            case RegisterId.B:
                registers.B = (byte)value;
                break;

            case RegisterId.C:
                registers.C = (byte)value;
                break;

            case RegisterId.D:
                registers.D = (byte)value;
                break;

            case RegisterId.E:
                registers.E = (byte)value;
                break;

            case RegisterId.F:
                registers.F = (byte)value;
                break;

            case RegisterId.G:
                registers.G = (byte)value;
                break;

            case RegisterId.H:
                registers.H = (byte)value;
                break;

            case RegisterId.R:
                registers.R = (ushort)value;
                break;

            case RegisterId.S:
                registers.S = (ushort)value;
                break;

            case RegisterId.T:
                registers.T = (ushort)value;
                break;

            case RegisterId.U:
                registers.U = (ushort)value;
                break;

            case RegisterId.W:
                registers.W = value;
                break;

            case RegisterId.X:
                registers.X = value;
                break;

            case RegisterId.Y:
                registers.Y = value;
                break;

            case RegisterId.Z:
                registers.Z = value;
                break;

            case RegisterId.AB:
                registers.AB = (ushort)value;
                break;

            case RegisterId.CD:
                registers.CD = (ushort)value;
                break;

            case RegisterId.EF:
                registers.EF = (ushort)value;
                break;

            case RegisterId.GH:
                registers.GH = (ushort)value;
                break;

            case RegisterId.ABCD:
                registers.ABCD = value;
                break;

            case RegisterId.EFGH:
                registers.ABCD = value;
                break;

            case RegisterId.RS:
                registers.ABCD = value;
                break;

            case RegisterId.TU:
                registers.ABCD = value;
                break;
            }
        }