Skip to content

Commit ce7d6c4

Browse files
committed
added frontend
1 parent 912a4e4 commit ce7d6c4

File tree

5 files changed

+77
-49
lines changed

5 files changed

+77
-49
lines changed

go.mod

+6
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,13 @@ go 1.19
55
require go.bug.st/serial v1.5.0
66

77
require (
8+
github.com/c-bata/go-prompt v0.2.6 // indirect
89
github.com/creack/goselect v0.1.2 // indirect
10+
github.com/mattn/go-colorable v0.1.7 // indirect
11+
github.com/mattn/go-isatty v0.0.12 // indirect
12+
github.com/mattn/go-runewidth v0.0.9 // indirect
13+
github.com/mattn/go-tty v0.0.3 // indirect
14+
github.com/pkg/term v1.2.0-beta.2 // indirect
915
golang.org/x/sys v0.0.0-20220829200755-d48e67d00261 // indirect
1016
gopkg.in/yaml.v3 v3.0.1 // indirect
1117
)

go.sum

+24
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,34 @@
1+
github.com/c-bata/go-prompt v0.2.6 h1:POP+nrHE+DfLYx370bedwNhsqmpCUynWPxuHi0C5vZI=
2+
github.com/c-bata/go-prompt v0.2.6/go.mod h1:/LMAke8wD2FsNu9EXNdHxNLbd9MedkPnCdfpU9wwHfY=
13
github.com/creack/goselect v0.1.2 h1:2DNy14+JPjRBgPzAd1thbQp4BSIihxcBf0IXhQXDRa0=
24
github.com/creack/goselect v0.1.2/go.mod h1:a/NhLweNvqIYMuxcMOuWY516Cimucms3DglDzQP3hKY=
35
github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
6+
github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
7+
github.com/mattn/go-colorable v0.1.7 h1:bQGKb3vps/j0E9GfJQ03JyhRuxsvdAanXlT9BTw3mdw=
8+
github.com/mattn/go-colorable v0.1.7/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
9+
github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
10+
github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84=
11+
github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY=
12+
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
13+
github.com/mattn/go-runewidth v0.0.6/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
14+
github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0=
15+
github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
16+
github.com/mattn/go-tty v0.0.3 h1:5OfyWorkyO7xP52Mq7tB36ajHDG5OHrmBGIS/DtakQI=
17+
github.com/mattn/go-tty v0.0.3/go.mod h1:ihxohKRERHTVzN+aSVRwACLCeqIoZAWpoICkkvrWyR0=
18+
github.com/pkg/term v1.2.0-beta.2 h1:L3y/h2jkuBVFdWiJvNfYfKmzcCnILw7mJWm2JQuMppw=
19+
github.com/pkg/term v1.2.0-beta.2/go.mod h1:E25nymQcrSllhX42Ok8MRm1+hyBdHY0dCeiKZ9jpNGw=
420
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
521
github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
622
go.bug.st/serial v1.5.0 h1:ThuUkHpOEmCVXxGEfpoExjQCS2WBVV4ZcUKVYInM9T4=
723
go.bug.st/serial v1.5.0/go.mod h1:UABfsluHAiaNI+La2iESysd9Vetq7VRdpxvjx7CmmOE=
24+
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
25+
golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
26+
golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
27+
golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
28+
golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
29+
golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
30+
golang.org/x/sys v0.0.0-20200909081042-eff7692f9009/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
31+
golang.org/x/sys v0.0.0-20200918174421-af09f7315aff/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
832
golang.org/x/sys v0.0.0-20220829200755-d48e67d00261 h1:v6hYoSR9T5oet+pMXwUWkbiVqx/63mlHjefrHmxwfeY=
933
golang.org/x/sys v0.0.0-20220829200755-d48e67d00261/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
1034
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=

main.go

+42-45
Original file line numberDiff line numberDiff line change
@@ -3,46 +3,14 @@ package main
33
import (
44
"bufio"
55
"fmt"
6-
"io"
6+
"go.bug.st/serial"
77
"log"
88
"lora-project/protocol/messages"
9+
"lora-project/protocol/routing"
910
"lora-project/serial_handlers"
10-
"math/rand"
1111
"os"
12-
"time"
13-
14-
"go.bug.st/serial"
1512
)
1613

17-
var commands = []string{
18-
"AT",
19-
"AT+SEND=3",
20-
"AT+SEND=A",
21-
"jasdjkjasjdjkasd",
22-
}
23-
24-
func write(port serial.Port) {
25-
rnd := rand.Intn(len(commands))
26-
lineSep := "\r\n"
27-
msg := []byte(fmt.Sprintf("%s%s", commands[rnd], lineSep))
28-
n, err := port.Write(msg)
29-
if err != nil {
30-
fmt.Println("Error writing to serial port: ", err)
31-
return
32-
}
33-
fmt.Printf("Sent %v bytes: '%q'\n", n, msg)
34-
if rnd == 1 {
35-
reader := bufio.NewReader(os.Stdin)
36-
fmt.Print("enter text: ")
37-
buf := make([]byte, 3)
38-
_, _ = io.ReadFull(reader, buf)
39-
fmt.Printf("AT,SENDING%q\n", lineSep)
40-
_, _ = port.Write(buf)
41-
fmt.Printf("AT,SENDED%q\n", lineSep)
42-
}
43-
time.Sleep(time.Second)
44-
}
45-
4614
func main() {
4715
/* rand.Seed(time.Now().UnixNano())
4816
app := &cli.App{
@@ -81,28 +49,57 @@ func main() {
8149
write(port)
8250
}*/
8351

84-
var addr messages.Address
85-
addr.UnmarshalText([]byte{'4', '7', '6', '1'})
8652
mode := &serial.Mode{
8753
BaudRate: 115200,
8854
}
8955

9056
port, err := serial.Open("/home/hannes/dev/ttyS20", mode)
91-
defer port.Close()
57+
defer func(port serial.Port) {
58+
err := port.Close()
59+
if err != nil {
60+
61+
}
62+
}(port)
9263
if err != nil {
9364
log.Fatal(err)
9465
}
9566
handler := serial_handlers.NewATHandler(port)
67+
aodv := routing.NewAODV(handler)
68+
aodv.Run()
69+
70+
go func() {
71+
for data := range aodv.IncomingDataQueue {
72+
fmt.Printf("Received message: %s from %s\n", string(data.Payload), data.OriginatorAddress.String())
73+
}
74+
}()
75+
76+
scanner := bufio.NewScanner(os.Stdin)
9677
for {
97-
select {
98-
case err = <-handler.ErrorChan:
99-
fmt.Println(err)
78+
fmt.Print("Enter destination address: ")
79+
scanned := scanner.Scan()
80+
if !scanned {
81+
fmt.Println("Failed to scan address!")
82+
return
83+
}
10084

101-
case <-time.After(time.Second * 10):
102-
fmt.Println("bop.")
103-
case msg := <-handler.MessageChan:
104-
fmt.Printf("%+v\n", msg)
85+
destination := scanner.Text()
86+
var address messages.Address
87+
if address.UnmarshalText([]byte(destination)) != nil {
88+
fmt.Println("Invalid address..")
89+
continue
10590
}
106-
}
10791

92+
fmt.Print("Enter message: ")
93+
scanned = scanner.Scan()
94+
95+
if !scanned {
96+
fmt.Println("Failed to scan message!")
97+
return
98+
}
99+
100+
message := scanner.Text()
101+
102+
aodv.SendData(message, address)
103+
104+
}
108105
}

protocol/routing/aodv.go

+3-2
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ type AODV struct {
1313
rreqID uint16
1414
seqNum int16
1515
currentAddress messages.Address
16-
incomingDataQueue chan messages.Message
16+
IncomingDataQueue chan messages.Data
1717
broadcastAddress messages.Address
1818
dataQueue *DataQueue
1919
}
@@ -36,14 +36,15 @@ func NewAODV(atHandler *serial_handlers.ATHandler) *AODV {
3636
rreqID: 0,
3737
seqNum: 0,
3838
currentAddress: addr,
39-
incomingDataQueue: make(chan messages.Message, 10),
39+
IncomingDataQueue: make(chan messages.Data, 10),
4040
broadcastAddress: broadcast,
4141
dataQueue: NewDataQueue(),
4242
}
4343
}
4444
func (a *AODV) Run() {
4545
go a.processIncomingMessages()
4646
go a.helloRoutine()
47+
a.StartExpirationWorker()
4748
}
4849

4950
func (a *AODV) processIncomingMessages() {

protocol/routing/aodv_data.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import (
55
"lora-project/protocol/messages"
66
)
77

8-
func (a *AODV) sendData(payload string, destination messages.Address) {
8+
func (a *AODV) SendData(payload string, destination messages.Address) {
99
a.seqNum++
1010
data := &messages.Data{
1111
DestinationAddress: destination,
@@ -50,7 +50,7 @@ func (a *AODV) handleData(data *messages.Data) {
5050
a.seqNum = data.DataSequenceNumber
5151
}
5252
if data.DestinationAddress == a.currentAddress {
53-
a.incomingDataQueue <- data
53+
a.IncomingDataQueue <- *data
5454
return
5555
}
5656

0 commit comments

Comments
 (0)