/// <summary>
        /// Creates a new instance of the <see cref="Tlc59711Device"/> class.
        /// </summary>
        /// <param name="memory">Memory to work with.</param>
        /// <param name="settings">Initial settings</param>
        public Tlc59711Device(IMemory memory, ITlc59711Settings settings = null) {
            if (ReferenceEquals(memory, null))
                throw new ArgumentNullException("memory");

            if (memory.Length < COMMAND_SIZE) {
                throw new ArgumentException(
                    string.Format("Need at least {0} bytes, got {1} bytes.", COMMAND_SIZE, memory.Length), "memory");
            }

            this.memory = memory;
            initSettings = settings;
            channels = new Tlc59711Channels(memory, DATA_OFFSET);

            Reset();
        }
        /// <summary>
        /// Creates a new instance of the <see cref="Tlc59711Cluster"/> class.
        /// </summary>
        /// <param name="memory">Memory to work with.</param>
        /// <param name="numberOfDevices">Number of <see cref="ITlc59711Device"/>s connected together.</param>
        public Tlc59711Cluster(IMemory memory, int numberOfDevices) {
            if (ReferenceEquals(memory, null))
                throw new ArgumentNullException("memory");
            if (numberOfDevices <= 0)
                throw new ArgumentOutOfRangeException("numberOfDevices", "You cannot create a cluster with less than one device.");

            var minimumRequiredMemorySize = (numberOfDevices * COMMAND_SIZE);
            if (memory.Length < minimumRequiredMemorySize) {
                var message = string.Format("For {0} device(s) you have to provide a minimum of {1} bytes of memory.", numberOfDevices, minimumRequiredMemorySize);
                throw new InsufficientMemoryException(message);
            }
            
            devices = CreateDevices(memory, numberOfDevices).ToArray();
            channels = new Tlc59711ClusterChannels(devices);
        }
        /// <summary>
        /// Creates a new instance of the <see cref="Tlc59711Device"/> class.
        /// </summary>
        /// <param name="memory">Memory to work with.</param>
        /// <param name="settings">Initial settings</param>
        public Tlc59711Device(IMemory memory, ITlc59711Settings settings = null)
        {
            if (ReferenceEquals(memory, null))
            {
                throw new ArgumentNullException("memory");
            }

            if (memory.Length < COMMAND_SIZE)
            {
                throw new ArgumentException(
                          string.Format("Need at least {0} bytes, got {1} bytes.", COMMAND_SIZE, memory.Length), "memory");
            }

            this.memory  = memory;
            initSettings = settings;
            channels     = new Tlc59711Channels(memory, DATA_OFFSET);

            Reset();
        }
Example #4
0
        /// <summary>
        /// Initializes a new instance of the <see cref="Tlc59711Device"/> class.
        /// </summary>
        /// <param name="memory">The memory.</param>
        /// <param name="settings">The settings.</param>
        /// <exception cref="ArgumentNullException">memory.</exception>
        /// <exception cref="ArgumentException">thrown if memory is too small.</exception>
        public Tlc59711Device(IMemory memory, ITlc59711Settings settings = null)
        {
            if (ReferenceEquals(memory, null))
            {
                throw new ArgumentNullException(nameof(memory));
            }

            if (memory.Length < CommandSize)
            {
                throw new ArgumentException(
                          string.Format("Need at least {0} bytes, got {1} bytes.", CommandSize, memory.Length), nameof(memory));
            }

            this.memory       = memory;
            this.initSettings = settings;
            this.channels     = new Tlc59711Channels(memory, DataOffset);

            this.Reset();
        }
Example #5
0
        /// <summary>
        /// Creates a new instance of the <see cref="Tlc59711Cluster"/> class.
        /// </summary>
        /// <param name="memory">Memory to work with.</param>
        /// <param name="numberOfDevices">Number of <see cref="ITlc59711Device"/>s connected together.</param>
        public Tlc59711Cluster(IMemory memory, int numberOfDevices)
        {
            if (ReferenceEquals(memory, null))
            {
                throw new ArgumentNullException("memory");
            }
            if (numberOfDevices <= 0)
            {
                throw new ArgumentOutOfRangeException("numberOfDevices", "You cannot create a cluster with less than one device.");
            }

            var minimumRequiredMemorySize = (numberOfDevices * COMMAND_SIZE);

            if (memory.Length < minimumRequiredMemorySize)
            {
                var message = string.Format("For {0} device(s) you have to provide a minimum of {1} bytes of memory.", numberOfDevices, minimumRequiredMemorySize);
                throw new OutOfMemoryException(message);
            }

            devices  = CreateDevices(memory, numberOfDevices).ToArray();
            channels = new Tlc59711ClusterChannels(devices);
        }
Example #6
0
        /// <summary>
        /// Initializes a new instance of the <see cref="Tlc59711Cluster"/> class.
        /// </summary>
        /// <param name="memory">Memory to work with.</param>
        /// <param name="numberOfDevices">Number of <see cref="ITlc59711Device" />s connected together.</param>
        /// <exception cref="ArgumentNullException">memory.</exception>
        /// <exception cref="ArgumentOutOfRangeException">numberOfDevices - You cannot create a cluster with less than one device.</exception>
        /// <exception cref="InsufficientMemoryException">Thrown in memory is insufficient.</exception>
        public Tlc59711Cluster(IMemory memory, int numberOfDevices)
        {
            if (memory is null)
            {
                throw new ArgumentNullException("memory");
            }

            if (numberOfDevices <= 0)
            {
                throw new ArgumentOutOfRangeException("numberOfDevices", "You cannot create a cluster with less than one device.");
            }

            var minimumRequiredMemorySize = numberOfDevices * CommandSize;

            if (memory.Length < minimumRequiredMemorySize)
            {
                var message = string.Format("For {0} device(s) you have to provide a minimum of {1} bytes of memory.", numberOfDevices, minimumRequiredMemorySize);
                throw new InsufficientMemoryException(message);
            }

            this.devices  = CreateDevices(memory, numberOfDevices).ToArray();
            this.channels = new Tlc59711ClusterChannels(this.devices);
        }
Example #7
0
 /// <summary>
 /// Creates a new instance of the <see cref="Tlc59711Cluster"/> class.
 /// </summary>
 /// <param name="devices">The devices, that are chained together</param>
 public Tlc59711Cluster(IEnumerable <ITlc59711Device> devices)
 {
     this.devices = devices.ToArray();
     channels     = new Tlc59711ClusterChannels(this.devices);
 }
 /// <summary>
 /// Creates a new instance of the <see cref="Tlc59711Cluster"/> class.
 /// </summary>
 /// <param name="devices">The devices, that are chained together</param>
 public Tlc59711Cluster(IEnumerable<ITlc59711Device> devices) {
     this.devices = devices.ToArray();
     channels = new Tlc59711ClusterChannels(this.devices);
 }