// 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 = "") { }
// 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)); }
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); }
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 = "") { }