New SPI Device and main
parent
ad23db2039
commit
4aea5666cb
@ -0,0 +1,43 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"log"
|
||||
|
||||
"github.com/fulr/rfm69"
|
||||
"github.com/kidoman/embd"
|
||||
|
||||
_ "github.com/kidoman/embd/host/rpi"
|
||||
)
|
||||
|
||||
func main() {
|
||||
log.Print("Start")
|
||||
|
||||
if err := embd.InitGPIO(); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
defer embd.CloseGPIO()
|
||||
|
||||
gpio, err := embd.NewDigitalPin(25)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
defer gpio.Close()
|
||||
|
||||
if err := gpio.SetDirection(embd.In); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
gpio.ActiveLow(false)
|
||||
|
||||
spiBus, err := rfm69.NewSPIDevice()
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
defer spiBus.Close()
|
||||
|
||||
rfm, err := rfm69.NewDevice(spiBus, gpio, 1, 10, true)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
t.Log(rfm)
|
||||
|
||||
}
|
@ -1,8 +1,40 @@
|
||||
package rfm69
|
||||
|
||||
import (
|
||||
"log"
|
||||
|
||||
"github.com/kidoman/embd"
|
||||
)
|
||||
|
||||
// Loop is the main receive and transmit handling loop
|
||||
func (r *Device) Loop() error {
|
||||
for {
|
||||
c := make(chan Data)
|
||||
irq := make(chan int)
|
||||
|
||||
r.gpio.Watch(embd.EdgeRising, func(pin embd.DigitalPin) {
|
||||
irq <- 1
|
||||
})
|
||||
|
||||
r.SetMode(RF_OPMODE_RECEIVER)
|
||||
|
||||
for {
|
||||
select {
|
||||
case dataToTransmit := <-c:
|
||||
// can send?
|
||||
r.SetMode(RF_OPMODE_STANDBY)
|
||||
r.writeFifo(&dataToTransmit)
|
||||
r.writeReg(REG_DIOMAPPING1, RF_DIOMAPPING1_DIO0_00)
|
||||
r.SetMode(RF_OPMODE_TRANSMITTER)
|
||||
<-irq
|
||||
r.SetMode(RF_OPMODE_RECEIVER)
|
||||
r.writeReg(REG_DIOMAPPING1, RF_DIOMAPPING1_DIO0_01)
|
||||
case <-irq:
|
||||
data, err := r.readFifo()
|
||||
if err != nil {
|
||||
log.Print(err)
|
||||
return err
|
||||
}
|
||||
log.Print(data)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,23 @@
|
||||
// +build !linux
|
||||
|
||||
package rfm69
|
||||
|
||||
// SPIDevice is a device
|
||||
type SPIDevice struct {
|
||||
}
|
||||
|
||||
// NewSPIDevice creates a new device
|
||||
func NewSPIDevice() (*SPIDevice, error) {
|
||||
return &SPIDevice{}, nil
|
||||
}
|
||||
|
||||
// Xfer cross transfer
|
||||
func (d *SPIDevice) Xfer(tx []byte) ([]byte, error) {
|
||||
length := len(tx)
|
||||
rx := make([]byte, length)
|
||||
return rx, nil
|
||||
}
|
||||
|
||||
// Close closes the fd
|
||||
func (d *SPIDevice) Close() {
|
||||
}
|
Loading…
Reference in New Issue