public override bool WritePage(int addr, byte[] buffer)
        {
#if !NUSBIO2
            var v = this._i2c.Send16BitsAddressAndBuffer(addr, buffer.Length, buffer);
            // EEPROM need a wait time after a write operation
            if (this._waitTimeAfterWriteOperation > 0)
            {
                Thread.Sleep(this._waitTimeAfterWriteOperation);
            }
            return(v);
#else
            var outBuffer = new List <byte>()
            {
                (byte)(addr >> 8), (byte)(addr & 0xFF)
            };
            outBuffer.AddRange(buffer);
            var r = Nusbio2NAL.I2C_Helper_Write(base.DeviceId, outBuffer.ToArray()) == 1;

            if (this._waitTimeAfterWriteOperation > 0)
            {
                System.Threading.Thread.Sleep(this._waitTimeAfterWriteOperation);
            }

            return(true);
#endif
        }
        public override EEPROM_BUFFER ReadPage(int addr, int len = EEPROM_BASE_CLASS.DEFAULT_PAGE_SIZE)
        {
            var r = new EEPROM_BUFFER(len);

#if NUSBIO2
            var inBuffer = new List <byte>()
            {
                (byte)(addr >> 8), (byte)(addr & 0xFF)
            };
            r.Buffer    = new byte[len]; // Must pre allocate the buffer for now
            r.Succeeded = Nusbio2NAL.I2C_Helper_WriteRead(base.DeviceId, inBuffer.ToArray(), r.Buffer) == 1;
            return(r);
#else
#if OPTIMIZE_I2C_CALL
            // This method is faster because the I2C write and read operations are
            // combined in one USB buffer
            r.Succeeded = this._i2c.Send16BitsAddressAndReadBuffer(addr, len, r.Buffer);
#else
            // Slower method because we have one USB operation for the I2C write
            // and one USB operation for the I2C read
            // The transfer of the data per say is the same
            var tmpArray = new byte[2];
            if (this._i2c.WriteBuffer(new byte[2] {
                (byte)(addr >> 8), (byte)(addr & 0xFF)
            }))
            {
                r.Succeeded = this._i2c.ReadBuffer(len, r.Buffer);
            }
#endif
#endif
            return(r);
        }
        bool Ii2cOut.i2c_WriteBuffer(byte[] buffer)
        {
            var b = new List <byte>()
            {
                (byte)this.DeviceId
            };

            b.AddRange(buffer);
            return(Nusbio2NAL.I2C_Helper_Write(this.DeviceId, b.ToArray()) == 1);
        }
Beispiel #4
0
        bool Ii2cOut.i2c_WriteReadBuffer(byte[] writeBuffer, byte[] readBuffer)
        {
#if NUSBIO2
            var r = Nusbio2NAL.I2C_Helper_WriteRead(this.DeviceID, writeBuffer, readBuffer) == 1;
            return(r);
#else
            if (this._i2c.WriteBuffer(writeBuffer))
            {
                return(this._i2c.ReadBuffer(readBuffer.Length, readBuffer));
            }
            else
            {
                return(false);
            }
#endif
        }
        public SPIResult SpiTransfer(List <byte> bytes, bool select = true, bool optimizeDataLine = false)
        {
#if NUSBIO2
            var r             = new SPIResult();
            var tmpReadBuffer = new byte[bytes.Count];
            var ok            = Nusbio2NAL.SPI_Helper_SingleReadWrite(bytes.ToArray(), tmpReadBuffer, bytes.Count);
            if (ok)
            {
                r.Buffer    = tmpReadBuffer.ToList();
                r.Succeeded = true;
            }
            return(r);
#else
            return(this._spi.Transfer(bytes, select, optimizeDataLine));
#endif
        }
Beispiel #6
0
        private SPIResult SpiTransfer(List <byte> buffer, bool writeRead)
        {
#if NUSBIO2
            var r = new SPIResult();
            if (writeRead)
            {
                var tmpReadBuffer = new byte[buffer.Count];
                var ok            = Nusbio2NAL.SPI_Helper_SingleReadWrite(buffer.ToArray(), tmpReadBuffer, buffer.Count);
                if (ok)
                {
                    r.Buffer    = tmpReadBuffer.ToList();
                    r.Succeeded = true;
                }
            }
            else
            {
                r.Succeeded = Nusbio2NAL.SPI_Helper_Write(buffer.ToArray(), buffer.Count);
            }
            return(r);
#else
            return(this._spi.Transfer(buffer));
#endif
        }
 //MadeInTheUSB.Components.Interface.Ii2cOut
 bool Ii2cOut.i2c_Send1ByteCommand(byte c)
 {
     return(Nusbio2NAL.I2C_Helper_Write1Byte(this.DeviceId, c) == 1);
 }
Beispiel #8
0
 bool Ii2cOut.i2c_WriteBuffer(byte[] buffer)
 {
     return(Nusbio2NAL.I2C_Helper_Write(this.DeviceId, buffer.ToArray()) == 1);
 }