-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathpwm_fake.go
52 lines (42 loc) · 1013 Bytes
/
pwm_fake.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
package bbhw
import "time"
// Fake PWM for Testing
type FakePWMPin struct {
name string
period time.Duration
duty time.Duration
polarity bool
}
// Example: StepperPWM, err = NewBBBPWM("P9_16")
func NewFakePWM(name string) (pwm *FakePWMPin, err error) {
pwm = new(FakePWMPin)
pwm.name = name
pwm.SetPolarity(false)
err = nil
return
}
// Wrapper around NewFakePWM. Does not return an error but panics instead. Useful to avoid multiple return values.
func NewFakePWMOrPanic(bbb_pin string) *FakePWMPin {
pwm, _ := NewFakePWM(bbb_pin)
return pwm //no need to check error
}
func (pwm *FakePWMPin) SetPolarity(p bool) {
pwm.polarity = p
}
func (pwm *FakePWMPin) DisablePWM() {
pwm.duty = 0
pwm.polarity = false
}
func (pwm *FakePWMPin) SetPWM(period, duty time.Duration) {
if duty > period {
return
}
pwm.duty = duty
pwm.period = period
}
func (pwm *FakePWMPin) GetPWM() (period, duty time.Duration) {
return pwm.period, pwm.duty
}
func (pwm *FakePWMPin) Close() {
pwm = nil
}