1
0
mirror of https://github.com/hybridgroup/gobot.git synced 2025-04-26 13:48:49 +08:00
Mark Kuo 5ca29d0ba9 raspi: export PiBlasterPeriod in Adaptor
By setting PiBlasterPeriod to a raspi.Adaptor, the PWM pin will now
reflect the correct duty cycle to /dev/pi-blaster.

Signed-off-by: Mark Kuo <starryalley@gmail.com>
2018-08-16 21:50:13 +10:00

47 lines
1.3 KiB
Go

package raspi
import (
"errors"
"testing"
"gobot.io/x/gobot/gobottest"
"gobot.io/x/gobot/sysfs"
)
var _ sysfs.PWMPinner = (*PWMPin)(nil)
func TestPwmPin(t *testing.T) {
pin := NewPWMPin("1")
gobottest.Assert(t, pin.Export(), nil)
gobottest.Assert(t, pin.Enable(true), nil)
val, _ := pin.Polarity()
gobottest.Assert(t, val, "normal")
gobottest.Assert(t, pin.InvertPolarity(true), nil)
val, _ = pin.Polarity()
gobottest.Assert(t, val, "normal")
period, err := pin.Period()
gobottest.Assert(t, err, errors.New("Raspi PWM pin period not set"))
gobottest.Assert(t, pin.SetDutyCycle(10000), errors.New("Raspi PWM pin period not set"))
gobottest.Assert(t, pin.SetPeriod(20000000), nil)
period, _ = pin.Period()
gobottest.Assert(t, period, uint32(20000000))
gobottest.Assert(t, pin.SetPeriod(10000000), errors.New("Cannot set the period of individual PWM pins on Raspi"))
dc, _ := pin.DutyCycle()
gobottest.Assert(t, dc, uint32(0))
// call currently fails in test
gobottest.Refute(t, pin.SetDutyCycle(10000), nil)
dc, _ = pin.DutyCycle()
gobottest.Assert(t, dc, uint32(10000))
gobottest.Assert(t, pin.SetDutyCycle(999999999), errors.New("Duty cycle exceeds period."))
dc, _ = pin.DutyCycle()
gobottest.Assert(t, dc, uint32(10000))
// call currently fails in test
gobottest.Refute(t, pin.Unexport(), nil)
}