/// <summary> /// Scan for devices on the I2C bus and populate the internal list. By default, /// the standard speed (100KHz) and shared bus mode is used /// </summary> /// <param name="startAddr">The I2C address to start scanning</param> /// <param name="endAddr">The I2C address to end scanning</param> /// <returns>Total devices found on the bus</returns> public int ScanDevicesOnBus(int startAddr, int endAddr) { if (startAddr < 0 || startAddr > 127 || startAddr > endAddr || endAddr > 127) { throw new ArgumentException("Invalid I2C address range"); } byte[] tempBuffer = new byte[8]; //why 8?? I2cDevice device = null; I2cTransferStatus xferStatus = I2cTransferStatus.FullTransfer; for (int addr = startAddr; addr <= endAddr; addr++) { device = I2cDevice.FromId(_deviceSelector, new I2cConnectionSettings(addr) { BusSpeed = I2cBusSpeed.StandardMode, SharingMode = I2cSharingMode.Shared }); xferStatus = device.ReadPartial(tempBuffer).Status; if (xferStatus == I2cTransferStatus.FullTransfer || xferStatus == I2cTransferStatus.PartialTransfer) { //we have a device... _i2CDevices.Add(addr, device); } } return(_i2CDevices.Count); }
private static string DisplayStatus(I2cTransferStatus resStatus) { string str = ""; switch (resStatus) { case I2cTransferStatus.FullTransfer: str = "FullTransfert"; break; case I2cTransferStatus.PartialTransfer: str = "PartialTransfer"; break; case I2cTransferStatus.SlaveAddressNotAcknowledged: str = "Slave NACK"; break; } return(str); }
public I2CTransferException(string message, I2cTransferStatus transferStatus, Exception inner) : base(message, inner) { }
public I2CTransferException(string message, I2cTransferStatus transferStatus) : base(message) { }
public I2CTransferException(I2cTransferStatus transferStatus) { }
internal I2cTransferResult(I2cTransferStatus status, int bytesWritten, int bytesRead) { this.Status = status; this.BytesWritten = bytesWritten; this.BytesRead = bytesRead; }