-
Notifications
You must be signed in to change notification settings - Fork 10
/
main.go
43 lines (39 loc) · 846 Bytes
/
main.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
package main
import (
"flag"
"fmt"
"log"
"strconv"
"github.com/ecc1/spi"
)
var (
device = flag.String("d", "/dev/spidev5.1", "SPI `device`")
speed = flag.Int("s", 1000000, "SPI `speed` (Hz)")
customCS = flag.Int("cs", 0, "use `GPIO#` as custom chip select")
)
func main() {
flag.Parse()
var values []byte
for _, v := range flag.Args() {
b, err := strconv.ParseUint(v, 16, 8)
if err != nil {
log.Fatal(err)
}
values = append(values, byte(b))
}
dev, err := spi.Open(*device, *speed, *customCS)
if err != nil {
log.Fatal(err)
}
defer dev.Close()
if len(values)%2 == 1 {
values = append(values, 0)
}
response := make([]byte, len(values))
fmt.Printf("send: % X\n", values)
err = dev.Transfer(values, response)
if err != nil {
log.Fatalf("%s: %v", *device, err)
}
fmt.Printf("recv: % X\n", response)
}