// this method should be visible for enums only, but... it's not possible in C#
        public static DoubleWordRegister Define(this IConvertible o, IProvidesRegisterCollection <DoubleWordRegisterCollection> p, uint resetValue = 0, string name = "")
        {
            if (!o.GetType().IsEnum)
            {
                throw new ArgumentException("This method should be called on enumerated type");
            }

            return(p.RegistersCollection.DefineRegister(Convert.ToInt64(o), resetValue));
        }
        public static ByteRegister Bind(this IConvertible o, IProvidesRegisterCollection <ByteRegisterCollection> p, ByteRegister reg, string name = "")
        {
            if (!o.GetType().IsEnum)
            {
                throw new ArgumentException("This method should be called on enumerated type");
            }

            return(p.RegistersCollection.AddRegister(Convert.ToInt64(o), reg));
        }
        public static void DefineMany(this IConvertible o, IProvidesRegisterCollection <ByteRegisterCollection> p, uint count, Action <ByteRegister, int> setup, uint stepInBytes = 1, byte resetValue = 0, string name = "")
        {
            if (!o.GetType().IsEnum)
            {
                throw new ArgumentException("This method should be called on enumerated type");
            }

            var baseAddress = Convert.ToInt64(o);

            for (var i = 0; i < count; i++)
            {
                var register = p.RegistersCollection.DefineRegister(baseAddress + i * stepInBytes, resetValue);
                setup(register, i);
            }
        }
 // this method should be visible for enums only, but... it's not possible in C#
 public static ByteRegister Define(this IConvertible o, IProvidesRegisterCollection <ByteRegisterCollection> p, byte resetValue = 0, string name = "")
 {
     return(Define(o, p.RegistersCollection, resetValue, name));
 }
 public static void Define8Many(this IConvertible o, IProvidesRegisterCollection <ByteRegisterCollection> p, uint count, Action <ByteRegister, int> setup, uint stepInBytes = 1, byte resetValue = 0, string name = "")
 {
     DefineMany(o, p, count, setup, stepInBytes, resetValue, name);
 }
 public static void Tag8(this IConvertible o, IProvidesRegisterCollection <ByteRegisterCollection> p, byte resetValue = 0, string name = "")
 {
 }
Пример #7
0
 // this method it for easier use in peripherals implementing registers of different width
 public static DoubleWordRegister Define32(this IConvertible o, IProvidesRegisterCollection <DoubleWordRegisterCollection> p, uint resetValue = 0, string name = "")
 {
     return(Define(o, p, resetValue, name));
 }
Пример #8
0
 public static void DefineMany(this IConvertible o, IProvidesRegisterCollection <DoubleWordRegisterCollection> p, uint count, Action <DoubleWordRegister, int> setup, uint stepInBytes = 4, uint resetValue = 0, string name = "")
 {
     DefineMany(o, p.RegistersCollection, count, setup, stepInBytes, resetValue, name);
 }
Пример #9
0
 public static void Tag32(this IConvertible o, IProvidesRegisterCollection <DoubleWordRegisterCollection> p, uint resetValue = 0, string name = "")
 {
 }
 public static WordRegister Define16(this IConvertible o, IProvidesRegisterCollection <WordRegisterCollection> p, ushort resetValue = 0, string name = "")
 {
     return(Define(o, p, resetValue));
 }
 public static void Tag16(this IConvertible o, IProvidesRegisterCollection <WordRegisterCollection> p, ushort resetValue = 0, string name = "")
 {
 }