mirror of
https://github.com/hybridgroup/gobot.git
synced 2025-04-26 13:48:49 +08:00
Update beaglebone package for new i2c interface
This commit is contained in:
parent
82500837a7
commit
557e5a239c
@ -20,7 +20,8 @@ func main() {
|
||||
g := byte(gobot.Rand(255))
|
||||
b := byte(gobot.Rand(255))
|
||||
blinkm.Rgb(r, g, b)
|
||||
fmt.Println("color", blinkm.Color())
|
||||
color, _ := blinkm.Color()
|
||||
fmt.Println("color", color)
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -2,6 +2,7 @@ package beaglebone
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
"os"
|
||||
@ -202,7 +203,11 @@ func (b *BeagleboneAdaptor) ServoWrite(pin string, val byte) (err error) {
|
||||
|
||||
// DigitalRead returns a digital value from specified pin
|
||||
func (b *BeagleboneAdaptor) DigitalRead(pin string) (val int, err error) {
|
||||
return b.digitalPin(pin, sysfs.IN).Read()
|
||||
sysfsPin, err := b.digitalPin(pin, sysfs.IN)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
return sysfsPin.Read()
|
||||
}
|
||||
|
||||
// DigitalWrite writes a digital value to specified pin.
|
||||
@ -217,12 +222,17 @@ func (b *BeagleboneAdaptor) DigitalWrite(pin string, val byte) (err error) {
|
||||
_, err = fi.WriteString(strconv.Itoa(int(val)))
|
||||
return err
|
||||
}
|
||||
return b.digitalPin(pin, sysfs.OUT).Write(int(val))
|
||||
sysfsPin, err := b.digitalPin(pin, sysfs.OUT)
|
||||
return sysfsPin.Write(int(val))
|
||||
}
|
||||
|
||||
// AnalogRead returns an analog value from specified pin
|
||||
func (b *BeagleboneAdaptor) AnalogRead(pin string) (val int, err error) {
|
||||
fi, err := sysfs.OpenFile(fmt.Sprintf("%v/%v", b.helper, b.translateAnalogPin(pin)), os.O_RDONLY, 0644)
|
||||
analogPin, err := b.translateAnalogPin(pin)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
fi, err := sysfs.OpenFile(fmt.Sprintf("%v/%v", b.helper, analogPin), os.O_RDONLY, 0644)
|
||||
defer fi.Close()
|
||||
|
||||
if err != nil {
|
||||
@ -245,75 +255,91 @@ func (b *BeagleboneAdaptor) AnalogWrite(pin string, val byte) (err error) {
|
||||
}
|
||||
|
||||
// I2cStart starts a i2c device in specified address
|
||||
func (b *BeagleboneAdaptor) I2cStart(address byte) {
|
||||
b.i2cDevice, _ = sysfs.NewI2cDevice("/dev/i2c-1", address)
|
||||
func (b *BeagleboneAdaptor) I2cStart(address byte) (err error) {
|
||||
b.i2cDevice, err = sysfs.NewI2cDevice("/dev/i2c-1", address)
|
||||
return
|
||||
}
|
||||
|
||||
// I2CWrite writes data to i2c device
|
||||
func (b *BeagleboneAdaptor) I2cWrite(data []byte) {
|
||||
b.i2cDevice.Write(data)
|
||||
func (b *BeagleboneAdaptor) I2cWrite(data []byte) (err error) {
|
||||
_, err = b.i2cDevice.Write(data)
|
||||
return err
|
||||
}
|
||||
|
||||
// I2cRead returns value from i2c device using specified size
|
||||
func (b *BeagleboneAdaptor) I2cRead(size uint) []byte {
|
||||
buf := make([]byte, size)
|
||||
b.i2cDevice.Read(buf)
|
||||
return buf
|
||||
func (b *BeagleboneAdaptor) I2cRead(size uint) (data []byte, err error) {
|
||||
data = make([]byte, size)
|
||||
_, err = b.i2cDevice.Read(data)
|
||||
return
|
||||
}
|
||||
|
||||
// translatePin converts digital pin name to pin position
|
||||
func (b *BeagleboneAdaptor) translatePin(pin string) int {
|
||||
func (b *BeagleboneAdaptor) translatePin(pin string) (value int, err error) {
|
||||
for key, value := range pins {
|
||||
if key == pin {
|
||||
return value
|
||||
return value, nil
|
||||
}
|
||||
}
|
||||
panic("Not a valid pin")
|
||||
err = errors.New("Not a valid pin")
|
||||
return
|
||||
}
|
||||
|
||||
// translatePwmPin converts pwm pin name to pin position
|
||||
func (b *BeagleboneAdaptor) translatePwmPin(pin string) string {
|
||||
func (b *BeagleboneAdaptor) translatePwmPin(pin string) (value string, err error) {
|
||||
for key, value := range pwmPins {
|
||||
if key == pin {
|
||||
return value
|
||||
return value, nil
|
||||
}
|
||||
}
|
||||
panic("Not a valid pin")
|
||||
err = errors.New("Not a valid pin")
|
||||
return
|
||||
}
|
||||
|
||||
// translateAnalogPin converts analog pin name to pin position
|
||||
func (b *BeagleboneAdaptor) translateAnalogPin(pin string) string {
|
||||
func (b *BeagleboneAdaptor) translateAnalogPin(pin string) (value string, err error) {
|
||||
for key, value := range analogPins {
|
||||
if key == pin {
|
||||
return value
|
||||
return value, nil
|
||||
}
|
||||
}
|
||||
panic("Not a valid pin")
|
||||
err = errors.New("Not a valid pin")
|
||||
return
|
||||
}
|
||||
|
||||
// digitalPin retrieves digital pin value by name
|
||||
func (b *BeagleboneAdaptor) digitalPin(pin string, dir string) sysfs.DigitalPin {
|
||||
i := b.translatePin(pin)
|
||||
func (b *BeagleboneAdaptor) digitalPin(pin string, dir string) (sysfsPin sysfs.DigitalPin, err error) {
|
||||
i, err := b.translatePin(pin)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
if b.digitalPins[i] == nil {
|
||||
b.digitalPins[i] = sysfs.NewDigitalPin(i)
|
||||
err := b.digitalPins[i].Export()
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
b.digitalPins[i].Direction(dir)
|
||||
return b.digitalPins[i]
|
||||
if err = b.digitalPins[i].Direction(dir); err != nil {
|
||||
return
|
||||
}
|
||||
return b.digitalPins[i], nil
|
||||
}
|
||||
|
||||
// pwPin retrieves pwm pin value by name
|
||||
func (b *BeagleboneAdaptor) pwmPin(pin string) (i string, err error) {
|
||||
i = b.translatePwmPin(pin)
|
||||
i, err = b.translatePwmPin(pin)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
if b.pwmPins[i] == nil {
|
||||
err = ensureSlot(b.slots, fmt.Sprintf("bone_pwm_%v", pin))
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
b.pwmPins[i], err = newPwmPin(i, b.ocp)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
@ -352,7 +378,7 @@ func ensureSlot(slots, item string) (err error) {
|
||||
}
|
||||
err = fi.Sync()
|
||||
if err != nil {
|
||||
return nil
|
||||
return err
|
||||
}
|
||||
|
||||
scanner = bufio.NewScanner(fi)
|
||||
|
@ -106,7 +106,8 @@ func TestBeagleboneAdaptor(t *testing.T) {
|
||||
a.I2cStart(0xff)
|
||||
|
||||
a.I2cWrite([]byte{0x00, 0x01})
|
||||
gobot.Assert(t, a.I2cRead(2), []byte{0x00, 0x01})
|
||||
data, _ := a.I2cRead(2)
|
||||
gobot.Assert(t, data, []byte{0x00, 0x01})
|
||||
|
||||
gobot.Assert(t, a.Finalize(), nil)
|
||||
}
|
||||
|
91
platforms/beaglebone/coverage.out
Normal file
91
platforms/beaglebone/coverage.out
Normal file
@ -0,0 +1,91 @@
|
||||
mode: set
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/beaglebone_adaptor.go:125.59,131.19 1 1
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/beaglebone_adaptor.go:131.19,134.4 2 0
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/beaglebone_adaptor.go:140.44,146.2 5 1
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/beaglebone_adaptor.go:149.45,150.32 1 1
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/beaglebone_adaptor.go:155.2,155.36 1 1
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/beaglebone_adaptor.go:160.2,160.24 1 1
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/beaglebone_adaptor.go:163.2,163.13 1 1
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/beaglebone_adaptor.go:150.32,151.17 1 0
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/beaglebone_adaptor.go:151.17,153.4 1 0
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/beaglebone_adaptor.go:155.36,156.17 1 1
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/beaglebone_adaptor.go:156.17,158.4 1 1
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/beaglebone_adaptor.go:160.24,162.3 1 1
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/beaglebone_adaptor.go:167.60,169.2 1 0
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/beaglebone_adaptor.go:172.41,172.43 0 0
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/beaglebone_adaptor.go:175.62,180.2 4 0
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/beaglebone_adaptor.go:183.61,186.2 2 1
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/beaglebone_adaptor.go:190.64,191.34 1 1
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/beaglebone_adaptor.go:191.34,194.17 3 0
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/beaglebone_adaptor.go:197.3,197.41 1 0
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/beaglebone_adaptor.go:194.17,196.4 1 0
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/beaglebone_adaptor.go:198.3,200.3 1 1
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/beaglebone_adaptor.go:204.56,207.2 2 0
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/beaglebone_adaptor.go:210.63,212.2 1 0
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/beaglebone_adaptor.go:215.52,217.2 1 1
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/beaglebone_adaptor.go:220.51,222.2 1 1
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/beaglebone_adaptor.go:225.55,229.2 3 1
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/beaglebone_adaptor.go:232.58,233.31 1 1
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/beaglebone_adaptor.go:238.2,238.26 1 0
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/beaglebone_adaptor.go:233.31,234.17 1 1
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/beaglebone_adaptor.go:234.17,236.4 1 1
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/beaglebone_adaptor.go:242.64,243.34 1 0
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/beaglebone_adaptor.go:248.2,248.26 1 0
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/beaglebone_adaptor.go:243.34,244.17 1 0
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/beaglebone_adaptor.go:244.17,246.4 1 0
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/beaglebone_adaptor.go:252.67,253.37 1 0
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/beaglebone_adaptor.go:258.2,258.26 1 0
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/beaglebone_adaptor.go:253.37,254.17 1 0
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/beaglebone_adaptor.go:254.17,256.4 1 0
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/beaglebone_adaptor.go:262.58,264.28 2 0
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/beaglebone_adaptor.go:267.2,267.10 1 0
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/beaglebone_adaptor.go:264.28,266.3 1 0
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/beaglebone_adaptor.go:271.81,273.29 2 1
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/beaglebone_adaptor.go:280.2,281.25 2 1
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/beaglebone_adaptor.go:273.29,276.17 3 1
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/beaglebone_adaptor.go:276.17,278.4 1 0
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/beaglebone_adaptor.go:285.55,287.25 2 0
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/beaglebone_adaptor.go:290.2,290.10 1 0
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/beaglebone_adaptor.go:287.25,289.3 1 0
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/beaglebone_adaptor.go:294.60,299.2 4 0
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/beaglebone_adaptor.go:301.30,306.16 4 0
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/beaglebone_adaptor.go:309.2,310.16 2 0
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/beaglebone_adaptor.go:313.2,318.21 3 0
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/beaglebone_adaptor.go:325.2,329.21 4 0
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/beaglebone_adaptor.go:306.16,308.3 1 0
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/beaglebone_adaptor.go:310.16,312.3 1 0
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/beaglebone_adaptor.go:318.21,320.36 2 0
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/beaglebone_adaptor.go:320.36,322.4 1 0
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/beaglebone_adaptor.go:329.21,331.36 2 0
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/beaglebone_adaptor.go:331.36,333.4 1 0
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/pwm_pin.go:16.39,27.16 6 0
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/pwm_pin.go:31.2,32.16 2 0
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/pwm_pin.go:36.2,38.26 2 0
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/pwm_pin.go:47.2,51.6 4 0
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/pwm_pin.go:56.2,56.6 1 0
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/pwm_pin.go:61.2,61.10 1 0
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/pwm_pin.go:27.16,29.3 1 0
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/pwm_pin.go:32.16,34.3 1 0
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/pwm_pin.go:38.26,40.27 2 0
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/pwm_pin.go:40.27,42.4 1 0
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/pwm_pin.go:42.4,43.9 1 0
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/pwm_pin.go:51.6,52.75 1 0
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/pwm_pin.go:52.75,53.9 1 0
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/pwm_pin.go:56.6,57.73 1 0
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/pwm_pin.go:57.73,58.9 1 0
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/pwm_pin.go:65.55,70.16 4 0
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/pwm_pin.go:73.2,77.16 4 0
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/pwm_pin.go:80.2,81.12 2 0
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/pwm_pin.go:70.16,72.3 1 0
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/pwm_pin.go:77.16,79.3 1 0
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/pwm_pin.go:85.28,87.16 2 0
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/pwm_pin.go:90.2,91.12 2 0
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/pwm_pin.go:87.16,89.3 1 0
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/analog_pin.go:16.45,21.2 3 0
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/analog_pin.go:25.38,30.16 4 0
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/analog_pin.go:34.2,35.16 2 0
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/analog_pin.go:39.2,40.16 2 0
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/analog_pin.go:44.2,49.10 5 0
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/analog_pin.go:30.16,32.3 1 0
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/analog_pin.go:35.16,37.3 1 0
|
||||
github.com/hybridgroup/gobot/platforms/beaglebone/analog_pin.go:40.16,42.3 1 0
|
Loading…
x
Reference in New Issue
Block a user