/
main.go
69 lines (57 loc) · 1.75 KB
/
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
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
package main
import (
"fmt"
"os"
"github.com/jorgefuertes/mister-modemu/internal/at"
"github.com/jorgefuertes/mister-modemu/internal/build"
"github.com/jorgefuertes/mister-modemu/internal/cfg"
"github.com/jorgefuertes/mister-modemu/internal/console"
"github.com/jorgefuertes/mister-modemu/internal/modem"
"gopkg.in/alecthomas/kingpin.v2"
)
func main() {
// command line flags and params
cfg.Config.Env = kingpin.Flag(
"environment",
"prod, dev or test",
).Short('e').Default("prod").String()
cfg.Config.Port = kingpin.Flag(
"port",
"Serial port",
).Short('p').Default("/dev/ttyS1").String()
cfg.Config.Baud = kingpin.Flag(
"baud",
"Serial Speed",
).Short('b').Default("115200").Int()
kingpin.UsageTemplate(kingpin.CompactUsageTemplate).Version(build.Version()).Author(*cfg.Config.Author)
kingpin.CommandLine.Help = "RetroWiki Mister ESP8266 AT Modem Emulator"
v := kingpin.Flag("short_version", "Show short versión string and exit").Short('v').Default("false").Bool()
kingpin.Parse()
if *v {
fmt.Println(build.VersionShort())
os.Exit(0)
}
fmt.Println(cfg.Banner)
fmt.Println(build.Version() + "\n")
if cfg.IsDev() {
console.Warn("CFG/ENV", "Development mode ON")
} else if cfg.IsTest() {
console.Warn("CFG/ENV", "Test mode ON")
cfg.TestInit()
console.Info("CFG/PORT", "Tester should connect to ", cfg.TestPort2)
} else {
console.Info("CFG/ENV", "Production mode ON")
}
console.Info("CFG/PORT/BAUD", *cfg.Config.Port, " ", *cfg.Config.Baud)
// modem init
m := new(modem.Status)
if err := m.Open(cfg.Config.Port, cfg.Config.Baud); err != nil {
console.Error("SER/OPEN", err.Error())
console.Error("SER/OPEN", "Cannot open serial port!")
os.Exit(1)
}
defer m.Close()
// routes setup
at.Esp8266(m)
m.Listen()
}