/
main.go
117 lines (110 loc) · 2.57 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
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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
package main
import (
"bufio"
"fmt"
"log"
"net"
"os"
"github.com/nut-abctech/at-command/Godeps/_workspace/src/github.com/barnybug/gogsmmodem"
"github.com/nut-abctech/at-command/Godeps/_workspace/src/github.com/codegangsta/cli"
"github.com/nut-abctech/at-command/Godeps/_workspace/src/github.com/tarm/goserial"
)
type server struct {
net.Conn
Reader *bufio.Reader
Writer *bufio.Writer
}
func (s *server) SendCmd(cmd string) {
fmt.Fprint(s.Writer, cmd)
}
func (s *server) Receiver() {
bytes, err := s.Reader.ReadByte()
if err != nil {
log.Println(err)
}
log.Println(string(bytes))
}
func main() {
app := cli.NewApp()
app.Name = "AT Command tools"
app.Usage = "Test sim server"
app.Version = "0.0.1"
app.Commands = []cli.Command{
{
Name: "run-tcp",
Usage: "Listen SMS from specific server via tcp protocal",
Action: func(c *cli.Context) {
var host string = c.String("host")
if c.String("host") == "" {
log.Println("Unknow host name. Please specific host")
os.Exit(1)
}
fmt.Printf("Listening SMS from : %s \n", host)
for {
conn, err := net.Dial("tcp", host)
if err != nil {
log.Panicf("Error connecting %s %s", host, err)
}
handleConn(conn)
}
},
Flags: []cli.Flag{
cli.StringFlag{
Name: "host, H",
Usage: "Specific module ip address. e.g. 127.0.0.1:8080",
},
},
},
{
Name: "run-serial",
Usage: "Listen SMS from specific device via serial port",
Action: func(c *cli.Context) {
var name = c.String("name")
var baud = c.Int("baud")
log.Printf("usb: %s, Baud: %d", name, baud)
conf := serial.Config{
Name: name,
Baud: baud,
}
modem, err := gogsmmodem.Open(&conf, true)
if err != nil {
log.Panic(err)
}
defer modem.Close()
for packet := range modem.OOB {
log.Printf("Received : %#v\n", packet)
switch p := packet.(type) {
case gogsmmodem.MessageNotification:
log.Println("Message notification:", p)
msg, err := modem.GetMessage(p.Index)
if err == nil {
fmt.Printf("Message from %s: %s\n", msg.Telephone, msg.Body)
modem.DeleteMessage(p.Index)
}
}
}
},
Flags: []cli.Flag{
cli.IntFlag{
Name: "baud, b",
Usage: "Baud number e.g 115200",
},
cli.StringFlag{
Name: "name, n",
Usage: "e.g. /dev/ttyUSB1",
},
},
},
}
app.RunAndExitOnError()
}
func handleConn(conn net.Conn) {
defer conn.Close()
// for {
// server := &server{
// Conn: conn,
// Reader: bufio.NewReader(conn),
// Writer: bufio.NewWriter(conn),
// }
// }
}