Files
2021-05-11 11:13:29 +02:00

81 lines
1.9 KiB
Go

package ina260
import (
"testing"
qt "github.com/frankban/quicktest"
"tinygo.org/x/drivers/tester"
)
func TestDefaultI2CAddress(t *testing.T) {
c := qt.New(t)
bus := tester.NewI2CBus(c)
dev := New(bus)
c.Assert(dev.Address, qt.Equals, uint16(Address))
}
func TestConnected(t *testing.T) {
c := qt.New(t)
bus := tester.NewI2CBus(c)
fake := tester.NewI2CDevice16(c, Address)
fake.Registers = defaultRegisters()
bus.AddDevice(fake)
dev := New(bus)
c.Assert(dev.Connected(), qt.Equals, true)
}
func TestVoltage(t *testing.T) {
c := qt.New(t)
bus := tester.NewI2CBus(c)
fake := tester.NewI2CDevice16(c, Address)
fake.Registers = defaultRegisters()
fake.Registers[REG_BUSVOLTAGE] = 0x2570
bus.AddDevice(fake)
dev := New(bus)
// Datasheet: 2570h = 11.98V = 11980mV = 11980000uV
c.Assert(dev.Voltage(), qt.Equals, int32(11980000))
}
func TestCurrent(t *testing.T) {
c := qt.New(t)
bus := tester.NewI2CBus(c)
fake := tester.NewI2CDevice16(c, Address)
fake.Registers = defaultRegisters()
fake.Registers[REG_CURRENT] = 0x2710
bus.AddDevice(fake)
dev := New(bus)
// Datasheet: 2710h = 12.5A = 12500mA = 12500000uA
c.Assert(dev.Current(), qt.Equals, int32(12500000))
}
func TestPower(t *testing.T) {
c := qt.New(t)
bus := tester.NewI2CBus(c)
fake := tester.NewI2CDevice16(c, Address)
fake.Registers = defaultRegisters()
fake.Registers[REG_POWER] = 0x3A7F
bus.AddDevice(fake)
dev := New(bus)
// 3A7Fh = 149.75W = 149750mW = 149750000uW
c.Assert(dev.Power(), qt.Equals, int32(149750000))
}
// defaultRegisters returns the default values for all of the device's registers.
// set TI INA260 datasheet for power-on defaults
func defaultRegisters() map[uint8]uint16 {
return map[uint8]uint16{
REG_CONFIG: 0x6127,
REG_CURRENT: 0x0000,
REG_BUSVOLTAGE: 0x0000,
REG_POWER: 0x0000,
REG_MASKENABLE: 0x0000,
REG_ALERTLIMIT: 0x0000,
REG_MANF_ID: 0x5449,
REG_DIE_ID: 0x2270,
}
}