package main import ( "log" "os" "time" "gitea.unprism.ru/KRBL/sim-modem/api/modem" "gitea.unprism.ru/KRBL/sim-modem/api/modem/at" ) func main() { log.Println("CGSG forever!!!") if err := mainE(); err != nil { log.Println("MAIN finished with error:", err.Error()) } log.Println("END") } func mainE() error { logger := log.New(os.Stdout, "main : ", log.LstdFlags) m := modem.New(log.New(logger.Writer(), "modem : ", log.LstdFlags)) logger.Println("||||||||||||||||| INIT |||||||||||||||") if err := m.Init(); err != nil { logger.Println("Init ended with error:", err.Error()) logger.Println("Try to turn on") if err := m.PowerOn(); err != nil { return err } logger.Println("Reinit") if err := m.Init(); err != nil { return err } } if !m.IsConnected() { logger.Println("AAAAAAAAAAAAAAA Modem is not connected") return nil } // logger.Println("||||||||||||||||| GET INFO |||||||||||||||||") // logger.Println(m.Update()) // logger.Printf("DATA: %+v\n", m.GetData()) logger.Println("||||||||||||||||| SMS |||||||||||||||||") Cmd := func(cmd string) { resp, err := m.At().SendWithTimeout(cmd, 50*time.Millisecond) logger.Println(cmd, "===>", resp, err) } _ = Cmd var resp at.Resp var err error buf := make([]byte, 256) _ = resp _ = err _ = buf // Select ME PMS // logger.Println("SEND SMS") // logger.Println(m.Sms().Send("+79218937173", "CGSG forever!!!")) // m.At().RawSend("\r\n\x1A\r\n") Cmd("AT+CREG?") Cmd("AT+CNMI?") Cmd("AT+CSQ") Cmd("AT+CSCA?") Cmd("AT+CPOL?") Cmd("AT+COPS?") // Cmd("AT+COPS=?") Cmd("AT+CPSI?") resp, err = m.At().Send("AT+CNMI=2,2") for { // if err := m.CheckSignal(); err != nil { // logger.Println(err) // } else { // logger.Println("AAAAAAAAAAA THERE IS SIGNAL") // } // time.Sleep(250 * time.Millisecond) readLen, err := m.At().SerialPort().Read(buf) if err != nil { return err } if readLen > 0 { logger.Println(string(buf[:readLen])) } } // resp, err = m.At().Send("AT+CPMS?") // logger.Println("Prefered mem storage:", resp, err) // resp, err = m.At().Send("AT+CREG?") // logger.Println("Network registration:", resp, err) // resp, err = m.At().Send("AT+CPMS?") // logger.Println("Prefered mem storage:", resp, err) // resp, err = m.At().Send("AT+CPMS=?") // logger.Println("Possible mem storage:", resp, err) // resp, err = m.At().Send("AT+CNMI?") // logger.Println("New message indications:", resp, err) // resp, err = m.At().Send("AT+CMGL=\"REC UNREAD\"") // logger.Println("New messages:", resp, err) // resp, err = m.At().Send("AT+CNMI=2,1") // logger.Println("AT+CNMI=2,1:", resp, err) // resp, err = m.At().Send("AT+CNMI?") // logger.Println("New message indications:", resp, err) // logger.Println("Reading port...") // for { // readLen, err := m.At().SerialPort().Read(buf) // if err != nil { // return err // } // if readLen > 0 { // logger.Println(string(buf[:readLen])) // } // } // for { // resp, err = m.At().Send("AT+CSQ") // logger.Println("AT+CSQ:", resp, err) // time.Sleep(500 * time.Millisecond) // } // logger.Println("||||||||||||||||| Checking gps status |||||||||||||||||") // st, err := m.Gps().GetStatus() // if err != nil { // return err // } // logger.Printf("GPS Status:%+v\n", st) // logger.Println("Turn off", m.PowerOff()) return nil }