Cleanup
parent
280265c566
commit
d9d9b0837e
@ -0,0 +1,33 @@
|
||||
package rfm69
|
||||
|
||||
import (
|
||||
"log"
|
||||
|
||||
"github.com/davecheney/gpio"
|
||||
)
|
||||
|
||||
const (
|
||||
irqPin = gpio.GPIO25
|
||||
)
|
||||
|
||||
func main() {
|
||||
log.Print("Start")
|
||||
|
||||
pin, err := gpio.OpenPin(irqPin, gpio.ModeInput)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
defer pin.Close()
|
||||
|
||||
spiBus, err := NewSPIDevice("/dev/spidev0.0")
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
defer spiBus.Close()
|
||||
|
||||
rfm, err := NewDevice(spiBus, pin, 1, 10, false)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
log.Print(rfm)
|
||||
}
|
@ -1,40 +0,0 @@
|
||||
package rfm69
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/kidoman/embd"
|
||||
|
||||
_ "github.com/kidoman/embd/host/rpi"
|
||||
)
|
||||
|
||||
func TestRfm69(t *testing.T) {
|
||||
t.Log("Test")
|
||||
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 := NewSPIDevice()
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
defer spiBus.Close()
|
||||
|
||||
rfm, err := NewDevice(spiBus, gpio, 1, 10, true)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
t.Log(rfm)
|
||||
}
|
@ -1,62 +0,0 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"log"
|
||||
"os"
|
||||
"os/signal"
|
||||
"time"
|
||||
|
||||
"github.com/davecheney/gpio"
|
||||
"github.com/fulr/rfm69"
|
||||
)
|
||||
|
||||
func main() {
|
||||
log.Print("Start")
|
||||
|
||||
pin, err := gpio.OpenPin(gpio.GPIO25, gpio.ModeInput)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
defer pin.Close()
|
||||
|
||||
spiBus, err := rfm69.NewSPIDevice()
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
defer spiBus.Close()
|
||||
|
||||
rfm, err := rfm69.NewDevice(spiBus, pin, 1, 10, false)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
log.Print(rfm)
|
||||
|
||||
err = rfm.Encrypt([]byte("0123456789012345"))
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
rxChan, txChan, quit := rfm.Loop()
|
||||
|
||||
sigint := make(chan os.Signal, 1)
|
||||
signal.Notify(sigint, os.Interrupt, os.Kill)
|
||||
|
||||
for {
|
||||
select {
|
||||
case data := <-rxChan:
|
||||
log.Print("main got data")
|
||||
log.Print(data)
|
||||
case <-sigint:
|
||||
quit <- 1
|
||||
<-quit
|
||||
return
|
||||
case <-time.After(3 * time.Second):
|
||||
txChan <- rfm69.Data{
|
||||
ToAddress: 99,
|
||||
FromAddress: 1,
|
||||
Data: []byte{1, 2, 3},
|
||||
RequestAck: true,
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,123 +0,0 @@
|
||||
package rfm69
|
||||
|
||||
/*
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
#include <fcntl.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <unistd.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/spi/spidev.h>
|
||||
|
||||
#define SPI_SPEED 4000000
|
||||
|
||||
uint8_t mode=0;
|
||||
uint8_t bits=8;
|
||||
uint32_t speed=SPI_SPEED;
|
||||
uint16_t delay=5;
|
||||
|
||||
int spi_open(const char *device) {
|
||||
int fd = open(device, O_RDWR);
|
||||
int ret;
|
||||
|
||||
if (fd < 0) {
|
||||
printf("can't open device");
|
||||
return -1;
|
||||
}
|
||||
ret = ioctl(fd, SPI_IOC_WR_MODE, &mode);
|
||||
if (ret == -1) {
|
||||
printf("can't set spi mode");
|
||||
return -1;
|
||||
}
|
||||
|
||||
ret = ioctl(fd, SPI_IOC_RD_MODE, &mode);
|
||||
if (ret == -1) {
|
||||
printf("can't get spi mode");
|
||||
return -1;
|
||||
}
|
||||
|
||||
ret = ioctl(fd, SPI_IOC_WR_BITS_PER_WORD, &bits);
|
||||
if (ret == -1) {
|
||||
printf("can't set bits per word");
|
||||
return -1;
|
||||
}
|
||||
|
||||
ret = ioctl(fd, SPI_IOC_RD_BITS_PER_WORD, &bits);
|
||||
if (ret == -1) {
|
||||
printf("can't get bits per word");
|
||||
return -1;
|
||||
}
|
||||
|
||||
ret = ioctl(fd, SPI_IOC_WR_MAX_SPEED_HZ, &speed);
|
||||
if (ret == -1) {
|
||||
printf("can't set max speed hz");
|
||||
return -1;
|
||||
}
|
||||
|
||||
ret = ioctl(fd, SPI_IOC_RD_MAX_SPEED_HZ, &speed);
|
||||
if (ret == -1) {
|
||||
printf("can't get max speed hz");
|
||||
return -1;
|
||||
}
|
||||
|
||||
return fd;
|
||||
}
|
||||
|
||||
int spi_xfer(int fd, char* tx, char* rx, int length) {
|
||||
struct spi_ioc_transfer tr = {
|
||||
.tx_buf = (unsigned long)tx,
|
||||
.rx_buf = (unsigned long)rx,
|
||||
.len = length,
|
||||
.delay_usecs = delay,
|
||||
.speed_hz = speed,
|
||||
.bits_per_word = bits,
|
||||
};
|
||||
|
||||
int ret = ioctl(fd, SPI_IOC_MESSAGE(1), &tr);
|
||||
if (ret < 1)
|
||||
return -1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
*/
|
||||
import "C"
|
||||
import "unsafe"
|
||||
|
||||
import "errors"
|
||||
|
||||
// SPIDevice device
|
||||
type SPIDevice struct {
|
||||
fd C.int
|
||||
}
|
||||
|
||||
// NewSPIDevice creates a new device
|
||||
func NewSPIDevice() (*SPIDevice, error) {
|
||||
name := C.CString("/dev/spidev0.0")
|
||||
defer C.free(unsafe.Pointer(name))
|
||||
i := C.spi_open(name)
|
||||
if i < 0 {
|
||||
return nil, errors.New("could not open")
|
||||
}
|
||||
return &SPIDevice{i}, nil
|
||||
}
|
||||
|
||||
// Xfer cross transfer
|
||||
func (d *SPIDevice) Xfer(tx []byte) ([]byte, error) {
|
||||
length := len(tx)
|
||||
rx := make([]byte, length)
|
||||
//log.Print("sending", tx)
|
||||
ret := C.spi_xfer(d.fd, (*C.char)(unsafe.Pointer(&tx[0])), (*C.char)(unsafe.Pointer(&rx[0])), C.int(length))
|
||||
//log.Print("got", rx)
|
||||
if ret < 0 {
|
||||
return nil, errors.New("could not xfer")
|
||||
}
|
||||
return rx, nil
|
||||
}
|
||||
|
||||
// Close closes the fd
|
||||
func (d *SPIDevice) Close() {
|
||||
C.close(d.fd)
|
||||
}
|
@ -1,23 +0,0 @@
|
||||
// +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