public void tb(PigpiodIf pigpiodIf, CancellationToken ct) { int h, e, b; string exp; string buf; byte[] bytes = new byte[128]; Console.WriteLine("\r\nSMBus / I2C tests."); /* this test requires an ADXL345 on I2C bus 1 addr 0x53 */ h = pigpiodIf.i2c_open(1, 0x53, 0); CHECK(11, 1, h, 0, 0, "i2c open", ct); e = pigpiodIf.i2c_write_device((UInt32)h, new byte[] { 0x00 }); /* move to known register */ CHECK(11, 2, e, 0, 0, "i2c write device", ct); bytes = new byte[1]; b = pigpiodIf.i2c_read_device((UInt32)h, bytes); CHECK(11, 3, b, 1, 0, "i2c read device", ct); CHECK(11, 4, bytes[0], 0xE5, 0, "i2c read device", ct); b = pigpiodIf.i2c_read_byte((UInt32)h); CHECK(11, 5, b, 0xE5, 0, "i2c read byte", ct); b = pigpiodIf.i2c_read_byte_data((UInt32)h, 0); CHECK(11, 6, b, 0xE5, 0, "i2c read byte data", ct); b = pigpiodIf.i2c_read_byte_data((UInt32)h, 48); CHECK(11, 7, b, 2, 0, "i2c read byte data", ct); exp = "\x1D[aBcDeFgHjKM]"; bytes = System.Text.Encoding.UTF8.GetBytes(exp); e = pigpiodIf.i2c_write_device((UInt32)h, bytes); CHECK(11, 8, e, 0, 0, "i2c write device", ct); e = pigpiodIf.i2c_write_device((UInt32)h, new byte[] { 0x1D }); bytes = new byte[bytes.Length - 1]; b = pigpiodIf.i2c_read_device((UInt32)h, bytes); buf = System.Text.Encoding.UTF8.GetString(bytes); CHECK(11, 9, b, buf.Length, 0, "i2c read device", ct); CHECK(11, 10, string.Compare(buf, 0, exp, 1, buf.Length - 1), 0, 0, "i2c read device", ct); if (string.Compare(buf, 0, exp, 1, buf.Length - 1) != 0) { Console.WriteLine("got [{0}] expected [{1}]", buf, exp.Substring(1)); } e = pigpiodIf.i2c_write_byte_data((UInt32)h, 0x1d, 0xAA); CHECK(11, 11, e, 0, 0, "i2c write byte data", ct); b = pigpiodIf.i2c_read_byte_data((UInt32)h, 0x1d); CHECK(11, 12, b, 0xAA, 0, "i2c read byte data", ct); e = pigpiodIf.i2c_write_byte_data((UInt32)h, 0x1d, 0x55); CHECK(11, 13, e, 0, 0, "i2c write byte data", ct); b = pigpiodIf.i2c_read_byte_data((UInt32)h, 0x1d); CHECK(11, 14, b, 0x55, 0, "i2c read byte data", ct); exp = "[1234567890#]"; bytes = System.Text.Encoding.UTF8.GetBytes(exp); e = pigpiodIf.i2c_write_block_data((UInt32)h, 0x1C, bytes); CHECK(11, 15, e, 0, 0, "i2c write block data", ct); e = pigpiodIf.i2c_write_device((UInt32)h, new byte[] { 0x1D }); b = pigpiodIf.i2c_read_device((UInt32)h, bytes); buf = System.Text.Encoding.UTF8.GetString(bytes); CHECK(11, 16, b, buf.Length, 0, "i2c read device", ct); CHECK(11, 17, string.Compare(buf, 0, exp, 0, buf.Length), 0, 0, "i2c read device", ct); if (string.Compare(buf, 0, exp, 0, buf.Length) != 0) { Console.WriteLine("got [{0}] expected [{1}]", buf, exp); } b = pigpiodIf.i2c_read_i2c_block_data((UInt32)h, 0x1D, bytes); buf = System.Text.Encoding.UTF8.GetString(bytes); CHECK(11, 18, b, buf.Length, 0, "i2c read i2c block data", ct); CHECK(11, 19, string.Compare(buf, 0, exp, 0, buf.Length), 0, 0, "i2c read i2c block data", ct); if (string.Compare(buf, 0, exp, 0, buf.Length) != 0) { Console.WriteLine("got [{0}] expected [{1}]", buf, exp); } exp = "(-+=;:,<>!%)"; bytes = System.Text.Encoding.UTF8.GetBytes(exp); e = pigpiodIf.i2c_write_i2c_block_data((UInt32)h, 0x1D, bytes); CHECK(11, 20, e, 0, 0, "i2c write i2c block data", ct); b = pigpiodIf.i2c_read_i2c_block_data((UInt32)h, 0x1D, bytes); buf = System.Text.Encoding.UTF8.GetString(bytes); CHECK(11, 21, b, buf.Length, 0, "i2c read i2c block data", ct); CHECK(11, 22, string.Compare(buf, 0, exp, 0, buf.Length), 0, 0, "i2c read i2c block data", ct); if (string.Compare(buf, 0, exp, 0, buf.Length) != 0) { Console.WriteLine("got [{0}] expected [{1}]", buf, exp); } e = pigpiodIf.i2c_close((UInt32)h); CHECK(11, 23, e, 0, 0, "i2c close", ct); }