Merging.
This commit is contained in:
commit
12555f2f46
@ -86,13 +86,13 @@ func (p *atPort) IsConnected() bool {
|
||||
// Low level write/read function
|
||||
func (p *atPort) makeReq(msg string) (string, error) {
|
||||
// Write
|
||||
p.port.ResetInputBuffer()
|
||||
if _, err := p.port.Write([]byte(msg)); err != nil {
|
||||
return "", fmt.Errorf("serial port write: %w", err)
|
||||
}
|
||||
time.Sleep(time.Millisecond)
|
||||
// Read
|
||||
readLen, err := p.port.Read(p.inputBuf)
|
||||
p.logger.Println(msg, "RAWREAD:", string(p.inputBuf[:readLen]))
|
||||
// p.logger.Println(msg, "\x1b[38;2;150;150;150mRAWREAD:", string(p.inputBuf[:readLen]), "\x1b[38;2;255;255;255m")
|
||||
if err != nil {
|
||||
return "", fmt.Errorf("port read: %w", err)
|
||||
}
|
||||
|
@ -8,7 +8,7 @@ import (
|
||||
)
|
||||
|
||||
type gpioPin struct {
|
||||
logger *log.Logger
|
||||
Logger *log.Logger
|
||||
Pin gpio.Pin
|
||||
}
|
||||
|
||||
@ -18,22 +18,22 @@ func (p gpioPin) Init() error {
|
||||
|
||||
func (p gpioPin) sendOnOffSignal() {
|
||||
p.Pin.Output()
|
||||
p.logger.Println("Power on 0/3 + 100ms")
|
||||
p.Logger.Println("Power on 0/3 + 100ms")
|
||||
p.Pin.Low()
|
||||
p.Pin.Toggle()
|
||||
time.Sleep(100 * time.Millisecond)
|
||||
|
||||
p.logger.Println("Power on 1/3 + 3s")
|
||||
p.Logger.Println("Power on 1/3 + 3s")
|
||||
p.Pin.High()
|
||||
p.Pin.Toggle()
|
||||
time.Sleep(3 * time.Second)
|
||||
|
||||
p.logger.Println("Power on 2/3 + 30s")
|
||||
p.Logger.Println("Power on 2/3 + 30s")
|
||||
p.Pin.Low()
|
||||
p.Pin.Toggle()
|
||||
time.Sleep(30 * time.Second)
|
||||
|
||||
p.logger.Println("Power on 3/3")
|
||||
p.Logger.Println("Power on 3/3")
|
||||
}
|
||||
|
||||
func (p gpioPin) PowerOn() {
|
||||
|
@ -50,8 +50,10 @@ func (gps *GpsData) decode(str string) error {
|
||||
if err != nil {
|
||||
return fmt.Errorf("parse longitude: %w", err)
|
||||
}
|
||||
newGpsInfo.Latitude /= 100
|
||||
newGpsInfo.Longitude /= 100
|
||||
newGpsInfo.LatitudeIndicator = strs[1]
|
||||
newGpsInfo.LatitudeIndicator = strs[3]
|
||||
newGpsInfo.LongitudeIndicator = strs[3]
|
||||
newGpsInfo.Date = strs[4]
|
||||
newGpsInfo.Time = strs[5]
|
||||
newGpsInfo.Altitude, err = strconv.ParseFloat(strs[6], 64)
|
||||
|
@ -47,18 +47,18 @@ func New(logger *log.Logger) Modem {
|
||||
return &modem{
|
||||
logger: logger,
|
||||
baudrate: 115200,
|
||||
onOffPin: gpioPin{Pin: 6},
|
||||
onOffPin: gpioPin{Logger: logger, Pin: 6},
|
||||
lastUpdateTime: time.Now(),
|
||||
}
|
||||
}
|
||||
|
||||
func (m *modem) Init() error {
|
||||
// Turn module on
|
||||
// log.Println("=============================== Turn on module")
|
||||
// if err := m.onOffPin.Init(); err != nil {
|
||||
// return fmt.Errorf("gpio pin init: %w", err)
|
||||
// }
|
||||
// onOffPin.PowerOn()
|
||||
log.Println("=============================== Turn on module")
|
||||
if err := m.onOffPin.Init(); err != nil {
|
||||
return fmt.Errorf("gpio pin init: %w", err)
|
||||
}
|
||||
// m.onOffPin.PowerOn()
|
||||
|
||||
// Search
|
||||
m.logger.Println("=============================== Search")
|
||||
@ -206,6 +206,21 @@ func (m *modem) saveGPS(path string) error {
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (m *modem) testConsole() {
|
||||
for {
|
||||
var inStr string
|
||||
fmt.Scanln(&inStr)
|
||||
if inStr == "exit" {
|
||||
return
|
||||
}
|
||||
resp, err := m.port.Send(inStr)
|
||||
if err != nil {
|
||||
m.logger.Println("ERROR:", err.Error())
|
||||
}
|
||||
log.Println(resp)
|
||||
log.Println("------------------")
|
||||
}
|
||||
}
|
||||
|
||||
func (m *modem) checkPort(portName string) (outErr error) {
|
||||
defer func() {
|
||||
@ -227,16 +242,25 @@ func (m *modem) checkPort(portName string) (outErr error) {
|
||||
}
|
||||
defer m.port.Disconnect() // Do not bother about errors...
|
||||
|
||||
// Reset input
|
||||
if err := m.port.GetSerialPort().ResetInputBuffer(); err != nil {
|
||||
return fmt.Errorf("reset input buffer: %w", err)
|
||||
}
|
||||
// Reset output
|
||||
if err := m.port.GetSerialPort().ResetOutputBuffer(); err != nil {
|
||||
return fmt.Errorf("reset output buffer: %w", err)
|
||||
}
|
||||
m.port.Send("ATE0") // This shit sometimes enables echo mode... why... when... but it can
|
||||
|
||||
// Ping
|
||||
m.logger.Println("Ping...")
|
||||
|
||||
if err := m.ping(); err != nil {
|
||||
return fmt.Errorf("ping error: %w", err)
|
||||
}
|
||||
m.logger.Println("\x1b[38;2;0;255;0mOK\x1b[38;2;255;255;255m")
|
||||
|
||||
// Check model
|
||||
m.logger.Println("Check model...")
|
||||
|
||||
resp, err := m.port.Send("AT+CGMM")
|
||||
if err != nil {
|
||||
return fmt.Errorf("get model: %w", err)
|
||||
@ -253,7 +277,7 @@ func (m *modem) checkPort(portName string) (outErr error) {
|
||||
if model[:len(rightModel)] != rightModel {
|
||||
return fmt.Errorf("invalid modem model: %s", model)
|
||||
}
|
||||
m.logger.Println("Model right")
|
||||
m.logger.Println("\x1b[38;2;0;255;0mOK\x1b[38;2;255;255;255m")
|
||||
return nil
|
||||
}
|
||||
|
||||
@ -274,7 +298,7 @@ SearchLoop:
|
||||
m.logger.Printf("Checking port %s ...\n", p)
|
||||
|
||||
if err := m.checkPort("/dev/" + p); err != nil {
|
||||
m.logger.Printf("Check failed: %s\n", err.Error())
|
||||
m.logger.Printf("\x1b[38;2;255;0;0mCheck failed: %s\x1b[38;2;255;255;255m\n", err.Error())
|
||||
continue SearchLoop
|
||||
}
|
||||
|
||||
@ -298,10 +322,14 @@ func (m *modem) ping() error {
|
||||
|
||||
func (m *modem) switchToGpsMode() error {
|
||||
m.logger.Println("Enabling GPS mode...")
|
||||
// Reset intput
|
||||
// Reset input
|
||||
if err := m.port.GetSerialPort().ResetInputBuffer(); err != nil {
|
||||
return fmt.Errorf("reset input buffer: %w", err)
|
||||
}
|
||||
// Reset output
|
||||
if err := m.port.GetSerialPort().ResetOutputBuffer(); err != nil {
|
||||
return fmt.Errorf("reset output buffer: %w", err)
|
||||
}
|
||||
|
||||
// Check gps mode status
|
||||
resp, err := m.port.Send("AT+CGPS?")
|
||||
|
@ -14,4 +14,4 @@ services:
|
||||
devices:
|
||||
- /dev/i2c-1
|
||||
- /dev/ttyS0
|
||||
restart: unless-stopped
|
||||
restart: unless-stopped
|
||||
|
3
main.go
3
main.go
@ -17,9 +17,12 @@ func main() {
|
||||
|
||||
func mainE() error {
|
||||
m := modem.New(log.New(os.Stdout, "modem:", log.LstdFlags))
|
||||
log.Println("||||||||||||||||| INIT |||||||||||||||")
|
||||
if err := m.Init(); err != nil {
|
||||
return err
|
||||
}
|
||||
log.Println("||||||||||||||||| GET INFO |||||||||||||||||")
|
||||
log.Println(m.GetInfo())
|
||||
return nil
|
||||
// ports, err := serial.GetPortsList()
|
||||
// if err != nil {
|
||||
|
Loading…
Reference in New Issue
Block a user