forked from iegomez/lds
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlora.go
103 lines (86 loc) · 3.67 KB
/
lora.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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
package main
import (
"strconv"
lwband "github.com/brocaar/lorawan/band"
"github.com/inkyblackness/imgui-go"
)
// Bands and data rate options.
var (
bandwidths = []int{50, 125, 250, 500}
spreadFactors = []int{7, 8, 9, 10, 11, 12}
bands = []lwband.Name{
lwband.AS_923,
lwband.AU_915_928,
lwband.CN_470_510,
lwband.CN_779_787,
lwband.EU_433,
lwband.EU_863_870,
lwband.IN_865_867,
lwband.KR_920_923,
lwband.US_902_928,
lwband.RU_864_870,
}
)
type band struct {
Name lwband.Name `toml:"name"`
}
type dataRate struct {
Bandwidth int `toml:"bandwith"`
SpreadFactor int `toml:"spread_factor"`
BitRate int `toml:"bit_rate"`
BitRateS string `toml:"-"`
}
type rxInfo struct {
Channel int `toml:"channel"`
CodeRate string `toml:"code_rate"`
CrcStatus int `toml:"crc_status"`
Frequency int `toml:"frequency"`
LoRaSNR float64 `toml:"lora_snr"`
RfChain int `toml:"rf_chain"`
Rssi int `toml:"rssi"`
//String representations for numeric values so that we can manage them with input texts.
ChannelS string `toml:"-"`
CrcStatusS string `toml:"-"`
FrequencyS string `toml:"-"`
LoRASNRS string `toml:"-"`
RfChainS string `toml:"-"`
RssiS string `toml:"-"`
}
func beginLoRaForm() {
//imgui.SetNextWindowPos(imgui.Vec2{X: 10, Y: 650})
//imgui.SetNextWindowSize(imgui.Vec2{X: 380, Y: 265})
imgui.Begin("LoRa Configuration")
imgui.PushItemWidth(250.0)
if imgui.BeginCombo("Band", string(config.Band.Name)) {
for _, band := range bands {
if imgui.SelectableV(string(band), band == config.Band.Name, 0, imgui.Vec2{}) {
config.Band.Name = band
}
}
imgui.EndCombo()
}
if imgui.BeginCombo("Bandwidth", strconv.Itoa(config.DR.Bandwidth)) {
for _, bandwidth := range bandwidths {
if imgui.SelectableV(strconv.Itoa(bandwidth), bandwidth == config.DR.Bandwidth, 0, imgui.Vec2{}) {
config.DR.Bandwidth = bandwidth
}
}
imgui.EndCombo()
}
if imgui.BeginCombo("SpreadFactor", strconv.Itoa(config.DR.SpreadFactor)) {
for _, sf := range spreadFactors {
if imgui.SelectableV(strconv.Itoa(sf), sf == config.DR.SpreadFactor, 0, imgui.Vec2{}) {
config.DR.SpreadFactor = sf
}
}
imgui.EndCombo()
}
imgui.InputTextV("Bit rate", &config.DR.BitRateS, imgui.InputTextFlagsCharsDecimal|imgui.InputTextFlagsCallbackAlways|imgui.InputTextFlagsCallbackCharFilter, handleInt(config.DR.BitRateS, 6, &config.DR.BitRate))
imgui.InputTextV("Channel", &config.RXInfo.ChannelS, imgui.InputTextFlagsCharsDecimal|imgui.InputTextFlagsCallbackAlways|imgui.InputTextFlagsCallbackCharFilter, handleInt(config.RXInfo.ChannelS, 10, &config.RXInfo.Channel))
imgui.InputTextV("CrcStatus", &config.RXInfo.CrcStatusS, imgui.InputTextFlagsCharsDecimal|imgui.InputTextFlagsCallbackAlways|imgui.InputTextFlagsCallbackCharFilter, handleInt(config.RXInfo.CrcStatusS, 10, &config.RXInfo.CrcStatus))
imgui.InputTextV("Frequency", &config.RXInfo.FrequencyS, imgui.InputTextFlagsCharsDecimal|imgui.InputTextFlagsCallbackAlways|imgui.InputTextFlagsCallbackCharFilter, handleInt(config.RXInfo.FrequencyS, 14, &config.RXInfo.Frequency))
imgui.InputTextV("LoRaSNR", &config.RXInfo.LoRASNRS, imgui.InputTextFlagsCharsDecimal|imgui.InputTextFlagsCallbackAlways, handleFloat64(config.RXInfo.LoRASNRS, &config.RXInfo.LoRaSNR))
imgui.InputTextV("RfChain", &config.RXInfo.RfChainS, imgui.InputTextFlagsCharsDecimal|imgui.InputTextFlagsCallbackAlways, handleInt(config.RXInfo.RfChainS, 10, &config.RXInfo.RfChain))
imgui.InputTextV("Rssi", &config.RXInfo.RssiS, imgui.InputTextFlagsCharsDecimal|imgui.InputTextFlagsCallbackAlways|imgui.InputTextFlagsCallbackCharFilter, handleInt(config.RXInfo.RssiS, 10, &config.RXInfo.Rssi))
imgui.End()
}